Merge branch 'MDL-30408-master' of git://github.com/sammarshallou/moodle
authorEloy Lafuente (stronk7) <stronk7@moodle.org>
Tue, 17 Jan 2012 00:43:19 +0000 (01:43 +0100)
committerEloy Lafuente (stronk7) <stronk7@moodle.org>
Tue, 17 Jan 2012 00:43:19 +0000 (01:43 +0100)
1  2 
course/lib.php
lib/adminlib.php
lib/moodlelib.php

diff --combined course/lib.php
@@@ -49,11 -49,6 +49,11 @@@ define('MOD_CLASS_RESOURCE', 1)
  function make_log_url($module, $url) {
      switch ($module) {
          case 'course':
 +            if (strpos($url, 'report/') === 0) {
 +                // there is only one report type, course reports are deprecated
 +                $url = "/$url";
 +                break;
 +            }
          case 'file':
          case 'login':
          case 'lib':
@@@ -1858,6 -1853,8 +1858,8 @@@ function print_section_add_menus($cours
              $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;
@@@ -3104,12 -3101,11 +3106,12 @@@ function make_editing_buttons(stdClass 
          $str->duplicate      = get_string("duplicate");
          $str->hide           = get_string("hide");
          $str->show           = get_string("show");
 -        $str->clicktochange  = get_string("clicktochange");
 -        $str->forcedmode     = get_string("forcedmode");
 -        $str->groupsnone     = get_string("groupsnone");
 -        $str->groupsseparate = get_string("groupsseparate");
 -        $str->groupsvisible  = get_string("groupsvisible");
 +        $str->groupsnone     = get_string('clicktochangeinbrackets', 'moodle', get_string("groupsnone"));
 +        $str->groupsseparate = get_string('clicktochangeinbrackets', 'moodle', get_string("groupsseparate"));
 +        $str->groupsvisible  = get_string('clicktochangeinbrackets', 'moodle', get_string("groupsvisible"));
 +        $str->forcedgroupsnone     = get_string('forcedmodeinbrackets', 'moodle', get_string("groupsnone"));
 +        $str->forcedgroupsseparate = get_string('forcedmodeinbrackets', 'moodle', get_string("groupsseparate"));
 +        $str->forcedgroupsvisible  = get_string('forcedmodeinbrackets', 'moodle', get_string("groupsvisible"));
      }
  
      $baseurl = new moodle_url('/course/mod.php', array('sesskey' => sesskey()));
          if ($mod->groupmode == SEPARATEGROUPS) {
              $groupmode = 0;
              $grouptitle = $str->groupsseparate;
 +            $forcedgrouptitle = $str->forcedgroupsseparate;
              $groupclass = 'editing_groupsseparate';
              $groupimage = 't/groups';
          } else if ($mod->groupmode == VISIBLEGROUPS) {
              $groupmode = 1;
              $grouptitle = $str->groupsvisible;
 +            $forcedgrouptitle = $str->forcedgroupsvisible;
              $groupclass = 'editing_groupsvisible';
              $groupimage = 't/groupv';
          } else {
              $groupmode = 2;
              $grouptitle = $str->groupsnone;
 +            $forcedgrouptitle = $str->forcedgroupsnone;
              $groupclass = 'editing_groupsnone';
              $groupimage = 't/groupn';
          }
                  new moodle_url($baseurl, array('id' => $mod->id, 'groupmode' => $groupmode)),
                  new pix_icon($groupimage, $grouptitle, 'moodle', array('class' => 'iconsmall')),
                  null,
 -                array('class' => $groupclass, 'title' => $grouptitle.' ('.$str->clicktochange.')')
 +                array('class' => $groupclass, 'title' => $grouptitle)
              );
          } else {
 -            $actions[] = new pix_icon($groupimage, $grouptitle, 'moodle', array('title' => $grouptitle.' ('.$str->forcedmode.')', 'class' => 'iconsmall'));
 +            $actions[] = new pix_icon($groupimage, $forcedgrouptitle, 'moodle', array('title' => $forcedgrouptitle, 'class' => 'iconsmall'));
          }
      }
  
