From: Andrey Kutejko Date: Sun, 29 Dec 2013 15:53:10 +0000 (+0200) Subject: admin model registration hooks X-Git-Tag: 0.6~215 X-Git-Url: https://git.andy128k.dev/?a=commitdiff_plain;h=378ce82006ad9cedcc2d14ff4d5694d81fce9bfc;p=ipf.git admin model registration hooks --- 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();