Merge branch 'MDL-28179' of git://github.com/timhunt/moodle
authorEloy Lafuente (stronk7) <stronk7@moodle.org>
Tue, 5 Jul 2011 23:45:15 +0000 (01:45 +0200)
committerEloy Lafuente (stronk7) <stronk7@moodle.org>
Tue, 5 Jul 2011 23:45:15 +0000 (01:45 +0200)
12 files changed:
admin/settings/courses.php
auth/ldap/auth.php
backup/backup.class.php
course/edit_form.php
lang/en/moodle.php
lib/adminlib.php
lib/blocklib.php
lib/db/upgrade.php
lib/dml/moodle_database.php
mod/quiz/report/overview/overview_table.php
mod/quiz/report/overview/report.php
mod/quiz/report/statistics/report.php

index 13291c7..45b1ab3 100644 (file)
@@ -21,10 +21,11 @@ if ($hassiteconfig
         $formcourseformats[$courseformat] = get_string('pluginname', "format_$courseformat");
     }
     $temp->add(new admin_setting_configselect('moodlecourse/format', get_string('format'), get_string('coursehelpformat'), 'weeks',$formcourseformats));
-    for ($i=1; $i<=52; $i++) {
-        $sectionmenu[$i] = "$i";
-    }
-    $temp->add(new admin_setting_configselect('moodlecourse/numsections', get_string('numberweeks'), get_string('coursehelpnumberweeks'), 10,$sectionmenu));
+
+    $temp->add(new admin_setting_configtext('moodlecourse/maxsections', get_string('maxnumberweeks'), get_string('maxnumberweeks_desc'), 52));
+
+    $temp->add(new admin_settings_num_course_sections('moodlecourse/numsections', get_string('numberweeks'), get_string('coursehelpnumberweeks'), 10));
+
     $choices = array();
     $choices['0'] = get_string('hiddensectionscollapsed');
     $choices['1'] = get_string('hiddensectionsinvisible');
@@ -33,15 +34,14 @@ if ($hassiteconfig
     $temp->add(new admin_setting_configselect('moodlecourse/newsitems', get_string('newsitemsnumber'), get_string('coursehelpnewsitemsnumber'), 5,$options));
     $temp->add(new admin_setting_configselect('moodlecourse/showgrades', get_string('showgrades'), get_string('coursehelpshowgrades'), 1,array(0 => get_string('no'), 1 => get_string('yes'))));
     $temp->add(new admin_setting_configselect('moodlecourse/showreports', get_string('showreports'), '', 0,array(0 => get_string('no'), 1 => get_string('yes'))));
+
     if (isset($CFG->maxbytes)) {
         $choices = get_max_upload_sizes($CFG->maxbytes);
     } else {
         $choices = get_max_upload_sizes();
     }
-
     $temp->add(new admin_setting_configselect('moodlecourse/maxbytes', get_string('maximumupload'), get_string('coursehelpmaximumupload'), key($choices), $choices));
 
-
     if (!empty($CFG->legacyfilesinnewcourses)) {
         $choices = array('0'=>get_string('no'), '2'=>get_string('yes'));
         $temp->add(new admin_setting_configselect('moodlecourse/legacyfiles', get_string('courselegacyfiles'), get_string('courselegacyfiles_help'), key($choices), $choices));
index 1fd3909..447b6a6 100644 (file)
@@ -1385,7 +1385,7 @@ class auth_plugin_ldap extends auth_plugin_base {
                 }
             }
         }
-        $moodleattributes['username'] = $this->config->user_attribute;
+        $moodleattributes['username'] = moodle_strtolower(trim($this->config->user_attribute));
         return $moodleattributes;
     }
 
