You are here

function multiple_registration_form_alter in Multiple Registration 8.2

Same name and namespace in other branches
  1. 8 multiple_registration.module \multiple_registration_form_alter()
  2. 3.x multiple_registration.module \multiple_registration_form_alter()

Implements hook_form_alter().

File

./multiple_registration.module, line 184
Contains multiple_registration.module.

Code

function multiple_registration_form_alter(&$form, FormStateInterface $form_state, $form_id) {
  $storage = $form_state
    ->getStorage();
  if (!empty($storage['form_display']) && is_object($storage['form_display'])) {
    $form_display = $storage['form_display'];
    if ($form_display instanceof EntityFormDisplay && $form_display
      ->getTargetEntityTypeId() === 'user') {

      // Show only appropriate fields.
      $field_definitions = \Drupal::service('entity_field.manager')
        ->getFieldDefinitions('user', 'user');
      foreach ($field_definitions as $field_name => $field_definition) {
        if (isset($form[$field_name]) && $field_definition instanceof ThirdPartySettingsInterface) {
          $field_roles = $field_definition
            ->getThirdPartySetting('multiple_registration', 'user_additional_register_form') ?? [];
          $field_roles_required = $field_definition
            ->getThirdPartySetting('multiple_registration', 'user_additional_register_form_required') ?? [];
          if (!empty($field_roles)) {

            // If something was selected.
            $form[$field_name]['#access'] = MultipleRegistrationController::checkFieldAccess($field_roles);
            $form[$field_name]['widget']['#required'] = MultipleRegistrationController::checkFieldAccess($field_roles_required);
          }
        }
      }
    }
  }
  $route = \Drupal::routeMatch()
    ->getRouteObject();
  if ($route !== NULL && $route
    ->getPath() === '/user/register/{rid}') {
    $rid = \Drupal::routeMatch()
      ->getParameter('rid');

    // Hidden field to pass the rid.
    $form['multiple_registration_rid'] = [
      '#type' => 'hidden',
      '#value' => $rid,
    ];

    // Custom submit handler to store the rid.
    $form['actions']['submit']['#submit'][] = '_multiple_registration_rid';
  }
}