Add filter by date in sessions catalog - refs #7275

1.9.x
Angel Fernando Quiroz Campos 11 years ago
parent d06fd476b8
commit c0f1af3b1b
  1. 4
      main/auth/courses.php
  2. 6
      main/auth/courses_controller.php
  3. 42
      main/inc/lib/auth.lib.php
  4. 22
      main/template/default/auth/courses_categories.php

@ -220,6 +220,8 @@ switch ($action) {
$courses_controller->courses_categories($action, $_GET['category_code']);
break;
case 'display_sessions':
$courses_controller->sessions($action);
$date = isset($_POST['date']) ? $_POST['date'] : null;
$courses_controller->sessions($action, $date);
break;
}

@ -311,8 +311,9 @@ class CoursesController { // extends Controller {
/**
* It's used for listing sessions, render to sessions view in course catalog
* @param string $action
* @param date $date (Optional) The date for search
*/
public function sessions($action)
public function sessions($action, $date = null)
{
$data = array();
$browse_course_categories = $this->model->browse_course_categories();
@ -321,7 +322,8 @@ class CoursesController { // extends Controller {
$data['browse_course_categories'] = $browse_course_categories;
$data['action'] = Security::remove_XSS($action);
$data['browseSessions'] = $this->model->browseSessions();
$data['date'] = Security::remove_XSS($date);
$data['browseSessions'] = $this->model->browseSessions($date);
$data['catalogShowCoursesSessions'] = 0;

@ -522,24 +522,44 @@ class Auth
}
}
public function browseSessions()
/**
* List the sessions
* @param date $date (optional) The date of sessions
* @return array The session list
*/
public function browseSessions($date = null)
{
require_once api_get_path(LIBRARY_PATH) . 'sessionmanager.lib.php';
$sessions = SessionManager::get_sessions_list();
$userTable = Database::get_main_table(TABLE_MAIN_USER);
$sessionTable = Database::get_main_table(TABLE_MAIN_SESSION);
$sessionsToBrowse = array();
$userId = api_get_user_id();
foreach ($sessions as $session) {
if ($session['nbr_courses'] > 0) {
$sessionToBrowse = array(
'id' => $session['id'],
'name' => $session['name'],
'coach_name' => api_get_person_name($session['firstname'], $session['lastname']),
'is_subscribed' => SessionManager::isUserSusbcribedAsStudent($session['id'], $userId)
);
$sql = "SELECT s.id, s.name, s.nbr_courses, s.nbr_users, s.date_start, s.date_end, u.lastname, u.firstname, u.username "
. "FROM $sessionTable AS s "
. "INNER JOIN $userTable AS u "
. "ON s.id_coach = u.user_id ";
if (!is_null($date)) {
$date = Database::escape_string($date);
$sql .= "WHERE ('$date' BETWEEN s.date_start AND s.date_end) "
. "OR (s.date_start = '0000-00-00' OR s.date_end = '0000-00-00')";
}
$sessionResult = Database::query($sql);
$sessionsToBrowse[] = $sessionToBrowse;
if ($sessionResult != false) {
while ($session = Database::fetch_assoc($sessionResult)) {
if ($session['nbr_courses'] > 0) {
$session['coach_name'] = api_get_person_name($session['firstname'], $session['lastname']);
$session['coach_name'] .= " ({$session['username']})";
$session['is_subscribed'] = SessionManager::isUserSusbcribedAsStudent($session['id'], $userId);
$sessionsToBrowse[] = $session;
}
}
}

@ -83,6 +83,12 @@ if ($catalogShowCoursesSessions == CATALOG_COURSES_SESSIONS || $catalogShowCours
return parseInt(parts[1], 10);
};
<?php if ($showSessions) { ?>
$('#date').datepicker({
dateFormat: 'yy-mm-dd'
});
<?php } ?>
});
</script>
@ -189,14 +195,20 @@ if ($catalogShowCoursesSessions == CATALOG_COURSES_SESSIONS || $catalogShowCours
<?php if ($showSessions) { ?>
<li class="nav-header"><?php echo get_lang('Sessions'); ?></li>
<li>
<?php if ($action == 'display_sessions') { ?>
<?php if ($action == 'display_sessions' && $_SERVER['REQUEST_METHOD'] != 'POST') { ?>
<strong><?php echo get_lang('SessionList'); ?></strong>
<?php } else { ?>
<a href="<?php echo api_get_self() ?>?action=display_sessions&hidden_links=<?php echo $hidden_links ?>"><?php echo get_lang('SessionList'); ?></a>
<?php } ?>
</li>
<form>
<div class="control-group">
<li class="nav-header"><?php echo get_lang('SearchActiveSessions') ?></li>
<form class="form-search" method="post" action="<?php echo api_get_self(); ?>?action=display_sessions">
<div class="input-append">
<?php echo Display::input('date', 'date', $date, array(
'class' => 'span2',
'id' => 'date',
'readonly' => ''
)); ?>
<button class="btn" type="submit"><?php echo get_lang('Search'); ?></button>
</div>
</form>
@ -232,7 +244,9 @@ if ($catalogShowCoursesSessions == CATALOG_COURSES_SESSIONS || $catalogShowCours
<?php if ($session['is_subscribed']) { ?>
<?php echo display_already_registered_in_session_label(); ?>
<?php } else { ?>
<a class="btn btn-primary" href=""><?php echo get_lang('Subscribe'); ?></a>
<?php if ($session['visibility'] == SESSION_AVAILABLE) { ?>
<a class="btn btn-primary" href=""><?php echo get_lang('Subscribe'); ?></a>
<?php } ?>
<?php } ?>
</div>
</div>

Loading…
Cancel
Save