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
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;
}