You are here

function views_rss_handler_field_term_node_tid::render_item in Views RSS 7.2

Same name and namespace in other branches
  1. 6.2 views/views_rss_handler_field_term_node_tid.inc \views_rss_handler_field_term_node_tid::render_item()

Overrides views_handler_field_term_node_tid::render_item

File

views/views_rss_handler_field_term_node_tid.inc, line 111
Field handler to provide additional control for the All Taxonomy Terms field.

Class

views_rss_handler_field_term_node_tid
@file Field handler to provide additional control for the All Taxonomy Terms field.

Code

function render_item($count, $item) {
  if ($this->options['type'] == 'rss_category') {

    // Basic XML element details.
    $rss_element = array(
      'key' => 'category',
      'value' => $item['name'],
    );

    // Slash-delimited list of all parents with the term at the end.
    // $item['parents'] array contains the current term as well.
    if ($this->options['rss_include_parents'] && isset($item['parents'])) {
      $parents = array();

      // Add vocabulary if required.
      if ($this->options['rss_include_vocabulary'] && isset($item['vocabulary'])) {
        $parents[] = $item['vocabulary'];
      }

      // Add all terms (parent and current one).
      foreach (array_reverse($item['parents']) as $parent) {
        $parents[] = $parent->name;
      }
      if (count($parents)) {
        $rss_element['value'] = implode('/', $parents);
      }
    }

    // Add "domain" attribute if required.
    if ($this->options['rss_domain'] == 'path') {
      $rss_element['attributes']['domain'] = url('<front>', array(
        'absolute' => TRUE,
      )) . $item['path'];
    }
    elseif ($this->options['rss_domain'] == 'alias') {
      $rss_element['attributes']['domain'] = url($item['path'], array(
        'absolute' => TRUE,
      ));
    }

    // Prepare raw-rendered values to store in view results.
    $rendered = array(
      '#item' => $item,
      '#markup' => format_xml_elements(array(
        $rss_element,
      )),
      '#rss_element' => $rss_element,
      '#settings' => $this->options,
    );

    // Store raw-rendered values in view results, the same way
    // as values from standard field formatters are added.
    $row_index = $this->view->row_index;
    $field_name = 'field_' . $this->field;
    $this->view->result[$row_index]->{$field_name}[$count] = array(
      'rendered' => $rendered,
      'raw' => $item,
    );

    // Return formatted XML element.
    return format_xml_elements(array(
      $rss_element,
    ));
  }

  // Standard Views render_item().
  return parent::render_item($count, $item);
}