Add "Hide from catalog" (hide_from_catalog) course extra field BT#14254

In order to hide courses from the course catalog.

Refactor course/session/course category code.
Change function name and move functions to CourseAndSessionsCatalog
pull/2539/head
jmontoyaa 7 years ago
parent a167eb0528
commit ac7665e531
  1. 3
      main/auth/courses.php
  2. 60
      main/auth/courses_controller.php
  3. 2
      main/inc/ajax/admin.ajax.php
  4. 550
      main/inc/lib/CoursesAndSessionsCatalog.class.php
  5. 405
      main/inc/lib/auth.lib.php
  6. 43
      main/inc/lib/course.lib.php
  7. 248
      main/inc/lib/course_category.lib.php
  8. 36
      main/inc/lib/sessionmanager.lib.php
  9. 26
      main/inc/lib/statistics.lib.php
  10. 6
      plugin/buycourses/src/buy_course_plugin.class.php

@ -19,7 +19,7 @@ require_once __DIR__.'/../inc/global.inc.php';
$ctok = Security::get_existing_token();
// Get Limit data
$limit = CourseCategory::getLimitArray();
$limit = CoursesController::getLimitArray();
// Section for the tabs.
$this_section = SECTION_CATALOG;
@ -187,6 +187,7 @@ if (isset($_POST['unsubscribe'])) {
$courseController->unsubscribe_user_from_course($_POST['unsubscribe']);
}
}
switch ($action) {
case 'subscribe_user_with_password':
$courseController->subscribe_user(

@ -1,7 +1,11 @@
<?php
/* For licensing terms, see /license.txt */
use Chamilo\CoreBundle\Entity\Repository\SequenceRepository;
use Chamilo\CoreBundle\Entity\SequenceResource;
use Chamilo\CoreBundle\Entity\SessionRelCourse;
use Chamilo\CoreBundle\Entity\Tag;
/**
* Class CoursesController.
@ -41,7 +45,7 @@ class CoursesController
{
$data = [];
$data['user_courses'] = $this->model->get_courses_of_user(api_get_user_id());
$data['user_course_categories'] = $this->model->get_user_course_categories();
$data['user_course_categories'] = CourseManager::get_user_course_categories(api_get_user_id());
$data['courses_in_category'] = $this->model->get_courses_in_category();
$data['action'] = $action;
$data['message'] = $message;
@ -66,7 +70,7 @@ class CoursesController
api_block_anonymous_users();
$data = [];
$data['user_course_categories'] = $this->model->get_user_course_categories();
$data['user_course_categories'] = CourseManager::get_user_course_categories(api_get_user_id());
$stok = Security::get_token();
$actions = Display::url(
@ -114,11 +118,11 @@ class CoursesController
$limit = []
) {
$data = [];
$browse_course_categories = $this->model->browse_course_categories();
$data['countCoursesInCategory'] = $this->model->count_courses_in_category($category_code);
$browse_course_categories = CoursesAndSessionsCatalog::getCourseCategories();
$data['countCoursesInCategory'] = CourseCategory::countCoursesInCategory($category_code);
if ($action === 'display_random_courses') {
// Random value is used instead limit filter
$data['browse_courses_in_category'] = $this->model->browse_courses_in_category(
$data['browse_courses_in_category'] = CoursesAndSessionsCatalog::getCoursesInCategory(
null,
12
);
@ -127,8 +131,8 @@ class CoursesController
if (!isset($category_code)) {
$category_code = $browse_course_categories[0][1]['code']; // by default first category
}
$limit = isset($limit) ? $limit : CourseCategory::getLimitArray();
$data['browse_courses_in_category'] = $this->model->browse_courses_in_category(
$limit = isset($limit) ? $limit : self::getLimitArray();
$data['browse_courses_in_category'] = CoursesAndSessionsCatalog::getCoursesInCategory(
$category_code,
null,
$limit
@ -192,13 +196,13 @@ class CoursesController
$justVisible = false
) {
$data = [];
$limit = !empty($limit) ? $limit : CourseCategory::getLimitArray();
$browse_course_categories = $this->model->browse_course_categories();
$data['countCoursesInCategory'] = $this->model->count_courses_in_category(
$limit = !empty($limit) ? $limit : self::getLimitArray();
$browse_course_categories = CoursesAndSessionsCatalog::getCourseCategories();
$data['countCoursesInCategory'] = CourseCategory::countCoursesInCategory(
'ALL',
$search_term
);
$data['browse_courses_in_category'] = $this->model->search_courses(
$data['browse_courses_in_category'] = CoursesAndSessionsCatalog::search_courses(
$search_term,
$limit,
$justVisible
@ -430,7 +434,7 @@ class CoursesController
}
if (!empty($search_term)) {
$this->search_courses($search_term, $message, $error);
CoursesAndSessionsCatalog::search_courses($search_term, $message, $error);
} else {
$this->courses_categories(
'subcribe',
@ -455,7 +459,7 @@ class CoursesController
$hiddenLinks = false,
$limit = null
) {
$categories = $this->model->browse_course_categories();
$categories = CoursesAndSessionsCatalog::getCourseCategories();
$html = '';
if (!empty($categories)) {
$action = 'display_courses';
@ -711,9 +715,9 @@ class CoursesController
{
$date = isset($_POST['date']) ? $_POST['date'] : date('Y-m-d');
$hiddenLinks = isset($_GET['hidden_links']) ? intval($_GET['hidden_links']) == 1 : false;
$limit = isset($limit) ? $limit : CourseCategory::getLimitArray();
$countSessions = $this->model->countSessions($date);
$sessions = $this->model->browseSessions($date, $limit);
$limit = isset($limit) ? $limit : self::getLimitArray();
$countSessions = SessionManager::countSessionsByEndDate($date);
$sessions = CoursesAndSessionsCatalog::browseSessions($date, $limit);
$pageTotal = intval(intval($countSessions) / $limit['length']);
// Do NOT show pagination if only one page or less
@ -765,7 +769,7 @@ class CoursesController
'subscribe'
);
$sessions = $this->model->browseSessionsByTags($searchTag, $limit);
$sessions = CoursesAndSessionsCatalog::browseSessionsByTags($searchTag, $limit);
$sessionsBlocks = $this->getFormattedSessionsBlock($sessions);
$tpl = new Template();
@ -803,7 +807,7 @@ class CoursesController
);
$searchDate = isset($_POST['date']) ? $_POST['date'] : date('Y-m-d');
$sessions = $this->model->browseSessionsBySearch($q, $limit);
$sessions = CoursesAndSessionsCatalog::browseSessionsBySearch($q, $limit);
$sessionsBlocks = $this->getFormattedSessionsBlock($sessions);
$tpl = new Template();
@ -865,13 +869,13 @@ class CoursesController
$sessionRelCourses = $sessionRelCourseRepo->findBy([
'session' => $session,
]);
/** @var SessionRelCourse $sessionRelCourse */
foreach ($sessionRelCourses as $sessionRelCourse) {
$courseTags = $extraFieldRelTagRepo->getTags(
$tagsField,
$sessionRelCourse->getCourse()->getId()
);
/** @var Tag $tag */
foreach ($courseTags as $tag) {
$sessionCourseTags[] = $tag->getTag();
}
@ -882,6 +886,7 @@ class CoursesController
$sessionCourseTags = array_unique($sessionCourseTags);
}
/** @var SequenceRepository $repo */
$repo = $entityManager->getRepository('ChamiloCoreBundle:SequenceResource');
$sequences = $repo->getRequirementsAndDependenciesWithinSequences(
$session->getId(),
@ -955,4 +960,19 @@ class CoursesController
return $sessionsBlocks;
}
/**
* @return array
*/
public static function getLimitArray()
{
$pageCurrent = isset($_REQUEST['pageCurrent']) ? intval($_GET['pageCurrent']) : 1;
$pageLength = isset($_REQUEST['pageLength']) ? intval($_GET['pageLength']) : CoursesAndSessionsCatalog::PAGE_LENGTH;
return [
'start' => ($pageCurrent - 1) * $pageLength,
'current' => $pageCurrent,
'length' => $pageLength,
];
}
}

@ -156,7 +156,7 @@ function check_system_version()
);
// The number of sessions
$number_of_sessions = Statistics::countSessions();
$number_of_sessions = SessionManager::count_sessions(api_get_current_access_url_id());
$packager = api_get_configuration_value('packager');
if (empty($packager)) {
$packager = 'chamilo';

@ -1,6 +1,10 @@
<?php
/* For licensing terms, see /license.txt */
use Doctrine\Common\Collections\Criteria;
use Chamilo\CoreBundle\Entity\ExtraField;
use Doctrine\ORM\Query\Expr\Join;
/**
* @todo change class name
* Class CoursesAndSessionsCatalog
@ -63,4 +67,550 @@ class CoursesAndSessionsCatalog
return false;
}
/**
* @return array
*/
public static function getCoursesToAvoid()
{
$TABLE_COURSE_FIELD = Database::get_main_table(TABLE_EXTRA_FIELD);
$TABLE_COURSE_FIELD_VALUE = Database::get_main_table(TABLE_EXTRA_FIELD_VALUES);
// Check special courses
$courseListToAvoid = CourseManager::get_special_course_list();
// Checks "hide_from_catalog" extra field
$extraFieldType = ExtraField::COURSE_FIELD_TYPE;
$sql = "SELECT item_id FROM $TABLE_COURSE_FIELD_VALUE tcfv
INNER JOIN $TABLE_COURSE_FIELD tcf
ON tcfv.field_id = tcf.id
WHERE
tcf.extra_field_type = $extraFieldType AND
tcf.variable = 'hide_from_catalog' AND
tcfv.value = 1
";
$result = Database::query($sql);
if (Database::num_rows($result) > 0) {
while ($row = Database::fetch_array($result)) {
$courseListToAvoid[] = $row['item_id'];
}
}
return $courseListToAvoid;
}
/**
* @return string
*/
public static function getAvoidCourseCondition()
{
$courseListToAvoid = self::getCoursesToAvoid();
$condition = '';
if (!empty($courseListToAvoid)) {
$courses = [];
foreach ($courseListToAvoid as $courseId) {
$courses[] = '"'.$courseId.'"';
}
$condition = ' AND course.id NOT IN ('.implode(',', $courses).')';
}
return $condition;
}
/**
* Get available le courses count.
*
* @param int $accessUrlId (optional)
*
* @return int Number of courses
*/
public static function countAvailableCoursesToShowInCatalog($accessUrlId = 1)
{
$tableCourse = Database::get_main_table(TABLE_MAIN_COURSE);
$tableCourseRelAccessUrl = Database::get_main_table(TABLE_MAIN_ACCESS_URL_REL_COURSE);
$courseToAvoidCondition = self::getAvoidCourseCondition();
$visibilityCondition = CourseManager::getCourseVisibilitySQLCondition('course', true);
$accessUrlId = (int) $accessUrlId;
if (empty($accessUrlId)) {
$accessUrlId = 1;
}
$sql = "SELECT count(course.id)
FROM $tableCourse course
INNER JOIN $tableCourseRelAccessUrl u
ON (course.id = u.c_id)
WHERE
u.access_url_id = $accessUrlId AND
course.visibility != 0 AND
course.visibility != 4
$courseToAvoidCondition
$visibilityCondition
";
$res = Database::query($sql);
$row = Database::fetch_row($res);
return $row[0];
}
/**
* @return array
*/
public static function getCourseCategories()
{
$urlId = 1;
if (api_is_multiple_url_enabled()) {
$urlId = api_get_current_access_url_id();
}
$countCourses = self::countAvailableCoursesToShowInCatalog($urlId);
$categories = [];
$categories[0][0] = [
'id' => 0,
'name' => get_lang('DisplayAll'),
'code' => 'ALL',
'parent_id' => null,
'tree_pos' => 0,
'count_courses' => $countCourses,
];
$categoriesFromDatabase = CourseCategory::getCategories();
foreach ($categoriesFromDatabase as $row) {
$count_courses = CourseCategory::countCoursesInCategory($row['code']);
$row['count_courses'] = $count_courses;
if (empty($row['parent_id'])) {
$categories[0][$row['tree_pos']] = $row;
} else {
$categories[$row['parent_id']][$row['tree_pos']] = $row;
}
}
$count_courses = CourseCategory::countCoursesInCategory();
$categories[0][count($categories[0]) + 1] = [
'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;
}
/**
* Return LIMIT to filter SQL query.
*
* @param array $limit
*
* @return string
*/
public static function getLimitFilterFromArray($limit)
{
$limitFilter = '';
if (!empty($limit) && is_array($limit)) {
$limitStart = isset($limit['start']) ? $limit['start'] : 0;
$limitLength = isset($limit['length']) ? $limit['length'] : 12;
$limitFilter = 'LIMIT '.$limitStart.', '.$limitLength;
}
return $limitFilter;
}
/**
* @param string $category_code
* @param int $random_value
* @param array $limit will be used if $random_value is not set.
* This array should contains 'start' and 'length' keys
*
* @return array
*/
public static function getCoursesInCategory($category_code, $random_value = null, $limit = [])
{
$tbl_course = Database::get_main_table(TABLE_MAIN_COURSE);
$avoidCoursesCondition = self::getAvoidCourseCondition();
$visibilityCondition = CourseManager::getCourseVisibilitySQLCondition(
'course',
true
);
if (!empty($random_value)) {
$random_value = intval($random_value);
$sql = "SELECT COUNT(*) FROM $tbl_course";
$result = Database::query($sql);
list($num_records) = Database::fetch_row($result);
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 COUNT(*) FROM $tbl_course 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 ";
$result = Database::query($sql);
list($num_records) = Database::fetch_row($result);
$sql = "SELECT course.id, course.id as real_id
FROM $tbl_course 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
RAND()*$num_records< $random_value
$avoidCoursesCondition
$visibilityCondition
ORDER BY RAND()
LIMIT 0, $random_value";
} else {
$sql = "SELECT id, id as real_id FROM $tbl_course course
WHERE
RAND()*$num_records< $random_value
$avoidCoursesCondition
$visibilityCondition
ORDER BY RAND()
LIMIT 0, $random_value";
}
$result = Database::query($sql);
$id_in = null;
while (list($id) = Database::fetch_row($result)) {
if ($id_in) {
$id_in .= ",$id";
} else {
$id_in = "$id";
}
}
if ($id_in === null) {
return [];
}
$sql = "SELECT *, id as real_id FROM $tbl_course WHERE id IN($id_in)";
} else {
$limitFilter = self::getLimitFilterFromArray($limit);
$category_code = Database::escape_string($category_code);
if (empty($category_code) || $category_code == "ALL") {
$sql = "SELECT *, id as real_id
FROM $tbl_course course
WHERE
1=1
$avoidCoursesCondition
$visibilityCondition
ORDER BY title $limitFilter ";
} else {
if ($category_code == 'NONE') {
$category_code = '';
}
$sql = "SELECT *, id as real_id FROM $tbl_course course
WHERE
category_code='$category_code'
$avoidCoursesCondition
$visibilityCondition
ORDER BY title $limitFilter ";
}
// Showing only the courses of the current Chamilo access_url_id
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);
if ($category_code != "ALL") {
$sql = "SELECT *, course.id real_id FROM $tbl_course 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='$category_code'
$avoidCoursesCondition
$visibilityCondition
ORDER BY title $limitFilter";
} else {
$sql = "SELECT *, course.id real_id FROM $tbl_course 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
$avoidCoursesCondition
$visibilityCondition
ORDER BY title $limitFilter";
}
}
}
$result = Database::query($sql);
$courses = [];
while ($row = Database::fetch_array($result)) {
$row['registration_code'] = !empty($row['registration_code']);
$count_users = CourseManager::get_users_count_in_course($row['code']);
$count_connections_last_month = Tracking::get_course_connections_count(
$row['id'],
0,
api_get_utc_datetime(time() - (30 * 86400))
);
if ($row['tutor_name'] == '0') {
$row['tutor_name'] = get_lang('NoManager');
}
$point_info = CourseManager::get_course_ranking($row['id'], 0);
$courses[] = [
'real_id' => $row['real_id'],
'point_info' => $point_info,
'code' => $row['code'],
'directory' => $row['directory'],
'visual_code' => $row['visual_code'],
'title' => $row['title'],
'tutor' => $row['tutor_name'],
'subscribe' => $row['subscribe'],
'unsubscribe' => $row['unsubscribe'],
'registration_code' => $row['registration_code'],
'creation_date' => $row['creation_date'],
'visibility' => $row['visibility'],
'category' => $row['category_code'],
'count_users' => $count_users,
'count_connections' => $count_connections_last_month,
];
}
return $courses;
}
/**
* Search the courses database for a course that matches the search term.
* The search is done on the code, title and tutor field of the course table.
*
* @param string $search_term The string that the user submitted, what we are looking for
* @param array $limit
* @param bool $justVisible search only on visible courses in the catalogue
*
* @return array an array containing a list of all the courses matching the the search term
*/
public static function search_courses($search_term, $limit, $justVisible = false)
{
$courseTable = Database::get_main_table(TABLE_MAIN_COURSE);
$limitFilter = self::getLimitFilterFromArray($limit);
$avoidCoursesCondition = self::getAvoidCourseCondition();
$visibilityCondition = $justVisible ? CourseManager::getCourseVisibilitySQLCondition('course', true) : '';
$search_term_safe = Database::escape_string($search_term);
$sql_find = "SELECT * FROM $courseTable course
WHERE (
course.code LIKE '%".$search_term_safe."%' OR
course.title LIKE '%".$search_term_safe."%' OR
course.tutor_name LIKE '%".$search_term_safe."%'
)
$avoidCoursesCondition
$visibilityCondition
ORDER BY title, visual_code ASC
$limitFilter
";
if (api_is_multiple_url_enabled()) {
$url_access_id = api_get_current_access_url_id();
if ($url_access_id != -1) {
$tbl_url_rel_course = Database::get_main_table(TABLE_MAIN_ACCESS_URL_REL_COURSE);
$sql_find = "SELECT *
FROM $courseTable 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 (
code LIKE '%".$search_term_safe."%' OR
title LIKE '%".$search_term_safe."%' OR
tutor_name LIKE '%".$search_term_safe."%'
)
$avoidCoursesCondition
$visibilityCondition
ORDER BY title, visual_code ASC
$limitFilter
";
}
}
$result_find = Database::query($sql_find);
$courses = [];
while ($row = Database::fetch_array($result_find)) {
$row['registration_code'] = !empty($row['registration_code']);
$count_users = count(CourseManager::get_user_list_from_course_code($row['code']));
$count_connections_last_month = Tracking::get_course_connections_count(
$row['id'],
0,
api_get_utc_datetime(time() - (30 * 86400))
);
$point_info = CourseManager::get_course_ranking($row['id'], 0);
$courses[] = [
'real_id' => $row['id'],
'point_info' => $point_info,
'code' => $row['code'],
'directory' => $row['directory'],
'visual_code' => $row['visual_code'],
'title' => $row['title'],
'tutor' => $row['tutor_name'],
'subscribe' => $row['subscribe'],
'unsubscribe' => $row['unsubscribe'],
'registration_code' => $row['registration_code'],
'creation_date' => $row['creation_date'],
'visibility' => $row['visibility'],
'count_users' => $count_users,
'count_connections' => $count_connections_last_month,
];
}
return $courses;
}
/**
* List the sessions.
*
* @param string $date (optional) The date of sessions
* @param array $limit
*
* @return array The session list
*/
public static function browseSessions($date = null, $limit = [])
{
$em = Database::getManager();
$urlId = api_get_current_access_url_id();
$sql = "SELECT s.id FROM session s ";
$sql .= "
INNER JOIN access_url_rel_session ars
ON s.id = ars.session_id
";
$sql .= "
WHERE s.nbr_courses > 0
AND ars.access_url_id = $urlId
";
if (!is_null($date)) {
$sql .= "
AND (
('$date' BETWEEN DATE(s.access_start_date) AND DATE(s.access_end_date))
OR (s.access_end_date IS NULL)
OR (
s.access_start_date IS NULL
AND s.access_end_date IS NOT NULL
AND DATE(s.access_end_date) >= '$date'
)
)
";
}
if (!empty($limit)) {
$sql .= "LIMIT {$limit['start']}, {$limit['length']} ";
}
$ids = Database::store_result(Database::query($sql));
$sessions = [];
foreach ($ids as $id) {
$sessions[] = $em->find('ChamiloCoreBundle:Session', $id);
}
return $sessions;
}
/**
* Search sessions by searched term by session name.
*
* @param string $queryTerm Term for search
* @param array $limit Limit info
*
* @return array The sessions
*/
public static function browseSessionsBySearch($queryTerm, array $limit)
{
$sessionsToBrowse = [];
$criteria = Criteria::create()
->where(
Criteria::expr()->contains('name', $queryTerm)
)
->setFirstResult($limit['start'])
->setMaxResults($limit['length']);
$sessions = Database::getManager()
->getRepository('ChamiloCoreBundle:Session')
->matching($criteria);
foreach ($sessions as $session) {
if ($session->getNbrCourses() === 0) {
continue;
}
$sessionsToBrowse[] = $session;
}
return $sessionsToBrowse;
}
/**
* Search sessions by the tags in their courses.
*
* @param string $termTag Term for search in tags
* @param array $limit Limit info
*
* @return array The sessions
*/
public static function browseSessionsByTags($termTag, array $limit)
{
$em = Database::getManager();
$qb = $em->createQueryBuilder();
$sessions = $qb->select('s')
->distinct(true)
->from('ChamiloCoreBundle:Session', 's')
->innerJoin(
'ChamiloCoreBundle:SessionRelCourse',
'src',
Join::WITH,
's.id = src.session'
)
->innerJoin(
'ChamiloCoreBundle:ExtraFieldRelTag',
'frt',
Join::WITH,
'src.course = frt.itemId'
)
->innerJoin(
'ChamiloCoreBundle:Tag',
't',
Join::WITH,
'frt.tagId = t.id'
)
->innerJoin(
'ChamiloCoreBundle:ExtraField',
'f',
Join::WITH,
'frt.fieldId = f.id'
)
->where(
$qb->expr()->like('t.tag', ":tag")
)
->andWhere(
$qb->expr()->eq('f.extraFieldType', ExtraField::COURSE_FIELD_TYPE)
)
->setFirstResult($limit['start'])
->setMaxResults($limit['length'])
->setParameter('tag', "$termTag%")
->getQuery()
->getResult();
$sessionsToBrowse = [];
foreach ($sessions as $session) {
if ($session->getNbrCourses() === 0) {
continue;
}
$sessionsToBrowse[] = $session;
}
return $sessionsToBrowse;
}
}

