src/Tools/ConfigApp.php line 24

Open in your IDE?
  1. <?php
  2. namespace App\Tools;
  3. use App\Entity\ParametreSociete;
  4. use App\Repository\ParametreSocieteRepository;
  5. use Exception;
  6. use Symfony\Component\HttpFoundation\RequestStack;
  7. class ConfigApp
  8. {
  9.     private string $_hostname;
  10.     private string $_subdomain '';
  11.     public ?ParametreSociete $parametre;
  12.     public function __construct(string $hostnameParametreSocieteRepository $parametreSocieteRepositoryRequestStack $requestStack)
  13.     {
  14.         $this->_hostname $hostname;
  15.         if($this->isValideDomaine()){
  16.             try {
  17.                 $this->parametre $parametreSocieteRepository->findOneBySubdomain($this->_subdomain);
  18.                 if(null!==$this->parametre){
  19.                     $this->setParametreSociete();
  20.                     $requestStack->getSession()->set('societe'$this->parametre);
  21.                 }
  22.             } catch (Exception $e) {
  23.                 dd($e);
  24.             }
  25.         }
  26.     }
  27.     /**
  28.      * @return bool
  29.      */
  30.     public function isValideDomaine(): bool
  31.     {
  32.         // valide si environnement de dev local
  33.         if('localhost' === $this->_hostname){
  34.             $this->_subdomain 'dev';
  35.             return true;
  36.         }
  37.         // controle si la chaine de caractère passée est bien une URL valide
  38.         if (!filter_var($this->_hostnameFILTER_VALIDATE_URL)) return false;
  39.         // init du sous-domaine qui correspond à la config qui va être utilisée
  40.         $a explode('.'$this->_hostname);
  41.         if (=== count($a)) {
  42.             $this->_subdomain str_replace(array('http://','https://'), ''$a[0]);
  43.             return true;
  44.         }
  45.         return false;
  46.     }
  47.     /**
  48.      * Sélection des champs pouvant être enregistrés en session
  49.      * @return void
  50.      */
  51.     private function setParametreSociete(): void
  52.     {
  53.         $parametre = new ParametreSociete();
  54.         $parametre->setIsActive$this->parametre->getIsActive() );
  55.         $parametre->setBase$this->parametre->getBase() );
  56.         $parametre->setPrefix$this->parametre->getPrefix() );
  57.         $parametre->setLibSociete$this->parametre->getLibSociete() );
  58.         $parametre->setLogoPath$this->parametre->getLogoPath() );
  59.         $parametre->setBackgroundPath$this->parametre->getBackgroundPath() );
  60.         $parametre->setThemeColor$this->parametre->getThemeColor() );
  61.         $parametre->setData$this->parametre->getData() );
  62.         $this->parametre $parametre;
  63.     }
  64. }