Browse Source

Adding status column in the session list see BT#3368

Julio Montoya 13 years ago
parent
commit
e2cb70b266
3 changed files with 51 additions and 14 deletions
  1. 5 3
      main/admin/session_list.php
  2. 1 1
      main/inc/ajax/model.ajax.php
  3. 45 10
      main/inc/lib/sessionmanager.lib.php

+ 5 - 3
main/admin/session_list.php

@@ -43,7 +43,8 @@ Display::display_header($tool_name);
 $url            = api_get_path(WEB_AJAX_PATH).'model.ajax.php?a=get_sessions';
 
 //The order is important you need to check the the $column variable in the model.ajax.php file 
-$columns        = array(get_lang('Name'), get_lang('NumberOfCourses'), get_lang('SessionCategoryName'), get_lang('StartDate'), get_lang('EndDate'), get_lang('Coach'),  get_lang('Visibility'), get_lang('Actions'));
+$columns        = array(get_lang('Name'), get_lang('NumberOfCourses'), get_lang('SessionCategoryName'), 
+                        get_lang('StartDate'), get_lang('EndDate'), get_lang('Coach'),  get_lang('Status'), get_lang('Visibility'), get_lang('Actions'));
 
 //Column config
 $column_model   = array(
@@ -52,7 +53,8 @@ $column_model   = array(
                         array('name'=>'category_name',  'index'=>'sc.name',         'width'=>'80',   'align'=>'left', 'search' => 'true'),
                         array('name'=>'date_start',     'index'=>'s.date_start',    'width'=>'40',   'align'=>'left', 'search' => 'true'),
                         array('name'=>'date_end',       'index'=>'s.date_end',      'width'=>'40',   'align'=>'left', 'search' => 'true'),
-                        array('name'=>'coach_name',     'index'=>'coach_name',      'width'=>'80',   'align'=>'left', 'search' => 'false'),                        
+                        array('name'=>'coach_name',     'index'=>'coach_name',      'width'=>'80',   'align'=>'left', 'search' => 'false'),
+                        array('name'=>'status',         'index'=>'session_active',  'width'=>'20',   'align'=>'left', 'search' => 'false'),                        
                         array('name'=>'visibility',     'index'=>'visibility',      'width'=>'40',   'align'=>'left', 'search' => 'false'),                        
                         array('name'=>'actions',        'index'=>'actions',         'width'=>'100',  'align'=>'left','formatter'=>'action_formatter','sortable'=>'false', 'search' => 'false')
                        );            
@@ -67,7 +69,7 @@ $extra_params['rowList'] = array(10, 20 ,30);
 
 //With this function we can add actions to the jgrid (edit, delete, etc)
 $action_links = 'function action_formatter(cellvalue, options, rowObject) {
-                         return \'<a href="resume_session.php?id_session=\'+options.rowId+\'">'.Display::return_icon('edit.png',get_lang('Edit'),'',22).'</a>'.
+                         return \'<a href="session_edit.php?page=resume_session.php&id=\'+options.rowId+\'">'.Display::return_icon('edit.png',get_lang('Edit'),'',22).'</a>'.
                          '&nbsp;<a href="add_users_to_session.php?page=session_list.php&id_session=\'+options.rowId+\'">'.Display::return_icon('user_subscribe_session.png',get_lang('SubscribeUsersToSession'),'',22).'</a>'.
                          '&nbsp;<a href="add_courses_to_session.php?page=session_list.php&id_session=\'+options.rowId+\'">'.Display::return_icon('courses_to_session.png',get_lang('SubscribeCoursesToSession'),'',22).'</a>'.
                          '&nbsp;<a onclick="javascript:if(!confirm('."\'".addslashes(api_htmlentities(get_lang("ConfirmYourChoice"),ENT_QUOTES))."\'".')) return false;"  href="session_list.php?action=copy&idChecked=\'+options.rowId+\'">'.Display::return_icon('copy.png',get_lang('Copy'),'',22).'</a>'.

+ 1 - 1
main/inc/ajax/model.ajax.php

@@ -120,7 +120,7 @@ if ($_REQUEST['oper'] == 'del') {
 $columns = array();
 switch ($action) {    
     case 'get_sessions':
-        $columns = array('name', 'nbr_courses','category_name', 'date_start','date_end', 'coach_name', 'visibility');        
+        $columns = array('name', 'nbr_courses','category_name', 'date_start','date_end', 'coach_name', 'session_active', 'visibility');        
         $result = SessionManager::get_sessions_admin(array('where'=> $where_condition, 'order'=>"$sidx $sord", 'limit'=> "$start , $limit"));        
         break;
     case 'get_gradebooks': 

+ 45 - 10
main/inc/lib/sessionmanager.lib.php

@@ -193,11 +193,12 @@ class SessionManager {
         $num = $recorset['total_rows'];
         return $num;    
     }
+    
     /**
      * Gets the admin session list callback of the admin/session_list.php page
      * @param array order and limit keys
      */
-    function get_sessions_admin($options) {
+    public function get_sessions_admin($options) {
         $tbl_session            = Database::get_main_table(TABLE_MAIN_SESSION);
         $tbl_session_category   = Database::get_main_table(TABLE_MAIN_SESSION_CATEGORY);        
         $tbl_user               = Database::get_main_table(TABLE_MAIN_USER);        
@@ -213,13 +214,34 @@ class SessionManager {
         }
         
         $coach_name = " CONCAT (u.lastname , ' ', u.firstname) as coach_name ";
+        
         if (api_is_western_name_order()) {            
             $coach_name = " CONCAT (u.firstname, ' ', u.lastname) as coach_name ";
         }
-        $query = "SELECT s.name, nbr_courses, s.date_start, s.date_end, $coach_name , sc.name as category_name, s.visibility, u.user_id, s.id   ".
-            " FROM $tbl_session s ".
-                " LEFT JOIN  $tbl_session_category sc ON s.session_category_id = sc.id ".
-                " INNER JOIN $tbl_user u ON s.id_coach = u.user_id ".
+        
+        $start_filter  = $year."-".$month."-".$day." 00:00:00";
+        $start_filter  = api_get_utc_datetime($start_filter);
+        $end_filter    = $year."-".$month."-".$day." 23:59:59";
+        $end_filter    = api_get_utc_datetime($end_filter);
+        
+        $today = api_get_utc_datetime();
+        $today = api_strtotime($today);
+        
+        $today = date('Y-m-d', $today);
+        
+        $select = "SELECT 
+                IF ( 
+                    (s.date_start <= '$today' AND '$today' < s.date_end) OR 
+                    (s.date_start  = '0000-00-00' AND s.date_end  = '0000-00-00' ) OR
+                    (s.date_start <= '$today' AND '0000-00-00' = s.date_end) OR
+                    ('$today' < s.date_end AND '0000-00-00' = s.date_start)
+                , 1, 0) 
+                as session_active, 
+                s.name, nbr_courses, s.date_start, s.date_end, $coach_name, sc.name as category_name, s.visibility, u.user_id, s.id";
+                   
+        $query = "$select FROM $tbl_session s 
+                LEFT JOIN  $tbl_session_category sc ON s.session_category_id = sc.id 
+                INNER JOIN $tbl_user u ON s.id_coach = u.user_id ".
              $where;
              
         if ($_configuration['multiple_access_urls']) {
@@ -227,7 +249,7 @@ class SessionManager {
             $access_url_id = api_get_current_access_url_id();
             if ($access_url_id != -1) {
                 $where.= " AND ar.access_url_id = $access_url_id ";
-                $query = "SELECT s.id, s.name, s.nbr_courses, s.date_start, s.date_end, u.firstname, u.lastname , sc.name as category_name , s.visibility, u.user_id
+                $query = "$select
                  FROM $tbl_session s
                     LEFT JOIN  $tbl_session_category sc ON s.session_category_id = sc.id
                     INNER JOIN $tbl_user u ON s.id_coach = u.user_id
@@ -236,22 +258,35 @@ class SessionManager {
             }
         }         
         $query .= "ORDER BY ".$options['order']." LIMIT ".$options['limit'];              
-       
-        $result     = Database::query($query);
+        //echo $query;
+        $result = Database::query($query);
         $formatted_sessions = array();
         if (Database::num_rows($result)) {
             $sessions   = Database::store_result($result);
             foreach ($sessions as $session) {
                 $session['name'] = Display::url($session['name'], "resume_session.php?id_session=".$session['id']);
                 
-                $session['coach_name'] = Display::url($session['coach_name'], "user_information.php?user_id=".$session['user_id']);  
+                $session['coach_name'] = Display::url($session['coach_name'], "user_information.php?user_id=".$session['user_id']);
+                
+                if ($session['date_start'] == '0000-00-00' && $session['date_end'] == '0000-00-00') {
+                //    $session['session_active'] = 1;
+                }
+                
+                if ($session['session_active'] == 1) {
+                    $session['session_active'] = Display::return_icon('accept.png', get_lang('Active'), array(), 22);
+                } else {
+                    $session['session_active'] = Display::return_icon('error.png', get_lang('Inactive'), array(), 22);
+                }
+                     
            
                 if ($session['date_start'] == '0000-00-00') {
                     $session['date_start'] = '';
                 }
                 if ($session['date_end'] == '0000-00-00') {
                     $session['date_end'] = '';
-                }                
+                }
+                
+                     
                 switch ($session['visibility']) {
                     case SESSION_VISIBLE_READ_ONLY: //1
                         $session['visibility'] =  get_lang('ReadOnly');