@ -1,10 +1,6 @@
<?php
/* For licensing terms, see /license.txt */
use Chamilo\CoreBundle\Entity\ExtraField;
use Doctrine\Common\Collections\Criteria;
use Doctrine\ORM\Query\Expr\Join;
/**
* Class Auth
* Auth can be used to instantiate objects or as a library to manage courses
@ -35,31 +31,7 @@ class Auth
{
$TABLECOURS = Database::get_main_table(TABLE_MAIN_COURSE);
$TABLECOURSUSER = Database::get_main_table(TABLE_MAIN_COURSE_USER);
$TABLE_COURSE_FIELD = Database::get_main_table(TABLE_EXTRA_FIELD);
$TABLE_COURSE_FIELD_VALUE = Database::get_main_table(TABLE_EXTRA_FIELD_VALUES);
$extraFieldType = ExtraField::COURSE_FIELD_TYPE;
// get course list auto-register
$sql = "SELECT item_id FROM $TABLE_COURSE_FIELD_VALUE tcfv
INNER JOIN $TABLE_COURSE_FIELD tcf
ON tcfv.field_id = tcf.id
WHERE
tcf.extra_field_type = $extraFieldType AND
tcf.variable = 'special_course' AND
tcfv.value = 1
";
$result = Database::query($sql);
$special_course_list = [];
if (Database::num_rows($result) > 0) {
while ($result_row = Database::fetch_array($result)) {
$special_course_list[] = '"'.$result_row['item_id'].'"';
}
}
$without_special_courses = '';
if (!empty($special_course_list)) {
$without_special_courses = ' AND course.id NOT IN ('.implode(',', $special_course_list).')';
}
$avoidCoursesCondition = CoursesAndSessionsCatalog::getAvoidCourseCondition();
// Secondly we select the courses that are in a category (user_course_cat<>0) and
// sort these according to the sort of the category
@ -80,7 +52,8 @@ class Auth
WHERE
course.id = course_rel_user.c_id AND
course_rel_user.relation_type<>".COURSE_RELATION_TYPE_RRHH." AND
course_rel_user.user_id = '".$user_id."' $without_special_courses
course_rel_user.user_id = '".$user_id."'
$avoidCoursesCondition
ORDER BY course_rel_user.sort ASC";
$result = Database::query($sql);
$courses = [];
@ -104,16 +77,6 @@ class Auth
return $courses;
}
/**
* retrieves the user defined course categories.
*
* @return array containing all the IDs of the user defined courses categories, sorted by the "sort" field
*/
public function get_user_course_categories()
{
return CourseManager::get_user_course_categories(api_get_user_id());
}
/**
* This function get all the courses in the particular user category;.
*
@ -126,32 +89,7 @@ class Auth
// table definitions
$TABLECOURS = Database::get_main_table(TABLE_MAIN_COURSE);
$TABLECOURSUSER = Database::get_main_table(TABLE_MAIN_COURSE_USER);
$TABLE_COURSE_FIELD = Database::get_main_table(TABLE_EXTRA_FIELD);
$TABLE_COURSE_FIELD_VALUE = Database::get_main_table(TABLE_EXTRA_FIELD_VALUES);
$extraFieldType = ExtraField::COURSE_FIELD_TYPE;
// get course list auto-register
$sql = "SELECT item_id
FROM $TABLE_COURSE_FIELD_VALUE tcfv
INNER JOIN $TABLE_COURSE_FIELD tcf
ON tcfv.field_id = tcf.id
WHERE
tcf.extra_field_type = $extraFieldType AND
tcf.variable = 'special_course' AND
tcfv.value = 1 ";
$result = Database::query($sql);
$special_course_list = [];
if (Database::num_rows($result) > 0) {
while ($result_row = Database::fetch_array($result)) {
$special_course_list[] = '"'.$result_row['item_id'].'"';
}
}
$without_special_courses = '';
if (!empty($special_course_list)) {
$without_special_courses = ' AND course.id NOT IN ('.implode(',', $special_course_list).')';
}
$avoidCoursesCondition = CoursesAndSessionsCatalog::getAvoidCourseCondition();
$sql = "SELECT
course.code, course.visual_code, course.subscribe subscr, course.unsubscribe unsubscr,
@ -163,7 +101,7 @@ class Auth
course.id = course_rel_user.c_id AND
course_rel_user.user_id = '".$user_id."' AND
course_rel_user.relation_type <> ".COURSE_RELATION_TYPE_RRHH."
$without_special_courses
$avoidCoursesCondition
ORDER BY course_rel_user.user_course_cat, course_rel_user.sort ASC";
$result = Database::query($sql);
$data = [];
@ -292,7 +230,7 @@ class Auth
public function move_category($direction, $category2move)
{
$userId = api_get_user_id();
$userCategories = $this->get_user_course_categories();
$userCategories = CourseManager::get_user_course_categories(api_get_user_id());
$categories = array_values($userCategories);
$previous = null;
@ -393,114 +331,6 @@ class Auth
return $result;
}
/**
* Search the courses database for a course that matches the search term.
* The search is done on the code, title and tutor field of the course table.
*
* @param string $search_term The string that the user submitted, what we are looking for
* @param array $limit
* @param bool $justVisible search only on visible courses in the catalogue
*
* @return array an array containing a list of all the courses matching the the search term
*/
public function search_courses($search_term, $limit, $justVisible = false)
{
$courseTable = Database::get_main_table(TABLE_MAIN_COURSE);
$extraFieldTable = Database::get_main_table(TABLE_EXTRA_FIELD);
$extraFieldValuesTable = Database::get_main_table(TABLE_EXTRA_FIELD_VALUES);
$limitFilter = CourseCategory::getLimitFilterFromArray($limit);
// get course list auto-register
$sql = "SELECT item_id
FROM $extraFieldValuesTable tcfv
INNER JOIN $extraFieldTable tcf ON tcfv.field_id = tcf.id
WHERE
tcf.variable = 'special_course' AND
tcfv.value = 1 ";
$special_course_result = Database::query($sql);
if (Database::num_rows($special_course_result) > 0) {
$special_course_list = [];
while ($result_row = Database::fetch_array($special_course_result)) {
$special_course_list[] = '"'.$result_row['item_id'].'"';
}
}
$without_special_courses = '';
if (!empty($special_course_list)) {
$without_special_courses = ' AND course.code NOT IN ('.implode(',', $special_course_list).')';
}
$visibilityCondition = $justVisible ? CourseManager::getCourseVisibilitySQLCondition('course', true) : '';
$search_term_safe = Database::escape_string($search_term);
$sql_find = "SELECT * FROM $courseTable
WHERE (
code LIKE '%".$search_term_safe."%' OR
title LIKE '%".$search_term_safe."%' OR
tutor_name LIKE '%".$search_term_safe."%'
)
$without_special_courses
$visibilityCondition
ORDER BY title, visual_code ASC
$limitFilter
";
if (api_is_multiple_url_enabled()) {
$url_access_id = api_get_current_access_url_id();
if ($url_access_id != -1) {
$tbl_url_rel_course = Database::get_main_table(TABLE_MAIN_ACCESS_URL_REL_COURSE);
$sql_find = "SELECT *
FROM $courseTable 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 (
code LIKE '%".$search_term_safe."%' OR
title LIKE '%".$search_term_safe."%' OR
tutor_name LIKE '%".$search_term_safe."%'
)
$without_special_courses
$visibilityCondition
ORDER BY title, visual_code ASC
$limitFilter
";
}
}
$result_find = Database::query($sql_find);
$courses = [];
while ($row = Database::fetch_array($result_find)) {
$row['registration_code'] = !empty($row['registration_code']);
$count_users = count(CourseManager::get_user_list_from_course_code($row['code']));
$count_connections_last_month = Tracking::get_course_connections_count(
$row['id'],
0,
api_get_utc_datetime(time() - (30 * 86400))
);
$point_info = CourseManager::get_course_ranking($row['id'], 0);
$courses[] = [
'real_id' => $row['id'],
'point_info' => $point_info,
'code' => $row['code'],
'directory' => $row['directory'],
'visual_code' => $row['visual_code'],
'title' => $row['title'],
'tutor' => $row['tutor_name'],
'subscribe' => $row['subscribe'],
'unsubscribe' => $row['unsubscribe'],
'registration_code' => $row['registration_code'],
'creation_date' => $row['creation_date'],
'visibility' => $row['visibility'],
'count_users' => $count_users,
'count_connections' => $count_connections_last_month,
];
}
return $courses;
}
/**
* unsubscribe the user from a given course.
*
@ -585,44 +415,6 @@ class Auth
return $result;
}
/**
* Counts the number of courses in a given course category.
*
* @param string $categoryCode Category code
* @param $searchTerm
*
* @return int Count of courses
*/
public function count_courses_in_category($categoryCode, $searchTerm = '')
{
return CourseCategory::countCoursesInCategory($categoryCode, $searchTerm);
}
/**
* get the browsing of the course categories (faculties).
*
* @return array array containing a list with all the categories and subcategories(if needed)
*/
public function browse_course_categories()
{
return CourseCategory::browseCourseCategories();
}
/**
* Display all the courses in the given course category. I could have used a parameter here.
*
* @param string $categoryCode Category code
* @param int $randomValue
* @param array $limit will be used if $random_value is not set.
* This array should contains 'start' and 'length' keys
*
* @return array Courses data
*/
public function browse_courses_in_category($categoryCode, $randomValue = null, $limit = [])
{
return CourseCategory::browseCoursesInCategory($categoryCode, $randomValue, $limit);
}
/**
* Subscribe the user to a given course.
*
@ -692,189 +484,4 @@ class Auth
return ['message' => $message, 'content' => $content];
}
}
/**
* List the sessions.
*
* @param string $date (optional) The date of sessions
* @param array $limit
*
* @return array The session list
*/
public function browseSessions($date = null, $limit = [])
{
$em = Database::getManager();
$qb = $em->createQueryBuilder();
$urlId = api_get_current_access_url_id();
$sql = "SELECT s.id FROM session s ";
$sql .= "
INNER JOIN access_url_rel_session ars
ON s.id = ars.session_id
";
$sql .= "
WHERE s.nbr_courses > 0
AND ars.access_url_id = $urlId
";
if (!is_null($date)) {
$sql .= "
AND (
('$date' BETWEEN DATE(s.access_start_date) AND DATE(s.access_end_date))
OR (s.access_end_date IS NULL)
OR (
s.access_start_date IS NULL
AND s.access_end_date IS NOT NULL
AND DATE(s.access_end_date) >= '$date'
)
)
";
}
if (!empty($limit)) {
$sql .= "LIMIT {$limit['start']}, {$limit['length']} ";
}
$ids = Database::store_result(Database::query($sql));
$sessions = [];
foreach ($ids as $id) {
$sessions[] = $em->find('ChamiloCoreBundle:Session', $id);
}
return $sessions;
}
/**
* Return a COUNT from Session table.
*
* @param string $date in Y-m-d format
*
* @return int
*/
public function countSessions($date = null)
{
$count = 0;
$sessionTable = Database::get_main_table(TABLE_MAIN_SESSION);
$url = Database::get_main_table(TABLE_MAIN_ACCESS_URL_REL_SESSION);
$date = Database::escape_string($date);
$urlId = api_get_current_access_url_id();
$dateFilter = '';
if (!empty($date)) {
$dateFilter = <<<SQL
AND ('$date' BETWEEN s.access_start_date AND s.access_end_date)
OR (s.access_end_date IS NULL)
OR (s.access_start_date IS NULL AND
s.access_end_date IS NOT NULL AND s.access_end_date > '$date')
SQL;
}
$sql = "SELECT COUNT(*)
FROM $sessionTable s
INNER JOIN $url u
ON (s.id = u.session_id)
WHERE u.access_url_id = $urlId $dateFilter";
$res = Database::query($sql);
if ($res !== false && Database::num_rows($res) > 0) {
$count = current(Database::fetch_row($res));
}
return $count;
}
/**
* Search sessions by the tags in their courses.
*
* @param string $termTag Term for search in tags
* @param array $limit Limit info
*
* @return array The sessions
*/
public function browseSessionsByTags($termTag, array $limit)
{
$em = Database::getManager();
$qb = $em->createQueryBuilder();
$sessions = $qb->select('s')
->distinct(true)
->from('ChamiloCoreBundle:Session', 's')
->innerJoin(
'ChamiloCoreBundle:SessionRelCourse',
'src',
Join::WITH,
's.id = src.session'
)
->innerJoin(
'ChamiloCoreBundle:ExtraFieldRelTag',
'frt',
Join::WITH,
'src.course = frt.itemId'
)
->innerJoin(
'ChamiloCoreBundle:Tag',
't',
Join::WITH,
'frt.tagId = t.id'
)
->innerJoin(
'ChamiloCoreBundle:ExtraField',
'f',
Join::WITH,
'frt.fieldId = f.id'
)
->where(
$qb->expr()->like('t.tag', ":tag")
)
->andWhere(
$qb->expr()->eq('f.extraFieldType', ExtraField::COURSE_FIELD_TYPE)
)
->setFirstResult($limit['start'])
->setMaxResults($limit['length'])
->setParameter('tag', "$termTag%")
->getQuery()
->getResult();
$sessionsToBrowse = [];
foreach ($sessions as $session) {
if ($session->getNbrCourses() === 0) {
continue;
}
$sessionsToBrowse[] = $session;
}
return $sessionsToBrowse;
}
/**
* Search sessions by searched term by session name.
*
* @param string $queryTerm Term for search
* @param array $limit Limit info
*
* @return array The sessions
*/
public function browseSessionsBySearch($queryTerm, array $limit)
{
$sessionsToBrowse = [];
$criteria = Criteria::create()
->where(
Criteria::expr()->contains('name', $queryTerm)
)
->setFirstResult($limit['start'])
->setMaxResults($limit['length']);
$sessions = Database::getManager()
->getRepository('ChamiloCoreBundle:Session')
->matching($criteria);
foreach ($sessions as $session) {
if ($session->getNbrCourses() === 0) {
continue;
}
$sessionsToBrowse[] = $session;
}
return $sessionsToBrowse;
}
}

