Пример #1
0
 public function test_get_enrolment_plugins()
 {
     $this->resetAfterTest(true);
     $actual = tool_uploadcourse_helper::get_enrolment_plugins();
     $this->assertSame(array_keys(enrol_get_plugins(false)), array_keys($actual));
     // This should be identical as cached.
     $secondactual = tool_uploadcourse_helper::get_enrolment_plugins();
     $this->assertEquals($actual, $secondactual);
 }
Пример #2
0
 /**
  * Add the enrolment data for the course.
  *
  * @param object $course course record.
  * @return void
  */
 protected function process_enrolment_data($course)
 {
     global $DB;
     $enrolmentdata = $this->enrolmentdata;
     if (empty($enrolmentdata)) {
         return;
     }
     $enrolmentplugins = tool_uploadcourse_helper::get_enrolment_plugins();
     $instances = enrol_get_instances($course->id, false);
     foreach ($enrolmentdata as $enrolmethod => $method) {
         $instance = null;
         foreach ($instances as $i) {
             if ($i->enrol == $enrolmethod) {
                 $instance = $i;
                 break;
             }
         }
         $todelete = isset($method['delete']) && $method['delete'];
         $todisable = isset($method['disable']) && $method['disable'];
         unset($method['delete']);
         unset($method['disable']);
         if (!empty($instance) && $todelete) {
             // Remove the enrolment method.
             foreach ($instances as $instance) {
                 if ($instance->enrol == $enrolmethod) {
                     $plugin = $enrolmentplugins[$instance->enrol];
                     $plugin->delete_instance($instance);
                     break;
                 }
             }
         } else {
             if (!empty($instance) && $todisable) {
                 // Disable the enrolment.
                 foreach ($instances as $instance) {
                     if ($instance->enrol == $enrolmethod) {
                         $plugin = $enrolmentplugins[$instance->enrol];
                         $plugin->update_status($instance, ENROL_INSTANCE_DISABLED);
                         $enrol_updated = true;
                         break;
                     }
                 }
             } else {
                 $plugin = null;
                 if (empty($instance)) {
                     $plugin = $enrolmentplugins[$enrolmethod];
                     $instance = new stdClass();
                     $instance->id = $plugin->add_default_instance($course);
                     $instance->roleid = $plugin->get_config('roleid');
                     $instance->status = ENROL_INSTANCE_ENABLED;
                 } else {
                     $plugin = $enrolmentplugins[$instance->enrol];
                     $plugin->update_status($instance, ENROL_INSTANCE_ENABLED);
                 }
                 // Now update values.
                 foreach ($method as $k => $v) {
                     $instance->{$k} = $v;
                 }
                 // Sort out the start, end and date.
                 $instance->enrolstartdate = isset($method['startdate']) ? strtotime($method['startdate']) : 0;
                 $instance->enrolenddate = isset($method['enddate']) ? strtotime($method['enddate']) : 0;
                 // Is the enrolment period set?
                 if (isset($method['enrolperiod']) && !empty($method['enrolperiod'])) {
                     if (preg_match('/^\\d+$/', $method['enrolperiod'])) {
                         $method['enrolperiod'] = (int) $method['enrolperiod'];
                     } else {
                         // Try and convert period to seconds.
                         $method['enrolperiod'] = strtotime('1970-01-01 GMT + ' . $method['enrolperiod']);
                     }
                     $instance->enrolperiod = $method['enrolperiod'];
                 }
                 if ($instance->enrolstartdate > 0 && isset($method['enrolperiod'])) {
                     $instance->enrolenddate = $instance->enrolstartdate + $method['enrolperiod'];
                 }
                 if ($instance->enrolenddate > 0) {
                     $instance->enrolperiod = $instance->enrolenddate - $instance->enrolstartdate;
                 }
                 if ($instance->enrolenddate < $instance->enrolstartdate) {
                     $instance->enrolenddate = $instance->enrolstartdate;
                 }
                 // Sort out the given role. This does not filter the roles allowed in the course.
                 if (isset($method['role'])) {
                     $roleids = tool_uploadcourse_helper::get_role_ids();
                     if (isset($roleids[$method['role']])) {
                         $instance->roleid = $roleids[$method['role']];
                     }
                 }
                 $instance->timemodified = time();
                 $DB->update_record('enrol', $instance);
             }
         }
     }
 }