diff --git a/main/admin/access_url_edit_courses_to_url.php b/main/admin/access_url_edit_courses_to_url.php index cd6d2ff61b..ec82b19340 100755 --- a/main/admin/access_url_edit_courses_to_url.php +++ b/main/admin/access_url_edit_courses_to_url.php @@ -83,8 +83,8 @@ $UserList = $SessionList = array(); $users = $sessions = array(); if (isset($_POST['form_sent']) && $_POST['form_sent']) { - $form_sent=$_POST['form_sent']; - $course_list=$_POST['course_list']; + $form_sent = $_POST['form_sent']; + $course_list = $_POST['course_list']; if (!is_array($course_list)) { $course_list=array(); @@ -115,16 +115,16 @@ $no_course_list = $course_list = array(); $ajax_search = $add_type == 'unique' ? true : false; if($ajax_search) { - $courses=UrlManager::get_url_rel_course_data($access_url_id); - foreach($courses as $course) { - $course_list[$course['course_code']] = $course ; + $courses = UrlManager::get_url_rel_course_data($access_url_id); + foreach ($courses as $course) { + $course_list[$course['c_id']] = $course ; } } else { - $courses=UrlManager::get_url_rel_course_data(); + $courses = UrlManager::get_url_rel_course_data(); - foreach($courses as $course) { - if($course['access_url_id'] == $access_url_id) { - $course_list[$course['course_code']] = $course ; + foreach ($courses as $course) { + if ($course['access_url_id'] == $access_url_id) { + $course_list[$course['c_id']] = $course ; } } @@ -132,12 +132,13 @@ if($ajax_search) { $sql="SELECT code, title FROM $tbl_course u ORDER BY title, code"; - $result=Database::query($sql); - $courses=Database::store_result($result); + $result = Database::query($sql); + $courses = Database::store_result($result); $course_list_leys = array_keys($course_list); - foreach($courses as $course) { - if (!in_array($course['code'],$course_list_leys)) - $no_course_list[$course['code']] = $course ; + foreach ($courses as $course) { + if (!in_array($course['id'], $course_list_leys)) { + $no_course_list[$course['id']] = $course; + } } } diff --git a/main/admin/add_courses_to_session.php b/main/admin/add_courses_to_session.php index b7324f3307..3f0d135247 100755 --- a/main/admin/add_courses_to_session.php +++ b/main/admin/add_courses_to_session.php @@ -131,7 +131,7 @@ if ($ajax_search) { INNER JOIN $tbl_session_rel_course session_rel_course ON course.code = session_rel_course.course_code AND session_rel_course.id_session = ".intval($sessionId)." - INNER JOIN $tbl_course_rel_access_url url_course ON (url_course.course_code=course.code) + INNER JOIN $tbl_course_rel_access_url url_course ON (url_course.c_id = course.id) WHERE access_url_id = $access_url_id ORDER BY ".(sizeof($courses)?"(code IN(".implode(',',$courses).")) DESC,":"")." title"; } @@ -160,7 +160,7 @@ if ($ajax_search) { LEFT JOIN $tbl_session_rel_course session_rel_course ON course.code = session_rel_course.course_code AND session_rel_course.id_session = ".intval($sessionId)." - INNER JOIN $tbl_course_rel_access_url url_course ON (url_course.course_code=course.code) + INNER JOIN $tbl_course_rel_access_url url_course ON (url_course.c_id = course.id) WHERE access_url_id = $access_url_id ORDER BY ".(sizeof($courses)?"(code IN(".implode(',',$courses).")) DESC,":"")." title"; } diff --git a/main/admin/course_list.php b/main/admin/course_list.php index fe51f8be5c..ad42caf89f 100755 --- a/main/admin/course_list.php +++ b/main/admin/course_list.php @@ -26,7 +26,7 @@ function get_number_of_courses() api_is_multiple_url_enabled() && api_get_current_access_url_id() != -1 ) { $access_url_rel_course_table = Database :: get_main_table(TABLE_MAIN_ACCESS_URL_REL_COURSE); - $sql.= " INNER JOIN $access_url_rel_course_table url_rel_course ON (code=url_rel_course.course_code)"; + $sql.= " INNER JOIN $access_url_rel_course_table url_rel_course ON (id = url_rel_course.c_id)"; } if (isset ($_GET['keyword'])) { @@ -100,7 +100,7 @@ function get_course_data($from, $number_of_items, $column, $direction) api_is_multiple_url_enabled() && api_get_current_access_url_id() != -1 ) { $access_url_rel_course_table = Database :: get_main_table(TABLE_MAIN_ACCESS_URL_REL_COURSE); - $sql.= " INNER JOIN $access_url_rel_course_table url_rel_course ON (code=url_rel_course.course_code)"; + $sql.= " INNER JOIN $access_url_rel_course_table url_rel_course ON (id = url_rel_course.c_id)"; } if (isset ($_GET['keyword'])) { diff --git a/main/admin/dashboard_add_courses_to_user.php b/main/admin/dashboard_add_courses_to_user.php index c74c34046e..6ae67d3fb1 100755 --- a/main/admin/dashboard_add_courses_to_user.php +++ b/main/admin/dashboard_add_courses_to_user.php @@ -77,11 +77,17 @@ function search_courses($needle, $type) } if ($_configuration['multiple_access_urls']) { - $sql = "SELECT c.code, c.title FROM $tbl_course c LEFT JOIN $tbl_course_rel_access_url a ON (a.course_code = c.code) - WHERE c.code LIKE '$needle%' $without_assigned_courses AND access_url_id = ".api_get_current_access_url_id().""; - } else { $sql = "SELECT c.code, c.title FROM $tbl_course c - WHERE c.code LIKE '$needle%' $without_assigned_courses "; + LEFT JOIN $tbl_course_rel_access_url a ON (a.c_id = c.id) + WHERE + c.code LIKE '$needle%' $without_assigned_courses AND + access_url_id = ".api_get_current_access_url_id().""; + } else { + $sql = "SELECT c.code, c.title + FROM $tbl_course c + WHERE + c.code LIKE '$needle%' + $without_assigned_courses "; } $rs = Database::query($sql); diff --git a/main/admin/subscribe_user2course.php b/main/admin/subscribe_user2course.php index d54f126386..9b99c0d2c7 100755 --- a/main/admin/subscribe_user2course.php +++ b/main/admin/subscribe_user2course.php @@ -207,13 +207,13 @@ $sql = "SELECT code,visual_code,title ORDER BY ". (count($courses) > 0 ? "(code IN('".implode("','", $courses)."')) DESC," : "")." visual_code"; if (api_is_multiple_url_enabled()) { - $tbl_course_rel_access_url= Database::get_main_table(TABLE_MAIN_ACCESS_URL_REL_COURSE); + $tbl_course_rel_access_url = Database::get_main_table(TABLE_MAIN_ACCESS_URL_REL_COURSE); $access_url_id = api_get_current_access_url_id(); if ($access_url_id != -1){ $sql = "SELECT code, visual_code, title FROM $tbl_course as course INNER JOIN $tbl_course_rel_access_url course_rel_url - ON (course_rel_url.course_code= course.code) + ON (course_rel_url.c_id = course.id) WHERE access_url_id = $access_url_id AND (visual_code LIKE '".$first_letter_course."%' ) @@ -235,7 +235,7 @@ if (api_is_multiple_url_enabled()) { INNER JOIN $tbl_course as course ON course.id = course_rel_user.c_id INNER JOIN $tbl_course_rel_access_url course_rel_url - ON (course_rel_url.course_code= course.code) + ON (course_rel_url.c_id = course.id) WHERE access_url_id = $access_url_id AND course_rel_user.user_id='".$_user['user_id']."' AND diff --git a/main/admin/user_export.php b/main/admin/user_export.php index 896891ab1d..ed124b3ce3 100755 --- a/main/admin/user_export.php +++ b/main/admin/user_export.php @@ -33,7 +33,7 @@ if (api_is_multiple_url_enabled()) { if ($access_url_id != -1){ $sql = "SELECT code,visual_code,title FROM $course_table as c INNER JOIN $tbl_course_rel_access_url as course_rel_url - ON (c.code = course_rel_url.course_code) + ON (c.id = course_rel_url.c_id) WHERE access_url_id = $access_url_id ORDER BY visual_code"; } diff --git a/main/inc/lib/add_course.lib.inc.php b/main/inc/lib/add_course.lib.inc.php index 8c606dd370..94ebf5ff26 100755 --- a/main/inc/lib/add_course.lib.inc.php +++ b/main/inc/lib/add_course.lib.inc.php @@ -1426,9 +1426,9 @@ class AddCourse if (api_get_current_access_url_id() != -1) { $url_id = api_get_current_access_url_id(); } - UrlManager::add_course_to_url($code, $url_id); + UrlManager::add_course_to_url($course_id, $url_id); } else { - UrlManager::add_course_to_url($code, 1); + UrlManager::add_course_to_url($course_id, 1); } // Add event to the system log. diff --git a/main/inc/lib/add_courses_to_session_functions.lib.php b/main/inc/lib/add_courses_to_session_functions.lib.php index b65b0623af..7168b52d5c 100755 --- a/main/inc/lib/add_courses_to_session_functions.lib.php +++ b/main/inc/lib/add_courses_to_session_functions.lib.php @@ -62,8 +62,8 @@ class AddCourseToSession } global $_configuration; - if ($_configuration['multiple_access_urls']) { - $tbl_course_rel_access_url= Database::get_main_table(TABLE_MAIN_ACCESS_URL_REL_COURSE); + if (api_is_multiple_url_enabled()) { + $tbl_course_rel_access_url = Database::get_main_table(TABLE_MAIN_ACCESS_URL_REL_COURSE); $access_url_id = api_get_current_access_url_id(); if ($access_url_id != -1){ @@ -73,7 +73,8 @@ class AddCourseToSession LEFT JOIN '.$tbl_session_rel_course.' session_rel_course ON course.code = session_rel_course.course_code AND session_rel_course.id_session = '.intval($id_session).' - INNER JOIN '.$tbl_course_rel_access_url.' url_course ON (url_course.course_code=course.code) + INNER JOIN '.$tbl_course_rel_access_url.' url_course + ON (url_course.c_id = course.id) WHERE access_url_id = '.$access_url_id.' AND (course.visual_code LIKE "'.$needle.'%" OR diff --git a/main/inc/lib/api.lib.php b/main/inc/lib/api.lib.php index 5a2fe7d725..e93ba96196 100644 --- a/main/inc/lib/api.lib.php +++ b/main/inc/lib/api.lib.php @@ -5158,15 +5158,17 @@ function api_add_access_url($u, $d = '', $a = 1) { * @param int Access URL's ID. Optional. Uses 1 by default, which is the unique URL * @return array Array of database results for the current settings of the current access URL */ -function & api_get_settings($cat = null, $ordering = 'list', $access_url = 1, $url_changeable = 0) { - $t_cs = Database::get_main_table(TABLE_MAIN_SETTINGS_CURRENT); +function & api_get_settings($cat = null, $ordering = 'list', $access_url = 1, $url_changeable = 0) +{ + $table = Database::get_main_table(TABLE_MAIN_SETTINGS_CURRENT); $access_url = (int) $access_url; $where_condition = ''; if ($url_changeable == 1) { $where_condition = " AND access_url_changeable= '1' "; } if (empty($access_url) or $access_url == -1) { $access_url = 1; } - $sql = "SELECT * FROM $t_cs WHERE access_url = $access_url $where_condition "; + $sql = "SELECT * FROM $table + WHERE access_url = $access_url $where_condition "; if (!empty($cat)) { $cat = Database::escape_string($cat); diff --git a/main/inc/lib/auth.lib.php b/main/inc/lib/auth.lib.php index a75c72e52c..cd84bb388a 100755 --- a/main/inc/lib/auth.lib.php +++ b/main/inc/lib/auth.lib.php @@ -518,14 +518,14 @@ class Auth "; global $_configuration; - if ($_configuration['multiple_access_urls']) { + if (api_is_multiple_url_enabled()) { $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_find = "SELECT * FROM $TABLECOURS as course INNER JOIN $tbl_url_rel_course as url_rel_course - ON (url_rel_course.course_code=course.code) + ON (url_rel_course.c_id = course.id) WHERE access_url_id = $url_access_id AND ( code LIKE '%" . $search_term_safe . "%' OR diff --git a/main/inc/lib/course.lib.php b/main/inc/lib/course.lib.php index fd794aed0d..a5f83dd0b1 100755 --- a/main/inc/lib/course.lib.php +++ b/main/inc/lib/course.lib.php @@ -213,7 +213,7 @@ class CourseManager if (!empty($urlId)) { $table = Database::get_main_table(TABLE_MAIN_ACCESS_URL_REL_COURSE); - $sql .= " INNER JOIN $table url ON (url.course_code = course.code) "; + $sql .= " INNER JOIN $table url ON (url.c_id = course.id) "; } if (!empty($startwith)) { @@ -1005,9 +1005,9 @@ class CourseManager INNER JOIN $tbl_course as course ON course.id = course_rel_user.c_id INNER JOIN $tbl_course_rel_access_url course_rel_url - ON (course_rel_url.course_code= course.code) + ON (course_rel_url.c_id = course.id) WHERE - access_url_id = $access_url_id AND + access_url_id = $access_url_id AND course_rel_user.user_id='$user_id' AND course_rel_user.status='1' ORDER BY course.title"; @@ -2156,26 +2156,32 @@ class CourseManager $codeFiltered = Database::escape_string($code); $sql = "SELECT * FROM $table_course WHERE code='" . $codeFiltered . "'"; $res = Database::query($sql); + if (Database::num_rows($res) == 0) { return; } + + + $sql = "SELECT * FROM $table_course WHERE code = '" . $codeFiltered . "'"; + $res = Database::query($sql); + $course = Database::fetch_array($res); + $courseId = $course['id']; + $count = 0; if (api_is_multiple_url_enabled()) { $url_id = 1; if (api_get_current_access_url_id() != -1) { $url_id = api_get_current_access_url_id(); } - UrlManager::delete_url_rel_course($code, $url_id); - $count = UrlManager::getcountUrlRelCourse($code); + UrlManager::delete_url_rel_course($courseId, $url_id); + $count = UrlManager::getcountUrlRelCourse($courseId); } + if ($count == 0) { self::create_database_dump($code); - $sql = "SELECT * FROM $table_course WHERE code = '" . $codeFiltered . "'"; - $res = Database::query($sql); - $course = Database::fetch_array($res); $course_tables = AddCourse::get_course_tables(); - $courseId = $course['id']; + // Cleaning c_x tables if (!empty($courseId)) { @@ -2205,7 +2211,7 @@ class CourseManager Database::query($sql); // Delete from Course - URL - $sql = "DELETE FROM $table_course_rel_url WHERE course_code = '" . $codeFiltered . "'"; + $sql = "DELETE FROM $table_course_rel_url WHERE c_id = '" . $courseId. "'"; Database::query($sql); $sql = 'SELECT survey_id FROM ' . $table_course_survey . ' WHERE course_code="' . $codeFiltered . '"'; @@ -2540,6 +2546,7 @@ class CourseManager */ public static function get_special_course_list() { + $courseTable = Database:: get_main_table(TABLE_MAIN_COURSE); $tbl_course_field = Database:: get_main_table(TABLE_MAIN_COURSE_FIELD); $tbl_course_field_value = Database:: get_main_table(TABLE_MAIN_COURSE_FIELD_VALUES); @@ -2549,16 +2556,18 @@ class CourseManager $access_url_id = api_get_current_access_url_id(); if ($access_url_id != -1) { $tbl_url_course = Database:: get_main_table(TABLE_MAIN_ACCESS_URL_REL_COURSE); - $join_access_url = "LEFT JOIN $tbl_url_course url_rel_course ON url_rel_course.course_code= tcfv.course_code "; + $join_access_url = "LEFT JOIN $tbl_url_course url_rel_course ON url_rel_course.c_id = tcfv.c_id "; $where_access_url = " AND access_url_id = $access_url_id "; } } // get course list auto-register - $sql = "SELECT DISTINCT(tcfv.course_code) + $sql = "SELECT DISTINCT(c.code) FROM $tbl_course_field_value tcfv INNER JOIN $tbl_course_field tcf ON tcfv.field_id = tcf.id $join_access_url + INNER JOIN $courseTable c + ON (c.id = tcfv.c_id) WHERE tcf.field_variable = 'special_course' AND tcfv.field_value = 1 $where_access_url"; @@ -3315,7 +3324,7 @@ class CourseManager $sql = "$select FROM $tbl_course c INNER JOIN $tbl_course_rel_user cru ON (cru.c_id = c.id) - INNER JOIN $tbl_course_rel_access_url a ON (a.course_code = c.code) + INNER JOIN $tbl_course_rel_access_url a ON (a.c_id = c.id) $extraInnerJoin WHERE access_url_id = " . api_get_current_access_url_id() . " @@ -3825,7 +3834,7 @@ class CourseManager $TABLE_ACCESS_URL_REL_COURSE url WHERE course.id = course_rel_user.c_id AND - url.course_code = course.code AND + url.c_id = course.id AND course_rel_user.user_id = '" . $user_id . "' AND course_rel_user.user_course_cat='" . $user_category_id . "' $without_special_courses "; @@ -3833,7 +3842,7 @@ class CourseManager // If multiple URL access mode is enabled, only fetch courses // corresponding to the current URL. if (api_get_multiple_access_url() && $current_url_id != -1) { - $sql .= " AND url.course_code = course.code AND access_url_id='" . $current_url_id . "'"; + $sql .= " AND url.c_id = course.id AND access_url_id='" . $current_url_id . "'"; } // Use user's classification for courses (if any). $sql .= " ORDER BY course_rel_user.user_course_cat, course_rel_user.sort ASC"; @@ -4769,8 +4778,11 @@ class CourseManager //$table_course_access table uses the now() and interval ... $now = api_get_utc_datetime(time()); $sql = "SELECT COUNT(course_access_id) course_count, a.c_id, visibility - FROM $table_course c INNER JOIN $table_course_access a - ON (c.id = a.c_id) INNER JOIN $table_course_url u ON u.course_code = c.code + FROM $table_course c + INNER JOIN $table_course_access a + ON (c.id = a.c_id) + INNER JOIN $table_course_url u + ON u.c_id = c.id WHERE u.access_url_id = " . api_get_current_access_url_id() . " AND login_course_date <= '$now' AND @@ -4887,7 +4899,7 @@ class CourseManager $sql = "SELECT count(id) FROM $table_course c"; if (!empty($access_url_id) && $access_url_id == intval($access_url_id)) { $sql .= ", $table_course_rel_access_url u - WHERE c.code = u.course_code AND u.access_url_id = $access_url_id"; + WHERE c.id = u.c_id AND u.access_url_id = $access_url_id"; if (!empty($visibility)) { $visibility = intval($visibility); $sql .= " AND visibility = $visibility "; @@ -4919,7 +4931,7 @@ class CourseManager if (!empty($urlId) && $urlId == intval($urlId)) { $sql .= ", $table_course_rel_access_url u WHERE - c.code = u.course_code AND + c.id = u.c_id AND u.access_url_id = $urlId AND visibility <> " . COURSE_VISIBILITY_HIDDEN; } else { @@ -4959,7 +4971,7 @@ class CourseManager if (!empty($accessUrlId) && $accessUrlId == intval($accessUrlId)) { $sql = "SELECT count(id) FROM $tableCourse c, $tableCourseRelAccessUrl u WHERE - c.code = u.course_code AND + c.id = u.c_id AND u.access_url_id = $accessUrlId AND c.visibility != 0 AND c.visibility != 4 diff --git a/main/inc/lib/course_category.lib.php b/main/inc/lib/course_category.lib.php index cc4a9a09b4..42a27d7ff0 100755 --- a/main/inc/lib/course_category.lib.php +++ b/main/inc/lib/course_category.lib.php @@ -597,7 +597,7 @@ function countCoursesInCategory($category_code="", $searchTerm = '') $tbl_url_rel_course = Database::get_main_table(TABLE_MAIN_ACCESS_URL_REL_COURSE); $sql = "SELECT * FROM $tbl_course as course INNER JOIN $tbl_url_rel_course as url_rel_course - ON (url_rel_course.course_code=course.code) + ON (url_rel_course.c_id = course.id) WHERE access_url_id = $url_access_id AND course.visibility != '0' AND @@ -666,21 +666,26 @@ function browseCoursesInCategory($category_code, $random_value = null, $limit = $tbl_url_rel_course = Database::get_main_table(TABLE_MAIN_ACCESS_URL_REL_COURSE); $sql = "SELECT COUNT(*) FROM $tbl_course course - INNER JOIN $tbl_url_rel_course as url_rel_course ON (url_rel_course.course_code=course.code) + INNER JOIN $tbl_url_rel_course as url_rel_course + ON (url_rel_course.c_id = course.id) WHERE access_url_id = $url_access_id "; $result = Database::query($sql); list($num_records) = Database::fetch_row($result); - $sql = "SELECT course.id FROM $tbl_course 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 - RAND()*$num_records< $random_value - $without_special_courses $visibilityCondition - ORDER BY RAND() LIMIT 0, $random_value"; + $sql = "SELECT course.id FROM $tbl_course course + INNER JOIN $tbl_url_rel_course as url_rel_course + ON (url_rel_course.c_id = course.id) + WHERE + access_url_id = $url_access_id AND + RAND()*$num_records< $random_value + $without_special_courses $visibilityCondition + ORDER BY RAND() + LIMIT 0, $random_value"; } else { $sql = "SELECT id FROM $tbl_course course WHERE RAND()*$num_records< $random_value $without_special_courses $visibilityCondition - ORDER BY RAND() LIMIT 0, $random_value"; + ORDER BY RAND() + LIMIT 0, $random_value"; } $result = Database::query($sql); @@ -716,15 +721,15 @@ function browseCoursesInCategory($category_code, $random_value = null, $limit = if ($category_code != "ALL") { $sql = "SELECT * FROM $tbl_course as course INNER JOIN $tbl_url_rel_course as url_rel_course - ON (url_rel_course.course_code=course.code) + ON (url_rel_course.c_id = course.id) WHERE access_url_id = $url_access_id AND category_code='$category_code' $without_special_courses $visibilityCondition ORDER BY title $limitFilter"; } else { $sql = "SELECT * FROM $tbl_course 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 $without_special_courses $visibilityCondition - ORDER BY title $limitFilter"; + INNER JOIN $tbl_url_rel_course as url_rel_course + ON (url_rel_course.c_id = course.id) + WHERE access_url_id = $url_access_id $without_special_courses $visibilityCondition + ORDER BY title $limitFilter"; } } diff --git a/main/inc/lib/database.constants.inc.php b/main/inc/lib/database.constants.inc.php index 612d7abdc8..f8e6e603a4 100755 --- a/main/inc/lib/database.constants.inc.php +++ b/main/inc/lib/database.constants.inc.php @@ -110,7 +110,7 @@ define('TABLE_MAIN_USER_FRIEND_RELATION_TYPE', 'user_friend_relation_type'); // Web services define('TABLE_MAIN_USER_API_KEY', 'user_api_key'); define('TABLE_MAIN_COURSE_FIELD', 'course_field'); -define('TABLE_MAIN_COURSE_FIELD_OPTIONS', 'course_field_options'); +define('TABLE_MAIN_COURSE_FIELD_OPTIONS', 'course_field_options'); define('TABLE_MAIN_COURSE_FIELD_VALUES', 'course_field_values'); define('TABLE_MAIN_SESSION_FIELD', 'session_field'); define('TABLE_MAIN_SESSION_FIELD_OPTIONS', 'session_field_options'); diff --git a/main/inc/lib/sessionmanager.lib.php b/main/inc/lib/sessionmanager.lib.php index a1732162d5..6d59b83342 100755 --- a/main/inc/lib/sessionmanager.lib.php +++ b/main/inc/lib/sessionmanager.lib.php @@ -4562,7 +4562,7 @@ class SessionManager FROM $tbl_course c INNER JOIN $tbl_course_user cu ON (cu.c_id = c.id) INNER JOIN $tbl_user u ON (u.user_id = cu.user_id) - INNER JOIN $tbl_course_rel_access_url url ON (url.course_code = c.code) + INNER JOIN $tbl_course_rel_access_url url ON (url.c_id = c.id) $where $courseConditions ) diff --git a/main/inc/lib/statistics.lib.php b/main/inc/lib/statistics.lib.php index 2af279be04..f72e80a391 100644 --- a/main/inc/lib/statistics.lib.php +++ b/main/inc/lib/statistics.lib.php @@ -36,10 +36,11 @@ class Statistics public static function countCourses($categoryCode = null) { $course_table = Database :: get_main_table(TABLE_MAIN_COURSE); - $access_url_rel_course_table= Database :: get_main_table(TABLE_MAIN_ACCESS_URL_REL_COURSE); + $access_url_rel_course_table = Database :: get_main_table(TABLE_MAIN_ACCESS_URL_REL_COURSE); $current_url_id = api_get_current_access_url_id(); if (api_is_multiple_url_enabled()) { - $sql = "SELECT COUNT(*) AS number FROM ".$course_table." as c, ".$access_url_rel_course_table." as u WHERE u.course_code=c.code AND access_url_id='".$current_url_id."'"; + $sql = "SELECT COUNT(*) AS number FROM ".$course_table." as c, ".$access_url_rel_course_table." as u + WHERE u.c_id = c.id AND access_url_id='".$current_url_id."'"; if (isset ($categoryCode)) { $sql .= " AND category_code = '".Database::escape_string($categoryCode)."'"; } @@ -69,7 +70,7 @@ class Statistics $current_url_id = api_get_current_access_url_id(); if (api_is_multiple_url_enabled()) { $sql = "SELECT COUNT(*) AS number FROM ".$course_table." as c, ".$access_url_rel_course_table." as u - WHERE u.course_code=c.code AND access_url_id='".$current_url_id."'"; + WHERE u.c_id = c.id AND access_url_id='".$current_url_id."'"; if (isset ($visibility)) { $sql .= " AND visibility = ".intval($visibility); } @@ -525,11 +526,13 @@ class Statistics if (api_is_multiple_url_enabled()) { $sql = "SELECT course_language, count( c.code ) AS number_of_courses ". "FROM $table as c, $access_url_rel_course_table as u - WHERE u.course_code=c.code AND access_url_id='".$current_url_id."' - GROUP BY course_language ORDER BY number_of_courses DESC"; + WHERE u.c_id = c.id AND access_url_id='".$current_url_id."' + GROUP BY course_language + ORDER BY number_of_courses DESC"; } else { $sql = "SELECT course_language, count( code ) AS number_of_courses ". - "FROM $table GROUP BY course_language ORDER BY number_of_courses DESC"; + "FROM $table GROUP BY course_language + ORDER BY number_of_courses DESC"; } $res = Database::query($sql); $result = array(); @@ -624,7 +627,7 @@ class Statistics */ public static function printCourseLastVisit() { - $access_url_rel_course_table= Database :: get_main_table(TABLE_MAIN_ACCESS_URL_REL_COURSE); + $access_url_rel_course_table = Database :: get_main_table(TABLE_MAIN_ACCESS_URL_REL_COURSE); $current_url_id = api_get_current_access_url_id(); $columns[0] = 'c_id'; diff --git a/main/inc/lib/tracking.lib.php b/main/inc/lib/tracking.lib.php index 67d12839b0..4599aa3b0e 100755 --- a/main/inc/lib/tracking.lib.php +++ b/main/inc/lib/tracking.lib.php @@ -2841,6 +2841,7 @@ class Tracking $tbl_session_course = Database::get_main_table(TABLE_MAIN_SESSION_COURSE); $tbl_session = Database::get_main_table(TABLE_MAIN_SESSION); $tbl_course = Database::get_main_table(TABLE_MAIN_COURSE); + $tbl_course_rel_access_url = Database::get_main_table(TABLE_MAIN_ACCESS_URL_REL_COURSE); // At first, courses where $coach_id is coach of the course. @@ -2848,13 +2849,14 @@ class Tracking FROM ' . $tbl_session_course_user . ' WHERE id_user = ' . $coach_id.' AND status = 2'; if (api_is_multiple_url_enabled()) { - $tbl_course_rel_access_url= Database::get_main_table(TABLE_MAIN_ACCESS_URL_REL_COURSE); $access_url_id = api_get_current_access_url_id(); if ($access_url_id != -1){ - $sql = 'SELECT DISTINCT scu.course_code + $sql = 'SELECT DISTINCT c.code FROM ' . $tbl_session_course_user . ' scu + INNER JOIN '.$tbl_course.' c + ON (c.code = scu.course_code) INNER JOIN '.$tbl_course_rel_access_url.' cru - ON (scu.course_code = cru.course_code) + ON (c.id = cru.c_id) WHERE scu.id_user=' . $coach_id.' AND scu.status=2 AND @@ -2883,18 +2885,20 @@ class Tracking ON course.code = session_course.course_code'; if (api_is_multiple_url_enabled()) { - $tbl_course_rel_access_url= Database::get_main_table(TABLE_MAIN_ACCESS_URL_REL_COURSE); + $tbl_course_rel_access_url = Database::get_main_table(TABLE_MAIN_ACCESS_URL_REL_COURSE); $access_url_id = api_get_current_access_url_id(); if ($access_url_id != -1){ - $sql = 'SELECT DISTINCT session_course.course_code + $sql = 'SELECT DISTINCT c.code FROM ' . $tbl_session_course . ' as session_course + INNER JOIN '.$tbl_course.' c + ON (c.code = session_course.course_code) INNER JOIN ' . $tbl_session . ' as session - ON session.id = session_course.id_session + ON session.id = session_course.id_session AND session.id_coach = ' . $coach_id . ' INNER JOIN ' . $tbl_course . ' as course ON course.code = session_course.course_code INNER JOIN '.$tbl_course_rel_access_url.' course_rel_url - ON (session_course.course_code = course_rel_url.course_code)'; + ON (course_rel_url.c_id = c.id)'; } } @@ -3925,7 +3929,7 @@ class Tracking INNER JOIN $tbl_course c ON (cu.c_id = c.id) INNER JOIN $tbl_access_rel_course a - ON (a.course_code = c.code) + ON (a.c_id = c.id) WHERE user_id = $user_id AND relation_type<> ".COURSE_RELATION_TYPE_RRHH." AND diff --git a/main/inc/lib/urlmanager.lib.php b/main/inc/lib/urlmanager.lib.php index 4cc8261e1a..4c0c537fe5 100755 --- a/main/inc/lib/urlmanager.lib.php +++ b/main/inc/lib/urlmanager.lib.php @@ -191,39 +191,39 @@ class UrlManager public static function get_url_rel_course_data($access_url_id = null) { $where =''; - $table_url_rel_course = Database :: get_main_table(TABLE_MAIN_ACCESS_URL_REL_COURSE); - $tbl_course = Database :: get_main_table(TABLE_MAIN_COURSE); + $table_url_rel_course = Database :: get_main_table(TABLE_MAIN_ACCESS_URL_REL_COURSE); + $tbl_course = Database :: get_main_table(TABLE_MAIN_COURSE); if (!empty($access_url_id)) { $where ="WHERE $table_url_rel_course.access_url_id = ".intval($access_url_id); } - $sql = "SELECT course_code, title, access_url_id + $sql = "SELECT u.id, c_id, title, access_url_id FROM $tbl_course u INNER JOIN $table_url_rel_course - ON $table_url_rel_course.course_code = code + ON $table_url_rel_course.c_id = u.id $where ORDER BY title, code"; - $result=Database::query($sql); - $courses=Database::store_result($result); + $result = Database::query($sql); + $courses = Database::store_result($result); + return $courses; } /** * Gets the number of rows with a specific course_code in access_url_rel_course table * @author Yoselyn Castillo - * @param string code + * @param int $courseId * @return int Database::num_rows($res); - * **/ - public static function getCountUrlRelCourse($code) + public static function getCountUrlRelCourse($courseId) { - $code = Database::escape_string($code); + $courseId = intval($courseId); $tableUrlRelCourse = Database::get_main_table(TABLE_MAIN_ACCESS_URL_REL_COURSE); $sql = "SELECT * FROM $tableUrlRelCourse - WHERE $tableUrlRelCourse.course_code = '$code'"; + WHERE $tableUrlRelCourse.c_id = '$courseId'"; $res = Database::query($sql); return Database::num_rows($res); } @@ -361,18 +361,19 @@ class UrlManager /** * Checks the relationship between an URL and a Course (return the num_rows) * @author Julio Montoya - * @param int user id - * @param int url id + * @param int $courseId + * @param int $urlId * @return boolean true if success * */ - public static function relation_url_course_exist($course_id, $url_id) + public static function relation_url_course_exist($courseId, $urlId) { - $table_url_rel_course= Database :: get_main_table(TABLE_MAIN_ACCESS_URL_REL_COURSE); + $table_url_rel_course = Database :: get_main_table(TABLE_MAIN_ACCESS_URL_REL_COURSE); $sql= "SELECT course_code FROM $table_url_rel_course - WHERE access_url_id = ".intval($url_id)." AND - course_code = '".Database::escape_string($course_id)."'"; + WHERE access_url_id = ".intval($urlId)." AND + c_id = '".intval($courseId)."'"; $result = Database::query($sql); $num = Database::num_rows($result); + return $num; } @@ -456,16 +457,19 @@ class UrlManager **/ public static function add_courses_to_urls($course_list,$url_list) { - $table_url_rel_course= Database :: get_main_table(TABLE_MAIN_ACCESS_URL_REL_COURSE); + $table_url_rel_course = Database :: get_main_table(TABLE_MAIN_ACCESS_URL_REL_COURSE); $result_array = array(); if (is_array($course_list) && is_array($url_list)){ foreach ($url_list as $url_id) { foreach ($course_list as $course_code) { - $count = self::relation_url_course_exist($course_code,$url_id); + $courseInfo = api_get_course_info($course_code); + $courseId = $courseInfo['real_id']; + + $count = self::relation_url_course_exist($courseId, $url_id); if ($count==0) { $sql = "INSERT INTO $table_url_rel_course - SET course_code = '".Database::escape_string($course_code)."', access_url_id = ".intval($url_id); + SET c_id = '".$courseId."', access_url_id = ".intval($url_id); $result = Database::query($sql); if($result) $result_array[$url_id][$course_code]=1; @@ -653,11 +657,11 @@ class UrlManager } /** - * @param string $course_code + * @param string $courseId * @param int $url_id * @return resource */ - public static function add_course_to_url($course_code, $url_id=1) + public static function add_course_to_url($courseId, $url_id=1) { $table_url_rel_course= Database::get_main_table(TABLE_MAIN_ACCESS_URL_REL_COURSE); if (empty($url_id)) { @@ -666,7 +670,7 @@ class UrlManager $count = UrlManager::relation_url_course_exist($course_code,$url_id); if (empty($count)) { $sql = "INSERT INTO $table_url_rel_course - SET course_code = '".Database::escape_string($course_code)."', access_url_id = ".intval($url_id); + SET c_id = '".intval($courseId)."', access_url_id = ".intval($url_id); $result = Database::query($sql); } @@ -721,15 +725,17 @@ class UrlManager /** * Deletes an url and course relationship * @author Julio Montoya - * @param char course code - * @param int url id + * @param id $courseId + * @param int $urlId * @return boolean true if success * */ - public static function delete_url_rel_course($course_code, $url_id) + public static function delete_url_rel_course($courseId, $urlId) { $table_url_rel_course= Database :: get_main_table(TABLE_MAIN_ACCESS_URL_REL_COURSE); - $sql= "DELETE FROM $table_url_rel_course WHERE course_code = '".Database::escape_string($course_code)."' AND access_url_id=".intval($url_id)." "; + $sql= "DELETE FROM $table_url_rel_course + WHERE c_id = '".intval($courseId)."' AND access_url_id=".intval($url_id)." "; $result = Database::query($sql); + return $result; } @@ -835,36 +841,34 @@ class UrlManager /** * Updates the access_url_rel_course table with a given user list * @author Julio Montoya - * @param array user list + * @param array $course_list * @param int access_url_id * */ - public static function update_urls_rel_course($course_list,$access_url_id) + public static function update_urls_rel_course($course_list, $access_url_id) { - $table_url_rel_course = Database :: get_main_table(TABLE_MAIN_ACCESS_URL_REL_COURSE); + $table_url_rel_course = Database :: get_main_table(TABLE_MAIN_ACCESS_URL_REL_COURSE); - $sql = "SELECT course_code FROM $table_url_rel_course WHERE access_url_id=".intval($access_url_id); + $sql = "SELECT c_id FROM $table_url_rel_course WHERE access_url_id=".intval($access_url_id); $result = Database::query($sql); - $existing_courses = array(); - while($row = Database::fetch_array($result)){ - $existing_courses[] = $row['course_code']; + $existing_courses = array(); + while ($row = Database::fetch_array($result)){ + $existing_courses[] = $row['c_id']; } // Adding courses foreach ($course_list as $course_code) { - if(!in_array($course_code, $existing_courses)) { - UrlManager::add_course_to_url($course_code, $access_url_id); - $course_info = api_get_course_info($course_code); - CourseManager::update_course_ranking($course_info['real_id'], 0, $access_url_id); + if (!in_array($course_code, $courseId)) { + UrlManager::add_course_to_url($courseId, $access_url_id); + CourseManager::update_course_ranking($courseId, 0, $access_url_id); } } // Deleting old courses - foreach ($existing_courses as $existing_course) { - if(!in_array($existing_course, $course_list)) { - UrlManager::delete_url_rel_course($existing_course,$access_url_id); - $course_info = api_get_course_info($existing_course); - CourseManager::update_course_ranking($course_info['real_id'], 0, $access_url_id); + foreach ($existing_courses as $courseId) { + if (!in_array($courseId, $course_list)) { + UrlManager::delete_url_rel_course($courseId, $access_url_id); + CourseManager::update_course_ranking($courseId, 0, $access_url_id); } } } diff --git a/main/inc/lib/usermanager.lib.php b/main/inc/lib/usermanager.lib.php index 21d15c9b8d..2d6480ef77 100755 --- a/main/inc/lib/usermanager.lib.php +++ b/main/inc/lib/usermanager.lib.php @@ -2639,7 +2639,7 @@ class UserManager $access_url_id = api_get_current_access_url_id(); if ($access_url_id != -1) { $tbl_url_course = Database :: get_main_table(TABLE_MAIN_ACCESS_URL_REL_COURSE); - $join_access_url = "LEFT JOIN $tbl_url_course url_rel_course ON url_rel_course.course_code= course.code"; + $join_access_url = "LEFT JOIN $tbl_url_course url_rel_course ON url_rel_course.c_id= course.id"; $where_access_url = " AND access_url_id = $access_url_id "; } } @@ -3980,7 +3980,7 @@ class UserManager $access_url_id = api_get_current_access_url_id(); $tbl_url_course = Database :: get_main_table(TABLE_MAIN_ACCESS_URL_REL_COURSE); - $join_access_url = "LEFT JOIN $tbl_url_course url_rel_course ON url_rel_course.course_code= course.code"; + $join_access_url = "LEFT JOIN $tbl_url_course url_rel_course ON url_rel_course.c_id = course.id"; $where_access_url = " AND access_url_id = $access_url_id "; } diff --git a/main/inc/lib/userportal.lib.php b/main/inc/lib/userportal.lib.php index a8fdeadb98..692eca5e08 100755 --- a/main/inc/lib/userportal.lib.php +++ b/main/inc/lib/userportal.lib.php @@ -421,9 +421,13 @@ class IndexManager $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)"; + $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.c_id = course.id) + WHERE + access_url_id = $url_access_id AND + category_code = '".Database::escape_string($_GET['category'])."' + ORDER BY title, UPPER(visual_code)"; } } diff --git a/src/Chamilo/CoreBundle/Entity/Session.php b/src/Chamilo/CoreBundle/Entity/Session.php index bf89973ad0..c985377646 100644 --- a/src/Chamilo/CoreBundle/Entity/Session.php +++ b/src/Chamilo/CoreBundle/Entity/Session.php @@ -71,6 +71,34 @@ class Session */ private $nbrClasses; + /** + * @var \DateTime + * + * @ORM\Column(name="date_start", type="date", nullable=false) + */ + private $dateStart; + + /** + * @var \DateTime + * + * @ORM\Column(name="date_end", type="date", nullable=false) + */ + private $dateEnd; + + /** + * @var boolean + * + * @ORM\Column(name="nb_days_access_before_beginning", type="boolean", nullable=true) + */ + private $nbDaysAccessBeforeBeginning; + + /** + * @var boolean + * + * @ORM\Column(name="nb_days_access_after_end", type="boolean", nullable=true) + */ + private $nbDaysAccessAfterEnd; + /** * @var integer * @@ -509,6 +537,75 @@ class Session return $this->nbrClasses; } + /** + * Set dateStart + * + * @param \DateTime $dateStart + * @return Session + */ + public function setDateStart($dateStart) + { + $this->dateStart = $dateStart; + + return $this; + } + + /** + * Get dateStart + * + * @return \DateTime + */ + public function getDateStart() + { + return $this->dateStart; + } + + /** + * Set dateEnd + * + * @param \DateTime $dateEnd + * @return Session + */ + public function setDateEnd($dateEnd) + { + $this->dateEnd = $dateEnd; + + return $this; + } + + /** + * Get dateEnd + * + * @return \DateTime + */ + public function getDateEnd() + { + return $this->dateEnd; + } + + /** + * Set nbDaysAccessBeforeBeginning + * + * @param boolean $nbDaysAccessBeforeBeginning + * @return Session + */ + public function setNbDaysAccessBeforeBeginning($nbDaysAccessBeforeBeginning) + { + $this->nbDaysAccessBeforeBeginning = $nbDaysAccessBeforeBeginning; + + return $this; + } + + /** + * Get nbDaysAccessBeforeBeginning + * + * @return boolean + */ + public function getNbDaysAccessBeforeBeginning() + { + return $this->nbDaysAccessBeforeBeginning; + } + /** * Set sessionAdminId * diff --git a/src/Chamilo/CoreBundle/Entity/SettingsCurrent.php b/src/Chamilo/CoreBundle/Entity/SettingsCurrent.php index e2dede8776..4c0398678e 100644 --- a/src/Chamilo/CoreBundle/Entity/SettingsCurrent.php +++ b/src/Chamilo/CoreBundle/Entity/SettingsCurrent.php @@ -12,6 +12,15 @@ use Doctrine\ORM\Mapping as ORM; */ class SettingsCurrent { + /** + * @var integer + * + * @ORM\Column(name="id", type="integer") + * @ORM\Id + * @ORM\GeneratedValue(strategy="IDENTITY") + */ + private $id; + /** * @var string * @@ -78,7 +87,7 @@ class SettingsCurrent /** * @var integer * - * @ORM\Column(name="access_url", type="integer", nullable=false) + * @ORM\Column(name="access_url", type="integer", nullable=false, options={"default": 1 } ) */ private $accessUrl; @@ -96,16 +105,6 @@ class SettingsCurrent */ private $accessUrlLocked; - /** - * @var integer - * - * @ORM\Column(name="id", type="integer") - * @ORM\Id - * @ORM\GeneratedValue(strategy="IDENTITY") - */ - private $id; - - /** * Set variable diff --git a/src/Chamilo/CoreBundle/Migrations/Schema/v1/Version110.php b/src/Chamilo/CoreBundle/Migrations/Schema/v1/Version110.php index 71e0bff4de..9059a922b2 100644 --- a/src/Chamilo/CoreBundle/Migrations/Schema/v1/Version110.php +++ b/src/Chamilo/CoreBundle/Migrations/Schema/v1/Version110.php @@ -80,6 +80,8 @@ class Version110 extends AbstractMigration $this->addSql("ALTER TABLE course ADD COLUMN add_teachers_to_sessions_courses tinyint NOT NULL default 0"); $this->addSql("ALTER TABLE session MODIFY COLUMN name char(100) NOT NULL DEFAULT ''"); $this->addSql("ALTER TABLE course_rel_user ADD COLUMN c_id int default NULL"); + $this->addSql("ALTER TABLE course_field_values ADD COLUMN c_id int default NULL"); + $this->addSql("UPDATE course_rel_user SET c_id = (SELECT id FROM course WHERE code = course_code)"); // Course @@ -110,13 +112,16 @@ class Version110 extends AbstractMigration $this->addSql("UPDATE track_e_access SET c_id = (SELECT id FROM course WHERE code = access_cours_code)"); $this->addSql("UPDATE track_e_default SET c_id = (SELECT id FROM course WHERE code = default_cours_code)"); $this->addSql("UPDATE track_e_lastaccess SET c_id = (SELECT id FROM course WHERE code = access_cours_code)"); - $this->addSql("UPDATE track_e_exercises SET c_id = (SELECT id FROM course WHERE code = exe_cours_id)"); + $this->addSql("UPDATE track_e_exercices SET c_id = (SELECT id FROM course WHERE code = exe_cours_id)"); $this->addSql("UPDATE track_e_downloads SET c_id = (SELECT id FROM course WHERE code = down_cours_id)"); $this->addSql("UPDATE track_e_hotpotatoes SET c_id = (SELECT id FROM course WHERE code = exe_cours_id)"); $this->addSql("UPDATE track_e_links SET c_id = (SELECT id FROM course WHERE code = links_cours_id)"); $this->addSql("UPDATE track_e_course_access SET c_id = (SELECT id FROM course WHERE code = course_code)"); $this->addSql("UPDATE track_e_online SET c_id = (SELECT id FROM course WHERE code = course)"); $this->addSql("UPDATE track_e_attempt SET c_id = (SELECT id FROM course WHERE code = course_code)"); + $this->addSql("UPDATE course_field_values SET c_id = (SELECT id FROM course WHERE code = course_code)"); + + //$this->addSql("UPDATE settings_current SET selected_value = '1.10.0.35' WHERE variable = 'chamilo_database_version'"); $this->addSql("DELETE FROM settings_current WHERE variable = 'wcag_anysurfer_public_pages'");