public function getActivities(UserId $userId, $groupId, $first, $max, SecurityToken $token) { $ids = array(); $type = is_object($groupId) ? $groupId->getType() : 'self'; switch ($type) { case 'all': case 'friends': $friendIds = XmlStateFileFetcher::get()->getFriendIds(); $friendIds = isset($friendIds[$userId->getUserId($token)]) ? $friendIds[$userId->getUserId($token)] : null; if ($friendIds != null) { $ids = $friendIds; } break; case 'self': $ids[] = $userId->getUserId($token); break; } $allActivities = XmlStateFileFetcher::get()->getActivities(); $activities = array(); foreach ($ids as $id) { if (isset($allActivities[$id])) { //FIXME return one big collection with the activities mixed, atleast thats what i think the spec suggests :) $activities = array_merge($activities, $allActivities[$id]); } } // TODO: Sort them return new ResponseItem(null, null, RestfulCollection::createFromEntry($activities)); }
/** * Paginates the results set according to the critera specified by the options. */ private static function paginateResults($results, $options) { if (!$options) { return RestfulCollection::createFromEntry($results); } else { $startIndex = $options->getStartIndex(); $count = $options->getCount(); $totalResults = count($results); // NOTE: Assumes the index is 0 based. $results = array_slice($results, $startIndex, $count); $ret = new RestfulCollection($results, $startIndex, $totalResults); $ret->setItemsPerPage($count); return $ret; } }