|
|
@ -114,10 +114,10 @@ require_once api_get_path(LIBRARY_PATH).'add_course.lib.inc.php'; |
|
|
|
--> COURSE_VISIBILITY_OPEN_PLATFORM, SUBSCRIBE_NOT_ALLOWED |
|
|
|
--> COURSE_VISIBILITY_OPEN_PLATFORM, SUBSCRIBE_NOT_ALLOWED |
|
|
|
*/ |
|
|
|
*/ |
|
|
|
//OLD SETTINGS |
|
|
|
//OLD SETTINGS |
|
|
|
define("NOT_VISIBLE_NO_SUBSCRIPTION_ALLOWED", 0); |
|
|
|
define('NOT_VISIBLE_NO_SUBSCRIPTION_ALLOWED', 0); |
|
|
|
define("NOT_VISIBLE_SUBSCRIPTION_ALLOWED", 1); |
|
|
|
define('NOT_VISIBLE_SUBSCRIPTION_ALLOWED', 1); |
|
|
|
define("VISIBLE_SUBSCRIPTION_ALLOWED", 2); |
|
|
|
define('VISIBLE_SUBSCRIPTION_ALLOWED', 2); |
|
|
|
define("VISIBLE_NO_SUBSCRIPTION_ALLOWED", 3); |
|
|
|
define('VISIBLE_NO_SUBSCRIPTION_ALLOWED', 3); |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/* |
|
|
|
/* |
|
|
@ -130,7 +130,7 @@ $TABLECOURSE = Database :: get_main_table(TABLE_MAIN_COURSE); |
|
|
|
$TABLECOURSDOMAIN = Database :: get_main_table(TABLE_MAIN_CATEGORY); |
|
|
|
$TABLECOURSDOMAIN = Database :: get_main_table(TABLE_MAIN_CATEGORY); |
|
|
|
$TABLEUSER = Database :: get_main_table(TABLE_MAIN_USER); |
|
|
|
$TABLEUSER = Database :: get_main_table(TABLE_MAIN_USER); |
|
|
|
$TABLECOURSUSER = Database :: get_main_table(TABLE_MAIN_COURSE_USER); |
|
|
|
$TABLECOURSUSER = Database :: get_main_table(TABLE_MAIN_COURSE_USER); |
|
|
|
$TABLEANNOUNCEMENTS = "announcement"; |
|
|
|
$TABLEANNOUNCEMENTS = 'announcement'; |
|
|
|
$coursesRepositories = $_configuration['root_sys']; |
|
|
|
$coursesRepositories = $_configuration['root_sys']; |
|
|
|
|
|
|
|
|
|
|
|
/* |
|
|
|
/* |
|
|
@ -143,6 +143,7 @@ $coursesRepositories = $_configuration['root_sys']; |
|
|
|
* @package dokeos.library |
|
|
|
* @package dokeos.library |
|
|
|
*/ |
|
|
|
*/ |
|
|
|
class CourseManager { |
|
|
|
class CourseManager { |
|
|
|
|
|
|
|
|
|
|
|
/** |
|
|
|
/** |
|
|
|
* Returns all the information of a given coursecode |
|
|
|
* Returns all the information of a given coursecode |
|
|
|
* @param string $course_code, the course code |
|
|
|
* @param string $course_code, the course code |
|
|
@ -157,6 +158,7 @@ class CourseManager { |
|
|
|
$result = Database::fetch_array($sql_result); |
|
|
|
$result = Database::fetch_array($sql_result); |
|
|
|
return $result; |
|
|
|
return $result; |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
/** |
|
|
|
/** |
|
|
|
* Returns a list of courses. Should work with quickform syntax |
|
|
|
* Returns a list of courses. Should work with quickform syntax |
|
|
|
* @param integer Offset (from the 7th = '6'). Optional. |
|
|
|
* @param integer Offset (from the 7th = '6'). Optional. |
|
|
@ -170,26 +172,20 @@ class CourseManager { |
|
|
|
$tbl_course = Database::get_main_table(TABLE_MAIN_COURSE); |
|
|
|
$tbl_course = Database::get_main_table(TABLE_MAIN_COURSE); |
|
|
|
$sql = "SELECT code, title " . |
|
|
|
$sql = "SELECT code, title " . |
|
|
|
"FROM $tbl_course "; |
|
|
|
"FROM $tbl_course "; |
|
|
|
if(!empty($startwith)) |
|
|
|
if (!empty($startwith)) { |
|
|
|
{ |
|
|
|
|
|
|
|
$sql .= "WHERE LIKE title '".Database::escape_string($startwith)."%' "; |
|
|
|
$sql .= "WHERE LIKE title '".Database::escape_string($startwith)."%' "; |
|
|
|
if ($visibility !== -1 && $visibility == strval(intval($visibility))) { |
|
|
|
if ($visibility !== -1 && $visibility == strval(intval($visibility))) { |
|
|
|
$sql .= " AND visibility = $visibility "; |
|
|
|
$sql .= " AND visibility = $visibility "; |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
} else { |
|
|
|
else |
|
|
|
|
|
|
|
{ |
|
|
|
|
|
|
|
$sql .= "WHERE 1 "; |
|
|
|
$sql .= "WHERE 1 "; |
|
|
|
if ($visibility !== -1 && $visibility == strval(intval($visibility))) { |
|
|
|
if ($visibility !== -1 && $visibility == strval(intval($visibility))) { |
|
|
|
$sql .= " AND visibility = $visibility "; |
|
|
|
$sql .= " AND visibility = $visibility "; |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
if(!empty($orderby)) |
|
|
|
if (!empty($orderby)) { |
|
|
|
{ |
|
|
|
|
|
|
|
$sql .= " ORDER BY ".Database::escape_string($orderby)." "; |
|
|
|
$sql .= " ORDER BY ".Database::escape_string($orderby)." "; |
|
|
|
} |
|
|
|
} else { |
|
|
|
else |
|
|
|
|
|
|
|
{ |
|
|
|
|
|
|
|
$sql .= " ORDER BY 1 "; |
|
|
|
$sql .= " ORDER BY 1 "; |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
@ -199,7 +195,7 @@ class CourseManager { |
|
|
|
$sql .= Database::escape_string($orderdirection); |
|
|
|
$sql .= Database::escape_string($orderdirection); |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
if(!empty($howmany) and is_int($howmany) and $howmany>0) { |
|
|
|
if (!empty($howmany) && is_int($howmany) and $howmany > 0) { |
|
|
|
$sql .= ' LIMIT '.Database::escape_string($howmany); |
|
|
|
$sql .= ' LIMIT '.Database::escape_string($howmany); |
|
|
|
} else { |
|
|
|
} else { |
|
|
|
$sql .= ' LIMIT 1000000'; //virtually no limit |
|
|
|
$sql .= ' LIMIT 1000000'; //virtually no limit |
|
|
@ -214,7 +210,6 @@ class CourseManager { |
|
|
|
return api_store_result($res); |
|
|
|
return api_store_result($res); |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/** |
|
|
|
/** |
|
|
|
* Returns the access settings of the course: |
|
|
|
* Returns the access settings of the course: |
|
|
|
* which visibility; |
|
|
|
* which visibility; |
|
|
@ -250,7 +245,6 @@ class CourseManager { |
|
|
|
return $result['status']; |
|
|
|
return $result['status']; |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/** |
|
|
|
/** |
|
|
|
* Unsubscribe one or more users from a course |
|
|
|
* Unsubscribe one or more users from a course |
|
|
|
* @param int|array $user_id |
|
|
|
* @param int|array $user_id |
|
|
@ -260,12 +254,10 @@ class CourseManager { |
|
|
|
$tbl_session_rel_course_user = Database::get_main_table(TABLE_MAIN_SESSION_COURSE_USER); |
|
|
|
$tbl_session_rel_course_user = Database::get_main_table(TABLE_MAIN_SESSION_COURSE_USER); |
|
|
|
$tbl_session_rel_user = Database::get_main_table(TABLE_MAIN_SESSION_USER); |
|
|
|
$tbl_session_rel_user = Database::get_main_table(TABLE_MAIN_SESSION_USER); |
|
|
|
$tbl_session = Database::get_main_table(TABLE_MAIN_SESSION); |
|
|
|
$tbl_session = Database::get_main_table(TABLE_MAIN_SESSION); |
|
|
|
if(!is_array($user_id)) |
|
|
|
if (!is_array($user_id)) { |
|
|
|
{ |
|
|
|
|
|
|
|
$user_id = array($user_id); |
|
|
|
$user_id = array($user_id); |
|
|
|
} |
|
|
|
} |
|
|
|
if(count($user_id) == 0) |
|
|
|
if (count($user_id) == 0) { |
|
|
|
{ |
|
|
|
|
|
|
|
return; |
|
|
|
return; |
|
|
|
} |
|
|
|
} |
|
|
|
$user_ids = implode(',', $user_id); |
|
|
|
$user_ids = implode(',', $user_id); |
|
|
@ -292,10 +284,10 @@ class CourseManager { |
|
|
|
api_sql_query($sql, __FILE__, __LINE__); |
|
|
|
api_sql_query($sql, __FILE__, __LINE__); |
|
|
|
|
|
|
|
|
|
|
|
// Unsubscribe user from the course |
|
|
|
// Unsubscribe user from the course |
|
|
|
if(!empty($_SESSION["id_session"])) { |
|
|
|
if (!empty($_SESSION['id_session'])) { |
|
|
|
// delete in table session_rel_course_rel_user |
|
|
|
// delete in table session_rel_course_rel_user |
|
|
|
// We suppose the session is safe! |
|
|
|
// We suppose the session is safe! |
|
|
|
$my_session_id = Database::escape_string ($_SESSION["id_session"]); |
|
|
|
$my_session_id = Database::escape_string ($_SESSION['id_session']); |
|
|
|
$add_session_course_rel = "DELETE FROM $tbl_session_rel_course_user |
|
|
|
$add_session_course_rel = "DELETE FROM $tbl_session_rel_course_user |
|
|
|
WHERE id_session ='".$my_session_id."' |
|
|
|
WHERE id_session ='".$my_session_id."' |
|
|
|
AND course_code = '".Database::escape_string($_SESSION['_course']['id'])."' |
|
|
|
AND course_code = '".Database::escape_string($_SESSION['_course']['id'])."' |
|
|
@ -322,11 +314,9 @@ class CourseManager { |
|
|
|
$time = time(); |
|
|
|
$time = time(); |
|
|
|
$user_id = api_get_user_id(); |
|
|
|
$user_id = api_get_user_id(); |
|
|
|
event_system(LOG_UNSUBSCRIBE_USER_FROM_COURSE, LOG_COURSE_CODE, $course_code, $time, $user_id); |
|
|
|
event_system(LOG_UNSUBSCRIBE_USER_FROM_COURSE, LOG_COURSE_CODE, $course_code, $time, $user_id); |
|
|
|
|
|
|
|
|
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/** |
|
|
|
/** |
|
|
|
* Subscribe a user to a course. No checks are performed here to see if |
|
|
|
* Subscribe a user to a course. No checks are performed here to see if |
|
|
|
* course subscription is allowed. |
|
|
|
* course subscription is allowed. |
|
|
@ -424,6 +414,7 @@ class CourseManager { |
|
|
|
$user_id = api_get_user_id(); |
|
|
|
$user_id = api_get_user_id(); |
|
|
|
event_system(LOG_SUBSCRIBE_USER_TO_COURSE, LOG_COURSE_CODE, $course_code, $time, $user_id); |
|
|
|
event_system(LOG_SUBSCRIBE_USER_TO_COURSE, LOG_COURSE_CODE, $course_code, $time, $user_id); |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
// TODO: To be simplified. |
|
|
|
if ($result) { |
|
|
|
if ($result) { |
|
|
|
return true; |
|
|
|
return true; |
|
|
|
} else { |
|
|
|
} else { |
|
|
@ -444,7 +435,7 @@ class CourseManager { |
|
|
|
* @param string $status (optional) The user's status in the course |
|
|
|
* @param string $status (optional) The user's status in the course |
|
|
|
* |
|
|
|
* |
|
|
|
* @return boolean true if subscription succeeds, boolean false otherwise. |
|
|
|
* @return boolean true if subscription succeeds, boolean false otherwise. |
|
|
|
* @todo script has ugly ifelseifelseifelseif structure, improve |
|
|
|
* @todo script has ugly ifelseifelseifelseif structure, improve - OK, I will. |
|
|
|
*/ |
|
|
|
*/ |
|
|
|
public static function add_user_to_course ($user_id, $course_code, $status = STUDENT) { |
|
|
|
public static function add_user_to_course ($user_id, $course_code, $status = STUDENT) { |
|
|
|
$user_table = Database :: get_main_table(TABLE_MAIN_USER); |
|
|
|
$user_table = Database :: get_main_table(TABLE_MAIN_USER); |
|
|
@ -486,6 +477,7 @@ class CourseManager { |
|
|
|
status = '".$status."', |
|
|
|
status = '".$status."', |
|
|
|
sort = '". ($max_sort + 1)."'"; |
|
|
|
sort = '". ($max_sort + 1)."'"; |
|
|
|
$result = api_sql_query($add_course_user_entry_sql, __FILE__, __LINE__); |
|
|
|
$result = api_sql_query($add_course_user_entry_sql, __FILE__, __LINE__); |
|
|
|
|
|
|
|
// TODO: To be simplified. |
|
|
|
if ($result) { |
|
|
|
if ($result) { |
|
|
|
return true; |
|
|
|
return true; |
|
|
|
} else { |
|
|
|
} else { |
|
|
@ -514,13 +506,13 @@ class CourseManager { |
|
|
|
* @deprecated Function not in use |
|
|
|
* @deprecated Function not in use |
|
|
|
*/ |
|
|
|
*/ |
|
|
|
public static function get_real_course_code_select_html ($element_name, $has_size = true, $only_current_user_courses = true, $user_id) { |
|
|
|
public static function get_real_course_code_select_html ($element_name, $has_size = true, $only_current_user_courses = true, $user_id) { |
|
|
|
if ($only_current_user_courses == true) { |
|
|
|
if ($only_current_user_courses == true) { // TODO: To be simplified. |
|
|
|
$real_course_list = self :: get_real_course_list_of_user_as_course_admin($user_id); |
|
|
|
$real_course_list = self :: get_real_course_list_of_user_as_course_admin($user_id); |
|
|
|
} else { |
|
|
|
} else { |
|
|
|
$real_course_list = self :: get_real_course_list(); |
|
|
|
$real_course_list = self :: get_real_course_list(); |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
if ($has_size == true) { |
|
|
|
if ($has_size == true) { // TODO: To be simplified. |
|
|
|
$size_element = "size=\"".SELECT_BOX_SIZE."\""; |
|
|
|
$size_element = "size=\"".SELECT_BOX_SIZE."\""; |
|
|
|
} else { |
|
|
|
} else { |
|
|
|
$size_element = ""; |
|
|
|
$size_element = ""; |
|
|
@ -545,8 +537,7 @@ class CourseManager { |
|
|
|
* @todo move function to better place, main_api ? |
|
|
|
* @todo move function to better place, main_api ? |
|
|
|
*/ |
|
|
|
*/ |
|
|
|
public static function check_parameter ($parameter, $error_message) { |
|
|
|
public static function check_parameter ($parameter, $error_message) { |
|
|
|
if (!isset ($parameter) || empty ($parameter)) |
|
|
|
if (!isset ($parameter) || empty($parameter)) { // TODO: To be simplified. |
|
|
|
{ |
|
|
|
|
|
|
|
Display :: display_normal_message($error_message); |
|
|
|
Display :: display_normal_message($error_message); |
|
|
|
return false; |
|
|
|
return false; |
|
|
|
} |
|
|
|
} |
|
|
@ -558,14 +549,16 @@ class CourseManager { |
|
|
|
* @todo move function to better place, main_api ? |
|
|
|
* @todo move function to better place, main_api ? |
|
|
|
*/ |
|
|
|
*/ |
|
|
|
public static function check_parameter_or_fail ($parameter, $error_message) { |
|
|
|
public static function check_parameter_or_fail ($parameter, $error_message) { |
|
|
|
if (!self :: check_parameter($parameter, $error_message)) |
|
|
|
if (!self::check_parameter($parameter, $error_message)) { |
|
|
|
die(); |
|
|
|
die(); |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
/** |
|
|
|
/** |
|
|
|
* @return true if there already are one or more courses |
|
|
|
* @return true if there already are one or more courses |
|
|
|
* with the same code OR visual_code (visualcode), false otherwise |
|
|
|
* with the same code OR visual_code (visualcode), false otherwise |
|
|
|
*/ |
|
|
|
*/ |
|
|
|
|
|
|
|
// TODO: course_code_exists() is a better name. |
|
|
|
public static function is_existing_course_code ($wanted_course_code) { |
|
|
|
public static function is_existing_course_code ($wanted_course_code) { |
|
|
|
$course_table = Database :: get_main_table(TABLE_MAIN_COURSE); |
|
|
|
$course_table = Database :: get_main_table(TABLE_MAIN_COURSE); |
|
|
|
$wanted_course_code = Database::escape_string($wanted_course_code); |
|
|
|
$wanted_course_code = Database::escape_string($wanted_course_code); |
|
|
@ -573,7 +566,9 @@ class CourseManager { |
|
|
|
$sql_result = api_sql_query($sql_query, __FILE__, __LINE__); |
|
|
|
$sql_result = api_sql_query($sql_query, __FILE__, __LINE__); |
|
|
|
$result = Database::fetch_array($sql_result); |
|
|
|
$result = Database::fetch_array($sql_result); |
|
|
|
|
|
|
|
|
|
|
|
if ($result["number"] > 0) |
|
|
|
// TODO: To be simplified. |
|
|
|
|
|
|
|
//return ($result['number'] > 0); |
|
|
|
|
|
|
|
if ($result['number'] > 0) |
|
|
|
{ |
|
|
|
{ |
|
|
|
return true; |
|
|
|
return true; |
|
|
|
} |
|
|
|
} |
|
|
@ -591,8 +586,7 @@ class CourseManager { |
|
|
|
$sql_query = "SELECT * FROM $course_table WHERE target_course_code IS NULL"; |
|
|
|
$sql_query = "SELECT * FROM $course_table WHERE target_course_code IS NULL"; |
|
|
|
$sql_result = api_sql_query($sql_query, __FILE__, __LINE__); |
|
|
|
$sql_result = api_sql_query($sql_query, __FILE__, __LINE__); |
|
|
|
|
|
|
|
|
|
|
|
while ($result = Database::fetch_array($sql_result)) |
|
|
|
while ($result = Database::fetch_array($sql_result)) { |
|
|
|
{ |
|
|
|
|
|
|
|
$real_course_list[] = $result; |
|
|
|
$real_course_list[] = $result; |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
@ -607,10 +601,10 @@ class CourseManager { |
|
|
|
$sql_query = "SELECT * FROM $course_table WHERE target_course_code IS NOT NULL"; |
|
|
|
$sql_query = "SELECT * FROM $course_table WHERE target_course_code IS NOT NULL"; |
|
|
|
$sql_result = api_sql_query($sql_query, __FILE__, __LINE__); |
|
|
|
$sql_result = api_sql_query($sql_query, __FILE__, __LINE__); |
|
|
|
|
|
|
|
|
|
|
|
while ($result = Database::fetch_array($sql_result)) |
|
|
|
while ($result = Database::fetch_array($sql_result)) { |
|
|
|
{ |
|
|
|
|
|
|
|
$virtual_course_list[] = $result; |
|
|
|
$virtual_course_list[] = $result; |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
return $virtual_course_list; |
|
|
|
return $virtual_course_list; |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
@ -634,8 +628,7 @@ class CourseManager { |
|
|
|
//api_display_debug_info($sql_query); |
|
|
|
//api_display_debug_info($sql_query); |
|
|
|
$sql_result = api_sql_query($sql_query, __FILE__, __LINE__); |
|
|
|
$sql_result = api_sql_query($sql_query, __FILE__, __LINE__); |
|
|
|
|
|
|
|
|
|
|
|
while ($result = Database::fetch_array($sql_result)) |
|
|
|
while ($result = Database::fetch_array($sql_result)) { |
|
|
|
{ |
|
|
|
|
|
|
|
$result_array[] = $result; |
|
|
|
$result_array[] = $result; |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
@ -660,8 +653,7 @@ class CourseManager { |
|
|
|
|
|
|
|
|
|
|
|
$sql_result = api_sql_query($sql_query, __FILE__, __LINE__); |
|
|
|
$sql_result = api_sql_query($sql_query, __FILE__, __LINE__); |
|
|
|
|
|
|
|
|
|
|
|
while ($result = Database::fetch_array($sql_result)) |
|
|
|
while ($result = Database::fetch_array($sql_result)) { |
|
|
|
{ |
|
|
|
|
|
|
|
$result_array[] = $result; |
|
|
|
$result_array[] = $result; |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
@ -685,14 +677,14 @@ class CourseManager { |
|
|
|
* @param $user_id, the id of the user |
|
|
|
* @param $user_id, the id of the user |
|
|
|
* @param $course_info, an array with course info that you get using Database::get_course_info($course_system_code); |
|
|
|
* @param $course_info, an array with course info that you get using Database::get_course_info($course_system_code); |
|
|
|
* @return an array with indices |
|
|
|
* @return an array with indices |
|
|
|
* $return_result["title"] - the course title of the combined courses |
|
|
|
* $return_result['title'] - the course title of the combined courses |
|
|
|
* $return_result["code"] - the course code of the combined courses |
|
|
|
* $return_result['code'] - the course code of the combined courses |
|
|
|
*/ |
|
|
|
*/ |
|
|
|
public static function determine_course_title_from_course_info ($user_id, $course_info) { |
|
|
|
public static function determine_course_title_from_course_info ($user_id, $course_info) { |
|
|
|
$real_course_id = $course_info['system_code']; |
|
|
|
$real_course_id = $course_info['system_code']; |
|
|
|
$real_course_info = Database :: get_course_info($real_course_id); |
|
|
|
$real_course_info = Database :: get_course_info($real_course_id); |
|
|
|
$real_course_name = $real_course_info["title"]; |
|
|
|
$real_course_name = $real_course_info['title']; |
|
|
|
$real_course_visual_code = $real_course_info["visual_code"]; |
|
|
|
$real_course_visual_code = $real_course_info['visual_code']; |
|
|
|
$real_course_real_code = Database::escape_string($course_info['system_code']); |
|
|
|
$real_course_real_code = Database::escape_string($course_info['system_code']); |
|
|
|
if ($user_id != strval(intval($user_id))) { return array(); } |
|
|
|
if ($user_id != strval(intval($user_id))) { return array(); } |
|
|
|
|
|
|
|
|
|
|
@ -702,6 +694,8 @@ class CourseManager { |
|
|
|
$sql_result = api_sql_query($sql_query, __FILE__, __LINE__); |
|
|
|
$sql_result = api_sql_query($sql_query, __FILE__, __LINE__); |
|
|
|
$result = Database::fetch_array($sql_result); |
|
|
|
$result = Database::fetch_array($sql_result); |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// TODO: To be simplified. |
|
|
|
|
|
|
|
//$user_is_registered_in_real_course = !empty($result); |
|
|
|
if (!isset ($result) || empty ($result)) |
|
|
|
if (!isset ($result) || empty ($result)) |
|
|
|
{ |
|
|
|
{ |
|
|
|
$user_is_registered_in_real_course = false; |
|
|
|
$user_is_registered_in_real_course = false; |
|
|
@ -715,6 +709,7 @@ class CourseManager { |
|
|
|
|
|
|
|
|
|
|
|
$user_subscribed_virtual_course_list = self :: get_list_of_virtual_courses_for_specific_user_and_real_course($user_id, $real_course_id); |
|
|
|
$user_subscribed_virtual_course_list = self :: get_list_of_virtual_courses_for_specific_user_and_real_course($user_id, $real_course_id); |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// TODO: To be simplified. |
|
|
|
if (count($user_subscribed_virtual_course_list) > 0) |
|
|
|
if (count($user_subscribed_virtual_course_list) > 0) |
|
|
|
{ |
|
|
|
{ |
|
|
|
$virtual_courses_exist = true; |
|
|
|
$virtual_courses_exist = true; |
|
|
@ -726,33 +721,26 @@ class CourseManager { |
|
|
|
|
|
|
|
|
|
|
|
//now determine course code and name |
|
|
|
//now determine course code and name |
|
|
|
|
|
|
|
|
|
|
|
if ($user_is_registered_in_real_course && $virtual_courses_exist) |
|
|
|
if ($user_is_registered_in_real_course && $virtual_courses_exist) { |
|
|
|
{ |
|
|
|
$course_info['name'] = self :: create_combined_name($user_is_registered_in_real_course, $real_course_name, $user_subscribed_virtual_course_list); |
|
|
|
$course_info["name"] = self :: create_combined_name($user_is_registered_in_real_course, $real_course_name, $user_subscribed_virtual_course_list); |
|
|
|
|
|
|
|
$course_info['official_code'] = self :: create_combined_code($user_is_registered_in_real_course, $real_course_visual_code, $user_subscribed_virtual_course_list); |
|
|
|
$course_info['official_code'] = self :: create_combined_code($user_is_registered_in_real_course, $real_course_visual_code, $user_subscribed_virtual_course_list); |
|
|
|
} |
|
|
|
} |
|
|
|
else |
|
|
|
elseif ($user_is_registered_in_real_course) { |
|
|
|
if ($user_is_registered_in_real_course) |
|
|
|
|
|
|
|
{ |
|
|
|
|
|
|
|
//course name remains real course name |
|
|
|
//course name remains real course name |
|
|
|
$course_info["name"] = $real_course_name; |
|
|
|
$course_info['name'] = $real_course_name; |
|
|
|
$course_info['official_code'] = $real_course_visual_code; |
|
|
|
$course_info['official_code'] = $real_course_visual_code; |
|
|
|
} |
|
|
|
} |
|
|
|
else |
|
|
|
elseif ($virtual_courses_exist) { |
|
|
|
if ($virtual_courses_exist) |
|
|
|
$course_info['name'] = self :: create_combined_name($user_is_registered_in_real_course, $real_course_name, $user_subscribed_virtual_course_list); |
|
|
|
{ |
|
|
|
|
|
|
|
$course_info["name"] = self :: create_combined_name($user_is_registered_in_real_course, $real_course_name, $user_subscribed_virtual_course_list); |
|
|
|
|
|
|
|
$course_info['official_code'] = self :: create_combined_code($user_is_registered_in_real_course, $real_course_visual_code, $user_subscribed_virtual_course_list); |
|
|
|
$course_info['official_code'] = self :: create_combined_code($user_is_registered_in_real_course, $real_course_visual_code, $user_subscribed_virtual_course_list); |
|
|
|
} |
|
|
|
} else { |
|
|
|
else |
|
|
|
|
|
|
|
{ |
|
|
|
|
|
|
|
//course name remains real course name |
|
|
|
//course name remains real course name |
|
|
|
$course_info["name"] = $real_course_name; |
|
|
|
$course_info['name'] = $real_course_name; |
|
|
|
$course_info['official_code'] = $real_course_visual_code; |
|
|
|
$course_info['official_code'] = $real_course_visual_code; |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
$return_result["title"] = $course_info["name"]; |
|
|
|
$return_result['title'] = $course_info['name']; |
|
|
|
$return_result["code"] = $course_info['official_code']; |
|
|
|
$return_result['code'] = $course_info['official_code']; |
|
|
|
return $return_result; |
|
|
|
return $return_result; |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
@ -763,21 +751,18 @@ class CourseManager { |
|
|
|
* @param array $virtual_course_list, the list of virtual courses |
|
|
|
* @param array $virtual_course_list, the list of virtual courses |
|
|
|
*/ |
|
|
|
*/ |
|
|
|
public static function create_combined_name ($user_is_registered_in_real_course, $real_course_name, $virtual_course_list) { |
|
|
|
public static function create_combined_name ($user_is_registered_in_real_course, $real_course_name, $virtual_course_list) { |
|
|
|
if ($user_is_registered_in_real_course || count($virtual_course_list) > 1) |
|
|
|
if ($user_is_registered_in_real_course || count($virtual_course_list) > 1) { |
|
|
|
{ |
|
|
|
$complete_course_name_before = get_lang('CombinedCourse').' '; //from course_home lang file |
|
|
|
$complete_course_name_before = get_lang("CombinedCourse")." "; //from course_home lang file |
|
|
|
|
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
if ($user_is_registered_in_real_course) |
|
|
|
if ($user_is_registered_in_real_course) { |
|
|
|
{ |
|
|
|
|
|
|
|
//add real name to result |
|
|
|
//add real name to result |
|
|
|
$complete_course_name[] = $real_course_name; |
|
|
|
$complete_course_name[] = $real_course_name; |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
//add course titles of all virtual courses to the list |
|
|
|
//add course titles of all virtual courses to the list |
|
|
|
foreach ($virtual_course_list as $current_course) |
|
|
|
foreach ($virtual_course_list as $current_course) { |
|
|
|
{ |
|
|
|
$complete_course_name[] = $current_course['title']; |
|
|
|
$complete_course_name[] = $current_course["title"]; |
|
|
|
|
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
$complete_course_name = $complete_course_name_before.implode(' & ', $complete_course_name); |
|
|
|
$complete_course_name = $complete_course_name_before.implode(' & ', $complete_course_name); |
|
|
@ -789,18 +774,16 @@ class CourseManager { |
|
|
|
* Create a course code based on all real and virtual courses the user is registered in. |
|
|
|
* Create a course code based on all real and virtual courses the user is registered in. |
|
|
|
*/ |
|
|
|
*/ |
|
|
|
public static function create_combined_code ($user_is_registered_in_real_course, $real_course_code, $virtual_course_list) { |
|
|
|
public static function create_combined_code ($user_is_registered_in_real_course, $real_course_code, $virtual_course_list) { |
|
|
|
$complete_course_code .= ""; |
|
|
|
$complete_course_code .= ''; |
|
|
|
|
|
|
|
|
|
|
|
if ($user_is_registered_in_real_course) |
|
|
|
if ($user_is_registered_in_real_course) { |
|
|
|
{ |
|
|
|
|
|
|
|
//add real name to result |
|
|
|
//add real name to result |
|
|
|
$complete_course_code[] = $real_course_code; |
|
|
|
$complete_course_code[] = $real_course_code; |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
//add course titles of all virtual courses to the list |
|
|
|
//add course titles of all virtual courses to the list |
|
|
|
foreach ($virtual_course_list as $current_course) |
|
|
|
foreach ($virtual_course_list as $current_course) { |
|
|
|
{ |
|
|
|
$complete_course_code[] = $current_course['visual_code']; |
|
|
|
$complete_course_code[] = $current_course["visual_code"]; |
|
|
|
|
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
$complete_course_code = implode(' & ', $complete_course_code); |
|
|
|
$complete_course_code = implode(' & ', $complete_course_code); |
|
|
@ -821,8 +804,7 @@ class CourseManager { |
|
|
|
$sql_query = "SELECT * FROM $table WHERE target_course_code = '$real_course_code'"; |
|
|
|
$sql_query = "SELECT * FROM $table WHERE target_course_code = '$real_course_code'"; |
|
|
|
$sql_result = api_sql_query($sql_query, __FILE__, __LINE__); |
|
|
|
$sql_result = api_sql_query($sql_query, __FILE__, __LINE__); |
|
|
|
$result = array (); |
|
|
|
$result = array (); |
|
|
|
while ($virtual_course = Database::fetch_array($sql_result)) |
|
|
|
while ($virtual_course = Database::fetch_array($sql_result)) { |
|
|
|
{ |
|
|
|
|
|
|
|
$result[] = $virtual_course; |
|
|
|
$result[] = $virtual_course; |
|
|
|
} |
|
|
|
} |
|
|
|
return $result; |
|
|
|
return $result; |
|
|
@ -838,8 +820,9 @@ class CourseManager { |
|
|
|
$sql_query = "SELECT * FROM $table WHERE code = '$system_code'"; |
|
|
|
$sql_query = "SELECT * FROM $table WHERE code = '$system_code'"; |
|
|
|
$sql_result = api_sql_query($sql_query, __FILE__, __LINE__); |
|
|
|
$sql_result = api_sql_query($sql_query, __FILE__, __LINE__); |
|
|
|
$result = Database::fetch_array($sql_result); |
|
|
|
$result = Database::fetch_array($sql_result); |
|
|
|
$target_number = $result["target_course_code"]; |
|
|
|
$target_number = $result['target_course_code']; |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// TODO: To be simplified. |
|
|
|
if ($target_number == NULL) |
|
|
|
if ($target_number == NULL) |
|
|
|
{ |
|
|
|
{ |
|
|
|
return false; //this is not a virtual course |
|
|
|
return false; //this is not a virtual course |
|
|
@ -861,8 +844,9 @@ class CourseManager { |
|
|
|
$sql_query = "SELECT * FROM $table WHERE visual_code = '$visual_code'"; |
|
|
|
$sql_query = "SELECT * FROM $table WHERE visual_code = '$visual_code'"; |
|
|
|
$sql_result = api_sql_query($sql_query, __FILE__, __LINE__); |
|
|
|
$sql_result = api_sql_query($sql_query, __FILE__, __LINE__); |
|
|
|
$result = Database::fetch_array($sql_result); |
|
|
|
$result = Database::fetch_array($sql_result); |
|
|
|
$target_number = $result["target_course_code"]; |
|
|
|
$target_number = $result['target_course_code']; |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// TODO: To be simplified. |
|
|
|
if ($target_number == NULL) |
|
|
|
if ($target_number == NULL) |
|
|
|
{ |
|
|
|
{ |
|
|
|
return false; //this is not a virtual course |
|
|
|
return false; //this is not a virtual course |
|
|
@ -880,6 +864,7 @@ class CourseManager { |
|
|
|
$user_subscribed_virtual_course_list = self :: get_list_of_virtual_courses_for_specific_user_and_real_course($user_id, $real_course_code); |
|
|
|
$user_subscribed_virtual_course_list = self :: get_list_of_virtual_courses_for_specific_user_and_real_course($user_id, $real_course_code); |
|
|
|
$number_of_virtual_courses = count($user_subscribed_virtual_course_list); |
|
|
|
$number_of_virtual_courses = count($user_subscribed_virtual_course_list); |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// TODO: To be simplified. |
|
|
|
if (count($user_subscribed_virtual_course_list) > 0) |
|
|
|
if (count($user_subscribed_virtual_course_list) > 0) |
|
|
|
{ |
|
|
|
{ |
|
|
|
return true; |
|
|
|
return true; |
|
|
@ -902,8 +887,7 @@ class CourseManager { |
|
|
|
$sql_query = "SELECT * FROM $table WHERE target_course_code = '$real_course_code'"; |
|
|
|
$sql_query = "SELECT * FROM $table WHERE target_course_code = '$real_course_code'"; |
|
|
|
$sql_result = api_sql_query($sql_query, __FILE__, __LINE__); |
|
|
|
$sql_result = api_sql_query($sql_query, __FILE__, __LINE__); |
|
|
|
$result_array = array (); |
|
|
|
$result_array = array (); |
|
|
|
while ($result = Database::fetch_array($sql_result)) |
|
|
|
while ($result = Database::fetch_array($sql_result)) { |
|
|
|
{ |
|
|
|
|
|
|
|
$result_array[] = $result; |
|
|
|
$result_array[] = $result; |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
@ -924,7 +908,7 @@ class CourseManager { |
|
|
|
$sql_query = "SELECT * FROM $course_table WHERE code = '$virtual_course_code'"; |
|
|
|
$sql_query = "SELECT * FROM $course_table WHERE code = '$virtual_course_code'"; |
|
|
|
$sql_result = api_sql_query($sql_query, __FILE__, __LINE__); |
|
|
|
$sql_result = api_sql_query($sql_query, __FILE__, __LINE__); |
|
|
|
$result = Database::fetch_array($sql_result); |
|
|
|
$result = Database::fetch_array($sql_result); |
|
|
|
$target_course_code = $result["target_course_code"]; |
|
|
|
$target_course_code = $result['target_course_code']; |
|
|
|
|
|
|
|
|
|
|
|
return $target_course_code; |
|
|
|
return $target_course_code; |
|
|
|
} |
|
|
|
} |
|
|
@ -953,7 +937,7 @@ class CourseManager { |
|
|
|
$sql_result = api_sql_query($sql_query, __FILE__, __LINE__); |
|
|
|
$sql_result = api_sql_query($sql_query, __FILE__, __LINE__); |
|
|
|
$result = Database::fetch_array($sql_result); |
|
|
|
$result = Database::fetch_array($sql_result); |
|
|
|
|
|
|
|
|
|
|
|
if (!isset ($result) || empty ($result)) { |
|
|
|
if (!isset ($result) || empty ($result)) { // TODO: To be simplified. |
|
|
|
if ($in_a_session) { |
|
|
|
if ($in_a_session) { |
|
|
|
$sql = 'SELECT 1 FROM '.Database :: get_main_table(TABLE_MAIN_SESSION_COURSE_USER).' |
|
|
|
$sql = 'SELECT 1 FROM '.Database :: get_main_table(TABLE_MAIN_SESSION_COURSE_USER).' |
|
|
|
WHERE id_user = '.$user_id.' AND course_code="'.$course_code.'"'; |
|
|
|
WHERE id_user = '.$user_id.' AND course_code="'.$course_code.'"'; |
|
|
@ -999,7 +983,12 @@ class CourseManager { |
|
|
|
$sql_result = api_sql_query($sql_query, __FILE__, __LINE__); |
|
|
|
$sql_result = api_sql_query($sql_query, __FILE__, __LINE__); |
|
|
|
if (Database::num_rows($sql_result) > 0) { |
|
|
|
if (Database::num_rows($sql_result) > 0) { |
|
|
|
$status = Database::result($sql_result, 0, 'status'); |
|
|
|
$status = Database::result($sql_result, 0, 'status'); |
|
|
|
if ($status==1) return true; else return false; |
|
|
|
// TODO: To be simplified. |
|
|
|
|
|
|
|
if ($status == 1) { |
|
|
|
|
|
|
|
return true; |
|
|
|
|
|
|
|
} else { |
|
|
|
|
|
|
|
return false; |
|
|
|
|
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
return false; |
|
|
|
return false; |
|
|
|
} |
|
|
|
} |
|
|
@ -1028,6 +1017,7 @@ class CourseManager { |
|
|
|
$sql_result = api_sql_query($sql_query, __FILE__, __LINE__); |
|
|
|
$sql_result = api_sql_query($sql_query, __FILE__, __LINE__); |
|
|
|
$result = Database::fetch_array($sql_result); |
|
|
|
$result = Database::fetch_array($sql_result); |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// TODO: To be simplified. |
|
|
|
if (!isset ($result) || empty ($result)) |
|
|
|
if (!isset ($result) || empty ($result)) |
|
|
|
{ |
|
|
|
{ |
|
|
|
return false; //user is not registered in course |
|
|
|
return false; //user is not registered in course |
|
|
@ -1052,8 +1042,9 @@ class CourseManager { |
|
|
|
AND id_user='$user_id'"; |
|
|
|
AND id_user='$user_id'"; |
|
|
|
|
|
|
|
|
|
|
|
$result = api_sql_query($sql, __FILE__, __LINE__); |
|
|
|
$result = api_sql_query($sql, __FILE__, __LINE__); |
|
|
|
if(Database::num_rows($result)) |
|
|
|
if (Database::num_rows($result)) { |
|
|
|
return true; |
|
|
|
return true; |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
// is it a course coach ? |
|
|
|
// is it a course coach ? |
|
|
|
$sql = "SELECT id_coach |
|
|
|
$sql = "SELECT id_coach |
|
|
@ -1063,8 +1054,9 @@ class CourseManager { |
|
|
|
AND course_code='$course_code'"; |
|
|
|
AND course_code='$course_code'"; |
|
|
|
|
|
|
|
|
|
|
|
$result = api_sql_query($sql, __FILE__, __LINE__); |
|
|
|
$result = api_sql_query($sql, __FILE__, __LINE__); |
|
|
|
if(Database::num_rows($result)) |
|
|
|
if (Database::num_rows($result)) { |
|
|
|
return true; |
|
|
|
return true; |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
// is it a session coach ? |
|
|
|
// is it a session coach ? |
|
|
|
$sql = "SELECT id_coach |
|
|
|
$sql = "SELECT id_coach |
|
|
@ -1073,11 +1065,11 @@ class CourseManager { |
|
|
|
AND id_coach='$user_id'"; |
|
|
|
AND id_coach='$user_id'"; |
|
|
|
|
|
|
|
|
|
|
|
$result = api_sql_query($sql, __FILE__, __LINE__); |
|
|
|
$result = api_sql_query($sql, __FILE__, __LINE__); |
|
|
|
if(Database::num_rows($result)) |
|
|
|
if (Database::num_rows($result)) { |
|
|
|
return true; |
|
|
|
return true; |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
return false; |
|
|
|
return false; |
|
|
|
|
|
|
|
|
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
@ -1115,7 +1107,7 @@ class CourseManager { |
|
|
|
if ($session_id != 0) { |
|
|
|
if ($session_id != 0) { |
|
|
|
$sql .= ' AND session_course_user.id_session = '.$session_id; |
|
|
|
$sql .= ' AND session_course_user.id_session = '.$session_id; |
|
|
|
} |
|
|
|
} |
|
|
|
$where[] = ' session_course_user.course_code IS NOT NULL '; |
|
|
|
$where[] = ' session_course_user.course_code IS NOT NULL '; // TODO: Tobe checked for correct SQL syntax after concatenation. |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
if ($session_id == 0) { |
|
|
|
if ($session_id == 0) { |
|
|
@ -1123,7 +1115,7 @@ class CourseManager { |
|
|
|
$sql .= ' LEFT JOIN '.$table_course_user.' as course_rel_user |
|
|
|
$sql .= ' LEFT JOIN '.$table_course_user.' as course_rel_user |
|
|
|
ON user.user_id = course_rel_user.user_id |
|
|
|
ON user.user_id = course_rel_user.user_id |
|
|
|
AND course_rel_user.course_code="'.Database::escape_string($course_code).'"'; |
|
|
|
AND course_rel_user.course_code="'.Database::escape_string($course_code).'"'; |
|
|
|
$where[] = ' course_rel_user.course_code IS NOT NULL '; |
|
|
|
$where[] = ' course_rel_user.course_code IS NOT NULL '; // TODO: Tobe checked for correct SQL syntax after concatenation. |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
$sql .= ' WHERE '.implode(' OR ', $where); |
|
|
|
$sql .= ' WHERE '.implode(' OR ', $where); |
|
|
@ -1134,19 +1126,18 @@ class CourseManager { |
|
|
|
$rs = api_sql_query($sql, __FILE__, __LINE__); |
|
|
|
$rs = api_sql_query($sql, __FILE__, __LINE__); |
|
|
|
|
|
|
|
|
|
|
|
while ($user = Database::fetch_array($rs)) { |
|
|
|
while ($user = Database::fetch_array($rs)) { |
|
|
|
$user_infos = Database :: get_user_info_from_id($user['user_id']); |
|
|
|
$user_info = Database :: get_user_info_from_id($user['user_id']); |
|
|
|
$user_infos['status'] = $user['status']; |
|
|
|
$user_info['status'] = $user['status']; |
|
|
|
if (isset($user['role'])) { |
|
|
|
if (isset($user['role'])) { |
|
|
|
$user_infos['role'] = $user['role']; |
|
|
|
$user_info['role'] = $user['role']; |
|
|
|
} |
|
|
|
} |
|
|
|
if (isset($user['tutor_id'])) { |
|
|
|
if (isset($user['tutor_id'])) { |
|
|
|
$user_infos['tutor_id'] = $user['tutor_id']; |
|
|
|
$user_info['tutor_id'] = $user['tutor_id']; |
|
|
|
} |
|
|
|
} |
|
|
|
$a_users[$user['user_id']] = $user_infos; |
|
|
|
$a_users[$user['user_id']] = $user_info; |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
return $a_users; |
|
|
|
return $a_users; |
|
|
|
|
|
|
|
|
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
/** |
|
|
|
/** |
|
|
@ -1166,30 +1157,28 @@ class CourseManager { |
|
|
|
//We get the coach for the given course in a given session |
|
|
|
//We get the coach for the given course in a given session |
|
|
|
$sql = 'SELECT id_coach FROM '.$table_session_course.' WHERE id_session="'.$session_id.'" AND course_code="'.$course_code.'"'; |
|
|
|
$sql = 'SELECT id_coach FROM '.$table_session_course.' WHERE id_session="'.$session_id.'" AND course_code="'.$course_code.'"'; |
|
|
|
$rs = api_sql_query($sql, __FILE__, __LINE__); |
|
|
|
$rs = api_sql_query($sql, __FILE__, __LINE__); |
|
|
|
while($user = Database::fetch_array($rs)) |
|
|
|
while ($user = Database::fetch_array($rs)) { |
|
|
|
{ |
|
|
|
$user_info = Database :: get_user_info_from_id($user['id_coach']); |
|
|
|
$user_infos = Database :: get_user_info_from_id($user['id_coach']); |
|
|
|
$user_info['status'] = $user['status']; |
|
|
|
$user_infos["status"] = $user["status"]; |
|
|
|
$user_info['role'] = $user['role']; |
|
|
|
$user_infos["role"] = $user["role"]; |
|
|
|
$user_info['tutor_id'] = $user['tutor_id']; |
|
|
|
$user_infos["tutor_id"] = $user["tutor_id"]; |
|
|
|
$user_info['email'] = $user['email']; |
|
|
|
$user_infos['email'] = $user['email']; |
|
|
|
$a_users[$user['id_coach']] = $user_info; |
|
|
|
$a_users[$user['id_coach']] = $user_infos; |
|
|
|
|
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
//We get the session coach |
|
|
|
//We get the session coach |
|
|
|
$sql = 'SELECT id_coach FROM '.$table_session.' WHERE id="'.$session_id.'"'; |
|
|
|
$sql = 'SELECT id_coach FROM '.$table_session.' WHERE id="'.$session_id.'"'; |
|
|
|
$rs = api_sql_query($sql, __FILE__, __LINE__); |
|
|
|
$rs = api_sql_query($sql, __FILE__, __LINE__); |
|
|
|
$user_infos=array(); |
|
|
|
$user_info = array(); |
|
|
|
$session_id_coach = Database::result($rs, 0, 'id_coach'); |
|
|
|
$session_id_coach = Database::result($rs, 0, 'id_coach'); |
|
|
|
$user_infos = Database :: get_user_info_from_id($session_id_coach); |
|
|
|
$user_info = Database :: get_user_info_from_id($session_id_coach); |
|
|
|
$user_infos["status"] = $user["status"]; |
|
|
|
$user_info['status'] = $user['status']; |
|
|
|
$user_infos["role"] = $user["role"]; |
|
|
|
$user_info['role'] = $user['role']; |
|
|
|
$user_infos["tutor_id"] = $user["tutor_id"]; |
|
|
|
$user_info['tutor_id'] = $user['tutor_id']; |
|
|
|
$user_infos['email'] = $user['email']; |
|
|
|
$user_info['email'] = $user['email']; |
|
|
|
$a_users[$session_id_coach] = $user_infos; |
|
|
|
$a_users[$session_id_coach] = $user_info; |
|
|
|
|
|
|
|
|
|
|
|
return $a_users; |
|
|
|
return $a_users; |
|
|
|
|
|
|
|
|
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
@ -1207,35 +1196,33 @@ class CourseManager { |
|
|
|
$session_id = intval($session_id); |
|
|
|
$session_id = intval($session_id); |
|
|
|
$course_code = Database::escape_string($course_code); |
|
|
|
$course_code = Database::escape_string($course_code); |
|
|
|
|
|
|
|
|
|
|
|
if($session_id == 0) |
|
|
|
if ($session_id == 0) { |
|
|
|
{ |
|
|
|
|
|
|
|
// students directly subscribed to the course |
|
|
|
// students directly subscribed to the course |
|
|
|
$table = Database :: get_main_table(TABLE_MAIN_COURSE_USER); |
|
|
|
$table = Database :: get_main_table(TABLE_MAIN_COURSE_USER); |
|
|
|
$sql_query = "SELECT * FROM $table WHERE course_code = '$course_code' AND status = 5"; |
|
|
|
$sql_query = "SELECT * FROM $table WHERE course_code = '$course_code' AND status = 5"; |
|
|
|
$rs = api_sql_query($sql_query, __FILE__, __LINE__); |
|
|
|
$rs = api_sql_query($sql_query, __FILE__, __LINE__); |
|
|
|
while($student = Database::fetch_array($rs)) |
|
|
|
while ($student = Database::fetch_array($rs)) { |
|
|
|
{ |
|
|
|
|
|
|
|
$a_students[$student['user_id']] = $student; |
|
|
|
$a_students[$student['user_id']] = $student; |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
// students subscribed to the course through a session |
|
|
|
// students subscribed to the course through a session |
|
|
|
|
|
|
|
|
|
|
|
if(api_get_setting('use_session_mode')=='true' && $with_session) |
|
|
|
if (api_get_setting('use_session_mode') == 'true' && $with_session) { |
|
|
|
{ |
|
|
|
|
|
|
|
$table = Database::get_main_table(TABLE_MAIN_SESSION_COURSE_USER); |
|
|
|
$table = Database::get_main_table(TABLE_MAIN_SESSION_COURSE_USER); |
|
|
|
$sql_query = "SELECT * FROM $table WHERE course_code = '$course_code'"; |
|
|
|
$sql_query = "SELECT * FROM $table WHERE course_code = '$course_code'"; |
|
|
|
if($session_id!=0) |
|
|
|
if ($session_id != 0) { |
|
|
|
$sql_query .= ' AND id_session = '.$session_id; |
|
|
|
$sql_query .= ' AND id_session = '.$session_id; |
|
|
|
|
|
|
|
} |
|
|
|
$rs = api_sql_query($sql_query, __FILE__, __LINE__); |
|
|
|
$rs = api_sql_query($sql_query, __FILE__, __LINE__); |
|
|
|
while($student = Database::fetch_array($rs)) |
|
|
|
while($student = Database::fetch_array($rs)) { |
|
|
|
{ |
|
|
|
|
|
|
|
$a_students[$student['id_user']] = $student; |
|
|
|
$a_students[$student['id_user']] = $student; |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
return $a_students; |
|
|
|
return $a_students; |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
/** |
|
|
|
/** |
|
|
|
* Return user info array of all teacher-users registered in the specified real or virtual course |
|
|
|
* Return user info array of all teacher-users registered in the specified real or virtual course |
|
|
|
* This only returns the users that are registered in this actual course, not linked courses. |
|
|
|
* This only returns the users that are registered in this actual course, not linked courses. |
|
|
@ -1255,8 +1242,7 @@ class CourseManager { |
|
|
|
"AND cu.status = 1 " . |
|
|
|
"AND cu.status = 1 " . |
|
|
|
"AND cu.user_id = u.user_id"; |
|
|
|
"AND cu.user_id = u.user_id"; |
|
|
|
$rs = api_sql_query($sql_query, __FILE__, __LINE__); |
|
|
|
$rs = api_sql_query($sql_query, __FILE__, __LINE__); |
|
|
|
while($teacher = Database::fetch_array($rs)) |
|
|
|
while ($teacher = Database::fetch_array($rs)) { |
|
|
|
{ |
|
|
|
|
|
|
|
$a_students[$teacher['user_id']] = $teacher; |
|
|
|
$a_students[$teacher['user_id']] = $teacher; |
|
|
|
} |
|
|
|
} |
|
|
|
return $a_students; |
|
|
|
return $a_students; |
|
|
@ -1275,18 +1261,15 @@ class CourseManager { |
|
|
|
|
|
|
|
|
|
|
|
//get users from real course |
|
|
|
//get users from real course |
|
|
|
$user_list = self :: get_user_list_from_course_code($course_code, $with_sessions, $session_id); |
|
|
|
$user_list = self :: get_user_list_from_course_code($course_code, $with_sessions, $session_id); |
|
|
|
foreach ($user_list as $this_user) |
|
|
|
foreach ($user_list as $this_user) { |
|
|
|
{ |
|
|
|
|
|
|
|
$complete_user_list[] = $this_user; |
|
|
|
$complete_user_list[] = $this_user; |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
//get users from linked courses |
|
|
|
//get users from linked courses |
|
|
|
foreach ($virtual_course_list as $this_course) |
|
|
|
foreach ($virtual_course_list as $this_course) { |
|
|
|
{ |
|
|
|
$course_code = $this_course['code']; |
|
|
|
$course_code = $this_course["code"]; |
|
|
|
|
|
|
|
$user_list = self :: get_user_list_from_course_code($course_code, $with_sessions, $session_id); |
|
|
|
$user_list = self :: get_user_list_from_course_code($course_code, $with_sessions, $session_id); |
|
|
|
foreach ($user_list as $this_user) |
|
|
|
foreach ($user_list as $this_user) { |
|
|
|
{ |
|
|
|
|
|
|
|
$complete_user_list[] = $this_user; |
|
|
|
$complete_user_list[] = $this_user; |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
@ -1318,8 +1301,7 @@ class CourseManager { |
|
|
|
|
|
|
|
|
|
|
|
$sql_result = api_sql_query($sql_query, __FILE__, __LINE__); |
|
|
|
$sql_result = api_sql_query($sql_query, __FILE__, __LINE__); |
|
|
|
|
|
|
|
|
|
|
|
while ($result = Database::fetch_array($sql_result)) |
|
|
|
while ($result = Database::fetch_array($sql_result)) { |
|
|
|
{ |
|
|
|
|
|
|
|
$result_array[] = $result; |
|
|
|
$result_array[] = $result; |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
@ -1353,9 +1335,8 @@ class CourseManager { |
|
|
|
GROUP BY g.id |
|
|
|
GROUP BY g.id |
|
|
|
ORDER BY g.name"; |
|
|
|
ORDER BY g.name"; |
|
|
|
|
|
|
|
|
|
|
|
$result = api_sql_query($sql, __FILE__, __LINE__) or die(mysql_error()); |
|
|
|
$result = api_sql_query($sql, __FILE__, __LINE__); |
|
|
|
while ($group_data = Database::fetch_array($result)) |
|
|
|
while ($group_data = Database::fetch_array($result)) { |
|
|
|
{ |
|
|
|
|
|
|
|
$group_list[$group_data['id']] = $group_data; |
|
|
|
$group_list[$group_data['id']] = $group_data; |
|
|
|
} |
|
|
|
} |
|
|
|
return $group_list; |
|
|
|
return $group_list; |
|
|
@ -1375,11 +1356,11 @@ class CourseManager { |
|
|
|
*/ |
|
|
|
*/ |
|
|
|
public static function attempt_create_virtual_course ($real_course_code, $course_title, $wanted_course_code, $course_language, $course_category) { |
|
|
|
public static function attempt_create_virtual_course ($real_course_code, $course_title, $wanted_course_code, $course_language, $course_category) { |
|
|
|
//better: create parameter list, check the entire list, when false display errormessage |
|
|
|
//better: create parameter list, check the entire list, when false display errormessage |
|
|
|
self :: check_parameter_or_fail($real_course_code, "Unspecified parameter: real course id."); |
|
|
|
self :: check_parameter_or_fail($real_course_code, 'Unspecified parameter: real course id.'); |
|
|
|
self :: check_parameter_or_fail($course_title, "Unspecified parameter: course title."); |
|
|
|
self :: check_parameter_or_fail($course_title, 'Unspecified parameter: course title.'); |
|
|
|
self :: check_parameter_or_fail($wanted_course_code, "Unspecified parameter: wanted course code."); |
|
|
|
self :: check_parameter_or_fail($wanted_course_code, 'Unspecified parameter: wanted course code.'); |
|
|
|
self :: check_parameter_or_fail($course_language, "Unspecified parameter: course language."); |
|
|
|
self :: check_parameter_or_fail($course_language, 'Unspecified parameter: course language.'); |
|
|
|
self :: check_parameter_or_fail($course_category, "Unspecified parameter: course category."); |
|
|
|
self :: check_parameter_or_fail($course_category, 'Unspecified parameter: course category.'); |
|
|
|
|
|
|
|
|
|
|
|
$creation_success = self :: create_virtual_course($real_course_code, $course_title, $wanted_course_code, $course_language, $course_category); |
|
|
|
$creation_success = self :: create_virtual_course($real_course_code, $course_title, $wanted_course_code, $course_language, $course_category); |
|
|
|
|
|
|
|
|
|
|
@ -1412,18 +1393,17 @@ class CourseManager { |
|
|
|
|
|
|
|
|
|
|
|
//check: virtual course creation fails if another course has the same |
|
|
|
//check: virtual course creation fails if another course has the same |
|
|
|
//code, real or fake. |
|
|
|
//code, real or fake. |
|
|
|
if (self :: is_existing_course_code($wanted_course_code)) |
|
|
|
if (self :: is_existing_course_code($wanted_course_code)) { |
|
|
|
{ |
|
|
|
Display :: display_error_message($wanted_course_code.' - '.get_lang('CourseCodeAlreadyExists')); |
|
|
|
Display :: display_error_message($wanted_course_code." - ".get_lang("CourseCodeAlreadyExists")); |
|
|
|
|
|
|
|
return false; |
|
|
|
return false; |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
//add data to course table, course_rel_user |
|
|
|
//add data to course table, course_rel_user |
|
|
|
$course_sys_code = $wanted_course_code; |
|
|
|
$course_sys_code = $wanted_course_code; |
|
|
|
$course_screen_code = $wanted_course_code; |
|
|
|
$course_screen_code = $wanted_course_code; |
|
|
|
$course_repository = $real_course_info["directory"]; |
|
|
|
$course_repository = $real_course_info['directory']; |
|
|
|
$course_db_name = $real_course_info["db_name"]; |
|
|
|
$course_db_name = $real_course_info['db_name']; |
|
|
|
$responsible_teacher = $real_course_info["tutor_name"]; |
|
|
|
$responsible_teacher = $real_course_info['tutor_name']; |
|
|
|
$faculty_shortname = $course_category; |
|
|
|
$faculty_shortname = $course_category; |
|
|
|
// $course_title = $course_title; |
|
|
|
// $course_title = $course_title; |
|
|
|
// $course_language = $course_language; |
|
|
|
// $course_language = $course_language; |
|
|
@ -1571,9 +1551,10 @@ class CourseManager { |
|
|
|
} |
|
|
|
} |
|
|
|
$course_dir = api_get_path(SYS_COURSE_PATH).$course['directory']; |
|
|
|
$course_dir = api_get_path(SYS_COURSE_PATH).$course['directory']; |
|
|
|
$archive_dir = api_get_path(SYS_ARCHIVE_PATH).$course['directory'].'_'.time(); |
|
|
|
$archive_dir = api_get_path(SYS_ARCHIVE_PATH).$course['directory'].'_'.time(); |
|
|
|
if (is_dir($course_dir)) |
|
|
|
if (is_dir($course_dir)) { |
|
|
|
rename($course_dir, $archive_dir); |
|
|
|
rename($course_dir, $archive_dir); |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
// Unsubscribe all classes from the course |
|
|
|
// Unsubscribe all classes from the course |
|
|
|
$sql = "DELETE FROM $table_course_class WHERE course_code='".$code."'"; |
|
|
|
$sql = "DELETE FROM $table_course_class WHERE course_code='".$code."'"; |
|
|
@ -1627,10 +1608,11 @@ class CourseManager { |
|
|
|
|
|
|
|
|
|
|
|
global $_configuration; |
|
|
|
global $_configuration; |
|
|
|
if ($_configuration['multiple_access_urls'] == true) { |
|
|
|
if ($_configuration['multiple_access_urls'] == true) { |
|
|
|
require_once (api_get_path(LIBRARY_PATH).'urlmanager.lib.php'); |
|
|
|
require_once api_get_path(LIBRARY_PATH).'urlmanager.lib.php'; |
|
|
|
$url_id = 1; |
|
|
|
$url_id = 1; |
|
|
|
if (api_get_current_access_url_id()!=-1) |
|
|
|
if (api_get_current_access_url_id() != -1) { |
|
|
|
$url_id = api_get_current_access_url_id(); |
|
|
|
$url_id = api_get_current_access_url_id(); |
|
|
|
|
|
|
|
} |
|
|
|
UrlManager::delete_url_rel_course($code, $url_id); |
|
|
|
UrlManager::delete_url_rel_course($code, $url_id); |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
@ -1660,6 +1642,7 @@ class CourseManager { |
|
|
|
while($row_field_all_id = Database::fetch_row($res_field_all_ids)){ |
|
|
|
while($row_field_all_id = Database::fetch_row($res_field_all_ids)){ |
|
|
|
$field_all_ids[] = $row_field_all_id[0]; |
|
|
|
$field_all_ids[] = $row_field_all_id[0]; |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
// TODO: Is $field_ids an array? Always? |
|
|
|
if (count($field_ids) > 0) { |
|
|
|
if (count($field_ids) > 0) { |
|
|
|
foreach ($field_ids as $field_id) { |
|
|
|
foreach ($field_ids as $field_id) { |
|
|
|
// check if field id is used into table field value |
|
|
|
// check if field id is used into table field value |
|
|
@ -1689,8 +1672,7 @@ class CourseManager { |
|
|
|
public static function create_database_dump ($course_code) { |
|
|
|
public static function create_database_dump ($course_code) { |
|
|
|
global $_configuration; |
|
|
|
global $_configuration; |
|
|
|
|
|
|
|
|
|
|
|
if ($_configuration['single_database']) |
|
|
|
if ($_configuration['single_database']) { |
|
|
|
{ |
|
|
|
|
|
|
|
return; |
|
|
|
return; |
|
|
|
} |
|
|
|
} |
|
|
|
$sql_dump = ''; |
|
|
|
$sql_dump = ''; |
|
|
@ -1701,14 +1683,11 @@ class CourseManager { |
|
|
|
$course = Database::fetch_array($res); |
|
|
|
$course = Database::fetch_array($res); |
|
|
|
$sql = "SHOW TABLES FROM ".$course['db_name']; |
|
|
|
$sql = "SHOW TABLES FROM ".$course['db_name']; |
|
|
|
$res = api_sql_query($sql, __FILE__, __LINE__); |
|
|
|
$res = api_sql_query($sql, __FILE__, __LINE__); |
|
|
|
while ($table = Database::fetch_array($res)) |
|
|
|
while ($table = Database::fetch_array($res)) { |
|
|
|
{ |
|
|
|
|
|
|
|
$sql = "SELECT * FROM ".$course['db_name'].".".$table[0].""; |
|
|
|
$sql = "SELECT * FROM ".$course['db_name'].".".$table[0].""; |
|
|
|
$res3 = api_sql_query($sql, __FILE__, __LINE__); |
|
|
|
$res3 = api_sql_query($sql, __FILE__, __LINE__); |
|
|
|
while ($row = Database::fetch_array($res3)) |
|
|
|
while ($row = Database::fetch_array($res3)) { |
|
|
|
{ |
|
|
|
foreach ($row as $key => $value) { |
|
|
|
foreach ($row as $key => $value) |
|
|
|
|
|
|
|
{ |
|
|
|
|
|
|
|
$row[$key] = $key."='".addslashes($row[$key])."'"; |
|
|
|
$row[$key] = $key."='".addslashes($row[$key])."'"; |
|
|
|
} |
|
|
|
} |
|
|
|
$sql_dump .= "\nINSERT INTO $table[0] SET ".implode(', ', $row).';'; |
|
|
|
$sql_dump .= "\nINSERT INTO $table[0] SET ".implode(', ', $row).';'; |
|
|
@ -1769,16 +1748,14 @@ class CourseManager { |
|
|
|
if ($counter == 0) { |
|
|
|
if ($counter == 0) { |
|
|
|
$sql = 'UPDATE '.$TABLECOURSUSER.' SET sort = sort+1 WHERE user_id= "'.$user_id.'" AND user_course_cat="0" AND sort > "'.$i_course_sort.'"'; |
|
|
|
$sql = 'UPDATE '.$TABLECOURSUSER.' SET sort = sort+1 WHERE user_id= "'.$user_id.'" AND user_course_cat="0" AND sort > "'.$i_course_sort.'"'; |
|
|
|
$i_course_sort++; |
|
|
|
$i_course_sort++; |
|
|
|
} |
|
|
|
} else { |
|
|
|
else{ |
|
|
|
|
|
|
|
$sql = 'UPDATE '.$TABLECOURSUSER.' SET sort = sort+1 WHERE user_id= "'.$user_id.'" AND user_course_cat="0" AND sort >= "'.$i_course_sort.'"'; |
|
|
|
$sql = 'UPDATE '.$TABLECOURSUSER.' SET sort = sort+1 WHERE user_id= "'.$user_id.'" AND user_course_cat="0" AND sort >= "'.$i_course_sort.'"'; |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
api_sql_query($sql, __FILE__, __LINE__); |
|
|
|
api_sql_query($sql, __FILE__, __LINE__); |
|
|
|
break; |
|
|
|
break; |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
else{ |
|
|
|
} else { |
|
|
|
$s_course_title_precedent = $courses['title']; |
|
|
|
$s_course_title_precedent = $courses['title']; |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
@ -1786,8 +1763,7 @@ class CourseManager { |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
//We must register the course in the beginning of the list |
|
|
|
//We must register the course in the beginning of the list |
|
|
|
if(Database::num_rows($result)>0 && !$b_find_course) |
|
|
|
if (Database::num_rows($result)>0 && !$b_find_course) { |
|
|
|
{ |
|
|
|
|
|
|
|
$sql_max = 'SELECT min(sort) as min_sort FROM '.$TABLECOURSUSER.' WHERE user_id="'.$user_id.'" AND user_course_cat="0"'; |
|
|
|
$sql_max = 'SELECT min(sort) as min_sort FROM '.$TABLECOURSUSER.' WHERE user_id="'.$user_id.'" AND user_course_cat="0"'; |
|
|
|
$result_min_sort=api_sql_query($sql_max, __FILE__, __LINE__); |
|
|
|
$result_min_sort=api_sql_query($sql_max, __FILE__, __LINE__); |
|
|
|
$i_course_sort = Database::result($result_min_sort, 0, 0); |
|
|
|
$i_course_sort = Database::result($result_min_sort, 0, 0); |
|
|
@ -1806,7 +1782,7 @@ class CourseManager { |
|
|
|
* @param string $parent_code the parent category of the categories added (default=null for root category) |
|
|
|
* @param string $parent_code the parent category of the categories added (default=null for root category) |
|
|
|
* @param string $padding the indent param (you shouldn't indicate something here) |
|
|
|
* @param string $padding the indent param (you shouldn't indicate something here) |
|
|
|
*/ |
|
|
|
*/ |
|
|
|
public static function select_and_sort_categories ($select_element, $category_selected_code="", $parent_code=null , $padding="") { |
|
|
|
public static function select_and_sort_categories ($select_element, $category_selected_code = '', $parent_code = null , $padding = '') { |
|
|
|
$table_course_category = Database :: get_main_table(TABLE_MAIN_CATEGORY); |
|
|
|
$table_course_category = Database :: get_main_table(TABLE_MAIN_CATEGORY); |
|
|
|
$sql = "SELECT code, name, auth_course_child, auth_cat_child |
|
|
|
$sql = "SELECT code, name, auth_course_child, auth_cat_child |
|
|
|
FROM ".$table_course_category." |
|
|
|
FROM ".$table_course_category." |
|
|
@ -1816,13 +1792,11 @@ class CourseManager { |
|
|
|
|
|
|
|
|
|
|
|
$new_padding = $padding.' - '; |
|
|
|
$new_padding = $padding.' - '; |
|
|
|
|
|
|
|
|
|
|
|
while ($cat = Database::fetch_array($res)) |
|
|
|
while ($cat = Database::fetch_array($res)) { |
|
|
|
{ |
|
|
|
|
|
|
|
$params = $cat['auth_course_child'] == 'TRUE' ? '' : 'disabled'; |
|
|
|
$params = $cat['auth_course_child'] == 'TRUE' ? '' : 'disabled'; |
|
|
|
$params .= ($cat['code'] == $category_selected_code) ? ' selected' : ''; |
|
|
|
$params .= ($cat['code'] == $category_selected_code) ? ' selected' : ''; |
|
|
|
$select_element->addOption($padding.'('.$cat['code'].') '.$cat['name'], $cat['code'], $params); |
|
|
|
$select_element->addOption($padding.'('.$cat['code'].') '.$cat['name'], $cat['code'], $params); |
|
|
|
if($cat['auth_cat_child']) |
|
|
|
if ($cat['auth_cat_child']) { |
|
|
|
{ |
|
|
|
|
|
|
|
self::select_and_sort_categories($select_element, $category_selected_code, $cat['code'], $new_padding); |
|
|
|
self::select_and_sort_categories($select_element, $category_selected_code, $cat['code'], $new_padding); |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
@ -1843,6 +1817,7 @@ class CourseManager { |
|
|
|
$rs = api_sql_query($sql, __FILE__, __LINE__); |
|
|
|
$rs = api_sql_query($sql, __FILE__, __LINE__); |
|
|
|
return Database::num_rows($rs); |
|
|
|
return Database::num_rows($rs); |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
/** |
|
|
|
/** |
|
|
|
* Send an email to tutor after the auth-suscription of a student in your course |
|
|
|
* Send an email to tutor after the auth-suscription of a student in your course |
|
|
|
* @author Carlos Vargas <carlos.vargas@dokeos.com>, Dokeos Latino |
|
|
|
* @author Carlos Vargas <carlos.vargas@dokeos.com>, Dokeos Latino |
|
|
@ -1866,6 +1841,8 @@ class CourseManager { |
|
|
|
$information = self::get_course_information($course_code); |
|
|
|
$information = self::get_course_information($course_code); |
|
|
|
$name_course = $information['title']; |
|
|
|
$name_course = $information['title']; |
|
|
|
$sql="SELECT * FROM ".$TABLECOURSUSER." WHERE course_code='".$course_code."'"; |
|
|
|
$sql="SELECT * FROM ".$TABLECOURSUSER." WHERE course_code='".$course_code."'"; |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// TODO: This is a mistake. |
|
|
|
if ($send_to_tutor_also=true){ |
|
|
|
if ($send_to_tutor_also=true){ |
|
|
|
$sql.=" AND tutor_id=1"; |
|
|
|
$sql.=" AND tutor_id=1"; |
|
|
|
} else { |
|
|
|
} else { |
|
|
@ -1928,6 +1905,7 @@ class CourseManager { |
|
|
|
} |
|
|
|
} |
|
|
|
return $course_list; |
|
|
|
return $course_list; |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
/** |
|
|
|
/** |
|
|
|
* Get course ID from a given course directory name |
|
|
|
* Get course ID from a given course directory name |
|
|
|
* @param string Course directory (without any slash) |
|
|
|
* @param string Course directory (without any slash) |
|
|
@ -1945,6 +1923,7 @@ class CourseManager { |
|
|
|
$row = Database::fetch_array($res); |
|
|
|
$row = Database::fetch_array($res); |
|
|
|
return $row['code']; |
|
|
|
return $row['code']; |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
/** |
|
|
|
/** |
|
|
|
* Get course code(s) from visual code |
|
|
|
* Get course code(s) from visual code |
|
|
|
* @param string Visual code |
|
|
|
* @param string Visual code |
|
|
@ -1956,12 +1935,12 @@ class CourseManager { |
|
|
|
$sql_query = "SELECT * FROM $table WHERE visual_code = '$code'"; |
|
|
|
$sql_query = "SELECT * FROM $table WHERE visual_code = '$code'"; |
|
|
|
$sql_result = api_sql_query($sql_query, __FILE__, __LINE__); |
|
|
|
$sql_result = api_sql_query($sql_query, __FILE__, __LINE__); |
|
|
|
$result = array (); |
|
|
|
$result = array (); |
|
|
|
while ($virtual_course = Database::fetch_array($sql_result)) |
|
|
|
while ($virtual_course = Database::fetch_array($sql_result)) { |
|
|
|
{ |
|
|
|
|
|
|
|
$result[] = $virtual_course; |
|
|
|
$result[] = $virtual_course; |
|
|
|
} |
|
|
|
} |
|
|
|
return $result; |
|
|
|
return $result; |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
/** |
|
|
|
/** |
|
|
|
* Get emails of tutors to course |
|
|
|
* Get emails of tutors to course |
|
|
|
* @param string Visual code |
|
|
|
* @param string Visual code |
|
|
@ -1985,12 +1964,13 @@ class CourseManager { |
|
|
|
} |
|
|
|
} |
|
|
|
return $list; |
|
|
|
return $list; |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
/** |
|
|
|
/** |
|
|
|
* Get emails of tutors to course |
|
|
|
* Get emails of tutors to course |
|
|
|
* @param string session session |
|
|
|
* @param string session session |
|
|
|
* @return string email of tutor to session |
|
|
|
* @return string email of tutor to session |
|
|
|
* @author @author Carlos Vargas <carlos.vargas@dokeos.com>, Dokeos Latino |
|
|
|
* @author @author Carlos Vargas <carlos.vargas@dokeos.com>, Dokeos Latino |
|
|
|
* */ |
|
|
|
*/ |
|
|
|
public static function get_email_of_tutor_to_session ($session) { |
|
|
|
public static function get_email_of_tutor_to_session ($session) { |
|
|
|
$users = Database :: get_main_table(TABLE_MAIN_USER); |
|
|
|
$users = Database :: get_main_table(TABLE_MAIN_USER); |
|
|
|
$session_rel_users = Database :: get_main_table(TABLE_MAIN_SESSION_COURSE); |
|
|
|
$session_rel_users = Database :: get_main_table(TABLE_MAIN_SESSION_COURSE); |
|
|
@ -1998,11 +1978,11 @@ class CourseManager { |
|
|
|
$sql_tutor = "SELECT * FROM $session_rel_users WHERE id_session='$session'"; |
|
|
|
$sql_tutor = "SELECT * FROM $session_rel_users WHERE id_session='$session'"; |
|
|
|
$res = api_sql_query($sql_tutor, __FILE__, __LINE__); |
|
|
|
$res = api_sql_query($sql_tutor, __FILE__, __LINE__); |
|
|
|
$row_email = Database::fetch_array($res); |
|
|
|
$row_email = Database::fetch_array($res); |
|
|
|
$sql_list="SELECT * FROM $users WHERE user_id=".$row_email["id_coach"]; |
|
|
|
$sql_list = "SELECT * FROM $users WHERE user_id=".$row_email['id_coach']; |
|
|
|
$result_user = api_sql_query($sql_list, __FILE__, __LINE__); |
|
|
|
$result_user = api_sql_query($sql_list, __FILE__, __LINE__); |
|
|
|
while ($row_emails = Database::fetch_array($result_user)) { |
|
|
|
while ($row_emails = Database::fetch_array($result_user)) { |
|
|
|
$name_tutor=api_get_person_name($row_emails["firstname"], $row_emails["lastname"], null, PERSON_NAME_EMAIL_ADDRESS); |
|
|
|
$name_tutor = api_get_person_name($row_emails['firstname'], $row_emails['lastname'], null, PERSON_NAME_EMAIL_ADDRESS); |
|
|
|
$mail_tutor=array($row_emails["email"]=>$name_tutor); |
|
|
|
$mail_tutor = array($row_emails['email'] => $name_tutor); |
|
|
|
} |
|
|
|
} |
|
|
|
return $mail_tutor; |
|
|
|
return $mail_tutor; |
|
|
|
} |
|
|
|
} |
|
|
@ -2067,26 +2047,21 @@ class CourseManager { |
|
|
|
$fname = Database::escape_string($fname); |
|
|
|
$fname = Database::escape_string($fname); |
|
|
|
$course_code = Database::escape_string($course_code); |
|
|
|
$course_code = Database::escape_string($course_code); |
|
|
|
$fvalues = ''; |
|
|
|
$fvalues = ''; |
|
|
|
if(is_array($fvalue)) |
|
|
|
if (is_array($fvalue)) { |
|
|
|
{ |
|
|
|
foreach ($fvalue as $val) { |
|
|
|
foreach($fvalue as $val) |
|
|
|
|
|
|
|
{ |
|
|
|
|
|
|
|
$fvalues .= Database::escape_string($val).';'; |
|
|
|
$fvalues .= Database::escape_string($val).';'; |
|
|
|
} |
|
|
|
} |
|
|
|
if(!empty($fvalues)) |
|
|
|
if (!empty($fvalues)) { |
|
|
|
{ |
|
|
|
|
|
|
|
$fvalues = substr($fvalues, 0, -1); |
|
|
|
$fvalues = substr($fvalues, 0, -1); |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
} else { |
|
|
|
else |
|
|
|
|
|
|
|
{ |
|
|
|
|
|
|
|
$fvalues = Database::escape_string($fvalue); |
|
|
|
$fvalues = Database::escape_string($fvalue); |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
$sqlcf = "SELECT * FROM $t_cf WHERE field_variable='$fname'"; |
|
|
|
$sqlcf = "SELECT * FROM $t_cf WHERE field_variable='$fname'"; |
|
|
|
$rescf = api_sql_query($sqlcf, __FILE__, __LINE__); |
|
|
|
$rescf = api_sql_query($sqlcf, __FILE__, __LINE__); |
|
|
|
if(Database::num_rows($rescf)==1) |
|
|
|
if (Database::num_rows($rescf) == 1) { |
|
|
|
{ //ok, the field exists |
|
|
|
// Ok, the field exists |
|
|
|
// Check if enumerated field, if the option is available |
|
|
|
// Check if enumerated field, if the option is available |
|
|
|
$rowcf = Database::fetch_array($rescf); |
|
|
|
$rowcf = Database::fetch_array($rescf); |
|
|
|
|
|
|
|
|
|
|
@ -2096,17 +2071,14 @@ class CourseManager { |
|
|
|
$n = Database::num_rows($rescfv); |
|
|
|
$n = Database::num_rows($rescfv); |
|
|
|
if ($n > 1) { |
|
|
|
if ($n > 1) { |
|
|
|
//problem, we already have to values for this field and user combination - keep last one |
|
|
|
//problem, we already have to values for this field and user combination - keep last one |
|
|
|
while($rowcfv = Database::fetch_array($rescfv)) |
|
|
|
while ($rowcfv = Database::fetch_array($rescfv)) { |
|
|
|
{ |
|
|
|
if ($n > 1) { |
|
|
|
if($n > 1) |
|
|
|
|
|
|
|
{ |
|
|
|
|
|
|
|
$sqld = "DELETE FROM $t_cfv WHERE id = ".$rowcfv['id']; |
|
|
|
$sqld = "DELETE FROM $t_cfv WHERE id = ".$rowcfv['id']; |
|
|
|
$resd = api_sql_query($sqld, __FILE__, __LINE__); |
|
|
|
$resd = api_sql_query($sqld, __FILE__, __LINE__); |
|
|
|
$n--; |
|
|
|
$n--; |
|
|
|
} |
|
|
|
} |
|
|
|
$rowcfv = Database::fetch_array($rescfv); |
|
|
|
$rowcfv = Database::fetch_array($rescfv); |
|
|
|
if($rowcfv['field_value'] != $fvalues) |
|
|
|
if ($rowcfv['field_value'] != $fvalues) { |
|
|
|
{ |
|
|
|
|
|
|
|
$sqlu = "UPDATE $t_cfv SET field_value = '$fvalues', tms = FROM_UNIXTIME($tms) WHERE id = ".$rowcfv['id']; |
|
|
|
$sqlu = "UPDATE $t_cfv SET field_value = '$fvalues', tms = FROM_UNIXTIME($tms) WHERE id = ".$rowcfv['id']; |
|
|
|
$resu = api_sql_query($sqlu, __FILE__, __LINE__); |
|
|
|
$resu = api_sql_query($sqlu, __FILE__, __LINE__); |
|
|
|
return ($resu ? true : false); |
|
|
|
return ($resu ? true : false); |
|
|
@ -2116,8 +2088,7 @@ class CourseManager { |
|
|
|
} elseif ($n == 1) { |
|
|
|
} elseif ($n == 1) { |
|
|
|
//we need to update the current record |
|
|
|
//we need to update the current record |
|
|
|
$rowcfv = Database::fetch_array($rescfv); |
|
|
|
$rowcfv = Database::fetch_array($rescfv); |
|
|
|
if($rowcfv['field_value'] != $fvalues) |
|
|
|
if ($rowcfv['field_value'] != $fvalues) { |
|
|
|
{ |
|
|
|
|
|
|
|
$sqlu = "UPDATE $t_cfv SET field_value = '$fvalues', tms = FROM_UNIXTIME($tms) WHERE id = ".$rowcfv['id']; |
|
|
|
$sqlu = "UPDATE $t_cfv SET field_value = '$fvalues', tms = FROM_UNIXTIME($tms) WHERE id = ".$rowcfv['id']; |
|
|
|
//error_log('UM::update_extra_field_value: '.$sqlu); |
|
|
|
//error_log('UM::update_extra_field_value: '.$sqlu); |
|
|
|
$resu = api_sql_query($sqlu, __FILE__, __LINE__); |
|
|
|
$resu = api_sql_query($sqlu, __FILE__, __LINE__); |
|
|
@ -2146,4 +2117,5 @@ class CourseManager { |
|
|
|
$rs = Database::query($sql, __FILE__, __LINE__); |
|
|
|
$rs = Database::query($sql, __FILE__, __LINE__); |
|
|
|
return Database::result($rs, 0, 'code'); |
|
|
|
return Database::result($rs, 0, 'code'); |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
} //end class CourseManager |
|
|
|
} //end class CourseManager |
|
|
|