Use course_category.id instead of course.category_code in queries - refs BT#15992 #3017

pull/3064/head
Angel Fernando Quiroz Campos 6 years ago
parent f6d058227a
commit de0bd0a7f7
  1. 2
      main/admin/course_edit.php
  2. 11
      main/admin/course_list.php
  3. 4
      main/admin/course_request_accepted.php
  4. 8
      main/course_info/infocours.php
  5. 8
      main/create_course/add_course.php
  6. 18
      main/inc/lib/CoursesAndSessionsCatalog.class.php
  7. 4
      main/inc/lib/api.lib.php
  8. 3
      main/inc/lib/auth.lib.php
  9. 25
      main/inc/lib/course.lib.php
  10. 30
      main/inc/lib/course_category.lib.php
  11. 24
      main/inc/lib/statistics.lib.php
  12. 7
      main/inc/lib/usermanager.lib.php
  13. 39
      main/inc/lib/userportal.lib.php
  14. 19
      src/CoreBundle/Framework/PageController.php
  15. 4
      src/CourseBundle/Component/CourseCopy/CourseRestorer.php

@ -374,7 +374,7 @@ if ($form->validate()) {
$params = [
'course_language' => $course_language,
'title' => $title,
'category' => $category_code,
'category_id' => $category_code,
'visual_code' => $visual_code,
'department_name' => $department_name,
'department_url' => $department_url,

@ -23,6 +23,7 @@ $sessionId = isset($_GET['session_id']) ? $_GET['session_id'] : null;
function get_number_of_courses()
{
$course_table = Database::get_main_table(TABLE_MAIN_COURSE);
$tblCourseCategory = Database::get_main_table(TABLE_MAIN_CATEGORY);
$sql = "SELECT COUNT(code) AS total_number_of_items FROM $course_table c";
if ((api_is_platform_admin() || api_is_session_admin()) &&
@ -33,6 +34,8 @@ function get_number_of_courses()
ON (c.id = url_rel_course.c_id)";
}
$sql .= " LEFT JOIN $tblCourseCategory ON c.category_id = course_category.id ";
if (isset($_GET['keyword'])) {
$keyword = Database::escape_string("%".$_GET['keyword']."%");
$sql .= " WHERE (
@ -62,7 +65,7 @@ function get_number_of_courses()
";
if (!empty($keyword_category)) {
$sql .= " AND c.category_code LIKE '".$keyword_category."' ";
$sql .= " AND course_category.code LIKE '".$keyword_category."' ";
}
}
@ -111,7 +114,7 @@ function get_course_data($from, $number_of_items, $column, $direction)
directory,
course.id
FROM $course_table course
LEFT JOIN $tblCourseCategory category ON course.category = category.id ";
LEFT JOIN $tblCourseCategory category ON course.category_id = category.id ";
if ((api_is_platform_admin() || api_is_session_admin()) &&
api_is_multiple_url_enabled() && api_get_current_access_url_id() != -1
@ -246,13 +249,14 @@ function get_course_data_by_session($from, $number_of_items, $column, $direction
$course_table = Database::get_main_table(TABLE_MAIN_COURSE);
$session_rel_course = Database::get_main_table(TABLE_MAIN_SESSION_COURSE);
$session = Database::get_main_table(TABLE_MAIN_SESSION);
$tblCourseCategory = Database::get_main_table(TABLE_MAIN_CATEGORY);
$sql = "SELECT
c.code AS col0,
c.title AS col1,
c.code AS col2,
c.course_language AS col3,
c.category_code AS col4,
course_category.code AS col4,
c.subscribe AS col5,
c.unsubscribe AS col6,
c.code AS col7,
@ -264,6 +268,7 @@ function get_course_data_by_session($from, $number_of_items, $column, $direction
ON c.id = r.c_id
INNER JOIN $session s
ON r.session_id = s.id
LEFT JOIN $tblCourseCategory ON c.category_id = course_category.id
";
if (isset($_GET['session_id']) && !empty($_GET['session_id'])) {

@ -82,6 +82,7 @@ function get_request_data($from, $number_of_items, $column, $direction)
{
$keyword = isset($_GET['keyword']) ? Database::escape_string(trim($_GET['keyword'])) : null;
$course_request_table = Database::get_main_table(TABLE_MAIN_COURSE_REQUEST);
$tblCourseCategory = Database::get_main_table(TABLE_MAIN_CATEGORY);
$from = intval($from);
$number_of_items = intval($number_of_items);
@ -92,11 +93,12 @@ function get_request_data($from, $number_of_items, $column, $direction)
id AS col0,
code AS col1,
title AS col2,
category_code AS col3,
course_category.code AS col3,
tutor_name AS col4,
request_date AS col5,
id AS col6
FROM $course_request_table
LEFT JOIN $tblCourseCategory on course.category_id = course_category.id
WHERE status = ".COURSE_REQUEST_ACCEPTED;
if ($keyword != '') {

@ -99,10 +99,10 @@ $form->applyFilter('title', 'trim');
$form->addElement(
'select',
'category_code',
'category_id',
get_lang('Category'),
$categories,
['style' => 'width:350px', 'id' => 'category_code']
['style' => 'width:350px', 'id' => 'category_id']
);
$form->addSelectLanguage(
'course_language',
@ -913,7 +913,7 @@ $all_course_information = CourseManager::get_course_information($_course['sysCod
// Set the default values of the form
$values = [];
$values['title'] = $_course['name'];
$values['category_code'] = $_course['categoryCode'];
$values['category_id'] = $_course['category_id'];
$values['course_language'] = $_course['language'];
$values['department_name'] = $_course['extLink']['name'];
$values['department_url'] = $_course['extLink']['url'];
@ -1009,7 +1009,7 @@ if ($form->validate() && $isEditable) {
$params = [
'title' => $updateValues['title'],
'course_language' => $updateValues['course_language'],
'category_code' => $updateValues['category_code'],
'category_id' => $updateValues['category_id'],
'department_name' => $updateValues['department_name'],
'department_url' => $updateValues['department_url'],
'visibility' => $updateValues['visibility'],

@ -122,7 +122,7 @@ if ($countCategories >= 100) {
$url = api_get_path(WEB_AJAX_PATH).'course.ajax.php?a=search_category';
$form->addElement(
'select_ajax',
'category_code',
'category_id',
get_lang('Category'),
null,
['url' => $url]
@ -140,7 +140,7 @@ if ($countCategories >= 100) {
}
$form->addSelect(
'category_code',
'category_id',
get_lang('Category'),
$categoriesOptions
);
@ -306,7 +306,7 @@ if ($form->validate()) {
$course_values = $form->exportValues();
$wanted_code = $course_values['wanted_code'];
$category_code = isset($course_values['category_code']) ? $course_values['category_code'] : '';
$category_code = isset($course_values['category_id']) ? (int) $course_values['category_id'] : '';
$title = $course_values['title'];
$course_language = $course_values['course_language'];
$exemplary_content = !empty($course_values['exemplary_content']);
@ -336,7 +336,7 @@ if ($form->validate()) {
$params['title'] = $title;
$params['exemplary_content'] = $exemplary_content;
$params['wanted_code'] = $wanted_code;
$params['course_category'] = $category_code;
$params['course_id'] = $category_code;
$params['course_language'] = $course_language;
$params['gradebook_model_id'] = isset($course_values['gradebook_model_id']) ? $course_values['gradebook_model_id'] : null;
$params['course_template'] = isset($course_values['course_template']) ? $course_values['course_template'] : '';

@ -293,6 +293,7 @@ class CoursesAndSessionsCatalog
public static function getCoursesInCategory($category_code, $random_value = null, $limit = [])
{
$tbl_course = Database::get_main_table(TABLE_MAIN_COURSE);
$tblCourseCategory = Database::get_main_table(TABLE_MAIN_CATEGORY);
$avoidCoursesCondition = self::getAvoidCourseCondition();
$visibilityCondition = CourseManager::getCourseVisibilitySQLCondition('course', true);
@ -359,18 +360,21 @@ class CoursesAndSessionsCatalog
$category_code = Database::escape_string($category_code);
$listCode = self::childrenCategories($category_code);
$conditionCode = ' ';
$joinCategory = '';
if (empty($listCode)) {
if ($category_code === 'NONE') {
$conditionCode .= " category_code='' ";
$conditionCode .= " category_id IS NULL";
} else {
$conditionCode .= " category_code='$category_code' ";
$conditionCode .= " course_category.code = '$category_code' ";
$joinCategory = " LEFT JOIN $tblCourseCategory course_category ON course.category_id = course_category.id ";
}
} else {
foreach ($listCode as $code) {
$conditionCode .= " category_code='$code' OR ";
$conditionCode .= " course_category.code = '$category_code' OR ";
$joinCategory = " LEFT JOIN $tblCourseCategory course_category ON course.category_id = course_category.id ";
}
$conditionCode .= " category_code='$category_code' ";
$conditionCode .= " course_category.code = '$category_code' ";
}
if (empty($category_code) || $category_code == 'ALL') {
@ -382,7 +386,8 @@ class CoursesAndSessionsCatalog
$visibilityCondition
ORDER BY title $limitFilter ";
} else {
$sql = "SELECT *, id as real_id FROM $tbl_course course
$sql = "SELECT course.*, id as real_id FROM $tbl_course course
$joinCategory
WHERE
$conditionCode
$avoidCoursesCondition
@ -397,7 +402,8 @@ class CoursesAndSessionsCatalog
$urlCondition = ' access_url_id = '.$urlId.' ';
if ($category_code != 'ALL') {
$sql = "SELECT *, course.id real_id FROM $tbl_course as course
$sql = "SELECT *, course.id real_id, course_category.code AS category_code FROM $tbl_course as course
$joinCategory
INNER JOIN $tbl_url_rel_course as url_rel_course
ON (url_rel_course.c_id = course.id)
WHERE

@ -6147,13 +6147,13 @@ function api_is_course_visible_for_user($userid = null, $cid = null)
$course_cat_table = Database::get_main_table(TABLE_MAIN_CATEGORY);
$sql = "SELECT
$course_table.category_code,
$course_cat_table.code AS category_code,
$course_table.visibility,
$course_table.code,
$course_cat_table.code
FROM $course_table
LEFT JOIN $course_cat_table
ON $course_table.category_code = $course_cat_table.code
ON $course_table.category_id = $course_cat_table.id
WHERE
$course_table.code = '$cid'
LIMIT 1";

@ -44,12 +44,13 @@ class Auth
course.unsubscribe unsubscr,
course.title i,
course.tutor_name t,
course.category_code cat,
$course_cat_table.code cat,
course.directory dir,
course_rel_user.status status,
course_rel_user.sort sort,
course_rel_user.user_course_cat user_course_cat
FROM $TABLECOURS course, $TABLECOURSUSER course_rel_user
LEFT JOIN $tblCourseCategory ON course.category_id = $course_cat_table.id
WHERE
course.id = course_rel_user.c_id AND
course_rel_user.relation_type <> ".COURSE_RELATION_TYPE_RRHH." AND

@ -212,14 +212,17 @@ class CourseManager
$onlyThisCourseList = []
) {
$courseTable = Database::get_main_table(TABLE_MAIN_COURSE);
$sql = "SELECT course.*, course.id as real_id
FROM $courseTable course ";
$tblCourseCategory = Database::get_main_table(TABLE_MAIN_CATEGORY);
$sql = "SELECT course.*, course.id as real_id, course_category.code AS category_code
FROM $courseTable course ";
if (!empty($urlId)) {
$table = Database::get_main_table(TABLE_MAIN_ACCESS_URL_REL_COURSE);
$sql .= " INNER JOIN $table url ON (url.c_id = course.id) ";
}
$sql .= " LEFT JOIN $tblCourseCategory ON course.category_id = course_category.id ";
$visibility = (int) $visibility;
if (!empty($startwith)) {
@ -1013,6 +1016,7 @@ class CourseManager
// Definitions database tables and variables
$tbl_course = Database::get_main_table(TABLE_MAIN_COURSE);
$tbl_course_user = Database::get_main_table(TABLE_MAIN_COURSE_USER);
$tblCourseCategory = Database::get_main_table(TABLE_MAIN_CATEGORY);
$user_id = intval($user_id);
$data = [];
@ -1021,10 +1025,11 @@ class CourseManager
course.title,
course.id,
course.id as real_id,
course.category_code
course_category.code AS category_code
FROM $tbl_course_user as course_rel_user
INNER JOIN $tbl_course as course
ON course.id = course_rel_user.c_id
LEFT JOIN $tblCourseCategory ON course.category_id = $tblCourseCategory.id
WHERE
course_rel_user.user_id = $user_id AND
course_rel_user.status = 1
@ -2827,6 +2832,7 @@ class CourseManager
$tbl_course_user = Database::get_main_table(TABLE_MAIN_COURSE_USER);
$tbl_user_course_category = Database::get_main_table(TABLE_USER_COURSE_CATEGORY);
$tableCourseUrl = Database::get_main_table(TABLE_MAIN_ACCESS_URL_REL_COURSE);
$tblCourseCategory = Database::get_main_table(TABLE_MAIN_CATEGORY);
$languageCondition = '';
$onlyInUserLanguage = api_get_configuration_value('my_courses_show_courses_in_user_language_only');
@ -2862,11 +2868,12 @@ class CourseManager
if (!empty($withSpecialCourses)) {
$sql = "SELECT DISTINCT (course.code),
course.id as real_id,
course.category_code AS category,
course_category.code AS category,
course.title
FROM $tbl_course_user course_rel_user
LEFT JOIN $tbl_course course
ON course.id = course_rel_user.c_id
LEFT JOIN $tblCourseCategory ON course_category.id = course.category_id
LEFT JOIN $tbl_user_course_category user_course_category
ON course_rel_user.user_course_cat = user_course_category.id
INNER JOIN $tableCourseUrl url
@ -2893,7 +2900,7 @@ class CourseManager
$sql = "SELECT
DISTINCT(course.code),
course.id as real_id,
course.category,
course.category_id AS category,
course.title
FROM $tbl_course course
INNER JOIN $tbl_course_user cru
@ -3033,6 +3040,14 @@ class CourseManager
*/
public static function update_attributes($id, $attributes)
{
$courseCategory = CourseCategory::getCategory($attributes['category_code']);
unset($attributes['category_code']);
if (!empty($courseCategory)) {
$attributes['category_id'] = $courseCategory['id'];
}
$id = (int) $id;
$table = Database::get_main_table(TABLE_MAIN_COURSE);
$sql = "UPDATE $table SET ";

@ -96,7 +96,7 @@ class CourseCategory
LEFT JOIN $tbl_category t2
ON t1.id = t2.parent_id
LEFT JOIN $tbl_course t3
ON t3.category = t1.id
ON t3.category_id = t1.id
WHERE
1 = 1
$parentIdCondition
@ -259,11 +259,11 @@ class CourseCategory
if ($row = Database::fetch_array($result)) {
if (!empty($row['parent_id'])) {
Database::query(
"UPDATE $tbl_course SET category_code = '".$row['parent_id']."' WHERE category_code='$node'"
"UPDATE $tbl_course SET category_id = '".$row['parent_id']."' WHERE category_id = {$category['id']}"
);
Database::query("UPDATE $tbl_category SET parent_id='".$row['parent_id']."' WHERE parent_id='$node'");
} else {
Database::query("UPDATE $tbl_course SET category = NULL WHERE category = ".$category['id']);
Database::query("UPDATE $tbl_course SET category_id = NULL WHERE category_id = ".$category['id']);
Database::query("UPDATE $tbl_category SET parent_id=NULL WHERE parent_id='$node'");
}
@ -292,7 +292,6 @@ class CourseCategory
*/
public static function editNode($code, $name, $canHaveCourses, $old_code)
{
$tbl_course = Database::get_main_table(TABLE_MAIN_COURSE);
$tbl_category = Database::get_main_table(TABLE_MAIN_CATEGORY);
$code = trim(Database::escape_string($code));
@ -314,11 +313,6 @@ class CourseCategory
WHERE parent_id = '$old_code'";
Database::query($sql);
// Updating course category
$sql = "UPDATE $tbl_course SET category_code = '$code'
WHERE category_code = '$old_code' ";
Database::query($sql);
return true;
}
@ -623,6 +617,7 @@ class CourseCategory
public static function countCoursesInCategory($category_code = '', $searchTerm = '')
{
$tbl_course = Database::get_main_table(TABLE_MAIN_COURSE);
$tblCourseCategory = Database::get_main_table(TABLE_MAIN_CATEGORY);
$categoryCode = Database::escape_string($category_code);
$searchTerm = Database::escape_string($searchTerm);
@ -630,30 +625,33 @@ class CourseCategory
$avoidCoursesCondition = CoursesAndSessionsCatalog::getAvoidCourseCondition();
$visibilityCondition = CourseManager::getCourseVisibilitySQLCondition('course', true);
$categoryJoin = '';
$categoryFilter = '';
if ($categoryCode === 'ALL') {
// Nothing to do
} elseif ($categoryCode === 'NONE') {
$categoryFilter = ' AND category_code = "" ';
$categoryFilter = ' AND course.category_id IS NULL ';
} else {
$categoryFilter = ' AND category_code = "'.$categoryCode.'" ';
$categoryJoin = " INNER JOIN $tblCourseCategory cat ON course.category_id = cat.id ";
$categoryFilter = ' AND cat.code = "'.$categoryCode.'" ';
}
$searchFilter = '';
if (!empty($searchTerm)) {
$searchFilter = ' AND (
code LIKE "%'.$searchTerm.'%" OR
title LIKE "%'.$searchTerm.'%" OR
tutor_name LIKE "%'.$searchTerm.'%"
course.code LIKE "%'.$searchTerm.'%" OR
course.title LIKE "%'.$searchTerm.'%" OR
course.tutor_name LIKE "%'.$searchTerm.'%"
) ';
}
$urlCondition = ' access_url_id = '.api_get_current_access_url_id().' AND';
$urlCondition = ' url_rel_course.access_url_id = '.api_get_current_access_url_id().' AND';
$tbl_url_rel_course = Database::get_main_table(TABLE_MAIN_ACCESS_URL_REL_COURSE);
$sql = "SELECT count(*) as count
$sql = "SELECT count(course.id) as count
FROM $tbl_course as course
INNER JOIN $tbl_url_rel_course as url_rel_course
ON (url_rel_course.c_id = course.id)
$categoryJoin
WHERE
$urlCondition
course.visibility != '0' AND

@ -42,20 +42,31 @@ class Statistics
public static function countCourses($categoryCode = null)
{
$course_table = Database::get_main_table(TABLE_MAIN_COURSE);
$tblCourseCategory = Database::get_main_table(TABLE_MAIN_CATEGORY);
$access_url_rel_course_table = Database::get_main_table(TABLE_MAIN_ACCESS_URL_REL_COURSE);
$urlId = api_get_current_access_url_id();
$categoryJoin = '';
$categoryCondition = '';
if (!empty($categoryCode)) {
$categoryJoin = " LEFT JOIN $tblCourseCategory course_category ON course.category_id = course_category.id ";
$categoryCondition = " course_category.code = '".Database::escape_string($categoryCode)."' ";
}
if (api_is_multiple_url_enabled()) {
$sql = "SELECT COUNT(*) AS number
FROM ".$course_table." as c, $access_url_rel_course_table as u
$categoryJoin
WHERE u.c_id = c.id AND access_url_id='".$urlId."'";
if (isset($categoryCode)) {
$sql .= " AND category_code = '".Database::escape_string($categoryCode)."'";
$sql .= " AND $categoryCondition";
}
} else {
$sql = "SELECT COUNT(*) AS number
FROM $course_table";
FROM $course_table $categoryJoin";
if (isset($categoryCode)) {
$sql .= " WHERE category_code = '".Database::escape_string($categoryCode)."'";
$sql .= " WHERE $categoryCondition";
}
}
@ -120,6 +131,7 @@ class Statistics
$course_table = Database::get_main_table(TABLE_MAIN_COURSE);
$user_table = Database::get_main_table(TABLE_MAIN_USER);
$access_url_rel_user_table = Database::get_main_table(TABLE_MAIN_ACCESS_URL_REL_USER);
$tblCourseCategory = Database::get_main_table(TABLE_MAIN_CATEGORY);
$urlId = api_get_current_access_url_id();
$active_filter = $onlyActive ? ' AND active=1' : '';
$status_filter = isset($status) ? ' AND status = '.intval($status) : '';
@ -134,9 +146,10 @@ class Statistics
if (isset($categoryCode)) {
$sql = "SELECT COUNT(DISTINCT(cu.user_id)) AS number
FROM $course_user_table cu, $course_table c, $access_url_rel_user_table as url
INNER JOIN $tblCourseCategory course_category ON c.category_id = course_category.id
WHERE
c.id = cu.c_id AND
c.category_code = '".Database::escape_string($categoryCode)."' AND
course_category.code = '".Database::escape_string($categoryCode)."' AND
cu.user_id = url.user_id AND
access_url_id='".$urlId."'
$status_filter $active_filter";
@ -149,9 +162,10 @@ class Statistics
$status_filter = isset($status) ? ' AND status = '.intval($status) : '';
$sql = "SELECT COUNT(DISTINCT(cu.user_id)) AS number
FROM $course_user_table cu, $course_table c
INNER JOIN $tblCourseCategory course_category ON c.category_id = course_category.id
WHERE
c.id = cu.c_id AND
c.category_code = '".Database::escape_string($categoryCode)."'
course_category.code = '".Database::escape_string($categoryCode)."'
$status_filter
$active_filter
";

@ -3167,6 +3167,7 @@ class UserManager
$tbl_session_user = Database::get_main_table(TABLE_MAIN_SESSION_USER);
$tbl_course_user = Database::get_main_table(TABLE_MAIN_COURSE_USER);
$tbl_session_course_user = Database::get_main_table(TABLE_MAIN_SESSION_COURSE_USER);
$tblCourseCategory = Database::get_main_table(TABLE_MAIN_CATEGORY);
$user_id = (int) $user_id;
@ -3300,7 +3301,7 @@ class UserManager
".(api_is_western_name_order() ? "CONCAT(user.firstname,' ',user.lastname)" : "CONCAT(user.lastname,' ',user.firstname)")." t,
email, course.course_language l,
1 sort,
category_code user_course_cat,
course_category.code user_course_cat,
access_start_date,
access_end_date,
session.id as session_id,
@ -3308,6 +3309,7 @@ class UserManager
FROM $tbl_session_course_user as session_course_user
INNER JOIN $tbl_course AS course
ON course.id = session_course_user.c_id
LEFT JOIN $tblCourseCategory course_category ON course.category_id = course_category.id
INNER JOIN $tbl_session as session
ON session.id = session_course_user.session_id
LEFT JOIN $tbl_user as user
@ -3342,7 +3344,7 @@ class UserManager
email,
course.course_language l,
1 sort,
category_code user_course_cat,
course_category.code user_course_cat,
access_start_date,
access_end_date,
session.id as session_id,
@ -3351,6 +3353,7 @@ class UserManager
FROM $tbl_session_course_user as session_course_user
INNER JOIN $tbl_course AS course
ON course.id = session_course_user.c_id AND session_course_user.session_id = $session_id
LEFT JOIN $tblCourseCategory course_category ON course.category_id = course_category.id
INNER JOIN $tbl_session as session
ON session_course_user.session_id = session.id
LEFT JOIN $tbl_user as user ON user.id = session_course_user.user_id

@ -114,8 +114,12 @@ class IndexManager
{
$setting_show_also_closed_courses = api_get_setting('show_closed_courses') == 'true';
$main_course_table = Database::get_main_table(TABLE_MAIN_COURSE);
$tblCourseCategory = Database::get_main_table(TABLE_MAIN_CATEGORY);
$category = Database::escape_string($category);
$sql_query = "SELECT * FROM $main_course_table WHERE category_code='$category'";
$sql_query = "SELECT course.*, course_category.code AS category_code
FROM $main_course_table course
INNER JOIN $tblCourseCategory course_category ON course.category_id = course_category.id
WHERE course_category.code ='$category'";
$sql_result = Database::query($sql_query);
while ($course = Database::fetch_array($sql_result)) {
if (!$setting_show_also_closed_courses) {
@ -336,10 +340,18 @@ class IndexManager
$main_category_table = Database::get_main_table(TABLE_MAIN_CATEGORY);
// Get list of courses in category $category.
$sql = "SELECT * FROM $main_course_table cours
WHERE category_code = '".$category."'
$sql = "SELECT *, '' AS category_code FROM $main_course_table cours
WHERE category_id IS NULL
ORDER BY title, UPPER(visual_code)";
if (!empty($category)) {
$sql = "SELECT course.*, course_category.code AS category_code
FROM $main_course_table course
INNER JOIN $main_category_table course_category ON course.category_id = course_category.id
WHERE course_category.code = '$category'
ORDER BY course.title, UPPER(visual_code)";
}
// Showing only the courses of the current access_url_id.
if (api_is_multiple_url_enabled()) {
$url_access_id = api_get_current_access_url_id();
@ -350,8 +362,19 @@ class IndexManager
ON (url_rel_course.c_id = course.id)
WHERE
access_url_id = $url_access_id AND
category_code = '".$category."'
category_id IS NULL
ORDER BY title, UPPER(visual_code)";
if (!empty($category)) {
$sql = "SELECT * FROM $main_course_table as course
INNER JOIN $main_category_table course_category ON course.category_id = course_category.id
INNER JOIN $tbl_url_rel_course as url_rel_course
ON (url_rel_course.c_id = course.id)
WHERE
access_url_id = $url_access_id AND
course_category.code = '$category'
ORDER BY title, UPPER(visual_code)";
}
}
}
@ -385,7 +408,7 @@ class IndexManager
LEFT JOIN $main_category_table t2
ON t1.code=t2.parent_id
LEFT JOIN $main_course_table t3
ON (t3.category_code = t1.code $platform_visible_courses)
ON (t3.category_id = t1.id $platform_visible_courses)
WHERE t1.parent_id ".(empty($category) ? "IS NULL" : "='$category'")."
GROUP BY t1.name,t1.code,t1.parent_id,t1.children_count
ORDER BY t1.tree_pos, t1.name";
@ -407,7 +430,7 @@ class IndexManager
FROM $main_category_table t1
$courseCategoryCondition
LEFT JOIN $main_category_table t2 ON t1.code = t2.parent_id
LEFT JOIN $main_course_table t3 ON (t3.category_code = t1.code $platform_visible_courses)
LEFT JOIN $main_course_table t3 ON (t3.category_id = t1.id $platform_visible_courses)
INNER JOIN $tbl_url_rel_course as url_rel_course
ON (url_rel_course.c_id = t3.id)
WHERE
@ -2445,8 +2468,8 @@ class IndexManager
return array_filter(
$courseList,
function ($courseInfo) use ($categoryCode) {
if (isset($courseInfo['category_code']) &&
$courseInfo['category_code'] === $categoryCode
if (isset($courseInfo['categoryCode']) &&
$courseInfo['categoryCode'] === $categoryCode
) {
return true;
}

@ -305,9 +305,18 @@ class PageController
$main_course_table = Database :: get_main_table(TABLE_MAIN_COURSE);
$main_category_table = Database :: get_main_table(TABLE_MAIN_CATEGORY);
$categoryId = null;
$courseCategory = \CourseCategory::getCategory($_GET['category']);
$categoryCondition = 'category_code IS NULL';
if (!empty($courseCategory)) {
$categoryId = $courseCategory['id'];
$categoryCondition = "category_code = $categoryId";
}
// Get list of courses in category $category.
$sql_get_course_list = "SELECT * FROM $main_course_table cours
WHERE category_code = '".Database::escape_string($_GET['category'])."'
WHERE $categoryCondition
ORDER BY title, UPPER(visual_code)";
// Showing only the courses of the current access_url_id.
@ -317,9 +326,7 @@ class PageController
$tbl_url_rel_course = Database::get_main_table(TABLE_MAIN_ACCESS_URL_REL_COURSE);
$sql_get_course_list = "SELECT * FROM $main_course_table as course INNER JOIN $tbl_url_rel_course as url_rel_course
ON (url_rel_course.c_id = course.id)
WHERE access_url_id = $url_access_id AND category_code = '".Database::escape_string(
$_GET['category']
)."' ORDER BY title, UPPER(visual_code)";
WHERE access_url_id = $url_access_id AND $categoryCondition ORDER BY title, UPPER(visual_code)";
}
}
@ -349,7 +356,7 @@ class PageController
SELECT t1.name,t1.code,t1.parent_id,t1.children_count,COUNT(DISTINCT t3.code) AS nbCourse
FROM $main_category_table t1
LEFT JOIN $main_category_table t2 ON t1.code=t2.parent_id
LEFT JOIN $main_course_table t3 ON (t3.category_code=t1.code $platform_visible_courses)
LEFT JOIN $main_course_table t3 ON (t3.category_id = t1.id $platform_visible_courses)
WHERE t1.parent_id ".(empty($category) ? "IS NULL" : "='$category'")."
GROUP BY t1.name,t1.code,t1.parent_id,t1.children_count ORDER BY t1.tree_pos, t1.name";
@ -362,7 +369,7 @@ class PageController
SELECT t1.name,t1.code,t1.parent_id,t1.children_count,COUNT(DISTINCT t3.code) AS nbCourse
FROM $main_category_table t1
LEFT JOIN $main_category_table t2 ON t1.code=t2.parent_id
LEFT JOIN $main_course_table t3 ON (t3.category_code=t1.code $platform_visible_courses)
LEFT JOIN $main_course_table t3 ON (t3.category_id = t1.id $platform_visible_courses)
INNER JOIN $tbl_url_rel_course as url_rel_course
ON (url_rel_course.c_id = t3.id)
WHERE access_url_id = $url_access_id AND t1.parent_id ".(empty($category) ? "IS NULL" : "='$category'")."

@ -255,7 +255,7 @@ class CourseRestorer
/**
* Restore only harmless course settings:
* course_language, visibility, department_name,department_url,
* subscribe, unsubscribe ,category_code.
* subscribe, unsubscribe, category_id.
*
* @param string $destination_course_code
*/
@ -267,7 +267,7 @@ class CourseRestorer
$params['visibility'] = $course_info['visibility'];
$params['department_name'] = $course_info['department_name'];
$params['department_url'] = $course_info['department_url'];
$params['category_code'] = $course_info['categoryCode'];
$params['category_id'] = $course_info['category_id'];
$params['subscribe'] = $course_info['subscribe_allowed'];
$params['unsubscribe'] = $course_info['unsubscribe'];
CourseManager::update_attributes($origin_course_info['real_id'], $params);

Loading…
Cancel
Save