示例#1
0
文件: lib.php 项目: TU-Berlin/Mumie
/**
 * 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;
}
示例#2
0
/**
 * 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;
}