Spaces:
No application file
No application file
| namespace Mautic\CoreBundle\Loader; | |
| use Mautic\CoreBundle\CoreEvents; | |
| use Mautic\CoreBundle\Event\RouteEvent; | |
| use Mautic\CoreBundle\Helper\CoreParametersHelper; | |
| use Symfony\Component\Config\Loader\Loader; | |
| use Symfony\Component\EventDispatcher\EventDispatcherInterface; | |
| use Symfony\Component\Routing\RouteCollection; | |
| class RouteLoader extends Loader | |
| { | |
| public function __construct( | |
| private EventDispatcherInterface $dispatcher, | |
| private CoreParametersHelper $coreParameters | |
| ) { | |
| } | |
| /** | |
| * Load each bundles routing.php file. | |
| * | |
| * @param mixed $resource | |
| * | |
| * @return RouteCollection | |
| * | |
| * @throws \RuntimeException | |
| */ | |
| public function load($resource, $type = null) | |
| { | |
| // Public | |
| $event = new RouteEvent($this, 'public'); | |
| $this->dispatcher->dispatch($event, CoreEvents::BUILD_ROUTE); | |
| $collection = $event->getCollection(); | |
| // Force all links to be SSL if the site_url parameter is SSL | |
| $siteUrl = $this->coreParameters->get('site_url'); | |
| $forceSSL = false; | |
| if (!empty($siteUrl)) { | |
| $parts = parse_url($siteUrl); | |
| $forceSSL = (!empty($parts['scheme']) && 'https' == $parts['scheme']); | |
| } | |
| if ($forceSSL) { | |
| $collection->setSchemes('https'); | |
| } | |
| // Secured area - Default | |
| $event = new RouteEvent($this); | |
| $this->dispatcher->dispatch($event, CoreEvents::BUILD_ROUTE); | |
| $secureCollection = $event->getCollection(); | |
| // OneupUploader (added behind our secure /s) | |
| $secureCollection->addCollection($this->import('.', 'uploader')); | |
| // Elfinder file manager | |
| $collection->addCollection($this->import('@FMElfinderBundle/Resources/config/routing.yaml')); | |
| // API | |
| $event = new RouteEvent($this, 'api'); | |
| $this->dispatcher->dispatch($event, CoreEvents::BUILD_ROUTE); | |
| $apiCollection = $event->getCollection(); | |
| $apiCollection->addPrefix('/api'); | |
| if ($forceSSL) { | |
| $apiCollection->setSchemes('https'); | |
| } | |
| $collection->addCollection($apiCollection); | |
| $secureCollection->addPrefix('/s'); | |
| if ($forceSSL) { | |
| $secureCollection->setSchemes('https'); | |
| } | |
| $collection->addCollection($secureCollection); | |
| // Catch all | |
| $event = new RouteEvent($this, 'catchall'); | |
| $this->dispatcher->dispatch($event, CoreEvents::BUILD_ROUTE); | |
| $lastCollection = $event->getCollection(); | |
| if ($forceSSL) { | |
| $lastCollection->setSchemes('https'); | |
| } | |
| $collection->addCollection($lastCollection); | |
| return $collection; | |
| } | |
| /** | |
| * @param mixed $resource | |
| */ | |
| public function supports($resource, $type = null): bool | |
| { | |
| return 'mautic' === $type; | |
| } | |
| } | |