Add method for search session by name on course catalog - refs BT#10219 #TMI

1.10.x
Angel Fernando Quiroz Campos 10 years ago
parent 863b7c49bd
commit 2ce8bedf32
  1. 10
      main/auth/courses.php
  2. 31
      main/auth/courses_controller.php
  3. 32
      main/inc/lib/auth.lib.php

@ -53,7 +53,8 @@ $actions = array(
'subscribe_user_with_password',
'display_sessions',
'subscribe_to_session',
'search_tag'
'search_tag',
'search_session'
);
$action = CoursesAndSessionsCatalog::is(CATALOG_SESSIONS) ? 'display_sessions' : 'display_random_courses';
@ -309,4 +310,11 @@ switch ($action) {
$courses_controller->sessionsListByCoursesTag($limit);
break;
case 'search_session':
if (!$user_can_view_page) {
api_not_allowed(true);
}
$courses_controller->sessionListBySearch($limit);
break;
}

@ -676,6 +676,37 @@ class CoursesController
$tpl->display($contentTemplate);
}
/**
* Show the Session Catalogue with filtered session by a query term
* @param array $limit
*/
public function sessionListBySearch(array $limit)
{
$q = isset($_REQUEST['q']) ? Security::remove_XSS($_REQUEST['q']) : null;
$hiddenLinks = isset($_GET['hidden_links']) ? intval($_GET['hidden_links']) == 1 : false;
$courseUrl = getCourseCategoryUrl(1, $limit['length'], null, 0, 'subscribe');
$searchDate = isset($_POST['date']) ? $_POST['date'] : date('Y-m-d');
$sessions = $this->model->browseSessionsBySearch($q, $limit);
$sessionsBlocks = $this->getFormatedSessionsBlock($sessions);
$tpl = new Template();
$tpl->assign('show_courses', CoursesAndSessionsCatalog::showCourses());
$tpl->assign('show_sessions', CoursesAndSessionsCatalog::showSessions());
$tpl->assign('show_tutor', (api_get_setting('show_session_coach')==='true' ? true : false));
$tpl->assign('course_url', $courseUrl);
$tpl->assign('already_subscribed_label', $this->getAlreadyRegisteredInSessionLabel());
$tpl->assign('hidden_links', $hiddenLinks);
$tpl->assign('search_token', Security::get_token());
$tpl->assign('search_date', Security::remove_XSS($searchDate));
$tpl->assign('search_tag', Security::remove_XSS($q));
$tpl->assign('sessions', $sessionsBlocks);
$contentTemplate = $tpl->get_template('auth/session_catalog.tpl');
$tpl->display($contentTemplate);
}
/**
* Get the formated data for sessions block to be displayed on Session Catalog page
* @param array $sessions The session list

@ -769,4 +769,36 @@ SQL;
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 = Doctrine\Common\Collections\Criteria::create()
->where(
Doctrine\Common\Collections\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;
}
}

Loading…
Cancel
Save