From 378ce82006ad9cedcc2d14ff4d5694d81fce9bfc Mon Sep 17 00:00:00 2001 From: Andrey Kutejko Date: Sun, 29 Dec 2013 17:53:10 +0200 Subject: [PATCH] admin model registration hooks --- ipf/admin/model.php | 23 +++++++++++++++++++---- 1 file changed, 19 insertions(+), 4 deletions(-) diff --git a/ipf/admin/model.php b/ipf/admin/model.php index d39f992..7b76a94 100644 --- a/ipf/admin/model.php +++ b/ipf/admin/model.php @@ -346,27 +346,42 @@ class DateHierarchyListFilter extends BaseListFilter { class IPF_Admin_Model { static $models = array(); + static $handlers = array(); public static function register($classModel, $classAdmin) { - IPF_Admin_Model::$models[$classModel] = new $classAdmin($classModel); + $ma = new $classAdmin($classModel); + self::$models[$classModel] = $ma; + foreach (ArrayTools::get(self::$handlers, $classModel, array()) as $action) { + call_user_func($action, $ma); + } + unset(self::$handlers[$classModel]); } public static function isModelRegister($classModel) { - return array_key_exists($classModel, IPF_Admin_Model::$models); + return array_key_exists($classModel, self::$models); } public static function getModelAdmin($classModel) { - if (array_key_exists($classModel, IPF_Admin_Model::$models)) { - $ma = IPF_Admin_Model::$models[$classModel]; + if (array_key_exists($classModel, self::$models)) { + $ma = self::$models[$classModel]; $ma->setUp(); return $ma; } return null; } + public static function on($classModel, $action) + { + if (array_key_exists($classModel, self::$models)) { + call_user_func($action, self::$models[$classModel]); + } else { + ArrayTools::pushToKey(self::$handlers, $classModel, $action); + } + } + var $modelName = null; var $model = null; var $inlineInstances = array(); -- 2.49.0