Merge branch 'master' into backup-convert
authorDavid Mudrak <david@moodle.com>
Fri, 13 May 2011 01:16:13 +0000 (03:16 +0200)
committerDavid Mudrak <david@moodle.com>
Fri, 13 May 2011 01:16:13 +0000 (03:16 +0200)
17 files changed:
blocks/completionstatus/block_completionstatus.php
blocks/completionstatus/details.php
blocks/completionstatus/lang/en/block_completionstatus.php
blocks/selfcompletion/block_selfcompletion.php
blocks/selfcompletion/lang/en/block_selfcompletion.php
blog/locallib.php
course/format/weeks/lib.php
lang/en/completion.php
lib/blocklib.php
lib/completionlib.php
lib/dml/mysqli_native_moodle_database.php
lib/dml/simpletest/testdml.php
lib/simpletest/testpagelib_moodlepage.php
lib/simpletestlib.php
lib/upgradelib.php
mod/feedback/item/multichoice/lib.php
version.php

index 0d7d104..2f84a3c 100644 (file)
@@ -47,19 +47,34 @@ class block_completionstatus extends block_base {
         // Create empty content
         $this->content = new stdClass;
 
+        // Can edit settings?
+        $can_edit = has_capability('moodle/course:update', get_context_instance(CONTEXT_COURSE, $this->page->course->id));
+
+        // Get course completion data
+        $info = new completion_info($this->page->course);
+
         // Don't display if completion isn't enabled!
-        if (!$this->page->course->enablecompletion) {
-            $this->content->text = get_string('completionnotenabled', 'block_completionstatus');
+        if (!completion_info::is_enabled_for_site()) {
+            if ($can_edit) {
+                $this->content->text = get_string('completionnotenabledforsite', 'completion');
+            }
+            return $this->content;
+
+        } else if (!$info->is_enabled()) {
+            if ($can_edit) {
+                $this->content->text = get_string('completionnotenabledforcourse', 'completion');
+            }
             return $this->content;
         }
 
         // Load criteria to display
-        $info = new completion_info($this->page->course);
         $completions = $info->get_completions($USER->id);
 
         // Check if this course has any criteria
         if (empty($completions)) {
-            $this->content->text = get_string('nocriteria', 'block_completionstatus');
+            if ($can_edit) {
+                $this->content->text = get_string('nocriteriaset', 'completion');
+            }
             return $this->content;
         }
 
index 625dee8..5d4db9b 100644 (file)
@@ -60,14 +60,11 @@ $can_view = false;
 // Can view own report
 if ($USER->id == $user->id) {
     $can_view = true;
-}
-elseif (has_capability('moodle/user:viewuseractivitiesreport', $personalcontext)) {
+} else if (has_capability('moodle/user:viewuseractivitiesreport', $personalcontext)) {
     $can_view = true;
-}
-elseif (has_capability('coursereport/completion:view', $coursecontext)) {
+} else if (has_capability('coursereport/completion:view', $coursecontext)) {
     $can_view = true;
-}
-elseif (has_capability('coursereport/completion:view', $personalcontext)) {
+} else if (has_capability('coursereport/completion:view', $personalcontext)) {
     $can_view = true;
 }
 
@@ -76,23 +73,31 @@ if (!$can_view) {
 }
 
 
+// Load completion data
+$info = new completion_info($course);
+
+$returnurl = "{$CFG->wwwroot}/course/view.php?id={$id}";
+
 // Don't display if completion isn't enabled!
-if (!$course->enablecompletion) {
-    print_error('completionnotenabled', 'block_completionstatus');
+if (!$info->is_enabled()) {
+    print_error('completionnotenabled', 'completion', $returnurl);
 }
 
 // Load criteria to display
-$info = new completion_info($course);
 $completions = $info->get_completions($user->id);
 
 // Check if this course has any criteria
 if (empty($completions)) {
-    print_error('nocriteria', 'block_completionstatus');
+    print_error('nocriteriaset', 'completion', $returnurl);
 }
 
 // Check this user is enroled
 if (!$info->is_tracked_user($user->id)) {
-    print_error('notenroled', 'completion');
+    if ($USER->id == $user->id) {
+        print_error('notenroled', 'completion', $returnurl);
+    } else {
+        print_error('usernotenroled', 'completion', $returnurl);
+    }
 }
 
 
index 9a8f6b6..a24ec57 100644 (file)
@@ -1,9 +1,7 @@
 <?php
 
-$string['completionnotenabled'] = 'Course completion is not enabled';
 $string['completionprogressdetails'] = 'Completion progress details';
 $string['completionstatus'] = 'Course completion status';
 $string['criteriagroup'] = 'Criteria group';
-$string['nocriteria'] = 'No criteria have been set for this course';
 $string['pluginname'] = 'Course completion status';
 $string['requirement'] = 'Requirement';
index a5a7da9..9954a39 100644 (file)
@@ -40,36 +40,44 @@ class block_selfcompletion extends block_base {
     }
 
     public function get_content() {
-        global $USER;
+        global $CFG, $USER;
 
         // If content is cached
         if ($this->content !== NULL) {
           return $this->content;
         }
 
-        global $CFG;
-
         // Create empty content
         $this->content = new stdClass;
 
-        // Don't display if completion isn't enabled!
-        if (!$this->page->course->enablecompletion) {
-            $this->content->text = get_string('completionnotenabled', 'block_selfcompletion');
-            return $this->content;
-        }
+        // Can edit settings?
+        $can_edit = has_capability('moodle/course:update', get_context_instance(CONTEXT_COURSE, $this->page->course->id));
 
         // Get course completion data
         $info = new completion_info($this->page->course);
-        $completion = $info->get_completion($USER->id, COMPLETION_CRITERIA_TYPE_SELF);
 
-        // Is course complete?
-        if ($info->is_course_complete($USER->id)) {
+        // Don't display if completion isn't enabled!
+        if (!completion_info::is_enabled_for_site()) {
+            if ($can_edit) {
+                $this->content->text = get_string('completionnotenabledforsite', 'completion');
+            }
+            return $this->content;
+
+        } else if (!$info->is_enabled()) {
+            if ($can_edit) {
+                $this->content->text = get_string('completionnotenabledforcourse', 'completion');
+            }
             return $this->content;
         }
 
+        // Get this user's data
+        $completion = $info->get_completion($USER->id, COMPLETION_CRITERIA_TYPE_SELF);
+
         // Check if self completion is one of this course's criteria
         if (empty($completion)) {
-            $this->content->text = get_string('selfcompletionnotenabled', 'block_selfcompletion');
+            if ($can_edit) {
+                $this->content->text = get_string('selfcompletionnotenabled', 'block_selfcompletion');
+            }
             return $this->content;
         }
 
@@ -79,13 +87,21 @@ class block_selfcompletion extends block_base {
             return $this->content;
         }
 
+        // Is course complete?
+        if ($info->is_course_complete($USER->id)) {
+            $this->content->text = get_string('coursealreadycompleted', 'completion');
+            return $this->content;
+
         // Check if the user has already marked themselves as complete
-        if ($completion->is_complete()) {
+        } else if ($completion->is_complete()) {
+            $this->content->text = get_string('alreadyselfcompleted', 'block_selfcompletion');
             return $this->content;
+
+        // If user is not complete, or has not yet self completed
         } else {
             $this->content->text = '';
-            $this->content->footer = '<br /><a href="'.$CFG->wwwroot.'/course/togglecompletion.php?course='.$this->page->course->id.'">'.
-                                       get_string('completecourse', 'block_selfcompletion').'</a>...';
+            $this->content->footer = '<br /><a href="'.$CFG->wwwroot.'/course/togglecompletion.php?course='.$this->page->course->id.'">';
+            $this->content->footer .= get_string('completecourse', 'block_selfcompletion').'</a>...';
         }
 
         return $this->content;
index 45775d8..03cf0dc 100644 (file)
@@ -23,8 +23,8 @@
  * @license   http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
  */
 
-$string['selfcompletion'] = 'Self completion';
-$string['pluginname'] = 'Self completion';
+$string['alreadyselfcompleted'] = 'You have already marked yourself as complete in this course';
 $string['completecourse'] = 'Complete course';
-$string['completionnotenabled'] = 'Course completion is not enabled';
+$string['pluginname'] = 'Self completion';
+$string['selfcompletion'] = 'Self completion';
 $string['selfcompletionnotenabled'] = 'The self completion criteria has not been enabled for this course';
index 77d2ffd..51afba8 100644 (file)
@@ -117,7 +117,7 @@ class blog_entry {
         $this->summary = file_rewrite_pluginfile_urls($this->summary, 'pluginfile.php', SYSCONTEXTID, 'blog', 'post', $this->id);
 
         $options = array('overflowdiv'=>true);
-        $template['body'] = format_text($this->summary, $this->summaryformat, $options).$cmttext;
+        $template['body'] = format_text($this->summary, $this->summaryformat, $options);
         $template['title'] = format_string($this->subject);
         $template['userid'] = $user->id;
         $template['author'] = fullname($user);
@@ -307,6 +307,9 @@ class blog_entry {
             $contentcell->text .= '</div>';
         }
 
+        //add comments under everything
+        $contentcell->text .= $cmttext;
+
         $mainrow->cells[] = $contentcell;
         $table->data = array($mainrow);
 
index 38aa940..e37454f 100644 (file)
@@ -89,7 +89,7 @@ function callback_weeks_get_section_name($course, $section) {
         foreach ($sections as $sec) {
             if ($sec->id == $section->id) {
                 break;
-            } else if ($sec->visible && $sec->section != 0) {
+            } else if ($sec->section != 0) {
                 $weekdate += 604800;
             }
         }
index 00b6a9d..66fc44d 100644 (file)
@@ -56,6 +56,9 @@ $string['completion_manual'] = 'Students can manually mark the activity as compl
 $string['completion_none'] = 'Do not indicate activity completion';
 $string['completion-title-manual-n'] = 'Mark as complete';
 $string['completion-title-manual-y'] = 'Mark as not complete';
+$string['completionnotenabled'] = 'Completion is not enabled';
+$string['completionnotenabledforcourse'] = 'Completion is not enabled for this course';
+$string['completionnotenabledforsite'] = 'Completion is not enabled for this site';
 $string['completionusegrade'] = 'Require grade';
 $string['completionusegrade_help'] = 'If enabled, the activity is considered complete when a student receives a grade. Pass and fail icons may be displayed if a pass grade for the activity has been set.';
 $string['completionusegrade_desc'] = 'Student must receive a grade to complete this activity';
@@ -93,6 +96,7 @@ $string['completionsettingslocked']='Completion settings locked';
 $string['completionstartonenrol']='Completion tracking begins on enrolment';
 $string['completionstartonenrolhelp']='Begin tracking a student\'s progress in course completion after course enrolment';
 $string['confirmselfcompletion']='Confirm self completion';
+$string['coursealreadycompleted']='You have already completed this course';
 $string['coursecomplete']='Course complete';
 $string['coursecompleted']='Course completed';
 $string['coursegrade']='Course grade';
@@ -121,7 +125,8 @@ $string['markcomplete']='Mark complete';
 $string['markedcompleteby']='Marked complete by {$a}';
 $string['markingyourselfcomplete']='Marking yourself complete';
 $string['moredetails']='More details';
-$string['notenroled']='You are not enroled as a student in this course';
+$string['nocriteriaset']='No completion criteria set for this course';
+$string['notenroled']='You are not enroled in this course';
 $string['notyetstarted']='Not yet started';
 $string['overallcriteriaaggregation']='Overall criteria type aggregation';
 $string['passinggrade']='Passing grade';
@@ -142,6 +147,7 @@ $string['unenrolingfromcourse']='Unenroling from course';
 $string['unenrolment']='Unenrolment';
 $string['unlockcompletiondelete']='Unlock completion options and delete user completion data';
 $string['usealternateselector']='Use the alternate course selector';
+$string['usernotenroled']='User is not enroled in this course';
 $string['viewcoursereport']='View course report';
 $string['viewingactivity']='Viewing the {$a}';
 $string['xdays']='{$a} days';
index d4a7d38..9e3c729 100644 (file)
@@ -541,7 +541,7 @@ class block_manager {
         list($pagetypepatterntest, $pagetypepatternparams) =
                 $DB->get_in_or_equal($pagetypepatterns, SQL_PARAMS_NAMED, 'pagetypepatterntest');
 
-        list($ccselect, $ccjoin) = context_instance_preload_sql('b.id', CONTEXT_BLOCK, 'ctx');
+        list($ccselect, $ccjoin) = context_instance_preload_sql('bi.id', CONTEXT_BLOCK, 'ctx');
 
         $params = array(
             'subpage1' => $this->page->subpage,
index c705d61..7f79c95 100644 (file)
@@ -603,8 +603,8 @@ class completion_info {
      * @return void
      */
     public function set_module_viewed($cm, $userid=0) {
-        global $PAGE;
-        if ($PAGE->headerprinted) {
+        global $PAGE, $UNITTEST;
+        if ($PAGE->headerprinted && empty($UNITTEST->running)) {
             debugging('set_module_viewed must be called before header is printed',
                     DEBUG_DEVELOPER);
         }
index b3c1ceb..243f29d 100644 (file)
@@ -579,6 +579,10 @@ class mysqli_native_moodle_database extends moodle_database {
             if ($column->meta_type == 'I' or $column->meta_type == 'F' or $column->meta_type == 'N') {
                 $value = 0; // prevent '' problems in numeric fields
             }
+        // Any float value being stored in varchar or text field is converted to string to avoid
+        // any implicit conversion by MySQL
+        } else if (is_float($value) and ($column->meta_type == 'C' or $column->meta_type == 'X')) {
+            $value = "$value";
         }
         // workaround for problem with wrong enums in mysql - TODO: Out in Moodle 2.1
         if (!empty($column->enums)) {
index 908c21e..7bec4a9 100644 (file)
@@ -1806,6 +1806,34 @@ class dml_test extends UnitTestCase {
         $DB->delete_records($tablename, array());
         $id4 = $DB->insert_record($tablename, array('course' => 3));
         $this->assertTrue($id3 < $id4);
+
+        // Test saving a float in a CHAR column, and reading it back.
+        $id = $DB->insert_record($tablename, array('onechar' => 1.0));
+        $this->assertEqual(1.0, $DB->get_field($tablename, 'onechar', array('id' => $id)));
+        $id = $DB->insert_record($tablename, array('onechar' => 1e20));
+        $this->assertEqual(1e20, $DB->get_field($tablename, 'onechar', array('id' => $id)));
+        $id = $DB->insert_record($tablename, array('onechar' => 1e-4));
+        $this->assertEqual(1e-4, $DB->get_field($tablename, 'onechar', array('id' => $id)));
+        $id = $DB->insert_record($tablename, array('onechar' => 1e-5));
+        $this->assertEqual(1e-5, $DB->get_field($tablename, 'onechar', array('id' => $id)));
+        $id = $DB->insert_record($tablename, array('onechar' => 1e-300));
+        $this->assertEqual(1e-300, $DB->get_field($tablename, 'onechar', array('id' => $id)));
+        $id = $DB->insert_record($tablename, array('onechar' => 1e300));
+        $this->assertEqual(1e300, $DB->get_field($tablename, 'onechar', array('id' => $id)));
+
+        // Test saving a float in a TEXT column, and reading it back.
+        $id = $DB->insert_record($tablename, array('onetext' => 1.0));
+        $this->assertEqual(1.0, $DB->get_field($tablename, 'onetext', array('id' => $id)));
+        $id = $DB->insert_record($tablename, array('onetext' => 1e20));
+        $this->assertEqual(1e20, $DB->get_field($tablename, 'onetext', array('id' => $id)));
+        $id = $DB->insert_record($tablename, array('onetext' => 1e-4));
+        $this->assertEqual(1e-4, $DB->get_field($tablename, 'onetext', array('id' => $id)));
+        $id = $DB->insert_record($tablename, array('onetext' => 1e-5));
+        $this->assertEqual(1e-5, $DB->get_field($tablename, 'onetext', array('id' => $id)));
+        $id = $DB->insert_record($tablename, array('onetext' => 1e-300));
+        $this->assertEqual(1e-300, $DB->get_field($tablename, 'onetext', array('id' => $id)));
+        $id = $DB->insert_record($tablename, array('onetext' => 1e300));
+        $this->assertEqual(1e300, $DB->get_field($tablename, 'onetext', array('id' => $id)));
     }
 
     public function test_import_record() {
@@ -2178,6 +2206,35 @@ class dml_test extends UnitTestCase {
         $this->assertEqual($newclob, $record->onetext, 'Test "small" CLOB update (full contents output disabled)');
         $this->assertEqual($newblob, $record->onebinary, 'Test "small" BLOB update (full contents output disabled)');
 
+        // Test saving a float in a CHAR column, and reading it back.
+        $id = $DB->insert_record($tablename, array('onechar' => 'X'));
+        $DB->update_record($tablename, array('id' => $id, 'onechar' => 1.0));
+        $this->assertEqual(1.0, $DB->get_field($tablename, 'onechar', array('id' => $id)));
+        $DB->update_record($tablename, array('id' => $id, 'onechar' => 1e20));
+        $this->assertEqual(1e20, $DB->get_field($tablename, 'onechar', array('id' => $id)));
+        $DB->update_record($tablename, array('id' => $id, 'onechar' => 1e-4));
+        $this->assertEqual(1e-4, $DB->get_field($tablename, 'onechar', array('id' => $id)));
+        $DB->update_record($tablename, array('id' => $id, 'onechar' => 1e-5));
+        $this->assertEqual(1e-5, $DB->get_field($tablename, 'onechar', array('id' => $id)));
+        $DB->update_record($tablename, array('id' => $id, 'onechar' => 1e-300));
+        $this->assertEqual(1e-300, $DB->get_field($tablename, 'onechar', array('id' => $id)));
+        $DB->update_record($tablename, array('id' => $id, 'onechar' => 1e300));
+        $this->assertEqual(1e300, $DB->get_field($tablename, 'onechar', array('id' => $id)));
+
+        // Test saving a float in a TEXT column, and reading it back.
+        $id = $DB->insert_record($tablename, array('onetext' => 'X'));
+        $DB->update_record($tablename, array('id' => $id, 'onetext' => 1.0));
+        $this->assertEqual(1.0, $DB->get_field($tablename, 'onetext', array('id' => $id)));
+        $DB->update_record($tablename, array('id' => $id, 'onetext' => 1e20));
+        $this->assertEqual(1e20, $DB->get_field($tablename, 'onetext', array('id' => $id)));
+        $DB->update_record($tablename, array('id' => $id, 'onetext' => 1e-4));
+        $this->assertEqual(1e-4, $DB->get_field($tablename, 'onetext', array('id' => $id)));
+        $DB->update_record($tablename, array('id' => $id, 'onetext' => 1e-5));
+        $this->assertEqual(1e-5, $DB->get_field($tablename, 'onetext', array('id' => $id)));
+        $DB->update_record($tablename, array('id' => $id, 'onetext' => 1e-300));
+        $this->assertEqual(1e-300, $DB->get_field($tablename, 'onetext', array('id' => $id)));
+        $DB->update_record($tablename, array('id' => $id, 'onetext' => 1e300));
+        $this->assertEqual(1e300, $DB->get_field($tablename, 'onetext', array('id' => $id)));
     }
 
     public function test_set_field() {
@@ -2243,6 +2300,36 @@ class dml_test extends UnitTestCase {
             $this->assertEqual($e->errorcode, 'textconditionsnotallowed');
         }
 
+        // Test saving a float in a CHAR column, and reading it back.
+        $id = $DB->insert_record($tablename, array('onechar' => 'X'));
+        $DB->set_field($tablename, 'onechar', 1.0, array('id' => $id));
+        $this->assertEqual(1.0, $DB->get_field($tablename, 'onechar', array('id' => $id)));
+        $DB->set_field($tablename, 'onechar', 1e20, array('id' => $id));
+        $this->assertEqual(1e20, $DB->get_field($tablename, 'onechar', array('id' => $id)));
+        $DB->set_field($tablename, 'onechar', 1e-4, array('id' => $id));
+        $this->assertEqual(1e-4, $DB->get_field($tablename, 'onechar', array('id' => $id)));
+        $DB->set_field($tablename, 'onechar', 1e-5, array('id' => $id));
+        $this->assertEqual(1e-5, $DB->get_field($tablename, 'onechar', array('id' => $id)));
+        $DB->set_field($tablename, 'onechar', 1e-300, array('id' => $id));
+        $this->assertEqual(1e-300, $DB->get_field($tablename, 'onechar', array('id' => $id)));
+        $DB->set_field($tablename, 'onechar', 1e300, array('id' => $id));
+        $this->assertEqual(1e300, $DB->get_field($tablename, 'onechar', array('id' => $id)));
+
+        // Test saving a float in a TEXT column, and reading it back.
+        $id = $DB->insert_record($tablename, array('onetext' => 'X'));
+        $DB->set_field($tablename, 'onetext', 1.0, array('id' => $id));
+        $this->assertEqual(1.0, $DB->get_field($tablename, 'onetext', array('id' => $id)));
+        $DB->set_field($tablename, 'onetext', 1e20, array('id' => $id));
+        $this->assertEqual(1e20, $DB->get_field($tablename, 'onetext', array('id' => $id)));
+        $DB->set_field($tablename, 'onetext', 1e-4, array('id' => $id));
+        $this->assertEqual(1e-4, $DB->get_field($tablename, 'onetext', array('id' => $id)));
+        $DB->set_field($tablename, 'onetext', 1e-5, array('id' => $id));
+        $this->assertEqual(1e-5, $DB->get_field($tablename, 'onetext', array('id' => $id)));
+        $DB->set_field($tablename, 'onetext', 1e-300, array('id' => $id));
+        $this->assertEqual(1e-300, $DB->get_field($tablename, 'onetext', array('id' => $id)));
+        $DB->set_field($tablename, 'onetext', 1e300, array('id' => $id));
+        $this->assertEqual(1e300, $DB->get_field($tablename, 'onetext', array('id' => $id)));
+
         // Note: All the nulls, booleans, empties, quoted and backslashes tests
         // go to set_field_select() because set_field() is just one wrapper over it
     }
index 3e9f170..154c2a6 100644 (file)
@@ -525,7 +525,7 @@ class moodle_page_cm_test extends UnitTestCaseUsingDatabase {
         parent::setUp();
         $this->originalcourse = $COURSE;
         $this->testpage = new moodle_page();
-        $this->create_test_tables(array('course', 'context'), 'lib');
+        $this->create_test_tables(array('course', 'context', 'modules', 'course_modules', 'course_modules_availability', 'grade_items', 'course_sections'), 'lib');
         $this->create_test_table('forum', 'mod/forum');
         $this->switch_to_test_db();
 
@@ -551,6 +551,7 @@ class moodle_page_cm_test extends UnitTestCaseUsingDatabase {
         $course->fullname = 'Anonymous test course';
         $course->shortname = 'ANON';
         $course->summary = '';
+        $course->modinfo = null;
         $course->id = $this->testdb->insert_record('course', $course);
 
         $forum = new stdClass;
@@ -559,12 +560,23 @@ class moodle_page_cm_test extends UnitTestCaseUsingDatabase {
         $forum->intro = '';
         $forum->id = $this->testdb->insert_record('forum', $forum);
 
+        $module = new stdClass;
+        $module->name = 'forum';
+        $module->id = $this->testdb->insert_record('modules', $module);
+
         $cm = new stdClass;
-        $cm->id = 13;
         $cm->course = $course->id;
         $cm->instance = $forum->id;
         $cm->modname = 'forum';
+        $cm->module = $module->id;
         $cm->name = $forum->name;
+        $cm->id = $this->testdb->insert_record('course_modules', $cm);
+
+        $section = new stdClass;
+        $section->course = $course->id;
+        $section->section = 0;
+        $section->sequence = $cm->id;
+        $section->id = $this->testdb->insert_record('course_sections', $section);
 
         $context = new stdClass;
         $context->contextlevel = CONTEXT_MODULE;
@@ -590,26 +602,6 @@ class moodle_page_cm_test extends UnitTestCaseUsingDatabase {
         $this->assert(new CheckSpecifiedFieldsExpectation($cm), $this->testpage->cm);
     }
 
-    public function test_cannot_set_cm_without_name() {
-        // Setup fixture
-        list($cm) = $this->create_a_forum_with_context();
-        // Set expectation
-        $this->expectException();
-        // Exercise SUT
-        unset($cm->name);
-        $this->testpage->set_cm($cm);
-    }
-
-    public function test_cannot_set_cm_without_modname() {
-        // Setup fixture
-        list($cm) = $this->create_a_forum_with_context();
-        // Set expectation
-        $this->expectException();
-        // Exercise SUT
-        unset($cm->modname);
-        $this->testpage->set_cm($cm);
-    }
-
     public function test_cannot_set_activity_record_before_cm() {
         // Setup fixture
         list($cm, $course, $forum) = $this->create_a_forum_with_context();
@@ -672,18 +664,21 @@ class moodle_page_cm_test extends UnitTestCaseUsingDatabase {
         $this->testpage->set_activity_record($forum);
     }
 
-    public function test_settin_cm_sets_course() {
+    public function test_setting_cm_sets_course() {
         // Setup fixture
         list($cm, $course) = $this->create_a_forum_with_context();
         // Exercise SUT
         $this->testpage->set_cm($cm);
         // Validate
+        unset($course->modinfo); // This changed, but we don't care
         $this->assert(new CheckSpecifiedFieldsExpectation($course), $this->testpage->course);
     }
 
     public function test_set_cm_with_course_and_activity_no_db() {
         // Setup fixture
         list($cm, $course, $forum) = $this->create_a_forum_with_context();
+        // This only works without db if we already have modinfo cache
+        $modinfo = get_fast_modinfo($course);
         $this->drop_test_table('forum');
         $this->drop_test_table('course');
         // Exercise SUT
index ad3d5c5..d056060 100644 (file)
@@ -715,6 +715,8 @@ class UnitTestCaseUsingDatabase extends UnitTestCase {
 
         if ($cleanmore) {
             accesslib_clear_all_caches_for_unit_testing();
+            $course = 'reset';
+            get_fast_modinfo($course);
         }
     }
 
index a526068..976d59a 100644 (file)
@@ -1285,12 +1285,12 @@ function upgrade_language_pack($lang='') {
 
     require_once($CFG->libdir.'/componentlib.class.php');
 
-    $installer = new lang_installer($pack);
+    $installer = new lang_installer($lang);
     $results = $installer->run();
     foreach ($results as $langcode => $langstatus) {
         switch ($langstatus) {
         case lang_installer::RESULT_DOWNLOADERROR:
-            echo $OUTPUT->notification($pack . '.zip');
+            echo $OUTPUT->notification($langcode . '.zip');
             break;
         case lang_installer::RESULT_INSTALLED:
             echo $OUTPUT->notification(get_string('langpackinstalled', 'admin', $langcode), 'notifysuccess');
index ec7102d..af2dfcb 100644 (file)
@@ -235,15 +235,15 @@ class feedback_item_multichoice extends feedback_item_base {
 
         // $worksheet->setFormat("<l><f><ro2><vo><c:green>");
         //frage schreiben
-        $worksheet->write_string($rowOffset, 0, $item->label, $xlsFormats->head2_green);
-        $worksheet->write_string($rowOffset, 1, $analysed_item[1], $xlsFormats->head2_green);
+        $worksheet->write_string($rowOffset, 0, $item->label, $xlsFormats->head2);
+        $worksheet->write_string($rowOffset, 1, $analysed_item[1], $xlsFormats->head2);
         if (is_array($data)) {
             $sizeofdata = sizeof($data);
             for ($i = 0; $i < $sizeofdata; $i++) {
                 $aData = $data[$i];
 
                 // $worksheet->setFormat("<l><f><ro2><vo><c:blue>");
-                $worksheet->write_string($rowOffset, $i + 2, trim($aData->answertext), $xlsFormats->value_blue);
+                $worksheet->write_string($rowOffset, $i + 2, trim($aData->answertext), $xlsFormats->head2);
 
                 // $worksheet->setFormat("<l><vo>");
                 $worksheet->write_number($rowOffset + 1, $i + 2, $aData->answercount, $xlsFormats->default);
index 55545ff..41ca75b 100644 (file)
 defined('MOODLE_INTERNAL') || die();
 
 
-$version  = 2011050500.00;              // YYYYMMDD      = weekly release date of this DEV branch
+$version  = 2011051100.00;              // YYYYMMDD      = weekly release date of this DEV branch
                                         //         RR    = release increments - 00 in DEV branches
                                         //           .XX = incremental changes
 
-$release  = '2.1dev (Build: 20110505)'; // Human-friendly version name
+$release  = '2.1dev (Build: 20110511)'; // Human-friendly version name
 
 $maturity = MATURITY_ALPHA;             // this version's maturity level