diff --combined lib/adminlib.php
@@@ -3051,7 -3051,7 +3051,7 @@@ class admin_setting_bloglevel extends a
       */
      public function write_setting($data) {
          global $DB, $CFG;
 -        if ($data['bloglevel'] == 0) {
 +        if ($data == 0) {
              $blogblocks = $DB->get_records_select('block', "name LIKE 'blog_%' AND visible = 1");
              foreach ($blogblocks as $block) {
                  $DB->set_field('block', 'visible', 0, array('id' => $block->id));
@@@ -7896,6 -7896,8 +7896,8 @@@ class admin_setting_devicedetectregex e
   * @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 $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;
      }
  
      /**
          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;
diff --combined lib/moodlelib.php
@@@ -417,6 -417,8 +417,8 @@@ define('MOD_ARCHETYPE_OTHER', 0)
  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
@@@ -3365,7 -3367,7 +3367,7 @@@ function get_extra_user_fields($context
      }
  
      // Split showuseridentity on comma
 -    if ($CFG->showuseridentity === '') {
 +    if (empty($CFG->showuseridentity)) {
          // Explode gives wrong result with empty string
          $extra = array();
      } else {
@@@ -5238,11 -5240,6 +5240,11 @@@ function generate_email_supportuser() 
  function setnew_password_and_mail($user) {
      global $CFG, $DB;
  
 +    // we try to send the mail in language the user understands,
 +    // unfortunately the filter_string() does not support alternative langs yet
 +    // so multilang will not work properly for site->fullname
 +    $lang = empty($user->lang) ? $CFG->lang : $user->lang;
 +
      $site  = get_site();
  
      $supportuser = generate_email_supportuser();
      $a->link        = $CFG->wwwroot .'/login/';
      $a->signoff     = generate_email_signoff();
  
 -    $message = get_string('newusernewpasswordtext', '', $a);
 +    $message = (string)new lang_string('newusernewpasswordtext', '', $a, $lang);
  
 -    $subject = format_string($site->fullname) .': '. get_string('newusernewpasswordsubj');
 +    $subject = format_string($site->fullname) .': '. (string)new lang_string('newusernewpasswordsubj', '', $a, $lang);
  
      //directly email rather than using the messaging system to ensure its not routed to a popup or jabber
      return email_to_user($user, $supportuser, $subject, $message);
@@@ -10058,20 -10055,40 +10060,20 @@@ function object_property_exists( $obj, 
   * Detect a custom script replacement in the data directory that will
   * replace an existing moodle script
   *
 - * @param string $urlpath path to the original script
   * @return string|bool full path name if a custom script exists, false if no custom script exists
   */
 -function custom_script_path($urlpath='') {
 -    global $CFG;
 +function custom_script_path() {
 +    global $CFG, $SCRIPT;
  
 -    // set default $urlpath, if necessary
 -    if (empty($urlpath)) {
 -        $urlpath = qualified_me(); // e.g. http://www.this-server.com/moodle/this-script.php
 -    }
 -
 -    // $urlpath is invalid if it is empty or does not start with the Moodle wwwroot
 -    if (empty($urlpath) or (strpos($urlpath, $CFG->wwwroot) === false )) {
 +    if ($SCRIPT === null) {
 +        // Probably some weird external script
          return false;
      }
  
 -    // replace wwwroot with the path to the customscripts folder and clean path
 -    $scriptpath = $CFG->customscripts . clean_param(substr($urlpath, strlen($CFG->wwwroot)), PARAM_PATH);
 -
 -    // remove the query string, if any
 -    if (($strpos = strpos($scriptpath, '?')) !== false) {
 -        $scriptpath = substr($scriptpath, 0, $strpos);
 -    }
 -
 -    // remove trailing slashes, if any
 -    $scriptpath = rtrim($scriptpath, '/\\');
 -
 -    // append index.php, if necessary
 -    if (is_dir($scriptpath)) {
 -        $scriptpath .= '/index.php';
 -    }
 +    $scriptpath = $CFG->customscripts . $SCRIPT;
  
      // check the custom script exists
 -    if (file_exists($scriptpath)) {
 +    if (file_exists($scriptpath) and is_file($scriptpath)) {
          return $scriptpath;
      } else {
          return false;