Ignore:
Timestamp:
May 2, 2016, 12:09:23 PM (3 years ago)
Author:
jrpelegrina
Message:

Updated to moodle 3.0.3

File:
1 edited

Legend:

Unmodified
Added
Removed
  • moodle/trunk/fuentes/enrol/meta/lib.php

    r136 r1331  
    2626
    2727/**
     28 * ENROL_META_CREATE_GROUP constant for automatically creating a group for a meta course.
     29 */
     30define('ENROL_META_CREATE_GROUP', -1);
     31
     32/**
    2833 * Meta course enrolment plugin.
    2934 * @author Petr Skoda
     
    171176        return has_capability('enrol/meta:config', $context);
    172177    }
     178
     179    /**
     180     * Restore instance and map settings.
     181     *
     182     * @param restore_enrolments_structure_step $step
     183     * @param stdClass $data
     184     * @param stdClass $course
     185     * @param int $oldid
     186     */
     187    public function restore_instance(restore_enrolments_structure_step $step, stdClass $data, $course, $oldid) {
     188        global $DB, $CFG;
     189
     190        if (!$step->get_task()->is_samesite()) {
     191            // No meta restore from other sites.
     192            $step->set_mapping('enrol', $oldid, 0);
     193            return;
     194        }
     195
     196        if (!empty($data->customint2)) {
     197            $data->customint2 = $step->get_mappingid('group', $data->customint2);
     198        }
     199
     200        if ($DB->record_exists('course', array('id' => $data->customint1))) {
     201            $instance = $DB->get_record('enrol', array('roleid' => $data->roleid, 'customint1' => $data->customint1,
     202                'courseid' => $course->id, 'enrol' => $this->get_name()));
     203            if ($instance) {
     204                $instanceid = $instance->id;
     205            } else {
     206                $instanceid = $this->add_instance($course, (array)$data);
     207            }
     208            $step->set_mapping('enrol', $oldid, $instanceid);
     209
     210            require_once("$CFG->dirroot/enrol/meta/locallib.php");
     211            enrol_meta_sync($data->customint1);
     212
     213        } else {
     214            $step->set_mapping('enrol', $oldid, 0);
     215        }
     216    }
     217
     218    /**
     219     * Restore user enrolment.
     220     *
     221     * @param restore_enrolments_structure_step $step
     222     * @param stdClass $data
     223     * @param stdClass $instance
     224     * @param int $userid
     225     * @param int $oldinstancestatus
     226     */
     227    public function restore_user_enrolment(restore_enrolments_structure_step $step, $data, $instance, $userid, $oldinstancestatus) {
     228        global $DB;
     229
     230        if ($this->get_config('unenrolaction') != ENROL_EXT_REMOVED_SUSPENDNOROLES) {
     231            // Enrolments were already synchronised in restore_instance(), we do not want any suspended leftovers.
     232            return;
     233        }
     234
     235        // ENROL_EXT_REMOVED_SUSPENDNOROLES means all previous enrolments are restored
     236        // but without roles and suspended.
     237
     238        if (!$DB->record_exists('user_enrolments', array('enrolid' => $instance->id, 'userid' => $userid))) {
     239            $this->enrol_user($instance, $userid, null, $data->timestart, $data->timeend, ENROL_USER_SUSPENDED);
     240            if ($instance->customint2) {
     241                groups_add_member($instance->customint2, $userid, 'enrol_meta', $instance->id);
     242            }
     243        }
     244    }
     245
     246    /**
     247     * Restore user group membership.
     248     * @param stdClass $instance
     249     * @param int $groupid
     250     * @param int $userid
     251     */
     252    public function restore_group_member($instance, $groupid, $userid) {
     253        // Nothing to do here, the group members are added in $this->restore_group_restored().
     254        return;
     255    }
     256
     257    /**
     258     * Returns edit icons for the page with list of instances.
     259     * @param stdClass $instance
     260     * @return array
     261     */
     262    public function get_action_icons(stdClass $instance) {
     263        global $OUTPUT;
     264
     265        if ($instance->enrol !== 'meta') {
     266            throw new coding_exception('invalid enrol instance!');
     267        }
     268        $context = context_course::instance($instance->courseid);
     269
     270        $icons = array();
     271
     272        if (has_capability('enrol/meta:config', $context)) {
     273            $editlink = new moodle_url("/enrol/meta/addinstance.php",
     274                array('id' => $instance->courseid, 'enrolid' => $instance->id));
     275            $icons[] = $OUTPUT->action_icon($editlink, new pix_icon('t/edit', get_string('edit'), 'core',
     276                array('class' => 'iconsmall')));
     277        }
     278
     279        return $icons;
     280    }
    173281}
Note: See TracChangeset for help on using the changeset viewer.