From d566f172b4d8955b7cfdcdbb1eaac48fb3ab6198 Mon Sep 17 00:00:00 2001 From: Julio Montoya Date: Thu, 30 Aug 2012 16:03:07 +0200 Subject: [PATCH] Some session fixes --- main/admin/user_information.php | 66 +++++++++-------------------- main/inc/lib/course.lib.php | 3 +- main/inc/lib/sessionmanager.lib.php | 17 +++++++- main/inc/lib/table_sort.class.php | 2 +- main/inc/lib/usermanager.lib.php | 23 ++++++---- main/inc/lib/userportal.lib.php | 1 + main/mySpace/user_add.php | 5 ++- 7 files changed, 55 insertions(+), 62 deletions(-) diff --git a/main/admin/user_information.php b/main/admin/user_information.php index 86599ce560..69b333cd1f 100644 --- a/main/admin/user_information.php +++ b/main/admin/user_information.php @@ -19,7 +19,7 @@ if (!isset($_GET['user_id'])) { api_not_allowed(); } $user = api_get_user_info($_GET['user_id']); -$tool_name = api_get_person_name($user['firstName'], $user['lastName']).(empty($user['official_code'])?'':' ('.$user['official_code'].')'); +$tool_name = $user['complete_name'].(empty($user['official_code'])?'':' ('.$user['official_code'].')'); Display::display_header($tool_name); $table_course_user = Database :: get_main_table(TABLE_MAIN_COURSE_USER); @@ -69,9 +69,6 @@ echo '

'.Display :: encrypted_mailto_link($user['mail'], $user['mail']).'

' echo Display::page_subheader(get_lang('SessionList')); -$main_user_table = Database :: get_main_table(TABLE_MAIN_USER); -$main_course_table = Database :: get_main_table(TABLE_MAIN_COURSE); -$main_course_user_table = Database :: get_main_table(TABLE_MAIN_COURSE_USER); $tbl_session_course = Database :: get_main_table(TABLE_MAIN_SESSION_COURSE); $tbl_session_course_user = Database :: get_main_table(TABLE_MAIN_SESSION_COURSE_USER); $tbl_session = Database :: get_main_table(TABLE_MAIN_SESSION); @@ -80,64 +77,39 @@ $tbl_user = Database :: get_main_table(TABLE_MAIN_USER); $user_id = $user['user_id']; -$result = Database::query("SELECT DISTINCT id, name, date_start, date_end ". - " FROM session_rel_user, session ". - " WHERE id_session=id AND id_user=$user_id ". - " AND (date_start <= NOW() AND date_end >= NOW() OR date_start='0000-00-00') ". - " ORDER BY date_start, date_end, name"); - -$sessions = Database::store_result($result); +$sessions = SessionManager::get_sessions_by_user($user_id); $personal_course_list = array(); -if (count($sessions)>0) { +if (count($sessions) > 0) { $header[] = array (get_lang('Code'), true); $header[] = array (get_lang('Title'), true); $header[] = array (get_lang('Status'), true); $header[] = array ('', false); - foreach ($sessions as $enreg) { - + foreach ($sessions as $session_item) { + $data = array (); $personal_course_list = array(); - - $id_session = $enreg['id']; - $personal_course_list_sql = "SELECT distinct course.code k, course.directory d, course.visual_code c, course.db_name db, course.title i, ".(api_is_western_name_order() ? "CONCAT(user.firstname,' ',user.lastname)" : "CONCAT(user.lastname,' ',user.firstname)")." t, email, " . - "course.course_language l, 1 sort, category_code user_course_cat, date_start, date_end, session.id as id_session, session.name as session_name, IF((session_course_user.id_user = 3 AND session_course_user.status=2),'2', '5') ". - " FROM $tbl_session_course_user as session_course_user INNER JOIN $tbl_course AS course ". - " ON course.code = session_course_user.course_code AND session_course_user.id_session = $id_session ". - " INNER JOIN $tbl_session as session ON session_course_user.id_session = session.id ". - " INNER JOIN $tbl_session_course as session_course ". - " LEFT JOIN $tbl_user as user ON user.user_id = session_course_user.id_user AND session_course_user.status = 2 ". - " WHERE session_course_user.id_user = $user_id ORDER BY i"; - $course_list_sql_result = Database::query($personal_course_list_sql); - - while ($result_row = Database::fetch_array($course_list_sql_result)) { - $key = $result_row['id_session'].' - '.$result_row['k']; - $result_row['s'] = $result_row['14']; - - if (!isset($personal_course_list[$key])) { - $personal_course_list[$key] = $result_row; - } - } - foreach ($personal_course_list as $my_course) { + $id_session = $session_item['session_id']; + + foreach ($session_item['courses'] as $my_course) { + $course_info = api_get_course_info($my_course['code']); $row = array (); - $row[] = $my_course['k']; - $row[] = $my_course['i']; - $row[] = $my_course['s'] == STUDENT ? get_lang('Student') : get_lang('Teacher'); + $row[] = $my_course['code']; + $row[] = $course_info['title']; + $row[] = $my_course['status'] == STUDENT ? get_lang('Student') : get_lang('Teacher'); - $tools = ''.Display::return_icon('synthese_view.gif', get_lang('Overview')).''. - ''.Display::return_icon('course_home.gif', get_lang('CourseHomepage')).''; - - if( $my_course->status == STUDENT ){ - $tools .= ''.Display::return_icon('delete.gif', get_lang('Delete')).''; + $tools = ''.Display::return_icon('synthese_view.gif', get_lang('Overview')).''. + ''.Display::return_icon('course_home.gif', get_lang('CourseHomepage')).''; + if ($my_course['status'] == STUDENT) { + $tools .= ''.Display::return_icon('delete.png', get_lang('Delete')).''; } $row[] = $tools; $data[] = $row; } - echo Display::tag('h4',$enreg['name']); - Display :: display_sortable_table($header, $data, array (), array (), array ('user_id' => intval($_GET['user_id']))); - + echo Display::page_subheader($session_item['session_name']); + Display :: display_sortable_table($header, $data, array (), array(), array ('user_id' => intval($_GET['user_id']))); } } else { echo '

