ACL.php 1.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748
  1. <?php
  2. namespace ModulesGarden\Servers\ZimbraEmail\Core\UI\Traits;
  3. use ModulesGarden\Servers\ZimbraEmail\Core\UI\Interfaces\AdminArea;
  4. use ModulesGarden\Servers\ZimbraEmail\Core\UI\Interfaces\ClientArea;
  5. /**
  6. * Icons related functions
  7. *
  8. * @author Rafał Ossowski <rafal.os@modulesgarden.com>
  9. */
  10. trait ACL
  11. {
  12. protected $isAdminAcl;
  13. public function setIsAdminAcl($isAdmin)
  14. {
  15. $this->isAdminAcl = $isAdmin;
  16. return $this;
  17. }
  18. protected function isCoreElementAcl($element)
  19. {
  20. return (strpos(get_class($element), 'ModulesGarden\Servers\ZimbraEmail\Core') !== false);
  21. }
  22. protected function checkIsAdminArea($element)
  23. {
  24. return ($element instanceof AdminArea);
  25. }
  26. protected function checkIsClientArea($element)
  27. {
  28. return ($element instanceof ClientArea);
  29. }
  30. public function validateElement($element)
  31. {
  32. if ($this->isCoreElementAcl($element) || $this->isAdminAcl && $this->checkIsAdminArea($element) || !$this->isAdminAcl && $this->checkIsClientArea($element))
  33. {
  34. return true;
  35. }
  36. return false;
  37. }
  38. }