index 5a1814d..51c0ec6 100644 (file)
@@ -118,6 +118,6 @@ abstract class backup implements checksumable {
 abstract class backup_exception extends moodle_exception {
 
     public function __construct($errorcode, $a=NULL, $debuginfo=null) {
-        parent::__construct($errorcode, 'error', '', $a, null, $debuginfo);
+        parent::__construct($errorcode, 'error', '', $a, $debuginfo);
     }
 }
index 43271c4..888e0c3 100644 (file)
@@ -120,8 +120,8 @@ class course_edit_form extends moodleform {
         $mform->addHelpButton('format', 'format');
         $mform->setDefault('format', $courseconfig->format);
 
-        for ($i=1; $i<=52; $i++) {
-          $sectionmenu[$i] = "$i";
+        for ($i = 0; $i <= $courseconfig->maxsections; $i++) {
+            $sectionmenu[$i] = "$i";
         }
         $mform->addElement('select', 'numsections', get_string('numberweeks'), $sectionmenu);
         $mform->setDefault('numsections', $courseconfig->numsections);
index 8e3fbc9..f97e4bd 100644 (file)
@@ -304,7 +304,7 @@ $string['coursehelpforce'] = 'Force the course group mode to every activity in t
 $string['coursehelpformat'] = 'The course main page will be displayed in this format.';
 $string['coursehelphiddensections'] = 'How the hidden sections in the course are displayed to students.';
 $string['coursehelpmaximumupload'] = 'Define the largest size of file that can be uploaded in this course, limited by the site-wide setting.';
-$string['coursehelpnewsitemsnumber'] = 'Number of recent items appearing on the course home page, in a news box down the right-hand side <br/>(0 means the news box won\'t appear).';
+$string['coursehelpnewsitemsnumber'] = 'Number of recent items appearing on the course home page, in a news box down the right-hand side (0 means the news box won\'t appear).';
 $string['coursehelpnumberweeks'] = 'Number of weeks/topics displayed on the course main page.';
 $string['coursehelpshowgrades'] = 'Enable the display of the gradebook. It does not prevent grades from being displayed within the individual activities.';
 $string['coursehidden'] = 'This course is currently unavailable to students';
@@ -981,6 +981,8 @@ $string['maximumchars'] = 'Maximum of {$a} characters';
 $string['maximumshort'] = 'Max';
 $string['maximumupload'] = 'Maximum upload size';
 $string['maximumupload_help'] = 'This setting determines the largest size of file that can be uploaded to the course, limited by the site-wide setting set by an administrator. Activity modules also include a maximum upload size setting for further restricting the file size.';
+$string['maxnumberweeks'] = 'Maximum for number of weeks/topics';
+$string['maxnumberweeks_desc'] = 'This controls the maximum options that appears in the "Number of weeks/topics" setting for courses.';
 $string['maxsize'] = 'Max size: {$a}';
 $string['maxfilesize'] = 'Maximum size for new files: {$a}';
 $string['maxnumcoursesincombo'] = 'Browse <a href="{$a->link}">{$a->numberofcourses} courses</a>.';
index 2f32d8a..4ce6885 100644 (file)
@@ -3591,6 +3591,32 @@ class admin_settings_country_select extends admin_setting_configselect {
 }
 
 
+/**
+ * admin_setting_configselect for the default number of sections in a course,
+ * simply so we can lazy-load the choices.
+ *
+ * @copyright 2011 The Open University
+ * @license   http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
+ */
+class admin_settings_num_course_sections extends admin_setting_configselect {
+    public function __construct($name, $visiblename, $description, $defaultsetting) {
+        parent::__construct($name, $visiblename, $description, $defaultsetting, array());
+    }
+
+    /** Lazy-load the available choices for the select box */
+    public function load_choices() {
+        $max = get_config('moodlecourse', 'maxsections');
+        if (empty($max)) {
+            $max = 52;
+        }
+        for ($i = 0; $i <= $max; $i++) {
+            $this->choices[$i] = "$i";
+        }
+        return true;
+    }
+}
+
+
 /**
  * Course category selection
  *
index 1fc331b..4c816c2 100644 (file)
@@ -557,6 +557,10 @@ class block_manager {
             'contextid2' => $context->id,
             'pagetype' => $this->page->pagetype,
         );
+        if ($this->page->subpage === '') {
+            $params['subpage1'] = $DB->sql_empty();
+            $params['subpage2'] = $DB->sql_empty();
+        }
         $sql = "SELECT
                     bi.id,
                     bp.id AS blockpositionid,
index 271fb12..397f045 100644 (file)
@@ -1854,7 +1854,7 @@ WHERE gradeitemid IS NOT NULL AND grademax IS NOT NULL");
                                   WHERE ctx.id = bi.contextid)
                            ELSE bi.pagetypepattern END,
                        CASE WHEN bi.subpagepattern IS NULL
-                           THEN ''
+                           THEN '" . $DB->sql_empty() . "'
                            ELSE bi.subpagepattern END,
                        0, bi.defaultregion, bi.defaultweight
                   FROM {block_instances} bi
index d525a4b..83885c3 100644 (file)
@@ -160,9 +160,10 @@ abstract class moodle_database {
      * Loads and returns a database instance with the specified type and library.
      * @param string $type database type of the driver (mysqli, pgsql, mssql, sqldrv, oci, etc.)
      * @param string $library database library of the driver (native, pdo, etc.)
+     * @param boolean $external true if this is an external database
      * @return moodle_database driver object or null if error
      */
-    public static function get_driver_instance($type, $library) {
+    public static function get_driver_instance($type, $library, $external = false) {
         global $CFG;
 
         $classname = $type.'_'.$library.'_moodle_database';
@@ -173,7 +174,7 @@ abstract class moodle_database {
         }
 
         require_once($libfile);
-        return new $classname();
+        return new $classname($external);
     }
 
     /**
index 0491ef9..55aacb3 100644 (file)
@@ -75,7 +75,7 @@ class quiz_report_overview_table extends quiz_attempt_report_table {
                         $namekey => get_string('groupavg', 'grades'),
                         'sumgrades' => $this->format_average($record),
                         'feedbacktext'=> strip_tags(quiz_report_feedback_for_grade(
-                                                    $record->grade, $this->quiz->id)));
+                                            $record->grade, $this->quiz->id, $this->context)));
                 if ($this->detailedmarks && ($this->quiz->attempts == 1 || $this->qmsubselect)) {
                     $avggradebyq = $this->load_average_question_grades($this->groupstudents);
                     $groupaveragerow += $this->format_average_grade_for_questions($avggradebyq);
index c36f4a5..de70778 100644 (file)
@@ -509,7 +509,7 @@ class quiz_overview_report extends quiz_attempt_report {
         $usertest = '';
         $params = array();
         if ($groupstudents) {
-            list($usql, $params) = get_in_or_equal($groupstudents);
+            list($usql, $params) = $DB->get_in_or_equal($groupstudents);
             $usertest = "quiza.userid $usql AND ";
         }
 
index 87a89ad..3ef7520 100644 (file)
@@ -1039,7 +1039,7 @@ class quiz_statistics_report extends quiz_default_report {
 
 function quiz_statistics_attempts_sql($quizid, $currentgroup, $groupstudents,
         $allattempts = true, $includeungraded = false) {
-    global $CFG;
+    global $DB;
 
     $fromqa = '{quiz_attempts} quiza ';
 
@@ -1047,7 +1047,7 @@ function quiz_statistics_attempts_sql($quizid, $currentgroup, $groupstudents,
     $qaparams = array('quizid' => $quizid);
 
     if (!empty($currentgroup) && $groupstudents) {
-        list($grpsql, $grpparams) = get_in_or_equal(array_keys($groupstudents),
+        list($grpsql, $grpparams) = $DB->get_in_or_equal(array_keys($groupstudents),
                 SQL_PARAMS_NAMED, 'u');
         $whereqa .= " AND quiza.userid $grpsql";
         $qaparams += $grpparams;