You are here

protected function ViewsPreRenderHookHandler::renderMerge in Views Merge Rows 8.2

Sets data into $view->style_plugin->rendered_fields.

If merge option is 'merge' or 'merge_unique'.

Parameters

\Drupal\views\ViewExecutable $view: View object.

array $merged_row: Current merged row.

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.

array $field_config: The Views Merge Rows config for the field.

1 call to ViewsPreRenderHookHandler::renderMerge()
ViewsPreRenderHookHandler::process in src/HookHandler/ViewsPreRenderHookHandler.php
Alter the view according to merge rows configuration.

File

src/HookHandler/ViewsPreRenderHookHandler.php, line 824

Class

ViewsPreRenderHookHandler
Hook handler for the hook_views_pre_render() hook.

Namespace

Drupal\views_merge_rows\HookHandler

Code

protected function renderMerge(ViewExecutable $view, array &$merged_row, int $row_index, string $field_name, array $field_config) : void {
  foreach ($merged_row[$field_name] as $field_index => $field_value) {
    if (empty($field_value)) {
      unset($merged_row[$field_name][$field_index]);
    }
  }
  if ($field_config['exclude_first']) {
    array_shift($merged_row[$field_name]);
  }
  $value_count = count($merged_row[$field_name]);
  $iteration = 1;
  foreach ($merged_row[$field_name] as $field_index => $field_value) {
    if ($iteration != $value_count) {
      $merged_row[$field_name][$field_index] = $field_config['prefix'] . $field_value . $field_config['separator'] . $field_config['suffix'];
    }
    else {
      $merged_row[$field_name][$field_index] = $field_config['prefix'] . $field_value . $field_config['suffix'];
    }
    $iteration++;
  }
  unset($iteration);
  unset($value_count);
  $view->style_plugin
    ->setRenderedField(implode($merged_row[$field_name]), $row_index, $field_name);
}