Merge branch 'MDL-50289-master-notes' of git://github.com/mudrd8mz/moodle
authorDavid Monllao <davidm@moodle.com>
Tue, 26 May 2015 04:23:03 +0000 (12:23 +0800)
committerDavid Monllao <davidm@moodle.com>
Tue, 26 May 2015 04:23:03 +0000 (12:23 +0800)
backup/util/helper/backup_anonymizer_helper.class.php
blog/index.php
blog/lib.php
blog/tests/behat/blog_visibility.feature [new file with mode: 0644]
cache/classes/helper.php
grade/report/user/lib.php
grade/tests/behat/grade_average.feature [new file with mode: 0644]
lib/moodlelib.php
mod/assign/gradingtable.php
mod/upgrade.txt

index 04a9d2d..f3b5925 100644 (file)
@@ -167,4 +167,48 @@ class backup_anonymizer_helper {
     public static function process_user_imagealt($value) {
         return ''; // No user imagealt
     }
+
+    /**
+     * Anonymises user's phonetic name field
+     * @param string $value value of the user field
+     * @return string anonymised phonetic name
+     */
+    public static function process_user_firstnamephonetic($value) {
+        static $counter = 0;
+        $counter++;
+        return 'anonfirstnamephonetic' . $counter; // Just a counter.
+    }
+
+    /**
+     * Anonymises user's phonetic last name field
+     * @param string $value value of the user field
+     * @return string anonymised last phonetic name
+     */
+    public static function process_user_lastnamephonetic($value) {
+        static $counter = 0;
+        $counter++;
+        return 'anonlastnamephonetic' . $counter; // Just a counter.
+    }
+
+    /**
+     * Anonymises user's middle name field
+     * @param string $value value of the user field
+     * @return string anonymised middle name
+     */
+    public static function process_user_middlename($value) {
+        static $counter = 0;
+        $counter++;
+        return 'anonmiddlename' . $counter; // Just a counter.
+    }
+
+    /**
+     * Anonymises user's alternate name field
+     * @param string $value value of the user field
+     * @return string anonymised alternate name
+     */
+    public static function process_user_alternatename($value) {
+        static $counter = 0;
+        $counter++;
+        return 'anonalternatename' . $counter; // Just a counter.
+    }
 }
index 1f5217a..ddbdf45 100644 (file)
@@ -76,7 +76,9 @@ $sitecontext = context_system::instance();
 
 if (isset($userid) && $USER->id == $userid) {
     $blognode = $PAGE->navigation->find('siteblog', null);
-    $blognode->make_inactive();
+    if ($blognode) {
+        $blognode->make_inactive();
+    }
 }
 
 // Check basic permissions.
