summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDries Buytaert <dries@buytaert.net>2010-09-22 03:24:09 +0000
committerDries Buytaert <dries@buytaert.net>2010-09-22 03:24:09 +0000
commit63b9e4770b7bf205a9b707264cb6f77354f77ecd (patch)
tree71c5398c02d35c8b2d365254acdf55764817eee4
parentcdf28e6fd6aa87b8e0302bcc88505f378a38968d (diff)
downloadbrdo-63b9e4770b7bf205a9b707264cb6f77354f77ecd.tar.gz
brdo-63b9e4770b7bf205a9b707264cb6f77354f77ecd.tar.bz2
- Patch #908282 by jbrown: theme_image() performs I/O.
-rw-r--r--includes/common.inc2
-rw-r--r--includes/theme.inc35
-rw-r--r--modules/color/color.module2
-rw-r--r--modules/image/image.admin.inc4
-rw-r--r--modules/image/image.field.inc2
-rw-r--r--modules/image/image.module1
-rw-r--r--modules/image/image.test6
-rw-r--r--modules/user/user.module4
8 files changed, 17 insertions, 39 deletions
diff --git a/includes/common.inc b/includes/common.inc
index 6c679857b..e74d1c0a7 100644
--- a/includes/common.inc
+++ b/includes/common.inc
@@ -5842,7 +5842,7 @@ function drupal_common_theme() {
// - http://dev.w3.org/html5/spec/Overview.html#alt
// The title attribute is optional in all cases, so it is omitted by
// default.
- 'variables' => array('path' => NULL, 'alt' => '', 'title' => NULL, 'attributes' => array(), 'getsize' => TRUE),
+ 'variables' => array('path' => NULL, 'width' => NULL, 'height' => NULL, 'alt' => '', 'title' => NULL, 'attributes' => array()),
),
'breadcrumb' => array(
'variables' => array('breadcrumb' => NULL),
diff --git a/includes/theme.inc b/includes/theme.inc
index 87c8dba50..832f8719d 100644
--- a/includes/theme.inc
+++ b/includes/theme.inc
@@ -1479,6 +1479,8 @@ function theme_links($variables) {
* An associative array containing:
* - path: Either the path of the image file (relative to base_path()) or a
* full URL.
+ * - width: The width of the image (if known).
+ * - height: The height of the image (if known).
* - alt: The alternative text for text-based browsers. HTML 4 and XHTML 1.0
* always require an alt attribute. The HTML 5 draft allows the alt
* attribute to be omitted in some cases. Therefore, this variable defaults
@@ -1492,38 +1494,19 @@ function theme_links($variables) {
* - title: The title text is displayed when the image is hovered in some
* popular browsers.
* - attributes: Associative array of attributes to be placed in the img tag.
- * - getsize: If set to TRUE, the image's dimension are fetched and added as
- * width/height attributes.
*/
function theme_image($variables) {
- $path = $variables['path'];
- $alt = $variables['alt'];
- $title = $variables['title'];
$attributes = $variables['attributes'];
- $getsize = $variables['getsize'];
+ $attributes['src'] = file_create_url($variables['path']);
- if (!$getsize || (is_file($path) && (list($width, $height) = @getimagesize($path)))) {
- // The src attribute can be omitted, by passing NULL for $path and FALSE for
- // $getsize.
- if (isset($path)) {
- $attributes['src'] = file_create_url($path);
- }
- // The alt attribute defaults to an empty string. By passing NULL as value,
- // it can be omitted.
- if (isset($alt)) {
- $attributes['alt'] = $alt;
- }
- if (isset($title)) {
- $attributes['title'] = $title;
- }
- if (!isset($attributes['width']) && !empty($width)) {
- $attributes['width'] = $width;
- }
- if (!isset($attributes['height']) && !empty($height)) {
- $attributes['height'] = $height;
+ foreach (array('width', 'height', 'alt', 'title') as $key) {
+
+ if (isset($variables[$key])) {
+ $attributes[$key] = $variables[$key];
}
- return '<img' . drupal_attributes($attributes) . ' />';
}
+
+ return '<img' . drupal_attributes($attributes) . ' />';
}
/**
diff --git a/modules/color/color.module b/modules/color/color.module
index 01341a618..a9d898090 100644
--- a/modules/color/color.module
+++ b/modules/color/color.module
@@ -63,7 +63,7 @@ function _color_theme_select_form_alter(&$form, &$form_state) {
foreach (element_children($form) as $theme) {
if ($screenshot = variable_get('color_' . $theme . '_screenshot')) {
if (isset($form[$theme]['screenshot'])) {
- $form[$theme]['screenshot']['#markup'] = theme('image', array('path' => $screenshot, 'alt' => '', 'title' => '', 'attributes' => array('class' => array('screenshot')), 'getsize' => FALSE));
+ $form[$theme]['screenshot']['#markup'] = theme('image', array('path' => $screenshot, 'title' => '', 'attributes' => array('class' => array('screenshot'))));
}
}
}
diff --git a/modules/image/image.admin.inc b/modules/image/image.admin.inc
index ce1b039b6..657781156 100644
--- a/modules/image/image.admin.inc
+++ b/modules/image/image.admin.inc
@@ -793,7 +793,7 @@ function theme_image_style_preview($variables) {
$output .= '<div class="preview-image-wrapper">';
$output .= t('original') . ' (' . l(t('view actual size'), $original_path) . ')';
$output .= '<div class="preview-image original-image" style="' . $original_attributes['style'] . '">';
- $output .= '<a href="' . url($original_path) . '?' . time() . '">' . theme('image', array('path' => $original_path . '?' . time(), 'alt' => t('Sample original image'), 'title' => '', 'attributes' => $original_attributes, 'getsize' => FALSE)) . '</a>';
+ $output .= '<a href="' . url($original_path) . '?' . time() . '">' . theme('image', array('path' => $original_path . '?' . time(), 'alt' => t('Sample original image'), 'title' => '', 'attributes' => $original_attributes)) . '</a>';
$output .= '<div class="height" style="height: ' . $original_height . 'px"><span>' . $original_image['height'] . 'px</span></div>';
$output .= '<div class="width" style="width: ' . $original_width . 'px"><span>' . $original_image['width'] . 'px</span></div>';
$output .= '</div>'; // End preview-image.
@@ -803,7 +803,7 @@ function theme_image_style_preview($variables) {
$output .= '<div class="preview-image-wrapper">';
$output .= check_plain($style['name']) . ' (' . l(t('view actual size'), file_create_url($preview_file) . '?' . time()) . ')';
$output .= '<div class="preview-image modified-image" style="' . $preview_attributes['style'] . '">';
- $output .= '<a href="' . file_create_url($preview_file) . '?' . time() . '">' . theme('image', array('path' => file_create_url($preview_file) . '?' . time(), 'alt' => t('Sample modified image'), 'title' => '', 'attributes' => $preview_attributes, 'getsize' => FALSE)) . '</a>';
+ $output .= '<a href="' . file_create_url($preview_file) . '?' . time() . '">' . theme('image', array('path' => file_create_url($preview_file) . '?' . time(), 'alt' => t('Sample modified image'), 'title' => '', 'attributes' => $preview_attributes)) . '</a>';
$output .= '<div class="height" style="height: ' . $preview_height . 'px"><span>' . $preview_image['height'] . 'px</span></div>';
$output .= '<div class="width" style="width: ' . $preview_width . 'px"><span>' . $preview_image['width'] . 'px</span></div>';
$output .= '</div>'; // End preview-image.
diff --git a/modules/image/image.field.inc b/modules/image/image.field.inc
index 15c287a69..b54e601ab 100644
--- a/modules/image/image.field.inc
+++ b/modules/image/image.field.inc
@@ -338,7 +338,7 @@ function image_field_widget_process($element, &$form_state, $form) {
if ($element['#file'] && $widget_settings['preview_image_style']) {
$element['preview'] = array(
'#type' => 'markup',
- '#markup' => theme('image_style', array('style_name' => $widget_settings['preview_image_style'], 'path' => $element['#file']->uri, 'getsize' => FALSE)),
+ '#markup' => theme('image_style', array('style_name' => $widget_settings['preview_image_style'], 'path' => $element['#file']->uri)),
);
}
diff --git a/modules/image/image.module b/modules/image/image.module
index bb6e07985..36807a8e5 100644
--- a/modules/image/image.module
+++ b/modules/image/image.module
@@ -1105,7 +1105,6 @@ function theme_image_style($variables) {
$style_path = image_style_url($style_name, $path);
}
$variables['path'] = $style_path;
- $variables['getsize'] = FALSE;
return theme('image', $variables);
}
diff --git a/modules/image/image.test b/modules/image/image.test
index 0709d918b..33c1000c1 100644
--- a/modules/image/image.test
+++ b/modules/image/image.test
@@ -650,7 +650,6 @@ class ImageFieldDisplayTestCase extends ImageFieldTestCase {
$image_uri = $node->{$field_name}[LANGUAGE_NONE][0]['uri'];
$image_info = array(
'path' => $image_uri,
- 'getsize' => TRUE,
);
$default_output = theme('image', $image_info);
$this->assertRaw($default_output, t('Default formatter displaying correctly on full node view.'));
@@ -746,7 +745,6 @@ class ImageFieldDisplayTestCase extends ImageFieldTestCase {
$node = node_load($nid, NULL, TRUE);
$image_info = array(
'path' => image_style_url('medium', $node->{$field_name}[LANGUAGE_NONE][0]['uri']),
- 'getsize' => FALSE,
);
$default_output = theme('image', $image_info);
$this->assertRaw($default_output, t("Preview image is displayed using 'medium' style."));
@@ -756,7 +754,6 @@ class ImageFieldDisplayTestCase extends ImageFieldTestCase {
'path' => $node->{$field_name}[LANGUAGE_NONE][0]['uri'],
'alt' => $this->randomName(),
'title' => $this->randomName(),
- 'getsize' => TRUE,
);
$edit = array(
$field_name . '[' . LANGUAGE_NONE . '][0][alt]' => $image_info['alt'],
@@ -793,7 +790,7 @@ class ImageFieldDisplayTestCase extends ImageFieldTestCase {
field_info_cache_clear();
$field = field_info_field($field_name);
$image = file_load($field['settings']['default_image']);
- $default_output = theme('image', array('path' => $image->uri, 'getsize' => TRUE));
+ $default_output = theme('image', array('path' => $image->uri));
$this->drupalGet('node/' . $node->nid);
$this->assertRaw($default_output, t('Default image displayed when no user supplied image is present.'));
@@ -803,7 +800,6 @@ class ImageFieldDisplayTestCase extends ImageFieldTestCase {
$node = node_load($nid, NULL, TRUE);
$image_info = array(
'path' => $node->{$field_name}[LANGUAGE_NONE][0]['uri'],
- 'getsize' => TRUE,
);
$image_output = theme('image', $image_info);
$this->drupalGet('node/' . $nid);
diff --git a/modules/user/user.module b/modules/user/user.module
index c1eae4fb8..b43b689fd 100644
--- a/modules/user/user.module
+++ b/modules/user/user.module
@@ -1410,10 +1410,10 @@ 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', '')) {
- $variables['user_picture'] = theme('image_style', array('style_name' => $style, 'path' => $filepath, 'alt' => $alt, 'title' => $alt, 'attributes' => array(), 'getsize' => FALSE));
+ $variables['user_picture'] = theme('image_style', array('style_name' => $style, 'path' => $filepath, 'alt' => $alt, 'title' => $alt));
}
else {
- $variables['user_picture'] = theme('image', array('path' => $filepath, 'alt' => $alt, 'title' => $alt, 'attributes' => array(), 'getsize' => FALSE));
+ $variables['user_picture'] = theme('image', array('path' => $filepath, 'alt' => $alt, 'title' => $alt));
}
if (!empty($account->uid) && user_access('access user profiles')) {
$attributes = array('attributes' => array('title' => t('View user profile.')), 'html' => TRUE);