/**
  * __get function.
  *
  * @param string $key
  *
  * @return mixed
  */
 public function __get($key)
 {
     if (empty($this->{$key})) {
         $value = false;
         switch ($key) {
             case 'current_item':
                 $item_type = !empty($_REQUEST['course-item']) ? $_REQUEST['course-item'] : '';
                 if ($item_type) {
                     $item_id = ($item_id = learn_press_get_request("{$item_type}_id")) && $this->has('item', $item_id) ? $item_id : null;
                     if ($item_id) {
                         $value = $item_type == 'lesson' ? LP_Lesson::get_lesson($item_id) : LP_Quiz::get_quiz($item_id);
                     }
                 }
                 break;
             case 'current_lesson':
                 $lesson_id = ($lesson_id = learn_press_get_request("lesson_id")) && $this->has('item', $lesson_id) ? $lesson_id : null;
                 if ($lesson_id) {
                     $value = LP_Lesson::get_lesson($lesson_id);
                 }
                 break;
             case 'permalink':
                 $value = get_the_permalink($this->id);
                 break;
             default:
                 // default is get course meta key
                 $value = get_post_meta($this->id, '_lp_' . $key, true);
         }
         if (!empty($value)) {
             $this->{$key} = $value;
         }
     }
     return !empty($this->{$key}) ? $this->{$key} : null;
 }
 /**
  * The class of lesson in course curriculum
  *
  * @param int          $lesson_id
  * @param array|string $class
  */
 function learn_press_course_lesson_class($lesson_id = null, $class = null)
 {
     if (is_string($class) && $class) {
         $class = preg_split('!\\s+!', $class);
     } else {
         $class = array();
     }
     $classes = array('course-lesson course-item');
     if (learn_press_user_has_completed_lesson($lesson_id)) {
         $classes[] = "completed";
     }
     if ($lesson_id && !empty($_REQUEST['lesson']) && $lesson_id == $_REQUEST['lesson']) {
         $classes[] = 'current';
     }
     if (is_course()) {
         $course = LP()->course;
         if ($course->is_free()) {
             $classes[] = 'free-item';
         }
     }
     $lesson = LP_Lesson::get_lesson($lesson_id);
     if ($lesson && $lesson->is_previewable()) {
         $classes[] = 'preview-item';
     }
     $classes = array_unique(array_merge($classes, $class));
     echo 'class="' . implode(' ', $classes) . '"';
 }
Esempio n. 3
0
 /**
  * Return true if user can view a lesson
  *
  * @param int $lesson_id
  * @param int $course_id
  *
  * @return bool
  */
 function can_view_lesson($lesson_id, $course_id = null)
 {
     $lesson = LP_Lesson::get_lesson($lesson_id);
     $view = $lesson->is('previewable') || $this->get_item_order($lesson_id);
     if (!$view && $course_id && ($course = LP_Course::get_course($course_id)) && !$course->is('required_enroll')) {
         $view = true;
     }
     return apply_filters('learn_press_user_view_lesson', $view, $lesson_id, $this, $course_id);
 }