app/IcebirdController.php line 74

Open in your IDE?
  1. <?php
  2. namespace IcebirdCMS\App;
  3. use Application\Core\Engine\Ajax as ApplicationAjax;
  4. use Application\Core\Engine\Application;
  5. use Web\Core\Engine\Ajax as WebAjax;
  6. use Web\Core\Engine\Web;
  7. use Symfony\Bundle\FrameworkBundle\Controller\Controller;
  8. use Application\Init as ApplicationInit;
  9. use Web\Init as WebInit;
  10. use Common\Exception\RedirectException;
  11. use Symfony\Component\HttpFoundation\Response;
  12. use Twig_Error;
  13. class IcebirdController extends Controller
  14. {
  15.     const DEFAULT_APPLICATION 'Web';
  16.     private static $routes = [
  17.         '' => self::DEFAULT_APPLICATION,
  18.         'backoffice' => 'Application',
  19.         'Backoffice' => 'Application'
  20.     ];
  21.     public static function getRoutes(): array
  22.     {
  23.         return self::$routes;
  24.     }
  25.     public function applicationController(): Response
  26.     {
  27.         defined('APPLICATION') || define('APPLICATION''Application');
  28.         defined('NAMED_APPLICATION') || define('NAMED_APPLICATION''backoffice');
  29.         $applicationClass $this->initializeApplication('Application');
  30.         $application = new $applicationClass($this->container->get('kernel'));
  31.         return $this->handleApplication($application);
  32.     }
  33.     public function applicationAjaxController(): Response
  34.     {
  35.         defined('APPLICATION') || define('APPLICATION''Application');
  36.         $applicationClass $this->initializeApplication('ApplicationAjax');
  37.         $application = new $applicationClass($this->container->get('kernel'));
  38.         return $this->handleApplication($application);
  39.     }
  40.     public function webController(): Response
  41.     {
  42.         defined('APPLICATION') || define('APPLICATION''Web');
  43.         $applicationClass $this->initializeWeb('Web');
  44.         $application = new $applicationClass($this->container->get('kernel'));
  45.         return $this->handleApplication($application);
  46.     }
  47.     public function webAjaxController(): Response
  48.     {
  49.         defined('APPLICATION') || define('APPLICATION''Web');
  50.         $applicationClass $this->initializeWeb('WebAjax');
  51.         $application = new $applicationClass($this->container->get('kernel'));
  52.         return $this->handleApplication($application);
  53.     }
  54.     protected function handleApplication(ApplicationInterface $application): Response
  55.     {
  56.         $application->passContainerToModels();
  57.         try {
  58.             $application->initialize();
  59.             return $application->display();
  60.         } catch (RedirectException $ex) {
  61.             return $ex->getResponse();
  62.         } catch (Twig_Error $twigError) {
  63.             if ($twigError->getPrevious() instanceof RedirectException) {
  64.                 return $twigError->getPrevious()->getResponse();
  65.             }
  66.             throw $twigError;
  67.         }
  68.     }
  69.     protected function initializeApplication(string $app): string
  70.     {
  71.         $init = new ApplicationInit($this->container->get('kernel'));
  72.         $init->initialize($app);
  73.         return $app === 'ApplicationAjax' ApplicationAjax::class : Application::class;
  74.     }
  75.     protected function initializeWeb(string $app): string
  76.     {
  77.         $init = new WebInit($this->container->get('kernel'));
  78.         $init->initialize($app);
  79.         return $app === 'WebAjax' WebAjax::class : Web::class;
  80.     }
  81. }