|
@@ -181,8 +181,8 @@ class CourseManager {
|
|
|
{
|
|
|
$sql .= "WHERE 1 ";
|
|
|
if ($visibility !== -1 && $visibility == strval(intval($visibility)) ) {
|
|
|
- $sql .= " AND visibility = $visibility ";
|
|
|
- }
|
|
|
+ $sql .= " AND visibility = $visibility ";
|
|
|
+ }
|
|
|
}
|
|
|
if(!empty($orderby))
|
|
|
{
|
|
@@ -192,13 +192,13 @@ class CourseManager {
|
|
|
{
|
|
|
$sql .= " ORDER BY 1 ";
|
|
|
}
|
|
|
-
|
|
|
+
|
|
|
if (!in_array($orderdirection, array('ASC', 'DESC'))) {
|
|
|
$sql .= 'ASC';
|
|
|
} else {
|
|
|
$sql .= Database::escape_string($orderdirection);
|
|
|
- }
|
|
|
-
|
|
|
+ }
|
|
|
+
|
|
|
if(!empty($howmany) and is_int($howmany) and $howmany>0) {
|
|
|
$sql .= ' LIMIT '.Database::escape_string($howmany);
|
|
|
} else {
|
|
@@ -243,8 +243,8 @@ class CourseManager {
|
|
|
public static function get_user_in_course_status ($user_id, $course_code) {
|
|
|
$course_code = Database::escape_string($course_code);
|
|
|
$user_id = Database::escape_string($user_id);
|
|
|
- $course_user_table = Database :: get_main_table(TABLE_MAIN_COURSE_USER);
|
|
|
- $sql_query = "SELECT * FROM $course_user_table WHERE course_code = '$course_code' AND user_id = $user_id";
|
|
|
+ $course_user_table = Database :: get_main_table(TABLE_MAIN_COURSE_USER);
|
|
|
+ $sql_query = "SELECT * FROM $course_user_table WHERE course_code = '$course_code' AND user_id = $user_id";
|
|
|
$sql_result = api_sql_query($sql_query, __FILE__, __LINE__);
|
|
|
$result = Database::fetch_array($sql_result);
|
|
|
return $result['status'];
|
|
@@ -282,7 +282,7 @@ class CourseManager {
|
|
|
$tbl_group_rel_tutor = Database::get_course_table(TABLE_GROUP_TUTOR, $course->db_name);
|
|
|
$sql = "DELETE FROM $tbl_group_rel_tutor WHERE user_id IN (".$user_ids.")";
|
|
|
api_sql_query($sql, __FILE__, __LINE__);
|
|
|
-
|
|
|
+
|
|
|
// Unsubscribe user from all blogs in the course
|
|
|
$table_blog_user = Database::get_course_table(TABLE_BLOGS_REL_USER, $course->db_name);
|
|
|
$sql = "DELETE FROM ".$table_blog_user." WHERE user_id IN (".$user_ids.")";
|
|
@@ -293,36 +293,36 @@ class CourseManager {
|
|
|
|
|
|
// Unsubscribe user from the course
|
|
|
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!
|
|
|
$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."'
|
|
|
AND course_code = '".Database::escape_string($_SESSION['_course']['id'])."'
|
|
|
AND id_user IN ($user_ids)";
|
|
|
- $result = api_sql_query($add_session_course_rel,__FILE__, __LINE__);
|
|
|
- // delete in table session_rel_user
|
|
|
- $add_session_rel_user = "DELETE FROM $tbl_session_rel_user
|
|
|
- WHERE id_session ='".$my_session_id."'
|
|
|
+ $result = api_sql_query($add_session_course_rel,__FILE__, __LINE__);
|
|
|
+ // delete in table session_rel_user
|
|
|
+ $add_session_rel_user = "DELETE FROM $tbl_session_rel_user
|
|
|
+ WHERE id_session ='".$my_session_id."'
|
|
|
AND id_user IN ($user_ids)";
|
|
|
$result = api_sql_query($add_session_rel_user,__FILE__, __LINE__);
|
|
|
// update the table session
|
|
|
$sql = "SELECT COUNT(*) from $tbl_session_rel_user WHERE id_session = '".$my_session_id."'";
|
|
|
$result = api_sql_query($sql,__FILE__, __LINE__);
|
|
|
- $row = Database::fetch_array($result);
|
|
|
+ $row = Database::fetch_array($result);
|
|
|
$count = $row[0]; // number of users by session
|
|
|
-
|
|
|
- $update_user_session = "UPDATE $tbl_session set nbr_users = '$count' WHERE id = '".$my_session_id."'" ;
|
|
|
+
|
|
|
+ $update_user_session = "UPDATE $tbl_session set nbr_users = '$count' WHERE id = '".$my_session_id."'" ;
|
|
|
$result = api_sql_query($update_user_session,__FILE__,__LINE__);
|
|
|
} else {
|
|
|
$sql = "DELETE FROM $table_course_user WHERE user_id IN (".$user_ids.") AND course_code = '".$course_code."'";
|
|
|
api_sql_query($sql, __FILE__, __LINE__);
|
|
|
-
|
|
|
- // add event to system log
|
|
|
+
|
|
|
+ // add event to system log
|
|
|
$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);
|
|
|
-
|
|
|
+
|
|
|
}
|
|
|
}
|
|
|
|
|
@@ -348,7 +348,7 @@ class CourseManager {
|
|
|
$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 = Database::get_main_table(TABLE_MAIN_SESSION);
|
|
|
-
|
|
|
+
|
|
|
$status = ($status == STUDENT || $status == COURSEMANAGER) ? $status : STUDENT;
|
|
|
$role_id = ($status == COURSEMANAGER) ? COURSE_ADMIN : NORMAL_COURSE_MEMBER;
|
|
|
|
|
@@ -371,7 +371,7 @@ class CourseManager {
|
|
|
return false; // the user is already subscribed to the course
|
|
|
} else {
|
|
|
if (!empty($_SESSION["id_session"])) {
|
|
|
-
|
|
|
+
|
|
|
//check if user isn't already estore to the session_rel_course_user table
|
|
|
$sql1 = "SELECT * FROM $tbl_session_rel_course_user
|
|
|
WHERE course_code = '".$_SESSION['_course']['id']."'
|
|
@@ -379,36 +379,36 @@ class CourseManager {
|
|
|
AND id_user = '".$user_id."'";
|
|
|
$result1 = @api_sql_query($sql1,__FILE__,__LINE__);
|
|
|
$check1 = Database::num_rows($result1);
|
|
|
-
|
|
|
+
|
|
|
//check if user isn't already estore to the session_rel_user table
|
|
|
$sql2 = "SELECT * FROM $tbl_session_rel_user
|
|
|
WHERE id_session ='".$_SESSION["id_session"]."'
|
|
|
AND id_user = '".$user_id."'";
|
|
|
$result2 = @api_sql_query($sql2,__FILE__,__LINE__);
|
|
|
$check2 = Database::num_rows($result2);
|
|
|
-
|
|
|
+
|
|
|
if ($check1 > 0 || $check2 > 0) {
|
|
|
return false;
|
|
|
} else {
|
|
|
- // add in table session_rel_course_rel_user
|
|
|
- $add_session_course_rel = "INSERT INTO $tbl_session_rel_course_user
|
|
|
+ // add in table session_rel_course_rel_user
|
|
|
+ $add_session_course_rel = "INSERT INTO $tbl_session_rel_course_user
|
|
|
SET id_session ='".$_SESSION["id_session"]."',
|
|
|
course_code = '".$_SESSION['_course']['id']."',
|
|
|
id_user = '".$user_id."'";
|
|
|
- $result = @api_sql_query($add_session_course_rel,__FILE__, __LINE__);
|
|
|
- // add in table session_rel_user
|
|
|
- $add_session_rel_user = "INSERT INTO $tbl_session_rel_user
|
|
|
- SET id_session ='".$_SESSION["id_session"]."',
|
|
|
+ $result = @api_sql_query($add_session_course_rel,__FILE__, __LINE__);
|
|
|
+ // add in table session_rel_user
|
|
|
+ $add_session_rel_user = "INSERT INTO $tbl_session_rel_user
|
|
|
+ SET id_session ='".$_SESSION["id_session"]."',
|
|
|
id_user = '".$user_id."'";
|
|
|
- $result = @api_sql_query($add_session_rel_user,__FILE__, __LINE__);
|
|
|
+ $result = @api_sql_query($add_session_rel_user,__FILE__, __LINE__);
|
|
|
// update the table session
|
|
|
$sql = "SELECT COUNT(*) from $tbl_session_rel_user WHERE id_session = '".$_SESSION["id_session"]."'";
|
|
|
- $result = @api_sql_query($sql,__FILE__, __LINE__);
|
|
|
- $row = Database::fetch_array($result);
|
|
|
- $count = $row[0]; // number of users by session
|
|
|
- $update_user_session = "UPDATE $tbl_session set nbr_users = '$count' WHERE id = '".$_SESSION["id_session"]."'" ;
|
|
|
+ $result = @api_sql_query($sql,__FILE__, __LINE__);
|
|
|
+ $row = Database::fetch_array($result);
|
|
|
+ $count = $row[0]; // number of users by session
|
|
|
+ $update_user_session = "UPDATE $tbl_session set nbr_users = '$count' WHERE id = '".$_SESSION["id_session"]."'" ;
|
|
|
$result = @api_sql_query($update_user_session,__FILE__,__LINE__);
|
|
|
- }
|
|
|
+ }
|
|
|
} else {
|
|
|
$course_sort = self :: userCourseSort($user_id,$course_code);
|
|
|
$add_course_user_entry_sql = "INSERT INTO ".$course_user_table."
|
|
@@ -417,12 +417,12 @@ class CourseManager {
|
|
|
status = '".$status."',
|
|
|
sort = '". ($course_sort)."'";
|
|
|
$result = @api_sql_query($add_course_user_entry_sql, __FILE__, __LINE__);
|
|
|
-
|
|
|
-
|
|
|
- // add event to system log
|
|
|
+
|
|
|
+
|
|
|
+ // add event to system log
|
|
|
$time = time();
|
|
|
- $user_id = api_get_user_id();
|
|
|
- event_system(LOG_SUBSCRIBE_USER_TO_COURSE, LOG_COURSE_CODE, $course_code, $time, $user_id);
|
|
|
+ $user_id = api_get_user_id();
|
|
|
+ event_system(LOG_SUBSCRIBE_USER_TO_COURSE, LOG_COURSE_CODE, $course_code, $time, $user_id);
|
|
|
}
|
|
|
if ($result) {
|
|
|
return true;
|
|
@@ -494,7 +494,7 @@ class CourseManager {
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
- }
|
|
|
+ }
|
|
|
}
|
|
|
|
|
|
/**
|
|
@@ -876,7 +876,7 @@ class CourseManager {
|
|
|
/**
|
|
|
* @return true if the real course has virtual courses that the user is subscribed to, false otherwise
|
|
|
*/
|
|
|
- public static function has_virtual_courses_from_code ($real_course_code, $user_id) {
|
|
|
+ public static function has_virtual_courses_from_code ($real_course_code, $user_id) {
|
|
|
$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);
|
|
|
|
|
@@ -946,18 +946,18 @@ class CourseManager {
|
|
|
public static function is_user_subscribed_in_course ($user_id, $course_code, $in_a_session=false) {
|
|
|
$user_id = intval($user_id);
|
|
|
$course_code = Database::escape_string($course_code);
|
|
|
-
|
|
|
+
|
|
|
$table = Database :: get_main_table(TABLE_MAIN_COURSE_USER);
|
|
|
|
|
|
$sql_query = "SELECT * FROM $table WHERE user_id = $user_id AND course_code = '$course_code'";
|
|
|
$sql_result = api_sql_query($sql_query, __FILE__, __LINE__);
|
|
|
$result = Database::fetch_array($sql_result);
|
|
|
-
|
|
|
+
|
|
|
if (!isset ($result) || empty ($result)) {
|
|
|
if ($in_a_session) {
|
|
|
$sql = 'SELECT 1 FROM '.Database :: get_main_table(TABLE_MAIN_SESSION_COURSE_USER).'
|
|
|
WHERE id_user = '.$user_id.' AND course_code="'.$course_code.'"';
|
|
|
-
|
|
|
+
|
|
|
$rs = api_sql_query($sql, __FILE__, __LINE__);
|
|
|
if (Database::num_rows($rs)>0) {
|
|
|
return true;
|
|
@@ -975,14 +975,14 @@ class CourseManager {
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
- } else {
|
|
|
+ } else {
|
|
|
return false; //user is not registered in course
|
|
|
}
|
|
|
} else {
|
|
|
return true; //user is registered in course
|
|
|
}
|
|
|
}
|
|
|
-
|
|
|
+
|
|
|
/**
|
|
|
* Is the user a teacher in the given course?
|
|
|
*
|
|
@@ -1080,7 +1080,7 @@ class CourseManager {
|
|
|
|
|
|
}
|
|
|
}
|
|
|
-
|
|
|
+
|
|
|
/**
|
|
|
* Return user info array of all users registered in the specified real or virtual course
|
|
|
* This only returns the users that are registered in this actual course, not linked courses.
|
|
@@ -1088,23 +1088,23 @@ class CourseManager {
|
|
|
* @param string $course_code
|
|
|
* @return array with user info
|
|
|
*/
|
|
|
- public static function get_user_list_from_course_code ($course_code, $with_session=true, $session_id=0, $limit='', $order_by='') {
|
|
|
+ public static function get_user_list_from_course_code ($course_code, $with_session=true, $session_id=0, $limit='', $order_by='') {
|
|
|
$session_id = intval($session_id);
|
|
|
$a_users = array();
|
|
|
- $table_users = Database :: get_main_table(TABLE_MAIN_USER);
|
|
|
+ $table_users = Database :: get_main_table(TABLE_MAIN_USER);
|
|
|
$table_course_user = Database::get_main_table(TABLE_MAIN_COURSE_USER);
|
|
|
$course_code = Database::escape_string($course_code);
|
|
|
- $where = array();
|
|
|
+ $where = array();
|
|
|
if ( $session_id == 0 ) {
|
|
|
$sql = 'SELECT DISTINCT course_rel_user.status, user.user_id ';
|
|
|
} else {
|
|
|
$sql = 'SELECT DISTINCT user.user_id ';
|
|
|
}
|
|
|
-
|
|
|
+
|
|
|
if ( $session_id == 0 ) {
|
|
|
$sql .= ', course_rel_user.role, course_rel_user.tutor_id ';
|
|
|
- }
|
|
|
-
|
|
|
+ }
|
|
|
+
|
|
|
$sql .= ' FROM '.$table_users.' as user ';
|
|
|
|
|
|
if (api_get_setting('use_session_mode')=='true' && $with_session) {
|
|
@@ -1117,38 +1117,38 @@ class CourseManager {
|
|
|
}
|
|
|
$where[] = ' session_course_user.course_code IS NOT NULL ';
|
|
|
}
|
|
|
-
|
|
|
+
|
|
|
if ($session_id == 0) {
|
|
|
$table_course_user = Database :: get_main_table(TABLE_MAIN_COURSE_USER);
|
|
|
$sql .= ' LEFT JOIN '.$table_course_user.' as course_rel_user
|
|
|
ON user.user_id = course_rel_user.user_id
|
|
|
AND course_rel_user.course_code="'.Database::escape_string($course_code).'"';
|
|
|
$where[] = ' course_rel_user.course_code IS NOT NULL ';
|
|
|
- }
|
|
|
-
|
|
|
+ }
|
|
|
+
|
|
|
$sql .= ' WHERE '.implode(' OR ',$where);
|
|
|
-
|
|
|
+
|
|
|
$sql .= ' '.$order_by;
|
|
|
$sql .= ' '.$limit;
|
|
|
-
|
|
|
+
|
|
|
$rs = api_sql_query($sql, __FILE__, __LINE__);
|
|
|
-
|
|
|
+
|
|
|
while ($user = Database::fetch_array($rs)) {
|
|
|
- $user_infos = Database :: get_user_info_from_id($user['user_id']);
|
|
|
+ $user_infos = Database :: get_user_info_from_id($user['user_id']);
|
|
|
$user_infos['status'] = $user['status'];
|
|
|
if ( isset($user['role']) ) {
|
|
|
$user_infos['role'] = $user['role'];
|
|
|
}
|
|
|
if ( isset($user['tutor_id']) ) {
|
|
|
$user_infos['tutor_id'] = $user['tutor_id'];
|
|
|
- }
|
|
|
- $a_users[$user['user_id']] = $user_infos;
|
|
|
- }
|
|
|
-
|
|
|
+ }
|
|
|
+ $a_users[$user['user_id']] = $user_infos;
|
|
|
+ }
|
|
|
+
|
|
|
return $a_users;
|
|
|
-
|
|
|
+
|
|
|
}
|
|
|
-
|
|
|
+
|
|
|
/**
|
|
|
* Get a list of coaches of a course and a session
|
|
|
* @param string Course code
|
|
@@ -1157,12 +1157,12 @@ class CourseManager {
|
|
|
*/
|
|
|
public static function get_coach_list_from_course_code ($course_code,$session_id){
|
|
|
if ($session_id != strval(intval($session_id))) { return array(); }
|
|
|
- $course_code = Database::escape_string($course_code);
|
|
|
+ $course_code = Database::escape_string($course_code);
|
|
|
$table_session_course = Database :: get_main_table(TABLE_MAIN_SESSION_COURSE);
|
|
|
$table_session = Database :: get_main_table(TABLE_MAIN_SESSION);
|
|
|
-
|
|
|
+
|
|
|
$a_users=array();
|
|
|
-
|
|
|
+
|
|
|
//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.'"';
|
|
|
$rs = api_sql_query($sql, __FILE__, __LINE__);
|
|
@@ -1175,7 +1175,7 @@ class CourseManager {
|
|
|
$user_infos['email'] = $user['email'];
|
|
|
$a_users[$user['id_coach']] = $user_infos;
|
|
|
}
|
|
|
-
|
|
|
+
|
|
|
//We get the session coach
|
|
|
$sql = 'SELECT id_coach FROM '.$table_session.' WHERE id="'.$session_id.'"';
|
|
|
$rs = api_sql_query($sql, __FILE__, __LINE__);
|
|
@@ -1187,12 +1187,12 @@ class CourseManager {
|
|
|
$user_infos["tutor_id"] = $user["tutor_id"];
|
|
|
$user_infos['email'] = $user['email'];
|
|
|
$a_users[$session_id_coach] = $user_infos;
|
|
|
-
|
|
|
+
|
|
|
return $a_users;
|
|
|
-
|
|
|
+
|
|
|
}
|
|
|
-
|
|
|
-
|
|
|
+
|
|
|
+
|
|
|
/**
|
|
|
* Return user info array of all users registered in the specified real or virtual course
|
|
|
* This only returns the users that are registered in this actual course, not linked courses.
|
|
@@ -1203,10 +1203,10 @@ class CourseManager {
|
|
|
*/
|
|
|
public static function get_student_list_from_course_code ($course_code, $with_session=false, $session_id=0) {
|
|
|
$a_students = array();
|
|
|
-
|
|
|
+
|
|
|
$session_id = intval($session_id);
|
|
|
$course_code = Database::escape_string($course_code);
|
|
|
-
|
|
|
+
|
|
|
if($session_id == 0)
|
|
|
{
|
|
|
// students directly subscribed to the course
|
|
@@ -1215,12 +1215,12 @@ class CourseManager {
|
|
|
$rs = api_sql_query($sql_query, __FILE__, __LINE__);
|
|
|
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
|
|
|
-
|
|
|
+
|
|
|
if(api_get_setting('use_session_mode')=='true' && $with_session)
|
|
|
{
|
|
|
$table = Database::get_main_table(TABLE_MAIN_SESSION_COURSE_USER);
|
|
@@ -1230,10 +1230,10 @@ class CourseManager {
|
|
|
$rs = api_sql_query($sql_query, __FILE__, __LINE__);
|
|
|
while($student = Database::fetch_array($rs))
|
|
|
{
|
|
|
- $a_students[$student['id_user']] = $student;
|
|
|
+ $a_students[$student['id_user']] = $student;
|
|
|
}
|
|
|
}
|
|
|
-
|
|
|
+
|
|
|
return $a_students;
|
|
|
}
|
|
|
/**
|
|
@@ -1257,7 +1257,7 @@ class CourseManager {
|
|
|
$rs = api_sql_query($sql_query, __FILE__, __LINE__);
|
|
|
while($teacher = Database::fetch_array($rs))
|
|
|
{
|
|
|
- $a_students[$teacher['user_id']] = $teacher;
|
|
|
+ $a_students[$teacher['user_id']] = $teacher;
|
|
|
}
|
|
|
return $a_students;
|
|
|
}
|
|
@@ -1315,7 +1315,7 @@ class CourseManager {
|
|
|
LEFT JOIN $course_user_table course_user
|
|
|
ON course.code = course_user.course_code
|
|
|
WHERE course.target_course_code = '$real_course_code' AND course_user.user_id = '$user_id'";
|
|
|
-
|
|
|
+
|
|
|
$sql_result = api_sql_query($sql_query, __FILE__, __LINE__);
|
|
|
|
|
|
while ($result = Database::fetch_array($sql_result))
|
|
@@ -1370,7 +1370,7 @@ class CourseManager {
|
|
|
* @param string Course title
|
|
|
* @param string Wanted course code
|
|
|
* @param string Course language
|
|
|
- * @param string Course category
|
|
|
+ * @param string Course category
|
|
|
* @return bool True on success, false on error
|
|
|
*/
|
|
|
public static function attempt_create_virtual_course ($real_course_code, $course_title, $wanted_course_code, $course_language, $course_category) {
|
|
@@ -1399,7 +1399,7 @@ class CourseManager {
|
|
|
* @param string Course title
|
|
|
* @param string Wanted course code
|
|
|
* @param string Course language
|
|
|
- * @param string Course category
|
|
|
+ * @param string Course category
|
|
|
* @return true if the course creation succeeded, false otherwise
|
|
|
* @todo research: expiration date of a course
|
|
|
*/
|
|
@@ -1455,7 +1455,7 @@ class CourseManager {
|
|
|
* database, it makes sense to remove all tracking as well (if stats databases exist)
|
|
|
* so that a new course created with this code would not use the remains of an older
|
|
|
* course.
|
|
|
- *
|
|
|
+ *
|
|
|
* @param string The code of the course to delete
|
|
|
* @todo When deleting a virtual course: unsubscribe users from that virtual
|
|
|
* course from the groups in the real course if they are not subscribed in
|
|
@@ -1464,7 +1464,7 @@ class CourseManager {
|
|
|
*/
|
|
|
public static function delete_course ($code) {
|
|
|
global $_configuration;
|
|
|
-
|
|
|
+
|
|
|
$table_course = Database :: get_main_table(TABLE_MAIN_COURSE);
|
|
|
$table_course_user = Database :: get_main_table(TABLE_MAIN_COURSE_USER);
|
|
|
$table_course_class = Database :: get_main_table(TABLE_MAIN_COURSE_CLASS);
|
|
@@ -1522,7 +1522,7 @@ class CourseManager {
|
|
|
api_sql_query($sql,__FILE__,__LINE__);
|
|
|
$sql = "DELETE FROM $table_course_survey_reminder WHERE db_name='".$virtual_course['db_name']."'";
|
|
|
api_sql_query($sql,__FILE__,__LINE__);
|
|
|
-
|
|
|
+
|
|
|
// Delete the course from the stats tables
|
|
|
if ($stats) {
|
|
|
$sql = "DELETE FROM $table_stats_hotpots WHERE exe_cours_id = '".$virtual_course['code']."'";
|
|
@@ -1547,8 +1547,8 @@ class CourseManager {
|
|
|
api_sql_query($sql,__FILE__,__LINE__);
|
|
|
$sql = "DELETE FROM $table_stats_uploads WHERE upload_cours_id = '".$virtual_course['code']."'";
|
|
|
api_sql_query($sql,__FILE__,__LINE__);
|
|
|
- }
|
|
|
-
|
|
|
+ }
|
|
|
+
|
|
|
// Delete the course from the course table
|
|
|
$sql = "DELETE FROM $table_course WHERE code='".$virtual_course['code']."'";
|
|
|
api_sql_query($sql, __FILE__, __LINE__);
|
|
@@ -1586,7 +1586,7 @@ class CourseManager {
|
|
|
api_sql_query($sql,__FILE__,__LINE__);
|
|
|
$sql = "DELETE FROM $table_session_course_user WHERE course_code='".$code."'";
|
|
|
api_sql_query($sql,__FILE__,__LINE__);
|
|
|
-
|
|
|
+
|
|
|
$sql='SELECT survey_id FROM '.$table_course_survey.' WHERE course_code="'.$code.'"';
|
|
|
$result_surveys=api_sql_query($sql);
|
|
|
while ($surveys=Database::fetch_array($result_surveys)) {
|
|
@@ -1624,20 +1624,20 @@ class CourseManager {
|
|
|
$sql = "DELETE FROM $table_stats_uploads WHERE upload_cours_id = '".$code."'";
|
|
|
api_sql_query($sql,__FILE__,__LINE__);
|
|
|
}
|
|
|
-
|
|
|
+
|
|
|
global $_configuration;
|
|
|
if ($_configuration['multiple_access_urls']==true) {
|
|
|
require_once (api_get_path(LIBRARY_PATH).'urlmanager.lib.php');
|
|
|
- $url_id=1;
|
|
|
+ $url_id=1;
|
|
|
if (api_get_current_access_url_id()!=-1)
|
|
|
- $url_id=api_get_current_access_url_id();
|
|
|
- UrlManager::delete_url_rel_course($code,$url_id);
|
|
|
+ $url_id=api_get_current_access_url_id();
|
|
|
+ UrlManager::delete_url_rel_course($code,$url_id);
|
|
|
}
|
|
|
-
|
|
|
+
|
|
|
// Delete the course from the database
|
|
|
$sql = "DELETE FROM $table_course WHERE code='".$code."'";
|
|
|
api_sql_query($sql, __FILE__, __LINE__);
|
|
|
-
|
|
|
+
|
|
|
// delete extra course fields
|
|
|
$t_cf = Database::get_main_table(TABLE_MAIN_COURSE_FIELD);
|
|
|
$t_cfv = Database::get_main_table(TABLE_MAIN_COURSE_FIELD_VALUES);
|
|
@@ -1669,16 +1669,16 @@ class CourseManager {
|
|
|
} else {
|
|
|
$sql_course_field = "DELETE FROM $t_cf WHERE id = '$field_id'";
|
|
|
api_sql_query($sql_course_field,__FILE__,__LINE__);
|
|
|
- }
|
|
|
+ }
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
-
|
|
|
- // add event to system log
|
|
|
+
|
|
|
+ // add event to system log
|
|
|
$time = time();
|
|
|
- $user_id = api_get_user_id();
|
|
|
+ $user_id = api_get_user_id();
|
|
|
event_system(LOG_COURSE_DELETE, LOG_COURSE_CODE, $code, $time, $user_id, $code);
|
|
|
-
|
|
|
+
|
|
|
}
|
|
|
|
|
|
/**
|
|
@@ -1688,7 +1688,7 @@ class CourseManager {
|
|
|
*/
|
|
|
public static function create_database_dump ($course_code) {
|
|
|
global $_configuration;
|
|
|
-
|
|
|
+
|
|
|
if ($_configuration['single_database'])
|
|
|
{
|
|
|
return;
|
|
@@ -1725,46 +1725,46 @@ class CourseManager {
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
-
|
|
|
+
|
|
|
/**
|
|
|
* Sort courses for a specific user ??
|
|
|
* @param int User ID
|
|
|
* @param string Course code
|
|
|
* @return int Minimum course order
|
|
|
- * @todo Review documentation
|
|
|
+ * @todo Review documentation
|
|
|
*/
|
|
|
public static function userCourseSort ($user_id,$course_code) {
|
|
|
if ($user_id != strval(intval($user_id))) { return false; }
|
|
|
$course_code = Database::escape_string($course_code);
|
|
|
$TABLECOURSE = Database :: get_main_table(TABLE_MAIN_COURSE);
|
|
|
$TABLECOURSUSER = Database :: get_main_table(TABLE_MAIN_COURSE_USER);
|
|
|
-
|
|
|
+
|
|
|
$sql = 'SELECT title FROM '.$TABLECOURSE.' WHERE code="'.$course_code.'"';
|
|
|
$result = api_sql_query($sql, __FILE__, __LINE__);
|
|
|
$course_title = Database::result($result,0,0);
|
|
|
-
|
|
|
- $sql = 'SELECT course.code as code, course.title as title, cu.sort as sort FROM '.$TABLECOURSUSER.' as cu, '.$TABLECOURSE.' as course
|
|
|
- WHERE course.code = cu.course_code
|
|
|
- AND user_id = "'.$user_id.'"
|
|
|
+
|
|
|
+ $sql = 'SELECT course.code as code, course.title as title, cu.sort as sort FROM '.$TABLECOURSUSER.' as cu, '.$TABLECOURSE.' as course
|
|
|
+ WHERE course.code = cu.course_code
|
|
|
+ AND user_id = "'.$user_id.'"
|
|
|
AND user_course_cat=0 ORDER BY cu.sort';
|
|
|
$result = api_sql_query($sql, __FILE__, __LINE__);
|
|
|
-
|
|
|
+
|
|
|
$s_course_title_precedent = '';
|
|
|
$counter = 0;
|
|
|
$b_find_course = false;
|
|
|
$i_course_sort = 1;
|
|
|
-
|
|
|
+
|
|
|
while($courses=Database::fetch_array($result)){
|
|
|
-
|
|
|
+
|
|
|
if($s_course_title_precedent == ''){
|
|
|
$s_course_title_precedent = $courses['title'];
|
|
|
}
|
|
|
-
|
|
|
+
|
|
|
if(api_strcasecmp($s_course_title_precedent,$course_title)<0){
|
|
|
-
|
|
|
+
|
|
|
$b_find_course = true;
|
|
|
$i_course_sort = $courses['sort'];
|
|
|
-
|
|
|
+
|
|
|
$s_course_code = $courses['code'];
|
|
|
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.'"';
|
|
@@ -1773,34 +1773,34 @@ class CourseManager {
|
|
|
else{
|
|
|
$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__);
|
|
|
break;
|
|
|
}
|
|
|
-
|
|
|
+
|
|
|
else{
|
|
|
$s_course_title_precedent = $courses['title'];
|
|
|
}
|
|
|
-
|
|
|
+
|
|
|
$counter++;
|
|
|
}
|
|
|
-
|
|
|
+
|
|
|
//We must register the course in the beginning of the list
|
|
|
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"';
|
|
|
$result_min_sort=api_sql_query($sql_max, __FILE__, __LINE__);
|
|
|
$i_course_sort = Database::result($result_min_sort,0,0);
|
|
|
-
|
|
|
+
|
|
|
$sql = 'UPDATE '.$TABLECOURSUSER.' SET sort = sort+1 WHERE user_id= "'.$user_id.'" AND user_course_cat="0"';
|
|
|
api_sql_query($sql, __FILE__, __LINE__);
|
|
|
}
|
|
|
return $i_course_sort;
|
|
|
}
|
|
|
-
|
|
|
+
|
|
|
/**
|
|
|
* create recursively all categories as option of the select passed in paramater.
|
|
|
- *
|
|
|
+ *
|
|
|
* @param object $select_element the quickform select where the options will be added
|
|
|
* @param string $category_selected_code the option value to select by default (used mainly for edition of courses)
|
|
|
* @param string $parent_code the parent category of the categories added (default=null for root category)
|
|
@@ -1809,13 +1809,13 @@ class CourseManager {
|
|
|
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);
|
|
|
$sql = "SELECT code, name, auth_course_child, auth_cat_child
|
|
|
- FROM ".$table_course_category."
|
|
|
+ FROM ".$table_course_category."
|
|
|
WHERE parent_id ".(is_null($parent_code) ? "IS NULL" : "='".Database::escape_string($parent_code)."'")."
|
|
|
ORDER BY code";
|
|
|
$res = api_sql_query($sql, __FILE__, __LINE__);
|
|
|
-
|
|
|
+
|
|
|
$new_padding = $padding.' - ';
|
|
|
-
|
|
|
+
|
|
|
while ($cat = Database::fetch_array($res))
|
|
|
{
|
|
|
$params = $cat['auth_course_child'] == 'TRUE' ? '' : 'disabled';
|
|
@@ -1842,17 +1842,17 @@ class CourseManager {
|
|
|
}
|
|
|
$rs = api_sql_query($sql,__FILE__,__LINE__);
|
|
|
return Database::num_rows($rs);
|
|
|
- }
|
|
|
+ }
|
|
|
/**
|
|
|
* Send an email to tutor after the auth-suscription of a student in your course
|
|
|
* @author Carlos Vargas <carlos.vargas@dokeos.com>, Dokeos Latino
|
|
|
* @param int $user_id the id of the user
|
|
|
* @param string $course_code the course code
|
|
|
- * @param string $send_to_tutor_also
|
|
|
+ * @param string $send_to_tutor_also
|
|
|
* @return string we return the message that is displayed when the action is succesfull
|
|
|
*/
|
|
|
public static function email_to_tutor ($user_id,$course_code,$send_to_tutor_also=false) {
|
|
|
-
|
|
|
+
|
|
|
$TABLECOURS=Database::get_main_table(TABLE_MAIN_COURSE);
|
|
|
$TABLE_USER= Database::get_main_table(TABLE_MAIN_USER);
|
|
|
$TABLECOURSUSER=Database::get_main_table(TABLE_MAIN_COURSE_USER);
|
|
@@ -1871,10 +1871,10 @@ class CourseManager {
|
|
|
} else {
|
|
|
$sql.=" AND status=1";
|
|
|
}
|
|
|
-
|
|
|
+
|
|
|
$result = api_sql_query($sql,__FILE__,__LINE__);
|
|
|
while ($row = Database::fetch_array($result)) {
|
|
|
- $sql_tutor="SELECT * FROM ".$TABLE_USER." WHERE user_id='".$row['user_id']."'";
|
|
|
+ $sql_tutor="SELECT * FROM ".$TABLE_USER." WHERE user_id='".$row['user_id']."'";
|
|
|
$result_tutor=api_sql_query($sql_tutor,__FILE__,__LINE__);
|
|
|
$tutor=Database::fetch_array($result_tutor);
|
|
|
$emailto = $tutor['email'];
|
|
@@ -1889,10 +1889,10 @@ class CourseManager {
|
|
|
$emailbody .=get_lang('LastName').': '.$student['lastname']."\n";
|
|
|
$emailbody .=get_lang('FirstName').': '.$student['firstname']."\n";
|
|
|
}
|
|
|
- $emailbody .=get_lang('Email').': '.$student['email']."\n\n";
|
|
|
- $recipient_name = api_get_person_name($tutor['firstname'], $tutor['lastname'], null, PERSON_NAME_EMAIL_ADDRESS);
|
|
|
+ $emailbody .=get_lang('Email').': '.$student['email']."\n\n";
|
|
|
+ $recipient_name = api_get_person_name($tutor['firstname'], $tutor['lastname'], null, PERSON_NAME_EMAIL_ADDRESS);
|
|
|
$sender_name = api_get_person_name(api_get_setting('administratorName'), api_get_setting('administratorSurname'), null, PERSON_NAME_EMAIL_ADDRESS);
|
|
|
- $email_admin = api_get_setting('emailAdministrator');
|
|
|
+ $email_admin = api_get_setting('emailAdministrator');
|
|
|
@api_mail($recipient_name, $emailto, $emailsubject, $emailbody, $sender_name,$email_admin);
|
|
|
}
|
|
|
}
|
|
@@ -1971,9 +1971,9 @@ class CourseManager {
|
|
|
public static function get_emails_of_tutors_to_course ($code) {
|
|
|
$users = Database :: get_main_table(TABLE_MAIN_USER);
|
|
|
$course_rel_users = Database :: get_main_table(TABLE_MAIN_COURSE_USER);
|
|
|
- $code = Database::escape_string($code);
|
|
|
+ $code = Database::escape_string($code);
|
|
|
$sql="SELECT user_id FROM $course_rel_users WHERE course_code='$code' AND status=1";
|
|
|
- $res = api_sql_query($sql,__FILE__,__LINE__);
|
|
|
+ $res = api_sql_query($sql,__FILE__,__LINE__);
|
|
|
$list=array();
|
|
|
while ($list_users = Database::fetch_array($res)){
|
|
|
$sql_list="SELECT * FROM $users WHERE user_id=".$list_users['user_id'];
|
|
@@ -1982,8 +1982,8 @@ class CourseManager {
|
|
|
$name_teacher=api_get_person_name($row_user['firstname'], $row_user['lastname'], null, PERSON_NAME_EMAIL_ADDRESS);
|
|
|
$list[]=array($row_user['email']=>$name_teacher);
|
|
|
}
|
|
|
- }
|
|
|
- return $list;
|
|
|
+ }
|
|
|
+ return $list;
|
|
|
}
|
|
|
/**
|
|
|
* Get emails of tutors to course
|
|
@@ -1994,7 +1994,7 @@ class CourseManager {
|
|
|
public static function get_email_of_tutor_to_session ($session) {
|
|
|
$users = Database :: get_main_table(TABLE_MAIN_USER);
|
|
|
$session_rel_users = Database :: get_main_table(TABLE_MAIN_SESSION_COURSE);
|
|
|
- $session = Database::escape_string($session);
|
|
|
+ $session = Database::escape_string($session);
|
|
|
$sql_tutor="SELECT * FROM $session_rel_users WHERE id_session='$session'";
|
|
|
$res = api_sql_query($sql_tutor,__FILE__,__LINE__);
|
|
|
$row_email = Database::fetch_array($res);
|
|
@@ -2004,51 +2004,51 @@ class CourseManager {
|
|
|
$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);
|
|
|
}
|
|
|
- return $mail_tutor;
|
|
|
+ return $mail_tutor;
|
|
|
}
|
|
|
|
|
|
/**
|
|
|
* Creates a new extra field for a given course
|
|
|
* @param string Field's internal variable name
|
|
|
* @param int Field's type
|
|
|
- * @param string Field's language var name
|
|
|
+ * @param string Field's language var name
|
|
|
* @return int new extra field id
|
|
|
*/
|
|
|
- public static function create_course_extra_field ($fieldvarname, $fieldtype, $fieldtitle) {
|
|
|
- // database table definition
|
|
|
+ public static function create_course_extra_field ($fieldvarname, $fieldtype, $fieldtitle) {
|
|
|
+ // database table definition
|
|
|
$t_cfv = Database::get_main_table(TABLE_MAIN_COURSE_FIELD_VALUES);
|
|
|
- $t_cf = Database::get_main_table(TABLE_MAIN_COURSE_FIELD);
|
|
|
+ $t_cf = Database::get_main_table(TABLE_MAIN_COURSE_FIELD);
|
|
|
$fieldvarname = Database::escape_string($fieldvarname);
|
|
|
- $fieldtitle = Database::escape_string($fieldtitle);
|
|
|
- $fieldtype = (int)$fieldtype;
|
|
|
+ $fieldtitle = Database::escape_string($fieldtitle);
|
|
|
+ $fieldtype = (int)$fieldtype;
|
|
|
$time = time();
|
|
|
$sql_field = "SELECT id FROM $t_cf WHERE field_variable = '$fieldvarname'";
|
|
|
$res_field = api_sql_query($sql_field,__FILE__,__LINE__);
|
|
|
-
|
|
|
+
|
|
|
$r_field = Database::fetch_row($res_field);
|
|
|
-
|
|
|
- if (Database::num_rows($res_field)>0) {
|
|
|
+
|
|
|
+ if (Database::num_rows($res_field)>0) {
|
|
|
$field_id = $r_field[0];
|
|
|
} else {
|
|
|
- // save new fieldlabel into course_field table
|
|
|
+ // save new fieldlabel into course_field table
|
|
|
$sql = "SELECT MAX(field_order) FROM $t_cf";
|
|
|
$res = api_sql_query($sql,__FILE__,__LINE__);
|
|
|
-
|
|
|
+
|
|
|
$order = 0;
|
|
|
if (Database::num_rows($res)>0) {
|
|
|
$row = Database::fetch_row($res);
|
|
|
$order = $row[0]+1;
|
|
|
}
|
|
|
-
|
|
|
+
|
|
|
$sql = "INSERT INTO $t_cf
|
|
|
SET field_type = '$fieldtype',
|
|
|
field_variable = '$fieldvarname',
|
|
|
field_display_text = '$fieldtitle',
|
|
|
- field_order = '$order',
|
|
|
+ field_order = '$order',
|
|
|
tms = FROM_UNIXTIME($time)";
|
|
|
$result = api_sql_query($sql,__FILE__,__LINE__);
|
|
|
-
|
|
|
- $field_id=Database::get_last_insert_id();
|
|
|
+
|
|
|
+ $field_id=Database::get_last_insert_id();
|
|
|
}
|
|
|
return $field_id;
|
|
|
}
|
|
@@ -2082,14 +2082,14 @@ class CourseManager {
|
|
|
{
|
|
|
$fvalues = Database::escape_string($fvalue);
|
|
|
}
|
|
|
-
|
|
|
+
|
|
|
$sqlcf = "SELECT * FROM $t_cf WHERE field_variable='$fname'";
|
|
|
$rescf = api_sql_query($sqlcf,__FILE__,__LINE__);
|
|
|
if(Database::num_rows($rescf)==1)
|
|
|
{ //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);
|
|
|
-
|
|
|
+
|
|
|
$tms = time();
|
|
|
$sqlcfv = "SELECT * FROM $t_cfv WHERE course_code = '$course_code' AND field_id = '".$rowcf['id']."' ORDER BY id";
|
|
|
$rescfv = api_sql_query($sqlcfv,__FILE__,__LINE__);
|
|
@@ -2106,10 +2106,10 @@ class CourseManager {
|
|
|
}
|
|
|
$rowcfv = Database::fetch_array($rescfv);
|
|
|
if($rowcfv['field_value'] != $fvalues)
|
|
|
- {
|
|
|
+ {
|
|
|
$sqlu = "UPDATE $t_cfv SET field_value = '$fvalues', tms = FROM_UNIXTIME($tms) WHERE id = ".$rowcfv['id'];
|
|
|
$resu = api_sql_query($sqlu,__FILE__,__LINE__);
|
|
|
- return($resu?true:false);
|
|
|
+ return($resu?true:false);
|
|
|
}
|
|
|
return true;
|
|
|
}
|
|
@@ -2141,9 +2141,9 @@ class CourseManager {
|
|
|
* @return string The course id
|
|
|
*/
|
|
|
public static function get_course_id_by_database_name ($db_name) {
|
|
|
- $t_course = Database::get_main_table(TABLE_MAIN_COURSE);
|
|
|
+ $t_course = Database::get_main_table(TABLE_MAIN_COURSE);
|
|
|
$sql='SELECT code FROM '.$t_course.' WHERE db_name="'.Database::escape_string($db_name).'"';
|
|
|
$rs=Database::query($sql,__FILE__,__LINE__);
|
|
|
return Database::result($rs,0,'code');
|
|
|
- }
|
|
|
+ }
|
|
|
} //end class CourseManager
|