aDriv4 - MANAGER
Edit File: views_handler_field_user_picture.inc
<?php /** * @file * Definition of views_handler_field_user_picture. */ /** * Field handler for a simple renderer that allows using a themed user link. * * @ingroup views_field_handlers */ class views_handler_field_user_picture extends views_handler_field { /** * {@inheritdoc} */ public function construct() { parent::construct(); $this->additional_fields['uid'] = 'uid'; $this->additional_fields['name'] = 'name'; $this->additional_fields['mail'] = 'mail'; } /** * {@inheritdoc} */ public function element_type($none_supported = FALSE, $default_empty = FALSE, $inline = FALSE) { if ($inline) { return 'span'; } if ($none_supported) { if ($this->options['element_type'] === '0') { return ''; } } if ($this->options['element_type']) { return check_plain($this->options['element_type']); } if ($default_empty) { return ''; } if (isset($this->definition['element type'])) { return $this->definition['element type']; } return 'div'; } /** * {@inheritdoc} */ public function option_definition() { $options = parent::option_definition(); $options['link_photo_to_profile'] = array('default' => TRUE, 'bool' => TRUE); $options['image_style'] = array('default' => ''); return $options; } /** * {@inheritdoc} */ public function options_form(&$form, &$form_state) { parent::options_form($form, $form_state); $form['link_photo_to_profile'] = array( '#title' => t("Link to user's profile"), '#description' => t("Link the user picture to the user's profile"), '#type' => 'checkbox', '#default_value' => $this->options['link_photo_to_profile'], ); if (module_exists('image')) { $styles = image_styles(); $style_options = array('' => t('Default')); foreach ($styles as $style) { $style_options[$style['name']] = $style['name']; } $form['image_style'] = array( '#title' => t('Image style'), '#description' => t('Using <em>Default</em> will use the site-wide image style for user pictures set in the <a href="!account-settings">Account settings</a>.', array('!account-settings' => url('admin/config/people/accounts', array('fragment' => 'edit-personalization')))), '#type' => 'select', '#options' => $style_options, '#default_value' => $this->options['image_style'], ); } } /** * {@inheritdoc} */ public function render($values) { if ($this->options['image_style'] && module_exists('image')) { // @todo Switch to always using theme('user_picture') when it starts // supporting image styles. See http://drupal.org/node/1021564 if ($picture_fid = $this->get_value($values)) { $picture = file_load($picture_fid); if (!empty($picture)) { $picture_filepath = $picture->uri; } else { $picture_filepath = variable_get('user_picture_default', ''); } } else { $picture_filepath = variable_get('user_picture_default', ''); } if (file_valid_uri($picture_filepath)) { $account = user_load($this->get_value($values, 'uid')); $alt = t("@user's picture", array('@user' => format_username($account))); $output = theme('image_style', array('style_name' => $this->options['image_style'], 'path' => $picture_filepath, 'alt' => $alt)); if ($this->options['link_photo_to_profile'] && user_access('access user profiles')) { $uid = $this->get_value($values, 'uid'); $output = l($output, "user/$uid", array('html' => TRUE)); } } else { $output = ''; } } else { // Fake an account object. $account = new stdClass(); if ($this->options['link_photo_to_profile']) { // Prevent template_preprocess_user_picture from adding a link // by not setting the uid. $account->uid = $this->get_value($values, 'uid'); } $account->name = $this->get_value($values, 'name'); $account->mail = $this->get_value($values, 'mail'); $account->picture = $this->get_value($values); $output = theme('user_picture', array('account' => $account)); } return $output; } }