function action_default() { global $USER, $CURMAN; $id = required_param('id', PARAM_INT); $contexts = clone trackpage::get_contexts('block/curr_admin:track:enrol'); //look up student's cluster assignments with necessary capability $cluster_contexts = cm_context_set::for_user_with_capability('cluster', 'block/curr_admin:track:enrol_cluster_user', $USER->id); //calculate our filter condition based on cluster accessibility $cluster_filter = $cluster_contexts->sql_filter_for_context_level('clst.id', 'cluster'); //query for getting tracks based on clusters $sql = "SELECT trk.id\n FROM {$CURMAN->db->prefix_table(CLSTTABLE)} clst\n JOIN {$CURMAN->db->prefix_table(CLSTTRKTABLE)} clsttrk\n ON clst.id = clsttrk.clusterid\n JOIN {$CURMAN->db->prefix_table(TRACKTABLE)} trk\n ON clsttrk.trackid = trk.id\n WHERE {$cluster_filter}"; //assign the appropriate track ids $recordset = get_recordset_sql($sql); if ($recordset && $recordset->RecordCount() > 0) { if (!isset($contexts->contexts['track'])) { $contexts->contexts['track'] = array(); } $new_tracks = array(); while ($record = rs_fetch_next_record($recordset)) { $new_tracks[] = $record->id; } $contexts->contexts['track'] = array_merge($contexts->contexts['track'], $new_tracks); } $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'), 'numclasses' => get_string('num_classes', 'block_curr_admin'), 'manage' => ''); $items = usertrack::get_tracks($id); $formatters = $this->create_link_formatters(array('idnumber', 'name'), 'trackpage', 'trackid'); $this->print_list_view($items, $columns, $formatters, 'tracks'); //get the listing specifically for this user $this->print_dropdown(track_get_listing('name', 'ASC', 0, 0, '', '', 0, 0, $contexts, $id), $items, 'userid', 'trackid', 'savenew', 'idnumber'); }