X-Git-Url: https://git.mxchange.org/?a=blobdiff_plain;f=classes%2FMemcached_DataObject.php;h=0df9164b40c81217636137dca29f948132c0a7a3;hb=2770ef9718fb29110b6ab43ea6cffffa8cc4c27b;hp=288457c0f1a7933e8e33e968777be7d50538021f;hpb=79e3acf0f0aa5c13bf042e471c7977b5e4f1239f;p=quix0rs-gnu-social.git diff --git a/classes/Memcached_DataObject.php b/classes/Memcached_DataObject.php index 288457c0f1..0df9164b40 100644 --- a/classes/Memcached_DataObject.php +++ b/classes/Memcached_DataObject.php @@ -32,9 +32,6 @@ class Memcached_DataObject extends Safe_DataObject */ static function getClassKV($cls, $k, $v=null) { - if (!is_a($cls, __CLASS__, true)) { - throw new Exception('Trying to fetch ' . __CLASS__ . ' into a non-related class'); - } if (is_null($v)) { $v = $k; $keys = self::pkeyCols($cls); @@ -105,9 +102,6 @@ class Memcached_DataObject extends Safe_DataObject */ static function pivotGetClass($cls, $keyCol, array $keyVals, array $otherCols = array()) { - if (!is_a($cls, __CLASS__, true)) { - throw new Exception('Trying to fetch ' . __CLASS__ . ' into a non-related class'); - } if (is_array($keyCol)) { foreach ($keyVals as $keyVal) { $result[implode(',', $keyVal)] = null; @@ -246,9 +240,6 @@ class Memcached_DataObject extends Safe_DataObject static function pkeyCols($cls) { - if (!is_a($cls, __CLASS__, true)) { - throw new Exception('Trying to fetch ' . __CLASS__ . ' into a non-related class'); - } $i = new $cls; $types = $i->keyTypes(); ksort($types); @@ -264,11 +255,19 @@ class Memcached_DataObject extends Safe_DataObject return $pkey; } - static function listGetClass($cls, $keyCol, array $keyVals) + static function listFindClass($cls, $keyCol, array $keyVals) { - if (!is_a($cls, __CLASS__, true)) { - throw new Exception('Trying to fetch ' . __CLASS__ . ' into a non-related class'); + $i = new $cls; + $i->whereAddIn($keyCol, $keyVals, $i->columnType($keyCol)); + if (!$i->find()) { + throw new NoResultException($i); } + + return $i; + } + + static function listGetClass($cls, $keyCol, array $keyVals) + { $pkeyMap = array_fill_keys($keyVals, array()); $result = array_fill_keys($keyVals, array()); @@ -305,10 +304,9 @@ class Memcached_DataObject extends Safe_DataObject } if (count($toFetch) > 0) { - $i = new $cls; - $i->whereAddIn($keyCol, $toFetch, $i->columnType($keyCol)); - if ($i->find()) { - sprintf(__CLASS__ . "() got {$i->N} results for class $cls key $keyCol"); + try { + $i = self::listFindClass($cls, $keyCol, $toFetch); + while ($i->fetch()) { $copy = clone($i); $copy->encache(); @@ -319,6 +317,8 @@ class Memcached_DataObject extends Safe_DataObject } $pkeyMap[$i->$keyCol][] = $pkeyVal; } + } catch (NoResultException $e) { + // no results found for our keyVals, so we leave them as empty arrays } foreach ($toFetch as $keyVal) { self::cacheSet(sprintf("%s:list-ids:%s:%s", strtolower($cls), $keyCol, $keyVal), @@ -350,9 +350,6 @@ class Memcached_DataObject extends Safe_DataObject */ static function pkeyGetClass($cls, array $kv) { - if (!is_a($cls, __CLASS__, true)) { - throw new Exception('Trying to fetch ' . __CLASS__ . ' into a non-related class'); - } $i = Memcached_DataObject::multicache($cls, $kv); if ($i !== false) { // false == cache miss return $i; @@ -734,12 +731,12 @@ class Memcached_DataObject extends Safe_DataObject function _connect() { - global $_DB_DATAOBJECT; + global $_DB_DATAOBJECT, $_PEAR; $sum = $this->_getDbDsnMD5(); if (!empty($_DB_DATAOBJECT['CONNECTIONS'][$sum]) && - !PEAR::isError($_DB_DATAOBJECT['CONNECTIONS'][$sum])) { + !$_PEAR->isError($_DB_DATAOBJECT['CONNECTIONS'][$sum])) { $exists = true; } else { $exists = false;