static function cluster_assigned_handler($eventdata) { global $CURMAN, $CFG; // assign user to the curricula associated with the cluster /** * @todo we may need to change this if associating a user with a * curriculum does anything more complicated */ require_once CURMAN_DIRLOCATION . '/lib/user.class.php'; require_once CURMAN_DIRLOCATION . '/lib/clustercurriculum.class.php'; require_once CURMAN_DIRLOCATION . '/lib/curriculumstudent.class.php'; require_once CURMAN_DIRLOCATION . '/lib/usertrack.class.php'; $db = $CURMAN->db; $timenow = time(); $sql = 'INSERT INTO ' . $db->prefix_table(CURASSTABLE) . ' ' . '(userid, curriculumid, timecreated, timemodified) ' . 'SELECT DISTINCT u.id, clucur.curriculumid, ' . $timenow . ', ' . $timenow . ' ' . 'FROM ' . $db->prefix_table(CLSTUSERTABLE) . ' clu ' . 'INNER JOIN ' . $db->prefix_table(USRTABLE) . ' u ON u.id = clu.userid ' . 'INNER JOIN ' . $db->prefix_table(CLSTCURTABLE) . ' clucur ON clucur.clusterid = clu.clusterid ' . 'LEFT OUTER JOIN ' . $db->prefix_table(CURASSTABLE) . ' ca ON ca.userid = u.id AND ca.curriculumid = clucur.curriculumid ' . 'WHERE clu.clusterid = \'' . $eventdata->clusterid . '\' AND u.id = \'' . $eventdata->userid . '\' AND ca.curriculumid IS NULL ' . 'AND clucur.autoenrol = 1'; $db->execute_sql($sql, false); // enrol user in associated tracks if autoenrol flag is set if ($eventdata->autoenrol) { $tracks = clustertrack::get_tracks($eventdata->clusterid); if ($tracks) { foreach ($tracks as $track) { //make sure the cluster-track association is set up for autoenrol if (record_exists(CLSTTRKTABLE, 'clusterid', $eventdata->clusterid, 'trackid', $track->trackid, 'autoenrol', 1)) { usertrack::enrol($eventdata->userid, $track->trackid); } } } } return true; }
function action_default() { $id = $this->required_param('id', PARAM_INT); $sort = $this->optional_param('sort', 'name', PARAM_CLEAN); $dir = $this->optional_param('dir', 'ASC', PARAM_CLEAN); $columns = array('idnumber' => get_string('track_idnumber', 'block_curr_admin'), 'name' => get_string('track_name', 'block_curr_admin'), 'description' => get_string('track_description', 'block_curr_admin'), 'autoenrol' => get_string('auto_enrol', 'block_curr_admin'), 'buttons' => ''); $items = clustertrack::get_tracks($id, $sort, $dir); $formatters = $this->create_link_formatters(array('idnumber', 'name'), 'trackpage', 'trackid'); $this->print_list_view($items, $columns, $formatters, 'tracks'); // find the tracks that the user can associate with this cluster $contexts = trackpage::get_contexts('block/curr_admin:associate'); $tracks = track_get_listing('name', 'ASC', 0, 0, '', '', 0, 0, $contexts); if (empty($tracks)) { $num_tracks = track_count_records(); if (!empty($num_tracks)) { // some tracks exist, but don't have associate capability on // any of them echo '<div align="center"><br />'; print_string('no_associate_caps_track', 'block_curr_admin'); echo '</div>'; } else { // no tracks at all echo '<div align="center"><br />'; print_string('all_items_assigned', 'block_curr_admin'); echo '</div>'; } } else { $this->print_dropdown($tracks, $items, 'clusterid', 'trackid'); } }
/** * @dataProvider sortautoenroldescprovider */ public function testsortautoenroldesc($data) { $this->load_csv_data(); $dataset = clustertrack::get_tracks(1, 'autoenrol', 'DESC'); $this->assertEquals(array_values($data), array_values($dataset)); }