From 2d11b3e14098741cb9ffeb7d50d3381696425c8a Mon Sep 17 00:00:00 2001 From: ferran Date: Thu, 31 Jul 2025 23:26:09 +0200 Subject: [PATCH] MDL-85598 course: review activities purposes values --- public/lib/tests/moodlelib_test.php | 150 ++++++++++++++++++++++++++++ public/mod/assign/lib.php | 50 ++++------ public/mod/bigbluebuttonbn/lib.php | 12 +-- public/mod/book/lib.php | 27 +++-- public/mod/choice/lib.php | 39 +++----- public/mod/data/lib.php | 31 +++--- public/mod/feedback/lib.php | 27 +++-- public/mod/folder/lib.php | 27 +++-- public/mod/forum/lib.php | 37 ++++--- public/mod/glossary/lib.php | 32 +++--- public/mod/h5pactivity/lib.php | 38 +++---- public/mod/imscp/lib.php | 29 +++--- public/mod/label/lib.php | 29 +++--- public/mod/lesson/lib.php | 38 +++---- public/mod/lti/lib.php | 29 +++--- public/mod/page/lib.php | 27 +++-- public/mod/qbank/lib.php | 38 ++++--- public/mod/quiz/lib.php | 33 +++--- public/mod/resource/lib.php | 27 +++-- public/mod/scorm/lib.php | 29 +++--- public/mod/url/lib.php | 27 +++-- public/mod/wiki/lib.php | 41 +++----- public/mod/workshop/lib.php | 26 ++--- 23 files changed, 453 insertions(+), 390 deletions(-) diff --git a/public/lib/tests/moodlelib_test.php b/public/lib/tests/moodlelib_test.php index b395cee84d4..c8d4ef87e99 100644 --- a/public/lib/tests/moodlelib_test.php +++ b/public/lib/tests/moodlelib_test.php @@ -5806,4 +5806,154 @@ EOT; $pluginlist = get_plugin_list_with_function('fake', 'test_callback'); $this->assertArrayNotHasKey('fake_fullfeatured', $pluginlist); } + + /** + * Test that plugin_supports returns the correct purpose values for activity plugins. + * + * @dataProvider provider_plugin_supports_purpose + * @param string $modname + * @param string $purpose + * @param string|null $otherpurpose + * @return void + */ + public function test_plugin_supports_purpose( + string $modname, + string $purpose, + ?string $otherpurpose + ): void { + $this->assertEquals( + $purpose, + plugin_supports('mod', $modname, FEATURE_MOD_PURPOSE), + ); + + $this->assertEquals( + $otherpurpose, + plugin_supports('mod', $modname, FEATURE_MOD_OTHERPURPOSE), + ); + } + + /** + * Data provider for plugin_supports_purpose tests. + * + * @return array + */ + public static function provider_plugin_supports_purpose(): array { + return [ + 'assign' => [ + 'modname' => 'assign', + 'purpose' => MOD_PURPOSE_ASSESSMENT, + 'otherpurpose' => null, + ], + 'bigbluebuttonbn' => [ + 'modname' => 'bigbluebuttonbn', + 'purpose' => MOD_PURPOSE_COMMUNICATION, + 'otherpurpose' => null, + ], + 'book' => [ + 'modname' => 'book', + 'purpose' => MOD_PURPOSE_CONTENT, + 'otherpurpose' => null, + ], + 'choice' => [ + 'modname' => 'choice', + 'purpose' => MOD_PURPOSE_COMMUNICATION, + 'otherpurpose' => MOD_PURPOSE_COLLABORATION, + ], + 'data' => [ + 'modname' => 'data', + 'purpose' => MOD_PURPOSE_COLLABORATION, + 'otherpurpose' => null, + ], + 'feedback' => [ + 'modname' => 'feedback', + 'purpose' => MOD_PURPOSE_COMMUNICATION, + 'otherpurpose' => null, + ], + 'folder' => [ + 'modname' => 'folder', + 'purpose' => MOD_PURPOSE_CONTENT, + 'otherpurpose' => null, + ], + 'forum' => [ + 'modname' => 'forum', + 'purpose' => MOD_PURPOSE_COLLABORATION, + 'otherpurpose' => MOD_PURPOSE_COMMUNICATION, + ], + 'glossary' => [ + 'modname' => 'glossary', + 'purpose' => MOD_PURPOSE_COLLABORATION, + 'otherpurpose' => MOD_PURPOSE_CONTENT, + ], + 'h5pactivity' => [ + 'modname' => 'h5pactivity', + 'purpose' => MOD_PURPOSE_INTERACTIVECONTENT, + 'otherpurpose' => MOD_PURPOSE_ASSESSMENT, + ], + 'imscp' => [ + 'modname' => 'imscp', + 'purpose' => MOD_PURPOSE_INTERACTIVECONTENT, + 'otherpurpose' => MOD_PURPOSE_CONTENT, + ], + 'label' => [ + 'modname' => 'label', + 'purpose' => MOD_PURPOSE_CONTENT, + 'otherpurpose' => null, + ], + 'lesson' => [ + 'modname' => 'lesson', + 'purpose' => MOD_PURPOSE_INTERACTIVECONTENT, + 'otherpurpose' => MOD_PURPOSE_ASSESSMENT, + ], + 'lti' => [ + 'modname' => 'lti', + 'purpose' => MOD_PURPOSE_OTHER, + 'otherpurpose' => null, + ], + 'page' => [ + 'modname' => 'page', + 'purpose' => MOD_PURPOSE_CONTENT, + 'otherpurpose' => null, + ], + 'qbank' => [ + 'modname' => 'qbank', + 'purpose' => MOD_PURPOSE_CONTENT, + 'otherpurpose' => null, + ], + 'quiz' => [ + 'modname' => 'quiz', + 'purpose' => MOD_PURPOSE_ASSESSMENT, + 'otherpurpose' => null, + ], + 'resource' => [ + 'modname' => 'resource', + 'purpose' => MOD_PURPOSE_CONTENT, + 'otherpurpose' => null, + ], + 'scorm' => [ + 'modname' => 'scorm', + 'purpose' => MOD_PURPOSE_INTERACTIVECONTENT, + 'otherpurpose' => MOD_PURPOSE_CONTENT, + ], + 'subsection' => [ + 'modname' => 'subsection', + 'purpose' => MOD_PURPOSE_CONTENT, + 'otherpurpose' => null, + ], + 'url' => [ + 'modname' => 'url', + 'purpose' => MOD_PURPOSE_CONTENT, + 'otherpurpose' => null, + ], + 'wiki' => [ + 'modname' => 'wiki', + 'purpose' => MOD_PURPOSE_COLLABORATION, + 'otherpurpose' => null, + ], + 'workshop' => [ + 'modname' => 'workshop', + 'purpose' => MOD_PURPOSE_ASSESSMENT, + 'otherpurpose' => MOD_PURPOSE_COLLABORATION, + ], + ]; + } } diff --git a/public/mod/assign/lib.php b/public/mod/assign/lib.php index 72b0d7d2353..11b831ee715 100644 --- a/public/mod/assign/lib.php +++ b/public/mod/assign/lib.php @@ -369,39 +369,23 @@ function assign_update_events($assign, $override = null) { * @return mixed True if module supports feature, false if not, null if doesn't know or string for the module purpose. */ function assign_supports($feature) { - switch($feature) { - case FEATURE_GROUPS: - return true; - case FEATURE_GROUPINGS: - return true; - case FEATURE_MOD_INTRO: - return true; - case FEATURE_COMPLETION_TRACKS_VIEWS: - return true; - case FEATURE_COMPLETION_HAS_RULES: - return true; - case FEATURE_GRADE_HAS_GRADE: - return true; - case FEATURE_GRADE_HAS_PENALTY: - return true; - case FEATURE_GRADE_OUTCOMES: - return true; - case FEATURE_BACKUP_MOODLE2: - return true; - case FEATURE_SHOW_DESCRIPTION: - return true; - case FEATURE_ADVANCED_GRADING: - return true; - case FEATURE_PLAGIARISM: - return true; - case FEATURE_COMMENT: - return true; - case FEATURE_MOD_PURPOSE: - return MOD_PURPOSE_ASSESSMENT; - - default: - return null; - } + return match ($feature) { + FEATURE_GROUPS => true, + FEATURE_GROUPINGS => true, + FEATURE_MOD_INTRO => true, + FEATURE_COMPLETION_TRACKS_VIEWS => true, + FEATURE_COMPLETION_HAS_RULES => true, + FEATURE_GRADE_HAS_GRADE => true, + FEATURE_GRADE_HAS_PENALTY => true, + FEATURE_GRADE_OUTCOMES => true, + FEATURE_BACKUP_MOODLE2 => true, + FEATURE_SHOW_DESCRIPTION => true, + FEATURE_ADVANCED_GRADING => true, + FEATURE_PLAGIARISM => true, + FEATURE_COMMENT => true, + FEATURE_MOD_PURPOSE => MOD_PURPOSE_ASSESSMENT, + default => null, + }; } /** diff --git a/public/mod/bigbluebuttonbn/lib.php b/public/mod/bigbluebuttonbn/lib.php index 5a8af92546c..b4de4ce6c66 100644 --- a/public/mod/bigbluebuttonbn/lib.php +++ b/public/mod/bigbluebuttonbn/lib.php @@ -61,10 +61,7 @@ global $CFG; * @uses FEATURE_SHOW_DESCRIPTION */ function bigbluebuttonbn_supports($feature) { - if (!$feature) { - return null; - } - $features = [ + return match ($feature) { FEATURE_IDNUMBER => true, FEATURE_GROUPS => true, FEATURE_GROUPINGS => true, @@ -76,11 +73,8 @@ function bigbluebuttonbn_supports($feature) { FEATURE_GRADE_OUTCOMES => false, FEATURE_SHOW_DESCRIPTION => true, FEATURE_MOD_PURPOSE => MOD_PURPOSE_COMMUNICATION, - ]; - if (isset($features[(string) $feature])) { - return $features[$feature]; - } - return null; + default => null, + }; } /** diff --git a/public/mod/book/lib.php b/public/mod/book/lib.php index d798a59571b..0b039acd519 100644 --- a/public/mod/book/lib.php +++ b/public/mod/book/lib.php @@ -273,20 +273,19 @@ function book_get_post_actions() { * @return mixed True if module supports feature, false if not, null if doesn't know or string for the module purpose. */ function book_supports($feature) { - switch($feature) { - case FEATURE_MOD_ARCHETYPE: return MOD_ARCHETYPE_RESOURCE; - case FEATURE_GROUPS: return false; - case FEATURE_GROUPINGS: return false; - case FEATURE_MOD_INTRO: return true; - case FEATURE_COMPLETION_TRACKS_VIEWS: return true; - case FEATURE_GRADE_HAS_GRADE: return false; - case FEATURE_GRADE_OUTCOMES: return false; - case FEATURE_BACKUP_MOODLE2: return true; - case FEATURE_SHOW_DESCRIPTION: return true; - case FEATURE_MOD_PURPOSE: return MOD_PURPOSE_CONTENT; - - default: return null; - } + return match ($feature) { + FEATURE_MOD_ARCHETYPE => MOD_ARCHETYPE_RESOURCE, + FEATURE_GROUPS => false, + FEATURE_GROUPINGS => false, + FEATURE_MOD_INTRO => true, + FEATURE_COMPLETION_TRACKS_VIEWS => true, + FEATURE_GRADE_HAS_GRADE => false, + FEATURE_GRADE_OUTCOMES => false, + FEATURE_BACKUP_MOODLE2 => true, + FEATURE_SHOW_DESCRIPTION => true, + FEATURE_MOD_PURPOSE => MOD_PURPOSE_CONTENT, + default => null, + }; } /** diff --git a/public/mod/choice/lib.php b/public/mod/choice/lib.php index de434cf8a2c..110fb105d8b 100644 --- a/public/mod/choice/lib.php +++ b/public/mod/choice/lib.php @@ -828,31 +828,20 @@ function choice_get_response_data($choice, $cm, $groupmode, $onlyactive, ?int $g * @return null|true|string True if module supports feature, false if not, null if doesn't know or string for the module purpose. */ function choice_supports($feature) { - switch ($feature) { - case FEATURE_GROUPS: - return true; - case FEATURE_GROUPINGS: - return true; - case FEATURE_MOD_INTRO: - return true; - case FEATURE_COMPLETION_TRACKS_VIEWS: - return true; - case FEATURE_COMPLETION_HAS_RULES: - return true; - case FEATURE_GRADE_HAS_GRADE: - return false; - case FEATURE_GRADE_OUTCOMES: - return false; - case FEATURE_BACKUP_MOODLE2: - return true; - case FEATURE_SHOW_DESCRIPTION: - return true; - case FEATURE_MOD_PURPOSE: - return MOD_PURPOSE_COMMUNICATION; - - default: - return null; - } + return match ($feature) { + FEATURE_GROUPS => true, + FEATURE_GROUPINGS => true, + FEATURE_MOD_INTRO => true, + FEATURE_COMPLETION_TRACKS_VIEWS => true, + FEATURE_COMPLETION_HAS_RULES => true, + FEATURE_GRADE_HAS_GRADE => false, + FEATURE_GRADE_OUTCOMES => false, + FEATURE_BACKUP_MOODLE2 => true, + FEATURE_SHOW_DESCRIPTION => true, + FEATURE_MOD_PURPOSE => MOD_PURPOSE_COMMUNICATION, + FEATURE_MOD_OTHERPURPOSE => MOD_PURPOSE_COLLABORATION, + default => null, + }; } /** diff --git a/public/mod/data/lib.php b/public/mod/data/lib.php index 9e0203f2537..af45d5dc727 100644 --- a/public/mod/data/lib.php +++ b/public/mod/data/lib.php @@ -2600,22 +2600,21 @@ function data_get_extra_capabilities() { * @return mixed True if module supports feature, false if not, null if doesn't know or string for the module purpose. */ function data_supports($feature) { - switch($feature) { - case FEATURE_GROUPS: return true; - case FEATURE_GROUPINGS: return true; - case FEATURE_MOD_INTRO: return true; - case FEATURE_COMPLETION_TRACKS_VIEWS: return true; - case FEATURE_COMPLETION_HAS_RULES: return true; - case FEATURE_GRADE_HAS_GRADE: return true; - case FEATURE_GRADE_OUTCOMES: return true; - case FEATURE_RATE: return true; - case FEATURE_BACKUP_MOODLE2: return true; - case FEATURE_SHOW_DESCRIPTION: return true; - case FEATURE_COMMENT: return true; - case FEATURE_MOD_PURPOSE: return MOD_PURPOSE_COLLABORATION; - - default: return null; - } + return match ($feature) { + FEATURE_GROUPS => true, + FEATURE_GROUPINGS => true, + FEATURE_MOD_INTRO => true, + FEATURE_COMPLETION_TRACKS_VIEWS => true, + FEATURE_COMPLETION_HAS_RULES => true, + FEATURE_GRADE_HAS_GRADE => true, + FEATURE_GRADE_OUTCOMES => true, + FEATURE_RATE => true, + FEATURE_BACKUP_MOODLE2 => true, + FEATURE_SHOW_DESCRIPTION => true, + FEATURE_COMMENT => true, + FEATURE_MOD_PURPOSE => MOD_PURPOSE_COLLABORATION, + default => null, + }; } //////////////////////////////////////////////////////////////////////////////// diff --git a/public/mod/feedback/lib.php b/public/mod/feedback/lib.php index 66fc211e998..b5d71e76f7a 100644 --- a/public/mod/feedback/lib.php +++ b/public/mod/feedback/lib.php @@ -57,20 +57,19 @@ require_once(__DIR__ . '/deprecatedlib.php'); * @return mixed True if module supports feature, false if not, null if doesn't know or string for the module purpose. */ function feedback_supports($feature) { - switch($feature) { - case FEATURE_GROUPS: return true; - case FEATURE_GROUPINGS: return true; - case FEATURE_MOD_INTRO: return true; - case FEATURE_COMPLETION_TRACKS_VIEWS: return true; - case FEATURE_COMPLETION_HAS_RULES: return true; - case FEATURE_GRADE_HAS_GRADE: return false; - case FEATURE_GRADE_OUTCOMES: return false; - case FEATURE_BACKUP_MOODLE2: return true; - case FEATURE_SHOW_DESCRIPTION: return true; - case FEATURE_MOD_PURPOSE: return MOD_PURPOSE_COMMUNICATION; - - default: return null; - } + return match ($feature) { + FEATURE_GROUPS => true, + FEATURE_GROUPINGS => true, + FEATURE_MOD_INTRO => true, + FEATURE_COMPLETION_TRACKS_VIEWS => true, + FEATURE_COMPLETION_HAS_RULES => true, + FEATURE_GRADE_HAS_GRADE => false, + FEATURE_GRADE_OUTCOMES => false, + FEATURE_BACKUP_MOODLE2 => true, + FEATURE_SHOW_DESCRIPTION => true, + FEATURE_MOD_PURPOSE => MOD_PURPOSE_COMMUNICATION, + default => null, + }; } /** diff --git a/public/mod/folder/lib.php b/public/mod/folder/lib.php index 08610f0c657..7b95366a539 100644 --- a/public/mod/folder/lib.php +++ b/public/mod/folder/lib.php @@ -38,20 +38,19 @@ define('FOLDER_DISPLAY_INLINE', 1); * @return mixed True if module supports feature, false if not, null if doesn't know or string for the module purpose. */ function folder_supports($feature) { - switch($feature) { - case FEATURE_MOD_ARCHETYPE: return MOD_ARCHETYPE_RESOURCE; - case FEATURE_GROUPS: return false; - case FEATURE_GROUPINGS: return false; - case FEATURE_MOD_INTRO: return true; - case FEATURE_COMPLETION_TRACKS_VIEWS: return true; - case FEATURE_GRADE_HAS_GRADE: return false; - case FEATURE_GRADE_OUTCOMES: return false; - case FEATURE_BACKUP_MOODLE2: return true; - case FEATURE_SHOW_DESCRIPTION: return true; - case FEATURE_MOD_PURPOSE: return MOD_PURPOSE_CONTENT; - - default: return null; - } + return match ($feature) { + FEATURE_MOD_ARCHETYPE => MOD_ARCHETYPE_RESOURCE, + FEATURE_GROUPS => false, + FEATURE_GROUPINGS => false, + FEATURE_MOD_INTRO => true, + FEATURE_COMPLETION_TRACKS_VIEWS => true, + FEATURE_GRADE_HAS_GRADE => false, + FEATURE_GRADE_OUTCOMES => false, + FEATURE_BACKUP_MOODLE2 => true, + FEATURE_SHOW_DESCRIPTION => true, + FEATURE_MOD_PURPOSE => MOD_PURPOSE_CONTENT, + default => null, + }; } /** diff --git a/public/mod/forum/lib.php b/public/mod/forum/lib.php index 9482f99cbd6..d93cc3a8e24 100644 --- a/public/mod/forum/lib.php +++ b/public/mod/forum/lib.php @@ -358,25 +358,24 @@ function forum_delete_instance($id) { * @return mixed True if module supports feature, false if not, null if doesn't know or string for the module purpose. */ function forum_supports($feature) { - switch($feature) { - case FEATURE_GROUPS: return true; - case FEATURE_GROUPINGS: return true; - case FEATURE_MOD_INTRO: return true; - case FEATURE_COMPLETION_TRACKS_VIEWS: return true; - case FEATURE_COMPLETION_HAS_RULES: return true; - case FEATURE_GRADE_HAS_GRADE: return true; - case FEATURE_GRADE_OUTCOMES: return true; - case FEATURE_RATE: return true; - case FEATURE_BACKUP_MOODLE2: return true; - case FEATURE_SHOW_DESCRIPTION: return true; - case FEATURE_PLAGIARISM: return true; - case FEATURE_ADVANCED_GRADING: return true; - case FEATURE_MOD_PURPOSE: return MOD_PURPOSE_COLLABORATION; - case FEATURE_CAN_UNINSTALL: - return false; - - default: return null; - } + return match ($feature) { + FEATURE_GROUPS => true, + FEATURE_GROUPINGS => true, + FEATURE_MOD_INTRO => true, + FEATURE_COMPLETION_TRACKS_VIEWS => true, + FEATURE_COMPLETION_HAS_RULES => true, + FEATURE_GRADE_HAS_GRADE => true, + FEATURE_GRADE_OUTCOMES => true, + FEATURE_RATE => true, + FEATURE_BACKUP_MOODLE2 => true, + FEATURE_SHOW_DESCRIPTION => true, + FEATURE_PLAGIARISM => true, + FEATURE_ADVANCED_GRADING => true, + FEATURE_MOD_PURPOSE => MOD_PURPOSE_COLLABORATION, + FEATURE_MOD_OTHERPURPOSE => MOD_PURPOSE_COMMUNICATION, + FEATURE_CAN_UNINSTALL => false, + default => null, + }; } /** diff --git a/public/mod/glossary/lib.php b/public/mod/glossary/lib.php index 1f958fd852c..dbd3753ff76 100644 --- a/public/mod/glossary/lib.php +++ b/public/mod/glossary/lib.php @@ -3120,22 +3120,22 @@ function glossary_get_extra_capabilities() { * @return mixed True if module supports feature, false if not, null if doesn't know or string for the module purpose. */ function glossary_supports($feature) { - switch($feature) { - case FEATURE_GROUPS: return false; - case FEATURE_GROUPINGS: return false; - case FEATURE_MOD_INTRO: return true; - case FEATURE_COMPLETION_TRACKS_VIEWS: return true; - case FEATURE_COMPLETION_HAS_RULES: return true; - case FEATURE_GRADE_HAS_GRADE: return true; - case FEATURE_GRADE_OUTCOMES: return true; - case FEATURE_RATE: return true; - case FEATURE_BACKUP_MOODLE2: return true; - case FEATURE_SHOW_DESCRIPTION: return true; - case FEATURE_COMMENT: return true; - case FEATURE_MOD_PURPOSE: return MOD_PURPOSE_COLLABORATION; - - default: return null; - } + return match ($feature) { + FEATURE_GROUPS => false, + FEATURE_GROUPINGS => false, + FEATURE_MOD_INTRO => true, + FEATURE_COMPLETION_TRACKS_VIEWS => true, + FEATURE_COMPLETION_HAS_RULES => true, + FEATURE_GRADE_HAS_GRADE => true, + FEATURE_GRADE_OUTCOMES => true, + FEATURE_RATE => true, + FEATURE_BACKUP_MOODLE2 => true, + FEATURE_SHOW_DESCRIPTION => true, + FEATURE_COMMENT => true, + FEATURE_MOD_PURPOSE => MOD_PURPOSE_COLLABORATION, + FEATURE_MOD_OTHERPURPOSE => MOD_PURPOSE_CONTENT, + default => null, + }; } function glossary_extend_navigation($navigation, $course, $module, $cm) { diff --git a/public/mod/h5pactivity/lib.php b/public/mod/h5pactivity/lib.php index 3d4ee53263b..1a71c9f00a6 100644 --- a/public/mod/h5pactivity/lib.php +++ b/public/mod/h5pactivity/lib.php @@ -45,30 +45,20 @@ use mod_h5pactivity\xapi\handler; * @return mixed True if module supports feature, false if not, null if doesn't know or string for the module purpose. */ function h5pactivity_supports(string $feature) { - switch($feature) { - case FEATURE_GROUPS: - return true; - case FEATURE_GROUPINGS: - return true; - case FEATURE_MOD_INTRO: - return true; - case FEATURE_SHOW_DESCRIPTION: - return true; - case FEATURE_COMPLETION_TRACKS_VIEWS: - return true; - case FEATURE_MODEDIT_DEFAULT_COMPLETION: - return true; - case FEATURE_GRADE_HAS_GRADE: - return true; - case FEATURE_GRADE_OUTCOMES: - return true; - case FEATURE_BACKUP_MOODLE2: - return true; - case FEATURE_MOD_PURPOSE: - return MOD_PURPOSE_INTERACTIVECONTENT; - default: - return null; - } + return match ($feature) { + FEATURE_GROUPS => true, + FEATURE_GROUPINGS => true, + FEATURE_MOD_INTRO => true, + FEATURE_SHOW_DESCRIPTION => true, + FEATURE_COMPLETION_TRACKS_VIEWS => true, + FEATURE_MODEDIT_DEFAULT_COMPLETION => true, + FEATURE_GRADE_HAS_GRADE => true, + FEATURE_GRADE_OUTCOMES => true, + FEATURE_BACKUP_MOODLE2 => true, + FEATURE_MOD_PURPOSE => MOD_PURPOSE_INTERACTIVECONTENT, + FEATURE_MOD_OTHERPURPOSE => MOD_PURPOSE_ASSESSMENT, + default => null, + }; } /** diff --git a/public/mod/imscp/lib.php b/public/mod/imscp/lib.php index 71012d84e34..13a6a1fd577 100644 --- a/public/mod/imscp/lib.php +++ b/public/mod/imscp/lib.php @@ -32,21 +32,20 @@ require_once(__DIR__ . '/deprecatedlib.php'); * @return mixed True if module supports feature, false if not, null if doesn't know or string for the module purpose. */ function imscp_supports($feature) { - switch($feature) { - case FEATURE_MOD_ARCHETYPE: return MOD_ARCHETYPE_RESOURCE; - case FEATURE_GROUPS: return false; - case FEATURE_GROUPINGS: return false; - case FEATURE_MOD_INTRO: return true; - case FEATURE_COMPLETION_TRACKS_VIEWS: return true; - case FEATURE_GRADE_HAS_GRADE: return false; - case FEATURE_GRADE_OUTCOMES: return false; - case FEATURE_BACKUP_MOODLE2: return true; - case FEATURE_SHOW_DESCRIPTION: return true; - case FEATURE_MOD_PURPOSE: - return MOD_PURPOSE_INTERACTIVECONTENT; - - default: return null; - } + return match ($feature) { + FEATURE_MOD_ARCHETYPE => MOD_ARCHETYPE_RESOURCE, + FEATURE_GROUPS => false, + FEATURE_GROUPINGS => false, + FEATURE_MOD_INTRO => true, + FEATURE_COMPLETION_TRACKS_VIEWS => true, + FEATURE_GRADE_HAS_GRADE => false, + FEATURE_GRADE_OUTCOMES => false, + FEATURE_BACKUP_MOODLE2 => true, + FEATURE_SHOW_DESCRIPTION => true, + FEATURE_MOD_PURPOSE => MOD_PURPOSE_INTERACTIVECONTENT, + FEATURE_MOD_OTHERPURPOSE => MOD_PURPOSE_CONTENT, + default => null, + }; } /** diff --git a/public/mod/label/lib.php b/public/mod/label/lib.php index c6fda19840f..3d7bedaaf86 100644 --- a/public/mod/label/lib.php +++ b/public/mod/label/lib.php @@ -195,21 +195,20 @@ function label_reset_userdata($data) { * @return mixed True if module supports feature, false if not, null if doesn't know or string for the module purpose. */ function label_supports($feature) { - switch($feature) { - case FEATURE_IDNUMBER: return true; - case FEATURE_GROUPS: return false; - case FEATURE_GROUPINGS: return false; - case FEATURE_MOD_INTRO: return true; - case FEATURE_COMPLETION_TRACKS_VIEWS: return false; - case FEATURE_GRADE_HAS_GRADE: return false; - case FEATURE_GRADE_OUTCOMES: return false; - case FEATURE_MOD_ARCHETYPE: return MOD_ARCHETYPE_RESOURCE; - case FEATURE_BACKUP_MOODLE2: return true; - case FEATURE_NO_VIEW_LINK: return true; - case FEATURE_MOD_PURPOSE: return MOD_PURPOSE_CONTENT; - - default: return null; - } + return match ($feature) { + FEATURE_IDNUMBER => true, + FEATURE_GROUPS => false, + FEATURE_GROUPINGS => false, + FEATURE_MOD_INTRO => true, + FEATURE_COMPLETION_TRACKS_VIEWS => false, + FEATURE_GRADE_HAS_GRADE => false, + FEATURE_GRADE_OUTCOMES => false, + FEATURE_MOD_ARCHETYPE => MOD_ARCHETYPE_RESOURCE, + FEATURE_BACKUP_MOODLE2 => true, + FEATURE_NO_VIEW_LINK => true, + FEATURE_MOD_PURPOSE => MOD_PURPOSE_CONTENT, + default => null, + }; } /** diff --git a/public/mod/lesson/lib.php b/public/mod/lesson/lib.php index ebd15b4f104..afd0358a04a 100644 --- a/public/mod/lesson/lib.php +++ b/public/mod/lesson/lib.php @@ -987,30 +987,20 @@ function lesson_reset_userdata($data) { * @return mixed True if module supports feature, false if not, null if doesn't know or string for the module purpose. */ function lesson_supports($feature) { - switch($feature) { - case FEATURE_GROUPS: - return true; - case FEATURE_GROUPINGS: - return true; - case FEATURE_MOD_INTRO: - return true; - case FEATURE_COMPLETION_TRACKS_VIEWS: - return true; - case FEATURE_GRADE_HAS_GRADE: - return true; - case FEATURE_COMPLETION_HAS_RULES: - return true; - case FEATURE_GRADE_OUTCOMES: - return true; - case FEATURE_BACKUP_MOODLE2: - return true; - case FEATURE_SHOW_DESCRIPTION: - return true; - case FEATURE_MOD_PURPOSE: - return MOD_PURPOSE_INTERACTIVECONTENT; - default: - return null; - } + return match ($feature) { + FEATURE_GROUPS => true, + FEATURE_GROUPINGS => true, + FEATURE_MOD_INTRO => true, + FEATURE_COMPLETION_TRACKS_VIEWS => true, + FEATURE_GRADE_HAS_GRADE => true, + FEATURE_COMPLETION_HAS_RULES => true, + FEATURE_GRADE_OUTCOMES => true, + FEATURE_BACKUP_MOODLE2 => true, + FEATURE_SHOW_DESCRIPTION => true, + FEATURE_MOD_PURPOSE => MOD_PURPOSE_INTERACTIVECONTENT, + FEATURE_MOD_OTHERPURPOSE => MOD_PURPOSE_ASSESSMENT, + default => null, + }; } /** diff --git a/public/mod/lti/lib.php b/public/mod/lti/lib.php index 5af6cb31ba3..b66abc880e2 100644 --- a/public/mod/lti/lib.php +++ b/public/mod/lti/lib.php @@ -56,23 +56,18 @@ require_once(__DIR__ . '/deprecatedlib.php'); * @return mixed True if module supports feature, false if not, null if doesn't know or string for the module purpose. */ function lti_supports($feature) { - switch ($feature) { - case FEATURE_GROUPS: - case FEATURE_GROUPINGS: - return false; - case FEATURE_MOD_INTRO: - case FEATURE_COMPLETION_TRACKS_VIEWS: - case FEATURE_GRADE_HAS_GRADE: - case FEATURE_GRADE_OUTCOMES: - case FEATURE_BACKUP_MOODLE2: - case FEATURE_SHOW_DESCRIPTION: - return true; - case FEATURE_MOD_PURPOSE: - return MOD_PURPOSE_OTHER; - - default: - return null; - } + return match ($feature) { + FEATURE_GROUPS => false, + FEATURE_GROUPINGS => false, + FEATURE_MOD_INTRO => true, + FEATURE_COMPLETION_TRACKS_VIEWS => true, + FEATURE_GRADE_HAS_GRADE => true, + FEATURE_GRADE_OUTCOMES => true, + FEATURE_BACKUP_MOODLE2 => true, + FEATURE_SHOW_DESCRIPTION => true, + FEATURE_MOD_PURPOSE => MOD_PURPOSE_OTHER, + default => null, + }; } /** diff --git a/public/mod/page/lib.php b/public/mod/page/lib.php index edbc32b9a68..6a668efbe7a 100644 --- a/public/mod/page/lib.php +++ b/public/mod/page/lib.php @@ -31,20 +31,19 @@ use core\url; * @return mixed True if module supports feature, false if not, null if doesn't know or string for the module purpose. */ function page_supports($feature) { - switch($feature) { - case FEATURE_MOD_ARCHETYPE: return MOD_ARCHETYPE_RESOURCE; - case FEATURE_GROUPS: return false; - case FEATURE_GROUPINGS: return false; - case FEATURE_MOD_INTRO: return true; - case FEATURE_COMPLETION_TRACKS_VIEWS: return true; - case FEATURE_GRADE_HAS_GRADE: return false; - case FEATURE_GRADE_OUTCOMES: return false; - case FEATURE_BACKUP_MOODLE2: return true; - case FEATURE_SHOW_DESCRIPTION: return true; - case FEATURE_MOD_PURPOSE: return MOD_PURPOSE_CONTENT; - - default: return null; - } + return match ($feature) { + FEATURE_MOD_ARCHETYPE => MOD_ARCHETYPE_RESOURCE, + FEATURE_GROUPS => false, + FEATURE_GROUPINGS => false, + FEATURE_MOD_INTRO => true, + FEATURE_COMPLETION_TRACKS_VIEWS => true, + FEATURE_GRADE_HAS_GRADE => false, + FEATURE_GRADE_OUTCOMES => false, + FEATURE_BACKUP_MOODLE2 => true, + FEATURE_SHOW_DESCRIPTION => true, + FEATURE_MOD_PURPOSE => MOD_PURPOSE_CONTENT, + default => null, + }; } /** diff --git a/public/mod/qbank/lib.php b/public/mod/qbank/lib.php index d4195f9f7a2..e63ba3b054c 100644 --- a/public/mod/qbank/lib.php +++ b/public/mod/qbank/lib.php @@ -30,27 +30,23 @@ * @return bool|string|null True if module supports feature, false if not, null if it doesn't know or string for the module purpose. */ function qbank_supports(string $feature) { - switch ($feature) { - case FEATURE_BACKUP_MOODLE2: - case FEATURE_PUBLISHES_QUESTIONS: - case FEATURE_SHOW_DESCRIPTION: - case FEATURE_USES_QUESTIONS: - return true; - case FEATURE_CAN_DISPLAY: - case FEATURE_CAN_UNINSTALL: - case FEATURE_COMMENT: - case FEATURE_COMPLETION: - case FEATURE_COMPLETION_HAS_RULES: - case FEATURE_COMPLETION_TRACKS_VIEWS: - case FEATURE_CONTROLS_GRADE_VISIBILITY: - case FEATURE_GRADE_OUTCOMES: - case FEATURE_MODEDIT_DEFAULT_COMPLETION: - return false; - case FEATURE_MOD_PURPOSE: - return MOD_PURPOSE_CONTENT; - default: - return null; - } + return match ($feature) { + FEATURE_BACKUP_MOODLE2 => true, + FEATURE_PUBLISHES_QUESTIONS => true, + FEATURE_SHOW_DESCRIPTION => true, + FEATURE_USES_QUESTIONS => true, + FEATURE_CAN_DISPLAY => false, + FEATURE_CAN_UNINSTALL => false, + FEATURE_COMMENT => false, + FEATURE_COMPLETION => false, + FEATURE_COMPLETION_HAS_RULES => false, + FEATURE_COMPLETION_TRACKS_VIEWS => false, + FEATURE_CONTROLS_GRADE_VISIBILITY => false, + FEATURE_GRADE_OUTCOMES => false, + FEATURE_MODEDIT_DEFAULT_COMPLETION => false, + FEATURE_MOD_PURPOSE => MOD_PURPOSE_CONTENT, + default => null, + }; } /** diff --git a/public/mod/quiz/lib.php b/public/mod/quiz/lib.php index 43c78fc7575..ac32bfb8596 100644 --- a/public/mod/quiz/lib.php +++ b/public/mod/quiz/lib.php @@ -1623,23 +1623,22 @@ function quiz_attempt_summary_link_to_reports($quiz, $cm, $context, $returnzero * @return mixed True if module supports feature, false if not, null if doesn't know or string for the module purpose. */ function quiz_supports($feature) { - switch($feature) { - case FEATURE_GROUPS: return true; - case FEATURE_GROUPINGS: return true; - case FEATURE_MOD_INTRO: return true; - case FEATURE_COMPLETION_TRACKS_VIEWS: return true; - case FEATURE_COMPLETION_HAS_RULES: return true; - case FEATURE_GRADE_HAS_GRADE: return true; - case FEATURE_GRADE_OUTCOMES: return true; - case FEATURE_BACKUP_MOODLE2: return true; - case FEATURE_SHOW_DESCRIPTION: return true; - case FEATURE_CONTROLS_GRADE_VISIBILITY: return true; - case FEATURE_USES_QUESTIONS: return true; - case FEATURE_PLAGIARISM: return true; - case FEATURE_MOD_PURPOSE: return MOD_PURPOSE_ASSESSMENT; - - default: return null; - } + return match ($feature) { + FEATURE_GROUPS => true, + FEATURE_GROUPINGS => true, + FEATURE_MOD_INTRO => true, + FEATURE_COMPLETION_TRACKS_VIEWS => true, + FEATURE_COMPLETION_HAS_RULES => true, + FEATURE_GRADE_HAS_GRADE => true, + FEATURE_GRADE_OUTCOMES => true, + FEATURE_BACKUP_MOODLE2 => true, + FEATURE_SHOW_DESCRIPTION => true, + FEATURE_CONTROLS_GRADE_VISIBILITY => true, + FEATURE_USES_QUESTIONS => true, + FEATURE_PLAGIARISM => true, + FEATURE_MOD_PURPOSE => MOD_PURPOSE_ASSESSMENT, + default => null, + }; } /** diff --git a/public/mod/resource/lib.php b/public/mod/resource/lib.php index 15073a10460..538306fe123 100644 --- a/public/mod/resource/lib.php +++ b/public/mod/resource/lib.php @@ -31,20 +31,19 @@ use core\url; * @return mixed True if module supports feature, false if not, null if doesn't know or string for the module purpose. */ function resource_supports($feature) { - switch($feature) { - case FEATURE_MOD_ARCHETYPE: return MOD_ARCHETYPE_RESOURCE; - case FEATURE_GROUPS: return false; - case FEATURE_GROUPINGS: return false; - case FEATURE_MOD_INTRO: return true; - case FEATURE_COMPLETION_TRACKS_VIEWS: return true; - case FEATURE_GRADE_HAS_GRADE: return false; - case FEATURE_GRADE_OUTCOMES: return false; - case FEATURE_BACKUP_MOODLE2: return true; - case FEATURE_SHOW_DESCRIPTION: return true; - case FEATURE_MOD_PURPOSE: return MOD_PURPOSE_CONTENT; - - default: return null; - } + return match ($feature) { + FEATURE_MOD_ARCHETYPE => MOD_ARCHETYPE_RESOURCE, + FEATURE_GROUPS => false, + FEATURE_GROUPINGS => false, + FEATURE_MOD_INTRO => true, + FEATURE_COMPLETION_TRACKS_VIEWS => true, + FEATURE_GRADE_HAS_GRADE => false, + FEATURE_GRADE_OUTCOMES => false, + FEATURE_BACKUP_MOODLE2 => true, + FEATURE_SHOW_DESCRIPTION => true, + FEATURE_MOD_PURPOSE => MOD_PURPOSE_CONTENT, + default => null, + }; } /** diff --git a/public/mod/scorm/lib.php b/public/mod/scorm/lib.php index 657d3aa9be6..4c08625a4f5 100644 --- a/public/mod/scorm/lib.php +++ b/public/mod/scorm/lib.php @@ -1031,21 +1031,20 @@ function scorm_pluginfile($course, $cm, $context, $filearea, $args, $forcedownlo * @return mixed True if module supports feature, false if not, null if doesn't know or string for the module purpose. */ function scorm_supports($feature) { - switch($feature) { - case FEATURE_GROUPS: return true; - case FEATURE_GROUPINGS: return true; - case FEATURE_MOD_INTRO: return true; - case FEATURE_COMPLETION_TRACKS_VIEWS: return true; - case FEATURE_COMPLETION_HAS_RULES: return true; - case FEATURE_GRADE_HAS_GRADE: return true; - case FEATURE_GRADE_OUTCOMES: return true; - case FEATURE_BACKUP_MOODLE2: return true; - case FEATURE_SHOW_DESCRIPTION: return true; - case FEATURE_MOD_PURPOSE: - return MOD_PURPOSE_INTERACTIVECONTENT; - - default: return null; - } + return match ($feature) { + FEATURE_GROUPS => true, + FEATURE_GROUPINGS => true, + FEATURE_MOD_INTRO => true, + FEATURE_COMPLETION_TRACKS_VIEWS => true, + FEATURE_COMPLETION_HAS_RULES => true, + FEATURE_GRADE_HAS_GRADE => true, + FEATURE_GRADE_OUTCOMES => true, + FEATURE_BACKUP_MOODLE2 => true, + FEATURE_SHOW_DESCRIPTION => true, + FEATURE_MOD_PURPOSE => MOD_PURPOSE_INTERACTIVECONTENT, + FEATURE_MOD_OTHERPURPOSE => MOD_PURPOSE_CONTENT, + default => null, + }; } /** diff --git a/public/mod/url/lib.php b/public/mod/url/lib.php index d072f03fc58..f26e8e07d19 100644 --- a/public/mod/url/lib.php +++ b/public/mod/url/lib.php @@ -31,20 +31,19 @@ defined('MOODLE_INTERNAL') || die; * @return mixed True if module supports feature, false if not, null if doesn't know or string for the module purpose. */ function url_supports($feature) { - switch($feature) { - case FEATURE_MOD_ARCHETYPE: return MOD_ARCHETYPE_RESOURCE; - case FEATURE_GROUPS: return false; - case FEATURE_GROUPINGS: return false; - case FEATURE_MOD_INTRO: return true; - case FEATURE_COMPLETION_TRACKS_VIEWS: return true; - case FEATURE_GRADE_HAS_GRADE: return false; - case FEATURE_GRADE_OUTCOMES: return false; - case FEATURE_BACKUP_MOODLE2: return true; - case FEATURE_SHOW_DESCRIPTION: return true; - case FEATURE_MOD_PURPOSE: return MOD_PURPOSE_CONTENT; - - default: return null; - } + return match ($feature) { + FEATURE_MOD_ARCHETYPE => MOD_ARCHETYPE_RESOURCE, + FEATURE_GROUPS => false, + FEATURE_GROUPINGS => false, + FEATURE_MOD_INTRO => true, + FEATURE_COMPLETION_TRACKS_VIEWS => true, + FEATURE_GRADE_HAS_GRADE => false, + FEATURE_GRADE_OUTCOMES => false, + FEATURE_BACKUP_MOODLE2 => true, + FEATURE_SHOW_DESCRIPTION => true, + FEATURE_MOD_PURPOSE => MOD_PURPOSE_CONTENT, + default => null, + }; } /** diff --git a/public/mod/wiki/lib.php b/public/mod/wiki/lib.php index 9de34b07af6..322a8cb4447 100644 --- a/public/mod/wiki/lib.php +++ b/public/mod/wiki/lib.php @@ -277,33 +277,20 @@ function wiki_reset_course_form_definition(&$mform) { * @return mixed True if module supports feature, false if not, null if doesn't know or string for the module purpose. */ function wiki_supports($feature) { - switch ($feature) { - case FEATURE_GROUPS: - return true; - case FEATURE_GROUPINGS: - return true; - case FEATURE_MOD_INTRO: - return true; - case FEATURE_COMPLETION_TRACKS_VIEWS: - return true; - case FEATURE_GRADE_HAS_GRADE: - return false; - case FEATURE_GRADE_OUTCOMES: - return false; - case FEATURE_RATE: - return false; - case FEATURE_BACKUP_MOODLE2: - return true; - case FEATURE_SHOW_DESCRIPTION: - return true; - case FEATURE_COMMENT: - return true; - case FEATURE_MOD_PURPOSE: - return MOD_PURPOSE_COLLABORATION; - - default: - return null; - } + return match ($feature) { + FEATURE_GROUPS => true, + FEATURE_GROUPINGS => true, + FEATURE_MOD_INTRO => true, + FEATURE_COMPLETION_TRACKS_VIEWS => true, + FEATURE_GRADE_HAS_GRADE => false, + FEATURE_GRADE_OUTCOMES => false, + FEATURE_RATE => false, + FEATURE_BACKUP_MOODLE2 => true, + FEATURE_SHOW_DESCRIPTION => true, + FEATURE_COMMENT => true, + FEATURE_MOD_PURPOSE => MOD_PURPOSE_COLLABORATION, + default => null, + }; } /** diff --git a/public/mod/workshop/lib.php b/public/mod/workshop/lib.php index 0ea595d6f26..8ed31211993 100644 --- a/public/mod/workshop/lib.php +++ b/public/mod/workshop/lib.php @@ -50,19 +50,19 @@ define('WORKSHOP_SUBMISSION_TYPE_REQUIRED', 2); * @return mixed True if module supports feature, false if not, null if doesn't know or string for the module purpose. */ function workshop_supports($feature) { - switch($feature) { - case FEATURE_GRADE_HAS_GRADE: return true; - case FEATURE_GROUPS: return true; - case FEATURE_GROUPINGS: return true; - case FEATURE_MOD_INTRO: return true; - case FEATURE_BACKUP_MOODLE2: return true; - case FEATURE_COMPLETION_TRACKS_VIEWS: - return true; - case FEATURE_SHOW_DESCRIPTION: return true; - case FEATURE_PLAGIARISM: return true; - case FEATURE_MOD_PURPOSE: return MOD_PURPOSE_ASSESSMENT; - default: return null; - } + return match ($feature) { + FEATURE_GRADE_HAS_GRADE => true, + FEATURE_GROUPS => true, + FEATURE_GROUPINGS => true, + FEATURE_MOD_INTRO => true, + FEATURE_BACKUP_MOODLE2 => true, + FEATURE_COMPLETION_TRACKS_VIEWS => true, + FEATURE_SHOW_DESCRIPTION => true, + FEATURE_PLAGIARISM => true, + FEATURE_MOD_PURPOSE => MOD_PURPOSE_ASSESSMENT, + FEATURE_MOD_OTHERPURPOSE => MOD_PURPOSE_COLLABORATION, + default => null, + }; } /**