vendor/easycorp/easyadmin-bundle/src/Dto/ActionConfigDto.php line 101

Open in your IDE?
  1. <?php
  2. namespace EasyCorp\Bundle\EasyAdminBundle\Dto;
  3. use EasyCorp\Bundle\EasyAdminBundle\Collection\ActionCollection;
  4. use EasyCorp\Bundle\EasyAdminBundle\Config\Crud;
  5. /**
  6.  * @author Javier Eguiluz <javier.eguiluz@gmail.com>
  7.  */
  8. final class ActionConfigDto
  9. {
  10.     private $pageName;
  11.     /** @var ActionDto[] */
  12.     private $actions = [
  13.         Crud::PAGE_DETAIL => [],
  14.         Crud::PAGE_EDIT => [],
  15.         Crud::PAGE_INDEX => [],
  16.         Crud::PAGE_NEW => [],
  17.     ];
  18.     /** @var string[] */
  19.     private $disabledActions = [];
  20.     /** @var string[] */
  21.     private $actionPermissions = [];
  22.     public function __construct()
  23.     {
  24.     }
  25.     public function __clone()
  26.     {
  27.         foreach ($this->actions as $pageName => $actions) {
  28.             foreach ($actions as $actionName => $actionDto) {
  29.                 $this->actions[$pageName][$actionName] = clone $actionDto;
  30.             }
  31.         }
  32.     }
  33.     public function setPageName(?string $pageName): void
  34.     {
  35.         $this->pageName $pageName;
  36.     }
  37.     public function setActionPermission(string $actionNamestring $permission): void
  38.     {
  39.         $this->actionPermissions[$actionName] = $permission;
  40.     }
  41.     public function setActionPermissions(array $permissions): void
  42.     {
  43.         $this->actionPermissions $permissions;
  44.     }
  45.     public function prependAction(string $pageNameActionDto $actionDto): void
  46.     {
  47.         $this->actions[$pageName][$actionDto->getName()] = $actionDto;
  48.     }
  49.     public function appendAction(string $pageNameActionDto $actionDto): void
  50.     {
  51.         $this->actions[$pageName] = array_merge([$actionDto->getName() => $actionDto], $this->actions[$pageName]);
  52.     }
  53.     public function setAction(string $pageNameActionDto $actionDto): void
  54.     {
  55.         $this->actions[$pageName][$actionDto->getName()] = $actionDto;
  56.     }
  57.     public function getAction(string $pageNamestring $actionName): ?ActionDto
  58.     {
  59.         return $this->actions[$pageName][$actionName] ?? null;
  60.     }
  61.     public function removeAction(string $pageNamestring $actionName): void
  62.     {
  63.         unset($this->actions[$pageName][$actionName]);
  64.     }
  65.     public function reorderActions(string $pageName, array $orderedActionNames): void
  66.     {
  67.         $orderedActions = [];
  68.         foreach ($orderedActionNames as $actionName) {
  69.             $orderedActions[$actionName] = $this->actions[$pageName][$actionName];
  70.         }
  71.         $this->actions[$pageName] = $orderedActions;
  72.     }
  73.     public function disableActions(array $actionNames): void
  74.     {
  75.         foreach ($actionNames as $actionName) {
  76.             if (!\in_array($actionName$this->disabledActions)) {
  77.                 $this->disabledActions[] = $actionName;
  78.             }
  79.         }
  80.     }
  81.     /**
  82.      * @return array|ActionCollection
  83.      */
  84.     public function getActions()
  85.     {
  86.         return null === $this->pageName $this->actions ActionCollection::new($this->actions[$this->pageName]);
  87.     }
  88.     /**
  89.      * @param ActionDto[] $newActions
  90.      */
  91.     public function setActions(string $pageName, array $newActions): void
  92.     {
  93.         $this->actions[$pageName] = $newActions;
  94.     }
  95.     public function getDisabledActions(): array
  96.     {
  97.         return $this->disabledActions;
  98.     }
  99.     public function getActionPermissions(): array
  100.     {
  101.         return $this->actionPermissions;
  102.     }
  103. }