コード例 #1
0
ファイル: test-class-lesson.php プロジェクト: pra85/sensei
 /**
  * Testing the is lesson pre-requisite completed function.
  *
  * @since 1.9.0
  */
 public function testIsPreRequisiteComplete()
 {
     // does this function add_user_data exist?
     $this->assertTrue(method_exists('WooThemes_Sensei_Lesson', 'is_prerequisite_complete'), 'The lesson class function `is_prerequisite_complete` does not exist ');
     // falsy state
     $user_id = 0;
     $lesson_id = 0;
     $this->assertFalse(WooThemes_Sensei_Lesson::is_prerequisite_complete($lesson_id, $user_id), 'None existing lesson or user should return false');
     $test_user_id = wp_create_user('studentPrerequisite', 'studentPrerequisite', '*****@*****.**');
     $test_lesson = $this->factory->get_lessons();
     $test_lesson_id = $test_lesson[0];
     // truthy state
     $course_id = $this->factory->get_random_course_id();
     $lessons = $this->factory->get_lessons();
     $test_lesson_prerequisite_id = $lessons[1];
     // add lesson to random course
     update_post_meta($test_lesson_prerequisite_id, '_lesson_course', $course_id);
     update_post_meta($test_lesson_id, '_lesson_course', $course_id);
     // setup prerequisite
     update_post_meta($test_lesson_id, '_lesson_prerequisite', $test_lesson_prerequisite_id);
     Sensei_Utils::user_start_lesson($test_user_id, $test_lesson_prerequisite_id);
     $this->assertFalse(WooThemes_Sensei_Lesson::is_prerequisite_complete($test_lesson_id, $test_user_id), 'Users that has NOT completeded prerequisite should return false.');
     Sensei_Utils::user_start_lesson($test_user_id, $test_lesson_prerequisite_id, true);
     $this->assertTrue(Sensei_Lesson::is_prerequisite_complete($test_lesson_id, $test_user_id), 'Users that has completeded prerequisite should return true.');
 }
コード例 #2
0
 /**
  * Show a message telling the user to complete the previous message if they haven't done so yet
  *
  * @since 1.9.0
  */
 public static function prerequisite_complete_message()
 {
     $lesson_prerequisite = WooThemes_Sensei_Lesson::get_lesson_prerequisite_id(get_the_ID());
     $lesson_has_pre_requisite = $lesson_prerequisite > 0;
     if (!WooThemes_Sensei_Lesson::is_prerequisite_complete(get_the_ID(), get_current_user_id()) && $lesson_has_pre_requisite) {
         $prerequisite_lesson_link = '<a href="' . esc_url(get_permalink($lesson_prerequisite)) . '" title="' . esc_attr(sprintf(__('You must first complete: %1$s', 'woothemes-sensei'), get_the_title($lesson_prerequisite))) . '">' . get_the_title($lesson_prerequisite) . '</a>';
         echo sprintf(__('You must first complete %1$s before viewing this Lesson', 'woothemes-sensei'), $prerequisite_lesson_link);
     }
 }
コード例 #3
0
/**
 * Template function to determine if the current user can
 * access the current lesson content being viewed.
 *
 * This function checks in the folowing order
 * - if the current user has all access based on their permissions
 * - If the access permission setting is enabled for this site, if not the user has accces
 * - if the lesson has a pre-requisite and if the user has completed that
 * - If it is a preview the user has access as well
 *
 * @since 1.9.0
 *
 * @param string $lesson_id
 * @return bool
 */
function sensei_can_user_view_lesson($lesson_id = '', $user_id = '')
{
    if (empty($lesson_id)) {
        $lesson_id = get_the_ID();
    }
    if (empty($user_id)) {
        $user_id = get_current_user_id();
    }
    // Check for prerequisite lesson completions
    $pre_requisite_complete = WooThemes_Sensei_Lesson::is_prerequisite_complete($lesson_id, $user_id);
    $lesson_course_id = get_post_meta($lesson_id, '_lesson_course', true);
    $user_taking_course = Sensei_Utils::user_started_course($lesson_course_id, $user_id);
    $is_preview = false;
    if (Sensei_Utils::is_preview_lesson($lesson_id)) {
        $is_preview = true;
        $pre_requisite_complete = true;
    }
    $user_can_access_lesson = false;
    if (is_user_logged_in() && $user_taking_course) {
        $user_can_access_lesson = true;
    }
    $access_permission = false;
    if (!Sensei()->settings->get('access_permission') || sensei_all_access()) {
        $access_permission = true;
    }
    $can_user_view_lesson = $access_permission || $user_can_access_lesson && $pre_requisite_complete || $is_preview;
    /**
     * Filter the can user view lesson function
     *
     * @since 1.9.0
     *
     * @hooked Sensei_WC::alter_can_user_view_lesson
     *
     * @param bool $can_user_view_lesson
     * @param string $lesson_id
     * @param string $user_id
     */
    return apply_filters('sensei_can_user_view_lesson', $can_user_view_lesson, $lesson_id, $user_id);
}