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;
     }
 }