public $join_policy; // tinyint
public $force_scope; // tinyint
- /* Static get */
- function staticGet($k,$v=NULL) {
- return Memcached_DataObject::staticGet('User_group',$k,$v);
- }
-
function multiGet($keyCol, $keyVals, $skipNulls=true)
{
return parent::multiGet('User_group', $keyCol, $keyVals, $skipNulls);
}
function getMembers($offset=0, $limit=null) {
+ $ids = null;
if (is_null($limit) || $offset + $limit > User_group::CACHE_WINDOW) {
- return $this->realGetMembers($offset,
- $limit);
+ $ids = $this->getMemberIDs($offset,
+ $limit);
} else {
- $key = sprintf('group:members:%d', $this->id);
+ $key = sprintf('group:member_ids:%d', $this->id);
$window = self::cacheGet($key);
if ($window === false) {
- $members = $this->realGetMembers(0,
- User_group::CACHE_WINDOW);
- $window = $members->fetchAll();
+ $window = $this->getMemberIDs(0,
+ User_group::CACHE_WINDOW);
self::cacheSet($key, $window);
}
- return new ArrayWrapper(array_slice($window,
- $offset,
- $limit));
+
+ $ids = array_slice($window,
+ $offset,
+ $limit);
}
+
+ return Profile::multiGet('id', $ids);
}
- function realGetMembers($offset=0, $limit=null)
+ function getMemberIDs($offset=0, $limit=null)
{
$gm = new Group_member();
}
}
- $members = Profile::multiGet('id', $ids);
-
- return $members;
+ return $ids;
}
/**
// Are there any matching remote groups this profile's in?
if ($profile) {
- $group = $profile->getGroups();
+ $group = $profile->getGroups(0, null);
while ($group->fetch()) {
if ($group->nickname == $nickname) {
// @fixme is this the best way?