From 8f354c49dd6d7c737b1a933d1c4f7cf3d732dc98 Mon Sep 17 00:00:00 2001 From: unknown Date: Wed, 19 Mar 2014 21:59:43 -0400 Subject: [PATCH] Adding ALL and NONE categories in course catalog -refs #6882 --- main/inc/lib/course_category.lib.php | 52 ++++++++++++++++++++++++---- 1 file changed, 46 insertions(+), 6 deletions(-) diff --git a/main/inc/lib/course_category.lib.php b/main/inc/lib/course_category.lib.php index 42c6b8e3b0..93ecd1369b 100644 --- a/main/inc/lib/course_category.lib.php +++ b/main/inc/lib/course_category.lib.php @@ -437,7 +437,21 @@ function browseCourseCategories() $whereCondition ORDER BY tree_pos ASC"; $result = Database::query($sql); + $url_access_id = 1; + if (api_is_multiple_url_enabled()) { + $url_access_id = api_get_current_access_url_id(); + } + $countCourses = CourseManager :: count_courses($url_access_id); $categories = array(); + $categories[0][0] = array( + 'id' => 0, + 'name' => get_lang('DisplayAll'), + 'code' => 'ALL', + 'parent_id' => null, + 'tree_pos' => 0, + 'count_courses' => $countCourses + + ); while ($row = Database::fetch_array($result)) { $count_courses = countCoursesInCategory($row['code']); $row['count_courses'] = $count_courses; @@ -447,6 +461,22 @@ function browseCourseCategories() $categories[$row['parent_id']][$row['tree_pos']] = $row; } } + + $count_courses = countCoursesInCategory(); + + $categories[0][count($categories[0])+1] = array( + 'id' =>0, + 'name' => get_lang('None'), + 'code' => 'NONE', + 'parent_id' => null, + 'tree_pos' => $row['tree_pos']+1, + 'children_count' => 0, + 'auth_course_child' => true, + 'auth_cat_child' => true, + 'count_courses' => $count_courses + + ); + return $categories; } @@ -454,7 +484,7 @@ function browseCourseCategories() * @param string $category_code * @return int */ -function countCoursesInCategory($category_code) +function countCoursesInCategory($category_code="") { $tbl_course = Database::get_main_table(TABLE_MAIN_COURSE); $TABLE_COURSE_FIELD = Database :: get_main_table(TABLE_MAIN_COURSE_FIELD); @@ -480,7 +510,7 @@ function countCoursesInCategory($category_code) } $sql = "SELECT * FROM $tbl_course - WHERE category_code" . (empty($category_code) ? " IS NULL" : "='" . $category_code . "'") . $without_special_courses; + WHERE category_code" . "='" . $category_code . "'" . $without_special_courses; // Showing only the courses of the current portal access_url_id. if (api_is_multiple_url_enabled()) { @@ -490,8 +520,7 @@ function countCoursesInCategory($category_code) $sql = "SELECT * FROM $tbl_course as course INNER JOIN $tbl_url_rel_course as url_rel_course ON (url_rel_course.course_code=course.code) - WHERE - access_url_id = $url_access_id AND category_code" . (empty($category_code) ? " IS NULL" : "='" . $category_code . "'").$without_special_courses; + WHERE access_url_id = $url_access_id AND category_code" . "='" . $category_code . "'" . $without_special_courses; } } return Database::num_rows(Database::query($sql)); @@ -569,9 +598,12 @@ function browseCoursesInCategory($category_code, $random_value = null) $sql = "SELECT * FROM $tbl_course WHERE id IN($id_in)"; } else { $category_code = Database::escape_string($category_code); - if (empty($category_code)) { + if (empty($category_code) || $category_code == "ALL") { $sql = "SELECT * FROM $tbl_course WHERE 1=1 $without_special_courses ORDER BY title "; } else { + if ($category_code == 'NONE') { + $category_code = ''; + } $sql = "SELECT * FROM $tbl_course WHERE category_code='$category_code' $without_special_courses ORDER BY title "; } @@ -579,10 +611,18 @@ function browseCoursesInCategory($category_code, $random_value = null) if (api_is_multiple_url_enabled()) { $url_access_id = api_get_current_access_url_id(); $tbl_url_rel_course = Database::get_main_table(TABLE_MAIN_ACCESS_URL_REL_COURSE); - $sql = "SELECT * FROM $tbl_course as course INNER JOIN $tbl_url_rel_course as url_rel_course + if ($category_code != "ALL") { + $sql = "SELECT * FROM $tbl_course as course INNER JOIN $tbl_url_rel_course as url_rel_course ON (url_rel_course.course_code=course.code) WHERE access_url_id = $url_access_id AND category_code='$category_code' $without_special_courses + ORDER BY title"; + } else{ + $sql = "SELECT * FROM $tbl_course as course INNER JOIN $tbl_url_rel_course as url_rel_course + ON (url_rel_course.course_code=course.code) + WHERE access_url_id = $url_access_id $without_special_courses ORDER BY title"; + } + } }