Skip to content

Commit

Permalink
MDL-30408 Allow modules the choice to not appear on 'Add a...' lists
Browse files Browse the repository at this point in the history
This is useful for modules which are created by the system and are not supposed to be created by users. There are various reasons for doing this in third-party modules.
  • Loading branch information
sammarshallou authored and kordan committed Jan 19, 2012
1 parent 4e2f2fa commit 9002129
Show file tree
Hide file tree
Showing 4 changed files with 26 additions and 3 deletions.
10 changes: 9 additions & 1 deletion course/edit_form.php
Original file line number Diff line number Diff line change
Expand Up @@ -270,7 +270,15 @@ function definition() {
}

$mods = array(0=>get_string('allownone'));
$mods += $DB->get_records_menu('modules', array('visible'=>1), 'name', 'id, name');
$allmods = $DB->get_records_menu('modules', array('visible' => 1),
'name', 'id, name');
foreach ($allmods as $key => $value) {
// Add module to list unless it cannot be added by users anyway
if (plugin_supports('mod', $value, FEATURE_MOD_ARCHETYPE, MOD_ARCHETYPE_OTHER) !==
MOD_ARCHETYPE_SYSTEM) {
$mods[$key] = get_string('pluginname', $value);
}
}
$mform->addElement('select', 'allowedmods', get_string('to'), $mods, array('multiple'=>'multiple', 'size'=>'10'));
$mform->disabledIf('allowedmods', 'restrictmodules', 'eq', 0);
// defaults are already in $course
Expand Down
2 changes: 2 additions & 0 deletions course/lib.php
Original file line number Diff line number Diff line change
Expand Up @@ -1853,6 +1853,8 @@ function print_section_add_menus($course, $section, $modnames, $vertical=false,
$archetype = plugin_supports('mod', $modname, FEATURE_MOD_ARCHETYPE, MOD_ARCHETYPE_OTHER);
if ($archetype == MOD_ARCHETYPE_RESOURCE) {
$resources[$urlbase.$modname] = $modnamestr;
} else if ($archetype === MOD_ARCHETYPE_SYSTEM) {
// System modules cannot be added by user, do not add to dropdown
} else {
// all other archetypes are considered activity
$activities[$urlbase.$modname] = $modnamestr;
Expand Down
15 changes: 13 additions & 2 deletions lib/adminlib.php
Original file line number Diff line number Diff line change
Expand Up @@ -7896,16 +7896,21 @@ protected function process_form_data(array $form) {
* @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
*/
class admin_setting_configmultiselect_modules extends admin_setting_configmultiselect {
private $excludesystem;

/**
* Calls parent::__construct - note array $choices is not required
*
* @param string $name setting name
* @param string $visiblename localised setting name
* @param string $description setting description
* @param array $defaultsetting a plain array of default module ids
* @param bool $excludesystem If true, excludes modules with 'system' archetype
*/
public function __construct($name, $visiblename, $description, $defaultsetting = array()) {
public function __construct($name, $visiblename, $description, $defaultsetting = array(),
$excludesystem = true) {
parent::__construct($name, $visiblename, $description, $defaultsetting, null);
$this->excludesystem = $excludesystem;
}

/**
Expand All @@ -7922,8 +7927,14 @@ public function load_choices() {
global $CFG, $DB;
$records = $DB->get_records('modules', array('visible'=>1), 'name');
foreach ($records as $record) {
// Exclude modules if the code doesn't exist
if (file_exists("$CFG->dirroot/mod/$record->name/lib.php")) {
$this->choices[$record->id] = $record->name;
// Also exclude system modules (if specified)
if (!($this->excludesystem &&
plugin_supports('mod', $record->name, FEATURE_MOD_ARCHETYPE) ===
MOD_ARCHETYPE_SYSTEM)) {
$this->choices[$record->id] = $record->name;
}
}
}
return true;
Expand Down
2 changes: 2 additions & 0 deletions lib/moodlelib.php
Original file line number Diff line number Diff line change
Expand Up @@ -417,6 +417,8 @@
define('MOD_ARCHETYPE_RESOURCE', 1);
/** Assignment module archetype */
define('MOD_ARCHETYPE_ASSIGNMENT', 2);
/** System (not user-addable) module archetype */
define('MOD_ARCHETYPE_SYSTEM', 3);

/**
* Security token used for allowing access
Expand Down

0 comments on commit 9002129

Please sign in to comment.