protected function ViewsPreRenderHookHandler::preRenderHighestValue in Views Merge Rows 8.2
Manipulates data if merge option is 'highest_value'.
Parameters
\Drupal\views\ViewExecutable $view: View object.
array $merged_rows: Array of merged rows.
array $merged_row: Current merged row.
bool $merged_row_replaced: Indicates whether $merged_row has been replaced.
bool $is_filter_row: TRUE if row merges rows of one or more filtered fields; FALSE otherwise.
array $rendered_row: Row from $rendered_fields from which data is extracted.
int $row_index: Row index to which data shall be reported if the row is a filtered one ($merged_rows).
string $field_name: Name of the field being under work.
int $merged_row_index: Row index to which data shall be reported if the row is not a filtered one ($merged_rows).
1 call to ViewsPreRenderHookHandler::preRenderHighestValue()
- ViewsPreRenderHookHandler::process in src/
HookHandler/ ViewsPreRenderHookHandler.php - Alter the view according to merge rows configuration.
File
- src/
HookHandler/ ViewsPreRenderHookHandler.php, line 698
Class
- ViewsPreRenderHookHandler
- Hook handler for the hook_views_pre_render() hook.
Namespace
Drupal\views_merge_rows\HookHandlerCode
protected function preRenderHighestValue(ViewExecutable $view, array &$merged_rows, array &$merged_row, bool &$merged_row_replaced, bool $is_filter_row, array $rendered_row, int $row_index, string $field_name, int $merged_row_index) : void {
if ($is_filter_row) {
$merged_row[$field_name] = $rendered_row[$field_name];
$merged_rows[$row_index] = $merged_row;
}
else {
// Strip the HTML from the rendered and merged fields data and grab
// the raw value.
$rendered_row_data = floatval((string) $rendered_row[$field_name]);
$merged_row_data = floatval((string) $merged_row[$field_name]);
// Place the higher value into the merged row array.
if ($rendered_row_data > $merged_row_data) {
$merged_row[$field_name] = $rendered_row[$field_name];
$merged_row_replaced = TRUE;
}
else {
$this
->unsetRow($view, $row_index);
$merged_row_replaced = FALSE;
}
}
// If we replaced the row with a higher value, then update all array
// indexes with the new index values.
if ($merged_row_replaced == TRUE) {
$this
->updateArrayIndexes($view, $merged_row, $row_index, $merged_row_index);
}
}