//$form -> addElement('select', 'branches_ID', _LOCATIONBRANCH, eF_createBranchesTreeSelect($branches,$only_existing), 'class = "inputText"'); //$smarty -> assign("T_BRANCHES_FILTER", eF_createBranchesFilterSelect()); */ $smarty->assign("T_JOBS_FILTER", eF_createJobFilterSelect()); } #cpp#endif if (isset($_GET['edit_lesson'])) { //If we are editing a lesson, we set the default form values to the ones stored in the database $editLesson = new EfrontLesson($_GET['edit_lesson']); $form->setDefaults(array('name' => $editLesson->lesson['name'], 'active' => $editLesson->lesson['active'], 'show_catalog' => $editLesson->lesson['show_catalog'], 'course_only' => $editLesson->lesson['course_only'], 'directions_ID' => $editLesson->lesson['directions_ID'], 'languages_NAME' => $editLesson->lesson['languages_NAME'], 'duration' => $editLesson->lesson['duration'] ? $editLesson->lesson['duration'] : '', 'access_limit' => $editLesson->lesson['access_limit'] ? $editLesson->lesson['access_limit'] : '', 'share_folder' => $editLesson->lesson['share_folder'] ? $editLesson->lesson['share_folder'] : 0, 'max_users' => $editLesson->lesson['max_users'] ? $editLesson->lesson['max_users'] : null, 'price' => $editLesson->lesson['price'], 'recurring' => $editLesson->options['recurring'], $editLesson->options['recurring'] . '_duration' => $editLesson->options['recurring_duration'])); if ($editLesson->lesson['share_folder']) { $shareFolderLesson = new EfrontLesson($editLesson->lesson['share_folder']); $smarty->assign("T_SHARE_FOLDER_WITH", $shareFolderLesson->lesson['name']); } if ($editLesson->lesson['course_only'] && sizeof($editLesson->getCourses()) > 0 || !$editLesson->lesson['course_only']) { $result = eF_getTableData("users_to_lessons", "count(*)", "lessons_ID={$editLesson->lesson['id']} and archive=0"); if ($result[0]['count(*)'] > 0) { $courseOnly->freeze(); $directAccess->freeze(); } } $smarty->assign("T_EDIT_LESSON", $editLesson); } else { //$form -> addElement('file', 'import_content', _UPLOADLESSONFILE, 'class = "inputText"'); $form->setDefaults(array('active' => 1, 'show_catalog' => 1, 'price' => 0, 'course_only' => 1, 'languages_NAME' => $GLOBALS['configuration']['default_language'])); } if (isset($currentUser->coreAccess['lessons']) && $currentUser->coreAccess['lessons'] != 'change') { $form->freeze(); } else { $form->addElement('submit', 'submit_lesson', _SUBMIT, 'class = "flatButton"');
/** * Complete lesson * * This function is used to set the designated lesson's status * to 'completed' for the current user. * <br/>Example: * <code> * $user -> completeLesson(5, 87, 'Very good progress'); //Complete lesson with id 5 * </code> * * @param mixed $lesson Either the lesson id, or an EfrontLesson object * @param array $fields Extra fields containing the user score and any comments * @return boolean true if everything is ok * @since 3.5.0 * @access public */ public function completeLesson($lesson, $score = 100, $comments = '', $timestamp = '') { if (!$lesson instanceof EfrontLesson) { $lesson = new EfrontLesson($lesson); } if (in_array($lesson->lesson['id'], array_keys($this->getLessons()))) { $fields = array('completed' => 1, 'to_timestamp' => $timestamp ? $timestamp : time(), 'score' => str_replace(',', '.', $score), 'comments' => $comments); eF_updateTableData("users_to_lessons", $fields, "users_LOGIN = '******'login'] . "' and lessons_ID=" . $lesson->lesson['id']); //$cacheKey = "user_lesson_status:lesson:".$lesson -> lesson['id']."user:"******"type" => EfrontEvent::LESSON_COMPLETION, "users_LOGIN" => $this->user['login'], "lessons_ID" => $lesson->lesson['id'], "lessons_name" => $lesson->lesson['name'])); if (G_VERSIONTYPE == 'enterprise') { #cpp#ifdef ENTERPRISE if (!$this->aspects['hcd']) { $this->aspects['hcd'] = EfrontEmployeeFactory::factory($this->user['login']); } $employee = $this->aspects['hcd']; $newSkills = eF_getTableDataFlat("module_hcd_lesson_offers_skill", "skill_ID, specification", "lesson_ID = '" . $lesson->lesson['id'] . "'"); // The lesson associated skills will *complement* the existing ones - last argument = true $employee->addSkills($newSkills['skill_ID'], $newSkills['specification'], array_fill(0, sizeof($newSkills['skill_ID']), $score), true); } #cpp#endif //Get results in lessons $userLessons = array(); $result = eF_getTableData("users_to_lessons", "lessons_ID,completed,score", "users_LOGIN='******'login'] . "'"); foreach ($result as $value) { if ($userLessons[$value['lessons_ID']] = $value) { } } $lessonCourses = $lesson->getCourses(true); //Get the courses that this lesson is part of. This way, we can auto complete a course, if it should be auto completed //Filter out courses that the student doesn't have $result = eF_getTableDataFlat("users_to_courses", "courses_ID", "users_LOGIN='******'login'] . "'"); $userCourses = $result['courses_ID']; foreach ($lessonCourses as $id => $course) { if (!in_array($id, $userCourses)) { unset($lessonCourses[$id]); } } //$userStatus = EfrontStats :: getUsersCourseStatus(array_keys($courses), $this -> user['login']); foreach ($lessonCourses as $course) { if ($course->options['auto_complete']) { $constraints = array('archive' => false, 'active' => true, 'return_objects' => false); $courseLessons = $course->getCourseLessons($constraints); $completed = $score = array(); foreach ($courseLessons as $lessonId => $value) { $userLessons[$lessonId]['completed'] ? $completed[] = 1 : ($completed[] = 0); $score[] = $userLessons[$lessonId]['score']; } if (array_sum($completed) == sizeof($completed)) { //If all the course's lessons are completed, then auto complete the course, using the mean lessons score $this->completeCourse($course->course['id'], round(array_sum($score) / sizeof($score)), _AUTOCOMPLETEDCOURSE); } } } $modules = eF_loadAllModules(); foreach ($modules as $module) { $module->onCompleteLesson($lesson->lesson['id'], $this->user['login']); } return true; } else { return false; } }
$basedir = $currentLesson->getDirectory(); } if (!isset($currentUser->coreAccess['files']) || $currentUser->coreAccess['files'] == 'change') { $options = array('lessons_ID' => $currentLesson->lesson['id'], 'metadata' => 0); } else { $options = array('delete' => false, 'edit' => false, 'share' => false, 'upload' => false, 'create_folder' => false, 'zip' => false, 'lessons_ID' => $currentLesson->lesson['id'], 'metadata' => 0); } /** Get the suggested list in a form that javascript can then understand **/ if (isset($_GET['postAjaxRequest']) && isset($_GET['get_proposed_skills'])) { $question_lesson = eF_getTableData("questions", "lessons_ID", "id = " . $_GET['edit_question']); if (!empty($question_lesson) && $question_lesson[0]['lessons_ID'] != 0) { $lesson = new EfrontLesson($question_lesson[0]['lessons_ID']); $skills_to_propose = array(); // If the lesson belongs only to courses, get all skills of its courses if ($lesson->lesson['course_only']) { $lesson_belonging_courses = $lesson->getCourses(true); foreach ($lesson_belonging_courses as $course) { $course_skills = $course->getSkills(true); foreach ($course_skills as $skillID => $skill) { $skills_to_propose[] = $skillID; } } } else { // Else get only its own skills $lesson_skills = $lesson->getSkills(true); foreach ($lesson_skills as $skillID => $skill) { $skills_to_propose[] = $skillID; } } if (!empty($skills_to_propose)) { echo implode(" ", $skills_to_propose);