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);
 
        /**


Reply via email to