You are here

public function views_aggregator_plugin_style_table::set_cell in Views Aggregator Plus 7

Render and set a raw value on the table cell in specified column and row.

Parameters

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

int $row_num: The result row number. Must be specified.

mixed $new_values: A single or array of values to set. This should be the raw value(s), otherwise sorting may not work properly.

string $separator: The separator to use, when $new_values is an array.

Return value

mixed The rendered value.

1 call to views_aggregator_plugin_style_table::set_cell()
views_aggregator_plugin_style_table::set_aggregated_group_values in views/views_aggregator_plugin_style_table.inc
Write the aggregated results back into the View's rendered results.

File

views/views_aggregator_plugin_style_table.inc, line 559
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

public function set_cell($field_handler, $row_num, $new_values, $separator) {
  $rendered_value = FALSE;
  $field_name = $field_handler->options['id'];

  // The webform submission id comes in as views_handler_field_numeric, so all
  // we have to detect it is its name, i.e. 'sid'.
  $is_webform_value = $field_name == 'sid' || is_a($field_handler, 'webform_handler_field_submission_data');

  // Depending on the aggregation function applied, default rendering may be
  // inappropriate. For instance "Trains (4)" cannot be rendered numerically.
  if ($is_renderable = $this
    ->is_renderable($field_name, FALSE)) {
    if ($is_webform_value) {
      $rendered_value = $this
        ->render_new_webform_value($field_handler, $row_num, $new_values, $separator);
    }
    elseif (is_a($field_handler, 'views_php_handler_field')) {

      // This prevents Views PHP from re-rendering the code snippet and makes
      // it pick up the value from $result_row.
      $field_handler->options['php_output'] = FALSE;
    }
    else {
      $rendered_value = $this
        ->render_new_value($field_handler, $row_num, $new_values, $separator);
    }
  }
  elseif ($is_webform_value) {
    $rendered_value = $new_values;
  }
  if ($rendered_value === FALSE && !$is_webform_value) {
    $rendered_value = is_array($new_values) ? implode($separator, $new_values) : $new_values;
  }
  return $this->rendered_fields[$row_num][$field_name] = $rendered_value;
}