diff --git a/main/inc/lib/userportal.lib.php b/main/inc/lib/userportal.lib.php index e85c9d60eb..b8ee77d96d 100644 --- a/main/inc/lib/userportal.lib.php +++ b/main/inc/lib/userportal.lib.php @@ -6,10 +6,10 @@ use \ChamiloSession as Session; class IndexManager { //An instance of the template engine - public $tpl = false; - public $name = ''; - public $home = ''; - public $default_home = 'home/'; + public $tpl = false; + public $name = ''; + public $home = ''; + public $default_home = 'home/'; public function __construct($title) { @@ -28,14 +28,14 @@ class IndexManager */ function set_login_form($setLoginForm = true) { - global $loginFailed; + global $loginFailed; - $login_form = ''; + $login_form = ''; - if (!($this->user_id) || api_is_anonymous($this->user_id)) { + if (!($this->user_id) || api_is_anonymous($this->user_id)) { - // Only display if the user isn't logged in. - $this->tpl->assign('login_language_form', api_display_language_form(true)); + // Only display if the user isn't logged in. + $this->tpl->assign('login_language_form', api_display_language_form(true)); if ($setLoginForm) { @@ -57,225 +57,225 @@ class IndexManager } $this->tpl->assign('login_options', $login_form); } - } - } + } + } - function return_exercise_block($personal_course_list) + function return_exercise_block($personal_course_list) { - require_once api_get_path(SYS_CODE_PATH).'exercice/exercise.lib.php'; - $exercise_list = array(); - if (!empty($personal_course_list)) { - foreach($personal_course_list as $course_item) { - $course_code = $course_item['c']; - $session_id = $course_item['id_session']; - - $exercises = get_exercises_to_be_taken($course_code, $session_id); - - foreach($exercises as $exercise_item) { - $exercise_item['course_code'] = $course_code; - $exercise_item['session_id'] = $session_id; - $exercise_item['tms'] = api_strtotime($exercise_item['end_time'], 'UTC'); - - $exercise_list[] = $exercise_item; - } - } - if (!empty($exercise_list)) { - $exercise_list = msort($exercise_list, 'tms'); - $my_exercise = $exercise_list[0]; - $url = Display::url($my_exercise['title'], api_get_path(WEB_CODE_PATH).'exercice/overview.php?exerciseId='.$my_exercise['id'].'&cidReq='.$my_exercise['course_code'].'&id_session='.$my_exercise['session_id']); - $this->tpl->assign('exercise_url', $url); - $this->tpl->assign('exercise_end_date', api_convert_and_format_date($my_exercise['end_time'], DATE_FORMAT_SHORT)); - } - } - } - - function return_announcements($show_slide = true) { - // Display System announcements - $announcement = isset($_GET['announcement']) ? $_GET['announcement'] : null; - $announcement = intval($announcement); - - if (!api_is_anonymous() && $this->user_id) { - $visibility = api_is_allowed_to_create_course() ? SystemAnnouncementManager::VISIBLE_TEACHER : SystemAnnouncementManager::VISIBLE_STUDENT; - if ($show_slide) { - $announcements = SystemAnnouncementManager :: display_announcements_slider($visibility, $announcement); - } else { - $announcements = SystemAnnouncementManager :: display_all_announcements($visibility, $announcement); - } - } else { - if ($show_slide) { - $announcements = SystemAnnouncementManager :: display_announcements_slider(SystemAnnouncementManager::VISIBLE_GUEST, $announcement); - } else { - $announcements = SystemAnnouncementManager :: display_all_announcements(SystemAnnouncementManager::VISIBLE_GUEST, $announcement); - } - } - return $announcements; - } - - /** + require_once api_get_path(SYS_CODE_PATH).'exercice/exercise.lib.php'; + $exercise_list = array(); + if (!empty($personal_course_list)) { + foreach($personal_course_list as $course_item) { + $course_code = $course_item['c']; + $session_id = $course_item['id_session']; + + $exercises = get_exercises_to_be_taken($course_code, $session_id); + + foreach($exercises as $exercise_item) { + $exercise_item['course_code'] = $course_code; + $exercise_item['session_id'] = $session_id; + $exercise_item['tms'] = api_strtotime($exercise_item['end_time'], 'UTC'); + + $exercise_list[] = $exercise_item; + } + } + if (!empty($exercise_list)) { + $exercise_list = msort($exercise_list, 'tms'); + $my_exercise = $exercise_list[0]; + $url = Display::url($my_exercise['title'], api_get_path(WEB_CODE_PATH).'exercice/overview.php?exerciseId='.$my_exercise['id'].'&cidReq='.$my_exercise['course_code'].'&id_session='.$my_exercise['session_id']); + $this->tpl->assign('exercise_url', $url); + $this->tpl->assign('exercise_end_date', api_convert_and_format_date($my_exercise['end_time'], DATE_FORMAT_SHORT)); + } + } + } + + function return_announcements($show_slide = true) { + // Display System announcements + $announcement = isset($_GET['announcement']) ? $_GET['announcement'] : null; + $announcement = intval($announcement); + + if (!api_is_anonymous() && $this->user_id) { + $visibility = api_is_allowed_to_create_course() ? SystemAnnouncementManager::VISIBLE_TEACHER : SystemAnnouncementManager::VISIBLE_STUDENT; + if ($show_slide) { + $announcements = SystemAnnouncementManager :: display_announcements_slider($visibility, $announcement); + } else { + $announcements = SystemAnnouncementManager :: display_all_announcements($visibility, $announcement); + } + } else { + if ($show_slide) { + $announcements = SystemAnnouncementManager :: display_announcements_slider(SystemAnnouncementManager::VISIBLE_GUEST, $announcement); + } else { + $announcements = SystemAnnouncementManager :: display_all_announcements(SystemAnnouncementManager::VISIBLE_GUEST, $announcement); + } + } + return $announcements; + } + + /** * Alias for the online_logout() function - */ - function logout() { + */ + function logout() { online_logout($this->user_id, true); - } - - /** - * This function checks if there are courses that are open to the world in the platform course categories (=faculties) - * - * @param string $category - * @return boolean - */ - function category_has_open_courses($category) { - $setting_show_also_closed_courses = api_get_setting('show_closed_courses') == 'true'; - $main_course_table = Database :: get_main_table(TABLE_MAIN_COURSE); + } + + /** + * This function checks if there are courses that are open to the world in the platform course categories (=faculties) + * + * @param string $category + * @return boolean + */ + function category_has_open_courses($category) { + $setting_show_also_closed_courses = api_get_setting('show_closed_courses') == 'true'; + $main_course_table = Database :: get_main_table(TABLE_MAIN_COURSE); $category = Database::escape_string($category); - $sql_query = "SELECT * FROM $main_course_table WHERE category_code='$category'"; - $sql_result = Database::query($sql_query); - while ($course = Database::fetch_array($sql_result)) { - if (!$setting_show_also_closed_courses) { - if ((api_get_user_id() > 0 && $course['visibility'] == COURSE_VISIBILITY_OPEN_PLATFORM) || ($course['visibility'] == COURSE_VISIBILITY_OPEN_WORLD)) { - return true; //at least one open course - } - } else { - if (isset($course['visibility'])) { - return true; // At least one course (it does not matter weither it's open or not because $setting_show_also_closed_courses = true). - } - } - } - return false; - } - - - /** - * Displays the right-hand menu for anonymous users: - * login form, useful links, help section - * Warning: function defines globals - * @version 1.0.1 - * @todo does $_plugins need to be global? - */ - function display_anonymous_right_menu() { - global $loginFailed, $_user; - $display_add_course_link = api_is_allowed_to_create_course() && ($_SESSION['studentview'] != 'studentenview'); - $current_user_id = api_get_user_id(); - - echo self::set_login_form(false); - echo self::return_teacher_link(); - echo self::return_notice(); - } - - function return_teacher_link() { - $html = ''; - if (!empty($this->user_id)) { - // tabs that are deactivated are added here - - $show_menu = false; - $show_create_link = false; - $show_course_link = false; - - if (api_is_platform_admin() || api_is_course_admin() || api_is_allowed_to_create_course()) { - $show_menu = true; - $show_course_link = true; - } else { - if (api_get_setting('allow_students_to_browse_courses') == 'true') { - $show_menu = true; - $show_course_link = true; - } - } - - if ($show_menu && ($show_create_link || $show_course_link )) { - $show_menu = true; - } else { - $show_menu = false; - } - } - - // My Account section - - if ($show_menu) { - $html .= ''; - } - - if (!empty($html)) { - $html = self::show_right_block(get_lang('Courses'), $html, 'teacher_block'); - } - return $html; - } - - /* Includes a created page */ - function return_home_page() + $sql_query = "SELECT * FROM $main_course_table WHERE category_code='$category'"; + $sql_result = Database::query($sql_query); + while ($course = Database::fetch_array($sql_result)) { + if (!$setting_show_also_closed_courses) { + if ((api_get_user_id() > 0 && $course['visibility'] == COURSE_VISIBILITY_OPEN_PLATFORM) || ($course['visibility'] == COURSE_VISIBILITY_OPEN_WORLD)) { + return true; //at least one open course + } + } else { + if (isset($course['visibility'])) { + return true; // At least one course (it does not matter weither it's open or not because $setting_show_also_closed_courses = true). + } + } + } + return false; + } + + + /** + * Displays the right-hand menu for anonymous users: + * login form, useful links, help section + * Warning: function defines globals + * @version 1.0.1 + * @todo does $_plugins need to be global? + */ + function display_anonymous_right_menu() { + global $loginFailed, $_user; + $display_add_course_link = api_is_allowed_to_create_course() && ($_SESSION['studentview'] != 'studentenview'); + $current_user_id = api_get_user_id(); + + echo self::set_login_form(false); + echo self::return_teacher_link(); + echo self::return_notice(); + } + + function return_teacher_link() { + $html = ''; + if (!empty($this->user_id)) { + // tabs that are deactivated are added here + + $show_menu = false; + $show_create_link = false; + $show_course_link = false; + + if (api_is_platform_admin() || api_is_course_admin() || api_is_allowed_to_create_course()) { + $show_menu = true; + $show_course_link = true; + } else { + if (api_get_setting('allow_students_to_browse_courses') == 'true') { + $show_menu = true; + $show_course_link = true; + } + } + + if ($show_menu && ($show_create_link || $show_course_link )) { + $show_menu = true; + } else { + $show_menu = false; + } + } + + // My Account section + + if ($show_menu) { + $html .= ''; + } + + if (!empty($html)) { + $html = self::show_right_block(get_lang('Courses'), $html, 'teacher_block'); + } + return $html; + } + + /* Includes a created page */ + function return_home_page() { $userId = api_get_user_id(); global $_configuration; - // Including the page for the news - $html = ''; + // Including the page for the news + $html = ''; - if (!empty($_GET['include']) && preg_match('/^[a-zA-Z0-9_-]*\.html$/', $_GET['include'])) { - $open = @(string)file_get_contents(api_get_path(SYS_PATH).$this->home.$_GET['include']); - $html = api_to_system_encoding($open, api_detect_encoding(strip_tags($open))); - } else { + if (!empty($_GET['include']) && preg_match('/^[a-zA-Z0-9_-]*\.html$/', $_GET['include'])) { + $open = @(string)file_get_contents(api_get_path(SYS_PATH).$this->home.$_GET['include']); + $html = api_to_system_encoding($open, api_detect_encoding(strip_tags($open))); + } else { // Hiding home top when user not connected. if (isset($_configuration['hide_home_top_when_connected']) && $_configuration['hide_home_top_when_connected'] && !empty($userId)) { return $html; } - if (!empty($_SESSION['user_language_choice'])) { - $user_selected_language = $_SESSION['user_language_choice']; - } elseif (!empty($_SESSION['_user']['language'])) { - $user_selected_language = $_SESSION['_user']['language']; - } else { - $user_selected_language = api_get_setting('platformLanguage'); - } - - if (!file_exists($this->home.'home_news_'.$user_selected_language.'.html')) { - if (file_exists($this->home.'home_top.html')) { - $home_top_temp = file($this->home.'home_top.html'); - } else { - $home_top_temp = file($this->default_home.'home_top.html'); - } - $home_top_temp = implode('', $home_top_temp); - } else { - if (file_exists($this->home.'home_top_'.$user_selected_language.'.html')) { - $home_top_temp = file_get_contents($this->home.'home_top_'.$user_selected_language.'.html'); - } else { - $home_top_temp = file_get_contents($this->home.'home_top.html'); - } - } - if (trim($home_top_temp) == '' && api_is_platform_admin()) { - $home_top_temp = get_lang('PortalHomepageDefaultIntroduction'); - } - $open = str_replace('{rel_path}', api_get_path(REL_PATH), $home_top_temp); - $html = api_to_system_encoding($open, api_detect_encoding(strip_tags($open))); - } - return $html; - } - - function return_notice() { - $sys_path = api_get_path(SYS_PATH); - $user_selected_language = api_get_interface_language(); - - $html = ''; - // Notice - $home_notice = @(string)file_get_contents($sys_path.$this->home.'home_notice_'.$user_selected_language.'.html'); - if (empty($home_notice)) { - $home_notice = @(string)file_get_contents($sys_path.$this->home.'home_notice.html'); - } - - if (!empty($home_notice)) { - $home_notice = api_to_system_encoding($home_notice, api_detect_encoding(strip_tags($home_notice))); + if (!empty($_SESSION['user_language_choice'])) { + $user_selected_language = $_SESSION['user_language_choice']; + } elseif (!empty($_SESSION['_user']['language'])) { + $user_selected_language = $_SESSION['_user']['language']; + } else { + $user_selected_language = api_get_setting('platformLanguage'); + } + + if (!file_exists($this->home.'home_news_'.$user_selected_language.'.html')) { + if (file_exists($this->home.'home_top.html')) { + $home_top_temp = file($this->home.'home_top.html'); + } else { + $home_top_temp = file($this->default_home.'home_top.html'); + } + $home_top_temp = implode('', $home_top_temp); + } else { + if (file_exists($this->home.'home_top_'.$user_selected_language.'.html')) { + $home_top_temp = file_get_contents($this->home.'home_top_'.$user_selected_language.'.html'); + } else { + $home_top_temp = file_get_contents($this->home.'home_top.html'); + } + } + if (trim($home_top_temp) == '' && api_is_platform_admin()) { + $home_top_temp = get_lang('PortalHomepageDefaultIntroduction'); + } + $open = str_replace('{rel_path}', api_get_path(REL_PATH), $home_top_temp); + $html = api_to_system_encoding($open, api_detect_encoding(strip_tags($open))); + } + return $html; + } + + function return_notice() { + $sys_path = api_get_path(SYS_PATH); + $user_selected_language = api_get_interface_language(); + + $html = ''; + // Notice + $home_notice = @(string)file_get_contents($sys_path.$this->home.'home_notice_'.$user_selected_language.'.html'); + if (empty($home_notice)) { + $home_notice = @(string)file_get_contents($sys_path.$this->home.'home_notice.html'); + } + + if (!empty($home_notice)) { + $home_notice = api_to_system_encoding($home_notice, api_detect_encoding(strip_tags($home_notice))); $home_notice = Display::div($home_notice, array('class' => 'homepage_notice')); - $html = self::show_right_block(get_lang('Notice'), $home_notice, 'notice_block'); - } + $html = self::show_right_block(get_lang('Notice'), $home_notice, 'notice_block'); + } return $html; } @@ -284,23 +284,23 @@ class IndexManager $sys_path = api_get_path(SYS_PATH); $platformLanguage = api_get_setting('platformLanguage'); - // Help section. - /* Hide right menu "general" and other parts on anonymous right menu. */ + // Help section. + /* Hide right menu "general" and other parts on anonymous right menu. */ - if (!isset($user_selected_language)) { - $user_selected_language = $platformLanguage; - } + if (!isset($user_selected_language)) { + $user_selected_language = $platformLanguage; + } $html = null; - $home_menu = @(string)file_get_contents($sys_path.$this->home.'home_menu_'.$user_selected_language.'.html'); - if (!empty($home_menu)) { - $home_menu_content = ''; - $html .= self::show_right_block(get_lang('MenuGeneral'), $home_menu_content, 'help_block'); - } - return $html; - } + $home_menu = @(string)file_get_contents($sys_path.$this->home.'home_menu_'.$user_selected_language.'.html'); + if (!empty($home_menu)) { + $home_menu_content = ''; + $html .= self::show_right_block(get_lang('MenuGeneral'), $home_menu_content, 'help_block'); + } + return $html; + } function return_skills_links() { $html = ''; @@ -318,38 +318,38 @@ class IndexManager return $html; } - /** - * Reacts on a failed login: - * Displays an explanation with a link to the registration form. - * - * @version 1.0.1 - */ - function handle_login_failed() { + /** + * Reacts on a failed login: + * Displays an explanation with a link to the registration form. + * + * @version 1.0.1 + */ + function handle_login_failed() { $message = get_lang('InvalidId'); - if (!isset($_GET['error'])) { - if (api_is_self_registration_allowed()) { - $message = get_lang('InvalidForSelfRegistration'); - } - } else { - switch ($_GET['error']) { - case '': - if (api_is_self_registration_allowed()) { - $message = get_lang('InvalidForSelfRegistration'); - } - break; - case 'account_expired': - $message = get_lang('AccountExpired'); - break; - case 'account_inactive': - $message = get_lang('AccountInactive'); - break; - case 'user_password_incorrect': - $message = get_lang('InvalidId'); - break; - case 'access_url_inactive': - $message = get_lang('AccountURLInactive'); - break; + if (!isset($_GET['error'])) { + if (api_is_self_registration_allowed()) { + $message = get_lang('InvalidForSelfRegistration'); + } + } else { + switch ($_GET['error']) { + case '': + if (api_is_self_registration_allowed()) { + $message = get_lang('InvalidForSelfRegistration'); + } + break; + case 'account_expired': + $message = get_lang('AccountExpired'); + break; + case 'account_inactive': + $message = get_lang('AccountInactive'); + break; + case 'user_password_incorrect': + $message = get_lang('InvalidId'); + break; + case 'access_url_inactive': + $message = get_lang('AccountURLInactive'); + break; case 'wrong_captcha': $message = get_lang('TheTextYouEnteredDoesNotMatchThePicture'); break; @@ -359,84 +359,84 @@ class IndexManager case 'unrecognize_sso_origin': //$message = get_lang('SSOError'); break; - } - } - return Display::return_message($message, 'error'); - } - - /** - * Display list of courses in a category. - * (for anonymous users) - * - * @version 1.1 - * @author Patrick Cool , Ghent University - refactoring and code cleaning + } + } + return Display::return_message($message, 'error'); + } + + /** + * Display list of courses in a category. + * (for anonymous users) + * + * @version 1.1 + * @author Patrick Cool , Ghent University - refactoring and code cleaning * @author Julio Montoya , Beeznest template modifs - */ - function return_courses_in_categories() { + */ + function return_courses_in_categories() { $result = ''; - $stok = Security::get_token(); - - // Initialization. - $user_identified = (api_get_user_id() > 0 && !api_is_anonymous()); - $web_course_path = api_get_path(WEB_COURSE_PATH); - $category = Database::escape_string($_GET['category']); - $setting_show_also_closed_courses = api_get_setting('show_closed_courses') == 'true'; - - // Database table definitions. - $main_course_table = Database :: get_main_table(TABLE_MAIN_COURSE); - $main_category_table = Database :: get_main_table(TABLE_MAIN_CATEGORY); - - // Get list of courses in category $category. - $sql_get_course_list = "SELECT * FROM $main_course_table cours - WHERE category_code = '".Database::escape_string($_GET['category'])."' - ORDER BY title, UPPER(visual_code)"; - - // Showing only the courses of the current access_url_id. - global $_configuration; - if ($_configuration['multiple_access_urls']) { - $url_access_id = api_get_current_access_url_id(); - if ($url_access_id != -1) { - $tbl_url_rel_course = Database::get_main_table(TABLE_MAIN_ACCESS_URL_REL_COURSE); - $sql_get_course_list = "SELECT * FROM $main_course_table as course INNER JOIN $tbl_url_rel_course as url_rel_course - ON (url_rel_course.course_code=course.code) - WHERE access_url_id = $url_access_id AND category_code = '".Database::escape_string($_GET['category'])."' ORDER BY title, UPPER(visual_code)"; - } - } - - // Removed: AND cours.visibility='".COURSE_VISIBILITY_OPEN_WORLD."' - $sql_result_courses = Database::query($sql_get_course_list); - - while ($course_result = Database::fetch_array($sql_result_courses)) { - $course_list[] = $course_result; - } - - // $setting_show_also_closed_courses - if ($user_identified) { - if ($setting_show_also_closed_courses) { - $platform_visible_courses = ''; - } else { - $platform_visible_courses = " AND (t3.visibility='".COURSE_VISIBILITY_OPEN_WORLD."' OR t3.visibility='".COURSE_VISIBILITY_OPEN_PLATFORM."' )"; - } - } else { - if ($setting_show_also_closed_courses) { - $platform_visible_courses = ''; - } else { - $platform_visible_courses = " AND (t3.visibility='".COURSE_VISIBILITY_OPEN_WORLD."' )"; - } - } - $sqlGetSubCatList = " - SELECT t1.name, - t1.code, - t1.parent_id, - t1.children_count,COUNT(DISTINCT t3.code) AS nbCourse - FROM $main_category_table t1 - LEFT JOIN $main_category_table t2 ON t1.code=t2.parent_id - LEFT JOIN $main_course_table t3 ON (t3.category_code = t1.code $platform_visible_courses) - WHERE t1.parent_id ". (empty ($category) ? "IS NULL" : "='$category'")." - GROUP BY t1.name,t1.code,t1.parent_id,t1.children_count ORDER BY t1.tree_pos, t1.name"; - - // Showing only the category of courses of the current access_url_id - if (api_is_multiple_url_enabled()) { + $stok = Security::get_token(); + + // Initialization. + $user_identified = (api_get_user_id() > 0 && !api_is_anonymous()); + $web_course_path = api_get_path(WEB_COURSE_PATH); + $category = Database::escape_string($_GET['category']); + $setting_show_also_closed_courses = api_get_setting('show_closed_courses') == 'true'; + + // Database table definitions. + $main_course_table = Database :: get_main_table(TABLE_MAIN_COURSE); + $main_category_table = Database :: get_main_table(TABLE_MAIN_CATEGORY); + + // Get list of courses in category $category. + $sql_get_course_list = "SELECT * FROM $main_course_table cours + WHERE category_code = '".Database::escape_string($_GET['category'])."' + ORDER BY title, UPPER(visual_code)"; + + // Showing only the courses of the current access_url_id. + global $_configuration; + if ($_configuration['multiple_access_urls']) { + $url_access_id = api_get_current_access_url_id(); + if ($url_access_id != -1) { + $tbl_url_rel_course = Database::get_main_table(TABLE_MAIN_ACCESS_URL_REL_COURSE); + $sql_get_course_list = "SELECT * FROM $main_course_table as course INNER JOIN $tbl_url_rel_course as url_rel_course + ON (url_rel_course.course_code=course.code) + WHERE access_url_id = $url_access_id AND category_code = '".Database::escape_string($_GET['category'])."' ORDER BY title, UPPER(visual_code)"; + } + } + + // Removed: AND cours.visibility='".COURSE_VISIBILITY_OPEN_WORLD."' + $sql_result_courses = Database::query($sql_get_course_list); + + while ($course_result = Database::fetch_array($sql_result_courses)) { + $course_list[] = $course_result; + } + + // $setting_show_also_closed_courses + if ($user_identified) { + if ($setting_show_also_closed_courses) { + $platform_visible_courses = ''; + } else { + $platform_visible_courses = " AND (t3.visibility='".COURSE_VISIBILITY_OPEN_WORLD."' OR t3.visibility='".COURSE_VISIBILITY_OPEN_PLATFORM."' )"; + } + } else { + if ($setting_show_also_closed_courses) { + $platform_visible_courses = ''; + } else { + $platform_visible_courses = " AND (t3.visibility='".COURSE_VISIBILITY_OPEN_WORLD."' )"; + } + } + $sqlGetSubCatList = " + SELECT t1.name, + t1.code, + t1.parent_id, + t1.children_count,COUNT(DISTINCT t3.code) AS nbCourse + FROM $main_category_table t1 + LEFT JOIN $main_category_table t2 ON t1.code=t2.parent_id + LEFT JOIN $main_course_table t3 ON (t3.category_code = t1.code $platform_visible_courses) + WHERE t1.parent_id ". (empty ($category) ? "IS NULL" : "='$category'")." + GROUP BY t1.name,t1.code,t1.parent_id,t1.children_count ORDER BY t1.tree_pos, t1.name"; + + // Showing only the category of courses of the current access_url_id + if (api_is_multiple_url_enabled()) { require_once api_get_path(LIBRARY_PATH).'course_category.lib.php'; $courseCategoryCondition = null; if (isMultipleUrlSupport()) { @@ -444,30 +444,30 @@ class IndexManager $courseCategoryCondition = " INNER JOIN $table a ON (t1.id = a.course_category_id)"; } - $url_access_id = api_get_current_access_url_id(); - if ($url_access_id != -1) { - $tbl_url_rel_course = Database::get_main_table(TABLE_MAIN_ACCESS_URL_REL_COURSE); - $sqlGetSubCatList = " - SELECT t1.name, - t1.code, - t1.parent_id, - t1.children_count, - COUNT(DISTINCT t3.code) AS nbCourse - FROM $main_category_table t1 - $courseCategoryCondition - LEFT JOIN $main_category_table t2 ON t1.code = t2.parent_id - LEFT JOIN $main_course_table t3 ON (t3.category_code=t1.code $platform_visible_courses) - INNER JOIN $tbl_url_rel_course as url_rel_course - ON (url_rel_course.course_code=t3.code) - WHERE url_rel_course.access_url_id = $url_access_id AND t1.parent_id ".(empty($category) ? "IS NULL" : "='$category'")." - GROUP BY t1.name,t1.code,t1.parent_id,t1.children_count ORDER BY t1.tree_pos, t1.name"; - } - } - - $resCats = Database::query($sqlGetSubCatList); - $thereIsSubCat = false; - if (Database::num_rows($resCats) > 0) { - $htmlListCat = Display::page_header(get_lang('CatList')); + $url_access_id = api_get_current_access_url_id(); + if ($url_access_id != -1) { + $tbl_url_rel_course = Database::get_main_table(TABLE_MAIN_ACCESS_URL_REL_COURSE); + $sqlGetSubCatList = " + SELECT t1.name, + t1.code, + t1.parent_id, + t1.children_count, + COUNT(DISTINCT t3.code) AS nbCourse + FROM $main_category_table t1 + $courseCategoryCondition + LEFT JOIN $main_category_table t2 ON t1.code = t2.parent_id + LEFT JOIN $main_course_table t3 ON (t3.category_code=t1.code $platform_visible_courses) + INNER JOIN $tbl_url_rel_course as url_rel_course + ON (url_rel_course.course_code=t3.code) + WHERE url_rel_course.access_url_id = $url_access_id AND t1.parent_id ".(empty($category) ? "IS NULL" : "='$category'")." + GROUP BY t1.name,t1.code,t1.parent_id,t1.children_count ORDER BY t1.tree_pos, t1.name"; + } + } + + $resCats = Database::query($sqlGetSubCatList); + $thereIsSubCat = false; + if (Database::num_rows($resCats) > 0) { + $htmlListCat = Display::page_header(get_lang('CatList')); $htmlListCat .= '
    '; $htmlTitre = ''; while ($catLine = Database::fetch_array($resCats)) { @@ -479,19 +479,19 @@ class IndexManager if (api_get_setting('show_number_of_courses') == 'true') { $htmlListCat .= ' ('.$catLine['nbCourse'].' '.get_lang('Courses').')'; } - $htmlListCat .= ""; - $thereIsSubCat = true; + $htmlListCat .= ""; + $thereIsSubCat = true; } elseif ($catLine['children_count'] > 0) { - // The category has children, subcategories. - $htmlListCat .= '
  • '; - $htmlListCat .= ''.$catLine['name'].''; - $htmlListCat .= "
  • "; - $thereIsSubCat = true; + // The category has children, subcategories. + $htmlListCat .= '
  • '; + $htmlListCat .= ''.$catLine['name'].''; + $htmlListCat .= "
  • "; + $thereIsSubCat = true; } elseif (api_get_setting('show_empty_course_categories') == 'true') { /* End changed code to eliminate the (0 courses) after empty categories. */ - $htmlListCat .= '
  • '; + $htmlListCat .= '
  • '; $htmlListCat .= $catLine['name']; - $htmlListCat .= "
  • "; + $htmlListCat .= ""; $thereIsSubCat = true; } // Else don't set thereIsSubCat to true to avoid printing things if not requested. // TODO: deprecate this useless feature - this includes removing system variable @@ -503,49 +503,49 @@ class IndexManager $htmlTitre .= "

    "; } } - $htmlListCat .= "
"; - } - $result .= $htmlTitre; - if ($thereIsSubCat) { + $htmlListCat .= ""; + } + $result .= $htmlTitre; + if ($thereIsSubCat) { $result .= $htmlListCat; - } - while ($categoryName = Database::fetch_array($resCats)) { + } + while ($categoryName = Database::fetch_array($resCats)) { $result .= '

' . $categoryName['name'] . "

\n"; - } - $numrows = Database::num_rows($sql_result_courses); - $courses_list_string = ''; - $courses_shown = 0; - if ($numrows > 0) { - $courses_list_string .= Display::page_header(get_lang('CourseList')); + } + $numrows = Database::num_rows($sql_result_courses); + $courses_list_string = ''; + $courses_shown = 0; + if ($numrows > 0) { + $courses_list_string .= Display::page_header(get_lang('CourseList')); $courses_list_string .= "
    "; - if (api_get_user_id()) { - $courses_of_user = self::get_courses_of_user(api_get_user_id()); - } - foreach ($course_list as $course) { - // $setting_show_also_closed_courses + if (api_get_user_id()) { + $courses_of_user = self::get_courses_of_user(api_get_user_id()); + } + foreach ($course_list as $course) { + // $setting_show_also_closed_courses if ($course['visibility'] == COURSE_VISIBILITY_HIDDEN) { continue; } - if (!$setting_show_also_closed_courses) { - // If we do not show the closed courses - // we only show the courses that are open to the world (to everybody) - // and the courses that are open to the platform (if the current user is a registered user. - if (($user_identified && $course['visibility'] == COURSE_VISIBILITY_OPEN_PLATFORM) || ($course['visibility'] == COURSE_VISIBILITY_OPEN_WORLD)) { - $courses_shown++; - $courses_list_string .= "
  • "; - $courses_list_string .= ''.$course['title'].'
    '; + if (!$setting_show_also_closed_courses) { + // If we do not show the closed courses + // we only show the courses that are open to the world (to everybody) + // and the courses that are open to the platform (if the current user is a registered user. + if (($user_identified && $course['visibility'] == COURSE_VISIBILITY_OPEN_PLATFORM) || ($course['visibility'] == COURSE_VISIBILITY_OPEN_WORLD)) { + $courses_shown++; + $courses_list_string .= "
  • "; + $courses_list_string .= ''.$course['title'].'
    '; $course_details = array(); - if (api_get_setting('display_coursecode_in_courselist') == 'true') { - $course_details[] = $course['visual_code']; - } - if (api_get_setting('display_teacher_in_courselist') == 'true') { - $course_details[] = CourseManager::get_teacher_list_from_course_code_to_string($course['code']); - } - if (api_get_setting('show_different_course_language') == 'true' && $course['course_language'] != api_get_setting('platformLanguage')) { - $course_details[] = $course['course_language']; - } + if (api_get_setting('display_coursecode_in_courselist') == 'true') { + $course_details[] = $course['visual_code']; + } + if (api_get_setting('display_teacher_in_courselist') == 'true') { + $course_details[] = CourseManager::get_teacher_list_from_course_code_to_string($course['code']); + } + if (api_get_setting('show_different_course_language') == 'true' && $course['course_language'] != api_get_setting('platformLanguage')) { + $course_details[] = $course['course_language']; + } $courses_list_string .= implode(' - ', $course_details); - $courses_list_string .= "
  • "; - } - } else { + $courses_list_string .= ""; + } + } else { // We DO show the closed courses. // The course is accessible if (link to the course homepage): // 1. the course is open to the world (doesn't matter if the user is logged in or not): $course['visibility'] == COURSE_VISIBILITY_OPEN_WORLD); @@ -555,8 +555,8 @@ class IndexManager // 5. the user is the platform admin api_is_platform_admin(). // $courses_shown++; - $courses_list_string .= "
  • "; - if ($course['visibility'] == COURSE_VISIBILITY_OPEN_WORLD + $courses_list_string .= "
  • "; + if ($course['visibility'] == COURSE_VISIBILITY_OPEN_WORLD || ($user_identified && $course['visibility'] == COURSE_VISIBILITY_OPEN_PLATFORM) || ($user_identified && key_exists($course['code'], $courses_of_user) && $course['visibility'] != COURSE_VISIBILITY_CLOSED) @@ -566,33 +566,33 @@ class IndexManager } $courses_list_string .= $course['title']; if ($course['visibility'] == COURSE_VISIBILITY_OPEN_WORLD - || ($user_identified && $course['visibility'] == COURSE_VISIBILITY_OPEN_PLATFORM) - || ($user_identified && key_exists($course['code'], $courses_of_user) + || ($user_identified && $course['visibility'] == COURSE_VISIBILITY_OPEN_PLATFORM) + || ($user_identified && key_exists($course['code'], $courses_of_user) && $course['visibility'] != COURSE_VISIBILITY_CLOSED) - || $courses_of_user[$course['code']]['status'] == '1' - || api_is_platform_admin()) { + || $courses_of_user[$course['code']]['status'] == '1' + || api_is_platform_admin()) { $courses_list_string .= '
    '; } $course_details = array(); if (api_get_setting('display_coursecode_in_courselist') == 'true') { $course_details[] = $course['visual_code']; } -// if (api_get_setting('display_coursecode_in_courselist') == 'true' && api_get_setting('display_teacher_in_courselist') == 'true') { -// $courses_list_string .= ' - '; -// } +// if (api_get_setting('display_coursecode_in_courselist') == 'true' && api_get_setting('display_teacher_in_courselist') == 'true') { +// $courses_list_string .= ' - '; +// } if (api_get_setting('display_teacher_in_courselist') == 'true') { if (!empty($course['tutor_name'])) { - $course_details[] = $course['tutor_name']; + $course_details[] = $course['tutor_name']; } - } - if (api_get_setting('show_different_course_language') == 'true' && $course['course_language'] != api_get_setting('platformLanguage')) { - $course_details[] = $course['course_language']; - } + } + if (api_get_setting('show_different_course_language') == 'true' && $course['course_language'] != api_get_setting('platformLanguage')) { + $course_details[] = $course['course_language']; + } $courses_list_string .= implode(' - ', $course_details); - // We display a subscription link if: - // 1. it is allowed to register for the course and if the course is not already in the courselist of the user and if the user is identiefied - // 2. + // We display a subscription link if: + // 1. it is allowed to register for the course and if the course is not already in the courselist of the user and if the user is identiefied + // 2. if ($user_identified && !array_key_exists($course['code'], $courses_of_user)) { if ($course['subscribe'] == '1') { /*$courses_list_string .= '
    '; @@ -607,76 +607,76 @@ class IndexManager } } $courses_list_string .= "
  • "; - } //end else - } // end foreach - $courses_list_string .= "
"; + } //end else + } // end foreach + $courses_list_string .= ""; } if ($courses_shown > 0) { // Only display the list of courses and categories if there was more than // 0 courses visible to the world (we're in the anonymous list here). $result .= $courses_list_string; } - if ($category != '') { - $result .= '

' . Display :: return_icon('back.png', get_lang('BackToHomePage')) . get_lang('BackToHomePage') . '

'; - } + if ($category != '') { + $result .= '

' . Display :: return_icon('back.png', get_lang('BackToHomePage')) . get_lang('BackToHomePage') . '

'; + } return $result; - } - - /** - * retrieves all the courses that the user has already subscribed to - * @author Patrick Cool , Ghent University, Belgium - * @param int $user_id: the id of the user - * @return array an array containing all the information of the courses of the given user - */ - function get_courses_of_user($user_id) { - $table_course = Database::get_main_table(TABLE_MAIN_COURSE); - $table_course_user = Database::get_main_table(TABLE_MAIN_COURSE_USER); - // Secondly we select the courses that are in a category (user_course_cat <> 0) and sort these according to the sort of the category - $user_id = intval($user_id); - $sql_select_courses = "SELECT course.code k, course.visual_code vc, course.subscribe subscr, course.unsubscribe unsubscr, - course.title i, course.tutor_name t, course.db_name db, course.directory dir, course_rel_user.status status, - course_rel_user.sort sort, course_rel_user.user_course_cat user_course_cat - FROM $table_course course, - $table_course_user course_rel_user - WHERE course.code = course_rel_user.course_code - AND course_rel_user.user_id = '".$user_id."' + } + + /** + * retrieves all the courses that the user has already subscribed to + * @author Patrick Cool , Ghent University, Belgium + * @param int $user_id: the id of the user + * @return array an array containing all the information of the courses of the given user + */ + function get_courses_of_user($user_id) { + $table_course = Database::get_main_table(TABLE_MAIN_COURSE); + $table_course_user = Database::get_main_table(TABLE_MAIN_COURSE_USER); + // Secondly we select the courses that are in a category (user_course_cat <> 0) and sort these according to the sort of the category + $user_id = intval($user_id); + $sql_select_courses = "SELECT course.code k, course.visual_code vc, course.subscribe subscr, course.unsubscribe unsubscr, + course.title i, course.tutor_name t, course.db_name db, course.directory dir, course_rel_user.status status, + course_rel_user.sort sort, course_rel_user.user_course_cat user_course_cat + FROM $table_course course, + $table_course_user course_rel_user + WHERE course.code = course_rel_user.course_code + AND course_rel_user.user_id = '".$user_id."' AND course_rel_user.relation_type<>".COURSE_RELATION_TYPE_RRHH." ORDER BY course_rel_user.sort ASC"; - $result = Database::query($sql_select_courses); - $courses = array(); - while ($row = Database::fetch_array($result)) { - // We only need the database name of the course. - $courses[$row['k']] = array('db' => $row['db'], 'code' => $row['k'], 'visual_code' => $row['vc'], 'title' => $row['i'], 'directory' => $row['dir'], 'status' => $row['status'], 'tutor' => $row['t'], 'subscribe' => $row['subscr'], 'unsubscribe' => $row['unsubscr'], 'sort' => $row['sort'], 'user_course_category' => $row['user_course_cat']); - } - return $courses; - } + $result = Database::query($sql_select_courses); + $courses = array(); + while ($row = Database::fetch_array($result)) { + // We only need the database name of the course. + $courses[$row['k']] = array('db' => $row['db'], 'code' => $row['k'], 'visual_code' => $row['vc'], 'title' => $row['i'], 'directory' => $row['dir'], 'status' => $row['status'], 'tutor' => $row['t'], 'subscribe' => $row['subscr'], 'unsubscribe' => $row['unsubscr'], 'sort' => $row['sort'], 'user_course_category' => $row['user_course_cat']); + } + return $courses; + } /** * @todo use the template system */ - function show_right_block($title, $content, $id = null, $params = null) { - if (!empty($id)) { + function show_right_block($title, $content, $id = null, $params = null) { + if (!empty($id)) { $params['id'] = $id; } $params['class'] = 'well sidebar-nav'; $html = null; - if (!empty($title)) { - $html.= '

'.$title.'

'; - } - $html.= $content; + if (!empty($title)) { + $html.= '

'.$title.'

'; + } + $html.= $content; $html = Display::div($html, $params); - return $html; - } - - /** - * Adds a form to let users login - * @version 1.1 - */ - function display_login_form() + return $html; + } + + /** + * Adds a form to let users login + * @version 1.1 + */ + function display_login_form() { - $form = new FormValidator('formLogin', 'POST', null, null, array('class'=>'form-vertical')); - $form->addElement('text', 'login', get_lang('UserName'), array('class' => 'span2 autocapitalize_off', 'autofocus' => 'autofocus')); - $form->addElement('password', 'password', get_lang('Pass'), array('class' => 'span2')); + $form = new FormValidator('formLogin', 'POST', null, null, array('class'=>'form-vertical')); + $form->addElement('text', 'login', get_lang('UserName'), array('class' => 'span2 autocapitalize_off', 'autofocus' => 'autofocus')); + $form->addElement('password', 'password', get_lang('Pass'), array('class' => 'span2')); global $_configuration; // Captcha @@ -716,76 +716,76 @@ class IndexManager } } - $form->addElement('style_submit_button','submitAuth', get_lang('LoginEnter'), array('class' => 'btn')); + $form->addElement('style_submit_button','submitAuth', get_lang('LoginEnter'), array('class' => 'btn')); - $html = $form->return_form(); + $html = $form->return_form(); // The validation is located in the local.inc /*if ($form->validate()) { // Prevent re-use of the same CAPTCHA phrase $captcha_question->destroy(); }*/ - if (api_get_setting('openid_authentication') == 'true') { - include_once 'main/auth/openid/login.php'; - $html .= '
'.openid_form().'
'; - } - return $html; - } - - function return_search_block() { - $html = ''; - if (api_get_setting('search_enabled') == 'true') { - $html .= ''; - $html .= self::show_right_block(get_lang('Search'), $search_content, 'search_block'); - } - return $html; - } - - function return_classes_block() { - $html = ''; - if (api_get_setting('show_groups_to_users') == 'true') { - require_once api_get_path(LIBRARY_PATH).'usergroup.lib.php'; - $usergroup = new Usergroup(); - $usergroup_list = $usergroup->get_usergroup_by_user(api_get_user_id()); - $classes = ''; - if (!empty($usergroup_list)) { - foreach($usergroup_list as $group_id) { - $data = $usergroup->get($group_id); - $data['name'] = Display::url($data['name'], api_get_path(WEB_CODE_PATH).'user/classes.php?id='.$data['id']); - $classes .= Display::tag('li', $data['name']); - } - } - if (api_is_platform_admin()) { - $classes .= Display::tag('li', Display::url(get_lang('AddClasses') ,api_get_path(WEB_CODE_PATH).'admin/usergroups.php?action=add')); - } - if (!empty($classes)) { - $classes = Display::tag('ul', $classes, array('class'=>'nav nav-list')); - $html .= self::show_right_block(get_lang('Classes'), $classes, 'classes_block'); - } - } - return $html; - } - - function return_reservation_block() { - $html = ''; - if (api_get_setting('allow_reservation') == 'true' && api_is_allowed_to_create_course()) { - $booking_content .=''; - $html .= self::show_right_block(get_lang('Booking'), $booking_content, 'reservation_block'); - } - return $html; - } + if (api_get_setting('openid_authentication') == 'true') { + include_once 'main/auth/openid/login.php'; + $html .= '
'.openid_form().'
'; + } + return $html; + } + + function return_search_block() { + $html = ''; + if (api_get_setting('search_enabled') == 'true') { + $html .= ''; + $html .= self::show_right_block(get_lang('Search'), $search_content, 'search_block'); + } + return $html; + } + + function return_classes_block() { + $html = ''; + if (api_get_setting('show_groups_to_users') == 'true') { + require_once api_get_path(LIBRARY_PATH).'usergroup.lib.php'; + $usergroup = new Usergroup(); + $usergroup_list = $usergroup->get_usergroup_by_user(api_get_user_id()); + $classes = ''; + if (!empty($usergroup_list)) { + foreach($usergroup_list as $group_id) { + $data = $usergroup->get($group_id); + $data['name'] = Display::url($data['name'], api_get_path(WEB_CODE_PATH).'user/classes.php?id='.$data['id']); + $classes .= Display::tag('li', $data['name']); + } + } + if (api_is_platform_admin()) { + $classes .= Display::tag('li', Display::url(get_lang('AddClasses') ,api_get_path(WEB_CODE_PATH).'admin/usergroups.php?action=add')); + } + if (!empty($classes)) { + $classes = Display::tag('ul', $classes, array('class'=>'nav nav-list')); + $html .= self::show_right_block(get_lang('Classes'), $classes, 'classes_block'); + } + } + return $html; + } + + function return_reservation_block() { + $html = ''; + if (api_get_setting('allow_reservation') == 'true' && api_is_allowed_to_create_course()) { + $booking_content .=''; + $html .= self::show_right_block(get_lang('Booking'), $booking_content, 'reservation_block'); + } + return $html; + } function return_user_image_block() { - $img_array = UserManager::get_user_picture_path_by_id(api_get_user_id(), 'web', true, true); - $img_array = UserManager::get_picture_user(api_get_user_id(), $img_array['file'], 50, USER_IMAGE_SIZE_MEDIUM, ' width="90" height="90" '); + $img_array = UserManager::get_user_picture_path_by_id(api_get_user_id(), 'web', true, true); + $img_array = UserManager::get_picture_user(api_get_user_id(), $img_array['file'], 50, USER_IMAGE_SIZE_MEDIUM, ' width="90" height="90" '); $profile_content = null; if (api_get_setting('allow_social_tool') == 'true') { $profile_content .=''; @@ -796,44 +796,44 @@ class IndexManager return $html; } - function return_profile_block() + function return_profile_block() { global $_configuration; - $user_id = api_get_user_id(); + $user_id = api_get_user_id(); - if (empty($user_id)) { - return; - } + if (empty($user_id)) { + return; + } - $profile_content = '