]> git.mxchange.org Git - quix0rs-gnu-social.git/blobdiff - classes/Memcached_DataObject.php
Added type-hint for StartShowNoticeFormData hook
[quix0rs-gnu-social.git] / classes / Memcached_DataObject.php
index 91b986891cea53aa6a74ee04f3c0512f2e047ba6..3de7c16d9bf6d1f2c338a29604e0fd6a20c4021a 100644 (file)
@@ -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
@@ -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}"]))  {