ModalAjaxController.php in Modal 4.1.x
File
src/Controller/ModalAjaxController.php
View source
<?php
namespace Drupal\modal_page\Controller;
use Drupal\Core\Controller\ControllerBase;
use Drupal\Core\Extension\ExtensionList;
use Drupal\Core\Routing\RouteMatchInterface;
use Symfony\Component\DependencyInjection\ContainerInterface;
use Drupal\Core\Config\ConfigFactoryInterface;
use Drupal\modal_page\Service\ModalPageHelperService;
use Drupal\Core\Extension\ModuleHandlerInterface;
use Drupal\Core\Entity\EntityTypeManagerInterface;
use Symfony\Component\HttpFoundation\RequestStack;
class ModalAjaxController extends ControllerBase {
protected $routeMatch;
protected $extensionListModule;
protected $configFactory;
protected $modalPageHelperService;
protected $projectHandler;
protected $entityTypeManager;
protected $requestStack;
public function __construct(RouteMatchInterface $route_match, ExtensionList $extension_list_module, ConfigFactoryInterface $config_factory, ModalPageHelperService $modalPageHelperService, ModuleHandlerInterface $projectHandler, EntityTypeManagerInterface $entityManager, RequestStack $requestStack) {
$this->routeMatch = $route_match;
$this->extensionListModule = $extension_list_module;
$this->configFactory = $config_factory;
$this->modalPageHelperService = $modalPageHelperService;
$this->projectHandler = $projectHandler;
$this->entityTypeManager = $entityManager;
$this->requestStack = $requestStack;
}
public static function create(ContainerInterface $container) {
return new static($container
->get('current_route_match'), $container
->get('extension.list.module'), $container
->get('config.factory'), $container
->get('modal_page.helper'), $container
->get('module_handler'), $container
->get('entity_type.manager'), $container
->get('request_stack'));
}
public function hookModalSubmit() {
if (empty($this->requestStack
->getCurrentRequest()->request
->get('id'))) {
echo FALSE;
exit;
}
$modalId = $this->requestStack
->getCurrentRequest()->request
->get('id');
$modal = $this->entityTypeManager
->getStorage('modal')
->load($modalId);
if (empty($modal)) {
echo FALSE;
exit;
}
$userHasAccessOnModal = $this->modalPageHelperService
->verifyIfUserHasAccessOnModal($modal);
if (empty($userHasAccessOnModal)) {
echo FALSE;
exit;
}
$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');
}
$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;
}
}