You are here

public static function SimpleAccessGroups::processSimpleAccessGroups in Simple Access 8.3

Build the simple_aqccess_groups element.

File

src/Element/SimpleAccessGroups.php, line 45

Class

SimpleAccessGroups
Simple access groups element.

Namespace

Drupal\simple_access\Element

Code

public static function processSimpleAccessGroups(&$element, FormStateInterface $form_state, &$complete_form) {
  $groups = SimpleAccessGroup::loadMultiple();
  uasort($groups, [
    SimpleAccessGroup::class,
    'sort',
  ]);
  $config = \Drupal::config('simple_access.settings');
  $element['#default_value'] = is_array($element['#default_value']) ? $element['#default_value'] : [];
  $element['wrapper'] = isset($element['wrapper']) ? $element['wrapper'] : [];
  $element['wrapper'] += [
    '#type' => 'table',
  ];
  $element['wrapper']['#header'] = [
    t('Groups'),
  ];
  foreach (array_filter($config
    ->get('display')) as $item) {
    $element['wrapper']['#header'][] = Unicode::ucfirst($item);
  }

  /** @var \Drupal\simple_access\Entity\SimpleAccessGroup $group */
  foreach ($groups as $group) {
    $element['wrapper'][$group
      ->id()] = isset($element['wrapper'][$group
      ->id()]) ? $element['wrapper'][$group
      ->id()] : [];
    $element['wrapper'][$group
      ->id()] += [
      '#parents' => array_merge($element['#parents'], [
        $group
          ->id(),
      ]),
    ];
    $privilege = $element['#override_privilege'] || $group
      ->canManageAccess($element['#node_type']);
    $element['#default_value'][$group
      ->id()] = is_array($element['#default_value'][$group
      ->id()]) ? $element['#default_value'][$group
      ->id()] : [];
    $element['#default_value'][$group
      ->id()] += [
      'view' => 0,
      'update' => 0,
      'delete' => 0,
    ];
    $element['wrapper'][$group
      ->id()]['#access'] = $privilege;
    $element['wrapper'][$group
      ->id()]['name'] = [
      '#markup' => $group
        ->label(),
      '#access' => $privilege,
    ];
    $element['wrapper'][$group
      ->id()]['view'] = [
      '#type' => 'checkbox',
      '#default_value' => $element['#default_value'][$group
        ->id()]['view'],
      '#access' => $privilege && $config
        ->get('display.view'),
    ];
    $element['wrapper'][$group
      ->id()]['update'] = [
      '#type' => 'checkbox',
      '#default_value' => $element['#default_value'][$group
        ->id()]['update'],
      '#access' => $privilege && $config
        ->get('display.update'),
    ];
    $element['wrapper'][$group
      ->id()]['delete'] = [
      '#type' => 'checkbox',
      '#default_value' => $element['#default_value'][$group
        ->id()]['delete'],
      '#access' => $privilege && $config
        ->get('display.delete'),
    ];
  }
  return $element;
}