diff --git a/main/admin/course_edit.php b/main/admin/course_edit.php index 468c5477e0..c322e089b0 100755 --- a/main/admin/course_edit.php +++ b/main/admin/course_edit.php @@ -218,10 +218,16 @@ if (!empty($specialCourseFieldInfo)) { $specialCourseAttributes['checked'] = ''; } - $form->addElement('hidden', '_extra_special_course', 0); - $form->addElement('checkbox', 'extra_special_course', array( - null, get_lang('AllUsersAreAutomaticallyRegistered') - ), get_lang('SpecialCourse'), $specialCourseAttributes); + $form->addElement( + 'checkbox', + 'extra_special_course', + array( + null, + get_lang('AllUsersAreAutomaticallyRegistered') + ), + get_lang('SpecialCourse'), + $specialCourseAttributes + ); } //Extra fields diff --git a/main/admin/user_add.php b/main/admin/user_add.php index da04805dcd..319cb4f984 100755 --- a/main/admin/user_add.php +++ b/main/admin/user_add.php @@ -233,7 +233,7 @@ $form->addElement('radio', 'radio_expiration_date', get_lang('ExpirationDate'), $group = array (); $group[] = $form->createElement('radio', 'radio_expiration_date', null, get_lang('On'), 1); $group[] = $form->createElement( - 'DatePicker', + 'DateTimePicker', 'expiration_date', null, array( @@ -263,7 +263,7 @@ $defaults['mail']['send_mail'] = 1; $defaults['password']['password_auto'] = 1; $defaults['active'] = 1; $days = api_get_setting('account_valid_duration'); -$defaults['expiration_date'] = date('Y-m-d', api_strtotime('+'.$days.' day')); +$defaults['expiration_date'] = api_get_local_time('+'.$days.' day'); $defaults['radio_expiration_date'] = 0; $defaults['status'] = STUDENT; diff --git a/main/admin/user_edit.php b/main/admin/user_edit.php index eab15e29c3..1862abdb93 100755 --- a/main/admin/user_edit.php +++ b/main/admin/user_edit.php @@ -269,7 +269,7 @@ if (!$user_data['platform_admin']) { $form->addElement('radio', 'radio_expiration_date', get_lang('ExpirationDate'), get_lang('NeverExpires'), 0); $group = array (); $group[] = $form->createElement('radio', 'radio_expiration_date', null, get_lang('On'), 1); - $group[] = $form->createElement('DatePicker', 'expiration_date', null, array('onchange' => 'javascript: enable_expiration_date();')); + $group[] = $form->createElement('DateTimePicker', 'expiration_date', null, array('onchange' => 'javascript: enable_expiration_date();')); $form->addGroup($group, 'max_member_group', null, '', false); // Active account or inactive account @@ -298,10 +298,10 @@ $expiration_date = $user_data['expiration_date']; if (empty($expiration_date)) { $user_data['radio_expiration_date'] = 0; - $user_data['expiration_date'] = date('Y-m-d'); + $user_data['expiration_date'] = api_get_local_time(); } else { $user_data['radio_expiration_date'] = 1; - $user_data['expiration_date'] = $expiration_date; + $user_data['expiration_date'] = api_get_local_time($expiration_date); } $form->setDefaults($user_data); diff --git a/main/auth/inscription.php b/main/auth/inscription.php index 7be7751fa1..3a3fae7011 100755 --- a/main/auth/inscription.php +++ b/main/auth/inscription.php @@ -482,14 +482,6 @@ if ($form->validate()) { Database::query($sql); } - // if there is a default duration of a valid account then we have to change the expiration_date accordingly - if (api_get_setting('account_valid_duration') != '') { - $sql = "UPDATE ".Database::get_main_table(TABLE_MAIN_USER)." - SET expiration_date='registration_date+1' - WHERE user_id='".$user_id."'"; - Database::query($sql); - } - $course_code_redirect = Session::read('course_redirect'); // Saving user to course if it was set. diff --git a/main/inc/email_editor.php b/main/inc/email_editor.php index 5b7690d29c..03209e371f 100755 --- a/main/inc/email_editor.php +++ b/main/inc/email_editor.php @@ -29,16 +29,16 @@ $action = isset($_GET['action']) ? $_GET['action'] : null; $form = new FormValidator('email_editor', 'post'); $form->addElement('hidden', 'dest'); $form->addElement('text', 'email_address', get_lang('EmailDestination')); -$form->addElement('text', 'email_title', get_lang('EmailTitle'), array('class' => 'span5')); +$form->addElement('text', 'email_title', get_lang('EmailTitle')); $form->freeze('email_address'); -$form->addElement('textarea', 'email_text', get_lang('EmailText'), array('class' => 'span5', 'rows' => '6')); +$form->addElement('textarea', 'email_text', get_lang('EmailText'), array('rows' => '6')); $form->addRule('email_address', get_lang('ThisFieldIsRequired'), 'required'); $form->addRule('email_title', get_lang('ThisFieldIsRequired'), 'required'); $form->addRule('email_text', get_lang('ThisFieldIsRequired'), 'required'); $form->addRule('email_address', get_lang('EmailWrong'), 'email'); -$form->addElement('button', 'submit', get_lang('SendMail')); +$form->addButtonSend(get_lang('SendMail')); switch ($action) { case 'subscribe_me_to_session': diff --git a/main/inc/lib/course.lib.php b/main/inc/lib/course.lib.php index f4728c04d1..51517d7f96 100755 --- a/main/inc/lib/course.lib.php +++ b/main/inc/lib/course.lib.php @@ -1131,7 +1131,7 @@ class CourseManager * * @param int the id of the user * @param array info about the course (comes from course table, see database lib) - * + * @deprecated linked_courses definition doesn't exists * @return true if the user is registered in the real course or linked courses, false otherwise */ public static function is_user_subscribed_in_real_or_linked_course($user_id, $course_code, $session_id = '') @@ -2481,19 +2481,24 @@ class CourseManager } // get course list auto-register - $sql = "SELECT DISTINCT(tcfv.course_code) FROM $tbl_course_field_value tcfv INNER JOIN $tbl_course_field tcf + $sql = "SELECT DISTINCT(tcfv.course_code) + FROM $tbl_course_field_value tcfv + INNER JOIN $tbl_course_field tcf ON tcfv.field_id = tcf.id $join_access_url - WHERE tcf.field_variable = 'special_course' AND tcfv.field_value = 1 $where_access_url"; - $special_course_result = Database::query($sql); - $special_course_list = array(); - - if (Database::num_rows($special_course_result) > 0) { - $special_course_list = array(); - while ($result_row = Database::fetch_array($special_course_result)) { - $special_course_list[] = $result_row['course_code']; + WHERE + tcf.field_variable = 'special_course' AND + tcfv.field_value = 1 $where_access_url"; + + $result = Database::query($sql); + $courseList = array(); + + if (Database::num_rows($result) > 0) { + while ($result_row = Database::fetch_array($result)) { + $courseList[] = $result_row['course_code']; } } - return $special_course_list; + + return $courseList; } /** @@ -3515,10 +3520,17 @@ class CourseManager $with_special_courses = ' course.code IN ("' . implode('","', $special_course_list) . '")'; } $html = null; - + $courseCount = 0; if (!empty($with_special_courses)) { - $sql = "SELECT course.id, course.code, course.subscribe subscr, course.unsubscribe unsubscr, course_rel_user.status status, - course_rel_user.sort sort, course_rel_user.user_course_cat user_course_cat, course_rel_user.user_id + $sql = "SELECT + course.id, + course.code, + course.subscribe subscr, + course.unsubscribe unsubscr, + course_rel_user.status status, + course_rel_user.sort sort, + course_rel_user.user_course_cat user_course_cat, + course_rel_user.user_id FROM $tbl_course course LEFT JOIN $tbl_course_user course_rel_user ON course.code = course_rel_user.course_code AND course_rel_user.user_id = '$user_id' @@ -3526,6 +3538,7 @@ class CourseManager $rs_special_course = Database::query($sql); $number_of_courses = Database::num_rows($rs_special_course); + $key = 0; if ($number_of_courses > 0) { @@ -3534,9 +3547,9 @@ class CourseManager if ($course_info['visibility'] == COURSE_VISIBILITY_HIDDEN) { continue; } + $courseCount++; $params = array(); // Get notifications. - $course_info['id_session'] = null; $course_info['status'] = $course['status']; $show_notification = Display::show_notification($course_info); @@ -3609,7 +3622,10 @@ class CourseManager } } - return $html; + return [ + 'html' => $html, + 'course_count' => $courseCount + ]; } /** @@ -3632,6 +3648,7 @@ class CourseManager $sql = "SELECT id, title FROM $tucc WHERE user_id='" . $user_id . "' ORDER BY sort ASC"; $result = Database::query($sql); $html = null; + $courseCount = 0; while ($row = Database::fetch_array($result)) { // We simply display the title of the category. $params = array( @@ -3640,16 +3657,24 @@ class CourseManager 'title' => $row['title'], 'class' => 'table_user_course_category' ); + + $courseInCategory = self:: display_courses_in_category($row['id'], $load_dirs); $html .= self::course_item_parent( self::course_item_html($params, true), - self:: display_courses_in_category($row['id'], $load_dirs) + $courseInCategory['html'] ); + $courseCount += $courseInCategory['course_count']; } // Step 2: We display the course without a user category. - $html .= self:: display_courses_in_category(0, $load_dirs); - - return $html; + $courseInCategory = self:: display_courses_in_category(0, $load_dirs); + $html .= $courseInCategory['html']; + $courseCount += $courseInCategory['course_count']; + + return [ + 'html' => $html, + 'course_count' => $courseCount + ]; } /** @@ -3710,7 +3735,7 @@ class CourseManager $course_list = array(); $showCustomIcon = api_get_configuration_value('course_images_in_courses_list'); - + $courseCount = 0; // Browse through all courses. while ($course = Database::fetch_array($result)) { $course_info = api_get_course_info($course['code']); @@ -3729,6 +3754,8 @@ class CourseManager $course_list[] = $course_info['real_id']; } + $courseCount++; + // For each course, get if there is any notification icon to show // (something that would have changed since the user's last visit). $show_notification = Display::show_notification($course_info); @@ -3828,7 +3855,10 @@ class CourseManager $html .= self::course_item_html($params, $isSubcontent); } - return $html; + return [ + 'html' => $html, + 'course_count' => $courseCount + ]; } /** diff --git a/main/inc/lib/course_category.lib.php b/main/inc/lib/course_category.lib.php index 7c7f44ca42..5402d98a4b 100755 --- a/main/inc/lib/course_category.lib.php +++ b/main/inc/lib/course_category.lib.php @@ -958,56 +958,57 @@ function getCataloguePagination($pageCurrent, $pageLength, $pageTotal) return $pageDiv; } - - /** - * Return URL to course catalog - * @param int $pageCurrent - * @param int $pageLength - * @param string $categoryCode - * @param int $hiddenLinks - * @param string $action - * @return string - */ - function getCourseCategoryUrl( - $pageCurrent, - $pageLength, - $categoryCode = null, - $hiddenLinks = null, - $action = null - ) { - $action = isset($action) ? Security::remove_XSS($action) : Security::remove_XSS($_REQUEST['action']); - $searchTerm = isset($_REQUEST['search_term']) ? Security::remove_XSS($_REQUEST['search_term']) : null; +/** + * Return URL to course catalog + * @param int $pageCurrent + * @param int $pageLength + * @param string $categoryCode + * @param int $hiddenLinks + * @param string $action + * @return string + */ +function getCourseCategoryUrl( + $pageCurrent, + $pageLength, + $categoryCode = null, + $hiddenLinks = null, + $action = null +) { + $requestAction = isset($_REQUEST['action']) ? Security::remove_XSS($_REQUEST['action']) : null; + $action = isset($action) ? Security::remove_XSS($action) : $requestAction; + $searchTerm = isset($_REQUEST['search_term']) ? Security::remove_XSS($_REQUEST['search_term']) : null; + + $categoryCodeRequest = isset($_REQUEST['category_code']) ? Security::remove_XSS($_REQUEST['category_code']) : null; + $categoryCode = isset($categoryCode) ? Security::remove_XSS($categoryCode) : $categoryCodeRequest; + + $hiddenLinksRequest = isset($_REQUEST['hidden_links']) ? Security::remove_XSS($_REQUEST['hidden_links']) : null; + $hiddenLinks = isset($hiddenLinks) ? Security::remove_XSS($hiddenLinksRequest) : $categoryCodeRequest; // Start URL with params - $pageUrl = api_get_self() . - '?action=' . $action . - '&category_code=' . ( - isset($categoryCode) ? $categoryCode : - Security::remove_XSS($_REQUEST['category_code']) - ) . - '&hidden_links=' . ( - isset($hiddenLinks) ? $hiddenLinks : - Security::remove_XSS($_REQUEST['hidden_links']) - ). - '&pageCurrent=' . $pageCurrent . - '&pageLength=' . $pageLength - ; - switch ($action) { - case 'subscribe' : - // for search - $pageUrl .= - '&search_term=' . $searchTerm . - '&search_course=1' . - '&sec_token=' . $_SESSION['sec_token']; - break; - case 'display_courses' : - // No break - default : - break; + $pageUrl = api_get_self() . + '?action=' . $action . + '&category_code=' .$categoryCode. + '&hidden_links=' .$hiddenLinks. + '&pageCurrent=' . $pageCurrent . + '&pageLength=' . $pageLength + ; - } + switch ($action) { + case 'subscribe' : + // for search + $pageUrl .= + '&search_term=' . $searchTerm . + '&search_course=1' . + '&sec_token=' . $_SESSION['sec_token']; + break; + case 'display_courses' : + // No break + default : + break; + + } - return $pageUrl; + return $pageUrl; } /** @@ -1027,7 +1028,7 @@ function getPageNumberItem($pageNumber, $pageLength, $liAttributes = array(), $c ); // If is current page ('active' class) clear URL - if (isset($liAttributes) && is_array($liAttributes)) { + if (isset($liAttributes) && is_array($liAttributes) && isset($liAttributes['class'])) { if (strpos('active', $liAttributes['class']) !== false) { $url = ''; } diff --git a/main/inc/lib/extra_field_value.lib.php b/main/inc/lib/extra_field_value.lib.php index c29c7f1c6a..793c79f6dc 100755 --- a/main/inc/lib/extra_field_value.lib.php +++ b/main/inc/lib/extra_field_value.lib.php @@ -115,8 +115,10 @@ class ExtraFieldValue extends Model // Parse params. foreach ($params as $key => $value) { if (substr($key, 0, 6) == 'extra_' || substr($key, 0, 7) == '_extra_') { + // An extra field. $field_variable = substr($key, 6); + $extra_field_info = $extra_field->get_handler_field_info_by_field_variable($field_variable); if ($extra_field_info) { @@ -124,8 +126,7 @@ class ExtraFieldValue extends Model $comment = isset($params[$commentVariable]) ? $params[$commentVariable] : null; switch ($extra_field_info['field_type']) { - case ExtraField::FIELD_TYPE_TAG : - + case ExtraField::FIELD_TYPE_TAG: $old = self::getAllValuesByItemAndField( $params[$this->handler_id], $extra_field_info['id'] @@ -242,12 +243,14 @@ class ExtraFieldValue extends Model break; default; $new_params = array( - $this->handler_id => $params[$this->handler_id], - 'field_id' => $extra_field_info['id'], - 'field_value' => $value + $this->handler_id => $params[$this->handler_id], + 'field_id' => $extra_field_info['id'], + 'field_value' => $value ); - if ($this->handler_id !== 'session_id' && $this->handler_id !== 'course_code') { + if ($this->handler_id !== 'session_id' && + $this->handler_id !== 'course_code' + ) { $new_params['comment'] = $comment; } @@ -460,6 +463,7 @@ class ExtraFieldValue extends Model } } else { $params['id'] = $field_values['id']; + return parent::update($params, $show_query); } } diff --git a/main/inc/lib/usermanager.lib.php b/main/inc/lib/usermanager.lib.php index 7bc4cde8f6..26183fe95c 100755 --- a/main/inc/lib/usermanager.lib.php +++ b/main/inc/lib/usermanager.lib.php @@ -55,7 +55,7 @@ class UserManager * @param string Phone number (optional) * @param string Picture URI (optional) * @param string Authentication source (optional, defaults to 'platform', dependind on constant) - * @param string Account expiration date (optional, defaults to '0000-00-00 00:00:00') + * @param string Account expiration date (optional, defaults to null) * @param int Whether the account is enabled or disabled by default * @param int The department of HR in which the user is registered (optional, defaults to 0) * @param array Extra fields @@ -79,7 +79,7 @@ class UserManager $phone = '', $picture_uri = '', $auth_source = PLATFORM_AUTH_SOURCE, - $expiration_date = null, + $expirationDate = null, $active = 1, $hr_dept_id = 0, $extra = null, @@ -163,10 +163,19 @@ class UserManager $currentDate = api_get_utc_datetime(); $now = new DateTime($currentDate); - $manager = Database::getManager(); - if (!empty($expiration_date)) { - $expiration_date = new \DateTime($expiration_date); + if (empty($expirationDate)) { + // Default expiration date + // if there is a default duration of a valid account then + // we have to change the expiration_date accordingly + $expirationDate = new DateTime($currentDate); + if (api_get_setting('account_valid_duration') != '') { + $days = intval(api_get_setting('account_valid_duration')); + $expirationDate->modify('+'.$days.' day'); + } + } else { + $expirationDate = api_get_utc_datetime($expirationDate); + $expirationDate = new \DateTime($expirationDate); } $user = new User(); @@ -183,32 +192,13 @@ class UserManager ->setPhone($phone) ->setLanguage($language) ->setRegistrationDate($now) - ->setExpirationDate($expiration_date) + ->setExpirationDate($expirationDate) ->setHrDeptId($hr_dept_id) ->setActive($active); + $manager = Database::getManager(); $manager->persist($user); $manager->flush(); - - /*$sql = "INSERT INTO $table_user - SET lastname = '".Database::escape_string(trim($lastName))."', - firstname = '".Database::escape_string(trim($firstName))."', - username = '".Database::escape_string(trim($loginName))."', - status = '".Database::escape_string($status)."', - password = '".Database::escape_string($password)."', - email = '".Database::escape_string($email)."', - official_code = '".Database::escape_string($official_code)."', - picture_uri = '".Database::escape_string($picture_uri)."', - creator_id = '".Database::escape_string($creator_id)."', - auth_source = '".Database::escape_string($auth_source)."', - phone = '".Database::escape_string($phone)."', - language = '".Database::escape_string($language)."', - registration_date = '".$current_date."', - expiration_date = '".Database::escape_string($expiration_date)."', - hr_dept_id = '".Database::escape_string($hr_dept_id)."', - active = '".Database::escape_string($active)."'"; - - $result = Database::query($sql);*/ $userId = $user->getId(); if (!empty($userId)) { @@ -251,7 +241,7 @@ class UserManager $plugin = new AppPlugin(); $additionalParameters = array( - 'smsType' => constant($plugin->getSMSPluginName().'::WELCOME_LOGIN_PASSWORD'), + 'smsType' => constant($plugin->getSMSPluginName().':: WELCOME_LOGIN_PASSWORD'), 'userId' => $return, 'mobilePhoneNumber' => $phoneNumber, 'password' => $original_password @@ -677,6 +667,7 @@ class UserManager } if (!empty($expiration_date)) { + $expiration_date = api_get_utc_datetime($expiration_date); $expiration_date = new \DateTime($expiration_date); } @@ -2743,7 +2734,6 @@ class UserManager } if (api_is_allowed_to_create_course()) { - foreach ($sessions as $enreg) { $session_id = $enreg['id']; $session_visibility = api_get_session_visibility($session_id); @@ -2751,6 +2741,7 @@ class UserManager if ($session_visibility == SESSION_INVISIBLE) { continue; } + // This query is horribly slow when more than a few thousand // users and just a few sessions to which they are subscribed $id_session = $enreg['id']; diff --git a/main/inc/lib/userportal.lib.php b/main/inc/lib/userportal.lib.php index 81a4828af7..189326b126 100755 --- a/main/inc/lib/userportal.lib.php +++ b/main/inc/lib/userportal.lib.php @@ -1040,17 +1040,23 @@ class IndexManager $courses_html = ''; $special_courses = ''; + $sessionCount = 0; + $courseCount = 0; // If we're not in the history view... if (!isset($_GET['history'])) { // Display special courses. - $special_courses = CourseManager::display_special_courses($user_id, $this->load_directories_preview); + $specialCourses = CourseManager::display_special_courses($user_id, $this->load_directories_preview); + $special_courses = $specialCourses['html']; // Display courses. - $courses_html .= CourseManager::display_courses($user_id, $this->load_directories_preview); + $courses = CourseManager::display_courses($user_id, $this->load_directories_preview); + $courses_html .= $courses['html']; + $courseCount = $specialCourses['course_count'] + $courses['course_count']; } $sessions_with_category = ''; $sessions_with_no_category = ''; + if (is_array($session_categories)) { foreach ($session_categories as $session_category) { $session_category_id = $session_category['session_category']['id']; @@ -1185,10 +1191,11 @@ class IndexManager $parentInfo = CourseManager::course_item_html_no_icon($params); } - $sessions_with_no_category .= CourseManager::course_item_parent( $parentInfo,null ); + + $sessionCount++; } } } else { @@ -1203,6 +1210,7 @@ class IndexManager if (count($session['courses']) < 1) { continue; } + $date_session_start = $session['date_start']; $date_session_end = $session['date_end']; $days_access_before_beginning = $session['nb_days_access_before_beginning']; @@ -1313,6 +1321,8 @@ class IndexManager } $html_sessions .= $parentInfo . $html_courses_session; + + $sessionCount++; } } } @@ -1354,9 +1364,11 @@ class IndexManager } } - return $sessions_with_category. - $sessions_with_no_category. - $courses_html.$special_courses; + return [ + 'html' => $sessions_with_category.$sessions_with_no_category.$courses_html.$special_courses, + 'session_count' => $sessionCount, + 'course_count' => $courseCount + ]; } /** diff --git a/main/install/database.sql b/main/install/database.sql index fdce332cba..a03c8cd9ed 100644 --- a/main/install/database.sql +++ b/main/install/database.sql @@ -2724,9 +2724,7 @@ CREATE TABLE IF NOT EXISTS message_attachment ( PRIMARY KEY (id) ); - - -INSERT INTO course_field (field_type, field_variable, field_display_text, field_default_value, field_visible, field_changeable) values (10, 'special_course','Special course', '', 1 , 1); +INSERT INTO course_field (field_type, field_variable, field_display_text, field_default_value, field_visible, field_changeable) values (1, 'special_course', 'Special course', '', 1 , 1); -- -- Table structure for table block @@ -4729,5 +4727,5 @@ CREATE TABLE c_attendance_calendar_rel_group ( -- Version LOCK TABLES settings_current WRITE; -UPDATE settings_current SET selected_value = '1.10.0.30' WHERE variable = 'chamilo_database_version'; +UPDATE settings_current SET selected_value = '1.10.0.31' WHERE variable = 'chamilo_database_version'; UNLOCK TABLES; diff --git a/main/install/migrate-db-1.9.0-1.10.0-pre.sql b/main/install/migrate-db-1.9.0-1.10.0-pre.sql index fecb5a25a3..10befbc9c8 100644 --- a/main/install/migrate-db-1.9.0-1.10.0-pre.sql +++ b/main/install/migrate-db-1.9.0-1.10.0-pre.sql @@ -124,5 +124,7 @@ CREATE TABLE IF NOT EXISTS c_student_publication_rel_user (id INT PRIMARY KEY N CREATE TABLE IF NOT EXISTS c_student_publication_comment (id INT PRIMARY KEY NOT NULL AUTO_INCREMENT, work_id INT NOT NULL, c_id INT NOT NULL, comment text, file VARCHAR(255), user_id int NOT NULL, sent_at datetime NOT NULL); CREATE TABLE IF NOT EXISTS c_attendance_calendar_rel_group (id int NOT NULL auto_increment PRIMARY KEY, c_id INT NOT NULL, group_id INT NOT NULL, calendar_id INT NOT NULL); +UPDATE course_field SET field_type = 1 WHERE field_variable = 'special_course'; + -- Do not move this query -UPDATE settings_current SET selected_value = '1.10.0.30' WHERE variable = 'chamilo_database_version'; +UPDATE settings_current SET selected_value = '1.10.0.31' WHERE variable = 'chamilo_database_version'; diff --git a/main/session/index.php b/main/session/index.php index 1d711e1f21..62ce60568c 100755 --- a/main/session/index.php +++ b/main/session/index.php @@ -5,16 +5,12 @@ * @package chamilo.session * @author Julio Montoya Beeznest */ -/** - * Code - */ use \ChamiloSession as Session; $cidReset = true; require_once '../inc/global.inc.php'; - $session_id = isset($_GET['session_id']) ? intval($_GET['session_id']): null; $sessionField = new ExtraFieldValue('session'); @@ -43,23 +39,37 @@ if (isset($_SESSION['objExercise'])) { Session::erase('objExercise'); } +$userId = api_get_user_id(); $session_info = SessionManager::fetch($session_id); $session_list = SessionManager::get_sessions_by_coach(api_get_user_id()); $course_list = SessionManager::get_course_list_by_session_id($session_id); // Getting all sessions where I'm subscribed -$new_session_list = array(); +/*$new_session_list = array(); if (!api_is_anonymous()) { $new_session_list = UserManager::get_personal_session_course_list(api_get_user_id()); } $user_course_list = array(); foreach ($new_session_list as $session_item) { $user_course_list[] = $session_item['code']; +}*/ + + +$user_course_list = array(); +foreach ($course_list as $course) { + $status = SessionManager::get_user_status_in_course_session($userId, $course['code'], $session_id); + if ($status || api_is_platform_admin()) { + $user_course_list[] = $course['code']; + } +} + +if (empty($user_course_list)) { + api_not_allowed(true); } $my_session_list = array(); $final_array = array(); - +/* if (!empty($new_session_list)) { foreach ($new_session_list as $item) { $my_session_id = isset($item['id_session']) ? $item['id_session'] : null; @@ -110,7 +120,8 @@ if (!empty($new_session_list)) { } $my_session_list[] = $my_session_id; } -} +}*/ + $new_course_list = array(); if (!empty($course_list)) { @@ -202,11 +213,11 @@ if (!empty($course_list)) { } // If the requested session does not exist in my list we stop the script -if (!api_is_platform_admin()) { +/*if (!api_is_platform_admin()) { if (!api_is_anonymous() && !in_array($session_id, $my_session_list)) { api_not_allowed(true); } -} +}*/ //If session is not active we stop de script if (!api_is_allowed_to_session_edit()) { diff --git a/user_portal.php b/user_portal.php index a259270796..39e0d40aa2 100755 --- a/user_portal.php +++ b/user_portal.php @@ -30,52 +30,48 @@ require_once api_get_path(LIBRARY_PATH).'userportal.lib.php'; api_block_anonymous_users(); // Only users who are logged in can proceed. -$user_id = api_get_user_id(); +$userId = api_get_user_id(); /* Constants and CONFIGURATION parameters */ $load_dirs = api_get_setting('show_documents_preview'); +$controller = new IndexManager(get_lang('MyCourses')); + +// Main courses and session list +$courseAndSessions = $controller->return_courses_and_sessions($userId); + // Check if a user is enrolled only in one course for going directly to the course after the login. if (api_get_setting('go_to_course_after_login') == 'true') { - // Get the courses list - $personal_course_list = UserManager::get_personal_session_course_list($user_id); - - $my_session_list = array(); - $count_of_courses_no_sessions = 0; - $count_of_courses_with_sessions = 0; - - foreach ($personal_course_list as $course) { - if (!empty($course['id_session'])) { - $my_session_list[$course['id_session']] = true; - $count_of_courses_with_sessions++; - } else { - $count_of_courses_no_sessions++; - } - } - $count_of_sessions = count($my_session_list); + $count_of_sessions = $courseAndSessions['session_count']; + $count_of_courses_no_sessions = $courseAndSessions['course_count']; if ($count_of_sessions == 1 && $count_of_courses_no_sessions == 0) { - $key = array_keys($personal_course_list); - $course_info = $personal_course_list[$key[0]]; - $course_directory = $course_info['course_info']['path']; - $id_session = isset($course_info['id_session']) ? $course_info['id_session'] : 0; - $url = api_get_path(WEB_CODE_PATH).'session/?session_id='.$id_session; - - header('location:'.$url); - exit; + $sessions = SessionManager::get_sessions_by_user($userId); + if (isset($sessions[0])) { + $sessionInfo = $sessions[0]; + if (isset($sessionInfo['session_id'])) { + $url = api_get_path(WEB_CODE_PATH).'session/?session_id='.$sessionInfo['session_id']; + + header('Location:'.$url); + exit; + } + } } if (!isset($_SESSION['coursesAlreadyVisited']) && $count_of_sessions == 0 && $count_of_courses_no_sessions == 1 ) { - $key = array_keys($personal_course_list); - $course_info = $personal_course_list[$key[0]]; - $course_directory = $course_info['course_info']['path']; - $id_session = isset($course_info['id_session']) ? $course_info['id_session'] : 0; - $url = api_get_path(WEB_COURSE_PATH).$course_directory.'/?id_session='.$id_session; - header('location:'.$url); - exit; + $courses = CourseManager::get_courses_list_by_user_id($userId); + + if (!empty($courses) && isset($courses[0]) && isset($courses[0]['code'])) { + $courseInfo = api_get_course_info($courses[0]['code']); + if (!empty($courseInfo)) { + $courseUrl = $courseInfo['course_public_url']; + header('Location:'.$courseUrl); + exit; + } + } } } @@ -123,38 +119,14 @@ if ($load_dirs) { '; } -/* Sniffing system */ - -//store posts to sessions -/* -if (isset($_SESSION['sniff_navigator']) && $_SESSION['sniff_navigator']!="checked") { - $_SESSION['sniff_navigator']=Security::remove_XSS($_POST['sniff_navigator']); - $_SESSION['sniff_screen_size_w']=Security::remove_XSS($_POST['sniff_navigator_screen_size_w']); - $_SESSION['sniff__screen_size_h']=Security::remove_XSS($_POST['sniff_navigator_screen_size_h']); - $_SESSION['sniff_type_mimetypes']=Security::remove_XSS($_POST['sniff_navigator_type_mimetypes']); - $_SESSION['sniff_suffixes_mimetypes']=Security::remove_XSS($_POST['sniff_navigator_suffixes_mimetypes']); - $_SESSION['sniff_list_plugins']=Security::remove_XSS($_POST['sniff_navigator_list_plugins']); - $_SESSION['sniff_check_some_activex']=Security::remove_XSS($_POST['sniff_navigator_check_some_activex']); - $_SESSION['sniff_check_some_plugins']=Security::remove_XSS($_POST['sniff_navigator_check_some_plugins']); - $_SESSION['sniff_java']=Security::remove_XSS($_POST['sniff_navigator_java']); - $_SESSION['sniff_java_sun_ver']=Security::remove_XSS($_POST['sniff_navigator_java_sun_ver']); -} -*/ -/* MAIN CODE */ - -$controller = new IndexManager(get_lang('MyCourses')); - -// Main courses and session list -$courses_and_sessions = $controller->return_courses_and_sessions($user_id); - //Show the chamilo mascot -if (empty($courses_and_sessions) && !isset($_GET['history'])) { +if (empty($courseAndSessions['html']) && !isset($_GET['history'])) { $controller->tpl->assign('welcome_to_course_block', $controller->return_welcome_to_course_block()); } -$controller->tpl->assign('content', $courses_and_sessions); +$controller->tpl->assign('content', $courseAndSessions['html']); if (api_get_setting('allow_browser_sniffer') == 'true') { if ($_SESSION['sniff_navigator']!="checked") {