vendor/sulu/sulu/src/Sulu/Component/Webspace/Portal.php line 21

Open in your IDE?
  1. <?php
  2. /*
  3.  * This file is part of Sulu.
  4.  *
  5.  * (c) Sulu GmbH
  6.  *
  7.  * This source file is subject to the MIT license that is bundled
  8.  * with this source code in the file LICENSE.
  9.  */
  10. namespace Sulu\Component\Webspace;
  11. use Sulu\Component\Localization\Localization;
  12. use Sulu\Component\Webspace\Exception\EnvironmentNotFoundException;
  13. use Sulu\Component\Webspace\Exception\PortalLocalizationNotFoundException;
  14. /**
  15.  * Container for a portal configuration.
  16.  */
  17. class Portal
  18. {
  19.     /**
  20.      * The name of the portal.
  21.      *
  22.      * @var string
  23.      */
  24.     private $name;
  25.     /**
  26.      * The key of the portal.
  27.      *
  28.      * @var string
  29.      */
  30.     private $key;
  31.     /**
  32.      * An array of localizations.
  33.      *
  34.      * @var Localization[]
  35.      */
  36.     private $localizations;
  37.     /**
  38.      * The default localization for this portal.
  39.      *
  40.      * @var Localization
  41.      */
  42.     private $defaultLocalization;
  43.     /**
  44.      * The x-default localization for this portal.
  45.      *
  46.      * @var Localization
  47.      */
  48.     private $xDefaultLocalization;
  49.     /**
  50.      * @var Environment[]
  51.      */
  52.     private $environments;
  53.     /**
  54.      * @var Webspace
  55.      */
  56.     private $webspace;
  57.     /**
  58.      * Sets the name of the portal.
  59.      *
  60.      * @param string $name The name of the portal
  61.      */
  62.     public function setName($name)
  63.     {
  64.         $this->name $name;
  65.     }
  66.     /**
  67.      * Returns the name of the portal.
  68.      *
  69.      * @return string The name of the portal
  70.      */
  71.     public function getName()
  72.     {
  73.         return $this->name;
  74.     }
  75.     /**
  76.      * @param string $key
  77.      */
  78.     public function setKey($key)
  79.     {
  80.         $this->key $key;
  81.     }
  82.     /**
  83.      * @return string
  84.      */
  85.     public function getKey()
  86.     {
  87.         return $this->key;
  88.     }
  89.     /**
  90.      * Adds the given language to the portal.
  91.      */
  92.     public function addLocalization(Localization $localization)
  93.     {
  94.         $this->localizations[] = $localization;
  95.         if ($localization->isDefault()) {
  96.             $this->setDefaultLocalization($localization);
  97.         }
  98.         if ($localization->isXDefault()) {
  99.             $this->setXDefaultLocalization($localization);
  100.         }
  101.     }
  102.     /**
  103.      * Sets the localizations to this portal.
  104.      *
  105.      * @param Localization[] $localizations
  106.      */
  107.     public function setLocalizations($localizations)
  108.     {
  109.         $this->localizations $localizations;
  110.     }
  111.     /**
  112.      * Returns the languages of this portal.
  113.      *
  114.      * @return Localization[] The languages of this portal
  115.      */
  116.     public function getLocalizations()
  117.     {
  118.         return $this->localizations;
  119.     }
  120.     public function getLocalization($locale)
  121.     {
  122.         foreach ($this->getLocalizations() as $localization) {
  123.             if ($locale === $localization->getLocale()) {
  124.                 return $localization;
  125.             }
  126.         }
  127.         throw new PortalLocalizationNotFoundException($this$locale);
  128.     }
  129.     /**
  130.      * @param Localization $defaultLocalization
  131.      */
  132.     public function setDefaultLocalization($defaultLocalization)
  133.     {
  134.         $this->defaultLocalization $defaultLocalization;
  135.         if (!$this->getXDefaultLocalization()) {
  136.             $this->setXDefaultLocalization($defaultLocalization);
  137.         }
  138.     }
  139.     /**
  140.      * @return Localization
  141.      */
  142.     public function getDefaultLocalization()
  143.     {
  144.         return $this->defaultLocalization;
  145.     }
  146.     /**
  147.      * @param Localization $xDefaultLocalization
  148.      */
  149.     public function setXDefaultLocalization($xDefaultLocalization)
  150.     {
  151.         $this->xDefaultLocalization $xDefaultLocalization;
  152.     }
  153.     /**
  154.      * @return Localization
  155.      */
  156.     public function getXDefaultLocalization()
  157.     {
  158.         return $this->xDefaultLocalization;
  159.     }
  160.     /**
  161.      * Adds an environment to this portal.
  162.      *
  163.      * @param Environment $environment Environment The environment to add
  164.      */
  165.     public function addEnvironment($environment)
  166.     {
  167.         $this->environments[$environment->getType()] = $environment;
  168.     }
  169.     /**
  170.      * Sets the environments for this portal.
  171.      *
  172.      * @param \Sulu\Component\Webspace\Environment[] $environments
  173.      */
  174.     public function setEnvironments(array $environments)
  175.     {
  176.         $this->environments = [];
  177.         foreach ($environments as $environment) {
  178.             $this->addEnvironment($environment);
  179.         }
  180.     }
  181.     /**
  182.      * Returns the environment for this portal.
  183.      *
  184.      * @return \Sulu\Component\Webspace\Environment[]
  185.      */
  186.     public function getEnvironments()
  187.     {
  188.         return $this->environments;
  189.     }
  190.     /**
  191.      * Returns the environment with the given type, and throws an exception if the environment does not exist.
  192.      *
  193.      * @param string $type
  194.      *
  195.      * @throws Exception\EnvironmentNotFoundException
  196.      *
  197.      * @return \Sulu\Component\Webspace\Environment
  198.      */
  199.     public function getEnvironment($type)
  200.     {
  201.         if (!isset($this->environments[$type])) {
  202.             throw new EnvironmentNotFoundException($this$type);
  203.         }
  204.         return $this->environments[$type];
  205.     }
  206.     /**
  207.      * @param \Sulu\Component\Webspace\Webspace $webspace
  208.      */
  209.     public function setWebspace(Webspace $webspace)
  210.     {
  211.         $this->webspace $webspace;
  212.     }
  213.     /**
  214.      * @return \Sulu\Component\Webspace\Webspace
  215.      */
  216.     public function getWebspace()
  217.     {
  218.         return $this->webspace;
  219.     }
  220.     public function toArray($depth null)
  221.     {
  222.         $res = [];
  223.         $res['name'] = $this->getName();
  224.         $res['key'] = $this->getKey();
  225.         $res['localizations'] = [];
  226.         foreach ($this->getLocalizations() as $localization) {
  227.             $res['localizations'][] = $localization->toArray();
  228.         }
  229.         foreach ($this->getEnvironments() as $environment) {
  230.             $res['environments'][] = $environment->toArray();
  231.         }
  232.         return $res;
  233.     }
  234. }