/** * @param array $course_info * @param bool $lp_id * @param string $target * @param int $session_id * @param bool $add_move_button * @param string $filter_by_folder * @param string $overwrite_url * @param bool $showInvisibleFiles * @param bool $showOnlyFolders * @param int $folderId * @return string */ public static function get_document_preview($course_info, $lp_id = false, $target = '', $session_id = 0, $add_move_button = false, $filter_by_folder = null, $overwrite_url = null, $showInvisibleFiles = false, $showOnlyFolders = false, $folderId = false) { if (empty($course_info['real_id']) || empty($course_info['code']) || !is_array($course_info)) { return ''; } $overwrite_url = Security::remove_XSS($overwrite_url); $user_id = api_get_user_id(); $user_in_course = false; if (api_is_platform_admin()) { $user_in_course = true; } if (!$user_in_course) { if (CourseManager::is_course_teacher($user_id, $course_info['code'])) { $user_in_course = true; } } // Condition for the session $session_id = intval($session_id); if (!$user_in_course) { if (empty($session_id)) { if (CourseManager::is_user_subscribed_in_course($user_id, $course_info['code'])) { $user_in_course = true; } // Check if course is open then we can consider that the student is registered to the course if (isset($course_info) && in_array($course_info['visibility'], array(2, 3))) { $user_in_course = true; } } else { $user_status = SessionManager::get_user_status_in_course_session($user_id, $course_info['real_id'], $session_id); //is true if is an student, course session teacher or coach if (in_array($user_status, array('0', '2', '6'))) { $user_in_course = true; } } } $tbl_doc = Database::get_course_table(TABLE_DOCUMENT); $tbl_item_prop = Database::get_course_table(TABLE_ITEM_PROPERTY); $condition_session = " AND (last.session_id = '{$session_id}' OR last.session_id = '0' OR last.session_id IS NULL)"; $add_folder_filter = null; if (!empty($filter_by_folder)) { $add_folder_filter = " AND docs.path LIKE '" . Database::escape_string($filter_by_folder) . "%'"; } // If we are in LP display hidden folder https://support.chamilo.org/issues/6679 $lp_visibility_condition = null; if ($lp_id) { // $lp_visibility_condition = " OR filetype='folder'"; if ($showInvisibleFiles) { $lp_visibility_condition .= ' OR last.visibility = 0'; } } $showOnlyFoldersCondition = null; if ($showOnlyFolders) { //$showOnlyFoldersCondition = " AND docs.filetype = 'folder' "; } $folderCondition = " AND docs.path LIKE '/%' "; if (!api_is_allowed_to_edit()) { $protectedFolders = self::getProtectedFolderFromStudent(); foreach ($protectedFolders as $folder) { $folderCondition .= " AND docs.path NOT LIKE '{$folder}' "; } } $parentData = []; if ($folderId !== false) { $parentData = self::get_document_data_by_id($folderId, $course_info['code']); if (!empty($parentData)) { $cleanedPath = $parentData['path']; $num = substr_count($cleanedPath, '/'); $notLikeCondition = null; for ($i = 1; $i <= $num; $i++) { $repeat = str_repeat('/%', $i + 1); $notLikeCondition .= " AND docs.path NOT LIKE '" . Database::escape_string($cleanedPath . $repeat) . "' "; } $folderCondition = " AND\n docs.id <> {$folderId} AND\n docs.path LIKE '" . $cleanedPath . "/%'\n {$notLikeCondition}\n "; } else { $folderCondition = " AND\n docs.filetype = 'file' "; } } $levelCondition = null; if ($folderId === false) { $levelCondition = " AND docs.path NOT LIKE'/%/%'"; } $sql = "SELECT last.visibility, docs.*\n FROM {$tbl_item_prop} AS last INNER JOIN {$tbl_doc} AS docs\n ON (docs.id = last.ref AND docs.c_id = last.c_id)\n WHERE\n docs.path NOT LIKE '%_DELETED_%' AND\n last.tool = '" . TOOL_DOCUMENT . "' {$condition_session} AND\n (last.visibility = '1' {$lp_visibility_condition}) AND\n last.visibility <> 2 AND\n docs.c_id = {$course_info['real_id']} AND\n last.c_id = {$course_info['real_id']}\n {$showOnlyFoldersCondition}\n {$folderCondition}\n {$levelCondition}\n {$add_folder_filter}\n ORDER BY docs.filetype DESC, docs.title ASC"; $res_doc = Database::query($sql); $resources = Database::store_result($res_doc, 'ASSOC'); $return = ''; if ($lp_id) { $learnPath = learnpath::getCurrentLpFromSession(); if ($folderId === false) { $return .= '<div class="lp_resource_element">'; $return .= Display::return_icon('new_doc.gif', '', array(), ICON_SIZE_SMALL); $return .= Display::url(get_lang('NewDocument'), api_get_self() . '?' . api_get_cidreq() . '&action=add_item&type=' . TOOL_DOCUMENT . '&lp_id=' . $learnPath->lp_id); $return .= '</div>'; } } else { $return .= Display::div(Display::url(Display::return_icon('close.png', get_lang('Close'), array(), ICON_SIZE_SMALL), ' javascript:void(0);', array('id' => 'close_div_' . $course_info['real_id'] . '_' . $session_id, 'class' => 'close_div')), array('style' => 'position:absolute;right:10px')); } // If you want to debug it, I advise you to do "echo" on the eval statements. $newResources = array(); if (!empty($resources) && $user_in_course) { foreach ($resources as $resource) { $is_visible = self::is_visible_by_id($resource['id'], $course_info, $session_id, api_get_user_id()); if (!$is_visible) { continue; } $newResources[] = $resource; } } $label = get_lang('Documents'); $documents = []; if ($folderId === false) { $documents[$label] = array('id' => 0, 'files' => $newResources); } else { if (!empty($parentData)) { $documents[$parentData['title']] = array('id' => intval($folderId), 'files' => $newResources); } } $write_result = self::write_resources_tree($course_info, $session_id, $documents, $lp_id, $target, $add_move_button, $overwrite_url, $folderId); $return .= $write_result; $img_path = api_get_path(WEB_IMG_PATH); if ($lp_id == false) { $url = api_get_path(WEB_AJAX_PATH) . 'lp.ajax.php?a=get_documents&url=' . $overwrite_url . '&lp_id=' . $lp_id . '&cidReq=' . $course_info['code']; $return .= "<script>\n \$('.doc_folder').click(function() {\n var realId = this.id;\n var my_id = this.id.split('_')[2];\n var tempId = 'temp_'+my_id;\n \$('#res_'+my_id).show();\n\n var tempDiv = \$('#'+realId).find('#'+tempId);\n if (tempDiv.length == 0) {\n \$.ajax({\n async: false,\n type: 'GET',\n url: '" . $url . "',\n data: 'folder_id='+my_id,\n success: function(data) {\n \$('#'+realId).append('<div id='+tempId+'>'+data+'</div>');\n }\n });\n }\n });\n\n \$('.close_div').click(function() {\n var course_id = this.id.split('_')[2];\n var session_id = this.id.split('_')[3];\n \$('#document_result_'+course_id+'_'+session_id).hide();\n \$('.lp_resource').remove();\n \$('.document_preview_container').html('');\n });\n\n </script>"; } else { //For LPs $url = api_get_path(WEB_AJAX_PATH) . 'lp.ajax.php?a=get_documents&lp_id=' . $lp_id . '&' . api_get_cidreq(); $return .= "<script>\n\n function testResources(id, img) {\n var numericId = id.split('_')[1];\n var parentId = 'doc_id_'+numericId;\n var tempId = 'temp_'+numericId;\n var image = \$('#'+img);\n\n if (image.hasClass('open')) {\n image.removeClass('open');\n image.attr('src', '" . $img_path . "nolines_plus.gif');\n \$('#'+id).show();\n \$('#'+tempId).hide();\n } else {\n image.addClass('open');\n image.attr('src', '" . $img_path . "nolines_minus.gif');\n \$('#'+id).hide();\n \$('#'+tempId).show();\n\n var tempDiv = \$('#'+parentId).find('#'+tempId);\n if (tempDiv.length == 0) {\n \$.ajax({\n type: 'GET',\n async: false,\n url: '" . $url . "',\n data: 'folder_id='+numericId,\n success: function(data) {\n tempDiv = \$('#doc_id_'+numericId).append('<div id='+tempId+'>'+data+'</div>');\n }\n });\n }\n }\n }\n </script>"; } if (!$user_in_course) { $return = ''; } return $return; }
/** * Get registered users inside current course * @param int $attendance_id attendance id for showing attendance result field (optional) * @param int $groupId * @return array users data */ public function get_users_rel_course($attendance_id = 0, $groupId = null) { $current_session_id = api_get_session_id(); $current_course_id = api_get_course_id(); $currentCourseIntId = api_get_course_int_id(); $studentInGroup = array(); if (!empty($current_session_id)) { $a_course_users = CourseManager::get_user_list_from_course_code($current_course_id, $current_session_id, '', 'lastname'); } else { $a_course_users = CourseManager::get_user_list_from_course_code($current_course_id, 0, '', 'lastname'); if (!empty($groupId)) { $students = GroupManager::getStudents($groupId); if (!empty($students)) { foreach ($students as $student) { $studentInGroup[$student['user_id']] = true; } } } } // get registered users inside current course $a_users = array(); foreach ($a_course_users as $key => $user_data) { $value = array(); $uid = $user_data['user_id']; $userInfo = api_get_user_info($uid); $status = $user_data['status']; if (!empty($groupId)) { if (!isset($studentInGroup[$uid])) { continue; } } $user_status_in_session = null; $user_status_in_course = null; if (api_get_session_id()) { $user_status_in_session = SessionManager::get_user_status_in_course_session($uid, $currentCourseIntId, $current_session_id); } else { $user_status_in_course = CourseManager::get_user_in_course_status($uid, $current_course_id); } // Not taking into account DRH or COURSEMANAGER if ($uid <= 1 || $status == DRH || $user_status_in_course == COURSEMANAGER || $user_status_in_session == 2) { continue; } if (!empty($attendance_id)) { $user_faults = $this->get_faults_of_user($uid, $attendance_id, $groupId); $value['attendance_result'] = $user_faults['faults'] . '/' . $user_faults['total'] . ' (' . $user_faults['faults_porcent'] . '%)'; $value['result_color_bar'] = $user_faults['color_bar']; } $photo = Display::img($userInfo['avatar_small'], $userInfo['complete_name'], [], false); $value['photo'] = $photo; $value['firstname'] = $user_data['firstname']; $value['lastname'] = $user_data['lastname']; $value['username'] = $user_data['username']; $value['user_id'] = $uid; //Sending only 5 items in the array instead of 60 $a_users[$key] = $value; } return $a_users; }
/** * @param int $user_id * @param int $courseId * @param int $session_id * @return array */ function api_detect_user_roles($user_id, $courseId, $session_id = 0) { $user_roles = array(); /*$user_info = api_get_user_info($user_id); $user_roles[] = $user_info['status'];*/ $courseInfo = api_get_course_info_by_id($courseId); $course_code = $courseInfo['code']; $url_id = api_get_current_access_url_id(); if (api_is_platform_admin_by_id($user_id, $url_id)) { $user_roles[] = PLATFORM_ADMIN; } /*if (api_is_drh()) { $user_roles[] = DRH; }*/ if (!empty($session_id)) { if (SessionManager::user_is_general_coach($user_id, $session_id)) { $user_roles[] = SESSION_GENERAL_COACH; } } if (!empty($course_code)) { if (empty($session_id)) { if (CourseManager::is_course_teacher($user_id, $course_code)) { $user_roles[] = COURSEMANAGER; } if (CourseManager::get_tutor_in_course_status($user_id, $course_code)) { $user_roles[] = COURSE_TUTOR; } if (CourseManager::is_user_subscribed_in_course($user_id, $course_code)) { $user_roles[] = COURSE_STUDENT; } } else { $user_status_in_session = SessionManager::get_user_status_in_course_session($user_id, $courseId, $session_id); if (!empty($user_status_in_session)) { if ($user_status_in_session == 0) { $user_roles[] = SESSION_STUDENT; } if ($user_status_in_session == 2) { $user_roles[] = SESSION_COURSE_COACH; } } /*if (api_is_course_session_coach($user_id, $course_code, $session_id)) { $user_roles[] = SESSION_COURSE_COACH; }*/ } } return $user_roles; }
static function get_document_preview($course_info, $lp_id = false, $target = '', $session_id = 0, $add_move_button = false, $filter_by_folder = null, $overwrite_url = null) { if (empty($course_info['real_id']) || empty($course_info['code']) || !is_array($course_info)) { return ''; } $user_id = api_get_user_id(); $user_in_course = false; if (api_is_platform_admin()) { $user_in_course = true; } if (!$user_in_course) { if (CourseManager::is_course_teacher($user_id, $course_info['real_id'])) { $user_in_course = true; } } //condition for the session $session_id = intval($session_id); if (!$user_in_course) { if (empty($session_id)) { if (CourseManager::is_user_subscribed_in_course($user_id, $course_info['real_id'])) { $user_in_course = true; } //Check if course is open then we can consider that the student is regitered to the course if (isset($course_info) && in_array($course_info['visibility'], array(2, 3))) { $user_in_course = true; } } else { $user_status = SessionManager::get_user_status_in_course_session($user_id, $course_info['real_id'], $session_id); //is true if is an student, course session teacher or coach if (in_array($user_status, array('0', '2', '6'))) { $user_in_course = true; } } } $tbl_doc = Database::get_course_table(TABLE_DOCUMENT); $tbl_item_prop = Database::get_course_table(TABLE_ITEM_PROPERTY); $path = '/'; $path = Database::escape_string(str_replace('_', '\\_', $path)); $added_slash = $path == '/' ? '' : '/'; //$condition_session = " AND (id_session = '$session_id' OR (id_session = '0' AND insert_date <= (SELECT creation_date FROM $tbl_course WHERE code = '".$course_info['code']."' )))"; $condition_session = " AND (id_session = '{$session_id}' OR id_session = '0' )"; $add_folder_filter = null; if (!empty($filter_by_folder)) { $add_folder_filter = " AND docs.path LIKE '" . Database::escape_string($filter_by_folder) . "%'"; } $sql_doc = "SELECT last.visibility, docs.*\n\t\t\t\t\tFROM {$tbl_item_prop} AS last, {$tbl_doc} AS docs\n \t WHERE docs.id = last.ref AND\n docs.path LIKE '" . $path . $added_slash . "%' AND\n docs.path NOT LIKE '%_DELETED_%' AND\n last.tool = '" . TOOL_DOCUMENT . "' {$condition_session} AND\n last.visibility = '1' AND\n docs.c_id = {$course_info['real_id']} AND\n last.c_id = {$course_info['real_id']}\n {$add_folder_filter}\n ORDER BY docs.title ASC"; $res_doc = Database::query($sql_doc); $resources = Database::store_result($res_doc, 'ASSOC'); $resources_sorted = array(); $return = ''; if ($lp_id) { $return .= '<div class="lp_resource_element">'; $return .= Display::return_icon('new_doc.gif', '', array(), ICON_SIZE_SMALL); $return .= Display::url(get_lang('NewDocument'), api_get_self() . '?' . api_get_cidreq() . '&action=add_item&type=' . TOOL_DOCUMENT . '&lp_id=' . $_SESSION['oLP']->lp_id); $return .= '</div>'; } else { $return .= Display::div(Display::url(Display::return_icon('close.png', get_lang('Close'), array(), ICON_SIZE_SMALL), ' javascript:void(0);', array('id' => 'close_div_' . $course_info['real_id'] . '_' . $session_id, 'class' => 'close_div')), array('style' => 'position:absolute;right:10px')); } // If you want to debug it, I advise you to do "echo" on the eval statements. if (!empty($resources) && $user_in_course) { foreach ($resources as $resource) { $is_visible = self::is_visible_by_id($resource['id'], $course_info, $session_id, api_get_user_id()); if (!$is_visible) { continue; } $resource_paths = explode('/', $resource['path']); array_shift($resource_paths); $path_to_eval = $last_path = ''; $is_file = false; if ($resource['filetype'] == 'file') { foreach ($resource_paths as $key => $resource_path) { if ($key != count($resource_paths) - 1) { // It's a folder. $path_to_eval .= "['{$resource_path}']['files']"; } $is_file = true; } } else { foreach ($resource_paths as $key => $resource_path) { if ($key != count($resource_paths) - 1) { // It's a folder. $path_to_eval .= "['{$resource_path}']['files']"; } } } $last_path = $resource_path; //$data = json_encode(array('title'=>$resource['title'], 'path'=>$last_path)); //@todo not sure if it's a good thing using base64_encode. I tried with json_encode but i received the same error //Some testing is needed in order to prove the performance //Also change the explode to value from "/" to "|@j@|" it fixes #3780 $data = base64_encode($resource['title'] . '|@j@|' . $last_path); if ($is_file) { //for backward compatibility if (empty($resource['title'])) { $resource['title'] = basename($resource['path']); } eval('$resources_sorted' . $path_to_eval . '[' . $resource['id'] . '] = "' . $data . '" ; '); } else { eval('$resources_sorted' . $path_to_eval . '["' . $last_path . '"]["id"]=' . $resource['id'] . ';'); eval('$resources_sorted' . $path_to_eval . '["' . $last_path . '"]["title"]= "' . api_htmlentities($resource['title']) . '";'); } } } $label = get_lang('Documents'); $new_array[$label] = array('id' => 0, 'files' => $resources_sorted); $write_result = self::write_resources_tree($course_info, $session_id, $new_array, 0, $lp_id, $target, $add_move_button, $overwrite_url); $return .= $write_result; $img_path = api_get_path(WEB_IMG_PATH); if ($lp_id == false) { $return .= "<script>\n \t\t \t\$('.doc_folder').mouseover(function() {\n \t\t\t\t\tvar my_id = this.id.split('_')[2];\n \t\t\t\t\t\$('#res_'+my_id).show();\n \t\t\t\t});\n\n \t\t\t\t\$('.close_div').click(function() {\n \t\t\t\t\tvar course_id = this.id.split('_')[2];\n \t\t\t\t\tvar session_id = this.id.split('_')[3];\n \t\t\t\t\t\$('#document_result_'+course_id+'_'+session_id).hide();\n \t\t\t\t\t\$('.lp_resource').remove();\n \t\t\t\t});\n \t\t\t\t</script>"; } else { //For LPs $return .= "<script>\n\n \t\tfunction testResources(id, img) {\n\t \t\tif (document.getElementById(id).style.display=='block'){\n\t \t\t\tdocument.getElementById(id).style.display='none';\n var id = id.split('_')[1];\n\t \t\t\tdocument.getElementById('img_'+id).src='" . $img_path . "nolines_plus.gif';\n\t \t\t} else {\n\t \t\t\tdocument.getElementById(id).style.display='block';\n var id = id.split('_')[1];\n \t\t\t\tdocument.getElementById('img_'+id).src='" . $img_path . "nolines_minus.gif';\n \t\t\t}\n \t\t}\n \t\t</script>"; } if (!$user_in_course) { $return = ''; } return $return; }
/** * Get registered users inside current course * @param int attendance id for showing attendance result field (optional) * @return array users data */ public function get_users_rel_course($attendance_id = 0) { $current_course_id = $this->get_course_id(); $courseInfo = api_get_course_info($current_course_id); $courseId = $courseInfo['real_id']; $current_session_id = $this->get_session_id(); if (!empty($current_session_id)) { $a_course_users = CourseManager::get_user_list_from_course_code($current_course_id, $current_session_id, '', 'lastname'); } else { $a_course_users = CourseManager::get_user_list_from_course_code($current_course_id, 0, '', 'lastname'); } // get registered users inside current course $a_users = array(); foreach ($a_course_users as $key => $user_data) { $value = array(); $uid = $user_data['user_id']; $status = $user_data['status']; $user_status_in_session = null; $user_status_in_course = null; if ($current_session_id) { $user_status_in_session = SessionManager::get_user_status_in_course_session($uid, $courseId, $current_session_id); } else { $user_status_in_course = CourseManager::get_user_in_course_status($uid, $courseId); } //Not taking into account DRH or COURSEMANAGER if ($uid <= 1 || $status == DRH || $user_status_in_course == COURSEMANAGER || $user_status_in_session == 2) { continue; } if (!empty($attendance_id)) { $user_faults = $this->get_faults_of_user($uid, $attendance_id); $value['attendance_result'] = $user_faults['faults'] . '/' . $user_faults['total'] . ' (' . $user_faults['faults_porcent'] . '%)'; $value['result_color_bar'] = $user_faults['color_bar']; } // user's picture $image_path = UserManager::get_user_picture_path_by_id($uid, 'web', false); $user_profile = UserManager::get_picture_user($uid, $image_path['file'], 22, USER_IMAGE_SIZE_SMALL, ' width="22" height="22" '); if (!empty($image_path['file'])) { $photo = '<center><a class="thickbox" href="' . $image_path['dir'] . $image_path['file'] . '" ><img src="' . $user_profile['file'] . '" ' . $user_profile['style'] . ' alt="' . api_get_person_name($user_data['firstname'], $user_data['lastname']) . '" title="' . api_get_person_name($user_data['firstname'], $user_data['lastname']) . '" /></a></center>'; } else { $photo = '<center><img src="' . $user_profile['file'] . '" ' . $user_profile['style'] . ' alt="' . api_get_person_name($user_data['firstname'], $user_data['lastname']) . '" title="' . api_get_person_name($user_data['firstname'], $user_data['lastname']) . '" /></center>'; } $value['photo'] = $photo; $value['firstname'] = $user_data['firstname']; $value['lastname'] = $user_data['lastname']; $value['username'] = $user_data['username']; $value['user_id'] = $uid; //Sending only 5 items in the array instead of 60 $a_users[$key] = $value; } return $a_users; }
/** * Displays the header for the gradebook containing the navigation tree and links * @param Category $catobj * @param int $showtree '1' will show the browse tree and naviation buttons * @param boolean $is_course_admin * @param boolean $is_platform_admin * @param boolean Whether to show or not the link to add a new qualification * (we hide it in case of the course-embedded tool where we have only one * calification per course or session) * @param boolean Whether to show or not the link to add a new item inside * the qualification (we hide it in case of the course-embedded tool * where we have only one calification per course or session) * @return void Everything is printed on screen upon closing */ static function header($catobj, $showtree, $selectcat, $is_course_admin, $is_platform_admin, $simple_search_form, $show_add_qualification = true, $show_add_link = true, $certificateLinkInfo = null) { $userId = api_get_user_id(); $courseCode = api_get_course_id(); $courseId = api_get_course_int_id(); $sessionId = api_get_session_id(); // Student. $status = CourseManager::get_user_in_course_status($userId, $courseCode); if (!empty($sessionId)) { $sessionStatus = SessionManager::get_user_status_in_course_session($userId, $courseId, $sessionId); } $objcat = new Category(); $course_id = CourseManager::get_course_by_category($selectcat); $message_resource = $objcat->show_message_resource_delete($course_id); $grade_model_id = $catobj->get_grade_model_id(); $header = null; //@todo move these in a function $sum_categories_weight_array = array(); if (isset($catobj) && !empty($catobj)) { $categories = Category::load(null, null, null, $catobj->get_id(), null, $sessionId); if (!empty($categories)) { foreach ($categories as $category) { $sum_categories_weight_array[$category->get_id()] = $category->get_weight(); } } else { $sum_categories_weight_array[$catobj->get_id()] = $catobj->get_weight(); } } if (!$is_course_admin && ($status != 1 || $sessionStatus == 0) && $selectcat != 0) { $catcourse = Category::load($catobj->get_id()); /** @var Category $category */ $category = $catcourse[0]; $main_weight = $category->get_weight(); $scoredisplay = ScoreDisplay::instance(); $allevals = $category->get_evaluations($userId, true); $alllinks = $category->get_links($userId, true); $allEvalsLinks = array_merge($allevals, $alllinks); $item_value_total = 0; $scoreinfo = null; for ($count = 0; $count < count($allEvalsLinks); $count++) { $item = $allEvalsLinks[$count]; $score = $item->calc_score($userId); if (!empty($score)) { $divide = $score[1] == 0 ? 1 : $score[1]; $item_value = $score[0] / $divide * $item->get_weight(); $item_value_total += $item_value; } } $item_total = $main_weight; $total_score = array($item_value_total, $item_total); $scorecourse_display = $scoredisplay->display_score($total_score, SCORE_DIV_PERCENT); if (!$catobj->get_id() == '0' && !isset($_GET['studentoverview']) && !isset($_GET['search'])) { $aditionalButtons = null; if (!empty($certificateLinkInfo)) { $aditionalButtons .= '<div class="btn-group pull-right">'; $aditionalButtons .= isset($certificateLinkInfo['certificate_link']) ? $certificateLinkInfo['certificate_link'] : ''; $aditionalButtons .= isset($certificateLinkInfo['badge_link']) ? $certificateLinkInfo['badge_link'] : ''; $aditionalButtons .= '</div>'; } $scoreinfo .= '<strong>' . sprintf(get_lang('TotalX'), $scorecourse_display . $aditionalButtons) . '</strong>'; } Display::display_normal_message($scoreinfo, false); } // show navigation tree and buttons? if ($showtree == '1' || isset($_GET['studentoverview'])) { $header = '<div class="actions"><table>'; $header .= '<tr>'; if (!$selectcat == '0') { $header .= '<td><a href="' . api_get_self() . '?selectcat=' . $catobj->get_parent_id() . '">' . Display::return_icon('back.png', get_lang('BackTo') . ' ' . get_lang('RootCat'), '', ICON_SIZE_MEDIUM) . '</a></td>'; } $header .= '<td>' . get_lang('CurrentCategory') . '</td>' . '<td><form name="selector"><select name="selectcat" onchange="document.selector.submit()">'; $cats = Category::load(); $tree = $cats[0]->get_tree(); unset($cats); $line = null; foreach ($tree as $cat) { for ($i = 0; $i < $cat[2]; $i++) { $line .= '—'; } $line = isset($line) ? $line : ''; if (isset($_GET['selectcat']) && $_GET['selectcat'] == $cat[0]) { $header .= '<option selected value=' . $cat[0] . '>' . $line . ' ' . $cat[1] . '</option>'; } else { $header .= '<option value=' . $cat[0] . '>' . $line . ' ' . $cat[1] . '</option>'; } $line = ''; } $header .= '</select></form></td>'; if (!empty($simple_search_form) && $message_resource === false) { $header .= '<td style="vertical-align: top;">' . $simple_search_form->toHtml() . '</td>'; } else { $header .= '<td></td>'; } if ($is_course_admin && $message_resource === false && isset($_GET['selectcat']) && $_GET['selectcat'] != 0) { /* $header .= '<td style="vertical-align: top;"><a href="gradebook_flatview.php?'.api_get_cidreq().'&selectcat=' . $catobj->get_id() . '"><img src="../img/view_list.gif" alt="' . get_lang('FlatView') . '" /> ' . get_lang('FlatView') . '</a>'; if ($is_course_admin && $message_resource===false) { $header .= '<td style="vertical-align: top;"><a href="gradebook_scoring_system.php?'.api_get_cidreq().'&selectcat=' . $catobj->get_id() .'"><img src="../img/acces_tool.gif" alt="' . get_lang('ScoreEdit') . '" /> ' . get_lang('ScoreEdit') . '</a>'; } */ } elseif (!isset($_GET['studentoverview'])) { if ($message_resource === false) { //$header .= '<td style="vertical-align: top;"><a href="'.api_get_self().'?'.api_get_cidreq().'&studentoverview=&selectcat=' . $catobj->get_id() . '"><img src="../img/view_list.gif" alt="' . get_lang('FlatView') . '" /> ' . get_lang('FlatView') . '</a>'; } } else { $header .= '<td style="vertical-align: top;"><a href="' . api_get_self() . '?' . api_get_cidreq() . '&studentoverview=&exportpdf=&selectcat=' . $catobj->get_id() . '" target="_blank"> <img src="../img/icons/32/pdf.png" alt="' . get_lang('ExportPDF') . '" /> ' . get_lang('ExportPDF') . '</a>'; } $header .= '</td></tr>'; $header .= '</table></div>'; } // for course admin & platform admin add item buttons are added to the header $actionsLeft = ''; $my_category = $catobj->shows_all_information_an_category($catobj->get_id()); $user_id = api_get_user_id(); $my_api_cidreq = api_get_cidreq(); if (api_is_allowed_to_edit(null, true)) { if (empty($grade_model_id) || $grade_model_id == -1) { $actionsLeft .= '<a href="gradebook_add_cat.php?' . api_get_cidreq() . '&selectcat=' . $catobj->get_id() . '">' . Display::return_icon('new_folder.png', get_lang('AddGradebook'), array(), ICON_SIZE_MEDIUM) . '</a></td>'; } if ($selectcat == '0') { } else { $my_category = $catobj->shows_all_information_an_category($catobj->get_id()); if ($my_api_cidreq == '') { $my_api_cidreq = 'cidReq=' . $my_category['course_code']; } if ($show_add_link && !$message_resource) { $actionsLeft .= '<a href="gradebook_add_eval.php?' . $my_api_cidreq . '&selectcat=' . $catobj->get_id() . '" >' . Display::return_icon('new_evaluation.png', get_lang('NewEvaluation'), '', ICON_SIZE_MEDIUM) . '</a>'; $cats = Category::load($selectcat); if ($cats[0]->get_course_code() != null && !$message_resource) { $actionsLeft .= '<a href="gradebook_add_link.php?' . $my_api_cidreq . '&selectcat=' . $catobj->get_id() . '">' . Display::return_icon('new_online_evaluation.png', get_lang('MakeLink'), '', ICON_SIZE_MEDIUM) . '</a>'; } else { $actionsLeft .= '<a href="gradebook_add_link_select_course.php?' . $my_api_cidreq . '&selectcat=' . $catobj->get_id() . '">' . Display::return_icon('new_online_evaluation.png', get_lang('MakeLink'), '', ICON_SIZE_MEDIUM) . '</a>'; } } if (!$message_resource) { $actionsLeft .= '<a href="gradebook_flatview.php?' . $my_api_cidreq . '&selectcat=' . $catobj->get_id() . '">' . Display::return_icon('stats.png', get_lang('FlatView'), '', ICON_SIZE_MEDIUM) . '</a>'; if ($my_category['generate_certificates'] == 1) { $actionsLeft .= Display::url(Display::return_icon('certificate_list.png', get_lang('GradebookSeeListOfStudentsCertificates'), '', ICON_SIZE_MEDIUM), "gradebook_display_certificate.php?{$my_api_cidreq}&cat_id=" . intval($_GET['selectcat'])); } $actionsLeft .= Display::url(Display::return_icon('user.png', get_lang('GradebookListOfStudentsReports'), '', ICON_SIZE_MEDIUM), "gradebook_display_summary.php?{$my_api_cidreq}&selectcat=" . intval($_GET['selectcat'])); // Right icons $actionsRight = '<a href="gradebook_edit_cat.php?editcat=' . $catobj->get_id() . '&cidReq=' . $catobj->get_course_code() . '&id_session=' . $catobj->get_session_id() . '">' . Display::return_icon('edit.png', get_lang('Edit'), '', ICON_SIZE_MEDIUM) . '</a>'; $actionsRight .= '<a href="../document/document.php?curdirpath=/certificates&' . $my_api_cidreq . '&origin=gradebook&selectcat=' . $catobj->get_id() . '">' . Display::return_icon('certificate.png', get_lang('AttachCertificate'), '', ICON_SIZE_MEDIUM) . '</a>'; if (empty($categories)) { $actionsRight .= '<a href="gradebook_edit_all.php?id_session=' . api_get_session_id() . '&' . $my_api_cidreq . '&selectcat=' . $catobj->get_id() . '">' . Display::return_icon('percentage.png', get_lang('EditAllWeights'), '', ICON_SIZE_MEDIUM) . '</a>'; } $score_display_custom = api_get_setting('gradebook_score_display_custom'); if (api_get_setting('teachers_can_change_score_settings') == 'true' && $score_display_custom['my_display_custom'] == 'true') { $actionsRight .= '<a href="gradebook_scoring_system.php?' . $my_api_cidreq . '&selectcat=' . $catobj->get_id() . '">' . Display::return_icon('ranking.png', get_lang('ScoreEdit'), '', ICON_SIZE_MEDIUM) . '</a>'; } } } } elseif (isset($_GET['search'])) { echo $header = '<b>' . get_lang('SearchResults') . ' :</b>'; } $isDrhOfCourse = CourseManager::isUserSubscribedInCourseAsDrh(api_get_user_id(), api_get_course_info()); if ($isDrhOfCourse) { ${$actionsLeft} .= '<a href="gradebook_flatview.php?' . $my_api_cidreq . '&selectcat=' . $catobj->get_id() . '">' . Display::return_icon('stats.png', get_lang('FlatView'), '', ICON_SIZE_MEDIUM) . '</a>'; } if (api_is_allowed_to_edit(null, true)) { echo $toolbar = Display::toolbarAction('gradebook-actions', array(0 => $actionsLeft, 1 => $actionsRight)); } if (api_is_allowed_to_edit(null, true)) { $weight = intval($catobj->get_weight()) > 0 ? $catobj->get_weight() : 0; $weight = '<strong>' . get_lang('TotalWeight') . ' : </strong>' . $weight; $min_certification = intval($catobj->get_certificate_min_score() > 0) ? $catobj->get_certificate_min_score() : 0; $min_certification = get_lang('CertificateMinScore') . ' : ' . $min_certification; $edit_icon = '<a href="gradebook_edit_cat.php?editcat=' . $catobj->get_id() . '&cidReq=' . $catobj->get_course_code() . '&id_session=' . $catobj->get_session_id() . '">' . Display::return_icon('edit.png', get_lang('Edit'), array(), ICON_SIZE_SMALL) . '</a>'; //$msg = Display::tag('h3', $weight.' - '.$min_certification); $msg = $weight . ' - ' . $min_certification . $edit_icon; //@todo show description $description = $catobj->get_description() == "" || is_null($catobj->get_description()) ? '' : '<strong>' . get_lang('GradebookDescriptionLog') . '</strong>' . ': ' . $catobj->get_description(); Display::display_normal_message($msg, false); if (!empty($description)) { echo Display::div($description, array()); } } }
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; } }
$session_info = SessionManager::fetch($session_id); $session_list = SessionManager::get_sessions_by_coach(api_get_user_id()); $course_list = SessionManager::get_course_list_by_session_id($session_id); // Getting all sessions where I'm subscribed /*$new_session_list = array(); if (!api_is_anonymous()) { $new_session_list = UserManager::get_personal_session_course_list(api_get_user_id()); } $user_course_list = array(); foreach ($new_session_list as $session_item) { $user_course_list[] = $session_item['code']; }*/ $userIsGeneralCoach = SessionManager::user_is_general_coach($userId, $session_id); $user_course_list = array(); foreach ($course_list as $course) { $status = SessionManager::get_user_status_in_course_session($userId, $course['real_id'], $session_id); if ($status !== false || api_is_platform_admin() || $userIsGeneralCoach) { $user_course_list[] = $course['code']; } } if (empty($user_course_list)) { api_not_allowed(true); } $my_session_list = array(); $final_array = array(); /* if (!empty($new_session_list)) { foreach ($new_session_list as $item) { $my_session_id = isset($item['id_session']) ? $item['id_session'] : null; if (isset($my_session_id) && !in_array($my_session_id, $my_session_list) && $session_id == $my_session_id) { $final_array[$my_session_id]['name'] = $item['session_name'];
$url = api_get_course_url($course_code, $session_id); if (empty($session_id)) { if (CourseManager::is_user_subscribed_in_course($user_id, $courseId) || api_check_user_access_to_legal($course_info['visibility'])) { $user_accepted_legal = CourseManager::is_user_accepted_legal($user_id, $course_info); if ($user_accepted_legal || $user_pass_open_course) { //Redirect to course home header('Location: ' . $url); exit; } } else { api_not_allowed(); } } else { if (api_is_platform_admin()) { header('Location: ' . $url); } $user_session_status = SessionManager::get_user_status_in_course_session($user_id, $courseId, $session_id); if (isset($user_session_status) || api_check_user_access_to_legal($course_info['visibility'])) { $user_accepted_legal = CourseManager::is_user_accepted_legal($user_id, $course_info, $session_id); if ($user_accepted_legal || $user_pass_open_course) { //Redirect to course session home header('Location: ' . $url); exit; } } else { api_not_allowed(); } } Display::display_header($nameTools); $form->display(); Display::display_footer();