Skip to content

Commit

Permalink
Pass checks argument to sensei_can_user_view_lesson filter
Browse files Browse the repository at this point in the history
  • Loading branch information
merkushin committed Aug 6, 2024
1 parent 80d3026 commit afd5f3c
Show file tree
Hide file tree
Showing 2 changed files with 53 additions and 4 deletions.
18 changes: 14 additions & 4 deletions includes/sensei-functions.php
Original file line number Diff line number Diff line change
Expand Up @@ -161,19 +161,29 @@ function sensei_can_user_view_lesson( $lesson_id = null, $user_id = null ) {
|| ( $user_can_view_course_content && $pre_requisite_complete )
|| $is_preview_lesson;

$checks = array(
'login_not_required' => ! sensei_is_login_required(),
'user_has_all_access' => sensei_all_access( $user_id ),
'user_can_view_course_content' => $user_can_view_course_content,
'pre_requisite_complete' => $pre_requisite_complete,
'is_preview_lesson' => $is_preview_lesson,
);

/**
* Filter if the user can view lesson and quiz content.
*
* @since 1.9.0
* @since $$next-version$$ Added $checks parameter.
*
* @hook sensei_can_user_view_lesson
*
* @param {bool} $can_user_view_lesson True if they can view lesson/quiz content.
* @param {int} $lesson_id Lesson post ID.
* @param {int} $user_id User ID.
* @param {bool} $can_user_view_lesson True if they can view lesson/quiz content.
* @param {int} $lesson_id Lesson post ID.
* @param {int} $user_id User ID.
* $param {array} $checks Array of checks that were made to determine access.
* @return {bool} Filtered access.
*/
return apply_filters( 'sensei_can_user_view_lesson', $can_user_view_lesson, $lesson_id, $user_id );
return apply_filters( 'sensei_can_user_view_lesson', $can_user_view_lesson, $lesson_id, $user_id, $checks );
}

if ( ! function_exists( 'sensei_light_or_dark' ) ) {
Expand Down
39 changes: 39 additions & 0 deletions tests/unit-tests/test-sensei-functions.php
Original file line number Diff line number Diff line change
Expand Up @@ -2,11 +2,26 @@

class Sensei_Functions_Test extends WP_UnitTestCase {

/**
* Sensei factory.
*
* @var \Sensei_Factory
*/
protected $factory;

public function setUp(): void {
parent::setUp();

$this->factory = new \Sensei_Factory();
}

public function tearDown(): void {
// Ensure explicit theme support is removed.
remove_theme_support( 'sensei' );

parent::tearDown();

$this->factory->tearDown();
}

/**
Expand Down Expand Up @@ -108,6 +123,30 @@ public function testSenseiUserRegistrationUrl() {
);
}

public function testSenseiCanUserViewLesson_WhenCalled_FiresFilterWithChecksArgument() {
/* Arrange. */
$lesson_id = $this->factory->lesson->create();
$user_id = $this->factory->user->create();

$has_checks = false;
$filter = function ( $can_view_lesson, $lesson_id, $user_id, $checks ) use ( &$has_checks ) {
$has_checks = is_array( $checks ) && isset(
$checks[ 'login_not_required' ],
$checks[ 'user_has_all_access' ],
$checks[ 'user_can_view_course_content' ],
$checks[ 'pre_requisite_complete' ],
$checks[ 'is_preview_lesson' ]
);
};
add_filter( 'sensei_can_user_view_lesson', $filter, 10, 4 );

/* Act. */
sensei_can_user_view_lesson( $lesson_id, $user_id );

/* Assert. */
$this->assertTrue( $has_checks );
}

/**
* Filter for setting theme to Twenty Sixteen.
*
Expand Down

0 comments on commit afd5f3c

Please sign in to comment.