From 60bbf9897114d5486d1dfae3510b18ccca640219 Mon Sep 17 00:00:00 2001 From: Michael Aherne Date: Fri, 28 Sep 2012 12:31:36 +0100 Subject: [PATCH] MDL-35669 gravatar Provide default image URL to Gravatar Conflicts: admin/settings/users.php lib/outputcomponents.php --- admin/settings/users.php | 1 + lang/en/admin.php | 2 ++ lib/outputcomponents.php | 17 +++++++++++++++-- 3 files changed, 18 insertions(+), 2 deletions(-) diff --git a/admin/settings/users.php b/admin/settings/users.php index 717a092445b..1b228d0e244 100644 --- a/admin/settings/users.php +++ b/admin/settings/users.php @@ -150,6 +150,7 @@ if ($hassiteconfig 'institution' => get_string('institution'), ))); $temp->add(new admin_setting_configcheckbox('enablegravatar', get_string('enablegravatar', 'admin'), get_string('enablegravatar_help', 'admin'), 0)); + $temp->add(new admin_setting_configtext('gravatardefaulturl', get_string('gravatardefaulturl', 'admin'), get_string('gravatardefaulturl_help', 'admin'), 'mm')); } $ADMIN->add('roles', $temp); diff --git a/lang/en/admin.php b/lang/en/admin.php index 579620c98b0..65077fa0c6d 100644 --- a/lang/en/admin.php +++ b/lang/en/admin.php @@ -550,6 +550,8 @@ $string['googlemapkey'] = 'Google Maps API V2 key'; $string['gotofirst'] = 'Go to first missing string'; $string['gradebook'] = 'Gradebook'; $string['gradebookroles'] = 'Graded roles'; +$string['gravatardefaulturl'] = 'Gravatar default image URL'; +$string['gravatardefaulturl_help'] = 'Gravatar needs a default image to display if it is unable to find a picture for a given user. Provide a full URL for an image. If you leave this setting empty, Moodle will attempt to use the most appropriate default image for the page you are viewing. Note also that Gravatar has a number of codes which can be used to generate default images.'; $string['gradeexport'] = 'Primary grade export methods'; $string['guestroleid'] = 'Role for guest'; $string['guestroleid_help'] = 'This role is automatically assigned to the guest user. It is also temporarily assigned to not enrolled users that enter the course via guest enrolment plugin.'; diff --git a/lib/outputcomponents.php b/lib/outputcomponents.php index f5054aef454..8c8e9adeb95 100644 --- a/lib/outputcomponents.php +++ b/lib/outputcomponents.php @@ -329,12 +329,25 @@ class user_picture implements renderable { // Hash the users email address $md5 = md5(strtolower(trim($this->user->email))); // Build a gravatar URL with what we know. + + // Find the best default image URL we can (MDL-35669) + if (empty($CFG->gravatardefaulturl)) { + $absoluteimagepath = $page->theme->resolve_image_location('u/'.$filename, 'core'); + if (strpos($absoluteimagepath, $CFG->dirroot) === 0) { + $gravatardefault = $CFG->wwwroot . substr($absoluteimagepath, strlen($CFG->dirroot)); + } else { + $gravatardefault = $CFG->wwwroot . '/pix/u/' . $filename . '.png'; + } + } else { + $gravatardefault = $CFG->gravatardefaulturl; + } + // If the currently requested page is https then we'll return an // https gravatar page. if (strpos($CFG->httpswwwroot, 'https:') === 0) { - $imageurl = new moodle_url("https://secure.gravatar.com/avatar/{$md5}", array('s' => $size, 'd' => $imageurl->out(false))); + $imageurl = new moodle_url("https://secure.gravatar.com/avatar/{$md5}", array('s' => $size, 'd' => $gravatardefault)); } else { - $imageurl = new moodle_url("http://www.gravatar.com/avatar/{$md5}", array('s' => $size, 'd' => $imageurl->out(false))); + $imageurl = new moodle_url("http://www.gravatar.com/avatar/{$md5}", array('s' => $size, 'd' => $gravatardefault)); } }