vendor/sulu/sulu/src/Sulu/Component/Webspace/PortalInformation.php line 20

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\Util\ArrayableInterface;
  13. /**
  14.  * This class represents the information for a given URL.
  15.  */
  16. class PortalInformation implements ArrayableInterface
  17. {
  18.     /**
  19.      * The type of the match.
  20.      *
  21.      * @var int
  22.      */
  23.     private $type;
  24.     /**
  25.      * The webspace for this portal information.
  26.      *
  27.      * @var Webspace
  28.      */
  29.     private $webspace;
  30.     /**
  31.      * The portal for this portal information.
  32.      *
  33.      * @var Portal
  34.      */
  35.     private $portal;
  36.     /**
  37.      * The localization for this portal information.
  38.      *
  39.      * @var Localization
  40.      */
  41.     private $localization;
  42.     /**
  43.      * The segment for this portal information.
  44.      *
  45.      * @var Segment
  46.      */
  47.     private $segment;
  48.     /**
  49.      * The url for this portal information.
  50.      *
  51.      * @var string
  52.      */
  53.     private $url;
  54.     /**
  55.      * @var string The url to redirect to
  56.      */
  57.     private $redirect;
  58.     /**
  59.      * @var bool
  60.      */
  61.     private $main;
  62.     /**
  63.      * @var string
  64.      */
  65.     private $urlExpression;
  66.     /**
  67.      * @var int
  68.      */
  69.     private $priority;
  70.     public function __construct(
  71.         $type,
  72.         Webspace $webspace null,
  73.         Portal $portal null,
  74.         Localization $localization null,
  75.         $url null,
  76.         Segment $segment null,
  77.         $redirect null,
  78.         $main false,
  79.         $urlExpression null,
  80.         $priority 0
  81.     ) {
  82.         $this->setType($type);
  83.         $this->setWebspace($webspace);
  84.         $this->setPortal($portal);
  85.         $this->setLocalization($localization);
  86.         $this->setSegment($segment);
  87.         $this->setUrl($url);
  88.         $this->setRedirect($redirect);
  89.         $this->setMain($main);
  90.         $this->setUrlExpression($urlExpression);
  91.         $this->setPriority($priority);
  92.     }
  93.     /**
  94.      * Sets the localization for this PortalInformation.
  95.      *
  96.      * @param Localization $localization
  97.      */
  98.     public function setLocalization($localization)
  99.     {
  100.         $this->localization $localization;
  101.     }
  102.     /**
  103.      * Returns the localization for this PortalInformation.
  104.      *
  105.      * @return Localization
  106.      */
  107.     public function getLocalization()
  108.     {
  109.         return $this->localization;
  110.     }
  111.     /**
  112.      * Returns the localization for this PortalInformation.
  113.      *
  114.      * @return string
  115.      */
  116.     public function getLocale()
  117.     {
  118.         if (null === $this->localization) {
  119.             return;
  120.         }
  121.         return $this->localization->getLocale();
  122.     }
  123.     /**
  124.      * Sets the portal for this PortalInformation.
  125.      *
  126.      * @param \Sulu\Component\Webspace\Portal $portal
  127.      */
  128.     public function setPortal($portal)
  129.     {
  130.         $this->portal $portal;
  131.     }
  132.     /**
  133.      * Returns the portal for this PortalInformation.
  134.      *
  135.      * @return \Sulu\Component\Webspace\Portal
  136.      */
  137.     public function getPortal()
  138.     {
  139.         return $this->portal;
  140.     }
  141.     /**
  142.      * Returns key of portal.
  143.      */
  144.     public function getPortalKey()
  145.     {
  146.         if (null === $this->portal) {
  147.             return;
  148.         }
  149.         return $this->portal->getKey();
  150.     }
  151.     /**
  152.      * Sets the redirect for the PortalInformation.
  153.      *
  154.      * @param string $redirect
  155.      */
  156.     public function setRedirect($redirect)
  157.     {
  158.         $this->redirect $redirect;
  159.     }
  160.     /**
  161.      * Returns the redirect for the PortalInformation.
  162.      *
  163.      * @return string
  164.      */
  165.     public function getRedirect()
  166.     {
  167.         return $this->redirect;
  168.     }
  169.     /**
  170.      * Sets the segment for the PortalInformation.
  171.      *
  172.      * @param \Sulu\Component\Webspace\Segment $segment
  173.      */
  174.     public function setSegment($segment)
  175.     {
  176.         $this->segment $segment;
  177.     }
  178.     /**
  179.      * Returns the segment for the PortalInformation.
  180.      *
  181.      * @return \Sulu\Component\Webspace\Segment
  182.      */
  183.     public function getSegment()
  184.     {
  185.         return $this->segment;
  186.     }
  187.     /**
  188.      * Sets the match type of this PortalInformation.
  189.      *
  190.      * @param int $type
  191.      */
  192.     public function setType($type)
  193.     {
  194.         $this->type $type;
  195.     }
  196.     /**
  197.      * Returns the match type of this PortalInformation.
  198.      *
  199.      * @return int
  200.      */
  201.     public function getType()
  202.     {
  203.         return $this->type;
  204.     }
  205.     /**
  206.      * Sets the URL of this Portalinformation.
  207.      *
  208.      * @param string $url
  209.      */
  210.     public function setUrl($url)
  211.     {
  212.         $this->url $url;
  213.     }
  214.     /**
  215.      * Returns the URL of this Portalinformation.
  216.      *
  217.      * @return string
  218.      */
  219.     public function getUrl()
  220.     {
  221.         return $this->url;
  222.     }
  223.     /**
  224.      * Returns the host including the domain for the PortalInformation.
  225.      *
  226.      * @return string
  227.      */
  228.     public function getHost()
  229.     {
  230.         return substr($this->url0$this->getHostLength());
  231.     }
  232.     /**
  233.      * Returns the prefix (the url without the host) for this PortalInformation.
  234.      *
  235.      * @return string
  236.      */
  237.     public function getPrefix()
  238.     {
  239.         $prefix substr($this->url$this->getHostLength() + 1);
  240.         return $prefix $prefix '/' null;
  241.     }
  242.     /**
  243.      * Sets the webspace for this PortalInformation.
  244.      *
  245.      * @param \Sulu\Component\Webspace\Webspace $webspace
  246.      */
  247.     public function setWebspace($webspace)
  248.     {
  249.         $this->webspace $webspace;
  250.     }
  251.     /**
  252.      * Returns the webspace for this PortalInformation.
  253.      *
  254.      * @return \Sulu\Component\Webspace\Webspace
  255.      */
  256.     public function getWebspace()
  257.     {
  258.         return $this->webspace;
  259.     }
  260.     /**
  261.      * Returns key of webspace.
  262.      */
  263.     public function getWebspaceKey()
  264.     {
  265.         if (null === $this->webspace) {
  266.             return;
  267.         }
  268.         return $this->webspace->getKey();
  269.     }
  270.     /**
  271.      * Returns true if url is main.
  272.      *
  273.      * @return bool
  274.      */
  275.     public function isMain()
  276.     {
  277.         return $this->main;
  278.     }
  279.     /**
  280.      * Sets true if url is main.
  281.      *
  282.      * @param bool $main
  283.      */
  284.     public function setMain($main)
  285.     {
  286.         $this->main $main;
  287.     }
  288.     /**
  289.      * Returns expression for url.
  290.      *
  291.      * @return string
  292.      */
  293.     public function getUrlExpression()
  294.     {
  295.         return $this->urlExpression;
  296.     }
  297.     /**
  298.      * Sets expression for url.
  299.      *
  300.      * @param string $urlExpression
  301.      */
  302.     public function setUrlExpression($urlExpression)
  303.     {
  304.         $this->urlExpression $urlExpression;
  305.     }
  306.     /**
  307.      * Calculate the length of the host part of the URL.
  308.      *
  309.      * @return int
  310.      */
  311.     private function getHostLength()
  312.     {
  313.         $hostLength strpos($this->url'/');
  314.         $hostLength = (false === $hostLength) ? strlen($this->url) : $hostLength;
  315.         return $hostLength;
  316.     }
  317.     /**
  318.      * @return int
  319.      */
  320.     public function getPriority()
  321.     {
  322.         return $this->priority;
  323.     }
  324.     /**
  325.      * @param int $priority
  326.      */
  327.     public function setPriority($priority)
  328.     {
  329.         $this->priority $priority;
  330.     }
  331.     public function toArray($depth null)
  332.     {
  333.         $result = [];
  334.         $result['type'] = $this->getType();
  335.         $result['webspace'] = $this->getWebspace()->getKey();
  336.         $result['url'] = $this->getUrl();
  337.         $result['main'] = $this->isMain();
  338.         $result['priority'] = $this->getPriority();
  339.         $portal $this->getPortal();
  340.         if ($portal) {
  341.             $result['portal'] = $portal->getKey();
  342.         }
  343.         $localization $this->getLocalization();
  344.         if ($localization) {
  345.             $result['localization'] = $localization->toArray();
  346.         }
  347.         $result['redirect'] = $this->getRedirect();
  348.         $segment $this->getSegment();
  349.         if ($segment) {
  350.             $result['segment'] = $segment->getKey();
  351.         }
  352.         $urlExpression $this->getUrlExpression();
  353.         if ($urlExpression) {
  354.             $result['urlExpression'] = $urlExpression;
  355.         }
  356.         return $result;
  357.     }
  358. }