'.get_lang('NoSessionsForThisUser').'

'; @@ -167,7 +139,7 @@ if (Database::num_rows($res) > 0) { ''.Display::return_icon('course_home.gif', get_lang('CourseHomepage')).'' . ''.Display::return_icon('edit.gif', get_lang('Edit')).''; if ( $course->status == STUDENT ) { - $tools .= ''.Display::return_icon('delete.gif', get_lang('Delete')).''; + $tools .= ''.Display::return_icon('delete.png', get_lang('Delete')).''; } $row[] = $tools; diff --git a/main/inc/lib/course.lib.php b/main/inc/lib/course.lib.php index 71a9172498..54fa570d25 100644 --- a/main/inc/lib/course.lib.php +++ b/main/inc/lib/course.lib.php @@ -2950,8 +2950,7 @@ class CourseManager { } // Step 2: We display the course without a user category. - $html .= self :: display_courses_in_category(0, $load_dirs); - + $html .= self :: display_courses_in_category(0, $load_dirs); return $html; } diff --git a/main/inc/lib/sessionmanager.lib.php b/main/inc/lib/sessionmanager.lib.php index 1bd7028e9f..49335a938b 100644 --- a/main/inc/lib/sessionmanager.lib.php +++ b/main/inc/lib/sessionmanager.lib.php @@ -1511,7 +1511,7 @@ class SessionManager { /** * Get users by session - * @param int sesssion id + * @param int session id * @param int filter by status * @return array a list with an user list */ @@ -1790,4 +1790,19 @@ class SessionManager { $result = Database::query($sql); return Database::store_result($result); } + + static function get_sessions_by_user($user_id) { + $session_categories = UserManager::get_sessions_by_category($user_id); + $session_array = array(); + if (!empty($session_categories)) { + foreach ($session_categories as $category) { + if (isset($category['sessions'])) { + foreach ($category['sessions'] as $session) { + $session_array[] = $session; + } + } + } + } + return $session_array; + } } \ No newline at end of file diff --git a/main/inc/lib/table_sort.class.php b/main/inc/lib/table_sort.class.php index b0f38c7d7d..59f8be966e 100644 --- a/main/inc/lib/table_sort.class.php +++ b/main/inc/lib/table_sort.class.php @@ -26,7 +26,7 @@ class TableSort { * @return array The sorted dataset * @author bart.mollet@hogent.be */ - public function sort_table($data, $column = 0, $direction = SORT_ASC, $type = SORT_REGULAR) { + public static function sort_table($data, $column = 0, $direction = SORT_ASC, $type = SORT_REGULAR) { if (!is_array($data) || empty($data)) { return array(); } diff --git a/main/inc/lib/usermanager.lib.php b/main/inc/lib/usermanager.lib.php index a1d5ac3884..69d80f2d23 100644 --- a/main/inc/lib/usermanager.lib.php +++ b/main/inc/lib/usermanager.lib.php @@ -1937,16 +1937,21 @@ class UserManager { $categories = array(); // Get the list of sessions per user - + $now = api_get_utc_datetime(); + $condition_date_end = ""; if ($is_time_over) { - $condition_date_end = " AND (session.date_end < CURDATE() AND session.date_end != '0000-00-00') "; + $condition_date_end = " AND (session.date_end < '$now' AND session.date_end != '0000-00-00') "; } else { - $condition_date_end = " AND (session.date_end >= CURDATE() OR session.date_end = '0000-00-00') "; + $condition_date_end = " AND (session.date_end >= '$now' OR session.date_end = '0000-00-00') "; } //ORDER BY session_category_id, date_start, date_end - $sql = "SELECT DISTINCT session.id, session.name, session.date_start, session.date_end, session_category_id, + $sql = "SELECT DISTINCT session.id, + session.name, + session.date_start, + session.date_end, + session_category_id, session_category.name as session_category_name, session_category.date_start session_category_date_start, session_category.date_end session_category_date_end, @@ -2133,14 +2138,13 @@ class UserManager { $where_access_url=" AND access_url_id = $access_url_id AND url_rel_session.session_id = $session_id "; } } - - // variable initialisation - $personal_course_list_sql = ''; + $personal_course_list = array(); $courses = array(); // this query is very similar to the above query, but it will check the session_rel_course_user table if there are courses registered to our user or not - $personal_course_list_sql = "SELECT DISTINCT scu.course_code as code FROM $tbl_session_course_user as scu $join_access_url + $personal_course_list_sql = "SELECT DISTINCT scu.course_code as code + FROM $tbl_session_course_user as scu $join_access_url WHERE scu.id_user = $user_id AND scu.id_session = $session_id $where_access_url ORDER BY code"; @@ -2157,7 +2161,8 @@ class UserManager { } if (api_is_allowed_to_create_course()) { - $personal_course_list_sql = "SELECT DISTINCT scu.course_code as code FROM $tbl_session_course_user as scu, $tbl_session as s $join_access_url + $personal_course_list_sql = "SELECT DISTINCT scu.course_code as code + FROM $tbl_session_course_user as scu, $tbl_session as s $join_access_url WHERE s.id = $session_id AND scu.id_session = s.id AND ((scu.id_user=$user_id AND scu.status=2) OR s.id_coach = $user_id) $where_access_url ORDER BY code"; diff --git a/main/inc/lib/userportal.lib.php b/main/inc/lib/userportal.lib.php index 012200afee..bf53638867 100644 --- a/main/inc/lib/userportal.lib.php +++ b/main/inc/lib/userportal.lib.php @@ -915,6 +915,7 @@ class IndexManager { $session_now = time(); $html_courses_session = ''; $count_courses_session = 0; + foreach ($session['courses'] as $course) { $is_coach_course = api_is_coach($session_id, $course['code']); $allowed_time = 0; diff --git a/main/mySpace/user_add.php b/main/mySpace/user_add.php index 899c701287..ee9dec6d05 100644 --- a/main/mySpace/user_add.php +++ b/main/mySpace/user_add.php @@ -172,11 +172,12 @@ $form->addGroup($group, 'max_member_group', null, '', false); $form->addElement('radio', 'active', get_lang('ActiveAccount'), get_lang('Active'), 1); $form->addElement('radio', 'active', '', get_lang('Inactive'), 0); +$now = api_get_utc_datetime(); -//session list +//Session list if (api_is_session_admin()) { $where = 'WHERE session_admin_id='.intval(api_get_user_id()); - $where .= ' AND ( (session.date_start <= CURDATE() AND session.date_end >= CURDATE()) OR session.date_start="0000-00-00" ) '; + $where .= ' AND ( (session.date_start <= "'.$now.'" AND session.date_end >= "'.$now.'") OR session.date_start="0000-00-00" ) '; $tbl_session = Database::get_main_table(TABLE_MAIN_SESSION); $sql="SELECT id,name,nbr_courses,date_start,date_end FROM $tbl_session $where ORDER BY name"; $result = Database::query($sql);