$nb_assignments = null; $nb_posts = null; } } else { // Sessions. $visibility = api_get_session_visibility($session_id); if ($visibility == SESSION_INVISIBLE) { Display::display_warning_message(get_lang('NotAvailable')); Display::display_footer(); } $courses = Tracking::get_courses_followed_by_coach($user_id, $session_id); //If is drh if ($is_drh) { $courses_of_the_platform = CourseManager::get_courses_followed_by_drh($user_id); $courses = array(); $courses_from_session = SessionManager::get_course_list_by_session_id($session_id); foreach ($courses_from_session as $course_item) { if (isset($courses_of_the_platform[$course_item['code']])) { $courses[$course_item['code']] = $course_item['code']; } } if (empty($courses)) { Display::display_warning_message(get_lang('NoResults')); } } //Courses for the user $count_courses = count($courses); //Sessions for the user $count_sessions = count($sessions); } if ($count_courses || $count_sessions) {
/** * Get the count of approved induction sessions by a user * @param int $userId The user id * @return int The count of approved sessions */ private function getApprovedInductionSessions($userId) { $tSession = Database::get_main_table(TABLE_MAIN_SESSION); $tSessionField = Database::get_main_table(TABLE_EXTRA_FIELD); $tSessionFieldValues = Database::get_main_table(TABLE_EXTRA_FIELD_VALUES); $tSessionUser = Database::get_main_table(TABLE_MAIN_SESSION_USER); $extraFieldType = \Chamilo\CoreBundle\Entity\ExtraField::SESSION_FIELD_TYPE; $sql = "SELECT s.id FROM {$tSession} AS s\n INNER JOIN {$tSessionFieldValues} AS sfv ON s.id = sfv.item_id\n INNER JOIN {$tSessionField} AS sf ON sfv.field_id = sf.id\n INNER JOIN {$tSessionUser} AS su ON s.id = su.session_id\n WHERE\n sf.extra_field_type = {$extraFieldType} AND\n sf.variable = 'is_induction_session' AND\n su.relation_type = 0 AND\n su.user_id = " . intval($userId); $result = Database::query($sql); if ($result === false) { return 0; } $numberOfApproved = 0; while ($session = Database::fetch_assoc($result)) { $numberOfApprovedCourses = 0; $courses = SessionManager::get_course_list_by_session_id($session['id']); foreach ($courses as $course) { $courseCategories = Category::load(null, null, $course['code'], null, null, $session['id'], false); if (count($courseCategories) > 0 && Category::userFinishedCourse($userId, $courseCategories[0])) { $numberOfApprovedCourses++; } } if ($numberOfApprovedCourses === count($courses)) { $numberOfApproved++; } } return $numberOfApproved; }
$page = isset($_GET['page']) ? intval($_GET['page']) : null; $action = isset($_REQUEST['action']) ? $_REQUEST['action'] : null; $default_sort = api_sort_by_first_name() ? 'firstname' : 'lastname'; $sort = isset($_GET['sort']) && in_array($_GET['sort'], array('lastname', 'firstname', 'username')) ? $_GET['sort'] : $default_sort; $idChecked = isset($_GET['idChecked']) && (is_array($_GET['idChecked']) ? $_GET['idChecked'] : (is_array($_POST['idChecked']) ? $_POST['idChecked'] : null)); $direction = isset($_GET['direction']) && in_array($_GET['direction'], array('desc', 'asc')) ? $_GET['direction'] : 'desc'; if (is_array($idChecked)) { $my_temp = array(); foreach ($idChecked as $id) { $my_temp[] = intval($id); // forcing the intval } $idChecked = $my_temp; } $session_info = SessionManager::fetch($id_session); $courses = SessionManager::get_course_list_by_session_id($id_session); if (!isset($courses[$course_info['real_id']])) { header('Location: session_course_list.php?id_session=' . $id_session); exit; } switch ($action) { case 'delete': SessionManager::unsubscribe_user_from_course_session($id_session, $idChecked, $courseId); header('Location: ' . api_get_self() . '?id_session=' . $id_session . '&course_code=' . urlencode($course_code) . '&sort=' . $sort); exit; break; case 'add': SessionManager::subscribe_users_to_session_course($idChecked, $id_session, $courseId); header('Location: ' . api_get_self() . '?id_session=' . $id_session . '&course_code=' . urlencode($course_code) . '&sort=' . $sort); exit; break;
} $result = ExerciseLib::get_exam_results_hotpotatoes_data($start, $limit, $sidx, $sord, $hotpot_path, $whereCondition); break; case 'get_sessions_tracking': if (api_is_drh()) { $sessions = SessionManager::get_sessions_followed_by_drh(api_get_user_id(), $start, $limit, false, false, false, null, $keyword, $description); } else { // Sessions for the coach $sessions = Tracking::get_sessions_coached_by_user(api_get_user_id(), $start, $limit, false, $keyword, $description); } $columns = array('name', 'date', 'course_per_session', 'student_per_session', 'details'); $result = array(); if (!empty($sessions)) { foreach ($sessions as $session) { if (api_drh_can_access_all_session_content()) { $count_courses_in_session = count(SessionManager::get_course_list_by_session_id($session['id'])); } else { $count_courses_in_session = count(Tracking::get_courses_followed_by_coach($user_id, $session['id'])); } $count_users_in_session = count(SessionManager::get_users_by_session($session['id'], 0)); $session_date = array(); if (!empty($session['access_start_date']) && $session['access_start_date'] != '0000-00-00') { $session_date[] = get_lang('From') . ' ' . api_format_date($session['access_start_date'], DATE_FORMAT_SHORT); } if (!empty($session['access_end_date']) && $session['access_end_date'] != '0000-00-00') { $session_date[] = get_lang('Until') . ' ' . api_format_date($session['access_end_date'], DATE_FORMAT_SHORT); } if (empty($session_date)) { $session_date_string = '-'; } else { $session_date_string = implode(' ', $session_date);
$global = false; } $global = true; $course_list = $course_select_list = array(); $course_select_list[0] = get_lang('None'); $htmlHeadXtra[] = ' <script type="text/javascript"> function load_courses() { document.search_simple.submit(); } </script> '; $session_id = intval($_REQUEST['session_id']); if (empty($session_id)) { $temp_course_list = CourseManager::get_courses_list(); } else { $temp_course_list = SessionManager::get_course_list_by_session_id($session_id); } foreach ($temp_course_list as $temp_course_item) { $course_item = CourseManager::get_course_information($temp_course_item['code']); $course_list[] = array('db_name' => $course_item['db_name'], 'code' => $course_item['code'], 'title' => $course_item['title'], 'visual_code' => $course_item['visual_code']); $course_select_list[$temp_course_item['code']] = $course_item['title']; } //Get session list $session_list = SessionManager::get_sessions_list(array(), array('name')); $my_session_list = array(); $my_session_list[0] = get_lang('None'); foreach ($session_list as $sesion_item) { $my_session_list[$sesion_item['id']] = $sesion_item['name']; } $form = new FormValidator('search_simple', 'POST', '', '', null, false); $form->addElement('select', 'session_id', get_lang('Sessions'), $my_session_list, array('id' => 'session_id', 'onchange' => 'load_courses();'));
$result = Database::query($sql_query); while ($survey = Database::fetch_assoc($result)) { $survey['title'] .= $survey['anonymous'] == 1 ? ' (' . get_lang('Anonymous') . ')' : ''; $data[] = array('id' => $survey['id'], 'text' => strip_tags(html_entity_decode($survey['title']))); } if (!empty($data)) { echo json_encode($data); } else { echo json_encode(array()); } } break; case 'display_sessions_courses': $sessionId = intval($_GET['session']); $userTable = Database::get_main_table(TABLE_MAIN_USER); $coursesData = SessionManager::get_course_list_by_session_id($sessionId); $courses = array(); foreach ($coursesData as $courseId => $course) { $coachData = SessionManager::getCoachesByCourseSession($sessionId, $course['code']); $coachName = ''; if (!empty($coachData)) { $userResult = Database::select('lastname,firstname', $userTable, array('where' => array('user_id = ?' => $coachData[0])), 'first'); $coachName = api_get_person_name($userResult['firstname'], $userResult['lastname']); } $courses[] = array('id' => $courseId, 'name' => $course['title'], 'coachName' => $coachName); } echo json_encode($courses); break; default: echo ''; }
/** * Changes the user from one session to another due a reason * @params int user_id * @params int old session id * @params int new session id * @params int see SessionManager::get_session_change_user_reasons() */ static function change_user_session($user_id, $old_session_id, $new_session_id, $reason_id) { if (!empty($user_id) && !empty($old_session_id) && !empty($new_session_id)) { $user_id = intval($user_id); $old_session_id = intval($old_session_id); $new_session_id = intval($new_session_id); $reason_id = intval($reason_id); $tbl_session_rel_course = Database::get_main_table(TABLE_MAIN_SESSION_COURSE); $tbl_session_rel_user = Database::get_main_table(TABLE_MAIN_SESSION_USER); $tbl_session = Database::get_main_table(TABLE_MAIN_SESSION); // Update number of users $update_sql = "UPDATE {$tbl_session} SET nbr_users = nbr_users - 1 WHERE id = '{$old_session_id}' "; Database::query($update_sql); // Get the list of courses related to this session $course_list = SessionManager::get_course_list_by_session_id($old_session_id); if (!empty($course_list)) { foreach ($course_list as $course) { $courseId = $course['id']; // Delete user from course //Database::query("DELETE FROM $tbl_session_rel_course_rel_user WHERE id_session='$session_id' AND course_code='$course_code' AND id_user='******'"); //if (Database::affected_rows()) { // Update number of users in this relation $sql = "UPDATE {$tbl_session_rel_course} SET nbr_users = nbr_users - 1 WHERE id_session = '{$old_session_id}' AND c_id='{$courseId}'"; Database::query($sql); //} } } //Deal with reasons switch ($reason_id) { case self::SESSION_CHANGE_USER_REASON_SCHEDULE: case self::SESSION_CHANGE_USER_REASON_CLASSROOM: case self::SESSION_CHANGE_USER_REASON_LOCATION: //Adding to the new session self::suscribe_users_to_session($new_session_id, array($user_id), null, false); //Setting move_to if session was provided $sql = "UPDATE {$tbl_session_rel_user} SET moved_to = '{$new_session_id}'\n WHERE id_session = '{$old_session_id}' AND id_user ='******'"; Database::query($sql); break; case self::SESSION_CHANGE_USER_REASON_ENROLLMENT_ANNULATION: UserManager::deactivate_users(array($user_id)); break; } $now = api_get_utc_datetime(); //Setting the moved_status $sql = "UPDATE {$tbl_session_rel_user} SET moved_status = {$reason_id}, moved_at = '{$now}'\n WHERE id_session = '{$old_session_id}' AND id_user ='******'"; Database::query($sql); return true; } return; }
} if (count($certificateStudent['certificates']) > 0) { $certificateStudents[] = $certificateStudent; } } } } } elseif ($searchStudentOnly) { $selectedStudentInfo = api_get_user_info($selectedStudent); if (empty($selectedStudentInfo)) { Session::write('reportErrorMessage', get_lang('NoUser')); Header::location($selfUrl); } $sessionList = SessionManager::getSessionsFollowedByUser($selectedStudent); foreach ($sessionList as $session) { $sessionCourseList = SessionManager::get_course_list_by_session_id($session['id']); foreach ($sessionCourseList as $sessionCourse) { $gradebookCategories = Category::load(null, null, $sessionCourse['code'], null, false, $session['id']); $gradebook = null; if (!empty($gradebookCategories)) { $gradebook = current($gradebookCategories); } if (!is_null($gradebook)) { $sessionName = $session['name']; $courseName = $sessionCourse['title']; $certificateStudent = ['fullName' => $selectedStudentInfo['complete_name'], 'sessionName' => $sessionName, 'courseName' => $courseName, 'certificates' => []]; $studentCertificates = GradebookUtils::get_list_gradebook_certificates_by_user_id($selectedStudent, $gradebook->get_id()); if (!is_array($studentCertificates) || empty($studentCertificates)) { continue; } foreach ($studentCertificates as $certificate) {
$coaches = CourseManager::get_coachs_from_course($session['id'], $course['real_id']); if ($coaches) { foreach ($coaches as $coach) { $totalTime = UserManager::getTimeSpentInCourses($coach['user_id'], $course['real_id'], $session['id'], $selectedFrom, $selectedUntil); $formattedTime = api_format_time($totalTime); $timeReport->data[] = array('session' => array('id' => $session['id'], 'name' => $session['name']), 'course' => array('id' => $course['real_id'], 'name' => $course['title']), 'coach' => array('userId' => $coach['user_id'], 'lastname' => $coach['lastname'], 'firstname' => $coach['firstname'], 'username' => $coach['username'], 'completeName' => api_get_person_name($coach['firstname'], $coach['lastname'])), 'totalTime' => $formattedTime); } } } } if (!empty($selectedSession)) { $withFilter = true; $session = api_get_session_info($selectedSession); $sessionData = array('id' => $session['id'], 'name' => $session['name']); $reportTitle = sprintf(get_lang('TimeReportForSessionX'), $session['name']); $courses = SessionManager::get_course_list_by_session_id($selectedSession); foreach ($courses as $course) { $courseData = array('id' => $course['id'], 'name' => $course['title']); $coaches = CourseManager::get_coachs_from_course($selectedSession, $course['id']); if ($coaches) { foreach ($coaches as $coach) { $totalTime = UserManager::getTimeSpentInCourses($coach['user_id'], $course['id'], $selectedSession, $selectedFrom, $selectedUntil); $formattedTime = api_format_time($totalTime); $timeReport->data[] = array('session' => $sessionData, 'course' => $courseData, 'coach' => array('userId' => $coach['user_id'], 'lastname' => $coach['lastname'], 'firstname' => $coach['firstname'], 'username' => $coach['username'], 'completeName' => api_get_person_name($coach['firstname'], $coach['lastname'])), 'totalTime' => $formattedTime); } } } } if (!empty($selectedTeacher)) { $withFilter = true; $teacher = api_get_user_info();
function searchCourses($idSession, $type) { $xajaxResponse = new xajaxResponse(); $return = null; $courseCode = api_get_course_id(); if (!empty($type)) { $idSession = intval($idSession); $courseList = SessionManager::get_course_list_by_session_id($idSession); $return .= '<select id="destination" name="SessionCoursesListDestination[]" style="width:380px;" >'; foreach ($courseList as $course) { $course_list_destination[] = $course['code']; if ($course['code'] != $courseCode) { continue; } $courseTitle = str_replace("'", "\\'", $course['title']); $return .= '<option value="' . $course['code'] . '" title="' . @htmlspecialchars($course['title'] . ' (' . $course['visual_code'] . ')', ENT_QUOTES, api_get_system_encoding()) . '">' . $course['title'] . ' (' . $course['visual_code'] . ')</option>'; } $return .= '</select>'; Session::write('course_list_destination', $course_list_destination); // Send response by ajax $xajaxResponse->addAssign('ajax_list_courses_destination', 'innerHTML', api_utf8_encode($return)); } return $xajaxResponse; }
$title = $courseInfo['title']; if (!empty($courseInfo['category_code'])) { $parents = getParentsToString($courseInfo['category_code']); $title = $parents . $courseInfo['title']; } $results[] = array('id' => $courseInfo['id'], 'text' => $title); } echo json_encode($results); } else { echo json_encode(array()); } } break; case 'search_course_by_session': if (api_is_platform_admin()) { $results = SessionManager::get_course_list_by_session_id($_GET['session_id'], $_GET['q']); //$results = SessionManager::get_sessions_list(array('s.name LIKE' => "%".$_REQUEST['q']."%")); $results2 = array(); if (!empty($results)) { foreach ($results as $item) { $item2 = array(); foreach ($item as $id => $internal) { if ($id == 'id') { $item2[$id] = $internal; } if ($id == 'title') { $item2['text'] = $internal; } } $results2[] = $item2; }
$data['termsRejected'] = isset($_REQUEST['r']) ? intval($_REQUEST['r']) : 0; // Init template $tpl = new Template($plugin->get_lang('plugin_title')); $isAllowToDoRequest = $plugin->isAllowedToDoRequest($data['studentUserId'], $data, true); if (!$isAllowToDoRequest) { $tpl->assign('errorMessages', $plugin->getErrorMessages()); } if (!empty($data['sessionId']) && !empty($data['studentUserId']) && api_get_plugin_setting('courselegal', 'tool_enable')) { $lastMessageId = $plugin->getLastMessageId($data['studentUserId'], $data['sessionId']); if ($lastMessageId !== false) { // Render mail $url = $plugin->getRenderMailUrl(array('queueId' => $lastMessageId)); header('Location: ' . $url); exit; } $courses = SessionManager::get_course_list_by_session_id($data['sessionId']); $course = current($courses); $data['courseId'] = $course['id']; $legalEnabled = api_get_plugin_setting('courselegal', 'tool_enable'); if ($legalEnabled) { $courseLegal = CourseLegalPlugin::create(); $termsAndConditions = $courseLegal->getData($data['courseId'], $data['sessionId']); $termsAndConditions = $termsAndConditions['content']; $termFiles = $courseLegal->getCurrentFile($data['courseId'], $data['sessionId']); } else { $termsAndConditions = $plugin->get('terms_and_conditions'); $termFiles = ''; } $data['session'] = api_get_session_info($data['sessionId']); $data['student'] = api_get_user_info($data['studentUserId']); $data['course'] = api_get_course_info_by_id($data['courseId']);
/** * Get the number of stars achieved for an user in a session * @param int $sessionId The session ID * @param int $userId The user ID * * @return int The number of stars */ public static function getSessionStars($sessionId, $userId) { $totalStars = 0; $courses = SessionManager::get_course_list_by_session_id($sessionId); if (empty($courses)) { return 0; } foreach ($courses as $course) { $learnPathListObject = new LearnpathList($userId, $course['code'], $sessionId); $learnPaths = $learnPathListObject->get_flat_list(); if (empty($learnPaths)) { continue; } $stars = 0; foreach ($learnPaths as $learnPathId => $learnPathInfo) { if (empty($learnPathInfo['seriousgame_mode'])) { continue; } $learnPath = new learnpath($course['code'], $learnPathId, $userId); $stars += $learnPath->getCalculateStars($sessionId); } $totalStars += round($stars / count($learnPaths)); } return round($totalStars / count($courses)); }
/** * Gives a list of courses for the given user in the given session * @param integer $user_id * @return array list of statuses (session_id-course_code => status) */ public static function get_courses_list_by_session($user_id, $session_id) { // Database Table Definitions $tbl_session = Database::get_main_table(TABLE_MAIN_SESSION); $tbl_session_course_user = Database::get_main_table(TABLE_MAIN_SESSION_COURSE_USER); $user_id = intval($user_id); $session_id = intval($session_id); //we filter the courses from the URL $join_access_url = $where_access_url = ''; if (api_get_multiple_access_url()) { $access_url_id = api_get_current_access_url_id(); if ($access_url_id != -1) { $tbl_url_session = Database::get_main_table(TABLE_MAIN_ACCESS_URL_REL_SESSION); $join_access_url = " , {$tbl_url_session} url_rel_session "; $where_access_url = " AND access_url_id = {$access_url_id} AND url_rel_session.session_id = {$session_id} "; } } $personal_course_list = array(); $courses = array(); // this query is very similar to the above query, but it will check the session_rel_course_user table if there are courses registered to our user or not $personal_course_list_sql = "SELECT DISTINCT scu.c_id as id\n FROM {$tbl_session_course_user} as scu {$join_access_url}\n WHERE scu.id_user = {$user_id} AND scu.id_session = {$session_id} {$where_access_url}\n ORDER BY c_id"; $course_list_sql_result = Database::query($personal_course_list_sql); if (Database::num_rows($course_list_sql_result) > 0) { while ($result_row = Database::fetch_array($course_list_sql_result)) { $result_row['status'] = 5; if (!in_array($result_row['id'], $courses)) { $personal_course_list[] = $result_row; $courses[] = $result_row['id']; } } } if (api_is_allowed_to_create_course()) { $personal_course_list_sql = "SELECT DISTINCT scu.c_id as id\n FROM {$tbl_session_course_user} as scu, {$tbl_session} as s {$join_access_url}\n WHERE s.id = {$session_id} AND scu.id_session = s.id AND ((scu.id_user={$user_id} AND scu.status=2) OR s.id_coach = {$user_id})\n {$where_access_url}\n ORDER BY c_id"; $course_list_sql_result = Database::query($personal_course_list_sql); if (Database::num_rows($course_list_sql_result) > 0) { while ($result_row = Database::fetch_array($course_list_sql_result)) { $result_row['status'] = 2; if (!in_array($result_row['id'], $courses)) { $personal_course_list[] = $result_row; $courses[] = $result_row['id']; } } } } if (api_is_drh()) { $session_list = SessionManager::get_sessions_followed_by_drh($user_id); $session_list = array_keys($session_list); if (in_array($session_id, $session_list)) { $course_list = SessionManager::get_course_list_by_session_id($session_id); if (!empty($course_list)) { foreach ($course_list as $course) { $personal_course_list[] = $course; } } } } else { //check if user is general coach for this session $s = api_get_session_info($session_id); if ($s['id_coach'] == $user_id) { $course_list = SessionManager::get_course_list_by_session_id($session_id); if (!empty($course_list)) { foreach ($course_list as $course) { if (!in_array($course['id'], $courses)) { $personal_course_list[] = $course; } } } } } return $personal_course_list; }
/** * get courses followed by user * @param int $user_id * @param int $status * @param int $from * @param int $limit * @param string $column * @param string $direction * @param boolean $getCount * @param string $keyword * @param int $sessionId * @param boolean $showAllAssignedCourses * @return array courses */ public static function getCoursesFollowedByUser($user_id, $status = null, $from = null, $limit = null, $column = null, $direction = null, $getCount = false, $keyword = null, $sessionId = null, $showAllAssignedCourses = 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); $sessionId = intval($sessionId); $user_id = intval($user_id); $select = "SELECT DISTINCT *, c.id as real_id "; if ($getCount) { $select = "SELECT COUNT(DISTINCT c.id) as count"; } $whereConditions = null; switch ($status) { case COURSEMANAGER: $whereConditions .= " AND cru.user_id = '{$user_id}'"; if (!$showAllAssignedCourses) { $whereConditions .= " AND status = " . COURSEMANAGER; } else { $whereConditions .= " AND relation_type = " . COURSE_RELATION_TYPE_COURSE_MANAGER; } break; case DRH: $whereConditions .= " AND\n cru.user_id = '{$user_id}' AND\n status = " . DRH . " AND\n relation_type = '" . COURSE_RELATION_TYPE_RRHH . "'\n "; break; } $keywordCondition = null; if (!empty($keyword)) { $keyword = Database::escape_string($keyword); $keywordCondition = " AND (c.code LIKE '%{$keyword}%' OR c.title LIKE '%{$keyword}%' ) "; } $orderBy = null; $extraInnerJoin = null; if (!empty($sessionId)) { if (!empty($sessionId)) { $courseList = SessionManager::get_course_list_by_session_id($sessionId); if (!empty($courseList)) { $courseListToString = implode("','", array_keys($courseList)); $whereConditions .= " AND c.id IN ('" . $courseListToString . "')"; } $tableSessionRelCourse = Database::get_main_table(TABLE_MAIN_SESSION_COURSE); $orderBy = ' ORDER BY position'; $extraInnerJoin = " INNER JOIN {$tableSessionRelCourse} src\n ON (c.id = src.c_id AND session_id = {$sessionId}) "; } } $whereConditions .= $keywordCondition; $sql = "{$select}\n FROM {$tbl_course} c\n INNER JOIN {$tbl_course_rel_user} cru ON (cru.c_id = c.id)\n INNER JOIN {$tbl_course_rel_access_url} a ON (a.c_id = c.id)\n {$extraInnerJoin}\n WHERE\n access_url_id = " . api_get_current_access_url_id() . "\n {$whereConditions}\n {$orderBy}\n "; if (isset($from) && isset($limit)) { $from = intval($from); $limit = intval($limit); $sql .= " LIMIT {$from}, {$limit}"; } $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 $courses; }
static function transaction_36($original_data, $web_service_details) { global $data_list; $data = Migration::soap_call($web_service_details, 'asistenciaDetalles', array('uididpersona' => $original_data['item_id'], 'uididprograma' => $original_data['orig_id'], 'uididfecha' => $original_data['info'], 'intIdSede' => $original_data['branch_id'])); if ($data['error'] == false) { $uidIdPrograma = $original_data['orig_id']; $uidIdPersona = $original_data['item_id']; $attendance_date = $data['date_assist']; $attendance_user_status = $data['status']; // modified in the asistenciaDetalles function $session_id = self::get_session_id_by_programa_id($uidIdPrograma, $data_list); $user_id = self::get_user_id_by_persona_id($uidIdPersona, $data_list); if (empty($user_id)) { return array('message' => "User does not exists in DB: {$uidIdPersona}", 'status_id' => self::TRANSACTION_STATUS_FAILED); } if (empty($session_id)) { return array('message' => "Session does not exists {$uidIdPrograma}", 'status_id' => self::TRANSACTION_STATUS_FAILED); } $course_list = SessionManager::get_course_list_by_session_id($session_id); if (!empty($course_list)) { $course_data = current($course_list); if (isset($course_data['code'])) { //Check if user exist in the session $status = SessionManager::get_user_status_in_course_session($user_id, $course_data['id'], $session_id); if ($status === false) { return array('message' => "User #{$user_id} is not registered in course code: {$course_data['code']} - session_id: {$session_id}", 'status_id' => self::TRANSACTION_STATUS_FAILED); } $time = self::get_horario_value($session_id); $attendance_date .= " {$time}:00"; $attendance = new Attendance(); $course_info = api_get_course_info($course_data['code']); $attendance->set_course_id($course_info['code']); $attendance->set_course_int_id($course_info['real_id']); $attendance->set_session_id($session_id); $attendance_list = $attendance->get_attendances_list($course_info['real_id'], $session_id); if (empty($attendance_list)) { return array('message' => "Attendance not found for course code: {$course_info['code']} - session_id: {$session_id}", 'status_id' => self::TRANSACTION_STATUS_FAILED); //only 1 course per session } else { $attendance_data = current($attendance_list); $attendance_id = $attendance_data['id']; error_log("Attendance found in attendance_id = {$attendance_id} - course code: {$course_info['code']} - session_id: {$session_id} - {$attendance_date}"); } $cal_info = $attendance->get_attendance_calendar_data_by_date($attendance_id, $attendance_date); if ($cal_info && isset($cal_info['id'])) { $cal_id = $cal_info['id']; } else { //Creating the attendance date $attendance->set_date_time($attendance_date); $cal_id = $attendance->attendance_calendar_add($attendance_id, true); error_log("Creating a new calendar item {$cal_id}"); /* return array( 'message' => "Attendance calendar does not exist for date: $attendance_date in attendance_id = $attendance_id - course code: {$course_info['code']} - session_id: $session_id", 'status_id' => self::TRANSACTION_STATUS_FAILED );*/ } $users_present = array($user_id => $attendance_user_status); $attendance_sheet_before = $attendance->attendance_sheet_get_info($cal_id, $user_id); $result = $attendance->attendance_sheet_add($cal_id, $users_present, $attendance_id, false, true); $attendance_sheet_after = $attendance->attendance_sheet_get_info($cal_id, $user_id); if ($result) { return array('entity' => 'attendance_sheet', 'before' => $attendance_sheet_before, 'after' => $attendance_sheet_after, 'message' => "Attendance sheet edited with", 'status_id' => self::TRANSACTION_STATUS_SUCCESSFUL); } else { return array('message' => "Attendance sheet can't be edited attendance_id: {$attendance_id} - cal_id: {$cal_id} - user_id: {$user_id} - course: {$course_info['code']} - session_id: {$session_id} ", 'status_id' => self::TRANSACTION_STATUS_FAILED); } } else { $message = "Course is not set"; } } else { $message = "NO course found for session id: {$session_id}"; } return array('message' => $message, 'status_id' => self::TRANSACTION_STATUS_FAILED); } else { return $data; } }
/** * @param int $start * @param int $end * @param int $sessionId * @param int $userId * @param string $color * * @return array */ public function getSessionEvents($start, $end, $sessionId = 0, $userId = 0, $color = '') { $courses = SessionManager::get_course_list_by_session_id($sessionId); if (!empty($courses)) { foreach ($courses as $course) { //if (api_is_coach($sessionId, $course['real_id'])) { $this->getCourseEvents($start, $end, $course, 0, $sessionId, 0, $color); //} } } }
function search_courses($id_session, $type) { global $tbl_course, $tbl_session_rel_course, $course_list; $xajax_response = new xajaxResponse(); $select_destination = ''; $return = null; if (!empty($type)) { $id_session = intval($id_session); if ($type == 'origin') { $course_list = SessionManager::get_course_list_by_session_id($id_session); $temp_course_list = array(); $return .= '<select id="origin" name="SessionCoursesListOrigin[]" class="form-control" onclick="javascript: checkSelected(this.id,\'copy_option_2\',\'title_option2\',\'destination\');">'; foreach ($course_list as $course) { $temp_course_list[] = "'{$course['code']}'"; $return .= '<option value="' . $course['code'] . '" title="' . @htmlspecialchars($course['title'] . ' (' . $course['visual_code'] . ')', ENT_QUOTES, api_get_system_encoding()) . '">' . $course['title'] . ' (' . $course['visual_code'] . ')</option>'; } $return .= '</select>'; $_SESSION['course_list'] = $temp_course_list; $_SESSION['session_origin'] = $id_session; // Build select for destination sessions where is not included current session from select origin if (!empty($id_session)) { $sessions = SessionManager::get_sessions_list(array(), array('name', 'ASC')); $select_destination .= '<select name="sessions_list_destination" class="form-control" onchange = "javascript: xajax_search_courses(this.value,\'destination\');">'; $select_destination .= '<option value = "0">-- ' . get_lang('SelectASession') . ' --</option>'; foreach ($sessions as $session) { if ($id_session == $session['id']) { continue; } if (!empty($session['category_name'])) { $session['category_name'] = ' (' . $session['category_name'] . ') '; } $select_destination .= '<option value="' . $session['id'] . '">' . $session['name'] . ' ' . $session['category_name'] . '</option>'; } $select_destination .= '</select>'; $xajax_response->addAssign('ajax_sessions_list_destination', 'innerHTML', api_utf8_encode($select_destination)); } else { $select_destination .= '<select name="sessions_list_destination" class="form-control" onchange = "javascript: xajax_search_courses(this.value,\'destination\');">'; $select_destination .= '<option value = "0">' . get_lang('ThereIsNotStillASession') . '</option>'; $select_destination .= '</select>'; $xajax_response->addAssign('ajax_sessions_list_destination', 'innerHTML', api_utf8_encode($select_destination)); } // Select multiple destination empty $select_multiple_empty = '<select id="destination" name="SessionCoursesListDestination[]" class="form-control"></select>'; // Send response by ajax $xajax_response->addAssign('ajax_list_courses_origin', 'innerHTML', api_utf8_encode($return)); $xajax_response->addAssign('ajax_list_courses_destination', 'innerHTML', api_utf8_encode($select_multiple_empty)); } else { //Left Select - Destination $list_courses_origin = implode(',', $_SESSION['course_list']); $session_origin = $_SESSION['session_origin']; // Search courses by id_session where course codes is include en courses list destination $sql = "SELECT c.code, c.visual_code, c.title, src.session_id\n FROM {$tbl_course} c, {$tbl_session_rel_course} src\n WHERE src.c_id = c.id\n AND src.session_id = '" . intval($id_session) . "'"; //AND c.code IN ($list_courses_origin)"; $rs = Database::query($sql); $course_list_destination = array(); $return .= '<select id="destination" name="SessionCoursesListDestination[]" class="form-control">'; while ($course = Database::fetch_array($rs)) { $course_list_destination[] = $course['code']; $return .= '<option value="' . $course['code'] . '" title="' . @htmlspecialchars($course['title'] . ' (' . $course['visual_code'] . ')', ENT_QUOTES, api_get_system_encoding()) . '">' . $course['title'] . ' (' . $course['visual_code'] . ')</option>'; } $return .= '</select>'; $_SESSION['course_list_destination'] = $course_list_destination; // Send response by ajax $xajax_response->addAssign('ajax_list_courses_destination', 'innerHTML', api_utf8_encode($return)); } } return $xajax_response; }
/** * Gives a list of courses for the given user in the given session * @param integer $user_id * @param integer $session_id * @return array list of statuses (session_id-course_code => status) */ public static function get_courses_list_by_session($user_id, $session_id) { // Database Table Definitions $tbl_session = Database::get_main_table(TABLE_MAIN_SESSION); $tableCourse = Database::get_main_table(TABLE_MAIN_COURSE); $tbl_session_course_user = Database::get_main_table(TABLE_MAIN_SESSION_COURSE_USER); $tbl_session_course = Database::get_main_table(TABLE_MAIN_SESSION_COURSE); $user_id = intval($user_id); $session_id = intval($session_id); //we filter the courses from the URL $join_access_url = $where_access_url = ''; if (api_get_multiple_access_url()) { $urlId = api_get_current_access_url_id(); if ($urlId != -1) { $tbl_url_session = Database::get_main_table(TABLE_MAIN_ACCESS_URL_REL_SESSION); $join_access_url = " , {$tbl_url_session} url_rel_session "; $where_access_url = " AND access_url_id = {$urlId} AND url_rel_session.session_id = {$session_id} "; } } $personal_course_list = array(); $courses = array(); /* This query is very similar to the query below, but it will check the session_rel_course_user table if there are courses registered to our user or not */ $sql = "SELECT DISTINCT\n c.visibility,\n c.id as real_id\n FROM {$tbl_session_course_user} as scu\n INNER JOIN {$tbl_session_course} sc\n ON (scu.session_id = sc.session_id AND scu.c_id = sc.c_id)\n INNER JOIN {$tableCourse} as c\n ON (scu.c_id = c.id)\n {$join_access_url}\n WHERE\n scu.user_id = {$user_id} AND\n scu.session_id = {$session_id}\n {$where_access_url}\n ORDER BY sc.position ASC"; $result = Database::query($sql); if (Database::num_rows($result) > 0) { while ($result_row = Database::fetch_array($result, 'ASSOC')) { $result_row['status'] = 5; if (!in_array($result_row['real_id'], $courses)) { $personal_course_list[] = $result_row; $courses[] = $result_row['real_id']; } } } if (api_is_allowed_to_create_course()) { $sql = "SELECT DISTINCT\n c.visibility, c.id as real_id\n FROM {$tbl_session_course_user} as scu\n INNER JOIN {$tbl_session} as s\n ON (scu.session_id = s.id)\n INNER JOIN {$tbl_session_course} sc\n ON (scu.session_id = sc.session_id AND scu.c_id = sc.c_id)\n INNER JOIN {$tableCourse} as c\n ON (scu.c_id = c.id)\n {$join_access_url}\n WHERE\n s.id = {$session_id} AND\n (\n (scu.user_id={$user_id} AND scu.status=2) OR\n s.id_coach = {$user_id}\n )\n {$where_access_url}\n ORDER BY sc.position ASC"; $result = Database::query($sql); if (Database::num_rows($result) > 0) { while ($result_row = Database::fetch_array($result, 'ASSOC')) { $result_row['status'] = 2; if (!in_array($result_row['real_id'], $courses)) { $personal_course_list[] = $result_row; $courses[] = $result_row['real_id']; } } } } if (api_is_drh()) { $session_list = SessionManager::get_sessions_followed_by_drh($user_id); $session_list = array_keys($session_list); if (in_array($session_id, $session_list)) { $course_list = SessionManager::get_course_list_by_session_id($session_id); if (!empty($course_list)) { foreach ($course_list as $course) { $personal_course_list[] = $course; } } } } else { //check if user is general coach for this session $s = api_get_session_info($session_id); if ($s['id_coach'] == $user_id) { $course_list = SessionManager::get_course_list_by_session_id($session_id); if (!empty($course_list)) { foreach ($course_list as $course) { if (!in_array($course['id'], $courses)) { $personal_course_list[] = $course; } } } } } return $personal_course_list; }
} $registrationAllowed = api_get_setting('session.catalog_allow_session_auto_subscription'); if ($registrationAllowed === 'true') { $entityManager = Database::getManager(); $repository = $entityManager->getRepository('ChamiloCoreBundle:SequenceResource'); $sequences = $repository->getRequirements($sessionId, SequenceResource::SESSION_TYPE); if (count($sequences) > 0) { $requirementsData = SequenceResourceManager::checkRequirementsForUser($sequences, SequenceResource::SESSION_TYPE, $userId); $continueWithSubscription = SequenceResourceManager::checkSequenceAreCompleted($requirementsData); if (!$continueWithSubscription) { header('Location: ' . api_get_path(WEB_CODE_PATH) . 'auth/courses.php'); exit; } } SessionManager::suscribe_users_to_session($_GET['session_id'], array($userId), SESSION_VISIBLE_READ_ONLY, false); $coursesList = SessionManager::get_course_list_by_session_id($_GET['session_id']); $count = count($coursesList); $url = ''; if ($count <= 0) { // no course in session -> return to catalog $url = api_get_path(WEB_CODE_PATH) . 'auth/courses.php'; } elseif ($count == 1) { // only one course, so redirect directly to this course foreach ($coursesList as $course) { $url = api_get_path(WEB_COURSE_PATH) . $course['directory'] . '/index.php?id_session=' . intval($_GET['session_id']); } } else { $url = api_get_path(WEB_CODE_PATH) . 'session/index.php?session_id=' . intval($_GET['session_id']); } header('Location: ' . $url); exit;
/** * Get the progress of a exercise * @param int $sessionId The session ID (session.id) * @param int $courseId The course ID (course.id) * @param int $exerciseId The quiz ID (c_quiz.id) * @param int $answer The answer status (0 = incorrect, 1 = correct, 2 = both) * @param array $options An array of options you can pass to the query (limit, where and order) * @return array An array with the data of exercise(s) progress */ public static function get_exercise_progress($sessionId = 0, $courseId = 0, $exerciseId = 0, $date_from = null, $date_to = null, $options = array()) { $sessionId = intval($sessionId); $courseId = intval($courseId); $exerciseId = intval($exerciseId); $date_from = Database::escape_string($date_from); $date_to = Database::escape_string($date_to); /* * This method gets the data by blocks, as previous attempts at one single * query made it take ages. The logic of query division is described below */ // Get tables names $tuser = Database::get_main_table(TABLE_MAIN_USER); $tquiz = Database::get_course_table(TABLE_QUIZ_TEST); $tquiz_answer = Database::get_course_table(TABLE_QUIZ_ANSWER); $tquiz_question = Database::get_course_table(TABLE_QUIZ_QUESTION); $tquiz_rel_question = Database::get_course_table(TABLE_QUIZ_TEST_QUESTION); $ttrack_exercises = Database::get_main_table(TABLE_STATISTIC_TRACK_E_EXERCISES); $ttrack_attempt = Database::get_main_table(TABLE_STATISTIC_TRACK_E_ATTEMPT); $sessions = array(); $courses = array(); // if session ID is defined but course ID is empty, get all the courses // from that session if (!empty($sessionId) && empty($courseId)) { // $courses is an array of course int id as index and course details hash as value $courses = SessionManager::get_course_list_by_session_id($sessionId); $sessions[$sessionId] = api_get_session_info($sessionId); } elseif (empty($sessionId) && !empty($courseId)) { // if, to the contrary, course is defined but not sessions, get the sessions that include this course // $sessions is an array like: [0] => ('id' => 3, 'name' => 'Session 35'), [1] => () etc; $course = api_get_course_info_by_id($courseId); $sessionsTemp = SessionManager::get_session_by_course($courseId); $courses[$courseId] = $course; foreach ($sessionsTemp as $sessionItem) { $sessions[$sessionItem['id']] = $sessionItem; } } elseif (!empty($courseId) && !empty($sessionId)) { //none is empty $course = api_get_course_info_by_id($courseId); $courses[$courseId] = array($course['code']); $courses[$courseId]['code'] = $course['code']; $sessions[$sessionId] = api_get_session_info($sessionId); } else { //both are empty, not enough data, return an empty array return array(); } // Now we have two arrays of courses and sessions with enough data to proceed // If no course could be found, we shouldn't return anything. // Sessions can be empty (then we only return the pure-course-context results) if (count($courses) < 1) { return array(); } $data = array(); // The following loop is less expensive than what it seems: // - if a course was defined, then we only loop through sessions // - if a session was defined, then we only loop through courses // - if a session and a course were defined, then we only loop once foreach ($courses as $courseIdx => $courseData) { $where = ''; $whereParams = array(); $whereSessionParams = ''; if (count($sessions > 0)) { foreach ($sessions as $sessionIdx => $sessionData) { if (!empty($sessionIdx)) { $whereSessionParams .= $sessionIdx . ','; } } $whereSessionParams = substr($whereSessionParams, 0, -1); } if (!empty($exerciseId)) { $exerciseId = intval($exerciseId); $where .= ' AND q.id = %d '; $whereParams[] = $exerciseId; } /* * This feature has been disabled for now, to avoid having to * join two very large tables //2 = show all questions (wrong and correct answered) if ($answer != 2) { $answer = intval($answer); //$where .= ' AND qa.correct = %d'; //$whereParams[] = $answer; } */ $limit = ''; if (!empty($options['limit'])) { $limit = " LIMIT " . $options['limit']; } if (!empty($options['where'])) { $where .= ' AND ' . Database::escape_string($options['where']); } $order = ''; if (!empty($options['order'])) { $order = " ORDER BY " . $options['order']; } if (!empty($date_to) && !empty($date_from)) { $where .= sprintf(" AND (te.start_date BETWEEN '%s 00:00:00' AND '%s 23:59:59')", $date_from, $date_to); } $sql = "SELECT\n te.session_id,\n ta.id as attempt_id,\n te.exe_user_id as user_id,\n te.exe_id as exercise_attempt_id,\n ta.question_id,\n ta.answer as answer_id,\n ta.tms as time,\n te.exe_exo_id as quiz_id,\n CONCAT ('c', q.c_id, '_e', q.id) as exercise_id,\n q.title as quiz_title,\n qq.description as description\n FROM {$ttrack_exercises} te\n INNER JOIN {$ttrack_attempt} ta ON ta.exe_id = te.exe_id\n INNER JOIN {$tquiz} q ON q.id = te.exe_exo_id\n INNER JOIN {$tquiz_rel_question} rq ON rq.exercice_id = q.id AND rq.c_id = q.c_id\n INNER JOIN {$tquiz_question} qq\n ON\n qq.id = rq.question_id AND\n qq.c_id = rq.c_id AND\n qq.position = rq.question_order AND\n ta.question_id = rq.question_id\n WHERE\n te.c_id = {$courseIdx} " . (empty($whereSessionParams) ? '' : "AND te.session_id IN ({$whereSessionParams})") . "\n AND q.c_id = {$courseIdx}\n {$where} {$order} {$limit}"; $sql_query = vsprintf($sql, $whereParams); // Now browse through the results and get the data $rs = Database::query($sql_query); $userIds = array(); $questionIds = array(); $answerIds = array(); while ($row = Database::fetch_array($rs)) { //only show if exercise is visible if (api_get_item_visibility($courseData, 'quiz', $row['exercise_id'])) { $userIds[$row['user_id']] = $row['user_id']; $questionIds[$row['question_id']] = $row['question_id']; $answerIds[$row['question_id']][$row['answer_id']] = $row['answer_id']; $row['session'] = $sessions[$row['session_id']]; $data[] = $row; } } // Now fill questions data. Query all questions and answers for this test to avoid $sqlQuestions = "SELECT tq.c_id, tq.id as question_id, tq.question, tqa.id_auto,\n tqa.answer, tqa.correct, tq.position, tqa.id_auto as answer_id\n FROM {$tquiz_question} tq, {$tquiz_answer} tqa\n WHERE\n tqa.question_id = tq.id AND\n tqa.c_id = tq.c_id AND\n tq.c_id = {$courseIdx} AND\n tq.id IN (" . implode(',', $questionIds) . ")"; $resQuestions = Database::query($sqlQuestions); $answer = array(); $question = array(); while ($rowQuestion = Database::fetch_assoc($resQuestions)) { $questionId = $rowQuestion['question_id']; $answerId = $rowQuestion['answer_id']; $answer[$questionId][$answerId] = array('position' => $rowQuestion['position'], 'question' => $rowQuestion['question'], 'answer' => $rowQuestion['answer'], 'correct' => $rowQuestion['correct']); $question[$questionId]['question'] = $rowQuestion['question']; } // Now fill users data $sqlUsers = "SELECT user_id, username, lastname, firstname\n FROM {$tuser}\n WHERE user_id IN (" . implode(',', $userIds) . ")"; $resUsers = Database::query($sqlUsers); while ($rowUser = Database::fetch_assoc($resUsers)) { $users[$rowUser['user_id']] = $rowUser; } foreach ($data as $id => $row) { $rowQuestId = $row['question_id']; $rowAnsId = $row['answer_id']; $data[$id]['session'] = $sessions[$row['session_id']]['name']; $data[$id]['firstname'] = $users[$row['user_id']]['firstname']; $data[$id]['lastname'] = $users[$row['user_id']]['lastname']; $data[$id]['username'] = $users[$row['user_id']]['username']; $data[$id]['answer'] = $answer[$rowQuestId][$rowAnsId]['answer']; $data[$id]['correct'] = $answer[$rowQuestId][$rowAnsId]['correct'] == 0 ? get_lang('No') : get_lang('Yes'); $data[$id]['question'] = $question[$rowQuestId]['question']; $data[$id]['question_id'] = $rowQuestId; $data[$id]['description'] = $row['description']; } /* The minimum expected array structure at the end is: attempt_id, session name, exercise_id, quiz_title, username, lastname, firstname, time, question_id, question, answer, */ } return $data; }
/** * @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; }
$combinations = $_SESSION['combination']; $combination_result = $combinations[$_REQUEST['unique_id']]; if (empty($combination_result)) { echo get_lang('ThereWasAnError'); } else { $origin_course_code = $combination_result['course_code']; $origin_session_id = intval($combination_result['session_id']); $new_session_id = intval($_REQUEST['session_id']); //if (!isset($_REQUEST['view_stat'])) { if ($origin_session_id == $new_session_id) { echo get_lang('CantMoveToTheSameSession'); exit; } //} $user_id = intval($_REQUEST['user_id']); $new_course_list = SessionManager::get_course_list_by_session_id($new_session_id); $course_founded = false; foreach ($new_course_list as $course_item) { if ($origin_course_code == $course_item['code']) { $course_founded = true; } } $result_message = array(); $result_message_compare = array(); $update_database = true; if (isset($_REQUEST['view_stat']) && $_REQUEST['view_stat'] == 1) { $update_database = false; } //Check if the same course exist in the session destination if ($course_founded) { //Check if the user is registered in the session otherwise we will add it
/** * Get the achieved certificates for a user in course sessions * @param int $userId The user id * @param type $includeNonPublicCertificates Whether include the non-plublic certificates * @return array */ public static function getUserCertificatesInSessions($userId, $includeNonPublicCertificates = true) { $userId = intval($userId); $sessionList = []; $sessions = SessionManager::get_sessions_by_user($userId); foreach ($sessions as $session) { if (empty($session['courses'])) { continue; } $sessionCourses = SessionManager::get_course_list_by_session_id($session['session_id']); foreach ($sessionCourses as $course) { if (!$includeNonPublicCertificates) { $allowPublicCertificates = api_get_course_setting('allow_public_certificates', $course['code']); if (empty($allowPublicCertificates)) { continue; } } $courseGradebookCategory = Category::load(null, null, $course['code'], null, null, $session['session_id']); if (empty($courseGradebookCategory)) { continue; } $courseGradebookId = $courseGradebookCategory[0]->get_id(); $certificateInfo = GradebookUtils::get_certificate_by_user_id($courseGradebookId, $userId); if (empty($certificateInfo)) { continue; } $sessionList[] = ['session' => $session['session_name'], 'course' => $course['title'], 'score' => $certificateInfo['score_certificate'], 'date' => api_format_date($certificateInfo['created_at'], DATE_FORMAT_SHORT), 'link' => api_get_path(WEB_PATH) . "certificates/index.php?id={$certificateInfo['id']}"]; } } return $sessionList; }
$promotion = new Promotion(); // Getting all promotions $promotions = $promotion->get_all_promotions_by_career_id($career_item['id'], 'name DESC'); $career_content = ''; $promotion_array = array(); if (!empty($promotions)) { foreach ($promotions as $promotion_item) { if (!$promotion_item['status']) { continue; //avoid status = 0 } // Getting all sessions from this promotion $sessions = SessionManager::get_all_sessions_by_promotion($promotion_item['id']); $session_list = array(); foreach ($sessions as $session_item) { $course_list = SessionManager::get_course_list_by_session_id($session_item['id']); $session_list[] = array('data' => $session_item, 'courses' => $course_list); } $promotion_array[$promotion_item['id']] = array('name' => $promotion_item['name'], 'sessions' => $session_list); } } $career_array[$career_item['id']] = array('name' => $career_item['name'], 'promotions' => $promotion_array); } } echo '<table class="data_table">'; if (!empty($career_arrayer)) { foreach ($career_array as $career_id => $data) { $career = $data['name']; $promotions = $data['promotions']; $career = Display::url($career, 'careers.php?action=edit&id=' . $career_id); $career = Display::tag('h4', $career);
/** * Gives a list of courses for the given user in the given session * @param integer $user_id * @param integer $session_id * @return array list of statuses (session_id-course_code => status) */ public static function get_courses_list_by_session($user_id, $session_id) { // Database Table Definitions $tbl_session = Database :: get_main_table(TABLE_MAIN_SESSION); $tableCourse = Database :: get_main_table(TABLE_MAIN_COURSE); $tbl_session_course_user = Database :: get_main_table(TABLE_MAIN_SESSION_COURSE_USER); $tbl_session_course = Database :: get_main_table(TABLE_MAIN_SESSION_COURSE); $user_id = intval($user_id); $session_id = intval($session_id); //we filter the courses from the URL $join_access_url = $where_access_url = ''; if (api_get_multiple_access_url()) { $access_url_id = api_get_current_access_url_id(); if ($access_url_id != -1) { $tbl_url_session = Database :: get_main_table(TABLE_MAIN_ACCESS_URL_REL_SESSION); $join_access_url = " , $tbl_url_session url_rel_session "; $where_access_url = " AND access_url_id = $access_url_id AND url_rel_session.session_id = $session_id "; } } $personal_course_list = array(); $courses = array(); /* This query is very similar to the above query,but it will check the session_rel_course_user table if there are courses registered to our user or not*/ $sql = "SELECT DISTINCT scu.course_code as code, c.visibility, c.id as real_id FROM $tbl_session_course_user as scu INNER JOIN $tbl_session_course sc ON (scu.id_session = sc.id_session AND scu.course_code = sc.course_code) INNER JOIN $tableCourse as c ON (scu.course_code = c.code) $join_access_url WHERE scu.id_user = $user_id AND scu.id_session = $session_id $where_access_url"; $orderBy = " ORDER BY code "; if (SessionManager::orderCourseIsEnabled()) { $orderBy = ' ORDER BY position'; } $sql .= $orderBy; $result = Database::query($sql); if (Database::num_rows($result) > 0) { while ($result_row = Database::fetch_array($result)) { $result_row['status'] = 5; if (!in_array($result_row['code'], $courses)) { $personal_course_list[] = $result_row; $courses[] = $result_row['code']; } } } if (api_is_allowed_to_create_course()) { $sql = "SELECT DISTINCT scu.course_code as code, c.visibility, c.id as real_id FROM $tbl_session_course_user as scu INNER JOIN $tbl_session as s ON (scu.id_session = s.id) INNER JOIN $tbl_session_course sc ON (scu.id_session = sc.id_session AND scu.course_code = sc.course_code) INNER JOIN $tableCourse as c ON (scu.course_code = c.code) $join_access_url WHERE s.id = $session_id AND ( (scu.id_user=$user_id AND scu.status=2) OR s.id_coach = $user_id ) $where_access_url $orderBy"; $result = Database::query($sql); if (Database::num_rows($result) > 0) { while ($result_row = Database::fetch_array($result)) { $result_row['status'] = 2; if (!in_array($result_row['code'], $courses)) { $personal_course_list[] = $result_row; $courses[] = $result_row['code']; } } } } if (api_is_drh()) { $session_list = SessionManager::get_sessions_followed_by_drh($user_id); $session_list = array_keys($session_list); if (in_array($session_id, $session_list)) { $course_list = SessionManager::get_course_list_by_session_id($session_id); if (!empty($course_list)) { foreach ($course_list as $course) { $personal_course_list[] = $course; } } } } else { //check if user is general coach for this session $s = api_get_session_info($session_id); if ($s['id_coach'] == $user_id) { $course_list = SessionManager::get_course_list_by_session_id($session_id); if (!empty($course_list)) { foreach ($course_list as $course) { if (!in_array($course['code'], $courses)) { $personal_course_list[] = $course; } } } } } return $personal_course_list; }