diff --git a/main/inc/lib/course.lib.php b/main/inc/lib/course.lib.php index 842520cf08..a3e9810663 100644 --- a/main/inc/lib/course.lib.php +++ b/main/inc/lib/course.lib.php @@ -339,9 +339,11 @@ class CourseManager $course_id = $course_info['real_id']; // Unsubscribe user from all groups in the course. - $sql = "DELETE FROM ".Database::get_course_table(TABLE_GROUP_USER)." WHERE c_id = $course_id AND user_id IN (".$user_ids.")"; + $sql = "DELETE FROM ".Database::get_course_table(TABLE_GROUP_USER)." + WHERE c_id = $course_id AND user_id IN (".$user_ids.")"; Database::query($sql); - $sql = "DELETE FROM ".Database::get_course_table(TABLE_GROUP_TUTOR)." WHERE c_id = $course_id AND user_id IN (".$user_ids.")"; + $sql = "DELETE FROM ".Database::get_course_table(TABLE_GROUP_TUTOR)." + WHERE c_id = $course_id AND user_id IN (".$user_ids.")"; Database::query($sql); // Erase user student publications (works) in the course - by André Boivin @@ -2970,50 +2972,112 @@ class CourseManager } } } - return $affected_rows; + return $affected_rows; } /** * get courses followed by human resources manager - * @param int human resources manager id + * @param int $user_id + * @param int $from + * @param int $limit + * @param string $column + * @param string $direction * @return array courses */ - public static function get_courses_followed_by_drh($user_id) - { + public static function get_courses_followed_by_drh( + $user_id, + $from = null, + $limit = null, + $column = null, + $direction = null, + $getCount = false + ) { + return self::getCoursesFollowedByUser( + $user_id, + $from, + $limit, + $column, + $direction, + $getCount + ); + } + + /** + * get courses followed by user + * @param int $user_id + * @param int $from + * @param int $limit + * @param string $column + * @param string $direction + * @return array courses + */ + public static function getCoursesFollowedByUser( + $user_id, + $status = null, + $from = null, + $limit = null, + $column = null, + $direction = null, + $getCount = false + ) { // Database Table Definitions - $tbl_course = Database::get_main_table(TABLE_MAIN_COURSE); - $tbl_course_rel_user = Database::get_main_table(TABLE_MAIN_COURSE_USER); - $tbl_course_rel_access_url = Database::get_main_table(TABLE_MAIN_ACCESS_URL_REL_COURSE); + $tbl_course = Database::get_main_table(TABLE_MAIN_COURSE); + $tbl_course_rel_user = Database::get_main_table(TABLE_MAIN_COURSE_USER); + $tbl_course_rel_access_url = Database::get_main_table(TABLE_MAIN_ACCESS_URL_REL_COURSE); $user_id = intval($user_id); - $assigned_courses_to_hrm = array(); + $select = "SELECT DISTINCT *, id as real_id "; + + if ($getCount) { + $select = "SELECT COUNT(DISTINCT id) as count"; + } + + $whereConditions = null; + switch ($status) { + case COURSEMANAGER: + $whereConditions .= " AND + cru.user_id = '$user_id' AND + status = ".COURSEMANAGER." + "; + break; + case DRH: + $whereConditions .= " AND + cru.user_id = '$user_id' AND + status = ".DRH." AND + relation_type = '".COURSE_RELATION_TYPE_RRHH."' + "; + break; + } + + $sql = "$select + FROM $tbl_course c + INNER JOIN $tbl_course_rel_user cru ON (cru.course_code = c.code) + INNER JOIN $tbl_course_rel_access_url a ON (a.course_code = c.code) + WHERE + access_url_id = ".api_get_current_access_url_id()." + $whereConditions + "; + if (isset($from) && isset($limit)) { + $from = intval($from); + $limit = intval($limit); + $sql .= " LIMIT $from, $limit"; + } - if (api_get_multiple_access_url()) { - $sql = "SELECT *, id as real_id FROM $tbl_course c - INNER JOIN $tbl_course_rel_user cru ON (cru.course_code = c.code) - LEFT JOIN $tbl_course_rel_access_url a ON (a.course_code = c.code) - WHERE - cru.user_id = '$user_id' AND - status = ".DRH." AND - relation_type = '".COURSE_RELATION_TYPE_RRHH."' AND - access_url_id = ".api_get_current_access_url_id().""; - } else { - $sql = "SELECT *, id as real_id FROM $tbl_course c - INNER JOIN $tbl_course_rel_user cru - ON - cru.course_code = c.code AND - cru.user_id = '$user_id' AND - status = ".DRH." AND - relation_type = '".COURSE_RELATION_TYPE_RRHH."' "; - } - $rs_assigned_courses = Database::query($sql); - if (Database::num_rows($rs_assigned_courses) > 0) { - while ($row_assigned_courses = Database::fetch_array($rs_assigned_courses)) { - $assigned_courses_to_hrm[$row_assigned_courses['code']] = $row_assigned_courses; + $result = Database::query($sql); + + if ($getCount) { + $row = Database::fetch_array($result); + return $row['count']; + } + + $courses = array(); + if (Database::num_rows($result) > 0) { + while ($row = Database::fetch_array($result)) { + $courses[$row['code']] = $row; } } - return $assigned_courses_to_hrm; + return $courses; } /** @@ -4145,7 +4209,7 @@ class CourseManager if ($access_link && in_array('enter', $access_link)) { $my_course['extra_info']['go_to_course_button'] = Display::url(get_lang('GoToCourse'), api_get_path(WEB_COURSE_PATH).$course_info['path'].'/index.php', array('class' => 'btn btn-primary')); } - + if ($access_link && in_array('unsubscribe', $access_link)) { $my_course['extra_info']['unsubscribe_button'] = Display::url(get_lang('Unsubscribe'), api_get_path(WEB_CODE_PATH).'auth/courses.php?action=unsubscribe&unsubscribe='.$courseCode.'&sec_token='.$stok.'&category_code='.$categoryCode, array('class' => 'btn btn-primary')); } @@ -4268,7 +4332,7 @@ class CourseManager ) { $options[]= 'enter'; } - + if ($is_admin || $course['visibility'] == COURSE_VISIBILITY_OPEN_WORLD && empty($course['registration_code']) || (api_user_is_login($uid) && $course['visibility'] == COURSE_VISIBILITY_OPEN_PLATFORM && empty($course['registration_code']) ) || @@ -4276,11 +4340,11 @@ class CourseManager ) { $options[]= 'enter'; } - + if ($course['visibility'] != HIDDEN && empty($course['registration_code']) && $course['unsubscribe'] == UNSUBSCRIBE_ALLOWED && api_user_is_login($uid) && (in_array($course['real_id'], $user_courses))) { $options[]= 'unsubscribe'; } - + return $options; } diff --git a/main/inc/lib/sessionmanager.lib.php b/main/inc/lib/sessionmanager.lib.php index 887b29d62c..20b752a8b9 100644 --- a/main/inc/lib/sessionmanager.lib.php +++ b/main/inc/lib/sessionmanager.lib.php @@ -2394,21 +2394,55 @@ class SessionManager $getSql = false, $orderCondition = null ) { - // Database Table Definitions - $tbl_session = Database::get_main_table(TABLE_MAIN_SESSION); - $tbl_session_rel_user = Database::get_main_table(TABLE_MAIN_SESSION_USER); + return self::getSessionsFollowedByUser( + $userId, + DRH, + $start, + $limit, + $getCount, + $getOnlySessionId, + $getSql, + $orderCondition + ); + } + + /** + * Get sessions followed by human resources manager + * @param int $userId + * @param int $start + * @param int $limit + * @param bool $getCount + * @param bool $getOnlySessionId + * @param bool $getSql + * @param string $orderCondition + * @return array sessions + */ + public static function getSessionsFollowedByUser( + $userId, + $status = null, + $start = null, + $limit = null, + $getCount = false, + $getOnlySessionId = false, + $getSql = false, + $orderCondition = null + ) { + // Database Table Definitions + $tbl_session = Database::get_main_table(TABLE_MAIN_SESSION); + $tbl_session_rel_user = Database::get_main_table(TABLE_MAIN_SESSION_USER); + $tbl_session_rel_course_rel_user = Database::get_main_table(TABLE_MAIN_SESSION_COURSE_USER); $tbl_session_rel_access_url = Database::get_main_table(TABLE_MAIN_ACCESS_URL_REL_SESSION); - $userId = intval($userId); + $userId = intval($userId); - $select = " SELECT * "; + $select = " SELECT DISTINCT * "; if ($getCount) { - $select = " SELECT count(s.id) as count "; + $select = " SELECT count(DISTINCT(s.id)) as count "; } if ($getOnlySessionId) { - $select = " SELECT s.id "; + $select = " SELECT DISTINCT(s.id) "; } $limitCondition = null; @@ -2420,32 +2454,50 @@ class SessionManager $orderCondition = " ORDER BY s.name "; } - if (api_is_multiple_url_enabled()) { - $sql = " $select FROM $tbl_session s - INNER JOIN $tbl_session_rel_user sru ON (sru.id_session = s.id) - LEFT JOIN $tbl_session_rel_access_url a ON (s.id = a.session_id) - WHERE - sru.id_user = '$userId' AND - sru.relation_type = '".SESSION_RELATION_TYPE_RRHH."' AND - access_url_id = ".api_get_current_access_url_id()." - $orderCondition - $limitCondition"; - } else { - $sql = "$select FROM $tbl_session s - INNER JOIN $tbl_session_rel_user sru - ON - sru.id_session = s.id AND - sru.id_user = '$userId' AND - sru.relation_type = '".SESSION_RELATION_TYPE_RRHH."' - $orderCondition - $limitCondition"; + $whereConditions = null; + $sessionCourseConditions = null; + $sessionConditions = null; + $sessionQuery = null; + $courseSessionQuery = null; + + switch($status) { + case DRH: + $sessionQuery = "SELECT sru.id_session + FROM + $tbl_session_rel_user sru + WHERE + sru.relation_type = '".SESSION_RELATION_TYPE_RRHH."' AND + sru.id_user = $userId"; + break; + case COURSEMANAGER: + $courseSessionQuery = " + SELECT scu.id_session as id + FROM $tbl_session_rel_course_rel_user scu + WHERE (scu.status = 2 AND scu.id_user = $userId)"; + + $whereConditions = " OR (s.id_coach = $userId) "; + + break; } + $subQuery = $sessionQuery.$courseSessionQuery; + + $sql = " $select FROM $tbl_session s + INNER JOIN $tbl_session_rel_access_url a ON (s.id = a.session_id) + WHERE + access_url_id = ".api_get_current_access_url_id()." AND + s.id IN ( + $subQuery + ) + $whereConditions + $orderCondition + $limitCondition"; + if ($getSql) { return $sql; } - $result = Database::query($sql); + $result = Database::query($sql); if ($getCount) { $row = Database::fetch_array($result); @@ -2454,12 +2506,12 @@ class SessionManager $sessions = array(); if (Database::num_rows($result) > 0) { - while ($row = Database::fetch_array($result)) { + while ($row = Database::fetch_array($result)) { $sessions[$row['id']] = $row; - } - } - return $sessions; - } + } + } + return $sessions; + } /** * Gets the list of courses by session filtered by access_url @@ -2473,7 +2525,8 @@ class SessionManager $tbl_session_rel_course = Database::get_main_table(TABLE_MAIN_SESSION_COURSE); // select the courses - $sql = "SELECT * FROM $tbl_course c INNER JOIN $tbl_session_rel_course src ON c.code = src.course_code + $sql = "SELECT * FROM $tbl_course c + INNER JOIN $tbl_session_rel_course src ON c.code = src.course_code WHERE src.id_session = '$session_id'"; if (!empty($course_name)) { $course_name = Database::escape_string($course_name); @@ -2492,6 +2545,99 @@ class SessionManager return $courses; } + /** + * Gets the list of courses by session filtered by access_url + * @param int session id + * @return array list of courses + */ + public static function getAllCoursesFollowedByUser( + $userId, + $sessionId, + $from, + $limit, + $column, + $direction, + $getCount = false + ) { + if (empty($sessionId)) { + $sessionsSQL = SessionManager::get_sessions_followed_by_drh( + $userId, + null, + null, + null, + true, + true + ); + } else { + $sessionsSQL = intval($sessionId); + } + + $tbl_course = Database::get_main_table(TABLE_MAIN_COURSE); + $tbl_session_rel_course = Database::get_main_table(TABLE_MAIN_SESSION_COURSE); + + if ($getCount) { + $select = "SELECT COUNT(DISTINCT(c.code)) as count "; + } else { + $select = "SELECT DISTINCT c.* "; + } + + // Select the courses + $sql = "$select + FROM $tbl_course c + INNER JOIN $tbl_session_rel_course src + ON c.code = src.course_code + WHERE src.id_session IN ($sessionsSQL) + "; + if ($getCount) { + $result = Database::query($sql); + $row = Database::fetch_array($result,'ASSOC'); + return $row['count']; + } + + if (isset($from) && isset($limit)) { + $from = intval($from); + $limit = intval($limit); + $sql .= " LIMIT $from, $limit"; + } + + $result = Database::query($sql); + $num_rows = Database::num_rows($result); + $courses = array(); + + if ($num_rows > 0) { + while ($row = Database::fetch_array($result,'ASSOC')) { + $courses[$row['id']] = $row; + } + } + return $courses; + } + + + /** + * Gets the count of courses by session filtered by access_url + * @param int session id + * @return array list of courses + */ + public static function getCourseCountBySessionId($session_id) + { + $tbl_course = Database::get_main_table(TABLE_MAIN_COURSE); + $tbl_session_rel_course = Database::get_main_table(TABLE_MAIN_SESSION_COURSE); + + // select the courses + $sql = "SELECT COUNT(c.code) count FROM $tbl_course c + INNER JOIN $tbl_session_rel_course src + ON c.code = src.course_code + WHERE src.id_session = '$session_id'"; + + $result = Database::query($sql); + $num_rows = Database::num_rows($result); + if ($num_rows > 0) { + $row = Database::fetch_array($result,'ASSOC'); + return $row['count']; + } + return null; + } + /** * Get the session id based on the original id and field name in the extra fields. Returns 0 if session was not found * @@ -3250,8 +3396,6 @@ class SessionManager } } - //var_dump($sessionWithCoursesModifier); - foreach ($courses as $course) { $courseArray = bracketsToArray($course); $course_code = $courseArray[0]; @@ -3443,10 +3587,10 @@ class SessionManager */ public static function getCoachesBySession($sessionId) { - $tbl_session_rel_course_rel_user = Database::get_main_table(TABLE_MAIN_SESSION_COURSE_USER); + $table = Database::get_main_table(TABLE_MAIN_SESSION_COURSE_USER); $sessionId = intval($sessionId); - $sql = "SELECT DISTINCT id_user FROM $tbl_session_rel_course_rel_user + $sql = "SELECT DISTINCT id_user FROM $table WHERE id_session = '$sessionId' AND status = 2"; $result = Database::query($sql); @@ -3459,25 +3603,6 @@ class SessionManager return $coaches; } - /** - * @param int $userId - * @return array - */ - public static function getAllCoursesFromAllSessionFromDrh($userId) - { - $sessions = SessionManager::get_sessions_followed_by_drh($userId); - $coursesFromSession = array(); - if (!empty($sessions)) { - foreach ($sessions as $session) { - $courseList = SessionManager::get_course_list_by_session_id($session['id']); - foreach ($courseList as $course) { - $coursesFromSession[] = $course['code']; - } - } - } - return $coursesFromSession; - } - /** * @param string $status * @param int $userId @@ -3513,6 +3638,9 @@ class SessionManager $tbl_user = Database::get_main_table(TABLE_MAIN_USER); $tbl_session = Database::get_main_table(TABLE_MAIN_SESSION); + $tbl_course = Database::get_main_table(TABLE_MAIN_COURSE); + $tbl_course_user = Database::get_main_table(TABLE_MAIN_COURSE_USER); + $tbl_course_rel_access_url = Database::get_main_table(TABLE_MAIN_ACCESS_URL_REL_COURSE); $tbl_session_rel_course_rel_user = Database::get_main_table(TABLE_MAIN_SESSION_COURSE_USER); $tbl_session_rel_access_url = Database::get_main_table(TABLE_MAIN_ACCESS_URL_REL_SESSION); @@ -3521,21 +3649,24 @@ class SessionManager $userId = intval($userId); $limitCondition = null; + if (isset($from) && isset($numberItems)) { $from = intval($from); $numberItems = intval($numberItems); $limitCondition = "LIMIT $from, $numberItems"; } - $activeCondition = null; + $urlId = api_get_current_access_url_id(); + + $sessionConditions = null; + $courseConditions = null; + $userConditions = null; + if (isset($active)) { $active = intval($active); - $activeCondition = " AND active = $active"; + $userConditions .= " AND active = $active"; } - $urlId = api_get_current_access_url_id(); - - $statusConditions = null; switch ($status) { case 'drh': // Classic DRH @@ -3553,7 +3684,7 @@ class SessionManager $studentListSql = "'".implode("','", $studentIdList)."'"; } if (!empty($studentListSql)) { - $statusConditions = " AND u.user_id IN (".$studentListSql.") "; + $userConditions = " AND u.user_id IN (".$studentListSql.") "; } break; case 'drh_all': @@ -3571,52 +3702,42 @@ class SessionManager $sessionIdList = array_map('intval', $sessionIdList); $sessionsListSql = "'".implode("','", $sessionIdList)."'"; } - if (!empty($sessionsListSql)) { - $statusConditions = " AND s.id IN (".$sessionsListSql.") "; + $sessionConditions = " AND s.id IN (".$sessionsListSql.") "; } break; case 'session_admin'; - $statusConditions = " AND s.id_coach = $userId "; + $sessionConditions = " AND s.id_coach = $userId "; break; case 'admin': break; - case 'course_coach': - //$statusConditions = " AND s.id_coach = $userId"; + case 'teacher': + $sessionConditions = " AND s.id_coach = $userId "; + + // $statusConditions = " AND s.id_coach = $userId"; break; } - $select = "SELECT DISTINCT u.*"; + $select = "SELECT DISTINCT u.* "; + $masterSelect = "SELECT DISTINCT * FROM "; if ($getCount) { - $select = "SELECT count(DISTINCT u.user_id) as count "; + $select = "SELECT DISTINCT u.user_id "; + $masterSelect = "SELECT COUNT(DISTINCT(user_id)) as count FROM "; } - $sql = "$select - FROM $tbl_session s - INNER JOIN $tbl_session_rel_course_rel_user su ON (s.id = su.id_session) - INNER JOIN $tbl_user u ON (u.user_id = su.id_user AND s.id = id_session) - INNER JOIN $tbl_session_rel_access_url url ON (url.session_id = s.id)"; - - $where = " WHERE access_url_id = $urlId - $statusConditions - $activeCondition - "; - if (!empty($filterByStatus)) { - $where .= " AND u.status = ".$filterByStatus; + $userConditions .= " AND u.status = ".$filterByStatus; } if (!empty($lastConnectionDate)) { $lastConnectionDate = Database::escape_string($lastConnectionDate); - $where .= " AND u.last_login <= '$lastConnectionDate' "; + $userConditions .= " AND u.last_login <= '$lastConnectionDate' "; } - $sql .= $where; - if (!empty($keyword)) { $keyword = Database::escape_string($keyword); - $sql .= " AND ( + $userConditions .= " AND ( u.username LIKE '%$keyword%' OR u.firstname LIKE '%$keyword%' OR u.lastname LIKE '%$keyword%' OR @@ -3625,7 +3746,34 @@ class SessionManager )"; } + $where = " WHERE + access_url_id = $urlId + $userConditions + "; + + $sql = "$masterSelect ( + ($select + FROM $tbl_session s + INNER JOIN $tbl_session_rel_course_rel_user su ON (s.id = su.id_session) + INNER JOIN $tbl_user u ON (u.user_id = su.id_user AND s.id = id_session) + INNER JOIN $tbl_session_rel_access_url url ON (url.session_id = s.id) + $where + $sessionConditions + ) + UNION ( + $select + FROM $tbl_course c + INNER JOIN $tbl_course_user cu ON (cu.course_code = c.code) + INNER JOIN $tbl_user u ON (u.user_id = cu.user_id) + INNER JOIN $tbl_course_rel_access_url url ON (url.course_code = c.code) + $where + $courseConditions + ) + ) as t1 + "; + if ($getCount) { + ///var_dump($sql); $result = Database::query($sql); $count = 0; if (Database::num_rows($result)) { @@ -3636,10 +3784,12 @@ class SessionManager } if (!empty($column) && !empty($direction)) { + $column = str_replace('u.', '', $column); $sql .= " ORDER BY $column $direction "; } $sql .= $limitCondition; + $result = Database::query($sql); $result = Database::store_result($result); @@ -3797,6 +3947,7 @@ class SessionManager * @param array $sessionIdList * @param array $studentIdList * @param int $userStatus STUDENT|COURSEMANAGER constants + * @return array|int */ public static function getCountUserTracking( @@ -3805,9 +3956,10 @@ class SessionManager $lastConnectionDate = null, $sessionIdList = array(), $studentIdList = array(), - $userStatus = null + $filterUserStatus = null ) { $userId = api_get_user_id(); + $drhLoaded = false; if (api_is_drh()) { if (api_drh_can_access_all_session_content()) { @@ -3824,31 +3976,16 @@ class SessionManager $lastConnectionDate, $sessionIdList, $studentIdList, - $userStatus - ); - } else { - - $count = UserManager::get_users_followed_by_drh( - $userId, - null, - false, - false, - true, - null, - null, - null, - null, - $active, - $lastConnectionDate, - array(), - array(), - $userStatus + $filterUserStatus ); + $drhLoaded = true; } - } else { - $count = UserManager::get_users_followed_by_drh( + } + + if ($drhLoaded == false) { + $count = UserManager::getUsersFollowedByUser( $userId, - $userStatus, + $filterUserStatus, false, false, true, @@ -3857,9 +3994,11 @@ class SessionManager null, null, $active, - $lastConnectionDate + $lastConnectionDate, + COURSEMANAGER ); } + return $count; } diff --git a/main/inc/lib/tracking.lib.php b/main/inc/lib/tracking.lib.php index 727191e62a..3cce24bc2b 100644 --- a/main/inc/lib/tracking.lib.php +++ b/main/inc/lib/tracking.lib.php @@ -91,23 +91,95 @@ class Tracking $humanResourcesList[] = $item['user_id']; } - $platformCourses = SessionManager::getAllCoursesFromAllSessionFromDrh($userId); + $platformCourses = SessionManager::getAllCoursesFollowedByUser( + $userId, + null, + null, + null, + null, + null + ); + + //$platformCourses = SessionManager::getAllCoursesFromAllSessionFromDrh($userId); $courses = array(); foreach ($platformCourses as $course) { - $courses[$course] = $course; + $courses[$course['code']] = $course['code']; } $sessions = SessionManager::get_sessions_followed_by_drh($userId); } else { - $students = array_keys(UserManager::get_users_followed_by_drh($userId, STUDENT)); - $teachers = array_keys(UserManager::get_users_followed_by_drh($userId, COURSEMANAGER)); - $humanResourcesList = array_keys(UserManager::get_users_followed_by_drh($userId, DRH)); - $platformCourses = CourseManager::get_courses_followed_by_drh($userId); + $studentList = UserManager::getUsersFollowedByUser( + $userId, + STUDENT, + false, + false, + false, + null, + null, + null, + null, + null, + null, + COURSEMANAGER + ); + + $students = array(); + foreach ($studentList as $studentData) { + $students[] = $studentData['user_id']; + } + + $teacherList = UserManager::getUsersFollowedByUser( + $userId, + COURSEMANAGER, + false, + false, + false, + null, + null, + null, + null, + null, + null, + COURSEMANAGER + ); + + $teachers = array(); + foreach ($teacherList as $teacherData) { + $teachers[] = $teacherData['user_id']; + } + + $humanResources = UserManager::getUsersFollowedByUser( + $userId, + DRH, + false, + false, + false, + null, + null, + null, + null, + null, + null, + COURSEMANAGER + ); + + $humanResourcesList = array(); + foreach ($humanResources as $item) { + $humanResourcesList[] = $item['user_id']; + } + + $platformCourses = CourseManager::getCoursesFollowedByUser( + $userId, + COURSEMANAGER + ); foreach ($platformCourses as $course) { $courses[$course['code']] = $course['code']; } - $sessions = SessionManager::get_sessions_followed_by_drh($userId); + $sessions = SessionManager::getSessionsFollowedByUser( + $userId, + COURSEMANAGER + ); } return array( diff --git a/main/inc/lib/usermanager.lib.php b/main/inc/lib/usermanager.lib.php index f9ea69b66c..46acfd35ba 100644 --- a/main/inc/lib/usermanager.lib.php +++ b/main/inc/lib/usermanager.lib.php @@ -90,14 +90,20 @@ class UserManager $access_url_id = api_get_current_access_url_id(); } - if (is_array($_configuration[$access_url_id]) && isset($_configuration[$access_url_id]['hosting_limit_users']) && $_configuration[$access_url_id]['hosting_limit_users'] > 0) { + if (is_array($_configuration[$access_url_id]) && + isset($_configuration[$access_url_id]['hosting_limit_users']) && + $_configuration[$access_url_id]['hosting_limit_users'] > 0) { $num = self::get_number_of_users(); if ($num >= $_configuration[$access_url_id]['hosting_limit_users']) { return api_set_failure('portal users limit reached'); } } - if ($status === 1 && is_array($_configuration[$access_url_id]) && isset($_configuration[$access_url_id]['hosting_limit_teachers']) && $_configuration[$access_url_id]['hosting_limit_teachers'] > 0) { + if ($status === 1 && + is_array($_configuration[$access_url_id]) && + isset($_configuration[$access_url_id]['hosting_limit_teachers']) && + $_configuration[$access_url_id]['hosting_limit_teachers'] > 0 + ) { $num = self::get_number_of_users(1); if ($num >= $_configuration[$access_url_id]['hosting_limit_teachers']) { return api_set_failure('portal teachers limit reached'); @@ -236,7 +242,9 @@ class UserManager public static function can_delete_user($user_id) { global $_configuration; - if (isset($_configuration['deny_delete_users']) && $_configuration['deny_delete_users'] == true) { + if (isset($_configuration['deny_delete_users']) && + $_configuration['deny_delete_users'] == true + ) { return false; } $table_course_user = Database :: get_main_table(TABLE_MAIN_COURSE_USER); @@ -244,10 +252,12 @@ class UserManager return false; if ($user_id === false) return false; - $sql = "SELECT * FROM $table_course_user WHERE status = '1' AND user_id = '".$user_id."'"; + $sql = "SELECT * FROM $table_course_user + WHERE status = '1' AND user_id = '".$user_id."'"; $res = Database::query($sql); while ($course = Database::fetch_object($res)) { - $sql = "SELECT user_id FROM $table_course_user WHERE status='1' AND course_code ='".Database::escape_string($course->course_code)."'"; + $sql = "SELECT user_id FROM $table_course_user + WHERE status='1' AND course_code ='".Database::escape_string($course->course_code)."'"; $res2 = Database::query($sql); if (Database::num_rows($res2) == 1) { return false; @@ -293,10 +303,14 @@ class UserManager // Unsubscribe the user from all groups in all his courses $sql = "SELECT c.id FROM $table_course c, $table_course_user cu - WHERE cu.user_id = '".$user_id."' AND relation_type<>".COURSE_RELATION_TYPE_RRHH." AND c.code = cu.course_code"; + WHERE + cu.user_id = '".$user_id."' AND + relation_type<>".COURSE_RELATION_TYPE_RRHH." AND + c.code = cu.course_code"; $res = Database::query($sql); while ($course = Database::fetch_object($res)) { - $sql = "DELETE FROM $table_group WHERE c_id = {$course->id} AND user_id = $user_id"; + $sql = "DELETE FROM $table_group + WHERE c_id = {$course->id} AND user_id = $user_id"; Database::query($sql); } @@ -330,7 +344,8 @@ class UserManager Database::query($sql); // Delete user picture - // TODO: Logic about api_get_setting('split_users_upload_directory') === 'true' , a user has 4 differnt sized photos to be deleted. + /* TODO: Logic about api_get_setting('split_users_upload_directory') == 'true' + a user has 4 differnt sized photos to be deleted. */ $user_info = api_get_user_info($user_id); if (strlen($user_info['picture_uri']) > 0) { $img_path = api_get_path(SYS_CODE_PATH).'upload/users/'.$user_id.'/'.$user_info['picture_uri']; @@ -524,7 +539,7 @@ class UserManager * @param string The user's picture URL (internal to the Chamilo directory) * @param int The user ID of the person who registered this user (optional, defaults to null) * @param int The department of HR in which the user is registered (optional, defaults to 0) - * @param array A series of additional fields to add to this user as extra fields (optional, defaults to null) + * @param array A series of additional fields to add to this user as extra fields (optional, defaults to null) * @return boolean true if the user information was updated * @assert (false, false, false, false, false, false, false, false, false, false, false, false, false) === false */ @@ -726,7 +741,13 @@ class UserManager { $t_uf = Database::get_main_table(TABLE_MAIN_USER_FIELD); $t_ufv = Database::get_main_table(TABLE_MAIN_USER_FIELD_VALUES); - $sql = "SELECT user_id FROM $t_uf uf INNER JOIN $t_ufv ufv ON ufv.field_id=uf.id WHERE field_variable='$original_user_id_name' AND field_value='$original_user_id_value';"; + $sql = "SELECT user_id + FROM $t_uf uf + INNER JOIN $t_ufv ufv + ON ufv.field_id=uf.id + WHERE + field_variable='$original_user_id_name' AND + field_value='$original_user_id_value';"; $res = Database::query($sql); $row = Database::fetch_object($res); if ($row) { @@ -749,18 +770,19 @@ class UserManager return false; } $table_user = Database :: get_main_table(TABLE_MAIN_USER); - $sql = "SELECT username FROM $table_user WHERE username = '".Database::escape_string($username)."'"; + $sql = "SELECT username FROM $table_user + WHERE username = '".Database::escape_string($username)."'"; $res = Database::query($sql); return Database::num_rows($res) == 0; } /** * Creates a username using person's names, i.e. creates jmontoya from Julio Montoya. - * @param string $firstname The first name of the user. - * @param string $lastname The last name of the user. + * @param string $firstname The first name of the user. + * @param string $lastname The last name of the user. * @param string $language (optional) The language in which comparison is to be made. If language is omitted, interface language is assumed then. * @param string $encoding (optional) The character encoding for the input names. If it is omitted, the platform character set will be used by default. - * @return string Suggests a username that contains only ASCII-letters and digits, without check for uniqueness within the system. + * @return string Suggests a username that contains only ASCII-letters and digits, without check for uniqueness within the system. * @author Julio Montoya Armas * @author Ivan Tcholakov, 2009 - rework about internationalization. * @assert ('','') === false @@ -869,9 +891,9 @@ class UserManager /** * Checks whether a given username matches to the specification strictly. The empty username is assumed here as invalid. * Mostly this function is to be used in the user interface built-in validation routines for providing feedback while usernames are enterd manually. - * @param string $username The input username. - * @param string $encoding (optional) The character encoding for the input names. If it is omitted, the platform character set will be used by default. - * @return bool Returns TRUE if the username is valid, FALSE otherwise. + * @param string $username The input username. + * @param string $encoding (optional) The character encoding for the input names. If it is omitted, the platform character set will be used by default. + * @return bool Returns TRUE if the username is valid, FALSE otherwise. */ public static function is_username_valid($username, $encoding = null) { @@ -881,8 +903,8 @@ class UserManager /** * Checks whether a username is empty. If the username contains whitespace characters, such as spaces, tabulators, newlines, etc., * it is assumed as empty too. This function is safe for validation unpurified data (during importing). - * @param string $username The given username. - * @return bool Returns TRUE if length of the username exceeds the limit, FALSE otherwise. + * @param string $username The given username. + * @return bool Returns TRUE if length of the username exceeds the limit, FALSE otherwise. */ public static function is_username_empty($username) { @@ -891,14 +913,19 @@ class UserManager /** * Checks whether a username is too long or not. - * @param string $username The given username, it should contain only ASCII-letters and digits. - * @return bool Returns TRUE if length of the username exceeds the limit, FALSE otherwise. + * @param string $username The given username, it should contain only ASCII-letters and digits. + * @return bool Returns TRUE if length of the username exceeds the limit, FALSE otherwise. */ public static function is_username_too_long($username) { return (strlen($username) > USERNAME_MAX_LENGTH); } + /** + * @param array $ids + * @param null $active + * @return array + */ public static function get_user_list_by_ids($ids = array(), $active = null) { if (empty($ids)) { @@ -1051,7 +1078,8 @@ class UserManager return false; } - /** Get the teacher list + /** + * Get the teacher list * @param int the course ID * @param array Content the list ID of user_id selected */ @@ -1062,8 +1090,9 @@ class UserManager $user_course_table = Database :: get_main_table(TABLE_MAIN_COURSE_USER); $user_table = Database :: get_main_table(TABLE_MAIN_USER); $course_id = Database::escape_string($course_id); - $sql_query = "SELECT * FROM $user_table a, $user_course_table b where a.user_id=b.user_id AND b.status=1 AND b.course_code='$course_id'"; - $sql_result = Database::query($sql_query); + $sql = "SELECT * FROM $user_table a, $user_course_table b + WHERE a.user_id=b.user_id AND b.status=1 AND b.course_code='$course_id'"; + $sql_result = Database::query($sql); echo "