DataObjects/core.sql
[Pman.Core] / DataObjects / Core_enum.php
index c3e23e9..e18e02e 100644 (file)
@@ -38,7 +38,35 @@ class Pman_Core_DataObjects_Core_enum extends DB_DataObject
         }
         
     }
-    
+    function beforeUpdate($old, $request,$roo)
+    {
+        $tn = $this->tableName();
+        $x = $this->factory($tn);
+        if(!($old->etype == $request['etype'] && $old->name == $request['name'])){
+            $x->whereAdd("etype = '{$request['etype']}' AND name = '{$request['name']}'");
+            $x->find(true);
+            if($x->count() > 0){
+                $roo->jerr('is exsiting');
+            }
+        }
+    }
+    function beforeInsert($req, $roo)
+    {
+        $tn = $this->tableName();
+        $x = $this->factory($tn);
+        
+        if(empty($req['etype'])){
+            if($x->get('name', $req['name'])){
+                $roo->jerr('name is exsiting');
+            }
+        }else{
+            $x->whereAdd("etype = '{$req['etype']}' AND name = '{$req['name']}'");
+            $x->find(true);
+            if($x->count() > 0){
+                $roo->jerr('is exsiting');
+            }
+        }
+    }
     function onInsert($req)
     {
         $x = $this->factory($this->tableName());
@@ -46,4 +74,43 @@ class Pman_Core_DataObjects_Core_enum extends DB_DataObject
          
     }
     
+    function lookup($etype,$name) {
+        $ce = DB_DataObject::Factory('core_enum');
+        $ce->etype = $etype;
+        $ce->name = $name;
+        if ($ce->find(true)) {
+            return $ce->id;
+        }
+        return 0;
+        
+    }
+    
+    function lookupObject($etype,$name, $create= false)
+    {
+        
+        static $cache = array();
+        $key = "$etype:$name";
+        if (isset($cache[$key]) ) {
+            return $cache[$key];
+        }
+        $ce = DB_DataObject::Factory('core_enum');
+        $ce->etype = $etype;
+        $ce->name = $name;
+        if ($ce->find(true)) {
+            $cache[$key] = $ce;
+            return $ce;
+        }
+        if ($create) {
+            $ce->active = 1;
+            $ce->insert();
+            $cache[$key] = $ce;
+            return $ce->id;
+            
+        }
+        
+        
+        return false;
+        
+    }
+    
 }