| 1 | efrain | 1 | <?php
 | 
        
           |  |  | 2 | // This file is part of Moodle - http://moodle.org/
 | 
        
           |  |  | 3 | //
 | 
        
           |  |  | 4 | // Moodle is free software: you can redistribute it and/or modify
 | 
        
           |  |  | 5 | // it under the terms of the GNU General Public License as published by
 | 
        
           |  |  | 6 | // the Free Software Foundation, either version 3 of the License, or
 | 
        
           |  |  | 7 | // (at your option) any later version.
 | 
        
           |  |  | 8 | //
 | 
        
           |  |  | 9 | // Moodle is distributed in the hope that it will be useful,
 | 
        
           |  |  | 10 | // but WITHOUT ANY WARRANTY; without even the implied warranty of
 | 
        
           |  |  | 11 | // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 | 
        
           |  |  | 12 | // GNU General Public License for more details.
 | 
        
           |  |  | 13 | //
 | 
        
           |  |  | 14 | // You should have received a copy of the GNU General Public License
 | 
        
           |  |  | 15 | // along with Moodle.  If not, see <http://www.gnu.org/licenses/>.
 | 
        
           |  |  | 16 |   | 
        
           |  |  | 17 | namespace core_adminpresets;
 | 
        
           |  |  | 18 |   | 
        
           |  |  | 19 | /**
 | 
        
           |  |  | 20 |  * Admin presets helper class.
 | 
        
           |  |  | 21 |  *
 | 
        
           |  |  | 22 |  * @package    core_adminpresets
 | 
        
           |  |  | 23 |  * @copyright  2021 Sara Arjona (sara@moodle.com)
 | 
        
           |  |  | 24 |  * @license    http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
 | 
        
           |  |  | 25 |  */
 | 
        
           |  |  | 26 | class helper {
 | 
        
           |  |  | 27 |   | 
        
           |  |  | 28 |     /**
 | 
        
           |  |  | 29 |      * Create an empty preset.
 | 
        
           |  |  | 30 |      *
 | 
        
           |  |  | 31 |      * @param array $data Preset data. Supported values:
 | 
        
           |  |  | 32 |      *   - name. To define the preset name.
 | 
        
           |  |  | 33 |      *   - comments. To change the comments field.
 | 
        
           |  |  | 34 |      *   - author. To update the author field.
 | 
        
           |  |  | 35 |      *   - iscore. Whether the preset is a core preset or not. Valid values on \core_adminpresets\manager class.
 | 
        
           |  |  | 36 |      * @return int The identifier of the preset created.
 | 
        
           |  |  | 37 |      */
 | 
        
           |  |  | 38 |     public static function create_preset(array $data): int {
 | 
        
           |  |  | 39 |         global $CFG, $USER, $DB;
 | 
        
           |  |  | 40 |   | 
        
           |  |  | 41 |         $name = array_key_exists('name', $data) ? $data['name'] : '';
 | 
        
           |  |  | 42 |         $comments = array_key_exists('comments', $data) ? $data['comments'] : '';
 | 
        
           |  |  | 43 |         $author = array_key_exists('author', $data) ? $data['author'] : fullname($USER);
 | 
        
           |  |  | 44 |         $iscore = array_key_exists('iscore', $data) ? $data['iscore'] : manager::NONCORE_PRESET;
 | 
        
           |  |  | 45 |   | 
        
           |  |  | 46 |         // Validate iscore value.
 | 
        
           |  |  | 47 |         $allowed = [manager::NONCORE_PRESET, manager::STARTER_PRESET, manager::FULL_PRESET];
 | 
        
           |  |  | 48 |         if (!in_array($iscore, $allowed)) {
 | 
        
           |  |  | 49 |             $iscore = manager::NONCORE_PRESET;
 | 
        
           |  |  | 50 |         }
 | 
        
           |  |  | 51 |   | 
        
           |  |  | 52 |         $preset = [
 | 
        
           |  |  | 53 |             'userid' => $USER->id,
 | 
        
           |  |  | 54 |             'name' => $name,
 | 
        
           |  |  | 55 |             'comments' => $comments,
 | 
        
           |  |  | 56 |             'site' => $CFG->wwwroot,
 | 
        
           |  |  | 57 |             'author' => $author,
 | 
        
           |  |  | 58 |             'moodleversion' => $CFG->version,
 | 
        
           |  |  | 59 |             'moodlerelease' => $CFG->release,
 | 
        
           |  |  | 60 |             'iscore' => $iscore,
 | 
        
           |  |  | 61 |             'timecreated' => time(),
 | 
        
           |  |  | 62 |             'timeimported' => 0,
 | 
        
           |  |  | 63 |         ];
 | 
        
           |  |  | 64 |   | 
        
           |  |  | 65 |         $presetid = $DB->insert_record('adminpresets', $preset);
 | 
        
           |  |  | 66 |         return $presetid;
 | 
        
           |  |  | 67 |     }
 | 
        
           |  |  | 68 |   | 
        
           |  |  | 69 |     /**
 | 
        
           |  |  | 70 |      * Helper method to add a setting item to a preset.
 | 
        
           |  |  | 71 |      *
 | 
        
           |  |  | 72 |      * @param int $presetid Preset identifier where the item will belong.
 | 
        
           |  |  | 73 |      * @param string $name Item name.
 | 
        
           |  |  | 74 |      * @param string $value Item value.
 | 
        
           |  |  | 75 |      * @param string|null $plugin Item plugin.
 | 
        
           |  |  | 76 |      * @param string|null $advname If the item is an advanced setting, the name of the advanced setting should be specified here.
 | 
        
           |  |  | 77 |      * @param string|null $advvalue If the item is an advanced setting, the value of the advanced setting should be specified here.
 | 
        
           |  |  | 78 |      * @return int The item identificator.
 | 
        
           |  |  | 79 |      */
 | 
        
           |  |  | 80 |     public static function add_item(int $presetid, string $name, string $value, ?string $plugin = 'none',
 | 
        
           |  |  | 81 |             ?string $advname = null, ?string $advvalue = null): int {
 | 
        
           |  |  | 82 |         global $DB;
 | 
        
           |  |  | 83 |   | 
        
           |  |  | 84 |         $presetitem = [
 | 
        
           |  |  | 85 |             'adminpresetid' => $presetid,
 | 
        
           |  |  | 86 |             'plugin' => $plugin,
 | 
        
           |  |  | 87 |             'name' => $name,
 | 
        
           |  |  | 88 |             'value' => $value,
 | 
        
           |  |  | 89 |         ];
 | 
        
           |  |  | 90 |         $itemid = $DB->insert_record('adminpresets_it', $presetitem);
 | 
        
           |  |  | 91 |   | 
        
           |  |  | 92 |         if (!empty($advname)) {
 | 
        
           |  |  | 93 |             $presetadv = [
 | 
        
           |  |  | 94 |                 'itemid' => $itemid,
 | 
        
           |  |  | 95 |                 'name' => $advname,
 | 
        
           |  |  | 96 |                 'value' => $advvalue,
 | 
        
           |  |  | 97 |             ];
 | 
        
           |  |  | 98 |             $DB->insert_record('adminpresets_it_a', $presetadv);
 | 
        
           |  |  | 99 |         }
 | 
        
           |  |  | 100 |   | 
        
           |  |  | 101 |         return $itemid;
 | 
        
           |  |  | 102 |     }
 | 
        
           |  |  | 103 |   | 
        
           |  |  | 104 |     /**
 | 
        
           |  |  | 105 |      * Helper method to add a plugin to a preset.
 | 
        
           |  |  | 106 |      *
 | 
        
           |  |  | 107 |      * @param int $presetid Preset identifier where the item will belong.
 | 
        
           |  |  | 108 |      * @param string $plugin Plugin type.
 | 
        
           |  |  | 109 |      * @param string $name Plugin name.
 | 
        
           |  |  | 110 |      * @param int $enabled Whether the plugin will be enabled or not.
 | 
        
           |  |  | 111 |      * @return int The plugin identificator.
 | 
        
           |  |  | 112 |      */
 | 
        
           |  |  | 113 |     public static function add_plugin(int $presetid, string $plugin, string $name, int $enabled): int {
 | 
        
           |  |  | 114 |         global $DB;
 | 
        
           |  |  | 115 |   | 
        
           |  |  | 116 |         $pluginentry = [
 | 
        
           |  |  | 117 |             'adminpresetid' => $presetid,
 | 
        
           |  |  | 118 |             'plugin' => $plugin,
 | 
        
           |  |  | 119 |             'name' => $name,
 | 
        
           |  |  | 120 |             'enabled' => $enabled,
 | 
        
           |  |  | 121 |         ];
 | 
        
           |  |  | 122 |         $pluginid = $DB->insert_record('adminpresets_plug', $pluginentry);
 | 
        
           |  |  | 123 |   | 
        
           |  |  | 124 |         return $pluginid;
 | 
        
           |  |  | 125 |     }
 | 
        
           |  |  | 126 |   | 
        
           |  |  | 127 |     /**
 | 
        
           |  |  | 128 |      * Apply the given preset. If it's a filename, the preset will be imported and then applied.
 | 
        
           |  |  | 129 |      *
 | 
        
           |  |  | 130 |      * @param string $presetnameorfile The preset name to be applied or a valid preset file to be imported and applied.
 | 
        
           |  |  | 131 |      * @return int|null The preset identifier that has been applied or null if the given value was not valid.
 | 
        
           |  |  | 132 |      */
 | 
        
           |  |  | 133 |     public static function change_default_preset(string $presetnameorfile): ?int {
 | 
        
           |  |  | 134 |         global $DB;
 | 
        
           |  |  | 135 |   | 
        
           |  |  | 136 |         $presetid = null;
 | 
        
           |  |  | 137 |   | 
        
           |  |  | 138 |         // Check if the given variable points to a valid preset file to be imported and applied.
 | 
        
           |  |  | 139 |         if (is_readable($presetnameorfile)) {
 | 
        
           |  |  | 140 |             $xmlcontent = file_get_contents($presetnameorfile);
 | 
        
           |  |  | 141 |             $manager = new manager();
 | 
        
           |  |  | 142 |             list($xmlnotused, $preset) = $manager->import_preset($xmlcontent);
 | 
        
           |  |  | 143 |             if (!is_null($preset)) {
 | 
        
           |  |  | 144 |                 list($applied) = $manager->apply_preset($preset->id);
 | 
        
           |  |  | 145 |                 if (!empty($applied)) {
 | 
        
           |  |  | 146 |                     $presetid = $preset->id;
 | 
        
           |  |  | 147 |                 }
 | 
        
           |  |  | 148 |             }
 | 
        
           |  |  | 149 |         } else {
 | 
        
           |  |  | 150 |             // Check if the given preset exists; if that's the case, it will be applied.
 | 
        
           |  |  | 151 |             $stringmanager = get_string_manager();
 | 
        
           |  |  | 152 |             if ($stringmanager->string_exists($presetnameorfile . 'preset', 'core_adminpresets')) {
 | 
        
           |  |  | 153 |                 $params = ['name' => get_string($presetnameorfile . 'preset', 'core_adminpresets')];
 | 
        
           |  |  | 154 |             } else {
 | 
        
           |  |  | 155 |                 $params = ['name' => $presetnameorfile];
 | 
        
           |  |  | 156 |             }
 | 
        
           |  |  | 157 |             if ($preset = $DB->get_record('adminpresets', $params)) {
 | 
        
           |  |  | 158 |                 $manager = new manager();
 | 
        
           |  |  | 159 |                 list($applied) = $manager->apply_preset($preset->id);
 | 
        
           |  |  | 160 |                 if (!empty($applied)) {
 | 
        
           |  |  | 161 |                     $presetid = $preset->id;
 | 
        
           |  |  | 162 |                 }
 | 
        
           |  |  | 163 |             }
 | 
        
           |  |  | 164 |         }
 | 
        
           |  |  | 165 |   | 
        
           |  |  | 166 |         return $presetid;
 | 
        
           |  |  | 167 |     }
 | 
        
           |  |  | 168 |   | 
        
           |  |  | 169 |     /**
 | 
        
           |  |  | 170 |      * Helper method to create default site admin presets and initialize them.
 | 
        
           |  |  | 171 |      */
 | 
        
           |  |  | 172 |     public static function create_default_presets(): void {
 | 
        
           |  |  | 173 |         // Create the "Starter" site admin preset.
 | 
        
           |  |  | 174 |         $data = [
 | 
        
           |  |  | 175 |             'name' => get_string('starterpreset', 'core_adminpresets'),
 | 
        
           |  |  | 176 |             'comments' => get_string('starterpresetdescription', 'core_adminpresets'),
 | 
        
           |  |  | 177 |             'iscore' => manager::STARTER_PRESET,
 | 
        
           |  |  | 178 |         ];
 | 
        
           |  |  | 179 |         $presetid = static::create_preset($data);
 | 
        
           |  |  | 180 |   | 
        
           |  |  | 181 |         // Add settings to the "Starter" site admin preset.
 | 
        
           |  |  | 182 |         static::add_item($presetid, 'usecomments', '0');
 | 
        
           |  |  | 183 |         static::add_item($presetid, 'usetags', '0');
 | 
        
           |  |  | 184 |         static::add_item($presetid, 'enablenotes', '0');
 | 
        
           |  |  | 185 |         static::add_item($presetid, 'enableblogs', '0');
 | 
        
           |  |  | 186 |         static::add_item($presetid, 'enablebadges', '0');
 | 
        
           |  |  | 187 |         static::add_item($presetid, 'enableanalytics', '0');
 | 
        
           |  |  | 188 |         static::add_item($presetid, 'enabled', '0', 'core_competency');
 | 
        
           |  |  | 189 |         static::add_item($presetid, 'pushcourseratingstouserplans', '0', 'core_competency');
 | 
        
           |  |  | 190 |         static::add_item($presetid, 'showdataretentionsummary', '0', 'tool_dataprivacy');
 | 
        
           |  |  | 191 |         static::add_item($presetid, 'forum_maxattachments', '3');
 | 
        
           |  |  | 192 |         static::add_item($presetid, 'guestloginbutton', '0');
 | 
        
           |  |  | 193 |         // Set Activity chooser tabs to "Starred, Recommended, All".
 | 
        
           |  |  | 194 |         static::add_item($presetid, 'activitychoosertabmode', '4');
 | 
        
           |  |  | 195 |   | 
        
           |  |  | 196 |         // Modules: Hide chat, database, external tool (lti), IMS content package (imscp), lesson, SCORM, survey, wiki, workshop.
 | 
        
           |  |  | 197 |         static::add_plugin($presetid, 'mod', 'chat', false);
 | 
        
           |  |  | 198 |         static::add_plugin($presetid, 'mod', 'data', false);
 | 
        
           |  |  | 199 |         static::add_plugin($presetid, 'mod', 'lti', false);
 | 
        
           |  |  | 200 |         static::add_plugin($presetid, 'mod', 'imscp', false);
 | 
        
           |  |  | 201 |         static::add_plugin($presetid, 'mod', 'lesson', false);
 | 
        
           |  |  | 202 |         static::add_plugin($presetid, 'mod', 'scorm', false);
 | 
        
           |  |  | 203 |         static::add_plugin($presetid, 'mod', 'survey', false);
 | 
        
           |  |  | 204 |         static::add_plugin($presetid, 'mod', 'wiki', false);
 | 
        
           |  |  | 205 |         static::add_plugin($presetid, 'mod', 'workshop', false);
 | 
        
           |  |  | 206 |   | 
        
           |  |  | 207 |         // Availability restrictions: Hide Grouping, User profile.
 | 
        
           |  |  | 208 |         static::add_plugin($presetid, 'availability', 'grouping', false);
 | 
        
           |  |  | 209 |         static::add_plugin($presetid, 'availability', 'profile', false);
 | 
        
           |  |  | 210 |   | 
        
           |  |  | 211 |         // Blocks: Hide Activities, Blog menu, Blog tags, Comments, Course completion status, Courses, Flickr,
 | 
        
           |  |  | 212 |         // Global search, Latest badges, Learning plans, Logged in user, Login, Main menu, Mentees, Network servers, Online users,
 | 
        
           |  |  | 213 |         // Private files, Recent blog entries, Recently accessed courses, Search forums, Section links, Social activities,
 | 
        
           |  |  | 214 |         // Starred courses, Tags, YouTube.
 | 
        
           |  |  | 215 |         // Hidden by default: Course/site summary, RSS feeds, Self completion, Feedback.
 | 
        
           |  |  | 216 |         static::add_plugin($presetid, 'block', 'activity_modules', false);
 | 
        
           |  |  | 217 |         static::add_plugin($presetid, 'block', 'blog_menu', false);
 | 
        
           |  |  | 218 |         static::add_plugin($presetid, 'block', 'blog_tags', false);
 | 
        
           |  |  | 219 |         static::add_plugin($presetid, 'block', 'comments', false);
 | 
        
           |  |  | 220 |         static::add_plugin($presetid, 'block', 'completionstatus', false);
 | 
        
           |  |  | 221 |         static::add_plugin($presetid, 'block', 'course_summary', false);
 | 
        
           |  |  | 222 |         static::add_plugin($presetid, 'block', 'course_list', false);
 | 
        
           |  |  | 223 |         static::add_plugin($presetid, 'block', 'tag_flickr', false);
 | 
        
           |  |  | 224 |         static::add_plugin($presetid, 'block', 'globalsearch', false);
 | 
        
           |  |  | 225 |         static::add_plugin($presetid, 'block', 'badges', false);
 | 
        
           |  |  | 226 |         static::add_plugin($presetid, 'block', 'lp', false);
 | 
        
           |  |  | 227 |         static::add_plugin($presetid, 'block', 'myprofile', false);
 | 
        
           |  |  | 228 |         static::add_plugin($presetid, 'block', 'login', false);
 | 
        
           |  |  | 229 |         static::add_plugin($presetid, 'block', 'site_main_menu', false);
 | 
        
           |  |  | 230 |         static::add_plugin($presetid, 'block', 'mentees', false);
 | 
        
           |  |  | 231 |         static::add_plugin($presetid, 'block', 'mnet_hosts', false);
 | 
        
           |  |  | 232 |         static::add_plugin($presetid, 'block', 'private_files', false);
 | 
        
           |  |  | 233 |         static::add_plugin($presetid, 'block', 'blog_recent', false);
 | 
        
           |  |  | 234 |         static::add_plugin($presetid, 'block', 'rss_client', false);
 | 
        
           |  |  | 235 |         static::add_plugin($presetid, 'block', 'search_forums', false);
 | 
        
           |  |  | 236 |         static::add_plugin($presetid, 'block', 'section_links', false);
 | 
        
           |  |  | 237 |         static::add_plugin($presetid, 'block', 'selfcompletion', false);
 | 
        
           |  |  | 238 |         static::add_plugin($presetid, 'block', 'social_activities', false);
 | 
        
           |  |  | 239 |         static::add_plugin($presetid, 'block', 'tags', false);
 | 
        
           |  |  | 240 |         static::add_plugin($presetid, 'block', 'tag_youtube', false);
 | 
        
           |  |  | 241 |         static::add_plugin($presetid, 'block', 'feedback', false);
 | 
        
           |  |  | 242 |         static::add_plugin($presetid, 'block', 'online_users', false);
 | 
        
           |  |  | 243 |         static::add_plugin($presetid, 'block', 'recentlyaccessedcourses', false);
 | 
        
           |  |  | 244 |         static::add_plugin($presetid, 'block', 'starredcourses', false);
 | 
        
           |  |  | 245 |   | 
        
           |  |  | 246 |         // Course formats: Disable Social format.
 | 
        
           |  |  | 247 |         static::add_plugin($presetid, 'format', 'social', false);
 | 
        
           |  |  | 248 |   | 
        
           |  |  | 249 |         // Data formats: Disable Javascript Object Notation (.json).
 | 
        
           |  |  | 250 |         static::add_plugin($presetid, 'dataformat', 'json', false);
 | 
        
           |  |  | 251 |   | 
        
           |  |  | 252 |         // Enrolments: Disable Cohort sync, Guest access.
 | 
        
           |  |  | 253 |         static::add_plugin($presetid, 'enrol', 'cohort', false);
 | 
        
           |  |  | 254 |         static::add_plugin($presetid, 'enrol', 'guest', false);
 | 
        
           |  |  | 255 |   | 
        
           |  |  | 256 |         // Filter: Disable MathJax, Activity names auto-linking.
 | 
        
           |  |  | 257 |         static::add_plugin($presetid, 'filter', 'mathjaxloader', TEXTFILTER_DISABLED);
 | 
        
           |  |  | 258 |         static::add_plugin($presetid, 'filter', 'activitynames', TEXTFILTER_DISABLED);
 | 
        
           |  |  | 259 |   | 
        
           |  |  | 260 |         // Question behaviours: Disable Adaptive mode (no penalties), Deferred feedback with CBM, Immediate feedback with CBM.
 | 
        
           |  |  | 261 |         static::add_plugin($presetid, 'qbehaviour', 'adaptivenopenalty', false);
 | 
        
           |  |  | 262 |         static::add_plugin($presetid, 'qbehaviour', 'deferredcbm', false);
 | 
        
           |  |  | 263 |         static::add_plugin($presetid, 'qbehaviour', 'immediatecbm', false);
 | 
        
           |  |  | 264 |   | 
        
           |  |  | 265 |         // Question types: Disable Calculated, Calculated multichoice, Calculated simple, Drag and drop markers,
 | 
        
           |  |  | 266 |         // Drag and drop onto image, Embedded answers (Cloze), Numerical, Random short-answer matching.
 | 
        
           |  |  | 267 |         static::add_plugin($presetid, 'qtype', 'calculated', false);
 | 
        
           |  |  | 268 |         static::add_plugin($presetid, 'qtype', 'calculatedmulti', false);
 | 
        
           |  |  | 269 |         static::add_plugin($presetid, 'qtype', 'calculatedsimple', false);
 | 
        
           |  |  | 270 |         static::add_plugin($presetid, 'qtype', 'ddmarker', false);
 | 
        
           |  |  | 271 |         static::add_plugin($presetid, 'qtype', 'ddimageortext', false);
 | 
        
           |  |  | 272 |         static::add_plugin($presetid, 'qtype', 'multianswer', false);
 | 
        
           |  |  | 273 |         static::add_plugin($presetid, 'qtype', 'numerical', false);
 | 
        
           |  |  | 274 |         static::add_plugin($presetid, 'qtype', 'randomsamatch', false);
 | 
        
           |  |  | 275 |   | 
        
           |  |  | 276 |         // Repositories: Disable Server files, URL downloader, Wikimedia.
 | 
        
           |  |  | 277 |         static::add_plugin($presetid, 'repository', 'local', false);
 | 
        
           |  |  | 278 |         static::add_plugin($presetid, 'repository', 'url', false);
 | 
        
           |  |  | 279 |         static::add_plugin($presetid, 'repository', 'wikimedia', false);
 | 
        
           |  |  | 280 |   | 
        
           |  |  | 281 |         // Create the "Full" site admin preset.
 | 
        
           |  |  | 282 |         $data = [
 | 
        
           |  |  | 283 |             'name' => get_string('fullpreset', 'core_adminpresets'),
 | 
        
           |  |  | 284 |             'comments' => get_string('fullpresetdescription', 'core_adminpresets'),
 | 
        
           |  |  | 285 |             'iscore' => manager::FULL_PRESET,
 | 
        
           |  |  | 286 |         ];
 | 
        
           |  |  | 287 |         $presetid = static::create_preset($data);
 | 
        
           |  |  | 288 |   | 
        
           |  |  | 289 |         // Add settings to the "Full" site admin preset.
 | 
        
           |  |  | 290 |         static::add_item($presetid, 'usecomments', '1');
 | 
        
           |  |  | 291 |         static::add_item($presetid, 'usetags', '1');
 | 
        
           |  |  | 292 |         static::add_item($presetid, 'enablenotes', '1');
 | 
        
           |  |  | 293 |         static::add_item($presetid, 'enableblogs', '1');
 | 
        
           |  |  | 294 |         static::add_item($presetid, 'enablebadges', '1');
 | 
        
           |  |  | 295 |         static::add_item($presetid, 'enableanalytics', '1');
 | 
        
           |  |  | 296 |         static::add_item($presetid, 'enabled', '1', 'core_competency');
 | 
        
           |  |  | 297 |         static::add_item($presetid, 'pushcourseratingstouserplans', '1', 'core_competency');
 | 
        
           |  |  | 298 |         static::add_item($presetid, 'showdataretentionsummary', '1', 'tool_dataprivacy');
 | 
        
           |  |  | 299 |         static::add_item($presetid, 'forum_maxattachments', '9');
 | 
        
           |  |  | 300 |         static::add_item($presetid, 'guestloginbutton', '1');
 | 
        
           |  |  | 301 |         // Set Activity chooser tabs to the default value ("Starred, Recommended, All, Activities, Resources").
 | 
        
           |  |  | 302 |         static::add_item($presetid, 'activitychoosertabmode', '3');
 | 
        
           |  |  | 303 |   | 
        
           |  |  | 304 |         // Modules: Enable database, external tool (lti), IMS content package (imscp), lesson, SCORM, wiki, workshop.
 | 
        
           |  |  | 305 |         static::add_plugin($presetid, 'mod', 'data', true);
 | 
        
           |  |  | 306 |         static::add_plugin($presetid, 'mod', 'lti', true);
 | 
        
           |  |  | 307 |         static::add_plugin($presetid, 'mod', 'imscp', true);
 | 
        
           |  |  | 308 |         static::add_plugin($presetid, 'mod', 'lesson', true);
 | 
        
           |  |  | 309 |         static::add_plugin($presetid, 'mod', 'scorm', true);
 | 
        
           |  |  | 310 |         static::add_plugin($presetid, 'mod', 'wiki', true);
 | 
        
           |  |  | 311 |         static::add_plugin($presetid, 'mod', 'workshop', true);
 | 
        
           |  |  | 312 |   | 
        
           |  |  | 313 |         // Availability restrictions: Enable Grouping, User profile.
 | 
        
           |  |  | 314 |         static::add_plugin($presetid, 'availability', 'grouping', true);
 | 
        
           |  |  | 315 |         static::add_plugin($presetid, 'availability', 'profile', true);
 | 
        
           |  |  | 316 |   | 
        
           |  |  | 317 |         // Blocks: Enable Activities, Blog menu, Blog tags, Comments, Course completion status, Courses, Flickr,
 | 
        
           |  |  | 318 |         // Global search, Latest badges, Learning plans, Logged in user, Login, Main menu, Mentees, Network servers, Online users,
 | 
        
           |  |  | 319 |         // Private files, Recent blog entries, Recently accessed courses, Search forums, Section links, Social activities,
 | 
        
           |  |  | 320 |         // Starred courses, Tags, YouTube.
 | 
        
           |  |  | 321 |         // Hidden by default: Course/site summary, RSS feeds, Self completion, Feedback.
 | 
        
           |  |  | 322 |         static::add_plugin($presetid, 'block', 'activity_modules', true);
 | 
        
           |  |  | 323 |         static::add_plugin($presetid, 'block', 'blog_menu', true);
 | 
        
           |  |  | 324 |         static::add_plugin($presetid, 'block', 'blog_tags', true);
 | 
        
           |  |  | 325 |         static::add_plugin($presetid, 'block', 'comments', true);
 | 
        
           |  |  | 326 |         static::add_plugin($presetid, 'block', 'completionstatus', true);
 | 
        
           |  |  | 327 |         static::add_plugin($presetid, 'block', 'course_list', true);
 | 
        
           |  |  | 328 |         static::add_plugin($presetid, 'block', 'tag_flickr', true);
 | 
        
           |  |  | 329 |         static::add_plugin($presetid, 'block', 'globalsearch', true);
 | 
        
           |  |  | 330 |         static::add_plugin($presetid, 'block', 'badges', true);
 | 
        
           |  |  | 331 |         static::add_plugin($presetid, 'block', 'lp', true);
 | 
        
           |  |  | 332 |         static::add_plugin($presetid, 'block', 'myprofile', true);
 | 
        
           |  |  | 333 |         static::add_plugin($presetid, 'block', 'login', true);
 | 
        
           |  |  | 334 |         static::add_plugin($presetid, 'block', 'site_main_menu', true);
 | 
        
           |  |  | 335 |         static::add_plugin($presetid, 'block', 'mentees', true);
 | 
        
           |  |  | 336 |         static::add_plugin($presetid, 'block', 'mnet_hosts', true);
 | 
        
           |  |  | 337 |         static::add_plugin($presetid, 'block', 'private_files', true);
 | 
        
           |  |  | 338 |         static::add_plugin($presetid, 'block', 'blog_recent', true);
 | 
        
           |  |  | 339 |         static::add_plugin($presetid, 'block', 'search_forums', true);
 | 
        
           |  |  | 340 |         static::add_plugin($presetid, 'block', 'section_links', true);
 | 
        
           |  |  | 341 |         static::add_plugin($presetid, 'block', 'social_activities', true);
 | 
        
           |  |  | 342 |         static::add_plugin($presetid, 'block', 'tags', true);
 | 
        
           |  |  | 343 |         static::add_plugin($presetid, 'block', 'online_users', true);
 | 
        
           |  |  | 344 |         static::add_plugin($presetid, 'block', 'recentlyaccessedcourses', true);
 | 
        
           |  |  | 345 |         static::add_plugin($presetid, 'block', 'starredcourses', true);
 | 
        
           |  |  | 346 |   | 
        
           |  |  | 347 |         // Course formats: Enable Social format.
 | 
        
           |  |  | 348 |         static::add_plugin($presetid, 'format', 'social', true);
 | 
        
           |  |  | 349 |   | 
        
           |  |  | 350 |         // Data formats: Enable Javascript Object Notation (.json).
 | 
        
           |  |  | 351 |         static::add_plugin($presetid, 'dataformat', 'json', true);
 | 
        
           |  |  | 352 |   | 
        
           |  |  | 353 |         // Enrolments: Enable Cohort sync, Guest access.
 | 
        
           |  |  | 354 |         static::add_plugin($presetid, 'enrol', 'cohort', true);
 | 
        
           |  |  | 355 |         static::add_plugin($presetid, 'enrol', 'guest', true);
 | 
        
           |  |  | 356 |   | 
        
           |  |  | 357 |         // Filter: Enable MathJax, Activity names auto-linking.
 | 
        
           |  |  | 358 |         static::add_plugin($presetid, 'filter', 'mathjaxloader', TEXTFILTER_ON);
 | 
        
           |  |  | 359 |         static::add_plugin($presetid, 'filter', 'activitynames', TEXTFILTER_ON);
 | 
        
           |  |  | 360 |   | 
        
           |  |  | 361 |         // Question behaviours: Enable Adaptive mode (no penalties), Deferred feedback with CBM, Immediate feedback with CBM.
 | 
        
           |  |  | 362 |         static::add_plugin($presetid, 'qbehaviour', 'adaptivenopenalty', true);
 | 
        
           |  |  | 363 |         static::add_plugin($presetid, 'qbehaviour', 'deferredcbm', true);
 | 
        
           |  |  | 364 |         static::add_plugin($presetid, 'qbehaviour', 'immediatecbm', true);
 | 
        
           |  |  | 365 |   | 
        
           |  |  | 366 |         // Question types: Enable Calculated, Calculated multichoice, Calculated simple, Drag and drop markers,
 | 
        
           |  |  | 367 |         // Drag and drop onto image, Embedded answers (Cloze), Numerical, Random short-answer matching.
 | 
        
           |  |  | 368 |         static::add_plugin($presetid, 'qtype', 'calculated', true);
 | 
        
           |  |  | 369 |         static::add_plugin($presetid, 'qtype', 'calculatedmulti', true);
 | 
        
           |  |  | 370 |         static::add_plugin($presetid, 'qtype', 'calculatedsimple', true);
 | 
        
           |  |  | 371 |         static::add_plugin($presetid, 'qtype', 'ddmarker', true);
 | 
        
           |  |  | 372 |         static::add_plugin($presetid, 'qtype', 'ddimageortext', true);
 | 
        
           |  |  | 373 |         static::add_plugin($presetid, 'qtype', 'multianswer', true);
 | 
        
           |  |  | 374 |         static::add_plugin($presetid, 'qtype', 'numerical', true);
 | 
        
           |  |  | 375 |         static::add_plugin($presetid, 'qtype', 'randomsamatch', true);
 | 
        
           |  |  | 376 |   | 
        
           |  |  | 377 |         // Repositories: Enable Server files, URL downloader, Wikimedia.
 | 
        
           |  |  | 378 |         static::add_plugin($presetid, 'repository', 'local', true);
 | 
        
           |  |  | 379 |         static::add_plugin($presetid, 'repository', 'url', true);
 | 
        
           |  |  | 380 |         static::add_plugin($presetid, 'repository', 'wikimedia', true);
 | 
        
           |  |  | 381 |     }
 | 
        
           |  |  | 382 | }
 |