$course = new EfrontCourse($_GET['from_course']); $smarty->assign("T_COURSE", $course); $smarty->assign("T_HAS_COURSE", in_array($course->course['id'], array_keys($userCourses))); } elseif (isset($_GET['course']) && $_GET['course']) { $course = new EfrontCourse($_GET['course']); $smarty->assign("T_COURSE", $course); $smarty->assign("T_HAS_COURSE", in_array($course->course['id'], array_keys($userCourses))); } } } else { if ($_GET['courses_ID']) { if (isset($courses[$_GET['courses_ID']]) && $courses[$_GET['courses_ID']] instanceof EfrontCourse) { $smarty->assign("T_HAS_COURSE", $courses[$_GET['courses_ID']]->course['has_course']); } $course = new EfrontCourse($_GET['courses_ID']); $course->course['num_students'] = sizeof($course->getStudentUsers()); $course->course['seats_remaining'] = $course->course['max_users'] - $course->course['num_students']; $course->course['seats_remaining'] >= 0 or $course->course['seats_remaining'] = 0; $smarty->assign("T_COURSE", $course); if (isset($_SESSION['s_type']) && $_SESSION['s_type'] == 'administrator' || in_array($_SESSION['s_login'], array_keys($course->getUsers()))) { $smarty->assign("T_HAS_COURSE", true); } if (G_VERSIONTYPE == 'enterprise') { #cpp#ifdef ENTERPRISE $result = eF_getTableData("module_hcd_course_to_branch mb, module_hcd_branch b", "mb.branches_ID, b.name", "mb.branches_ID=b.branch_ID and courses_ID=" . $course->course['id']); if (!empty($result)) { $course->course['location'] = $result[0]['name']; } } #cpp#endif $lessons = $course->getCourseLessons();
$lessonInfo = new LearningObjectInformation(unserialize($lesson->lesson['info'])); $smarty->assign("T_LESSON_INFO", $lessonInfo); $additionalInfo = $lesson->getInformation(); $smarty->assign("T_ADDITIONAL_LESSON_INFO", $additionalInfo); if ($lesson->lesson['course_only']) { $smarty->assign("T_LESSON_COURSES", $lesson->getCourses()); if (isset($_GET['from_course']) && $_GET['from_course']) { $course = new EfrontCourse($_GET['from_course']); $smarty->assign("T_COURSE", $course); $smarty->assign("T_HAS_COURSE", in_array($course->course['id'], array_keys($userCourses))); } } } else { if ($_GET['info_course']) { $course = new EfrontCourse($_GET['info_course']); $course->course['num_students'] = sizeof($course->getStudentUsers(false, array(), true)); $course->course['seats_remaining'] = $course->course['max_users'] - $course->course['num_students']; $course->course['seats_remaining'] >= 0 or $course->course['seats_remaining'] = 0; $smarty->assign("T_COURSE", $course); if (isset($_SESSION['s_type']) && $_SESSION['s_type'] == 'administrator' || in_array($_SESSION['s_login'], array_keys($course->getUsers()))) { $smarty->assign("T_HAS_COURSE", true); } if (G_VERSIONTYPE == 'enterprise') { #cpp#ifdef ENTERPRISE $result = eF_getTableData("module_hcd_course_to_branch mb, module_hcd_branch b", "mb.branches_ID, b.name", "mb.branches_ID=b.branch_ID and courses_ID=" . $course->course['id']); if (!empty($result)) { $course->course['location'] = $result[0]['name']; } } #cpp#endif $lessons = $course->getCourseLessons();
/** * Check if a course must be reset because of certificate expiry or 'before expiry' reset * * @param mixed lesson A lesson id or an EfrontLesson object * @since 3.6.3 * @access public */ public static function checkCertificateExpire() { $courses = eF_getTableData("courses", "id,reset_interval,reset", "certificate_expiration !=0"); $notifications = eF_getTableData("event_notifications", "id,event_type,after_time,send_conditions", "event_type=-56 and active=1"); $notifications_on_event = eF_getTableData("event_notifications", "id,event_type,after_time,send_conditions", "event_type=56 and active=1"); foreach ($courses as $value) { $course = new EfrontCourse($value['id']); $constraints = array('archive' => false, 'active' => true, 'condition' => 'issued_certificate != ""'); $users = $course->getStudentUsers(false, $constraints); foreach ($users as $user) { $login = $user['login']; $dateTable = unserialize($user['issued_certificate']); if (eF_checkParameter($dateTable['date'], 'timestamp')) { //new way that issued date saves $expirationArray = convertTimeToDays($course->course['certificate_expiration']); $expirationTimestamp = getCertificateExpirationTimestamp($dateTable['date'], $expirationArray); if ($course->course['reset_interval'] != 0) { $resetArray = convertTimeToDays($value['reset_interval']); $resetTimestamp = getCertificateResetTimestamp($expirationTimestamp, $resetArray); if ($resetTimestamp < time()) { $user = EfrontUserFactory::factory($user); $user->resetProgressInCourse($course, true, true); } } if ($course->course['reset']) { //If student completed again the course with reset_interval, he has a new expire date so he will not be reset,(so it is not elseif) if ($expirationTimestamp < time()) { if (!$user instanceof EfrontUser) { $user = EfrontUserFactory::factory($user); } $user->resetProgressInCourse($course, true); foreach ($notifications_on_event as $notification) { $send_conditions = unserialize($notification['send_conditions']); $courses_ID = $send_conditions['courses_ID']; if ($courses_ID == $value['id'] || $courses_ID == 0) { if ($notification['after_time'] == 0) { EfrontEvent::triggerEvent(array("type" => EfrontEvent::COURSE_CERTIFICATE_EXPIRY, "users_LOGIN" => $user->user['login'], "lessons_ID" => $course->course['id'], "lessons_name" => $course->course['name'], 'create_negative' => false)); } } } } } if (!$course->course['reset'] && !$course->course['reset_interval']) { if ($expirationTimestamp < time()) { eF_updateTableData("users_to_courses", array("issued_certificate" => ""), "users_LOGIN='******' and courses_ID = " . $course->course['id']); foreach ($notifications_on_event as $notification) { $send_conditions = unserialize($notification['send_conditions']); $courses_ID = $send_conditions['courses_ID']; if ($courses_ID == $value['id'] || $courses_ID == 0) { if ($notification['after_time'] == 0) { EfrontEvent::triggerEvent(array("type" => EfrontEvent::COURSE_CERTIFICATE_REVOKE, "users_LOGIN" => $login, "lessons_ID" => $course->course['id'], "lessons_name" => $course->course['name'], "create_negative" => false)); } } } } } foreach ($notifications as $notification) { $send_conditions = unserialize($notification['send_conditions']); $courses_ID = $send_conditions['courses_ID']; if ($courses_ID == $value['id'] || $courses_ID == 0) { if ($notification['after_time'] < 0) { $resetArray = convertTimeToDays(abs($notification['after_time'])); $resetTimestamp = getCertificateResetTimestamp($expirationTimestamp, $resetArray); // in order notification to be sent one (not every day after $resetTimestamp) if ($GLOBALS['configuration']['last_reset_certificate'] < $resetTimestamp && $resetTimestamp < time() && $expirationTimestamp > time()) { EfrontEvent::triggerEvent(array("type" => -1 * EfrontEvent::COURSE_CERTIFICATE_EXPIRY, "users_LOGIN" => $login, "lessons_ID" => $course->course['id'], "lessons_name" => $course->course['name'], "create_negative" => false)); } } } } } } } }
exit; } if (isset($_GET['courses_ID']) && eF_checkParameter($_GET['courses_ID'], 'id')) { $course = new EfrontCourse($_GET['courses_ID']); $courseInformation = $course->getInformation(); if ($courseInformation['professors']) { foreach ($courseInformation['professors'] as $value) { $professorsString[] = formatLogin($value['login']); } $courseInformation['professors'] = implode(", ", $professorsString); } $course->course['price'] ? $priceString = formatPrice($course->course['price'], array($course->options['recurring'], $course->options['recurring_duration']), true) : ($priceString = false); $courseInformation['price_string'] = $priceString; if ($course->course['max_users']) { $courseInformation['max_users'] = $course->course['max_users']; $courseInformation['seats_remaining'] = $courseInformation['max_users'] - sizeof($course->getStudentUsers()); $courseInformation['seats_remaining'] >= 0 or $courseInformation['seats_remaining'] = 0; } foreach ($courseInformation as $key => $value) { if ($value) { $value = str_replace("\n", "<br />", $value); switch ($key) { case 'language': $GLOBALS['configuration']['onelanguage'] or $tooltipInfo[] = '<div class = "infoEntry"><span>' . _LANGUAGE . "</span><span>: {$languages[$value]}</span></div>"; break; case 'professors': $tooltipInfo[] = '<div class = "infoEntry"><span>' . _PROFESSORS . "</span><span>: {$value}</span></div>"; break; case 'lessons_number': $tooltipInfo[] = '<div class = "infoEntry"><span>' . _LESSONS . "</span><span>: {$value}</span></div>"; break;