/** * __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) . '"'; }
/** * 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); }