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']); $courses_controller->courses_categories($action, $_GET['category_code']);
break; break;
case 'display_sessions': case 'display_sessions':
$courses_controller->sessions($action); $date = isset($_POST['date']) ? $_POST['date'] : null;
$courses_controller->sessions($action, $date);
break; break;
} }

@ -311,8 +311,9 @@ class CoursesController { // extends Controller {
/** /**
* It's used for listing sessions, render to sessions view in course catalog * It's used for listing sessions, render to sessions view in course catalog
* @param string $action * @param string $action
* @param date $date (Optional) The date for search
*/ */
public function sessions($action) public function sessions($action, $date = null)
{ {
$data = array(); $data = array();
$browse_course_categories = $this->model->browse_course_categories(); $browse_course_categories = $this->model->browse_course_categories();
@ -321,7 +322,8 @@ class CoursesController { // extends Controller {
$data['browse_course_categories'] = $browse_course_categories; $data['browse_course_categories'] = $browse_course_categories;
$data['action'] = Security::remove_XSS($action); $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; $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'; 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(); $sessionsToBrowse = array();
$userId = api_get_user_id(); $userId = api_get_user_id();
foreach ($sessions as $session) { $sql = "SELECT s.id, s.name, s.nbr_courses, s.nbr_users, s.date_start, s.date_end, u.lastname, u.firstname, u.username "
if ($session['nbr_courses'] > 0) { . "FROM $sessionTable AS s "
$sessionToBrowse = array( . "INNER JOIN $userTable AS u "
'id' => $session['id'], . "ON s.id_coach = u.user_id ";
'name' => $session['name'],
'coach_name' => api_get_person_name($session['firstname'], $session['lastname']), if (!is_null($date)) {
'is_subscribed' => SessionManager::isUserSusbcribedAsStudent($session['id'], $userId) $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); return parseInt(parts[1], 10);
}; };
<?php if ($showSessions) { ?>
$('#date').datepicker({
dateFormat: 'yy-mm-dd'
});
<?php } ?>
}); });
</script> </script>
@ -189,14 +195,20 @@ if ($catalogShowCoursesSessions == CATALOG_COURSES_SESSIONS || $catalogShowCours
<?php if ($showSessions) { ?> <?php if ($showSessions) { ?>
<li class="nav-header"><?php echo get_lang('Sessions'); ?></li> <li class="nav-header"><?php echo get_lang('Sessions'); ?></li>
<li> <li>
<?php if ($action == 'display_sessions') { ?> <?php if ($action == 'display_sessions' && $_SERVER['REQUEST_METHOD'] != 'POST') { ?>
<strong><?php echo get_lang('SessionList'); ?></strong> <strong><?php echo get_lang('SessionList'); ?></strong>
<?php } else { ?> <?php } else { ?>
<a href="<?php echo api_get_self() ?>?action=display_sessions&hidden_links=<?php echo $hidden_links ?>"><?php echo get_lang('SessionList'); ?></a> <a href="<?php echo api_get_self() ?>?action=display_sessions&hidden_links=<?php echo $hidden_links ?>"><?php echo get_lang('SessionList'); ?></a>
<?php } ?> <?php } ?>
</li> </li>
<form> <li class="nav-header"><?php echo get_lang('SearchActiveSessions') ?></li>
<div class="control-group"> <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> <button class="btn" type="submit"><?php echo get_lang('Search'); ?></button>
</div> </div>
</form> </form>
@ -232,7 +244,9 @@ if ($catalogShowCoursesSessions == CATALOG_COURSES_SESSIONS || $catalogShowCours
<?php if ($session['is_subscribed']) { ?> <?php if ($session['is_subscribed']) { ?>
<?php echo display_already_registered_in_session_label(); ?> <?php echo display_already_registered_in_session_label(); ?>
<?php } else { ?> <?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 } ?> <?php } ?>
</div> </div>
</div> </div>

Loading…
Cancel
Save