/** * Dynamically loads child menu items for a course entity * * @param int $id The entity id * @param int $parent_cluster_id The last cluster passed going down the curr_admin tree, or 0 if none * @param int $parent_curriculum_id The last curriculum passed going down the curr_admin tree, or 0 if none * @param int $num_block_icons Max number of entries to display * @param string $parent_path Path of parent curriculum elements in the tree * @return menuitem array The appropriate child items */ function block_curr_admin_load_menu_children_course($id, $parent_cluster_id, $parent_curriculum_id, $num_block_icons, $parent_path = '') { global $CFG; // page dependencies require_once $CFG->dirroot . '/curriculum/cmclasspage.class.php'; $result_items = array(); /***************************************** * Course - Class Associations *****************************************/ $class_css_class = block_curr_admin_get_item_css_class('class_instance'); // permissions filter $class_contexts = cmclasspage::get_contexts('block/curr_admin:class:view'); $listing = cmclass_get_listing('crsname', 'asc', 0, $num_block_icons, '', '', $id, false, $class_contexts, $parent_cluster_id); if (!empty($listing)) { foreach ($listing as $item) { $item->clsname = $item->idnumber; $params = array('id' => $item->id, 'action' => 'view'); $result_items[] = block_curr_admin_get_menu_item('cmclass', $item, 'root', $class_css_class, $parent_cluster_id, $parent_curriculum_id, $params, false, $parent_path); } } //summary item $num_records = cmclass_count_records('', '', $id, false, $class_contexts, $parent_cluster_id); if ($num_block_icons < $num_records) { $params = array('action' => 'default', 'id' => $id); //add extra param if appropriate if (!empty($parent_cluster_id)) { $params['parent_clusterid'] = $parent_cluster_id; } $result_items[] = block_curr_admin_get_menu_summary_item('cmclass', $class_css_class, $num_records - $num_block_icons, $params, '', $parent_path); } return $result_items; }
function action_default() { global $CURMAN; $id = required_param('id', PARAM_INT); $sort = optional_param('sort', 'clsname', PARAM_ALPHA); $dir = optional_param('dir', 'ASC', PARAM_ALPHA); $page = optional_param('page', 0, PARAM_INT); $perpage = optional_param('perpage', 30, PARAM_INT); // how many per page $namesearch = trim(cm_get_param('search', '')); $alpha = cm_get_param('alpha', ''); $columns = array('clsname' => get_string('class_id_number', 'block_curr_admin'), 'autoenrol' => get_string('auto_enrol', 'block_curr_admin'), 'enrolments' => get_string('enrolments', 'block_curr_admin'), 'buttons' => ''); $items = track_assignment_get_listing($id, $sort, $dir, $page * $perpage, $perpage, $namesearch, $alpha); $numitems = track_assignment_count_records($id, $namesearch, $alpha); $this->print_alpha(); $this->print_search(); if ($numitems > 0) { $this->print_num_items($numitems); $formatters = $this->create_link_formatters(array('clsname'), 'cmclasspage', 'clsid'); $this->print_list_view($items, $columns, $formatters, 'track_classes'); } else { print_string('no_items_matching', 'block_curr_admin'); } if (empty($items) && empty($namesearch) && empty($alpha)) { echo '<div align="center">'; $tmppage = new trackassignmentpage(array('action' => 'autocreate', 'id' => $id)); print_single_button(null, $tmppage->get_moodle_url()->params, get_string('track_autocreate_button', 'block_curr_admin')); echo '</div>'; } $contexts = cmclasspage::get_contexts('block/curr_admin:associate'); // find the classes that are part of a course that is part of a // curriculum that the track belongs to $sql = "SELECT cls.*\n FROM {$CURMAN->db->prefix_table('crlm_track')} trk\n JOIN {$CURMAN->db->prefix_table('crlm_curriculum')} cur ON cur.id = trk.curid\n JOIN {$CURMAN->db->prefix_table('crlm_curriculum_course')} curcrs ON curcrs.curriculumid = cur.id\n JOIN {$CURMAN->db->prefix_table('crlm_class')} cls ON cls.courseid = curcrs.courseid\n WHERE trk.id = {$id} AND " . $contexts->sql_filter_for_context_level('cls.id', 'class'); $classes = $CURMAN->db->get_records_sql($sql); if (empty($classes)) { $sql = "SELECT COUNT(*)\n FROM {$CURMAN->db->prefix_table('crlm_track')} trk\n JOIN {$CURMAN->db->prefix_table('crlm_curriculum')} cur ON cur.id = trk.curid\n JOIN {$CURMAN->db->prefix_table('crlm_curriculum_course')} curcrs ON curcrs.curriculumid = cur.id\n JOIN {$CURMAN->db->prefix_table('crlm_class')} cls ON cls.courseid = curcrs.courseid\n WHERE trk.id = {$id}"; $num_classes = $CURMAN->db->count_records_sql($sql); if (!empty($num_classes)) { // some classes exist, but don't have associate capability on // any of them echo '<div align="center"><br />'; print_string('no_associate_caps_class', 'block_curr_admin'); echo '</div>'; } else { // no curricula at all echo '<div align="center"><br />'; print_string('all_items_assigned', 'block_curr_admin'); echo '</div>'; } } else { $this->print_dropdown($classes, $items, 'trackid', 'clsid', 'add', 'idnumber'); } }
function action_default() { // Get parameters $sort = optional_param('sort', 'crsname', PARAM_ALPHA); $dir = optional_param('dir', 'ASC', PARAM_ALPHA); $page = optional_param('page', 0, PARAM_INT); $perpage = optional_param('perpage', 30, PARAM_INT); // how many per page $namesearch = trim(optional_param('search', '', PARAM_TEXT)); $alpha = optional_param('alpha', '', PARAM_ALPHA); $id = $this->get_cm_id(); //this parameter signifies a required relationship between a class and a track //through a cluster $parent_clusterid = $this->optional_param('parent_clusterid', 0, PARAM_INT); // Define columns $columns = array('crsname' => get_string('class_course', 'block_curr_admin'), 'idnumber' => get_string('class_idnumber', 'block_curr_admin'), 'moodlecourse' => get_string('class_moodle_course', 'block_curr_admin'), 'startdate' => get_string('class_startdate', 'block_curr_admin'), 'enddate' => get_string('class_enddate', 'block_curr_admin'), 'starttime' => get_string('class_starttime', 'block_curr_admin'), 'endtime' => get_string('class_endtime', 'block_curr_admin'), 'maxstudents' => get_string('class_maxstudents', 'block_curr_admin'), 'envname' => get_string('environment', 'block_curr_admin')); $items = cmclass_get_listing($sort, $dir, $page * $perpage, $perpage, $namesearch, $alpha, $id, false, cmclasspage::get_contexts('block/curr_admin:class:view'), $parent_clusterid); $numitems = cmclass_count_records($namesearch, $alpha, $id, false, cmclasspage::get_contexts('block/curr_admin:class:view'), $parent_clusterid); cmclasspage::get_contexts('block/curr_admin:class:edit'); cmclasspage::get_contexts('block/curr_admin:class:delete'); if (!empty($id)) { $coursepage = new coursepage(array('id' => $id)); $coursepage->print_tabs('cmclasspage', array('id' => $id)); } $this->print_list_view($items, $numitems, $columns, $filter = null, $alphaflag = true, $searchflag = true); }