Feature #306 - Course manager: Cleaning code, pass 1.

skala
Ivan Tcholakov 16 years ago
parent 60d8aaf9e1
commit f85d473144
  1. 360
      main/inc/lib/course.lib.php

@ -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

Loading…
Cancel
Save