Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
23 changes: 15 additions & 8 deletions local/telconfig/classes/course_data_builder.php
Original file line number Diff line number Diff line change
Expand Up @@ -41,7 +41,7 @@ public static function build_course_metadata($course): array {
require_once($CFG->dirroot . '/tag/lib.php');
$tags = \core_tag_tag::get_item_tags('core', 'course', $course->id);
$keywords = array_reduce($tags, function ($carry, $tag) {
return array_merge($carry, self::tokenize_keywords($tag->rawname));
return array_merge($carry, self::tokenise_keywords($tag->rawname));
}, []);


Expand Down Expand Up @@ -85,22 +85,28 @@ private static function get_section_keywords($course): array {
$sections = $modinfo->get_section_info_all();

foreach ($sections as $section) {
if (!empty($section->name)) {
$keywords = array_merge($keywords, self::tokenize_keywords($section->name));
// Skip hidden sections
if (!$section->uservisible || !$section->visible || empty($section->name)) {
continue;
}

// Tokenise and merge keywords
$keywords = array_merge($keywords, self::tokenise_keywords($section->name));
}

return $keywords;
}

private static function get_resource_keywords($course): array {
global $DB;
$keywords = [];
$keywords = [];

// Now fetch all course modules from DB
$coursemodules = $DB->get_records('course_modules', ['course' => $course->id]);

foreach ($coursemodules as $cm) {
// Skip if module is marked for deletion
if (!empty($cm->deletioninprogress)) {
// Skip deleted or hidden modules
if (!empty($cm->deletioninprogress) || empty($cm->visible)) {
continue;
}

Expand All @@ -114,14 +120,15 @@ private static function get_resource_keywords($course): array {
$instancetable = $module->name;
$instance = $DB->get_record($instancetable, ['id' => $cm->instance], '*', IGNORE_MISSING);
if ($instance && !empty($instance->name)) {
$keywords = array_merge($keywords, self::tokenize_keywords($instance->name));
$keywords = array_merge($keywords, self::tokenise_keywords($instance->name));
}
}

return $keywords;
}

private static function tokenize_keywords(string $input): array {

private static function tokenise_keywords(string $input): array {
$input = strtolower(trim($input));
if (empty($input)) {
return [];
Expand Down
17 changes: 8 additions & 9 deletions local/telconfig/classes/observer.php
Original file line number Diff line number Diff line change
Expand Up @@ -79,13 +79,12 @@ public static function local_course_updated(\core\event\base $event): void {
* @param \core\event\base $event
* @return void
*/
public static function local_section_updated(\core\event\base $event): void {
public static function local_section_changed(\core\event\base $event): void {
global $DB;

try {
$section = $DB->get_record('course_sections', ['id' => $event->objectid], '*', MUST_EXIST);
try {
$course = $DB->get_record('course', ['id' => $event->courseid], '*', MUST_EXIST);

// Only proceed if the course has self enrolment enabled
if (!self::is_course_self_enrollable($course->id)) {
return;
Expand All @@ -96,7 +95,7 @@ public static function local_section_updated(\core\event\base $event): void {
helper::send_findwise_api($data);

} catch (\Throwable $e) {
debugging('Failed in local section_updated: ' . $e->getMessage(), DEBUG_DEVELOPER);
debugging('Error handling local section change: ' . $e->getMessage(), DEBUG_DEVELOPER);
}
}

Expand All @@ -106,12 +105,12 @@ public static function local_section_updated(\core\event\base $event): void {
* @param \core\event\base $event
* @return void
*/
public static function local_module_updated(\core\event\base $event): void {
public static function local_module_changed(\core\event\base $event): void {
global $DB;

try {
$cm = get_coursemodule_from_id(null, $event->objectid, 0, false, MUST_EXIST);
$course = $DB->get_record('course', ['id' => $cm->course], '*', MUST_EXIST);
$courseid = $event->courseid;
$course = $DB->get_record('course', ['id' => $courseid], '*', MUST_EXIST);

// Only proceed if the course has self enrolment enabled
if (!self::is_course_self_enrollable($course->id)) {
Expand All @@ -123,7 +122,7 @@ public static function local_module_updated(\core\event\base $event): void {
helper::send_findwise_api($data);

} catch (\Throwable $e) {
debugging('Failed in local module_updated: ' . $e->getMessage(), DEBUG_DEVELOPER);
debugging('Error handling local module change: ' . $e->getMessage(), DEBUG_DEVELOPER);
}
}
private static function is_course_self_enrollable(int $courseid): bool {
Expand Down
28 changes: 26 additions & 2 deletions local/telconfig/db/events.php
Original file line number Diff line number Diff line change
Expand Up @@ -13,15 +13,39 @@
'priority' => 9999,
'internal' => false,
],
[
'eventname' => '\core\event\course_section_created',
'callback' => '\local_telconfig\observer::local_section_changed',
'priority' => 9999,
'internal' => false,
],
[
'eventname' => '\core\event\course_section_updated',
'callback' => '\local_telconfig\observer::local_section_updated',
'callback' => '\local_telconfig\observer::local_section_changed',
'priority' => 9999,
'internal' => false,
],
[
'eventname' => '\core\event\course_section_deleted',
'callback' => '\local_telconfig\observer::local_section_changed',
'priority' => 9999,
'internal' => false,
],
[
'eventname' => '\core\event\course_module_created',
'callback' => '\local_telconfig\observer::local_module_changed',
'priority' => 9999,
'internal' => false,
],
[
'eventname' => '\core\event\course_module_updated',
'callback' => '\local_telconfig\observer::local_module_updated',
'callback' => '\local_telconfig\observer::local_module_changed',
'priority' => 9999,
'internal' => false,
],
[
'eventname' => '\core\event\course_module_deleted',
'callback' => '\local_telconfig\observer::local_module_changed',
'priority' => 9999,
'internal' => false,
],
Expand Down