public function frontpage_my_courses() { global $USER, $CFG, $DB; $output = ''; if (!isloggedin() or isguestuser()) { return ''; } $courses = block_course_overview_get_sorted_courses(); list($sortedcourses, $sitecourses, $totalcourses) = block_course_overview_get_sorted_courses(); if (!empty($sortedcourses) || !empty($rcourses) || !empty($rhosts)) { $chelper = new coursecat_helper(); if (count($courses) > $CFG->frontpagecourselimit) { // There are more enrolled courses than we can display, display link to 'My courses'. $totalcount = count($sortedcourses); $courses = array_slice($sortedcourses, 0, $CFG->frontpagecourselimit, true); $chelper->set_courses_display_options(array('viewmoreurl' => new moodle_url('/my/'), 'viewmoretext' => new lang_string('mycourses'))); } else { // All enrolled courses are displayed, display link to 'All courses' if there are more courses in system. $chelper->set_courses_display_options(array('viewmoreurl' => new moodle_url('/course/index.php'), 'viewmoretext' => new lang_string('fulllistofcourses'))); $totalcount = $DB->count_records('course') - 1; } $chelper->set_show_courses(self::COURSECAT_SHOW_COURSES_EXPANDED)->set_attributes(array('class' => 'frontpage-course-list-enrolled')); $output .= $this->coursecat_courses($chelper, $sortedcourses, $totalcount); if (!empty($rcourses)) { $output .= html_writer::start_tag('div', array('class' => 'courses')); foreach ($rcourses as $course) { $output .= $this->frontpage_remote_course($course); } $output .= html_writer::end_tag('div'); } else { if (!empty($rhosts)) { $output .= html_writer::start_tag('div', array('class' => 'courses')); foreach ($rhosts as $host) { $output .= $this->frontpage_remote_host($host); } $output .= html_writer::end_tag('div'); } } } return $output; }
/** * Returns HTML to print list of courses user is enrolled to for the frontpage * * Also lists remote courses or remote hosts if MNET authorisation is used * * @return string */ public function frontpage_my_courses() { global $USER, $CFG, $DB; if (!isloggedin() or isguestuser()) { return ''; } $output = ''; if (!empty($CFG->navsortmycoursessort)) { // sort courses the same as in navigation menu $sortorder = 'visible DESC,' . $CFG->navsortmycoursessort . ' ASC'; } else { $sortorder = 'visible DESC,sortorder ASC'; } $courses = enrol_get_my_courses('summary, summaryformat', $sortorder); $rhosts = array(); $rcourses = array(); if (!empty($CFG->mnet_dispatcher_mode) && $CFG->mnet_dispatcher_mode === 'strict') { $rcourses = get_my_remotecourses($USER->id); $rhosts = get_my_remotehosts(); } if (!empty($courses) || !empty($rcourses) || !empty($rhosts)) { $chelper = new coursecat_helper(); if (count($courses) > $CFG->frontpagecourselimit) { // There are more enrolled courses than we can display, display link to 'My courses'. $totalcount = count($courses); $courses = array_slice($courses, 0, $CFG->frontpagecourselimit, true); $chelper->set_courses_display_options(array('viewmoreurl' => new moodle_url('/my/'), 'viewmoretext' => new lang_string('mycourses'))); } else { // All enrolled courses are displayed, display link to 'All courses' if there are more courses in system. $chelper->set_courses_display_options(array('viewmoreurl' => new moodle_url('/course/index.php'), 'viewmoretext' => new lang_string('fulllistofcourses'))); $totalcount = $DB->count_records('course') - 1; } $chelper->set_show_courses(self::COURSECAT_SHOW_COURSES_EXPANDED)->set_attributes(array('class' => 'frontpage-course-list-enrolled')); $output .= $this->coursecat_courses($chelper, $courses, $totalcount); // MNET if (!empty($rcourses)) { // at the IDP, we know of all the remote courses $output .= html_writer::start_tag('div', array('class' => 'courses')); foreach ($rcourses as $course) { $output .= $this->frontpage_remote_course($course); } $output .= html_writer::end_tag('div'); // .courses } elseif (!empty($rhosts)) { // non-IDP, we know of all the remote servers, but not courses $output .= html_writer::start_tag('div', array('class' => 'courses')); foreach ($rhosts as $host) { $output .= $this->frontpage_remote_host($host); } $output .= html_writer::end_tag('div'); // .courses } } return $output; }
/** * Renders HTML to display particular course category - list of it's subcategories and courses * * Invoked from /course/index.php * * @param int|stdClass|coursecat $category */ public function course_category($category) { global $CFG, $USER; require_once $CFG->dirroot . '/lib/pagelib.php'; require_once $CFG->libdir . '/coursecatlib.php'; $coursecat = coursecat::get(is_object($category) ? $category->id : $category); $site = get_site(); $output = '<h2>Matières</h2>'; // Print current category description $chelper = new coursecat_helper(); if ($description = $chelper->get_category_formatted_description($coursecat)) { $output .= $this->box($description, array('class' => 'generalbox info')); } // Prepare parameters for courses and categories lists in the tree $chelper->set_show_courses(10)->set_attributes(array('class' => 'category-browse category-browse-' . $coursecat->id)); $coursedisplayoptions = array(); $catdisplayoptions = array(); $browse = optional_param('browse', null, PARAM_ALPHA); $perpage = optional_param('perpage', $CFG->coursesperpage, PARAM_INT); $page = optional_param('page', 0, PARAM_INT); $baseurl = new moodle_url('/local/template_course/index.php'); if ($coursecat->id) { //$baseurl->param('categoryid', $coursecat->id); } if ($perpage != $CFG->coursesperpage) { $baseurl->param('perpage', $perpage); } //PAGINACIO $coursedisplayoptions['limit'] = $perpage; $catdisplayoptions['limit'] = $perpage; if ($browse === 'courses' || !$coursecat->has_children()) { $coursedisplayoptions['offset'] = $page * $perpage; $coursedisplayoptions['paginationurl'] = new moodle_url($baseurl, array('browse' => 'courses')); $catdisplayoptions['nodisplay'] = true; $catdisplayoptions['viewmoreurl'] = new moodle_url($baseurl, array('browse' => 'categories')); $catdisplayoptions['viewmoretext'] = new lang_string('viewallsubcategories'); } else { if ($browse === 'categories' || !$coursecat->has_courses()) { $coursedisplayoptions['nodisplay'] = true; $catdisplayoptions['offset'] = $page * $perpage; $catdisplayoptions['paginationurl'] = new moodle_url($baseurl, array('browse' => 'categories')); $coursedisplayoptions['viewmoreurl'] = new moodle_url($baseurl, array('browse' => 'courses')); $coursedisplayoptions['viewmoretext'] = new lang_string('viewallcourses'); } else { // we have a category that has both subcategories and courses, display pagination separately $coursedisplayoptions['viewmoreurl'] = new moodle_url($baseurl, array('browse' => 'courses', 'page' => 1)); $catdisplayoptions['viewmoreurl'] = new moodle_url($baseurl, array('browse' => 'categories', 'page' => 1)); } } $chelper->set_courses_display_options($coursedisplayoptions)->set_categories_display_options($catdisplayoptions); // Display course category tree $output .= $this->coursecat_tree($chelper, $coursecat); // Add course search form (if we are inside category it was already added to the navbar) if (!$coursecat->id) { $output .= $this->course_search_form(); } // Add action buttons $output .= $this->container_start('buttons'); $context = get_category_or_system_context($coursecat->id); if (has_capability('moodle/course:create', $context)) { $url = new moodle_url('/local/template_course/edit.php', array('returnto' => 'category', 'edit' => 'on')); $output .= $this->single_button($url, 'Ajouter une nouvelle matière', 'get'); } ob_start(); if (coursecat::count_all() == 1) { print_course_request_buttons(context_system::instance()); } else { print_course_request_buttons($context); } $output .= ob_get_contents(); ob_end_clean(); $output .= $this->container_end(); return $output; }