MDL-50839 user_menu: Allow themes to set User menu avatar size.
authorDavid Balch <david.balch@conted.ox.ac.uk>
Wed, 15 Jul 2015 10:48:43 +0000 (11:48 +0100)
committerDavid Balch <david.balch@conted.ox.ac.uk>
Tue, 11 Aug 2015 12:57:17 +0000 (13:57 +0100)
Added an @array "options" parameter to user_get_user_navigation_info(),
for passing in avatarsize, and possibly other options in future.

Also removed an errant parameter in the /lib/outputrenderers.php
user_get_user_navigation_info() call, as there was no corresponding
parameter in the function definition.

(Test written by Jetha Chan.)

lib/outputrenderers.php
user/lib.php
user/tests/userlib_test.php

index 53e5e70..70307a4 100644 (file)
@@ -3182,7 +3182,7 @@ EOD;
         }
 
         // Get some navigation opts.
-        $opts = user_get_user_navigation_info($user, $this->page, $this->page->course);
+        $opts = user_get_user_navigation_info($user, $this->page);
 
         $avatarclasses = "avatars";
         $avatarcontents = html_writer::span($opts->metadata['useravatar'], 'avatar current');
index cf5c7eb..c8d27dd 100644 (file)
@@ -727,6 +727,9 @@ function user_convert_text_to_menu_items($text, $page) {
  *
  * @param stdclass $user user object.
  * @param moodle_page $page page object.
+ * @param array $options associative array.
+ *     options are:
+ *     - avatarsize=35 (size of avatar image)
  * @return stdClass $returnobj navigation information object, where:
  *
  *      $returnobj->navitems    array    array of links where each link is a
@@ -769,7 +772,7 @@ function user_convert_text_to_menu_items($text, $page) {
  *          mnetidprovidername    string name of the MNet provider
  *          mnetidproviderwwwroot string URL of the MNet provider
  */
-function user_get_user_navigation_info($user, $page) {
+function user_get_user_navigation_info($user, $page, $options = null) {
     global $OUTPUT, $DB, $SESSION, $CFG;
 
     $returnobject = new stdClass();
@@ -787,12 +790,13 @@ function user_get_user_navigation_info($user, $page) {
     $returnobject->metadata['userprofileurl'] = new moodle_url('/user/profile.php', array(
         'id' => $user->id
     ));
+
+    $avataroptions = array('link' => false, 'visibletoscreenreaders' => false);
+    if (!empty($options['avatarsize'])) {
+        $avataroptions['size'] = $options['avatarsize'];
+    }
     $returnobject->metadata['useravatar'] = $OUTPUT->user_picture (
-        $user,
-        array(
-            'link' => false,
-            'visibletoscreenreaders' => false
-        )
+        $user, $avataroptions
     );
     // Build a list of items for a regular user.
 
index 99d2dd4..e176922 100644 (file)
@@ -377,4 +377,25 @@ class core_userliblib_testcase extends advanced_testcase {
 
     }
 
+    /**
+     * Test setting the user menu avatar size.
+     */
+    public function test_user_menu_custom_avatar_size() {
+        global $PAGE;
+        $this->resetAfterTest(true);
+
+        $testsize = 100;
+
+        $user = $this->getDataGenerator()->create_user();
+        $opts = user_get_user_navigation_info($user, $PAGE, array('avatarsize' => $testsize));
+        $avatarhtml = $opts->metadata['useravatar'];
+
+        $matches = [];
+        preg_match('/(?:.*width=")(\d*)(?:" height=")(\d*)(?:".*\/>)/', $avatarhtml, $matches);
+        $this->assertCount(3, $matches);
+
+        $this->assertEquals(intval($matches[1]), $testsize);
+        $this->assertEquals(intval($matches[2]), $testsize);
+    }
+
 }