You are here

function commerce_price_decimals_formatter_handler_area_line_item_summary_decimals::render in Commerce Price Decimals Formatter 7

Render the area.

Overrides views_handler_area::render

File

includes/views/handlers/commerce_price_decimals_formatter_handler_area_line_item_summary_decimals.inc, line 88
Defines a line item summary area handler so the summary can be plugged into the View itself.

Class

commerce_price_decimals_formatter_handler_area_line_item_summary_decimals
@file Defines a line item summary area handler so the summary can be plugged into the View itself.

Code

function render($empty = FALSE) {
  if (!$empty || !empty($this->options['empty'])) {

    // Build an array of line item IDs from the View results that we will load
    // and use for calculating totals.
    $line_item_ids = array();
    foreach ($this->view->result as $result) {
      $line_item_id = $this
        ->get_value($result);
      if ($line_item_id) {
        $line_item_ids[] = $line_item_id;
      }
    }
    $line_items = commerce_line_item_load_multiple($line_item_ids);

    // Add total information and the line item summary links.
    $quantity = commerce_line_items_quantity($line_items);
    $total = commerce_line_items_total($line_items);
    $currency = commerce_currency_load($total['currency_code']);
    $links = array();
    foreach (commerce_line_item_summary_links() as $name => $link) {
      if ($this->options['links'][$name] === $name && $link['access']) {
        $links[str_replace('_', '-', 'line-item-summary-' . $name)] = $link;
      }
    }

    // Build the variables array to send to the template.
    $variables = array(
      'view' => $this->view,
      'links' => theme('links', array(
        'links' => $links,
        'attributes' => array(
          'class' => array(
            'links',
            'inline',
          ),
        ),
      )),
    );
    if ($this->options['info']['quantity']) {
      $variables = array(
        'quantity_raw' => $quantity,
        'quantity_label' => format_plural($quantity, 'item', 'items', array(), array(
          'context' => 'product count on a Commerce order',
        )),
        'quantity' => format_plural($quantity, '1 item', '@count items', array(), array(
          'context' => 'product count on a Commerce order',
        )),
      ) + $variables;
    }
    if ($this->options['info']['total']) {
      $variables = array(
        'total_raw' => number_format(commerce_currency_round($total['amount'], $currency), $currency['decimals']),
        'total_label' => t('Total:'),
        'total' => commerce_price_decimals_formatter_currency_format($total['amount'], $total['currency_code'], $this->options, $this->view),
      ) + $variables;
    }
    return theme('commerce_line_item_summary', $variables);
  }
  return '';
}