]> git.mxchange.org Git - quix0rs-gnu-social.git/blobdiff - classes/Memcached_DataObject.php
Updates to the update_translations script
[quix0rs-gnu-social.git] / classes / Memcached_DataObject.php
index 12e55af21f25c0bebd28a013288ebb729f8a6b7b..0f2c54cade0a1dd7e39d4b9214fcf2719be95d99 100644 (file)
@@ -24,12 +24,20 @@ require_once INSTALLDIR.'/classes/Memcached_DataObject.php';
 class Memcached_DataObject extends DB_DataObject 
 {
     function &staticGet($cls, $k, $v=NULL) {
+               if (is_null($v)) {
+                       $v = $k;
+                       # XXX: HACK!
+                       $i = new $cls;
+                       $keys = $i->keys();
+                       $k = $keys[0];
+                       unset($i);
+               }
                $i = Memcached_DataObject::getcached($cls, $k, $v);
-               if (!is_null($i)) {
+               if ($i) {
                        return $i;
                } else {
                        $i = DB_DataObject::staticGet($cls, $k, $v);
-                       if (!is_null($i)) {
+                       if ($i) {
                                $i->encache();
                        }
                        return $i;
@@ -38,20 +46,18 @@ class Memcached_DataObject extends DB_DataObject
        
        function insert() {
                $result = parent::insert();
-               if ($result) {
-                       $this->encache();
-               }
                return $result;
        }
        
        function update($orig=NULL) {
-               if (!is_null($orig)) {
+               if (is_object($orig) && $orig instanceof Memcached_DataObject) {
                        $orig->decache(); # might be different keys
                }
                $result = parent::update($orig);
                if ($result) {
                        $this->encache();
                }
+               return $result;
        }
        
        function delete() {
@@ -60,20 +66,11 @@ class Memcached_DataObject extends DB_DataObject
        }
        
        static function memcache() {
-               if (!common_config('memcached', 'enabled')) {
-                       return NULL;
-               } else {
-                       $cache = new Memcache();
-                       $res = $cache->connect(common_config('memcached', 'server'), 
-                                                                  common_config('memcached', 'port'));
-                       return ($res) ? $cache : NULL;
-               }
+               return common_memcache();
        }
        
        static function cacheKey($cls, $k, $v) {
-               return common_cache_key(strtolower($cls) . ':' .
-                                                               $k . ':' .
-                                                               $v);
+               return common_cache_key(strtolower($cls).':'.$k.':'.$v);
        }
        
        static function getcached($cls, $k, $v) {
@@ -100,13 +97,17 @@ class Memcached_DataObject extends DB_DataObject
                        return false;
                } else {
                        $primary = array();
-                       $types = ksort($this->keyTypes());
+                       $types = $this->keyTypes();
+                       ksort($types);
                        foreach ($types as $key => $type) {
                                if ($type == 'K') {
                                        $primary[] = $key;
                                } else {
-                                       $c->set($this->cacheKey($this->tableName(), $key, $this->$key),
-                                                       $this);
+                                       $v = $this->$key;
+                                       if (!is_null($v)) {
+                                               $c->set($this->cacheKey($this->tableName(), $key, $v),
+                                                               $this);
+                                       }
                                }
                        }
                        # XXX: figure out what to do with compound pkeys
@@ -124,20 +125,19 @@ class Memcached_DataObject extends DB_DataObject
                        return false;
                } else {
                        $primary = array();
-                       $types = ksort($this->keyTypes());
+                       $types = $this->keyTypes();
+                       ksort($types);
                        foreach ($types as $key => $type) {
                                if ($type == 'K') {
                                        $primary[] = $this->$key;
                                } else {
-                                       $c->delete($this->cacheKey($this->tableName(), $key, $this->$key),
-                                                          $this);
+                                       $c->delete($this->cacheKey($this->tableName(), $key, $this->$key));
                                }
                        }
                        # XXX: figure out what to do with compound pkeys
                        if (count($primary) == 1) {
                                $key = $primary[0];
-                               $c->delete($this->cacheKey($this->tableName(), $key, $this->$key),
-                                                  $this);
+                               $c->delete($this->cacheKey($this->tableName(), $key, $this->$key));
                        }
                }
        }