Merge branch 'MDL-40297_24' of git://github.com/stronk7/moodle into MOODLE_24_STABLE

This commit is contained in:
Dan Poltawski
2013-07-02 13:43:57 +08:00
+41 -7
View File
@@ -2880,20 +2880,49 @@ class global_navigation_for_ajax extends global_navigation {
$this->add_category($category, $this, $nodetype);
$basecategory = $this->addedcategories[$category->id];
} else {
$subcategories[] = $category;
$subcategories[$category->id] = $category;
}
}
$categories->close();
if (!is_null($basecategory)) {
foreach ($subcategories as $category) {
$this->add_category($category, $basecategory, $nodetype);
}
}
// If category is shown in MyHome then only show enrolled courses, else show all courses.
// If category is shown in MyHome then only show enrolled courses and hide empty subcategories,
// else show all courses.
if ($nodetype === self::TYPE_MY_CATEGORY) {
$courses = enrol_get_my_courses();
$categoryids = array();
// Only search for categories if basecategory was found.
if (!is_null($basecategory)) {
// Get course parent category ids.
foreach ($courses as $course) {
$categoryids[] = $course->category;
}
// Get a unique list of category ids which a part of the path
// to user's courses.
$coursesubcategories = array();
$addedsubcategories = array();
list($sql, $params) = $DB->get_in_or_equal($categoryids);
$categories = $DB->get_recordset_select('course_categories', 'id '.$sql, $params, 'sortorder, id', 'id, path');
foreach ($categories as $category){
$coursesubcategories = array_merge($coursesubcategories, explode('/', trim($category->path, "/")));
}
$coursesubcategories = array_unique($coursesubcategories);
// Only add a subcategory if it is part of the path to user's course and
// wasn't already added.
foreach ($subcategories as $subid => $subcategory) {
if (in_array($subid, $coursesubcategories) &&
!in_array($subid, $addedsubcategories)) {
$this->add_category($subcategory, $basecategory, $nodetype);
$addedsubcategories[] = $subid;
}
}
}
foreach ($courses as $course) {
// Add course if it's in category.
if (in_array($course->category, $categorylist)) {
@@ -2901,6 +2930,11 @@ class global_navigation_for_ajax extends global_navigation {
}
}
} else {
if (!is_null($basecategory)) {
foreach ($subcategories as $key=>$category) {
$this->add_category($category, $basecategory, $nodetype);
}
}
$courses = $DB->get_recordset('course', array('category' => $categoryid), 'sortorder', '*' , 0, $limit);
foreach ($courses as $course) {
$this->add_course($course);