Course: Add filter to show courses by categories - refs BT#20638

pull/4660/head
Christian 2 years ago
parent be5bc900c9
commit 8f745a2b2b
  1. 24
      main/inc/lib/CoursesAndSessionsCatalog.class.php
  2. 3
      main/install/configuration.dist.php

@ -126,11 +126,30 @@ class CoursesAndSessionsCatalog
*/
public static function getCoursesToShowInCatalogueCondition()
{
$categoriesToShow = api_get_configuration_value('courses_catalogue_show_only_category');
$coursesCategoryInCatalogue = [];
if (!empty($categoriesToShow)) {
foreach ($categoriesToShow as $categoryCode) {
$courseCategories = CourseCategory::getCoursesInCategory($categoryCode, '', false);
if (!empty($courseCategories)) {
foreach ($courseCategories as $course) {
$coursesCategoryInCatalogue[] = $course['id'];
}
}
}
}
$courseListToShow = self::getCoursesToShowInCatalogue();
if (false === $courseListToShow) {
$courseListToShow = $coursesCategoryInCatalogue;
}
$condition = '';
if (!empty($courseListToShow)) {
$courses = [];
foreach ($courseListToShow as $courseId) {
if (!empty($categoriesToShow) && !in_array($courseId, $coursesCategoryInCatalogue)) {
continue;
}
$courses[] = '"'.$courseId.'"';
}
$condition = ' AND course.id IN ('.implode(',', $courses).')';
@ -222,8 +241,13 @@ class CoursesAndSessionsCatalog
if (api_is_student()) {
$categoryToAvoid = api_get_configuration_value('course_category_code_to_use_as_model');
}
$showOnlyCategory = api_get_configuration_value('courses_catalogue_show_only_category');
foreach ($allCategories as $category) {
$categoryCode = $category['code'];
if (!($showOnlyCategory && in_array($categoryCode, $showOnlyCategory))) {
continue;
}
if (!empty($categoryToAvoid) && $categoryToAvoid == $categoryCode) {
continue;
}

@ -2410,6 +2410,9 @@ INSERT INTO extra_field_options (field_id, option_value, display_text, priority,
(@ef_id, '0', 'No', NULL, NULL, 2);
//$_configuration['show_courses_in_catalogue'] = false;
// Allows defining one or several categories of courses that will be visible in the course catalog
// $_configuration['courses_catalogue_show_only_category'] = ['Cat1','Cat2'];
// KEEP THIS AT THE END
// -------- Custom DB changes
// Add user activation by confirmation email

Loading…
Cancel
Save