* @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'))) {
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
}
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()
global $_DB_DATAOBJECT;
if (empty($_DB_DATAOBJECT['CONFIG'])) {
- DB_DataObject::_loadConfig();
+ self::_loadConfig();
}
$options = &$_DB_DATAOBJECT['CONFIG'];
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}"])) {