From 6357a3f5b398532b7e53b2bed90593601ea439b2 Mon Sep 17 00:00:00 2001 From: llaffont <llaffont@afi-sa.fr> Date: Tue, 3 Mar 2015 11:14:15 +0100 Subject: [PATCH] rd #14085 pnb Admin var afterSave refactoring: now each variable can have its own hook --- .../admin/controllers/IndexController.php | 2 +- library/Class/AdminVar.php | 47 ++++++++++--------- library/ZendAfi/Form/Admin/AdminVar.php | 3 +- tests/bootstrap_frontcontroller.php | 2 + 4 files changed, 31 insertions(+), 23 deletions(-) diff --git a/application/modules/admin/controllers/IndexController.php b/application/modules/admin/controllers/IndexController.php index 83422875508..de4c24e2031 100644 --- a/application/modules/admin/controllers/IndexController.php +++ b/application/modules/admin/controllers/IndexController.php @@ -70,7 +70,7 @@ class Admin_IndexController extends ZendAfi_Controller_Action { $id = $this->_getParam('cle'); $var = Class_AdminVar::find($id); - $form = ZendAfi_Form_Admin_AdminVar::newWith($var); + $form = ZendAfi_Form_Admin_AdminVar::newWithAdminVar($var); $form->setAction($this->view->url()); $form->setAttrib('data-backurl', $this->view->url(['action' => 'adminvar'])); diff --git a/library/Class/AdminVar.php b/library/Class/AdminVar.php index e39899d1748..aab5c7346d6 100644 --- a/library/Class/AdminVar.php +++ b/library/Class/AdminVar.php @@ -378,6 +378,7 @@ class Class_AdminVar extends Storm_Model_Abstract { '[{"id":10, "label":"À valider niveau 2"}, {"id":11, "label":"À valider niveau 3"}]', 'Les identifiants 1 à 5 sont réservés' ]), + 'after_save' => 'setWorkflowPermissions', ], 'WORKFLOW_TEXT_MAIL_ARTICLE_PENDING' => [ 'description' => 'Contenu de l\'email de notification d\'article en attente de validation', @@ -601,19 +602,6 @@ class Class_AdminVar extends Storm_Model_Abstract { } - /** - * @param $name string - * @return string - */ - public static function helpFor($name) { - $known_vars = static::getKnownVars(); - if (!isset($known_vars[$name]['description'])) - return ''; - return $known_vars[$name]['description']; - } - - - /** @return bool */ public static function isCacheEnabled() { return self::isModuleEnabled('CACHE_ACTIF'); @@ -676,15 +664,28 @@ class Class_AdminVar extends Storm_Model_Abstract { return static::helpFor($this->getId()); } - - public function getType() { + public function getVarMetaDataIfNone($key, $default_value) { $known_vars = static::getKnownVars(); $name = $this->getId(); - if (!isset($known_vars[$name]['type'])) - return self::TYPE_DEFAULT; - return $known_vars[$name]['type']; + if (!isset($known_vars[$name][$key])) + return $default_value; + return $known_vars[$name][$key]; + } + + public function getType() { + return $this->getVarMetaDataIfNone('type', self::TYPE_DEFAULT); + } + + + /** + * @param $name string + * @return string + */ + public static function helpFor($name) { + return static::find($name)->getVarMetaDataIfNone('description', ''); } + public function isOnOff() { return $this->getType() == self::TYPE_ON_OFF; } @@ -746,10 +747,14 @@ class Class_AdminVar extends Storm_Model_Abstract { public function afterSave() { - if ('WORKFLOW' != $this->getId()) - return; + if ($afterSaveHook = $this->getVarMetaDataIfNone('after_save', null)) { + call_user_func([$this, $afterSaveHook]); + } + } + - $statuses = json_decode($this->getValeur()); + protected function setWorkflowPermissions() { + $statuses = json_decode($this->getValeur()); if (!is_array($statuses)) { Class_Permission::cleanDynamicWorkflow(); return; diff --git a/library/ZendAfi/Form/Admin/AdminVar.php b/library/ZendAfi/Form/Admin/AdminVar.php index bd8ab8b07b7..1d9a0948036 100644 --- a/library/ZendAfi/Form/Admin/AdminVar.php +++ b/library/ZendAfi/Form/Admin/AdminVar.php @@ -28,7 +28,8 @@ class ZendAfi_Form_Admin_AdminVar extends ZendAfi_Form { Class_AdminVar::TYPE_ENCODED_DATA => 'ZendAfi_Form_Admin_AdminVar_EncodedData', ]; - public static function newWith($admin_var) { + + public static function newWithAdminVar($admin_var) { $form_class = static::$_FORM_CLASSES[$admin_var->getType()]; $form = (new $form_class()); diff --git a/tests/bootstrap_frontcontroller.php b/tests/bootstrap_frontcontroller.php index af4c0de2ba1..8b82fc7e6ce 100644 --- a/tests/bootstrap_frontcontroller.php +++ b/tests/bootstrap_frontcontroller.php @@ -31,4 +31,6 @@ $controller = newFrontController()->throwExceptions(true); Zend_Controller_Action_HelperBroker::addHelper(new ZendAfi_Controller_Action_Helper_ViewRenderer()); setupRoutes($controller, new Zend_Config([])); + +$controller->getRouter()->addDefaultRoutes(); ?> \ No newline at end of file -- GitLab