/** * Recursive function to remove subscriptions for a teacher in a context */ function mumiemodule_remove_teacher_subscriptions($userid, $context) { global $CFG; if (empty($context->contextlevel)) { return false; } switch ($context->contextlevel) { case CONTEXT_SYSTEM: // For the whole site if ($courses = get_records('course')) { foreach ($courses as $course) { $subcontext = get_context_instance(CONTEXT_COURSE, $course->id); mumiemodule_remove_user_subscriptions($userid, $subcontext); } } break; case CONTEXT_COURSECAT: // For a whole category if ($courses = get_records('course', 'category', $context->instanceid)) { foreach ($courses as $course) { $subcontext = get_context_instance(CONTEXT_COURSE, $course->id); mumiemodule_remove_user_subscriptions($userid, $subcontext); } } if ($categories = get_records('course_categories', 'parent', $context->instanceid)) { foreach ($categories as $category) { $subcontext = get_context_instance(CONTEXT_COURSECAT, $category->id); mumiemodule_remove_user_subscriptions($userid, $subcontext); } } break; case CONTEXT_COURSE: // For a whole course if ($course = get_record('course', 'id', $context->instanceid)) { if ($mumiemodules = get_all_instances_in_course('mumiemodule', $course, $userid, true)) { foreach ($mumiemodules as $mumiemodule) { if ($modcontext = get_context_instance(CONTEXT_MODULE, $mumiemodule->coursemodule)) { $course_to_change = new object(); $course_to_change->syncid = 'moodle-' . $CFG->prefix . 'course-' . $course->id; $course_to_change->name = $course->fullname; $course_to_change->description = $course->summary; $course_to_change->semester = 'moodle-' . $CFG->prefix . 'course_categories-' . $course->category; $course_to_change->lecturers = ''; $context = get_context_instance(CONTEXT_COURSE, $course->id); $fields = 'u.id, u.username, u.password, u.firstname, u.lastname'; $roleid = get_field('role', 'id', 'shortname', 'editingteacher'); if ($lecturers = get_role_users($roleid, $context, false, $fields)) { foreach ($lecturers as $lecturer) { if ($userid != $lecturer->id) { $course_to_change->lecturers .= 'moodle-' . $CFG->prefix . 'user-' . $lecturer->id . ' '; } } } change_class_for_mumie($course_to_change); } } } } break; case CONTEXT_MODULE: // Just one mumiemodule if ($cm = get_coursemodule_from_id('mumiemodule', $context->instanceid)) { if ($mumiemodule = get_record('mumiemodule', 'id', $cm->instance)) { //nix zu tun, da keine teacher im modul stehen } } break; } return true; }
/** * Function to handle the category_deleted-event * * @param object $eventdata - the event's data */ function category_deleted_handler($eventdata) { global $CFG; $isinteresting = false; //we assume that this is not relevant - check! //if there is no class with an instance of mumiemodule in the parent category, then we can be sure that this event is not interesting //but if there is at least one, we can not be sure - so we better try to send all information if ($cat_classes = get_courses($semester->parent, 'c.id')) { foreach ($cat_classes as $cat_class) { if (record_exists('mumiemodule', 'course', $cat_class->id)) { $isinteresting = true; break; } } } if ($isinteresting) { event_logoutput("category_deleted_handler called \n", $eventdata); $js = new JapsSynchronise(); $deletedsem = new object(); $deletedsem->syncid = 'moodle-' . $CFG->prefix . 'course_categories-' . $eventdata->id; $deletedsem->parent = 'moodle-' . $CFG->prefix . 'course_categories-' . $eventdata->parent; //we try to insert the parent-category as a new semester into MUMIE $cat = get_record('course_categories', 'id', $eventdata->parent, '', '', '', '', 'name'); $newsemester = new object(); $newsemester->syncid = $deletedsem->parent; $newsemester->name = $cat->name; $newsemester->description = 'a Moodle-category as semester'; insert_semester_for_mumie($newsemester, $js); //the courses were moved from the deleted category into the parent category //so we have to change them before deleting the category if ($cat_classes = get_courses($semester->parent, $fields = 'c.id')) { //TODO: isn't this deprecated??? foreach ($cat_classes as $cat_class) { if (record_exists('mumiemodule', 'course', $cat_class->id)) { $classtochange = new object(); $classtochange->syncid = 'moodle-' . $CFG->prefix . 'course-' . $cat_class->id; $classtochange->semester = $deletedsem->parent; change_class_for_mumie($classtochange, $js); } } } //delete_semester_for_mumie($deletedsem); } return true; }