]> git.mxchange.org Git - quix0rs-gnu-social.git/blobdiff - classes/Memcached_DataObject.php
add cleanup method to cleanup a single row
[quix0rs-gnu-social.git] / classes / Memcached_DataObject.php
index 70e9e351d5e8855f814d168b2505091f8b427bf1..cf7fb4340ab9f301e2f516b3440bd5f69ac1d7e5 100644 (file)
@@ -51,11 +51,17 @@ class Memcached_DataObject extends DB_DataObject
         if ($i) {
             return $i;
         } else {
-            $i = DB_DataObject::staticGet($cls, $k, $v);
-            if ($i) {
+            $i = DB_DataObject::factory($cls);
+            if (empty($i)) {
+                return null;
+            }
+            $result = $i->get($k, $v);
+            if ($result) {
                 $i->encache();
+                return $i;
+            } else {
+                return null;
             }
-            return $i;
         }
     }
 
@@ -107,6 +113,11 @@ class Memcached_DataObject extends DB_DataObject
     }
 
     static function cacheKey($cls, $k, $v) {
+        if (is_object($cls) || is_object($j) || is_object($v)) {
+            $e = new Exception();
+            common_log(LOG_ERR, __METHOD__ . ' object in param: ' .
+                str_replace("\n", " ", $e->getTraceAsString()));
+        }
         return common_cache_key(strtolower($cls).':'.$k.':'.$v);
     }
 
@@ -242,6 +253,18 @@ class Memcached_DataObject extends DB_DataObject
         return new ArrayWrapper($cached);
     }
 
+    function cleanup()
+    {
+        global $_DB_DATAOBJECT;
+
+        if (isset($_DB_DATAOBJECT['RESULTFIELDS'][$this->_DB_resultid])) {
+            unset($_DB_DATAOBJECT['RESULTFIELDS'][$this->_DB_resultid]);
+        }
+        if (isset($_DB_DATAOBJECT['RESULTS'][$this->_DB_resultid])) {
+            unset($_DB_DATAOBJECT['RESULTS'][$this->_DB_resultid]);
+        }
+    }
+
     // We overload so that 'SET NAMES "utf8"' is called for
     // each connection