index 50eaa35..0be7e58 100644 (file)
@@ -1023,12 +1023,17 @@ function blog_page_type_list($pagetype, $parentcontext, $currentcontext) {
  * @return bool
  */
 function core_blog_myprofile_navigation(core_user\output\myprofile\tree $tree, $user, $iscurrentuser, $course) {
+    global $CFG;
     if (!blog_is_enabled_for_user() || isguestuser($user)) {
         // The guest user cannot post, so it is not possible to view any posts.
         // Also blogs might be disabled.
         // May as well just bail aggressively here.
         return true;
     }
+    if ($CFG->bloglevel == BLOG_USER_LEVEL && !$iscurrentuser) {
+        // Blogs are only viewable by the owner.
+        return true;
+    }
     $url = new moodle_url("/blog/index.php", array('userid' => $user->id));
     if (!empty($course)) {
         $url->param('courseid', $course->id);
diff --git a/blog/tests/behat/blog_visibility.feature b/blog/tests/behat/blog_visibility.feature
new file mode 100644 (file)
index 0000000..bd38cad
--- /dev/null
@@ -0,0 +1,37 @@
+@core @core_blog
+Feature: Blogs can be set to be only visible by the author.
+  In order to make blogs personal only
+  As a user
+  I need to set the blog level to Users can only see their own blogs.
+
+  Background:
+    Given the following "users" exist:
+      | username | firstname | lastname | email |
+      | testuser | Test | User | moodle@example.com |
+      | testuser2 | Test2 | User2 | moodle2@example.com |
+    And the following "courses" exist:
+      | fullname | shortname |
+      | Course 1 | C1 |
+    And the following "course enrolments" exist:
+      | user      | course | role    |
+      | testuser  | C1     | student |
+      | testuser2 | C1     | student |
+    And I log in as "admin"
+    And I am on site homepage
+    And I navigate to "Blog" node in "Site administration > Appearance"
+    And I set the following fields to these values:
+      | Blog visibility | Users can only see their own blog |
+    And I press "Save changes"
+    And I log out
+
+  @javascript
+  Scenario: A student can not see another student's blog entries.
+    Given I log in as "testuser"
+    And I follow "Course 1"
+    And I follow "Participants"
+    And I follow "Test2 User2"
+    And I should see "Miscellaneous"
+    Then I should not see "Blog entries"
+    And I follow "Profile" in the user menu
+    And I follow "Blog entries"
+    And I should see "User blog: Test User"
index e272ee4..eca785f 100644 (file)
@@ -318,6 +318,8 @@ class cache_helper {
                 $definitionkey = $definition->get_component().'/'.$definition->get_area();
                 if (isset($inuse[$definitionkey])) {
                     $inuse[$definitionkey]->purge();
+                } else {
+                    cache::make($definition->get_component(), $definition->get_area())->purge();
                 }
 
                 // We should only log events for application and session caches.
index 49cb1a9..7552bb8 100644 (file)
@@ -859,7 +859,7 @@ class grade_report_user extends grade_report {
      * Builds the grade item averages.
      */
     function calculate_averages() {
-        global $USER, $DB;
+        global $USER, $DB, $CFG;
 
         if ($this->showaverage) {
             // This settings are actually grader report settings (not user report)
@@ -882,7 +882,11 @@ class grade_report_user extends grade_report {
             list($gradebookrolessql, $gradebookrolesparams) = $DB->get_in_or_equal(explode(',', $this->gradebookroles), SQL_PARAMS_NAMED, 'grbr0');
 
             // Limit to users with an active enrolment.
-            list($enrolledsql, $enrolledparams) = get_enrolled_sql($this->context);
+            $coursecontext = $this->context->get_course_context(true);
+            $defaultgradeshowactiveenrol = !empty($CFG->grade_report_showonlyactiveenrol);
+            $showonlyactiveenrol = get_user_preferences('grade_report_showonlyactiveenrol', $defaultgradeshowactiveenrol);
+            $showonlyactiveenrol = $showonlyactiveenrol || !has_capability('moodle/course:viewsuspendedusers', $coursecontext);
+            list($enrolledsql, $enrolledparams) = get_enrolled_sql($this->context, '', 0, $showonlyactiveenrol);
 
             $params = array_merge($this->groupwheresql_params, $gradebookrolesparams, $enrolledparams, $relatedctxparams);
             $params['courseid'] = $this->courseid;
diff --git a/grade/tests/behat/grade_average.feature b/grade/tests/behat/grade_average.feature
new file mode 100644 (file)
index 0000000..1899e4d
--- /dev/null
@@ -0,0 +1,67 @@
+@core @core_grades
+Feature: Average grades are displayed in the gradebook
+  In order to check the expected results are displayed
+  As an admin
+  I need to assign grades and check that they display correctly in the gradebook.
+
+  Background:
+    Given the following "courses" exist:
+      | fullname | shortname | format |
+      | Course 1 | C1 | topics |
+    And the following "users" exist:
+      | username | firstname | lastname | email |
+      | teacher1 | Teacher | 1 | teacher1@example.com |
+      | student1 | Student | 1 | student1@example.com |
+      | student2 | Student | 2 | student2@example.com |
+      | student3 | Student | 3 | student3@example.com |
+    And the following "course enrolments" exist:
+      | user | course | role |
+      | teacher1 | C1 | editingteacher |
+      | student1 | C1 | student |
+      | student2 | C1 | student |
+      | student3 | C1 | student |
+    And I log in as "admin"
+    And I am on site homepage
+    And I follow "Course 1"
+    # Enable averages
+    And I navigate to "Grades" node in "Course administration"
+    And I navigate to "Course grade settings" node in "Grade administration > Setup"
+    And I set the following fields to these values:
+      | Show average | Show |
+    And I press "Save changes"
+    # Add a manual grade item
+    And I navigate to "Categories and items" node in "Grade administration > Setup"
+    And I press "Add grade item"
+    And I set the following fields to these values:
+      | Item name | Manual item 1 |
+    And I press "Save changes"
+    # Give all student the same grade for the manual grade item
+    And I navigate to "Grader report" node in "Grade administration"
+    And I turn editing mode on
+    And I give the grade "50.00" to the user "Student 1" for the grade item "Manual item 1"
+    And I give the grade "50.00" to the user "Student 2" for the grade item "Manual item 1"
+    And I give the grade "50.00" to the user "Student 3" for the grade item "Manual item 1"
+    And I press "Save changes"
+    And I turn editing mode off
+    # Suspend a user
+    And I navigate to "Enrolled users" node in "Course administration > Users"
+    And I click on "Edit" "link" in the "Student 2" "table_row"
+    And I set the following fields to these values:
+      | Status | Suspended |
+    And I press "Save changes"
+
+  Scenario: Grade a grade item and ensure the results display correctly in the gradebook
+    # Check the admin grade table
+    And I navigate to "Grades" node in "Course administration"
+    Then I should see "50.00" in the ".avg.r0.lastrow .c1" "css_element"
+    Then I should see "50.00" in the ".avg.r0.lastrow .c2" "css_element"
+    And I log out
+
+    # Check the user grade table
+    And I log in as "student1"
+    And I am on site homepage
+    And I follow "Course 1"
+    And I navigate to "Grades" node in "Course administration"
+    Then I should see "50.00" in the ".level2.column-grade" "css_element"
+    Then I should see "50.00" in the ".level2.column-average" "css_element"
+    And I log out
index 33b0324..dbac0a3 100644 (file)
@@ -408,7 +408,7 @@ define('FEATURE_COMPLETION_HAS_RULES', 'completion_has_rules');
 
 /** True if module has no 'view' page (like label) */
 define('FEATURE_NO_VIEW_LINK', 'viewlink');
-/** True if module supports outcomes */
+/** True (which is default) if the module wants support for setting the ID number for grade calculation purposes. */
 define('FEATURE_IDNUMBER', 'idnumber');
 /** True if module supports groups */
 define('FEATURE_GROUPS', 'groups');
index f1d65dc..eeec278 100644 (file)
@@ -717,10 +717,7 @@ class assign_grading_table extends table_sql implements renderable {
      * @return string
      */
     public function col_picture(stdClass $row) {
-        if ($row->picture) {
-            return $this->output->user_picture($row);
-        }
-        return '';
+        return $this->output->user_picture($row);
     }
 
     /**
index 7985d9d..bff2c99 100644 (file)
@@ -2,7 +2,12 @@ This files describes API changes in /mod/* - activity modules,
 information provided here is intended especially for developers.
 
 === 2.9 ===
+
 * Added Grade to pass field to mod_form for activities that support grading.
+* The method moodleform_mod::add_intro_editor() used in mod_form.php form
+  definitions has been deprecated. Replace it with the new
+  moodleform_mod::standard_intro_elements() method that takes the new site
+  configuration requiremodintro into account (MDL-49101).
 
 === 2.8 ===