MDL-85598 course: review activities purposes values

This commit is contained in:
ferran
2025-08-26 12:18:20 +02:00
parent 7d1ff73a90
commit 2d11b3e140
23 changed files with 453 additions and 390 deletions
+150
View File
@@ -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,
],
];
}
}
+17 -33
View File
@@ -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,
};
}
/**
+3 -9
View File
@@ -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,
};
}
/**
+13 -14
View File
@@ -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,
};
}
/**
+14 -25
View File
@@ -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,
};
}
/**
+15 -16
View File
@@ -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,
};
}
////////////////////////////////////////////////////////////////////////////////
+13 -14
View File
@@ -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,
};
}
/**
+13 -14
View File
@@ -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,
};
}
/**
+18 -19
View File
@@ -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,
};
}
/**
+16 -16
View File
@@ -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) {
+14 -24
View File
@@ -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,
};
}
/**
+14 -15
View File
@@ -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,
};
}
/**
+14 -15
View File
@@ -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,
};
}
/**
+14 -24
View File
@@ -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,
};
}
/**
+12 -17
View File
@@ -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,
};
}
/**
+13 -14
View File
@@ -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,
};
}
/**
+17 -21
View File
@@ -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,
};
}
/**
+16 -17
View File
@@ -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,
};
}
/**
+13 -14
View File
@@ -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,
};
}
/**
+14 -15
View File
@@ -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,
};
}
/**
+13 -14
View File
@@ -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,
};
}
/**
+14 -27
View File
@@ -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,
};
}
/**
+13 -13
View File
@@ -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,
};
}
/**