Commit 435c08a7 authored by Evan Prodromou's avatar Evan Prodromou

add listGet() method

parent dc690459
......@@ -156,6 +156,43 @@ class Memcached_DataObject extends Safe_DataObject
return $result;
}
function listGet($cls, $keyCol, $keyVals)
{
$result = array_fill_keys($keyVals, array());
$toFetch = array();
foreach ($keyVals as $keyVal) {
$l = self::cacheGet(sprintf("%s:list:%s:%s", $cls, $keyCol, $keyVal));
if ($l !== false) {
$result[$keyVal] = $l;
} else {
$toFetch[] = $keyVal;
}
}
$i = DB_DataObject::factory($cls);
if (empty($i)) {
throw new Exception(_('Cannot instantiate class ' . $cls));
}
$i->whereAddIn($keyCol, $toFetch, $i->columnType($keyCol));
if ($i->find()) {
while ($i->fetch()) {
$copy = clone($i);
$copy->encache();
$result[$i->$keyCol][] = $copy;
}
}
foreach ($toFetch as $keyVal)
{
self::cacheSet(sprintf("%s:list:%s:%s", $cls, $keyCol, $keyVal),
$result[$keyVal]);
}
return $result;
}
function columnType($columnName)
{
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment