From 447660b11bbf0f4cbd24d49aca228af570e39d9b Mon Sep 17 00:00:00 2001 From: ywarnier Date: Sun, 16 Jan 2011 13:22:15 -0500 Subject: [PATCH] Moved display_special_courses() to course.lib.php --- main/inc/lib/course.lib.php | 110 +++++++++++++++++++++++++++++++++ user_portal.php | 117 +----------------------------------- 2 files changed, 113 insertions(+), 114 deletions(-) diff --git a/main/inc/lib/course.lib.php b/main/inc/lib/course.lib.php index adfc79dd89..7084251243 100755 --- a/main/inc/lib/course.lib.php +++ b/main/inc/lib/course.lib.php @@ -2491,4 +2491,114 @@ class CourseManager { return self::course_code_exists($wanted_course_code); } + /** + * Display special courses (and only these) as several HTML divs of class userportal-course-item + * + * Special courses are courses that stick on top of the list and are "auto-registerable" + * in the sense that any user clicking them is registered as a student + * @param int User id + * @return void + */ + function display_special_courses ($user_id) { + + $user_id = intval($user_id); + $user_info = api_get_user_info($user_id); + $special_course_list = array(); + + $tbl_course = Database::get_main_table(TABLE_MAIN_COURSE); + $tbl_course_user = Database::get_main_table(TABLE_MAIN_COURSE_USER); + $tbl_course_field = Database::get_main_table(TABLE_MAIN_COURSE_FIELD); + $tbl_course_field_value = Database::get_main_table(TABLE_MAIN_COURSE_FIELD_VALUES); + $tbl_user_course_category = Database::get_user_personal_table(TABLE_USER_COURSE_CATEGORY); + + // get course list auto-register + $sql = "SELECT course_code FROM $tbl_course_field_value tcfv INNER JOIN $tbl_course_field tcf ON " . + " tcfv.field_id = tcf.id WHERE tcf.field_variable = 'special_course' AND tcfv.field_value = 1 "; + + $special_course_result = Database::query($sql); + 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'].'"'; + } + } + $with_special_courses = $without_special_courses = ''; + if (!empty($special_course_list)) { + $with_special_courses = ' course.code IN ('.implode(',',$special_course_list).')'; + } + + if (!empty($with_special_courses)) { + $sql = "SELECT course.code, course.visual_code, course.subscribe subscr, course.unsubscribe unsubscr, + course.title title, course.tutor_name tutor, course.db_name, course.directory, course_rel_user.status status, + course_rel_user.sort sort, course_rel_user.user_course_cat user_course_cat, course_rel_user.user_id, course.visibility + FROM $TABLECOURS course + LEFT JOIN $TABLECOURSUSER course_rel_user ON course.code = course_rel_user.course_code AND course_rel_user.user_id = '$user_id' + WHERE $with_special_courses group by course.code"; + + $rs_special_course = Database::query($sql); + $number_of_courses = Database::num_rows($rs_special_course); + $key = 0; + $status_icon = ''; + if ($number_of_courses > 0) { + while ($course = Database::fetch_array($rs_special_course)) { + + // Get notifications. + $my_course = array(); + $my_course['db'] = $course['db_name']; + $my_course['k'] = $course['code']; + $my_course['id_session'] = null; + $my_course['s'] = $course['status']; + $show_notification = show_notification($my_course); + + if (empty($course['user_id'])) { + $course['status'] = $user_info['status']; + } + + $status_icon = Display::return_icon('blackboard.png', get_lang('Course'), array('width'=>'48px')); + /* + if ($course['status'] == 1) { + $status_icon = Display::return_icon('course.gif', get_lang('Course')).' '.Display::return_icon('teachers.gif', get_lang('Status').': '.get_lang('Teacher'), array('style' => 'width: 11px; height: 11px;')); + } + if (($course['status'] == 5 && !api_is_coach()) || empty($course['status'])) { + $status_icon = Display::return_icon('course.gif', get_lang('Course')).' '.Display::return_icon('students.gif', get_lang('Status').': '.get_lang('Student'), array('style' => 'width: 11px; height: 11px;')); + }*/ + + echo '
'; + + if (api_is_platform_admin()) { + echo '
'.Display::return_icon('edit.gif', get_lang('Edit'), array('align' => 'absmiddle')).''; + if ($course['status'] == COURSEMANAGER) { + //echo Display::return_icon('teachers.gif', get_lang('Status').': '.get_lang('Teacher'),array('style'=>'width:11px; height:11px;')); + } + echo '
'; + } + $course_visibility = $course['visibility']; + if ($course_visibility != COURSE_VISIBILITY_CLOSED || $course['status'] == COURSEMANAGER) { + $course_title = ''.$course['title'].''; + } else { + $course_title = $course['title']." ".get_lang('CourseClosed'); + } + + echo '
'.$status_icon.'
'.$course_title.'
'; + if (api_get_setting('display_coursecode_in_courselist') == 'true') { + echo $course['visual_code']; + } + if (api_get_setting('display_coursecode_in_courselist') == 'true' && api_get_setting('display_teacher_in_courselist') == 'true') { + echo ' - '; + } + + if (api_get_setting('display_teacher_in_courselist') == 'true') { + echo $course['tutor']; + } + echo ' '; + echo Display::return_icon('klipper.png', get_lang('CourseAutoRegister')); + + // Show notifications. + echo $show_notification; + echo '
'; + $key++; + } + } + } + } } //end class CourseManager diff --git a/user_portal.php b/user_portal.php index c15d62c277..d89eabd1e1 100755 --- a/user_portal.php +++ b/user_portal.php @@ -12,7 +12,7 @@ * @package chamilo.main * @todo Shouldn't the SCRIPTVAL_ and CONFVAL_ constant be moved to the config page? Has anybody any idea what the are used for? * If these are really configuration settings then we can add those to the dokeos config settings. - * @todo move display_special_courses and some other functions to a more appripriate place course.lib.php or user.lib.php + * @todo move display_courses and some other functions to a more appripriate place course.lib.php or user.lib.php * @todo use api_get_path instead of $rootAdminWeb * @todo check for duplication of functions with index.php (user_portal.php is orginally a copy of index.php) * @todo display_digest, shouldn't this be removed and be made into an extension? @@ -168,117 +168,6 @@ Display :: display_header($nameTools); Some of these can go to database layer. */ -/** - * Display special courses (and only these) as several HTML divs of class userportal-course-item - * - * Special courses are courses that stick on top of the list and are "auto-registerable" - * in the sense that any user clicking them is registered as a student - * @param int User id - * @return void - */ -function display_special_courses ($user_id) { - - $user_id = intval($user_id); - $user_info = api_get_user_info($user_id); - $special_course_list = array(); - - $tbl_course = Database::get_main_table(TABLE_MAIN_COURSE); - $tbl_course_user = Database::get_main_table(TABLE_MAIN_COURSE_USER); - $tbl_course_field = Database::get_main_table(TABLE_MAIN_COURSE_FIELD); - $tbl_course_field_value = Database::get_main_table(TABLE_MAIN_COURSE_FIELD_VALUES); - $tbl_user_course_category = Database::get_user_personal_table(TABLE_USER_COURSE_CATEGORY); - - // get course list auto-register - $sql = "SELECT course_code FROM $tbl_course_field_value tcfv INNER JOIN $tbl_course_field tcf ON " . - " tcfv.field_id = tcf.id WHERE tcf.field_variable = 'special_course' AND tcfv.field_value = 1 "; - - $special_course_result = Database::query($sql); - 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'].'"'; - } - } - $with_special_courses = $without_special_courses = ''; - if (!empty($special_course_list)) { - $with_special_courses = ' course.code IN ('.implode(',',$special_course_list).')'; - } - - if (!empty($with_special_courses)) { - $sql = "SELECT course.code, course.visual_code, course.subscribe subscr, course.unsubscribe unsubscr, - course.title title, course.tutor_name tutor, course.db_name, course.directory, course_rel_user.status status, - course_rel_user.sort sort, course_rel_user.user_course_cat user_course_cat, course_rel_user.user_id, course.visibility - FROM $TABLECOURS course - LEFT JOIN $TABLECOURSUSER course_rel_user ON course.code = course_rel_user.course_code AND course_rel_user.user_id = '$user_id' - WHERE $with_special_courses group by course.code"; - - $rs_special_course = Database::query($sql); - $number_of_courses = Database::num_rows($rs_special_course); - $key = 0; - $status_icon = ''; - if ($number_of_courses > 0) { - while ($course = Database::fetch_array($rs_special_course)) { - - // Get notifications. - $my_course = array(); - $my_course['db'] = $course['db_name']; - $my_course['k'] = $course['code']; - $my_course['id_session'] = null; - $my_course['s'] = $course['status']; - $show_notification = show_notification($my_course); - - if (empty($course['user_id'])) { - $course['status'] = $user_info['status']; - } - - $status_icon = Display::return_icon('blackboard.png', get_lang('Course'), array('width'=>'48px')); - /* - if ($course['status'] == 1) { - $status_icon = Display::return_icon('course.gif', get_lang('Course')).' '.Display::return_icon('teachers.gif', get_lang('Status').': '.get_lang('Teacher'), array('style' => 'width: 11px; height: 11px;')); - } - if (($course['status'] == 5 && !api_is_coach()) || empty($course['status'])) { - $status_icon = Display::return_icon('course.gif', get_lang('Course')).' '.Display::return_icon('students.gif', get_lang('Status').': '.get_lang('Student'), array('style' => 'width: 11px; height: 11px;')); - }*/ - - echo '
'; - - if (api_is_platform_admin()) { - echo '
'.Display::return_icon('edit.gif', get_lang('Edit'), array('align' => 'absmiddle')).''; - if ($course['status'] == COURSEMANAGER) { - //echo Display::return_icon('teachers.gif', get_lang('Status').': '.get_lang('Teacher'),array('style'=>'width:11px; height:11px;')); - } - echo '
'; - } - $course_visibility = $course['visibility']; - if ($course_visibility != COURSE_VISIBILITY_CLOSED || $course['status'] == COURSEMANAGER) { - $course_title = ''.$course['title'].''; - } else { - $course_title = $course['title']." ".get_lang('CourseClosed'); - } - - echo '
'.$status_icon.'
'.$course_title.'
'; - if (api_get_setting('display_coursecode_in_courselist') == 'true') { - echo $course['visual_code']; - } - if (api_get_setting('display_coursecode_in_courselist') == 'true' && api_get_setting('display_teacher_in_courselist') == 'true') { - echo ' - '; - } - - if (api_get_setting('display_teacher_in_courselist') == 'true') { - echo $course['tutor']; - } - echo ' '; - echo Display::return_icon('klipper.png', get_lang('CourseAutoRegister')); - - // Show notifications. - echo $show_notification; - echo '
'; - $key++; - } - } - } -} - /** * Display courses (without special courses) as several HTML divs * of course categories, as class userportal-catalog-item. @@ -1143,7 +1032,7 @@ if (!empty ($_GET['include']) && preg_match('/^[a-zA-Z0-9_-]*\.html$/',$_GET['in $thisCoursePath = $my_course['d']; $sys_course_path = api_get_path(SYS_COURSE_PATH); $dbname = $my_course['k']; - $status = array(); + $status = array(); $status[$dbname] = $my_course['s']; $nbDigestEntries = 0; // Number of entries already collected. @@ -1242,7 +1131,7 @@ if (is_array($courses_tree)) { if ($key == 0) { // Sessions and courses that are not in a session category. if (!isset($_GET['history'])) { // Check if it's not history trainnign session list. - display_special_courses(api_get_user_id()); + CourseManager :: display_special_courses(api_get_user_id()); display_courses(api_get_user_id()); } // Independent sessions.