Author: chabotc
Date: Wed Nov 19 01:42:26 2008
New Revision: 718914
URL: http://svn.apache.org/viewvc?rev=718914&view=rev
Log:
SHINDIG-631 by impetus technologies - get Activities filter by fields
Modified:
incubator/shindig/trunk/php/src/social/sample/JsonDbOpensocialService.php
incubator/shindig/trunk/php/src/social/service/ActivityHandler.php
incubator/shindig/trunk/php/src/social/spi/ActivityService.php
Modified:
incubator/shindig/trunk/php/src/social/sample/JsonDbOpensocialService.php
URL:
http://svn.apache.org/viewvc/incubator/shindig/trunk/php/src/social/sample/JsonDbOpensocialService.php?rev=718914&r1=718913&r2=718914&view=diff
==============================================================================
--- incubator/shindig/trunk/php/src/social/sample/JsonDbOpensocialService.php
(original)
+++ incubator/shindig/trunk/php/src/social/sample/JsonDbOpensocialService.php
Wed Nov 19 01:42:26 2008
@@ -304,7 +304,7 @@
throw new SocialSpiException("Activity not found",
ResponseError::$NOT_FOUND);
}
- public function getActivities($userIds, $groupId, $appId, $sortBy,
$filterBy, $startIndex, $count, $fields, $token)
+ public function getActivities($userIds, $groupId, $appId, $sortBy,
$filterBy, $filterOp, $filterValue, $startIndex, $count, $fields, $token)
{
$db = $this->getDb();
$friendsTable = $db[self::$FRIEND_LINK_TABLE];
@@ -314,7 +314,33 @@
$activities = array();
foreach ($ids as $id) {
if (isset($allActivities[$id])) {
- $activities = array_merge($activities,
$allActivities[$id]);
+ $personsActivities = $allActivities[$id];
+ $activities = array_merge($activities,
$personsActivities);
+ if ($fields) {
+ $newPersonsActivities = array();
+ foreach ($personsActivities as
$activity) {
+ $newActivity = array();
+ foreach ($fields as $field =>
$present) {
+ $newActivity[$present]
= $activity[$present];
+ }
+ $newPersonsActivities[] =
$newActivity;
+ }
+ $personsActivities =
$newPersonsActivities;
+ $activities = $personsActivities;
+ }
+ if ($filterBy && $filterValue) {
+ $newActivities = array();
+ foreach ($activities as $activity) {
+ if (array_key_exists($filterBy,
$activity)) {
+ if
($this->passesStringFilter($activity[$filterBy], $filterOp, $filterValue)) {
+
$newActivities[] = $activity;
+ }
+ } else {
+ throw new
SocialSpiException("Invalid filterby parameter", ResponseError::$NOT_FOUND);
+ }
+ }
+ $activities = $newActivities;
+ }
}
}
$totalResults = count($activities);
@@ -326,6 +352,31 @@
return $ret;
}
+ /*
+ *
+ * to check the activity against filter
+ *
+ */
+ private function passesStringFilter($fieldValue, $filterOp,
$filterValue)
+ {
+ switch ($filterOp) {
+ case CollectionOptions::FILTER_OP_PRESENT:
+ if ($fieldValue and isset($fieldValue) and
$fieldValue != "") {
+ return true;
+ } else {
+ return false;
+ }
+ case CollectionOptions::FILTER_OP_EQUALS:
+ return $fieldValue == $filterValue;
+ case CollectionOptions::FILTER_OP_CONTAINS:
+ return strpos($fieldValue, $filterValue) !==
false;
+ case CollectionOptions::FILTER_OP_STARTSWITH:
+ return strpos($fieldValue, $filterValue) === 0;
+ default:
+ return false;
+ }
+ }
+
public function createActivity($userId, $groupId, $appId, $fields,
$activity, SecurityToken $token)
{
$db = $this->getDb();
Modified: incubator/shindig/trunk/php/src/social/service/ActivityHandler.php
URL:
http://svn.apache.org/viewvc/incubator/shindig/trunk/php/src/social/service/ActivityHandler.php?rev=718914&r1=718913&r2=718914&view=diff
==============================================================================
--- incubator/shindig/trunk/php/src/social/service/ActivityHandler.php
(original)
+++ incubator/shindig/trunk/php/src/social/service/ActivityHandler.php Wed Nov
19 01:42:26 2008
@@ -1,5 +1,4 @@
<?php
-
/*
* Licensed to the Apache Software Foundation (ASF) under one
* or more contributor license agreements. See the NOTICE file
@@ -65,10 +64,10 @@
if (count($optionalActivityIds) == 1) {
return $this->service->getActivity($userIds[0],
$requestItem->getGroup(), $requestItem->getAppId(), $requestItem->getFields(),
$optionalActivityIds[0], $requestItem->getToken());
} else {
- return
$this->service->getActivities($userIds[0], $requestItem->getGroup(),
$requestItem->getAppId(), $requestItem->getSortBy(),
$requestItem->getFilterBy(), $requestItem->getStartIndex(),
$requestItem->getCount(), $requestItem->getFields(), $optionalActivityIds,
$requestItem->getToken());
+ return
$this->service->getActivities($userIds[0], $requestItem->getGroup(),
$requestItem->getAppId(), $requestItem->getSortBy(),
$requestItem->getFilterBy(), $requestItem->getFilterOperation(),
$requestItem->getFilterValue(), $requestItem->getStartIndex(),
$requestItem->getCount(), $requestItem->getFields(), $optionalActivityIds,
$requestItem->getToken());
}
}
- return $this->service->getActivities($userIds,
$requestItem->getGroup(), $requestItem->getAppId(), $requestItem->getSortBy(),
$requestItem->getFilterBy(), $requestItem->getStartIndex(),
$requestItem->getCount(), $requestItem->getFields(), $requestItem->getToken());
+ return $this->service->getActivities($userIds,
$requestItem->getGroup(), $requestItem->getAppId(), $requestItem->getSortBy(),
$requestItem->getFilterBy(), $requestItem->getFilterOperation(),
$requestItem->getFilterValue(), $requestItem->getStartIndex(),
$requestItem->getCount(), $requestItem->getFields(), $requestItem->getToken());
}
/**
Modified: incubator/shindig/trunk/php/src/social/spi/ActivityService.php
URL:
http://svn.apache.org/viewvc/incubator/shindig/trunk/php/src/social/spi/ActivityService.php?rev=718914&r1=718913&r2=718914&view=diff
==============================================================================
--- incubator/shindig/trunk/php/src/social/spi/ActivityService.php (original)
+++ incubator/shindig/trunk/php/src/social/spi/ActivityService.php Wed Nov 19
01:42:26 2008
@@ -22,10 +22,10 @@
/**
* Returns a list of activities that correspond to the passed in person
ids.
*/
- public function getActivities($userIds, $groupId, $appId, $sortBy,
$filterBy, $startIndex, $count, $fields, $token);
+ public function getActivities($userIds, $groupId, $appId, $sortBy,
$filterBy, $filterOp, $filterValue, $startIndex, $count, $fields, $token);
public function getActivity($userId, $groupId, $appdId, $fields,
$activityId, SecurityToken $token);
-
+
public function deleteActivities($userId, $groupId, $appId,
$activityIds, SecurityToken $token);
/**