diff --git a/VERSIONS_HOTLINE/34181 b/VERSIONS_HOTLINE/34181 new file mode 100644 index 0000000000000000000000000000000000000000..52b39d4d86332d499b28f7851dc26f2f8bbc2ac3 --- /dev/null +++ b/VERSIONS_HOTLINE/34181 @@ -0,0 +1 @@ + - ticket #34181 : Optimisation de la vérification des permissions de catégories d'article \ No newline at end of file diff --git a/library/Class/Permission.php b/library/Class/Permission.php index 000d23d912b58b68116578fb06e309c4de84f292..f6c675db194a720c4c1a30ac43af4b3106702bbe 100644 --- a/library/Class/Permission.php +++ b/library/Class/Permission.php @@ -24,14 +24,23 @@ class PermissionLoader extends Storm_Model_Loader { const DYNAMIC_PREFIX = 'DYNAMIC_'; const WORKFLOW_TYPE = 'Nouveaux statuts autorisés'; + protected + $_article, + $_article_category, + $_cms; + + public function getCmsPermissions() { + if ($this->_cms) + return $this->_cms; + $params = ['module' => static::MODULE_ARTICLE, 'order' => ['type', 'sorting']]; if (!Class_AdminVar::isWorkflowEnabled()) $params['type not'] = static::WORKFLOW_TYPE; - return Class_Permission::findAllBy($params); + return $this->_cms = Class_Permission::findAllBy($params); } @@ -64,14 +73,18 @@ class PermissionLoader extends Storm_Model_Loader { public function createArticle() { - return Class_Permission::findFirstBy(['module' => static::MODULE_ARTICLE, - 'code' => 'ARTICLE']); + if (!$this->_article) + $this->_article = Class_Permission::findFirstBy(['module' => static::MODULE_ARTICLE, + 'code' => 'ARTICLE']); + return $this->_article; } public function createArticleCategory() { - return Class_Permission::findFirstBy(['module' => static::MODULE_ARTICLE, - 'code' => 'CATEGORY']); + if (!$this->_article_category) + $this->_article_category = Class_Permission::findFirstBy(['module' => static::MODULE_ARTICLE, + 'code' => 'CATEGORY']); + return $this->_article_category; }