function action_default() { $id = $this->required_param('id', PARAM_INT); $sort = $this->optional_param('sort', 'idnumber', PARAM_ALPHANUM); $dir = $this->optional_param('dir', 'ASC', PARAM_ALPHA); $page = $this->optional_param('page', 0, PARAM_INT); $perpage = $this->optional_param('perpage', 30, PARAM_INT); $columns = array('idnumber' => get_string('student_idnumber', 'block_curr_admin'), 'name' => get_string('tag_name', 'block_curr_admin'), 'email' => get_string('email', 'block_curr_admin'), 'manage' => ''); $items = usertrack::get_users($id); $count = $items ? count($items) : 0; $items = usertrack::get_users($id, $sort, $dir, $page, $perpage); $baseurl = new moodle_url($this->get_url(), array('id' => $id, 'sort' => $sort, 'dir' => $dir, 'page' => $page, 'perpage' => $perpage)); print_paging_bar($count, $page, $perpage, $baseurl); $formatters = $this->create_link_formatters(array('idnumber', 'name'), 'usermanagementpage', 'userid'); $this->print_list_view($items, $columns, $formatters, 'users'); if ($this->can_do_add()) { $this->print_assign_link(); } }
/** * Assign a class to a track, this function also creates * and assigns the class to the curriculum default track * * @return TODO: add meaningful return value */ function add() { global $CURMAN; if (empty($this->courseid)) { $this->courseid = $CURMAN->db->get_field(CLSTABLE, 'courseid', 'id', $this->classid); } if ((empty($this->trackid) or empty($this->classid) or empty($this->courseid)) and empty($CURMAN->config->userdefinedtrack)) { cm_error('trackid and classid have not been properly initialized'); return false; } elseif ((empty($this->courseid) or empty($this->classid)) and $CURMAN->config->userdefinedtrack) { cm_error('courseid has not been properly initialized'); } if (empty($CURMAN->config->userdefinedtrack)) { if ($this->is_class_assigned_to_track()) { return false; } // Determine whether class is required $curcrsobj = new curriculumcourse(array('curriculumid' => $this->track->curid, 'courseid' => $this->classid)); // insert assignment record $this->data_insert_record(); if ($this->autoenrol && $this->is_autoenrollable()) { // autoenrol all users in the track $users = usertrack::get_users($this->trackid); if (!empty($users)) { foreach ($users as $user) { $stu_record = new object(); $stu_record->userid = $user->userid; $stu_record->user_idnumber = $user->idnumber; $stu_record->classid = $this->classid; $stu_record->enrolmenttime = time(); $enrolment = new student($stu_record); // check prerequisites and enrolment limits $enrolment->add(array('prereq' => 1, 'waitlist' => 1)); } } } } else { // Look for all the curricula course is linked to - // then pull up the default system track for each curricula - // and add class to each default system track $currculums = curriculumcourse_get_list_by_course($this->courseid); $currculums = is_array($currculums) ? $currculums : array(); foreach ($currculums as $recid => $record) { // Create default track for curriculum $trkojb = new track(array('curid' => $record->curriculumid)); $trkid = $trkojb->create_default_track(); // Create track assignment object $trkassign = new trackassignmentclass(array('trackid' => $trkid, 'classid' => $this->classid, 'courseid' => $this->courseid)); // Check if class is already assigned to default track if (!$trkassign->is_class_assigned_to_default_track()) { // Determine whether class is required $curcrsobj = new curriculumcourse(array('curriculumid' => $trkassign->track->curid, 'courseid' => $trkassign->courseid)); // Get required field and determine if class is autoenrol eligible $trkassign->autoenrol = (1 == $trkassign->cmclass->count_course_assignments($trkassign->cmclass->courseid) and true === $curcrsobj->is_course_required()) ? 1 : 0; // assign class to the curriculum's default track $trkassign->assign_class_to_default_track(); } } } events_trigger('crlm_track_class_associated', $this); return true; }
/** * Assign a class to a track, this function also creates * and assigns the class to the curriculum default track * * @return TODO: add meaningful return value */ function save() { //add() if (empty($this->courseid)) { $this->courseid = $this->_db->get_field(pmclass::TABLE, 'courseid', array('id' => $this->classid)); } if ((empty($this->trackid) or empty($this->classid) or empty($this->courseid)) and empty(elis::$config->local_elisprogram->userdefinedtrack)) { cm_error('trackid and classid have not been properly initialized'); return false; } else { if ((empty($this->courseid) or empty($this->classid)) and elis::$config->local_elisprogram->userdefinedtrack) { cm_error('courseid has not been properly initialized'); } } if (!isset($this->id) && $this->is_class_assigned_to_track()) { //trying to re-add an existing association return; } // Determine whether class is required $curcrsobj = new curriculumcourse(array('curriculumid' => $this->track->curid, 'courseid' => $this->courseid)); // TBV: was $this->classid // insert assignment record parent::save(); //updated for ELIS2 from $this->data_insert_record() if ($this->autoenrol && $this->is_autoenrollable()) { // autoenrol all users in the track // ELIS-7582 @set_time_limit(0); $users = usertrack::get_users($this->trackid); foreach ($users as $user) { // ELIS-3460: Must check pre-requisites ... if (!$curcrsobj->prerequisites_satisfied($user->userid)) { //error_log("/local/elisprogram/lib/data/track.class.php:trackassignment::save(); pre-requisites NOT satisfied for course: {$this->courseid}, curriculum: {$this->track->curid}"); continue; } $now = time(); $stu_record = new object(); $stu_record->userid = $user->userid; $stu_record->user_idnumber = $user->idnumber; $stu_record->classid = $this->classid; $stu_record->enrolmenttime = $now; $enrolment = new student($stu_record); // check enrolment limits try { $enrolment->save(); } catch (pmclass_enrolment_limit_validation_exception $e) { // autoenrol into waitlist $wait_record = new object(); $wait_record->userid = $user->userid; $wait_record->classid = $this->classid; $wait_record->enrolmenttime = $now; $wait_record->timecreated = $now; $wait_record->position = 0; $wait_list = new waitlist($wait_record); $wait_list->save(); } catch (Exception $e) { $param = array('message' => $e->getMessage()); echo cm_error(get_string('record_not_created_reason', 'local_elisprogram', $param)); } } } events_trigger('pm_track_class_associated', $this); }
function __construct(&$items, $columns, $page, $decorators = array()) { $id = required_param('id', PARAM_INT); $users = usertrack::get_users($id); $this->numusers = empty($users) ? 0 : count($users); parent::__construct($items, $columns, $page, $decorators); }