Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

WPML: Translate quizzes with questions #7480

Merged
merged 32 commits into from
Mar 15, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
32 commits
Select commit Hold shift + click to select a range
5c37ea6
Add config for course-outline-lesson block
merkushin Dec 18, 2023
6cf15ee
Try to configure blocks
merkushin Jan 21, 2024
79ae9a4
Fix course outline for a course translation
merkushin Jan 26, 2024
7fcd4f4
Create translations for lessons and update relations for new lessons
merkushin Jan 31, 2024
99ed118
Restore upadate lesson properties on lesson translation created
merkushin Feb 1, 2024
08aa6c6
Add changelog entry
merkushin Feb 1, 2024
4e0d017
Fix linter issues
merkushin Feb 1, 2024
7e9e80b
Fix psalm issues
merkushin Feb 1, 2024
9f89730
Fix docblock return type
merkushin Feb 1, 2024
05875ec
Ignore issues in legacy code
merkushin Feb 1, 2024
094a53e
Add tests for wpml hooks
merkushin Feb 1, 2024
125ac82
Test lesson course was updated for translated lessons
merkushin Feb 1, 2024
390d1c8
Merge branch 'trunk' into fix/wpml-save-dependent-posts
merkushin Feb 16, 2024
1930766
Fix linter issues in tests
merkushin Feb 16, 2024
cf82b25
Merge branch 'trunk' into fix/wpml-save-dependent-posts
merkushin Feb 16, 2024
abf49e9
Handle translations for quizzes and questions, refactor code structure
merkushin Feb 19, 2024
54a8cd7
Add hooks, fix some legacy linter issues
merkushin Feb 19, 2024
0c1fd79
Update WPML instance, fix legacy linter issues
merkushin Feb 19, 2024
fc79ae1
Update Psal baseline
merkushin Feb 19, 2024
94030f8
Add config for question block
merkushin Feb 19, 2024
4dc22ce
Add/fix some tests for WPML
merkushin Feb 19, 2024
9b5da48
Add changelog entry
merkushin Feb 19, 2024
232edb2
Update tests
merkushin Feb 20, 2024
567fb31
Update Psal baseline
merkushin Feb 20, 2024
3521a24
Update Psal baseline
merkushin Feb 20, 2024
7f84dda
Update quiz id for questions
merkushin Feb 20, 2024
abaa44b
Merge branch 'trunk' into fix/wpml-quiz
merkushin Feb 22, 2024
ee4c7d0
Update lesson relations for existing lessons as well
merkushin Feb 22, 2024
e5ebe8a
Merge branch 'trunk' into fix/wpml-quiz
merkushin Mar 13, 2024
1320cbe
Rename the hook on quiz create
merkushin Mar 13, 2024
1446661
Save lesson order for translated lessons
merkushin Mar 14, 2024
eaa9733
Fix usage of do_action_deprecated
merkushin Mar 14, 2024
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Jump to
Jump to file
Failed to load files.
Diff view
Diff view
4 changes: 4 additions & 0 deletions changelog/fix-wpml-quiz
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
Significance: patch
Type: fixed

