You are here

function twitterfield_field_formatter_view in TwitterField 7

Implements hook_field_formatter_view().

File

./twitterfield.module, line 235
The Twitter Field Widget provides a custom field formatter to display Twitter Id's as Twitter Profile Widgets.

Code

function twitterfield_field_formatter_view($entity_type, $entity, $field, $instance, $langcode, $items, $display) {
  $element = array();
  switch ($display['type']) {
    case 'twitterfield_twitter_link':
      foreach ($items as $delta => $item) {
        if ($item['safe_value']) {
          $value = $item['safe_value'];
          if (twitterfield_is_username($value) || twitterfield_is_list($value)) {
            $url_part = substr($value, 1);
          }
          else {

            // hashtag or search string.
            $url_part = 'search?q=' . rawurlencode($value);
          }
          $element[$delta] = array(
            '#markup' => l($value, 'http://twitter.com/' . $url_part, array(
              'attributes' => array(
                'class' => 'twitterfield_twitter_link',
              ),
            )),
          );
        }
      }
      break;
    case 'twitterfield_twitter_widget':
      foreach ($items as $delta => $item) {
        if ($item['safe_value']) {
          $type = 'search';
          $value = $item['safe_value'];

          // Title and subject need to be escaped for insertion into javascript string.
          $title = NULL;
          $subject = addslashes($value);
          if (twitterfield_is_username($value)) {
            $type = 'profile';
            $value = substr($value, 1);
          }
          elseif (twitterfield_is_list($value)) {
            $type = 'list';
            $value = explode('/', substr($value, 1));
          }
          else {

            // Search expressions need to be escaped for insertion in javascript string.
            $value = addslashes($value);
          }
          $element[$delta] = array(
            '#markup' => theme('twitter_widget', array(
              'type' => $type,
              'value' => $value,
              'title' => $title,
              'subject' => $subject,
            )),
          );
        }
      }
      break;
    case 'twitterfield_twitter_pull':
      foreach ($items as $delta => $item) {
        if ($item['safe_value']) {
          $title = $item['safe_value'];
          if (!empty($display['settings']['title'])) {
            if ($display['settings']['title'] == '<none>') {
              $title = FALSE;
            }
            else {
              $title = $display['settings']['title'];
            }
          }
          $element[$delta] = array(
            '#markup' => twitter_pull_render($item['safe_value'], $title, $display['settings']['items']),
          );
        }
      }
      break;
  }
  return $element;
}