src/Package/Admin/Tools/AdminState/AdminState.php line 85

Open in your IDE?
  1. <?php
  2. namespace App\Package\Admin\Tools\AdminState;
  3. use App\Package\Admin\Main\EntityInterface\{ AdminModuleInterfaceAdminActionInterface };
  4. use App\Package\Core\EntityInterface\SimpleEntityInterface;
  5. use App\Package\Toolkit\ApplicationMode\ApplicationMode,
  6.     App\Package\Admin\Tools\AdminUtil\AdminUtil,
  7.     App\Package\Admin\Tools\ObjectUtil\ObjectUtil,
  8.     App\Package\Admin\Tools\UrlUtil\UrlUtil,
  9.     App\Package\Toolkit\Exception\NotFoundException\NotFoundException;
  10.     
  11. /**
  12.  * AdminState
  13.  * 
  14.  * Holds:
  15.  * - current module
  16.  * - current action
  17.  * - current object
  18.  * - current object id
  19.  * - current object parent id
  20.  * - current object parent is self
  21.  * - current query string
  22.  * 
  23.  * @author     Daniel Balowski <d.balowski@openform.pl> (_creator)
  24.  * @copyright  Openform
  25.  * @since      03.2019
  26.  */
  27. class AdminState
  28. {
  29.     /**
  30.      * @var AdminModuleInterface
  31.      */
  32.     protected $currentModule;
  33.     /**
  34.      * @var AdminActionInterface
  35.      */
  36.     protected $currentAction;
  37.     /**
  38.      * @var string
  39.      */
  40.     protected $currentObjectPackage;
  41.     /**
  42.      * @var string
  43.      */
  44.     protected $currentObjectEntityName;
  45.     /**
  46.      * @var SimpleEntityInterface
  47.      */
  48.     protected $currentObject;
  49.   
  50.     /**
  51.      * @var int
  52.      */
  53.     protected $currentObjectId;
  54.     /**
  55.      * @var int
  56.      */
  57.     protected $currentObjectParentId;
  58.     /**
  59.      * @var boolean
  60.      */
  61.     protected $currentObjectParentIsSelf;
  62.     /**
  63.      * @var mixed[]
  64.      */
  65.     protected $currentQueryArgs;
  66.     
  67.     /**
  68.      * @param ApplicationMode  $applicationMode
  69.      * @param AdminUtil        $adminUtil
  70.      * @param ObjectUtil       $objectUtil
  71.      * @param UrlUtil          $urlUtil
  72.      * 
  73.      * @throws NotFoundException    if currentObjectId is not null and currentObject is null
  74.      *                              (object does not exist)
  75.      */
  76.     public function __construct(
  77.         ApplicationMode $applicationMode
  78.         AdminUtil  $adminUtil
  79.         ObjectUtil $objectUtil
  80.         UrlUtil    $urlUtil
  81.     ) {
  82.         if ($applicationMode->getCurrentMode() === 'admin') {
  83.             $this->currentModule $adminUtil->fetchCurrentAdminModule();
  84.             $this->currentAction $adminUtil->fetchCurrentAdminAction();
  85.             $this->currentObjectPackage 
  86.                 $this->currentModule ?
  87.                 (
  88.                     $this->currentModule->getEntityName() && $this->currentModule->getEntityPackage() ?
  89.                     $this->currentModule->getEntityPackage() :
  90.                     $this->currentModule->getPackage()
  91.                 ) :
  92.                 null;
  93.             $this->currentObjectEntityName 
  94.                 $this->currentModule ?
  95.                 (
  96.                     $this->currentModule->getEntityName() && $this->currentModule->getEntityPackage() ?
  97.                     $this->currentModule->getEntityName() :
  98.                     $this->currentModule->getName()
  99.                 ) :
  100.                 null;
  101.             $this->currentObjectId $objectUtil->getCurrentObjectId();
  102.             $this->currentObject   
  103.                 $this->currentModule && $this->currentObjectId ?
  104.                 (
  105.                     $this->currentModule->getEntityName() && $this->currentModule->getEntityPackage() ?
  106.                     $objectUtil->fetchObjectByPackageColonEntityName(
  107.                         $this->currentObjectPackage ':' $this->currentObjectEntityName
  108.                         $this->currentObjectId
  109.                     ) :
  110.                     $objectUtil->fetchObject($this->currentModule$this->currentObjectId)
  111.                 ) :
  112.                 null;
  113.             if ($this->currentObjectId && ! $this->currentObject) {
  114.                 throw new NotFoundException(
  115.                     ' >> 404 Object, package: ' $this->currentObjectPackage ', '
  116.                     ' entity: ' $this->currentObjectEntityName ', id: ' $this->currentObjectId  
  117.                 );
  118.             }
  119.             $this->currentQueryArgs $urlUtil->getQueryArgs();
  120.             $this->currentObjectParentId 
  121.                 array_key_exists('pid'$this->currentQueryArgs) ? 
  122.                 $this->currentQueryArgs'pid' ] : 
  123.                 null;
  124.             $this->currentObjectParentIsSelf 
  125.                 array_key_exists('pself'$this->currentQueryArgs) ? 
  126.                 true 
  127.                 false;
  128.         }
  129.     }
  130.     
  131.     /**
  132.      * Gets current admin module
  133.      * 
  134.      * @return AdminModuleInterface|null
  135.      */
  136.     public function getCurrentModule() : ? AdminModuleInterface
  137.     {
  138.         return $this->currentModule;
  139.     }
  140.     /**
  141.      * Gets current admin action
  142.      * 
  143.      * @return AdminActionInterface|null
  144.      */
  145.     public function getCurrentAction() : ? AdminActionInterface
  146.     {
  147.         return $this->currentAction;
  148.     }
  149.     /**
  150.      * Gets current object package name
  151.      *
  152.      * @return string|null
  153.      */
  154.     public function getCurrentObjectPackage() : ? string
  155.     {
  156.         return $this->currentObjectPackage;
  157.     }
  158.     /**
  159.      * Gets current object entity name
  160.      *
  161.      * @return string|null
  162.      */
  163.     public function getCurrentObjectEntityName() : ? string
  164.     {
  165.         return $this->currentObjectEntityName;
  166.     }
  167.     /**
  168.      * Gets current object id
  169.      * 
  170.      * @return integer|null
  171.      */
  172.     public function getCurrentObjectId() : ? int
  173.     {
  174.         return $this->currentObjectId;
  175.     }
  176.     /**
  177.      * Gets current object
  178.      * 
  179.      * @return SimpleEntityInterface|null
  180.      */
  181.     public function getCurrentObject() : ? SimpleEntityInterface
  182.     {
  183.         return $this->currentObject;
  184.     }
  185.     /**
  186.      * Gets current object parent id
  187.      *
  188.      * @return integer|null
  189.      */
  190.     public function getCurrentObjectParentId() : ? int
  191.     {
  192.         return $this->currentObjectParentId;
  193.     }
  194.     /**
  195.      * Gets current object parent is self
  196.      *
  197.      * @return boolean
  198.      */
  199.     public function getCurrentObjectParentIsSelf() : bool
  200.     {
  201.         return $this->currentObjectParentIsSelf;
  202.     }
  203.     /**
  204.      * Gets current query args array
  205.      * 
  206.      * @return array|null
  207.      */
  208.     public function getCurrentQueryArgs() : ? array
  209.     {
  210.         return $this->currentQueryArgs;
  211.     }
  212. }