@ -5245,49 +5245,6 @@ class CourseManager
return $visibilityCondition;
}
/**
* Get available le courses count.
*
* @param int $accessUrlId (optional)
*
* @return int Number of courses
*/
public static function countAvailableCourses($accessUrlId = 1)
{
$tableCourse = Database::get_main_table(TABLE_MAIN_COURSE);
$tableCourseRelAccessUrl = Database::get_main_table(TABLE_MAIN_ACCESS_URL_REL_COURSE);
$specialCourseList = self::get_special_course_list();
$withoutSpecialCourses = '';
if (!empty($specialCourseList)) {
$withoutSpecialCourses = ' AND c.id NOT IN ("'.implode('","', $specialCourseList).'")';
}
$visibilityCondition = self::getCourseVisibilitySQLCondition('c', true);
$accessUrlId = (int) $accessUrlId;
if (empty($accessUrlId)) {
$accessUrlId = 1;
}
$sql = "SELECT count(c.id)
FROM $tableCourse c
INNER JOIN $tableCourseRelAccessUrl u
ON (c.id = u.c_id)
WHERE
u.access_url_id = $accessUrlId AND
c.visibility != 0 AND
c.visibility != 4
$withoutSpecialCourses
$visibilityCondition
";
$res = Database::query($sql);
$row = Database::fetch_row($res);
return $row[0];
}
/**
* Return a link to go to the course, validating the visibility of the
* course and the user status.

@ -573,53 +573,6 @@ class CourseCategory
return $categories;
}
/**
* @return array
*/
public static function browseCourseCategories()
{
$url_access_id = 1;
if (api_is_multiple_url_enabled()) {
$url_access_id = api_get_current_access_url_id();
}
$countCourses = CourseManager::countAvailableCourses($url_access_id);
$categories = [];
$categories[0][0] = [
'id' => 0,
'name' => get_lang('DisplayAll'),
'code' => 'ALL',
'parent_id' => null,
'tree_pos' => 0,
'count_courses' => $countCourses,
];
$categoriesFromDatabase = self::getCategories();
foreach ($categoriesFromDatabase as $row) {
$count_courses = self::countCoursesInCategory($row['code']);
$row['count_courses'] = $count_courses;
if (empty($row['parent_id'])) {
$categories[0][$row['tree_pos']] = $row;
} else {
$categories[$row['parent_id']][$row['tree_pos']] = $row;
}
}
$count_courses = self::countCoursesInCategory();
$categories[0][count($categories[0]) + 1] = [
'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;
}
/**
* @param string $category_code
@ -632,13 +585,7 @@ class CourseCategory
$tbl_course = Database::get_main_table(TABLE_MAIN_COURSE);
$categoryCode = Database::escape_string($category_code);
$searchTerm = Database::escape_string($searchTerm);
$specialCourseList = CourseManager::get_special_course_list();
$without_special_courses = '';
if (!empty($specialCourseList)) {
$without_special_courses = ' AND course.id NOT IN ("'.implode('","', $specialCourseList).'")';
}
$avoidCoursesCondition = CoursesAndSessionsCatalog::getAvoidCourseCondition();
$visibilityCondition = CourseManager::getCourseVisibilitySQLCondition(
'course',
true
@ -674,171 +621,14 @@ class CourseCategory
course.visibility != '4'
$categoryFilter
$searchFilter
$without_special_courses
$avoidCoursesCondition
$visibilityCondition
";
return Database::num_rows(Database::query($sql));
}
/**
* @param string $category_code
* @param int $random_value
* @param array $limit will be used if $random_value is not set.
* This array should contains 'start' and 'length' keys
*
* @return array
*/
public static function browseCoursesInCategory($category_code, $random_value = null, $limit = [])
{
$tbl_course = Database::get_main_table(TABLE_MAIN_COURSE);
$specialCourseList = CourseManager::get_special_course_list();
$without_special_courses = '';
if (!empty($specialCourseList)) {
$without_special_courses = ' AND course.id NOT IN ("'.implode('","', $specialCourseList).'")';
}
$visibilityCondition = CourseManager::getCourseVisibilitySQLCondition(
'course',
true
);
if (!empty($random_value)) {
$random_value = intval($random_value);
$sql = "SELECT COUNT(*) FROM $tbl_course";
$result = Database::query($sql);
list($num_records) = Database::fetch_row($result);
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 COUNT(*) FROM $tbl_course 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 ";
$result = Database::query($sql);
list($num_records) = Database::fetch_row($result);
$sql = "SELECT course.id, course.id as real_id
FROM $tbl_course 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
RAND()*$num_records< $random_value
$without_special_courses
$visibilityCondition
ORDER BY RAND()
LIMIT 0, $random_value";
} else {
$sql = "SELECT id, id as real_id FROM $tbl_course course
WHERE
RAND()*$num_records< $random_value
$without_special_courses
$visibilityCondition
ORDER BY RAND()
LIMIT 0, $random_value";
}
$result = Database::query($sql);
$id_in = null;
while (list($id) = Database::fetch_row($result)) {
if ($id_in) {
$id_in .= ",$id";
} else {
$id_in = "$id";
}
}
if ($id_in === null) {
return [];
}
$sql = "SELECT *, id as real_id FROM $tbl_course WHERE id IN($id_in)";
} else {
$limitFilter = self::getLimitFilterFromArray($limit);
$category_code = Database::escape_string($category_code);
if (empty($category_code) || $category_code == "ALL") {
$sql = "SELECT *, id as real_id FROM $tbl_course
WHERE
1=1
$without_special_courses
$visibilityCondition
ORDER BY title $limitFilter ";
} else {
if ($category_code == 'NONE') {
$category_code = '';
}
$sql = "SELECT *, id as real_id FROM $tbl_course
WHERE
category_code='$category_code'
$without_special_courses
$visibilityCondition
ORDER BY title $limitFilter ";
}
// Showing only the courses of the current Chamilo access_url_id
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);
if ($category_code != "ALL") {
$sql = "SELECT *, course.id real_id FROM $tbl_course 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='$category_code'
$without_special_courses
$visibilityCondition
ORDER BY title $limitFilter";
} else {
$sql = "SELECT *, course.id real_id FROM $tbl_course 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
$without_special_courses
$visibilityCondition
ORDER BY title $limitFilter";
}
}
}
$result = Database::query($sql);
$courses = [];
while ($row = Database::fetch_array($result)) {
$row['registration_code'] = !empty($row['registration_code']);
$count_users = CourseManager::get_users_count_in_course($row['code']);
$count_connections_last_month = Tracking::get_course_connections_count(
$row['id'],
0,
api_get_utc_datetime(time() - (30 * 86400))
);
if ($row['tutor_name'] == '0') {
$row['tutor_name'] = get_lang('NoManager');
}
$point_info = CourseManager::get_course_ranking($row['id'], 0);
$courses[] = [
'real_id' => $row['real_id'],
'point_info' => $point_info,
'code' => $row['code'],
'directory' => $row['directory'],
'visual_code' => $row['visual_code'],
'title' => $row['title'],
'tutor' => $row['tutor_name'],
'subscribe' => $row['subscribe'],
'unsubscribe' => $row['unsubscribe'],
'registration_code' => $row['registration_code'],
'creation_date' => $row['creation_date'],
'visibility' => $row['visibility'],
'category' => $row['category_code'],
'count_users' => $count_users,
'count_connections' => $count_connections_last_month,
];
}
return $courses;
}
/**
* create recursively all categories as option of the select passed in parameter.
@ -969,40 +759,6 @@ class CourseCategory
return Database::store_result($result, 'ASSOC');
}
/**
* @return array
*/
public static function getLimitArray()
{
$pageCurrent = isset($_REQUEST['pageCurrent']) ? intval($_GET['pageCurrent']) : 1;
$pageLength = isset($_REQUEST['pageLength']) ? intval($_GET['pageLength']) : CoursesAndSessionsCatalog::PAGE_LENGTH;
return [
'start' => ($pageCurrent - 1) * $pageLength,
'current' => $pageCurrent,
'length' => $pageLength,
];
}
/**
* Return LIMIT to filter SQL query.
*
* @param array $limit
*
* @return string
*/
public static function getLimitFilterFromArray($limit)
{
$limitFilter = '';
if (!empty($limit) && is_array($limit)) {
$limitStart = isset($limit['start']) ? $limit['start'] : 0;
$limitLength = isset($limit['length']) ? $limit['length'] : 12;
$limitFilter = 'LIMIT '.$limitStart.', '.$limitLength;
}
return $limitFilter;
}
/**
* Get Pagination HTML div.
*

@ -4518,6 +4518,42 @@ class SessionManager
return $row[0];
}
/**
* Return a COUNT from Session table.
*
* @param string $date in Y-m-d format
*
* @return int
*/
public static function countSessionsByEndDate($date = null)
{
$count = 0;
$sessionTable = Database::get_main_table(TABLE_MAIN_SESSION);
$url = Database::get_main_table(TABLE_MAIN_ACCESS_URL_REL_SESSION);
$date = Database::escape_string($date);
$urlId = api_get_current_access_url_id();
$dateFilter = '';
if (!empty($date)) {
$dateFilter = <<<SQL
AND ('$date' BETWEEN s.access_start_date AND s.access_end_date)
OR (s.access_end_date IS NULL)
OR (s.access_start_date IS NULL AND
s.access_end_date IS NOT NULL AND s.access_end_date > '$date')
SQL;
}
$sql = "SELECT COUNT(*)
FROM $sessionTable s
INNER JOIN $url u
ON (s.id = u.session_id)
WHERE u.access_url_id = $urlId $dateFilter";
$res = Database::query($sql);
if ($res !== false && Database::num_rows($res) > 0) {
$count = current(Database::fetch_row($res));
}
return $count;
}
/**
* Protect a session to be edited.
*

@ -164,32 +164,6 @@ class Statistics
return $obj->number;
}
/**
* Count sessions.
*
* @return int Number of sessions counted
*/
public static function countSessions()
{
$session_table = Database::get_main_table(TABLE_MAIN_SESSION);
$access_url_rel_session_table = Database::get_main_table(TABLE_MAIN_ACCESS_URL_REL_SESSION);
if (api_is_multiple_url_enabled()) {
$urlId = api_get_current_access_url_id();
$sql = "SELECT COUNT(id) AS number
FROM $session_table as s, $access_url_rel_session_table as u
WHERE
u.session_id = s.id AND
access_url_id = '".$urlId."'";
} else {
$sql = "SELECT COUNT(id) AS number
FROM $session_table";
}
$res = Database::query($sql);
$obj = Database::fetch_object($res);
return $obj->number;
}
/**
* Count activities from track_e_default_table.
*

@ -419,8 +419,7 @@ class BuyCoursesPlugin extends Plugin
*/
public function getSessionsForConfiguration()
{
$auth = new Auth();
$sessions = $auth->browseSessions();
$sessions = CoursesAndSessionsCatalog::browseSessions();
$currency = $this->getSelectedCurrency();
$items = [];
foreach ($sessions as $session) {
@ -2383,9 +2382,8 @@ class BuyCoursesPlugin extends Plugin
private function filterSessionList($name = null, $min = 0, $max = 0)
{
if (empty($name) && empty($min) && empty($max)) {
$auth = new Auth();
return $auth->browseSessions();
return CoursesAndSessionsCatalog::browseSessions();
}
$itemTable = Database::get_main_table(self::TABLE_ITEM);

Loading…
Cancel
Save