]> git.andy128k.dev Git - ipf.git/commitdiff
admin model registration hooks
authorAndrey Kutejko <andy128k@gmail.com>
Sun, 29 Dec 2013 15:53:10 +0000 (17:53 +0200)
committerAndrey Kutejko <andy128k@gmail.com>
Sun, 29 Dec 2013 15:53:10 +0000 (17:53 +0200)
ipf/admin/model.php

index d39f99262c9d55b73f2fbb2e14315ccf13e4a858..7b76a94cce01f79f4cda04d93c4d81497c460ac9 100644 (file)
@@ -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();