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\AccessProviderCode
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;
}