]> git.mxchange.org Git - quix0rs-gnu-social.git/blobdiff - classes/Memcached_DataObject.php
[MEDIA][CORE] Add common function for converting a string with a size unit to an...
[quix0rs-gnu-social.git] / classes / Memcached_DataObject.php
index 3f1945205afcb48fd0cde54beb4257ed095b2791..3de7c16d9bf6d1f2c338a29604e0fd6a20c4021a 100644 (file)
@@ -34,7 +34,7 @@ class Memcached_DataObject extends Safe_DataObject
     {
         if (is_null($v)) {
             $v = $k;
-            $keys = self::pkeyCols($cls);
+            $keys = static::pkeyCols();
             if (count($keys) > 1) {
                 // FIXME: maybe call pkeyGetClass() ourselves?
                 throw new Exception('Use pkeyGetClass() for compound primary keys');
@@ -67,14 +67,15 @@ class Memcached_DataObject extends Safe_DataObject
      * @param string  $cls       Class to fetch
      * @param string  $keyCol    name of column for key
      * @param array   $keyVals   key values to fetch
+     * @param boolean $skipNulls skip provided null values
      *
      * @return array Array of objects, in order
      */
-    static function multiGetClass($cls, $keyCol, array $keyVals)
+    static function multiGetClass($cls, $keyCol, array $keyVals, $skipNulls=true)
     {
         $obj = new $cls;
 
-        // php-compatible, for settype(), datatype
+        // PHP compatible datatype for settype() below
         $colType = $obj->columnType($keyCol);
 
         if (!in_array($colType, array('integer', 'int'))) {
@@ -83,6 +84,14 @@ class Memcached_DataObject extends Safe_DataObject
             throw new ServerException('Cannot do multiGet on anything but integer columns');
         }
 
+        if ($skipNulls) {
+            foreach ($keyVals as $key=>$val) {
+                if (is_null($val)) {
+                    unset($keyVals[$key]);
+                }
+            }
+        }
+
         $obj->whereAddIn($keyCol, $keyVals, $colType);
 
         // Since we're inputting straight to a query: format and escape
@@ -246,7 +255,7 @@ class Memcached_DataObject extends Safe_DataObject
         return $query;
     }
 
-    static function pkeyCols($cls)
+    static function pkeyColsClass($cls)
     {
         $i = new $cls;
         $types = $i->keyTypes();
@@ -279,7 +288,7 @@ class Memcached_DataObject extends Safe_DataObject
         $pkeyMap = array_fill_keys($keyVals, array());
         $result = array_fill_keys($keyVals, array());
 
-        $pkeyCols = self::pkeyCols($cls);
+        $pkeyCols = static::pkeyCols();
 
         $toFetch = array();
         $allPkeys = array();
@@ -461,11 +470,11 @@ class Memcached_DataObject extends Safe_DataObject
         }
 
         global $_DB_DATAOBJECT;
-        if (!isset($_DB_DATAOBJECT['INI'][$this->_database][$this->__table."__keys"])) {
+        if (!isset($_DB_DATAOBJECT['INI'][$this->_database][$this->tableName()."__keys"])) {
             $this->databaseStructure();
 
         }
-        return $_DB_DATAOBJECT['INI'][$this->_database][$this->__table."__keys"];
+        return $_DB_DATAOBJECT['INI'][$this->_database][$this->tableName()."__keys"];
     }
 
     function encache()
@@ -824,7 +833,7 @@ class Memcached_DataObject extends Safe_DataObject
         global $_DB_DATAOBJECT;
 
         if (empty($_DB_DATAOBJECT['CONFIG'])) {
-            DB_DataObject::_loadConfig();
+            self::_loadConfig();
         }
 
         $options = &$_DB_DATAOBJECT['CONFIG'];
@@ -836,7 +845,7 @@ class Memcached_DataObject extends Safe_DataObject
         if (!$dsn) {
 
             if (!$this->_database) {
-                $this->_database = isset($options["table_{$this->__table}"]) ? $options["table_{$this->__table}"] : null;
+                $this->_database = isset($options["table_{$this->tableName()}"]) ? $options["table_{$this->tableName()}"] : null;
             }
 
             if ($this->_database && !empty($options["database_{$this->_database}"]))  {