Merge branch 'MDL-41940' of https://github.com/merrill-oakland/moodle
authorSam Hemelryk <sam@moodle.com>
Tue, 8 Oct 2013 23:41:36 +0000 (12:41 +1300)
committerSam Hemelryk <sam@moodle.com>
Tue, 8 Oct 2013 23:41:36 +0000 (12:41 +1300)
1  2 
admin/settings/plugins.php
lang/en/admin.php

@@@ -1,38 -1,23 +1,38 @@@
  <?php
 -
 -/*
 - * Please note that is file is always loaded last - it means that you can inject entries into other categories too.
 - */
 +// This file is part of Moodle - http://moodle.org/
 +//
 +// Moodle is free software: you can redistribute it and/or modify
 +// it under the terms of the GNU General Public License as published by
 +// the Free Software Foundation, either version 3 of the License, or
 +// (at your option) any later version.
 +//
 +// Moodle is distributed in the hope that it will be useful,
 +// but WITHOUT ANY WARRANTY; without even the implied warranty of
 +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 +// GNU General Public License for more details.
 +//
 +// You should have received a copy of the GNU General Public License
 +// along with Moodle.  If not, see <http://www.gnu.org/licenses/>.
 +
 +/**
 + * Load all plugins into the admin tree.
 + *
 +* Please note that is file is always loaded last - it means that you can inject entries into other categories too.
 +*
 +* @package    core
 +* @copyright  2007 Petr Skoda {@link http://skodak.org}
 +* @license    http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
 +*/
  
  if ($hassiteconfig) {
 -    require_once("$CFG->libdir/pluginlib.php");
 -    $allplugins = plugin_manager::instance()->get_plugins();
 -
      $ADMIN->add('modules', new admin_page_pluginsoverview());
  
      // activity modules
      $ADMIN->add('modules', new admin_category('modsettings', new lang_string('activitymodules')));
      $ADMIN->add('modsettings', new admin_page_managemods());
 -    foreach ($allplugins['mod'] as $module) {
 -        if (!$module->is_updated()) {
 -            continue;
 -        }
 -        $module->load_settings($ADMIN, 'modsettings', $hassiteconfig);
 +    foreach (core_plugin_manager::instance()->get_plugins_of_type('mod') as $plugin) {
 +        /** @var \core\plugininfo\mod $plugin */
 +        $plugin->load_settings($ADMIN, 'modsettings', $hassiteconfig);
      }
  
      // course formats
      $temp = new admin_settingpage('manageformats', new lang_string('manageformats', 'core_admin'));
      $temp->add(new admin_setting_manageformats());
      $ADMIN->add('formatsettings', $temp);
 -    foreach ($allplugins['format'] as $format) {
 -        if (!$format->is_updated()) {
 -            continue;
 -        }
 -        $format->load_settings($ADMIN, 'formatsettings', $hassiteconfig);
 +    foreach (core_plugin_manager::instance()->get_plugins_of_type('format') as $plugin) {
 +        /** @var \core\plugininfo\format $plugin */
 +        $plugin->load_settings($ADMIN, 'formatsettings', $hassiteconfig);
      }
  
      // blocks
      $ADMIN->add('modules', new admin_category('blocksettings', new lang_string('blocks')));
      $ADMIN->add('blocksettings', new admin_page_manageblocks());
 -    foreach ($allplugins['block'] as $block) {
 -        if (!$block->is_updated()) {
 -            continue;
 -        }
 -        $block->load_settings($ADMIN, 'blocksettings', $hassiteconfig);
 +    foreach (core_plugin_manager::instance()->get_plugins_of_type('block') as $plugin) {
 +        /** @var \core\plugininfo\block $plugin */
 +        $plugin->load_settings($ADMIN, 'blocksettings', $hassiteconfig);
      }
  
      // message outputs
      $ADMIN->add('modules', new admin_category('messageoutputs', new lang_string('messageoutputs', 'message')));
      $ADMIN->add('messageoutputs', new admin_page_managemessageoutputs());
      $ADMIN->add('messageoutputs', new admin_page_defaultmessageoutputs());
 -    foreach ($allplugins['message'] as $processor) {
 -        if (!$processor->is_updated()) {
 -            continue;
 -        }
 -        $processor->load_settings($ADMIN, 'messageoutputs', $hassiteconfig);
 +    foreach (core_plugin_manager::instance()->get_plugins_of_type('message') as $plugin) {
 +        /** @var \core\plugininfo\message $plugin */
 +        $plugin->load_settings($ADMIN, 'messageoutputs', $hassiteconfig);
      }
  
      // authentication plugins
      $temp->add(new admin_setting_configtext('recaptchaprivatekey', new lang_string('recaptchaprivatekey', 'admin'), new lang_string('configrecaptchaprivatekey', 'admin'), '', PARAM_NOTAGS));
      $ADMIN->add('authsettings', $temp);
  
 -    foreach ($allplugins['auth'] as $auth) {
 -        if (!$auth->is_updated()) {
 -            continue;
 -        }
 -        $auth->load_settings($ADMIN, 'authsettings', $hassiteconfig);
 +    $temp = new admin_externalpage('authtestsettings', get_string('testsettings', 'core_auth'), new moodle_url("/auth/test_settings.php"), 'moodle/site:config', true);
 +    $ADMIN->add('authsettings', $temp);
 +
 +    foreach (core_plugin_manager::instance()->get_plugins_of_type('auth') as $plugin) {
 +        /** @var \core\plugininfo\auth $plugin */
 +        $plugin->load_settings($ADMIN, 'authsettings', $hassiteconfig);
      }
  
      // Enrolment plugins
      $temp = new admin_settingpage('manageenrols', new lang_string('manageenrols', 'enrol'));
      $temp->add(new admin_setting_manageenrols());
      $ADMIN->add('enrolments', $temp);
 -    foreach($allplugins['enrol'] as $enrol) {
 -        if (!$enrol->is_updated()) {
 -            continue;
 -        }
 -        $enrol->load_settings($ADMIN, 'enrolments', $hassiteconfig);
 +
 +    $temp = new admin_externalpage('enroltestsettings', get_string('testsettings', 'core_enrol'), new moodle_url("/enrol/test_settings.php"), 'moodle/site:config', true);
 +    $ADMIN->add('enrolments', $temp);
 +
 +    foreach(core_plugin_manager::instance()->get_plugins_of_type('enrol') as $plugin) {
 +        /** @var \core\plugininfo\enrol $plugin */
 +        $plugin->load_settings($ADMIN, 'enrolments', $hassiteconfig);
      }
  
  
      $temp = new admin_settingpage('manageeditors', new lang_string('editorsettings', 'editor'));
      $temp->add(new admin_setting_manageeditors());
      $ADMIN->add('editorsettings', $temp);
 -    foreach ($allplugins['editor'] as $editor) {
 -        if (!$editor->is_updated()) {
 -            continue;
 -        }
 -        $editor->load_settings($ADMIN, 'editorsettings', $hassiteconfig);
 +    foreach (core_plugin_manager::instance()->get_plugins_of_type('editor') as $plugin) {
 +        /** @var \core\plugininfo\editor $plugin */
 +        $plugin->load_settings($ADMIN, 'editorsettings', $hassiteconfig);
      }
  
  /// License types
      }
      $ADMIN->add('filtersettings', $temp);
  
 -    foreach ($allplugins['filter'] as $filter) {
 -        if (!$filter->is_updated()) {
 -            continue;
 -        }
 -        $filter->load_settings($ADMIN, 'filtersettings', $hassiteconfig);
 +    foreach (core_plugin_manager::instance()->get_plugins_of_type('filter') as $plugin) {
 +        /** @var \core\plugininfo\filter $plugin */
 +        $plugin->load_settings($ADMIN, 'filtersettings', $hassiteconfig);
      }
  
  
      $temp->add(new admin_setting_configtext('repositorycacheexpire', new lang_string('cacheexpire', 'repository'), new lang_string('configcacheexpire', 'repository'), 120));
      $temp->add(new admin_setting_configcheckbox('repositoryallowexternallinks', new lang_string('allowexternallinks', 'repository'), new lang_string('configallowexternallinks', 'repository'), 1));
      $temp->add(new admin_setting_configcheckbox('legacyfilesinnewcourses', new lang_string('legacyfilesinnewcourses', 'admin'), new lang_string('legacyfilesinnewcourses_help', 'admin'), 0));
+     $temp->add(new admin_setting_configcheckbox('legacyfilesaddallowed', new lang_string('legacyfilesaddallowed', 'admin'), new lang_string('legacyfilesaddallowed_help', 'admin'), 1));
      $ADMIN->add('repositorysettings', $temp);
      $ADMIN->add('repositorysettings', new admin_externalpage('repositorynew',
          new lang_string('addplugin', 'repository'), $url, 'moodle/site:config', true));
          new lang_string('createrepository', 'repository'), $url, 'moodle/site:config', true));
      $ADMIN->add('repositorysettings', new admin_externalpage('repositoryinstanceedit',
          new lang_string('editrepositoryinstance', 'repository'), $url, 'moodle/site:config', true));
 -    foreach ($allplugins['repository'] as $repositorytype) {
 -        if (!$repositorytype->is_updated()) {
 -            continue;
 -        }
 -        $repositorytype->load_settings($ADMIN, 'repositorysettings', $hassiteconfig);
 +    foreach (core_plugin_manager::instance()->get_plugins_of_type('repository') as $plugin) {
 +        /** @var \core\plugininfo\repository $plugin */
 +        $plugin->load_settings($ADMIN, 'repositorysettings', $hassiteconfig);
      }
  
  /// Web services
                          'admin'), new lang_string('configenablewsdocumentation', 'admin', $wsdoclink), false));
      $ADMIN->add('webservicesettings', $temp);
      /// links to protocol pages
 -    foreach ($allplugins['webservice'] as $webservice) {
 -        if (!$webservice->is_updated()) {
 -            continue;
 -        }
 -        $webservice->load_settings($ADMIN, 'webservicesettings', $hassiteconfig);
 +    foreach (core_plugin_manager::instance()->get_plugins_of_type('webservice') as $plugin) {
 +        /** @var \core\plugininfo\webservice $plugin */
 +        $plugin->load_settings($ADMIN, 'webservicesettings', $hassiteconfig);
      }
      /// manage token page link
      $ADMIN->add('webservicesettings', new admin_externalpage('addwebservicetoken', new lang_string('managetokens', 'webservice'), "$CFG->wwwroot/$CFG->admin/webservice/tokens.php", 'moodle/site:config', true));
  
  // Question type settings
  if ($hassiteconfig || has_capability('moodle/question:config', $systemcontext)) {
 -    if (!$hassiteconfig) {
 -        require_once("$CFG->libdir/pluginlib.php");
 -        $allplugins = plugin_manager::instance()->get_plugins();
 -    }
  
      // Question behaviour settings.
      $ADMIN->add('modules', new admin_category('qbehavioursettings', new lang_string('questionbehaviours', 'admin')));
              get_string('responsehistory', 'question'), '', 0, $hiddenofvisible));
  
      // Settings for particular question types.
 -    foreach ($allplugins['qtype'] as $qtype) {
 -        if (!$qtype->is_updated()) {
 -            continue;
 -        }
 -        $qtype->load_settings($ADMIN, 'qtypesettings', $hassiteconfig);
 +    foreach (core_plugin_manager::instance()->get_plugins_of_type('qtype') as $plugin) {
 +        /** @var \core\plugininfo\qtype $plugin */
 +        $plugin->load_settings($ADMIN, 'qtypesettings', $hassiteconfig);
      }
  }
  
@@@ -404,8 -407,10 +405,8 @@@ if ($hassiteconfig && !empty($CFG->enab
      $ADMIN->add('plagiarism', new admin_externalpage('manageplagiarismplugins', new lang_string('manageplagiarism', 'plagiarism'),
          $CFG->wwwroot . '/' . $CFG->admin . '/plagiarism.php'));
  
 -    foreach ($allplugins['plagiarism'] as $plugin) {
 -        if (!$plugin->is_updated()) {
 -            continue;
 -        }
 +    foreach (core_plugin_manager::instance()->get_plugins_of_type('plagiarism') as $plugin) {
 +        /** @var \core\plugininfo\plagiarism $plugin */
          $plugin->load_settings($ADMIN, 'plagiarism', $hassiteconfig);
      }
  }
@@@ -462,10 -467,12 +463,10 @@@ if ($hassiteconfig) 
                                                       $CFG->wwwroot . '/' . $CFG->admin . '/tools.php'));
  }
  
 -// Now add various admin tools
 -foreach (core_component::get_plugin_list('tool') as $plugin => $plugindir) {
 -    $settings_path = "$plugindir/settings.php";
 -    if (file_exists($settings_path)) {
 -        include($settings_path);
 -    }
 +// Now add various admin tools.
 +foreach (core_plugin_manager::instance()->get_plugins_of_type('tool') as $plugin) {
 +    /** @var \core\plugininfo\tool $plugin */
 +    $plugin->load_settings($ADMIN, null, $hassiteconfig);
  }
  
  // Now add the Cache plugins
@@@ -491,9 -498,12 +492,9 @@@ if ($hassiteconfig) 
                                                          $CFG->wwwroot . '/' . $CFG->admin . '/localplugins.php'));
  }
  
 -// extend settings for each local plugin. Note that their settings may be in any part of the
 -// settings tree and may be visible not only for administrators. We can not use $allplugins here
 -foreach (core_component::get_plugin_list('local') as $plugin => $plugindir) {
 -    $settings_path = "$plugindir/settings.php";
 -    if (file_exists($settings_path)) {
 -        include($settings_path);
 -        continue;
 -    }
 +// Extend settings for each local plugin. Note that their settings may be in any part of the
 +// settings tree and may be visible not only for administrators.
 +foreach (core_plugin_manager::instance()->get_plugins_of_type('local') as $plugin) {
 +    /** @var \core\plugininfo\local $plugin */
 +    $plugin->load_settings($ADMIN, null, $hassiteconfig);
  }
diff --combined lang/en/admin.php
@@@ -25,7 -25,6 +25,7 @@@
  
  $string['accessdenied'] = 'Access denied';
  $string['accounts'] = 'Accounts';
 +$string['addcategory'] = 'Add a category';
  $string['additionalhtml'] = 'Additional HTML';
  $string['additionalhtml_heading'] = 'Additional HTML to be added to every page.';
  $string['additionalhtml_desc'] = 'These settings allow you to specify HTML that you want added to every page. You can set HTML that will be added within the HEAD tag for the page, immediately after the BODY tag has been opened, or immediately before the body tag is closed.<br />Doing this allows you add custom headers or footers on every page, or add support for services like Google Analytics very easily and independent of your chosen theme.';
@@@ -278,7 -277,6 +278,7 @@@ $string['confignotloggedinroleid'] = 'U
  $string['configopentogoogle'] = 'If you enable this setting, then Google will be allowed to enter your site as a Guest.  In addition, people coming in to your site via a Google search will automatically be logged in as a Guest.  Note that this only provides transparent access to courses that already allow guest access.';
  $string['configoverride'] = 'Defined in config.php';
  $string['configpasswordpolicy'] = 'Turning this on will make Moodle check user passwords against a valid password policy. Use the settings below to specify your policy (they will be ignored if you set this to \'No\').';
 +$string['configpasswordresettime'] = 'This specifies the amount of time people have to validate a password reset request before it expires. Usually 30 minutes is a good value.';
  $string['configpathtoclam'] = 'Path to clam AV.  Probably something like /usr/bin/clamscan or /usr/bin/clamdscan. You need this in order for clam AV to run.';
  $string['configpathtodu'] = 'Path to du. Probably something like /usr/bin/du. If you enter this, pages that display directory contents will run much faster for directories with a lot of files.';
  $string['configperfdebug'] = 'If you turn this on, performance info will be printed in the footer of the standard theme';
@@@ -364,7 -362,7 +364,7 @@@ $string['coursecontact'] = 'Course cont
  $string['coursecontact_desc'] = 'This setting allows you to control who appears on the course description. Users need to have at least one of these roles in a course to be shown on the course description for that course.';
  $string['courselistshortnames'] = 'Display extended course names';
  $string['courselistshortnames_desc'] = 'If enabled, course short names will be displayed in addition to full names in course lists. If required, extended course names may be customised by editing the \'courseextendednamedisplay\' language string using the language customisation feature.';
 -$string['coursemgmt'] = 'Add/edit courses';
 +$string['coursemgmt'] = 'Manage courses and categories';
  $string['courseoverview'] = 'Course overview';
  $string['courserequestnotify'] = 'Course request notification';
  $string['courserequestnotifyemail'] = 'User {$a->user} requested a new course at {$a->link}';
@@@ -623,6 -621,8 +623,8 @@@ $string['languagesettings'] = 'Languag
  $string['latexpreamble'] = 'LaTeX preamble';
  $string['latexsettings'] = 'LaTeX renderer Settings';
  $string['latinexcelexport'] = 'Excel encoding';
+ $string['legacyfilesaddallowed'] = 'Allow adding to legacy course files';
+ $string['legacyfilesaddallowed_help'] = 'If a course has legacy course files, allow new files and folders to be added to it.';
  $string['legacyfilesinnewcourses'] = 'Legacy course files in new courses';
  $string['legacyfilesinnewcourses_help'] = 'By default legacy course files areas are available only in upgraded courses. Please note some features like single activity backup/restore are not compatible with this settings.';
  $string['licensesettings'] = 'Licence settings';
@@@ -780,7 -780,6 +782,7 @@@ $string['order2'] = 'Second'
  $string['order3'] = 'Third';
  $string['order4'] = 'Fourth';
  $string['passwordpolicy'] = 'Password policy';
 +$string['passwordresettime'] = 'Maximum time to validate password reset request';
  $string['pathconvert'] = 'Path of <i>convert</i> binary';
  $string['pathdvips'] = 'Path of <i>dvips</i> binary';
  $string['pathlatex'] = 'Path of <i>latex</i> binary';
@@@ -1105,6 -1104,7 +1107,6 @@@ $string['upgradingversion'] = 'Upgradin
  $string['upwards'] = 'upwards';
  $string['useblogassociations'] = 'Enable associations';
  $string['useexternalyui'] = 'Use online YUI libraries';
 -$string['usehtmleditor'] = 'Use HTML editor';
  $string['user'] = 'User';
  $string['userbulk'] = 'Bulk user actions';
  $string['userlist'] = 'Browse list of users';