MOON
Server: Apache
System: Linux nserver.cafsindia.com 4.18.0-553.104.1.lve.el8.x86_64 #1 SMP Tue Feb 10 20:07:30 UTC 2026 x86_64
User: cafsindia (1002)
PHP: 8.2.30
Disabled: NONE
Upload Files
File: /home/cafsindia/help.cafsindia.com/vendor/uvdesk/extension-framework/Definition/RouteLoader.php
<?php

namespace Webkul\UVDesk\ExtensionFrameworkBundle\Definition;

use Symfony\Component\Config\Loader\Loader;
use Symfony\Component\Routing\RouteCollection;
use Symfony\Component\DependencyInjection\ContainerInterface;
use Webkul\UVDesk\CoreFrameworkBundle\Definition\RouterInterface;
use Webkul\UVDesk\ExtensionFrameworkBundle\Definition\Routing\RoutingResourceInterface;
use Webkul\UVDesk\ExtensionFrameworkBundle\Definition\Routing\ApiRoutingResourceInterface;
use Webkul\UVDesk\ExtensionFrameworkBundle\Definition\Routing\ExposedRoutingResourceInterface;
use Webkul\UVDesk\ExtensionFrameworkBundle\Definition\Routing\ProtectedRoutingResourceInterface;

class RouteLoader extends Loader implements RouterInterface
{
    CONST API_PATH_PREFIX = '/api/';
    CONST EXPOSED_PATH_PREFIX = '/{_locale}/';
    CONST PROTECTED_PATH_PREFIX = '/{_locale}/%uvdesk_site_path.member_prefix%/';

    private $apiRoutingResources = [];
    private $exposedRoutingResources = [];
    private $protectedRoutingResources = [];
    
    public function __construct(ContainerInterface $container)
	{
        $this->env = $container->get('kernel')->getEnvironment();
    }

    public function addApiRoutingResource(ApiRoutingResourceInterface $routingResource, array $tags = [])
    {
        if (empty($tags)) {
            $this->apiRoutingResources[] = $routingResource;

            return;
        }
        
        foreach ($tags as $tag) {
            if (empty($tag) || empty($tag['env'])) {
                $this->apiRoutingResources[] = $routingResource;
            } else if (!empty($tag['env']) && $this->env === $tag['env']) {
                $this->apiRoutingResources[] = $routingResource;
            }
        }
    }

    public function addExposedRoutingResource(ExposedRoutingResourceInterface $routingResource, array $tags = [])
    {
        if (empty($tags)) {
            $this->exposedRoutingResources[] = $routingResource;

            return;
        }
        
        foreach ($tags as $tag) {
            if (empty($tag) || empty($tag['env'])) {
                $this->exposedRoutingResources[] = $routingResource;
            } else if (!empty($tag['env']) && $this->env === $tag['env']) {
                $this->exposedRoutingResources[] = $routingResource;
            }
        }
    }

    public function addProtectedRoutingResource(ProtectedRoutingResourceInterface $routingResource, array $tags = [])
    {
        if (empty($tags)) {
            $this->protectedRoutingResources[] = $routingResource;

            return;
        }
        
        foreach ($tags as $tag) {
            if (empty($tag) || empty($tag['env'])) {
                $this->protectedRoutingResources[] = $routingResource;
            } else if (!empty($tag['env']) && $this->env === $tag['env']) {
                $this->protectedRoutingResources[] = $routingResource;
            }
        }
    }
    
    public function load($resource, $type = null)
    {
        $routeCollection = new RouteCollection();

        // Add api routing resources
        foreach ($this->apiRoutingResources as $routingResource) {
            $collection = $this->import($routingResource->getResourcePath(), $routingResource->getResourceType());

            foreach ($collection->all() as $name => $route) {
                $route->setPath(self::API_PATH_PREFIX . ltrim($route->getPath(), '/'));
                $route->addDefaults(['_locale' => '%locale%']);
                $route->addRequirements(['_locale' => '%app_locales%']);
            }

            $routeCollection->addCollection($collection);
        }

        // Add private routing resources
        foreach ($this->protectedRoutingResources as $routingResource) {
            $collection = $this->import($routingResource->getResourcePath(), $routingResource->getResourceType());

            foreach ($collection->all() as $name => $route) {
                $route->setPath(self::PROTECTED_PATH_PREFIX . ltrim($route->getPath(), '/'));
                $route->addDefaults(['_locale' => '%locale%']);
                $route->addRequirements(['_locale' => '%app_locales%']);
            }

            $routeCollection->addCollection($collection);
        }

        // Add public routing resources
        foreach ($this->exposedRoutingResources as $routingResource) {
            $collection = $this->import($routingResource->getResourcePath(), $routingResource->getResourceType());

            foreach ($collection->all() as $name => $route) {
                $route->setPath(self::EXPOSED_PATH_PREFIX . ltrim($route->getPath(), '/'));
                $route->addDefaults(['_locale' => '%locale%']);
                $route->addRequirements(['_locale' => '%app_locales%']);
            }

            $routeCollection->addCollection($collection);
        }

        return $routeCollection;
    }

    public function supports($resource, $type = null)
    {
        return 'uvdesk_extensions' === $type;
    }
}