From 54492c888b1303f813acd55e6215020b5f9de4f4 Mon Sep 17 00:00:00 2001 From: Dmitry Merkushin Date: Wed, 13 Dec 2023 15:58:00 -0600 Subject: [PATCH 1/9] Add translations for lessons and quizzes that were created while saving the course structure --- includes/class-sensei-course-structure.php | 31 +++++++- includes/wpml/class-sensei-wpml.php | 92 ++++++++++++++++++++++ 2 files changed, 119 insertions(+), 4 deletions(-) diff --git a/includes/class-sensei-course-structure.php b/includes/class-sensei-course-structure.php index 734f639c1b..3ee94df92e 100644 --- a/includes/class-sensei-course-structure.php +++ b/includes/class-sensei-course-structure.php @@ -519,14 +519,24 @@ private function create_lesson( array $item ) { ], ]; - $post_id = wp_insert_post( $post_args ); - if ( ! $post_id ) { + $lesson_id = wp_insert_post( $post_args ); + if ( ! $lesson_id ) { return false; } - $this->create_quiz( $post_id ); + /** + * Fires after a lesson is created while saving the course structure. + * + * @since $$next-version$$ + * + * @param int $lesson_id Lesson post ID. + * @param int $course_id Course post ID. + */ + do_action( 'sensei_course_structure_lesson_created', $lesson_id, $this->course_id ); - return $post_id; + $this->create_quiz( $lesson_id ); + + return $lesson_id; } /** @@ -549,8 +559,21 @@ private function create_quiz( int $lesson_id ) { ]; $quiz_id = wp_insert_post( $post_args ); + if ( ! $quiz_id ) { + return; + } + update_post_meta( $lesson_id, '_lesson_quiz', $quiz_id ); + /** + * Fires after a quiz is created while saving the course structure. + * + * @since $$next-version$$ + * + * @param int $quiz_id Quiz post ID. + * @param int $lesson_id Course post ID. + */ + do_action( 'sensei_course_structure_quiz_created', $quiz_id, $lesson_id ); } /** diff --git a/includes/wpml/class-sensei-wpml.php b/includes/wpml/class-sensei-wpml.php index c68838dc15..9d0cbd8afa 100644 --- a/includes/wpml/class-sensei-wpml.php +++ b/includes/wpml/class-sensei-wpml.php @@ -1,10 +1,30 @@ $course_id, + 'element_type' => 'post_course', + ) + ); + if ( ! $language_code ) { + // Use current language if course language is not set. + $language_code = apply_filters( 'wpml_current_language', null ); + } + + $args = array( + 'element_id' => $lesson_id, + 'element_type' => 'post_lesson', + 'trid' => false, + 'language_code' => $language_code, + ); + + // Set language details for the lesson. + do_action( 'wpml_set_element_language_details', $args ); + } + + /** + * Set language details for the lesson when it is created. + * + * @since $$next-version$$ + * + * @param int $quiz_id Quiz ID. + * @param int $lesson_id Lesson ID. + */ + public function set_language_details_when_quiz_created( $quiz_id, $lesson_id ) { + + // Get lesson language_code. + $language_code = apply_filters( + 'wpml_element_language_code', + null, + array( + 'element_id' => $lesson_id, + 'element_type' => 'post_lesson', + ) + ); + if ( ! $language_code ) { + // Use current language if lesson language is not set. + $language_code = apply_filters( 'wpml_current_language', null ); + } + + $args = array( + 'element_id' => $quiz_id, + 'element_type' => 'post_quiz', + 'trid' => false, + 'language_code' => $language_code, + ); + + // Set language details for the lesson. + do_action( 'wpml_set_element_language_details', $args ); + } } From 6a0fadfe20d5d193c116cdd4649709a40e86f242 Mon Sep 17 00:00:00 2001 From: Dmitry Merkushin Date: Wed, 13 Dec 2023 16:09:33 -0600 Subject: [PATCH 2/9] Add changelog entry --- changelog/fix-wpml-save-course-structure | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 changelog/fix-wpml-save-course-structure diff --git a/changelog/fix-wpml-save-course-structure b/changelog/fix-wpml-save-course-structure new file mode 100644 index 0000000000..6b6d67d469 --- /dev/null +++ b/changelog/fix-wpml-save-course-structure @@ -0,0 +1,4 @@ +Significance: patch +Type: fixed + +Add translations for lessons and quizzes that were created while saving the course structure From bd58aa99f829a252ac26f1be4f6032a742a57999 Mon Sep 17 00:00:00 2001 From: Dmitry Merkushin Date: Wed, 13 Dec 2023 16:16:12 -0600 Subject: [PATCH 3/9] Ignore hook names rules for WMPL hooks --- includes/wpml/class-sensei-wpml.php | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/includes/wpml/class-sensei-wpml.php b/includes/wpml/class-sensei-wpml.php index 9d0cbd8afa..5d81944391 100644 --- a/includes/wpml/class-sensei-wpml.php +++ b/includes/wpml/class-sensei-wpml.php @@ -38,7 +38,7 @@ public function sensei_before_mail( $email_address ) { * * @param string $email_address Recipient's email address */ - do_action( 'wpml_switch_language_for_email', $email_address ); + do_action( 'wpml_switch_language_for_email', $email_address ); // phpcs:ignore WordPress.NamingConventions.PrefixAllGlobals.NonPrefixedHooknameFound } /** @@ -55,7 +55,7 @@ public function sensei_after_sending_email() { * * @since 1.9.7 */ - do_action( 'wpml_restore_language_from_email' ); + do_action( 'wpml_restore_language_from_email' ); // phpcs:ignore WordPress.NamingConventions.PrefixAllGlobals.NonPrefixedHooknameFound } /** @@ -68,6 +68,7 @@ public function sensei_after_sending_email() { public function set_language_details_when_lesson_created( $lesson_id, $course_id ) { // Get course language_code. + // phpcs:ignore WordPress.NamingConventions.PrefixAllGlobals.NonPrefixedHooknameFound $language_code = apply_filters( 'wpml_element_language_code', null, @@ -78,6 +79,7 @@ public function set_language_details_when_lesson_created( $lesson_id, $course_id ); if ( ! $language_code ) { // Use current language if course language is not set. + // phpcs:ignore WordPress.NamingConventions.PrefixAllGlobals.NonPrefixedHooknameFound $language_code = apply_filters( 'wpml_current_language', null ); } @@ -89,6 +91,7 @@ public function set_language_details_when_lesson_created( $lesson_id, $course_id ); // Set language details for the lesson. + // phpcs:ignore WordPress.NamingConventions.PrefixAllGlobals.NonPrefixedHooknameFound do_action( 'wpml_set_element_language_details', $args ); } @@ -103,6 +106,7 @@ public function set_language_details_when_lesson_created( $lesson_id, $course_id public function set_language_details_when_quiz_created( $quiz_id, $lesson_id ) { // Get lesson language_code. + // phpcs:ignore WordPress.NamingConventions.PrefixAllGlobals.NonPrefixedHooknameFound $language_code = apply_filters( 'wpml_element_language_code', null, @@ -113,6 +117,7 @@ public function set_language_details_when_quiz_created( $quiz_id, $lesson_id ) { ); if ( ! $language_code ) { // Use current language if lesson language is not set. + // phpcs:ignore WordPress.NamingConventions.PrefixAllGlobals.NonPrefixedHooknameFound $language_code = apply_filters( 'wpml_current_language', null ); } @@ -124,6 +129,7 @@ public function set_language_details_when_quiz_created( $quiz_id, $lesson_id ) { ); // Set language details for the lesson. + // phpcs:ignore WordPress.NamingConventions.PrefixAllGlobals.NonPrefixedHooknameFound do_action( 'wpml_set_element_language_details', $args ); } } From ec5bce49b7cbb0c09d223ea4859f8ab4ffb27291 Mon Sep 17 00:00:00 2001 From: Dmitry Merkushin Date: Wed, 13 Dec 2023 16:20:55 -0600 Subject: [PATCH 4/9] Ignore hook names rules for WMPL hooks --- includes/wpml/class-sensei-wpml.php | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/includes/wpml/class-sensei-wpml.php b/includes/wpml/class-sensei-wpml.php index 5d81944391..8d865bd90b 100644 --- a/includes/wpml/class-sensei-wpml.php +++ b/includes/wpml/class-sensei-wpml.php @@ -68,8 +68,8 @@ public function sensei_after_sending_email() { public function set_language_details_when_lesson_created( $lesson_id, $course_id ) { // Get course language_code. - // phpcs:ignore WordPress.NamingConventions.PrefixAllGlobals.NonPrefixedHooknameFound $language_code = apply_filters( + // phpcs:ignore WordPress.NamingConventions.PrefixAllGlobals.NonPrefixedHooknameFound 'wpml_element_language_code', null, array( @@ -106,8 +106,8 @@ public function set_language_details_when_lesson_created( $lesson_id, $course_id public function set_language_details_when_quiz_created( $quiz_id, $lesson_id ) { // Get lesson language_code. - // phpcs:ignore WordPress.NamingConventions.PrefixAllGlobals.NonPrefixedHooknameFound $language_code = apply_filters( + // phpcs:ignore WordPress.NamingConventions.PrefixAllGlobals.NonPrefixedHooknameFound 'wpml_element_language_code', null, array( From 27d8f42799a613e871c64aec06bf7a4b4fc126e9 Mon Sep 17 00:00:00 2001 From: Dmitry Merkushin Date: Fri, 15 Dec 2023 19:43:00 -0600 Subject: [PATCH 5/9] Fix hook doc block --- includes/class-sensei-course-structure.php | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/includes/class-sensei-course-structure.php b/includes/class-sensei-course-structure.php index 3ee94df92e..168b23ea7a 100644 --- a/includes/class-sensei-course-structure.php +++ b/includes/class-sensei-course-structure.php @@ -529,6 +529,8 @@ private function create_lesson( array $item ) { * * @since $$next-version$$ * + * @hook sensei_course_structure_lesson_created + * * @param int $lesson_id Lesson post ID. * @param int $course_id Course post ID. */ @@ -570,6 +572,8 @@ private function create_quiz( int $lesson_id ) { * * @since $$next-version$$ * + * @hook sensei_course_structure_quiz_created + * * @param int $quiz_id Quiz post ID. * @param int $lesson_id Course post ID. */ From 30614506a2e328c932fc1199786eac404821f5ff Mon Sep 17 00:00:00 2001 From: Dmitry Merkushin Date: Tue, 9 Jan 2024 00:38:49 -0600 Subject: [PATCH 6/9] Add tests for WPML compatibility actions and for course structure actions --- .../test-class-sensei-course-structure.php | 66 +++++++- .../wpml/test-class-sensei-wpml.php | 147 ++++++++++++++++++ 2 files changed, 208 insertions(+), 5 deletions(-) create mode 100644 tests/unit-tests/wpml/test-class-sensei-wpml.php diff --git a/tests/unit-tests/test-class-sensei-course-structure.php b/tests/unit-tests/test-class-sensei-course-structure.php index 74408a92e5..912936f988 100644 --- a/tests/unit-tests/test-class-sensei-course-structure.php +++ b/tests/unit-tests/test-class-sensei-course-structure.php @@ -25,7 +25,7 @@ public function setUp(): void { /** * Test getting course structure when just lessons when one lesson is unpublished in view context. */ - public function testGetJustLessonsView() { + public function testGet_WithViewContextWhenStructureSavedWithLessonsOnly_ReturnSameStructureWithIdsAndTypes() { $course_id = $this->factory->course->create(); $course_lesson_args = [ 'meta_input' => [ @@ -66,7 +66,7 @@ public function testGetJustLessonsView() { /** * Test getting course structure when just lessons when one lesson is unpublished in edit context. */ - public function testGetJustLessonsEdit() { + public function testGet_WithEditContextWhenStructureSavedWithLessonsOnly_ReturnsSameStuctureWithIdsAndTypes() { $course_id = $this->factory->course->create(); $course_lesson_args = [ 'meta_input' => [ @@ -107,7 +107,7 @@ public function testGetJustLessonsEdit() { /** * Test getting course structure when just modules on the first level. */ - public function testGetJustModules() { + public function testGet_WithViewContextWhenStructureSavedWithModulesOnly_ReturnsSameStructure() { $course_id = $this->factory->course->create(); $lessons = $this->factory->lesson->create_many( 4 ); @@ -156,7 +156,7 @@ public function testGetJustModules() { /** * Test getting course structure when just modules with no lessons and one rogue lesson while in edit context. */ - public function testGetModulesWithEmptyLessonsEdit() { + public function testGet_WithEditContextWhenStructureSavedWithModulesWithEmptyLessons_ReturnsSameStructure() { $this->login_as_admin(); $course_id = $this->factory->course->create(); @@ -1654,7 +1654,7 @@ private function saveStructure( int $course_id, array $structure, $module_parent } } - public function testGetForEditMode_WhenCalled_ReturnsTeacherNameWithModulesProperly() { + public function testGet_CalledAsAdminWithEditContextAndTeacherAssignedToModule_ReturnsTeacherNameWithModulesProperly() { /* Arrange */ global $current_screen; $initial_current_screen = $current_screen; @@ -1715,4 +1715,60 @@ public function testGetForEditMode_WhenCalled_ReturnsTeacherNameWithModulesPrope // @see https://core.trac.wordpress.org/ticket/53431 $current_screen = $initial_current_screen; } + + public function testSave_WithNewLesson_FiresLessonCreatedAction() { + /* Arrange. */ + $this->login_as_teacher(); + + $course_id = $this->factory->course->create(); + + $new_structure = array( + array( + 'type' => 'lesson', + 'title' => 'New lesson', + ), + ); + + $course_structure = Sensei_Course_Structure::instance( $course_id ); + + $lesson_created_action_fired = false; + $action = function( $lesson_id, $course_id ) use ( &$lesson_created_action_fired ) { + $lesson_created_action_fired = true; + }; + add_action( 'sensei_course_structure_lesson_created', $action, 10, 2 ); + + /* Act. */ + $course_structure->save( $new_structure ); + + /* Assert. */ + $this->assertTrue( $lesson_created_action_fired ); + } + + public function testSave_WithNewLesson_FiresQuizCreatedAction() { + /* Arrange. */ + $this->login_as_teacher(); + + $course_id = $this->factory->course->create(); + + $new_structure = array( + array( + 'type' => 'lesson', + 'title' => 'New lesson', + ), + ); + + $course_structure = Sensei_Course_Structure::instance( $course_id ); + + $quiz_created_action_fired = false; + $action = function( $quiz, $lesson ) use ( &$quiz_created_action_fired ) { + $quiz_created_action_fired = true; + }; + add_action( 'sensei_course_structure_quiz_created', $action, 10, 2 ); + + /* Act. */ + $course_structure->save( $new_structure ); + + /* Assert. */ + $this->assertTrue( $quiz_created_action_fired ); + } } diff --git a/tests/unit-tests/wpml/test-class-sensei-wpml.php b/tests/unit-tests/wpml/test-class-sensei-wpml.php new file mode 100644 index 0000000000..eb38321f80 --- /dev/null +++ b/tests/unit-tests/wpml/test-class-sensei-wpml.php @@ -0,0 +1,147 @@ +set_language_details_when_lesson_created( 1, 2 ); + + /* Clean up & Assert. */ + remove_filter( 'wpml_element_language_code', $filter_funtction, 10 ); + + $this->assertTrue( $filter_applied ); + } + + public function testSetLanguageDetailsWhenLessonCreated_WhenCalled_AppliesWpmlCurrentLangugeFilter() { + /* Arrange. */ + $wpml = new Sensei_WPML(); + + $filter_language_code_funtction = function( $language_code, $element_data ) use ( &$filter_applied ) { + return null; + }; + add_filter( 'wpml_element_language_code', $filter_language_code_funtction, 10, 2 ); + + $filter_applied = false; + $filter_funtction = function( $language_code ) use ( &$filter_applied ) { + $filter_applied = true; + return $language_code; + }; + add_filter( 'wpml_current_language', $filter_funtction, 10, 1 ); + + /* Act. */ + $wpml->set_language_details_when_lesson_created( 1, 2 ); + + /* Clean up & Assert. */ + remove_filter( 'wpml_element_language_code', $filter_language_code_funtction, 10 ); + remove_filter( 'wpml_current_language', $filter_funtction, 10 ); + + $this->assertTrue( $filter_applied ); + } + + public function testSetLanguageDetailsWhenLessonCreated_WhenCalled_AppliesWpmlSetElementLanguageDetails() { + /* Arrange. */ + $wpml = new Sensei_WPML(); + + $filter_applied = false; + $filter_funtction = function( $data ) use ( &$filter_applied ) { + $filter_applied = true; + return $data; + }; + + add_filter( 'wpml_set_element_language_details', $filter_funtction, 10, 1 ); + + /* Act. */ + $wpml->set_language_details_when_lesson_created( 1, 2 ); + + /* Clean up & Assert. */ + remove_filter( 'wpml_set_element_language_details', $filter_funtction, 10 ); + + $this->assertTrue( $filter_applied ); + } + + public function testSetLanguageDetailsWhenQuizCreated_WhenCalled_AppliesWpmlElementLangugeCodeFilter() { + /* Arrange. */ + $wpml = new Sensei_WPML(); + + $filter_applied = false; + $filter_funtction = function( $language_code, $element_data ) use ( &$filter_applied ) { + $filter_applied = true; + return $language_code; + }; + + add_filter( 'wpml_element_language_code', $filter_funtction, 10, 2 ); + + /* Act. */ + $wpml->set_language_details_when_quiz_created( 1, 2 ); + + /* Clean up & Assert. */ + remove_filter( 'wpml_element_language_code', $filter_funtction, 10 ); + + $this->assertTrue( $filter_applied ); + } + + public function testSetLanguageDetailsWhenQuizCreated_WhenCalled_AppliesWpmlCurrentLangugeFilter() { + /* Arrange. */ + $wpml = new Sensei_WPML(); + + $filter_language_code_funtction = function( $language_code, $element_data ) use ( &$filter_applied ) { + return null; + }; + add_filter( 'wpml_element_language_code', $filter_language_code_funtction, 10, 2 ); + + $filter_applied = false; + $filter_funtction = function( $language_code ) use ( &$filter_applied ) { + $filter_applied = true; + return $language_code; + }; + add_filter( 'wpml_current_language', $filter_funtction, 10, 1 ); + + /* Act. */ + $wpml->set_language_details_when_quiz_created( 1, 2 ); + + /* Clean up & Assert. */ + remove_filter( 'wpml_element_language_code', $filter_language_code_funtction, 10 ); + remove_filter( 'wpml_current_language', $filter_funtction, 10 ); + + $this->assertTrue( $filter_applied ); + } + public function testSetLanguageDetailsWhenQuizCreated_WhenCalled_AppliesWpmlSetElementLanguageDetails() { + /* Arrange. */ + $wpml = new Sensei_WPML(); + + $filter_applied = false; + $filter_funtction = function( $data ) use ( &$filter_applied ) { + $filter_applied = true; + return $data; + }; + + add_filter( 'wpml_set_element_language_details', $filter_funtction, 10, 1 ); + + /* Act. */ + $wpml->set_language_details_when_quiz_created( 1, 2 ); + + /* Clean up & Assert. */ + remove_filter( 'wpml_set_element_language_details', $filter_funtction, 10 ); + + $this->assertTrue( $filter_applied ); + } +} From 5987e9bfb8c09862ebda1965285375f5679831fd Mon Sep 17 00:00:00 2001 From: Dmitry Merkushin Date: Tue, 9 Jan 2024 00:40:06 -0600 Subject: [PATCH 7/9] Fix linter issues --- tests/unit-tests/wpml/test-class-sensei-wpml.php | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/tests/unit-tests/wpml/test-class-sensei-wpml.php b/tests/unit-tests/wpml/test-class-sensei-wpml.php index eb38321f80..e66b063686 100644 --- a/tests/unit-tests/wpml/test-class-sensei-wpml.php +++ b/tests/unit-tests/wpml/test-class-sensei-wpml.php @@ -14,7 +14,7 @@ public function testSetLanguageDetailsWhenLessonCreated_WhenCalled_AppliesWpmlEl /* Arrange. */ $wpml = new Sensei_WPML(); - $filter_applied = false; + $filter_applied = false; $filter_funtction = function( $language_code, $element_data ) use ( &$filter_applied ) { $filter_applied = true; return $language_code; @@ -40,7 +40,7 @@ public function testSetLanguageDetailsWhenLessonCreated_WhenCalled_AppliesWpmlCu }; add_filter( 'wpml_element_language_code', $filter_language_code_funtction, 10, 2 ); - $filter_applied = false; + $filter_applied = false; $filter_funtction = function( $language_code ) use ( &$filter_applied ) { $filter_applied = true; return $language_code; @@ -61,7 +61,7 @@ public function testSetLanguageDetailsWhenLessonCreated_WhenCalled_AppliesWpmlSe /* Arrange. */ $wpml = new Sensei_WPML(); - $filter_applied = false; + $filter_applied = false; $filter_funtction = function( $data ) use ( &$filter_applied ) { $filter_applied = true; return $data; @@ -82,7 +82,7 @@ public function testSetLanguageDetailsWhenQuizCreated_WhenCalled_AppliesWpmlElem /* Arrange. */ $wpml = new Sensei_WPML(); - $filter_applied = false; + $filter_applied = false; $filter_funtction = function( $language_code, $element_data ) use ( &$filter_applied ) { $filter_applied = true; return $language_code; @@ -108,7 +108,7 @@ public function testSetLanguageDetailsWhenQuizCreated_WhenCalled_AppliesWpmlCurr }; add_filter( 'wpml_element_language_code', $filter_language_code_funtction, 10, 2 ); - $filter_applied = false; + $filter_applied = false; $filter_funtction = function( $language_code ) use ( &$filter_applied ) { $filter_applied = true; return $language_code; @@ -128,7 +128,7 @@ public function testSetLanguageDetailsWhenQuizCreated_WhenCalled_AppliesWpmlSetE /* Arrange. */ $wpml = new Sensei_WPML(); - $filter_applied = false; + $filter_applied = false; $filter_funtction = function( $data ) use ( &$filter_applied ) { $filter_applied = true; return $data; From 77b55e1d3d77e9d418fa60c1daf1da75281853e3 Mon Sep 17 00:00:00 2001 From: Dmitry Merkushin Date: Tue, 16 Jan 2024 14:05:18 -0600 Subject: [PATCH 8/9] Fix typos and documentation --- changelog/fix-wpml-save-course-structure | 2 +- includes/class-sensei-course-structure.php | 8 +-- includes/wpml/class-sensei-wpml.php | 11 ++-- .../wpml/test-class-sensei-wpml.php | 52 +++++++++---------- 4 files changed, 39 insertions(+), 34 deletions(-) diff --git a/changelog/fix-wpml-save-course-structure b/changelog/fix-wpml-save-course-structure index 6b6d67d469..e459b8cc36 100644 --- a/changelog/fix-wpml-save-course-structure +++ b/changelog/fix-wpml-save-course-structure @@ -1,4 +1,4 @@ Significance: patch Type: fixed -Add translations for lessons and quizzes that were created while saving the course structure +WPML compatibility fix: Add translations for lessons and quizzes that were created while saving the course structure. diff --git a/includes/class-sensei-course-structure.php b/includes/class-sensei-course-structure.php index 168b23ea7a..6206c2712b 100644 --- a/includes/class-sensei-course-structure.php +++ b/includes/class-sensei-course-structure.php @@ -531,8 +531,8 @@ private function create_lesson( array $item ) { * * @hook sensei_course_structure_lesson_created * - * @param int $lesson_id Lesson post ID. - * @param int $course_id Course post ID. + * @param {int} $lesson_id Lesson post ID. + * @param {int} $course_id Course post ID. */ do_action( 'sensei_course_structure_lesson_created', $lesson_id, $this->course_id ); @@ -574,8 +574,8 @@ private function create_quiz( int $lesson_id ) { * * @hook sensei_course_structure_quiz_created * - * @param int $quiz_id Quiz post ID. - * @param int $lesson_id Course post ID. + * @param {int} $quiz_id Quiz post ID. + * @param {int} $lesson_id Course post ID. */ do_action( 'sensei_course_structure_quiz_created', $quiz_id, $lesson_id ); } diff --git a/includes/wpml/class-sensei-wpml.php b/includes/wpml/class-sensei-wpml.php index 8d865bd90b..fbb8c31293 100644 --- a/includes/wpml/class-sensei-wpml.php +++ b/includes/wpml/class-sensei-wpml.php @@ -62,6 +62,9 @@ public function sensei_after_sending_email() { * Set language details for the lesson when it is created. * * @since $$next-version$$ + * + * @internal + * * @param int $lesson_id Lesson ID. * @param int $course_id Course ID. */ @@ -74,7 +77,7 @@ public function set_language_details_when_lesson_created( $lesson_id, $course_id null, array( 'element_id' => $course_id, - 'element_type' => 'post_course', + 'element_type' => 'course', ) ); if ( ! $language_code ) { @@ -96,10 +99,12 @@ public function set_language_details_when_lesson_created( $lesson_id, $course_id } /** - * Set language details for the lesson when it is created. + * Set language details for the quiz when it is created. * * @since $$next-version$$ * + * @internal + * * @param int $quiz_id Quiz ID. * @param int $lesson_id Lesson ID. */ @@ -112,7 +117,7 @@ public function set_language_details_when_quiz_created( $quiz_id, $lesson_id ) { null, array( 'element_id' => $lesson_id, - 'element_type' => 'post_lesson', + 'element_type' => 'lesson', ) ); if ( ! $language_code ) { diff --git a/tests/unit-tests/wpml/test-class-sensei-wpml.php b/tests/unit-tests/wpml/test-class-sensei-wpml.php index e66b063686..aaf8c5e2ae 100644 --- a/tests/unit-tests/wpml/test-class-sensei-wpml.php +++ b/tests/unit-tests/wpml/test-class-sensei-wpml.php @@ -10,23 +10,23 @@ * @covers \Sensei_WPML */ class Sensei_WPML_Test extends \WP_UnitTestCase { - public function testSetLanguageDetailsWhenLessonCreated_WhenCalled_AppliesWpmlElementLangugeCodeFilter() { + public function testSetLanguageDetailsWhenLessonCreated_WhenCalled_AppliesWpmlElementLanguageCodeFilter() { /* Arrange. */ $wpml = new Sensei_WPML(); $filter_applied = false; - $filter_funtction = function( $language_code, $element_data ) use ( &$filter_applied ) { + $filter_function = function( $language_code, $element_data ) use ( &$filter_applied ) { $filter_applied = true; return $language_code; }; - add_filter( 'wpml_element_language_code', $filter_funtction, 10, 2 ); + add_filter( 'wpml_element_language_code', $filter_function, 10, 2 ); /* Act. */ $wpml->set_language_details_when_lesson_created( 1, 2 ); /* Clean up & Assert. */ - remove_filter( 'wpml_element_language_code', $filter_funtction, 10 ); + remove_filter( 'wpml_element_language_code', $filter_function, 10 ); $this->assertTrue( $filter_applied ); } @@ -35,24 +35,24 @@ public function testSetLanguageDetailsWhenLessonCreated_WhenCalled_AppliesWpmlCu /* Arrange. */ $wpml = new Sensei_WPML(); - $filter_language_code_funtction = function( $language_code, $element_data ) use ( &$filter_applied ) { + $filter_language_code_function = function( $language_code, $element_data ) use ( &$filter_applied ) { return null; }; - add_filter( 'wpml_element_language_code', $filter_language_code_funtction, 10, 2 ); + add_filter( 'wpml_element_language_code', $filter_language_code_function, 10, 2 ); $filter_applied = false; - $filter_funtction = function( $language_code ) use ( &$filter_applied ) { + $filter_function = function( $language_code ) use ( &$filter_applied ) { $filter_applied = true; return $language_code; }; - add_filter( 'wpml_current_language', $filter_funtction, 10, 1 ); + add_filter( 'wpml_current_language', $filter_function, 10, 1 ); /* Act. */ $wpml->set_language_details_when_lesson_created( 1, 2 ); /* Clean up & Assert. */ - remove_filter( 'wpml_element_language_code', $filter_language_code_funtction, 10 ); - remove_filter( 'wpml_current_language', $filter_funtction, 10 ); + remove_filter( 'wpml_element_language_code', $filter_language_code_function, 10 ); + remove_filter( 'wpml_current_language', $filter_function, 10 ); $this->assertTrue( $filter_applied ); } @@ -62,39 +62,39 @@ public function testSetLanguageDetailsWhenLessonCreated_WhenCalled_AppliesWpmlSe $wpml = new Sensei_WPML(); $filter_applied = false; - $filter_funtction = function( $data ) use ( &$filter_applied ) { + $filter_function = function( $data ) use ( &$filter_applied ) { $filter_applied = true; return $data; }; - add_filter( 'wpml_set_element_language_details', $filter_funtction, 10, 1 ); + add_filter( 'wpml_set_element_language_details', $filter_function, 10, 1 ); /* Act. */ $wpml->set_language_details_when_lesson_created( 1, 2 ); /* Clean up & Assert. */ - remove_filter( 'wpml_set_element_language_details', $filter_funtction, 10 ); + remove_filter( 'wpml_set_element_language_details', $filter_function, 10 ); $this->assertTrue( $filter_applied ); } - public function testSetLanguageDetailsWhenQuizCreated_WhenCalled_AppliesWpmlElementLangugeCodeFilter() { + public function testSetLanguageDetailsWhenQuizCreated_WhenCalled_AppliesWpmlElementLanguageCodeFilter() { /* Arrange. */ $wpml = new Sensei_WPML(); $filter_applied = false; - $filter_funtction = function( $language_code, $element_data ) use ( &$filter_applied ) { + $filter_function = function( $language_code, $element_data ) use ( &$filter_applied ) { $filter_applied = true; return $language_code; }; - add_filter( 'wpml_element_language_code', $filter_funtction, 10, 2 ); + add_filter( 'wpml_element_language_code', $filter_function, 10, 2 ); /* Act. */ $wpml->set_language_details_when_quiz_created( 1, 2 ); /* Clean up & Assert. */ - remove_filter( 'wpml_element_language_code', $filter_funtction, 10 ); + remove_filter( 'wpml_element_language_code', $filter_function, 10 ); $this->assertTrue( $filter_applied ); } @@ -103,24 +103,24 @@ public function testSetLanguageDetailsWhenQuizCreated_WhenCalled_AppliesWpmlCurr /* Arrange. */ $wpml = new Sensei_WPML(); - $filter_language_code_funtction = function( $language_code, $element_data ) use ( &$filter_applied ) { + $filter_language_code_function = function( $language_code, $element_data ) use ( &$filter_applied ) { return null; }; - add_filter( 'wpml_element_language_code', $filter_language_code_funtction, 10, 2 ); + add_filter( 'wpml_element_language_code', $filter_language_code_function, 10, 2 ); $filter_applied = false; - $filter_funtction = function( $language_code ) use ( &$filter_applied ) { + $filter_function = function( $language_code ) use ( &$filter_applied ) { $filter_applied = true; return $language_code; }; - add_filter( 'wpml_current_language', $filter_funtction, 10, 1 ); + add_filter( 'wpml_current_language', $filter_function, 10, 1 ); /* Act. */ $wpml->set_language_details_when_quiz_created( 1, 2 ); /* Clean up & Assert. */ - remove_filter( 'wpml_element_language_code', $filter_language_code_funtction, 10 ); - remove_filter( 'wpml_current_language', $filter_funtction, 10 ); + remove_filter( 'wpml_element_language_code', $filter_language_code_function, 10 ); + remove_filter( 'wpml_current_language', $filter_function, 10 ); $this->assertTrue( $filter_applied ); } @@ -129,18 +129,18 @@ public function testSetLanguageDetailsWhenQuizCreated_WhenCalled_AppliesWpmlSetE $wpml = new Sensei_WPML(); $filter_applied = false; - $filter_funtction = function( $data ) use ( &$filter_applied ) { + $filter_function = function( $data ) use ( &$filter_applied ) { $filter_applied = true; return $data; }; - add_filter( 'wpml_set_element_language_details', $filter_funtction, 10, 1 ); + add_filter( 'wpml_set_element_language_details', $filter_function, 10, 1 ); /* Act. */ $wpml->set_language_details_when_quiz_created( 1, 2 ); /* Clean up & Assert. */ - remove_filter( 'wpml_set_element_language_details', $filter_funtction, 10 ); + remove_filter( 'wpml_set_element_language_details', $filter_function, 10 ); $this->assertTrue( $filter_applied ); } From 179ff3547ce6bf78667588a3347af80417d322e9 Mon Sep 17 00:00:00 2001 From: Dmitry Merkushin Date: Tue, 16 Jan 2024 14:09:44 -0600 Subject: [PATCH 9/9] Fix linter issues --- tests/unit-tests/wpml/test-class-sensei-wpml.php | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/tests/unit-tests/wpml/test-class-sensei-wpml.php b/tests/unit-tests/wpml/test-class-sensei-wpml.php index aaf8c5e2ae..fb0b2c30d3 100644 --- a/tests/unit-tests/wpml/test-class-sensei-wpml.php +++ b/tests/unit-tests/wpml/test-class-sensei-wpml.php @@ -14,7 +14,7 @@ public function testSetLanguageDetailsWhenLessonCreated_WhenCalled_AppliesWpmlEl /* Arrange. */ $wpml = new Sensei_WPML(); - $filter_applied = false; + $filter_applied = false; $filter_function = function( $language_code, $element_data ) use ( &$filter_applied ) { $filter_applied = true; return $language_code; @@ -40,7 +40,7 @@ public function testSetLanguageDetailsWhenLessonCreated_WhenCalled_AppliesWpmlCu }; add_filter( 'wpml_element_language_code', $filter_language_code_function, 10, 2 ); - $filter_applied = false; + $filter_applied = false; $filter_function = function( $language_code ) use ( &$filter_applied ) { $filter_applied = true; return $language_code; @@ -61,7 +61,7 @@ public function testSetLanguageDetailsWhenLessonCreated_WhenCalled_AppliesWpmlSe /* Arrange. */ $wpml = new Sensei_WPML(); - $filter_applied = false; + $filter_applied = false; $filter_function = function( $data ) use ( &$filter_applied ) { $filter_applied = true; return $data; @@ -82,7 +82,7 @@ public function testSetLanguageDetailsWhenQuizCreated_WhenCalled_AppliesWpmlElem /* Arrange. */ $wpml = new Sensei_WPML(); - $filter_applied = false; + $filter_applied = false; $filter_function = function( $language_code, $element_data ) use ( &$filter_applied ) { $filter_applied = true; return $language_code; @@ -108,7 +108,7 @@ public function testSetLanguageDetailsWhenQuizCreated_WhenCalled_AppliesWpmlCurr }; add_filter( 'wpml_element_language_code', $filter_language_code_function, 10, 2 ); - $filter_applied = false; + $filter_applied = false; $filter_function = function( $language_code ) use ( &$filter_applied ) { $filter_applied = true; return $language_code; @@ -128,7 +128,7 @@ public function testSetLanguageDetailsWhenQuizCreated_WhenCalled_AppliesWpmlSetE /* Arrange. */ $wpml = new Sensei_WPML(); - $filter_applied = false; + $filter_applied = false; $filter_function = function( $data ) use ( &$filter_applied ) { $filter_applied = true; return $data;