<?phpnamespace VisualMedia\BartBundle\Controller;use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;use phpDocumentor\Reflection\DocBlock\Tags\Return_;use VisualMedia\BartBundle\Controller\RootController;use Symfony\Component\HttpFoundation\Response;use Symfony\Component\DependencyInjection\ContainerInterface;use VisualMedia\BartBundle\Entity\RootEntity;use VisualMedia\LisaBundle\Service\SettingProvider;use VisualMedia\SettingsBundle\Entity\BaseSetting;use Symfony\Component\HttpFoundation\RequestStack;/** * RootController short summary. * * RootController description. * * @version 1.0 * @author berend */class RootController extends AbstractController{ private static $staticcontainer = false; private static $head; public static $controller; public static $requestStack; protected static $services = array(); private static $settingsCache = []; function __construct(\Symfony\Component\Asset\Packages $assetManager, RequestStack $requestStack){ RootController::$controller = $this; //static::$requestStack = $this->requestStack; static::$requestStack = $requestStack; RootController::$head .= '<script src="https://code.jquery.com/jquery-3.6.0.min.js" integrity="sha256-/xUj+3OJU5yExlq6GSYGSHk7tPXikynS7ogEvDej/m4=" crossorigin="anonymous"></script>'; RootController::$head.='<link rel="stylesheet" type="text/css" href="https://cdn.datatables.net/v/bs4/dt-1.11.4/datatables.min.css"/>'; RootController::$head.='<script type="text/javascript" src="https://cdn.datatables.net/v/bs4/dt-1.11.4/datatables.min.js"></script>'; static::$services['assets.packages'] = $assetManager; //$manager = $this->get("assets.packages"); } public static function resetCache(){ static::$services = []; static::$settingsCache = []; } public static function getSession(){ return static::$requestStack->getSession(); } public static function init(ContainerInterface $container = null) { if(isset($container) && $container){ //dd($container, get_class_methods($container)); RootEntity::$doctrine = $container->get('doctrine'); static::$staticcontainer = $container; } } public static function getDoctrineObject(){ return RootEntity::$doctrine; } public static function getHead():Response { //dd(RootController::$controller); return new Response(RootController::$head); } public static function renderTwig($data, $template=false){ if(!$template){ //find from element } //dump($data); if(is_object($self = $data)){ $data = (array) $data; $data['self'] = $self; } // dd($data); return RootController::getService("twig")->render($template, $data); } public static function getService($id) { if(isset(RootController::$services[$id])){ return RootController::$services[$id]; } $service = RootController::$staticcontainer->get($id); RootController::$services[$id] = $service; return $service; } public static function getSetting($key){ if(isset(static::$settingsCache[$key])){ return static::$settingsCache[$key]; } else{ $repo = static::getDoctrineObject()->getRepository(BaseSetting::class); $setting = $repo->findBy(["reference" => $key]); if(count($setting)>0){ $value = $setting[0]->value; static::$settingsCache[$key] = $value; return $value; } else{ return false; } } } public static function asset($url){ $manager = RootController::getService("assets.packages"); return $manager->getUrl($url); } public static function isPermitted(string $permission): bool { if (!RootController::$controller) { return false; } return RootController::$controller->isGranted($permission); }}