You are here

function jammer_form_alter in Jammer 1.0.x

Same name and namespace in other branches
  1. 5 jammer.module \jammer_form_alter()
  2. 6 jammer.module \jammer_form_alter()
  3. 7 jammer.module \jammer_form_alter()

File

./jammer.module, line 69
General functions and hook implementations.

Code

function jammer_form_alter(&$form, FormStateInterface $form_state, $form_id) {
  $messenger = \Drupal::messenger();

  // get our data
  $config = \Drupal::config('jammer.settings');
  $data = $config
    ->get('stored_values');
  $data = unserialize($data);

  // sort entries by priority
  usort($data, 'jammer_sortPriority');

  // get current user roles
  $user = \Drupal::currentUser();
  $roles = $user
    ->getRoles();

  // loop on entries to treat the ones that match $form_id
  foreach ($data as $entry) {

    // matching $form_id
    if ('node_' . $entry['form'] . '_form' == $form_id) {

      // check for roles matching
      if (jammer_matchRoles($roles, $entry)) {

        // ok. check for always/creation/exclude creation criteria
        if (jammer_matchCreation($form, $form_state, $entry)) {

          // ok. apply field(s) alteration
          foreach ($entry['elements'] as $field) {
            if (isset($form[$field])) {
              if ($entry['remove']) {

                // disable
                $form[$field]['#disabled'] = 'disabled';
              }
              else {

                // hide
                $form[$field]['#access'] = FALSE;
              }
            }
          }
        }
      }
    }
  }
}