summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorDries Buytaert2010-10-11 19:43:23 (GMT)
committerDries Buytaert2010-10-11 19:43:23 (GMT)
commit918e818964b7dbce7fe0d31ce7d8f1af65d350d1 (patch)
treee58a18f3aa44116405c89336f56f922408183e8b
parent2e226e9adfbba8d59056079201af9149c5597d5c (diff)
- Patch #937562 by tim.plunkett, chx, justinrandell: fatal Error Call to a member function getDirectoryPath() on a non-object when Default picture is set.
-rw-r--r--modules/user/user.module4
-rw-r--r--modules/user/user.test20
2 files changed, 23 insertions, 1 deletions
diff --git a/modules/user/user.module b/modules/user/user.module
index 874efae..45ea7f2 100644
--- a/modules/user/user.module
+++ b/modules/user/user.module
@@ -1409,7 +1409,9 @@ function template_preprocess_user_picture(&$variables) {
}
if (isset($filepath)) {
$alt = t("@user's picture", array('@user' => format_username($account)));
- if (module_exists('image') && $style = variable_get('user_picture_style', '')) {
+ // If the image does not have a valid Drupal scheme (for eg. HTTP),
+ // don't load image styles.
+ if (module_exists('image') && file_valid_uri($filepath) && $style = variable_get('user_picture_style', '')) {
$variables['user_picture'] = theme('image_style', array('style_name' => $style, 'path' => $filepath, 'alt' => $alt, 'title' => $alt));
}
else {
diff --git a/modules/user/user.test b/modules/user/user.test
index 91549f0..2cfb456 100644
--- a/modules/user/user.test
+++ b/modules/user/user.test
@@ -916,6 +916,26 @@ class UserPictureTestCase extends DrupalWebTestCase {
}
}
+ /**
+ * Test HTTP schema working with user pictures.
+ */
+ function testExternalPicture() {
+ $this->drupalLogin($this->user);
+ // Set the default picture to an URI with a HTTP schema.
+ $images = $this->drupalGetTestFiles('image');
+ $image = $images[0];
+ $pic_path = file_create_url($image->uri);
+ variable_set('user_picture_default', $pic_path);
+
+ // Check if image is displayed in user's profile page.
+ $this->drupalGet('user');
+
+ // Get the user picture image via xpath.
+ $elements = $this->xpath('//div[@class="user-picture"]/img');
+ $this->assertEqual(count($elements), 1, t("There is exactly one user picture on the user's profile page"));
+ $this->assertEqual($pic_path, (string) $elements[0]['src'], t("User picture source is correct."));
+ }
+
function saveUserPicture($image) {
$edit = array('files[picture_upload]' => drupal_realpath($image->uri));
$this->drupalPost('user/' . $this->user->uid . '/edit', $edit, t('Save'));