You are here

public function EntityTypeRoleAccessProvider::buildOperationConfigForm in Role Access Control 8.2

File

src/Plugin/adva/AccessProvider/EntityTypeRoleAccessProvider.php, line 44

Class

EntityTypeRoleAccessProvider
Provides pre role access to entities based upon type and bundle.

Namespace

Drupal\rac\Plugin\adva\AccessProvider

Code

public function buildOperationConfigForm(array $form, FormStateInterface $form_state) {
  $form = parent::buildOperationConfigForm($form, $form_state);
  $op = $form['#entity_op'];
  $context = [
    '%op' => $op,
  ];
  $defaults = [];
  switch ($form['#entity_op_type']) {
    case EntityTypeAccessProvider::ENTITY_TYPE_OP:
      $defaults = isset($this->configuration['operations'][$op]) ? $this->configuration['operations'][$op] : [];
      break;
    case EntityTypeAccessProvider::ENTITY_DEFAULT_OP:
      $config = isset($this->configuration['default']['operations']) ? $this->configuration['default']['operations'] : [];
      $defaults = isset($config[$op]) ? $config[$op] : [];
      break;
    case EntityTypeAccessProvider::ENTITY_BUNDLE_OP:
      if (isset($form['#entity_bundle'])) {
        $config = isset($this->configuration['bundles']['override'][$form['#entity_bundle']]['operations']) ? $this->configuration['bundles']['override'][$form['#entity_bundle']]['operations'] : [];
        $defaults = isset($config[$op]) ? $config[$op] : [];
      }
      break;
  }
  $form_parents = $form['#parents'];
  $roles = Role::loadMultiple();
  $role_options = [];
  foreach ($roles as $role_id => $role) {
    $role_options[$role_id] = $role
      ->label();
  }
  $form['roles'] = [
    '#type' => 'checkboxes',
    '#title' => $this
      ->t('Grant <em>%op</em> to users with...', $context),
    '#parents' => array_merge($form_parents, [
      'roles',
    ]),
    '#default_value' => isset($defaults['roles']) ? $defaults['roles'] : [],
    '#options' => $role_options,
  ];
  return $form;
}