X-Git-Url: http://git.roojs.org/?p=Pman.Core;a=blobdiff_plain;f=DataObjects%2FCore_enum.php;fp=DataObjects%2FCore_enum.php;h=29ef576bca7914b6777e8f0ebb2945c631cd4bab;hp=739134b51c5e838169c9d12cad941dc4da29bbf9;hb=a89cdfa16f8790fc6d677130226ae68ecf5d9007;hpb=17a241a5ba659f41042b6213d35ff9316606ec7b diff --git a/DataObjects/Core_enum.php b/DataObjects/Core_enum.php index 739134b5..29ef576b 100644 --- a/DataObjects/Core_enum.php +++ b/DataObjects/Core_enum.php @@ -254,6 +254,12 @@ class Pman_Core_DataObjects_Core_enum extends DB_DataObject function lookupCreate($etype,$name, $display_name=false) { + static $cache = array(); + $ckey = json_encode(array($etype, $name)); + if (isset($cache[$ckey])) { + return $cache[$ckey]->id; + } + // check $ce = DB_DataObject::Factory('core_enum'); $ce->setFrom(array( @@ -269,11 +275,14 @@ class Pman_Core_DataObjects_Core_enum extends DB_DataObject $ce->etype = $etype; $ce->name = $name; if ($ce->find(true)) { + $cache[$ckey] = $ce->id; return $ce->id; } $ce->active = 1; $ce->display_name = $display_name === false ? $ce->name : $display_name; - return $ce->insert(); + $ret = $ce->insert(); + $cache[$ckey] = $ret; + return $ret; }