You are here

public function ModalAjaxController::hookModalSubmit in Modal 4.0.x

Same name and namespace in other branches
  1. 4.1.x src/Controller/ModalAjaxController.php \Drupal\modal_page\Controller\ModalAjaxController::hookModalSubmit()
1 string reference to 'ModalAjaxController::hookModalSubmit'
modal_page.routing.yml in ./modal_page.routing.yml
modal_page.routing.yml

File

src/Controller/ModalAjaxController.php, line 100

Class

ModalAjaxController
Controller routines for Ajax routes.

Namespace

Drupal\modal_page\Controller

Code

public function hookModalSubmit() {
  if (empty($this->requestStack
    ->getCurrentRequest()->request
    ->get('id'))) {
    echo FALSE;
    exit;
  }
  $modalId = $this->requestStack
    ->getCurrentRequest()->request
    ->get('id');

  // Load Modal.
  $modal = $this->entityTypeManager
    ->getStorage('modal')
    ->load($modalId);
  if (empty($modal)) {
    echo FALSE;
    exit;
  }

  // Verify if User Has Access on this Modal.
  $userHasAccessOnModal = $this->modalPageHelperService
    ->verifyIfUserHasAccessOnModal($modal);
  if (empty($userHasAccessOnModal)) {
    echo FALSE;
    exit;
  }

  // Load Methods.
  $projectsThatImplementsHookModalSubmit = $this->projectHandler
    ->getImplementations('modal_submit');
  if (empty($projectsThatImplementsHookModalSubmit)) {
    echo FALSE;
    exit;
  }
  $modalState = [];
  if (!empty($this->requestStack
    ->getCurrentRequest()->request
    ->get('modal_state'))) {
    $modalState = $this->requestStack
      ->getCurrentRequest()->request
      ->get('modal_state');
  }

  // Arguments to be sent to Hook.
  $argsToHookModalSubmit = [
    'modal' => $modal,
    'modal_state' => $modalState,
    'modal_id' => $modalId,
  ];
  $hookNameModalIdModalSubmit = $modalId . '_modal_submit';
  $this->projectHandler
    ->invokeAll($hookNameModalIdModalSubmit, $argsToHookModalSubmit);
  $hookNameModalSubmit = 'modal_submit';
  $this->projectHandler
    ->invokeAll($hookNameModalSubmit, $argsToHookModalSubmit);
  echo TRUE;
  exit;
}