You are here

public function UserAccessForm::buildForm in Taxonomy Access Control Lite 8

Form constructor.

Parameters

array $form: An associative array containing the structure of the form.

\Drupal\Core\Form\FormStateInterface $form_state: The current state of the form.

Return value

array The form structure.

Overrides ConfigFormBase::buildForm

File

src/Form/UserAccessForm.php, line 30

Class

UserAccessForm
Builds the form for User Access.

Namespace

Drupal\tac_lite\Form

Code

public function buildForm(array $form, FormStateInterface $form_state, $user = 0) {
  $this->uid = $user;
  $vocabularies = Vocabulary::loadMultiple();
  $config = \Drupal::config('tac_lite.settings');
  $vids = $config
    ->get('tac_lite_categories');
  $schemes = $config
    ->get('tac_lite_schemes');
  if (count($vids)) {
    for ($i = 1; $i <= $schemes; $i++) {
      $config = SchemeForm::tacLiteConfig($i);
      if ($config['name']) {
        $perms = $config['perms'];
        if ($config['term_visibility']) {
          $perms[] = $this
            ->t('term visibility');
        }
        $form['tac_lite'][$config['realm']] = [
          '#type' => 'details',
          '#title' => $config['name'],
          '#description' => $this
            ->t('This scheme controls %perms.', [
            '%perms' => implode(' and ', $perms),
          ]),
          '#open' => TRUE,
          '#tree' => TRUE,
        ];

        // Create a form element for each vocabulary.
        foreach ($vids as $vid) {
          $v = $vocabularies[$vid];
          $default_values = [];
          $data = \Drupal::service('user.data')
            ->get('tac_lite', $user, 'tac_lite_scheme_' . $i) ?: [];
          if (!empty($data) && $data[$vid]) {
            $default_values = $data[$vid];
          }
          $form['tac_lite'][$config['realm']][$vid] = SchemeForm::tacLiteTermSelect($v, $default_values);
          $form['tac_lite'][$config['realm']][$vid]['#description'] = $this
            ->t('Grant permission to this user by selecting terms.  Note that permissions are in addition to those granted based on user roles.');
        }
      }
    }
    $form['tac_lite'][0] = [
      '#type' => 'markup',
      '#markup' => '<p>' . $this
        ->t('You may grant this user access based on the schemes and terms below.  These permissions are in addition to <a href=":url">role based grants on scheme settings pages</a>.', [
        ':url' => Url::fromRoute('tac_lite.scheme_1')
          ->toString(),
      ]) . "</p>\n",
      '#weight' => -1,
    ];
  }
  else {
    $form['tac_lite_help'] = [
      '#type' => 'markup',
      '#prefix' => '<p>',
      '#suffix' => '</p>',
      '#markup' => $this
        ->t('First, select one or more vocabularies on the <a href=:url>settings page</a>. Then, return to this page to complete configuration.', [
        ':url' => Url::fromRoute('tac_lite.administration')
          ->toString(),
      ]),
    ];
  }
  return parent::buildForm($form, $form_state);
}