WPML: Create quiz and question translations, update relations
147 changes: 23 additions & 124 deletions config/psalm/psalm-baseline.xml
Original file line number Diff line number Diff line change
Expand Up @@ -26,10 +26,6 @@
<MissingFile occurrences="1">
<code>require_once ABSPATH . 'wp-admin/includes/plugin.php'</code>
</MissingFile>
<MissingPropertyType occurrences="2">
<code>Sensei()-&gt;version</code>
<code>Sensei()-&gt;version</code>
</MissingPropertyType>
<PossiblyFalseArgument occurrences="3">
<code>$plugin_version</code>
<code>$plugin_version</code>
Expand Down Expand Up @@ -123,9 +119,6 @@
</UndefinedDocblockClass>
</file>
<file src="includes/admin/class-sensei-learners-admin-bulk-actions-controller.php">
<MissingPropertyType occurrences="1">
<code>Sensei()-&gt;version</code>
</MissingPropertyType>
<PossiblyNullArgument occurrences="1">
<code>$edit_course_cap</code>
</PossiblyNullArgument>
Expand Down Expand Up @@ -318,9 +311,6 @@
<code>! self::$instance</code>
<code>self::$instance</code>
</DocblockTypeContradiction>
<MissingPropertyType occurrences="1">
<code>Sensei()-&gt;plugin_path</code>
</MissingPropertyType>
<PossiblyFalseArgument occurrences="1">
<code>$installed_time</code>
</PossiblyFalseArgument>
Expand Down Expand Up @@ -949,10 +939,9 @@
<code>$post_id</code>
<code>$settings</code>
</MissingParamType>
<MissingPropertyType occurrences="3">
<MissingPropertyType occurrences="2">
<code>$course_order_page_slug</code>
<code>$lesson_order_page_slug</code>
<code>Sensei()-&gt;plugin_url</code>
</MissingPropertyType>
<PossiblyInvalidArgument occurrences="2">
<code>$data</code>
Expand Down Expand Up @@ -1634,16 +1623,6 @@
<code>$post_id</code>
<code>$title</code>
</MissingParamType>
<MissingPropertyType occurrences="8">
<code>Sensei()-&gt;template_url</code>
<code>Sensei()-&gt;template_url</code>
<code>Sensei()-&gt;template_url</code>
<code>Sensei()-&gt;template_url</code>
<code>Sensei()-&gt;template_url</code>
<code>Sensei()-&gt;template_url</code>
<code>Sensei()-&gt;token</code>
<code>Sensei()-&gt;token</code>
</MissingPropertyType>
<PossibleRawObjectIteration occurrences="1">
<code>$tags</code>
</PossibleRawObjectIteration>
Expand Down Expand Up @@ -1802,11 +1781,10 @@
<code>$user_id</code>
<code>$which</code>
</MissingParamType>
<MissingPropertyType occurrences="4">
<MissingPropertyType occurrences="3">
<code>$file</code>
<code>$name</code>
<code>$page_slug</code>
<code>Sensei()-&gt;token</code>
</MissingPropertyType>
<PossiblyFalseArgument occurrences="1">
<code>wp_json_encode( $args )</code>
Expand Down Expand Up @@ -1867,9 +1845,6 @@
<InvalidGlobal occurrences="1">
<code>global $current_user;</code>
</InvalidGlobal>
<MissingPropertyType occurrences="1">
<code>Sensei()-&gt;token</code>
</MissingPropertyType>
</file>
<file src="includes/class-sensei-learner.php">
<DocblockTypeContradiction occurrences="3">
Expand All @@ -1893,9 +1868,7 @@
</PossiblyInvalidPropertyFetch>
</file>
<file src="includes/class-sensei-lesson.php">
<ArgumentTypeCoercion occurrences="6">
<code>$post_type_args</code>
<code>$post_type_args</code>
<ArgumentTypeCoercion occurrences="4">
<code>$qargs</code>
<code>$questions_array</code>
<code>'WP_Post'</code>
Expand Down Expand Up @@ -1970,7 +1943,7 @@
<code>$user_id</code>
<code>array( $width, $height )</code>
</InvalidScalarArgument>
<MissingParamType occurrences="39">
<MissingParamType occurrences="38">
<code>$column_name</code>
<code>$content</code>
<code>$context</code>
Expand All @@ -1988,7 +1961,6 @@
<code>$multiple_data</code>
<code>$page</code>
<code>$post_id</code>
<code>$post_id</code>
<code>$question_category</code>
<code>$question_counter</code>
<code>$question_counter</code>
Expand All @@ -2011,11 +1983,6 @@
<code>$user_id</code>
<code>$widget</code>
</MissingParamType>
<MissingPropertyType occurrences="3">
<code>$allowed_html</code>
<code>$meta_fields</code>
<code>$token</code>
</MissingPropertyType>
<NullableReturnStatement occurrences="3">
<code>$this-&gt;get_videopress_thumbnail( $url )</code>
<code>$this-&gt;get_vimeo_thumbnail( $url )</code>
Expand Down Expand Up @@ -2102,14 +2069,20 @@
<code>is_array( $question_data )</code>
<code>is_countable( $questions_array )</code>
</RedundantCondition>
<RedundantConditionGivenDocblockType occurrences="6">
<RedundantConditionGivenDocblockType occurrences="9">
<code>! is_wp_error( $multiple_id )</code>
<code>$module_term</code>
<code>$module_term</code>
<code>- 1 !== $new_course</code>
<code>-1 !== $new_complexity</code>
<code>is_array( $data ) &amp;&amp; count( $data ) &gt; 0</code>
<code>is_array( $this-&gt;meta_fields )</code>
<code>isset( $this-&gt;meta_fields ) &amp;&amp; is_array( $this-&gt;meta_fields )</code>
<code>isset( $this-&gt;meta_fields ) &amp;&amp; is_array( $this-&gt;meta_fields )</code>
</RedundantConditionGivenDocblockType>
<RedundantPropertyInitializationCheck occurrences="1">
<code>isset( $this-&gt;meta_fields )</code>
</RedundantPropertyInitializationCheck>
<TypeDoesNotContainType occurrences="2">
<code>! isset( $row_counter )</code>
<code>0</code>
Expand Down Expand Up @@ -2292,15 +2265,10 @@
<code>$title</code>
<code>$user_id</code>
</MissingParamType>
<MissingPropertyType occurrences="8">
<MissingPropertyType occurrences="3">
<code>$file</code>
<code>$order_page_slug</code>
<code>$taxonomy</code>
<code>Sensei()-&gt;template_url</code>
<code>Sensei()-&gt;template_url</code>
<code>Sensei()-&gt;template_url</code>
<code>Sensei()-&gt;version</code>
<code>Sensei()-&gt;version</code>
</MissingPropertyType>
<ParadoxicalCondition occurrences="1">
<code>! $modules || empty( $modules )</code>
Expand Down Expand Up @@ -2756,9 +2724,6 @@
<code>$new_value</code>
<code>$setting</code>
</MissingParamType>
<MissingPropertyType occurrences="1">
<code>Sensei()-&gt;version</code>
</MissingPropertyType>
<PossiblyFalseArgument occurrences="2">
<code>\Sensei()-&gt;install_version</code>
<code>wp_json_encode( $inline_data )</code>
Expand Down Expand Up @@ -2898,29 +2863,6 @@
<code>$template_name</code>
<code>$template_name</code>
</MissingParamType>
<MissingPropertyType occurrences="21">
<code>Sensei()-&gt;template_url</code>
<code>Sensei()-&gt;template_url</code>
<code>Sensei()-&gt;template_url</code>
<code>Sensei()-&gt;template_url</code>
<code>Sensei()-&gt;template_url</code>
<code>Sensei()-&gt;template_url</code>
<code>Sensei()-&gt;template_url</code>
<code>Sensei()-&gt;template_url</code>
<code>Sensei()-&gt;template_url</code>
<code>Sensei()-&gt;template_url</code>
<code>Sensei()-&gt;template_url</code>
<code>Sensei()-&gt;template_url</code>
<code>Sensei()-&gt;template_url</code>
<code>Sensei()-&gt;template_url</code>
<code>Sensei()-&gt;template_url</code>
<code>Sensei()-&gt;template_url</code>
<code>Sensei()-&gt;template_url</code>
<code>Sensei()-&gt;template_url</code>
<code>Sensei()-&gt;template_url</code>
<code>Sensei()-&gt;template_url</code>
<code>Sensei()-&gt;template_url</code>
</MissingPropertyType>
<PossiblyFalseOperand occurrences="1">
<code>get_permalink( $post-&gt;ID )</code>
</PossiblyFalseOperand>
Expand Down Expand Up @@ -2977,12 +2919,6 @@
<InvalidReturnType occurrences="1">
<code>DateTimeImmutable[]</code>
</InvalidReturnType>
<MissingPropertyType occurrences="4">
<code>Sensei()-&gt;version</code>
<code>Sensei()-&gt;version</code>
<code>Sensei()-&gt;version</code>
<code>Sensei()-&gt;version</code>
</MissingPropertyType>
<PossiblyNullArgument occurrences="4">
<code>$this-&gt;current_version</code>
<code>$this-&gt;current_version</code>
Expand Down Expand Up @@ -3074,10 +3010,6 @@
<code>$fields</code>
<code>$fields</code>
</MissingClosureParamType>
<MissingPropertyType occurrences="2">
<code>Sensei()-&gt;version</code>
<code>Sensei()-&gt;version</code>
</MissingPropertyType>
<TypeDoesNotContainType occurrences="1">
<code>false</code>
</TypeDoesNotContainType>
Expand Down Expand Up @@ -3157,9 +3089,6 @@
<code>$trigger_completion_action</code>
<code>$user_id</code>
</MissingParamType>
<MissingPropertyType occurrences="1">
<code>Sensei()-&gt;plugin_url</code>
</MissingPropertyType>
<PossibleRawObjectIteration occurrences="1">
<code>$attributes</code>
</PossibleRawObjectIteration>
Expand Down Expand Up @@ -3264,38 +3193,15 @@
<code>$lesson_single_thumbnail['height']</code>
<code>$lesson_single_thumbnail['width']</code>
</InvalidArrayOffset>
<InvalidDocblockParamName occurrences="1">
<code>$file</code>
</InvalidDocblockParamName>
<InvalidGlobal occurrences="1">
<code>global $sensei_modules;</code>
</InvalidGlobal>
<InvalidScalarArgument occurrences="2">
<code>$is_upgrade</code>
<code>$lesson_id</code>
</InvalidScalarArgument>
<MissingDocblockType occurrences="1">
<code>private $id;</code>
</MissingDocblockType>
<MissingParamType occurrences="5">
<code>$args</code>
<code>$args</code>
<code>$class_name</code>
<code>$main_plugin_file_name</code>
<code>$plugin</code>
</MissingParamType>
<MissingPropertyType occurrences="11">
<code>$id</code>
<code>$plugin_path</code>
<code>$plugin_url</code>
<code>$template_url</code>
<code>$this-&gt;plugin_path</code>
<code>$this-&gt;plugin_path</code>
<code>$this-&gt;plugin_url</code>
<MissingPropertyType occurrences="1">
<code>$this-&gt;post_types-&gt;role_caps</code>
<code>$this-&gt;version</code>
<code>$token</code>
<code>$version</code>
</MissingPropertyType>
<PossiblyFalseArgument occurrences="2">
<code>get_the_ID()</code>
Expand Down Expand Up @@ -3351,6 +3257,9 @@
<RedundantCondition occurrences="1">
<code>'Sensei_Modules' !== $class</code>
</RedundantCondition>
<RedundantPropertyInitializationCheck occurrences="1">
<code>isset( $this-&gt;version )</code>
</RedundantPropertyInitializationCheck>
<TooManyArguments occurrences="1">
<code>init</code>
</TooManyArguments>
Expand All @@ -3364,7 +3273,7 @@
<code>require_once $this-&gt;resolve_path( 'includes/class-sensei-cli.php' )</code>
<code>require_once $this-&gt;resolve_path( 'includes/hooks/template.php' )</code>
<code>require_once $this-&gt;resolve_path( 'includes/template-functions.php' )</code>
<code>require_once dirname( __FILE__ ) . '/class-' . esc_attr( $this-&gt;token ) . '-' . esc_attr( $class_name ) . '.php'</code>
<code>require_once __DIR__ . '/class-' . esc_attr( (string) $this-&gt;token ) . '-' . esc_attr( $class_name ) . '.php'</code>
</UnresolvableInclude>
</file>
<file src="includes/cli/class-sensei-db-seed-command.php">
Expand Down Expand Up @@ -3555,9 +3464,6 @@
<code>! self::$instance</code>
<code>self::$instance</code>
</DocblockTypeContradiction>
<MissingPropertyType occurrences="1">
<code>Sensei()-&gt;plugin_url</code>
</MissingPropertyType>
<PossiblyFalseArgument occurrences="3">
<code>get_permalink( $module_lessons[0] )</code>
<code>get_post_type()</code>
Expand Down Expand Up @@ -5726,11 +5632,9 @@
<code>$question_type</code>
<code>$template_name</code>
</MissingParamType>
<MissingPropertyType occurrences="4">
<MissingPropertyType occurrences="2">
<code>Sensei()-&gt;modules-&gt;taxonomy</code>
<code>Sensei()-&gt;modules-&gt;taxonomy</code>
<code>Sensei()-&gt;template_url</code>
<code>Sensei()-&gt;template_url</code>
</MissingPropertyType>
<PossiblyFalseArgument occurrences="1">
<code>get_permalink( $course_id )</code>
Expand Down Expand Up @@ -5760,11 +5664,6 @@
<code>$item-&gt;term_id</code>
</UndefinedMagicPropertyFetch>
</file>
<file src="includes/theme-integrations/theme-integration-loader.php">
<MissingPropertyType occurrences="1">
<code>Sensei()-&gt;plugin_path</code>
</MissingPropertyType>
</file>
<file src="includes/unsupported-theme-handlers/class-sensei-unsupported-theme-handler-course-archive.php">
<DocblockTypeContradiction occurrences="1">
<code>empty( $post_to_copy )</code>
Expand Down Expand Up @@ -5813,11 +5712,6 @@
<code>$post_to_copy</code>
</ParamNameMismatch>
</file>
<file src="includes/unsupported-theme-handlers/class-sensei-unsupported-theme-handler-lesson-tag-archive.php">
<MissingPropertyType occurrences="1">
<code>Sensei()-&gt;template_url</code>
</MissingPropertyType>
</file>
<file src="includes/unsupported-theme-handlers/class-sensei-unsupported-theme-handler-module.php">
<InvalidScalarArgument occurrences="1">
<code>$course_id</code>
Expand Down Expand Up @@ -5892,6 +5786,11 @@
<code>(int) $offset</code>
</RedundantCast>
</file>
<file src="includes/wpml/class-language-details.php">
<DocblockTypeContradiction occurrences="1">
<code>is_wp_error( $question_id )</code>
</DocblockTypeContradiction>
</file>
<file src="sensei-lms.php">
<InvalidGlobal occurrences="1">
<code>global $woothemes_sensei;</code>
Expand Down