예제 #1
0
파일: index.php 프로젝트: bqq1986/efront
             $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();
예제 #2
0
     $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();
예제 #3
0
 /**
  * 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;