diff --git a/modules/user/user.module b/modules/user/user.module index 874efae6d6e16dece1d748cd4550c7cc19b84ed5..45ea7f280362e090a09b0ea18c1b063499bc2001 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 91549f0de3b00574f18c184b06486aa7527b8224..2cfb45671d5658891450c95f043e5359309173f2 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'));