You are here

public static function Fieldset::replaceFieldsetHandlers in Views fieldsets 8.3

1 call to Fieldset::replaceFieldsetHandlers()
views_fieldsets_preprocess_views_view_fields in ./views_fieldsets.module
Implements hook_preprocess_views_view_fields().

File

src/Plugin/views/field/Fieldset.php, line 107

Class

Fieldset
@ViewsField("fieldset").

Namespace

Drupal\views_fieldsets\Plugin\views\field

Code

public static function replaceFieldsetHandlers(ViewExecutable $view, array &$fields, ResultRow $row) {
  $fieldsets = self::getAllFieldsets($view);

  // Replace Fieldsets.
  foreach ($fields as $name => $field) {
    if (isset($fieldsets[$name])) {
      $fields[$name] = new RowFieldset($field, $row);
    }
  }

  // Move Children.
  $moved = [];
  foreach ($fieldsets as $fieldset_name => $fieldset) {
    foreach ($fieldset
      ->getChildren() as $child_name) {
      if (isset($fields[$child_name])) {
        $fields[$fieldset_name]
          ->addChild($fields, $child_name);
        $moved[$child_name] = $child_name;
      }
    }
  }

  // Remove moved Children.
  $fields = array_diff_key($fields, $moved);
  return $fieldsets;
}