/** * Constructs header in editing mode * * @param int $max maximum number of courses * @return string html of header bar. */ public function editing_bar_head($max = 0) { $output = $this->output->box_start('notice'); $options = array('0' => get_string('alwaysshowall', 'block_course_overview')); for ($i = 1; $i <= $max; $i++) { $options[$i] = $i; } $url = new moodle_url('/my/index.php'); $select = new single_select($url, 'mynumber', $options, block_course_overview_get_max_user_courses(), array()); $select->set_label(get_string('numtodisplay', 'block_course_overview')); $output .= $this->output->render($select); $output .= $this->output->box_end(); return $output; }
/** * Return sorted list of user courses * * @return array list of sorted courses and count of courses. */ function block_course_overview_get_sorted_courses() { global $USER; $limit = block_course_overview_get_max_user_courses(); $courses = enrol_get_my_courses('id, shortname, fullname, modinfo, sectioncache'); $site = get_site(); if (array_key_exists($site->id, $courses)) { unset($courses[$site->id]); } foreach ($courses as $c) { if (isset($USER->lastcourseaccess[$c->id])) { $courses[$c->id]->lastaccess = $USER->lastcourseaccess[$c->id]; } else { $courses[$c->id]->lastaccess = 0; } } // Get remote courses. $remotecourses = array(); if (is_enabled_auth('mnet')) { $remotecourses = get_my_remotecourses(); } // Remote courses will have -ve remoteid as key, so it can be differentiated from normal courses foreach ($remotecourses as $id => $val) { $remoteid = $val->remoteid * -1; $val->id = $remoteid; $courses[$remoteid] = $val; } $order = array(); if (!is_null($usersortorder = get_user_preferences('course_overview_course_order'))) { $order = unserialize($usersortorder); } $sortedcourses = array(); $counter = 0; // Get courses in sort order into list. foreach ($order as $key => $cid) { if ($counter >= $limit && $limit != 0) { break; } // Make sure user is still enroled. if (isset($courses[$cid])) { $sortedcourses[$cid] = $courses[$cid]; $counter++; } } // Append unsorted courses if limit allows foreach ($courses as $c) { if ($limit != 0 && $counter >= $limit) { break; } if (!in_array($c->id, $order)) { $sortedcourses[$c->id] = $c; $counter++; } } // From list extract site courses for overview $sitecourses = array(); foreach ($sortedcourses as $key => $course) { if ($course->id > 0) { $sitecourses[$key] = $course; } } return array($sortedcourses, $sitecourses, count($courses)); }