You are here

protected function FilterPluginBase::buildGroupSubmit in Zircon Profile 8.0

Same name and namespace in other branches
  1. 8 core/modules/views/src/Plugin/views/filter/FilterPluginBase.php \Drupal\views\Plugin\views\filter\FilterPluginBase::buildGroupSubmit()

Save new group items, re-enumerates and remove groups marked to delete.

1 call to FilterPluginBase::buildGroupSubmit()
FilterPluginBase::submitOptionsForm in core/modules/views/src/Plugin/views/filter/FilterPluginBase.php
Simple submit handler

File

core/modules/views/src/Plugin/views/filter/FilterPluginBase.php, line 686
Contains \Drupal\views\Plugin\views\filter\FilterPluginBase.

Class

FilterPluginBase
Base class for Views filters handler plugins.

Namespace

Drupal\views\Plugin\views\filter

Code

protected function buildGroupSubmit($form, FormStateInterface $form_state) {
  $groups = array();
  $group_items = $form_state
    ->getValue(array(
    'options',
    'group_info',
    'group_items',
  ));
  uasort($group_items, array(
    'Drupal\\Component\\Utility\\SortArray',
    'sortByWeightElement',
  ));

  // Filter out removed items.
  // Start from 1 to avoid problems with #default_value in the widget.
  $new_id = 1;
  $new_default = 'All';
  foreach ($group_items as $id => $group) {
    if (empty($group['remove'])) {

      // Don't store this.
      unset($group['remove']);
      unset($group['weight']);
      $groups[$new_id] = $group;
      if ($form_state
        ->getValue(array(
        'options',
        'group_info',
        'default_group',
      )) == $id) {
        $new_default = $new_id;
      }
    }
    $new_id++;
  }
  if ($new_default != 'All') {
    $form_state
      ->setValue(array(
      'options',
      'group_info',
      'default_group',
    ), $new_default);
  }
  $filter_default_multiple = $form_state
    ->getValue(array(
    'options',
    'group_info',
    'default_group_multiple',
  ));
  $form_state
    ->setValue(array(
    'options',
    'group_info',
    'default_group_multiple',
  ), array_filter($filter_default_multiple));
  $form_state
    ->setValue(array(
    'options',
    'group_info',
    'group_items',
  ), $groups);
}