You are here

protected function views_aggregator_plugin_style_table::render_new_value in Views Aggregator Plus 7

Returns the rendered value for a new (raw) value of a table cell.

Parameters

object $field_handler: The handler associated with the field/table-column being requested.

int $row_num: The result row number.

mixed $new_values: The raw value or array of raw values to render.

string $separator: Separator to use between rendered values, when $new_values is an array.

Return value

mixed The rendered new value or FALSE if the value could not be rendered.

2 calls to views_aggregator_plugin_style_table::render_new_value()
views_aggregator_plugin_style_table::set_cell in views/views_aggregator_plugin_style_table.inc
Render and set a raw value on the table cell in specified column and row.
views_aggregator_plugin_style_table::set_totals_row in views/views_aggregator_plugin_style_table.inc
Write the aggregated results back into the View results totals (footer).

File

views/views_aggregator_plugin_style_table.inc, line 607
views_aggregator_plugin_style_table.inc

Class

views_aggregator_plugin_style_table
Style plugin to render each item as a row in a table.

Code

protected function render_new_value($field_handler, $row_num, $new_values, $separator) {
  if (!empty($this->options['general']['use_field_handler'])) {

    // Need this test as views_handler_field_field::get_value() drastically
    // overrides views_handler_field::get_value() and will expect an entity
    // to be present in $field_handler->view->result[$row_num]->_field_data
    // and attempt to clone it, which results in WSOD when not there.
    // rendering this way is also no good for views_php_handler_fields and
    // views_handler_field_math fields.
    if ($this
      ->is_numeric_field($field_handler)) {
      return $field_handler
        ->render((object) array(
        $field_handler->field_alias => $new_values,
      ));
    }
  }
  $new_values = is_array($new_values) ? $new_values : array(
    $new_values,
  );

  // If the field_handler belongs to an entity Field (as in the field module),
  // then we call render_from_raw(), which uses the attached parent entity to
  // render the field, which at some point will involve a call to
  // field_view_field($entity...).
  // Other field_handlers (e.g. Math Expressions) don't have the same data
  // structures attached --they are Views fields, but not core Fields-- so
  // require a different approach using format_numeric().
  $rendered_values = array();
  foreach ($new_values as $new_value) {
    if ($this
      ->is_standard_field($field_handler)) {
      $rendered_values[] = $this
        ->render_from_raw($field_handler, $row_num, $new_value);
    }
    elseif ($this
      ->is_commerce_currency_amount($field_handler)) {
      $rendered_values[] = $this
        ->render_from_raw_scalar($field_handler, $row_num, $new_value);
    }
    else {

      // If $new_value is not a number, this tends to return it verbatim.
      $rendered_values[] = $this
        ->format_numeric($field_handler, $new_value);
    }
  }
  $rendered_value = implode(empty($separator) ? ' - ' : $separator, $rendered_values);
  return is_array($rendered_value) ? drupal_render($rendered_value) : $rendered_value;
}