You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@shindig.apache.org by ch...@apache.org on 2008/07/10 15:02:38 UTC

svn commit: r675559 - in /incubator/shindig/trunk: javascript/samplecontainer/state-basicfriendlist.xml php/src/socialrest/samplecontainer/BasicPeopleService.php php/src/socialrest/samplecontainer/XmlStateFileFetcher.php

Author: chabotc
Date: Thu Jul 10 06:02:37 2008
New Revision: 675559

URL: http://svn.apache.org/viewvc?rev=675559&view=rev
Log:
SHINDIG-375 add HasApp filter support to the sample container

Modified:
    incubator/shindig/trunk/javascript/samplecontainer/state-basicfriendlist.xml
    incubator/shindig/trunk/php/src/socialrest/samplecontainer/BasicPeopleService.php
    incubator/shindig/trunk/php/src/socialrest/samplecontainer/XmlStateFileFetcher.php

Modified: incubator/shindig/trunk/javascript/samplecontainer/state-basicfriendlist.xml
URL: http://svn.apache.org/viewvc/incubator/shindig/trunk/javascript/samplecontainer/state-basicfriendlist.xml?rev=675559&r1=675558&r2=675559&view=diff
==============================================================================
--- incubator/shindig/trunk/javascript/samplecontainer/state-basicfriendlist.xml (original)
+++ incubator/shindig/trunk/javascript/samplecontainer/state-basicfriendlist.xml Thu Jul 10 06:02:37 2008
@@ -36,5 +36,12 @@
       </activity>
     </stream>
   </activities>
+  
+  <applications>
+  	<application id="6729">
+		<user>john.doe</user>
+		<user>jane.doe</user>
+	</application>
+  </applications>
 
 </container>

Modified: incubator/shindig/trunk/php/src/socialrest/samplecontainer/BasicPeopleService.php
URL: http://svn.apache.org/viewvc/incubator/shindig/trunk/php/src/socialrest/samplecontainer/BasicPeopleService.php?rev=675559&r1=675558&r2=675559&view=diff
==============================================================================
--- incubator/shindig/trunk/php/src/socialrest/samplecontainer/BasicPeopleService.php (original)
+++ incubator/shindig/trunk/php/src/socialrest/samplecontainer/BasicPeopleService.php Thu Jul 10 06:02:37 2008
@@ -57,8 +57,15 @@
 				break;
 		}
 		$allPeople = XmlStateFileFetcher::get()->getAllPeople();
+		if ($filter == "hasApp") {
+			$appId = $token->getAppId();
+			$peopleWithApp = XmlStateFileFetcher::get()->getPeopleWithApp($appId);
+		}
 		$people = array();
 		foreach ($ids as $id) {
+			if ($filter == "hasApp" && ! in_array($id, $peopleWithApp)) {
+				continue;
+			}
 			$person = null;
 			if (is_array($allPeople) && isset($allPeople[$id])) {
 				$person = $allPeople[$id];

Modified: incubator/shindig/trunk/php/src/socialrest/samplecontainer/XmlStateFileFetcher.php
URL: http://svn.apache.org/viewvc/incubator/shindig/trunk/php/src/socialrest/samplecontainer/XmlStateFileFetcher.php?rev=675559&r1=675558&r2=675559&view=diff
==============================================================================
--- incubator/shindig/trunk/php/src/socialrest/samplecontainer/XmlStateFileFetcher.php (original)
+++ incubator/shindig/trunk/php/src/socialrest/samplecontainer/XmlStateFileFetcher.php Thu Jul 10 06:02:37 2008
@@ -33,19 +33,21 @@
 	private $allPeople = null;
 	private $allActivities = null;
 	private $friendIdMap = null;
+	private $peopleWithApp = null;
 	
 	// Singleton
 	private static $fetcher;
+
 	private function __construct()
 	{
 		$this->stateFile = DEFAULT_STATE_FILE;
 	}
-	
+
 	private function __clone()
 	{
 		// private, don't allow cloning of a singleton
 	}
-	
+
 	static function get()
 	{
 		// This object is a singleton
@@ -54,7 +56,7 @@
 		}
 		return XmlStateFileFetcher::$fetcher;
 	}
-	
+
 	public function resetStateFile($stateFile)
 	{
 		$this->stateFile = $stateFile;
@@ -64,12 +66,12 @@
 		$this->allPeople = null;
 		$this->allActivities = null;
 	}
-	
+
 	public function setEvilness($doEvil)
 	{
 		$this->doEvil = $doEvil;
 	}
-	
+
 	private function fetchStateDocument()
 	{
 		if ($this->document != null) {
@@ -85,12 +87,12 @@
 		$this->document = $xml;
 		return $this->document;
 	}
-	
+
 	private function turnEvil($originalString)
 	{
 		return $this->doEvil ? SCRIPT_PREFIX . $originalString . SCRIPT_SUFFIX : $originalString;
 	}
-	
+
 	public function getAppData()
 	{
 		if ($this->allData == null) {
@@ -98,22 +100,22 @@
 		}
 		return $this->allData;
 	}
-	
+
 	private function setupAppData()
 	{
 		$this->allData = array();
 		$xml = $this->fetchStateDocument();
-		foreach ( $xml->personAppData->data as $data ) {
+		foreach ($xml->personAppData->data as $data) {
 			$person = (string)$data['person'];
 			$key = (string)$data['field'];
 			$value = (string)$data;
-			if (!isset($this->allData[$person])) {
+			if (! isset($this->allData[$person])) {
 				$this->allData[$person] = array();
 			}
 			$this->allData[$person][$key] = $value;
 		}
 	}
-	
+
 	public function setAppData($id, $key, $value)
 	{
 		if ($this->allData == null) {
@@ -128,10 +130,11 @@
 		// to be able to save data too ... since we don't have shared memory between
 		// processes as the java side does, we'll do it the hard way and store the changes
 		// in xml.. Oh ps. SimpleXML->addChild() requires PHP >= 5.1.3
+		
 
 		// loop thru the app data to see if this person/key value already exists
 		$existingNode = false;
-		foreach ( $this->document->personAppData->data as $data ) {
+		foreach ($this->document->personAppData->data as $data) {
 			if ((string)$data['person'] == $id && (string)$data['field'] == $key) {
 				$existingNode = $data;
 			}
@@ -154,12 +157,12 @@
 			throw new Exception("Could not write appData to state file, check the file permissions");
 		}
 	}
-	
+
 	public function deleteAppData($id, $key)
 	{
 		//TODO implement this!
 	}
-	
+
 	public function getFriendIds()
 	{
 		if ($this->friendIdMap == null) {
@@ -167,7 +170,7 @@
 		}
 		return $this->friendIdMap;
 	}
-	
+
 	public function getAllPeople()
 	{
 		if ($this->allPeople == null) {
@@ -175,14 +178,14 @@
 		}
 		return $this->allPeople;
 	}
-	
+
 	private function setupPeopleData()
 	{
 		$xml = $this->fetchStateDocument();
 		$this->allPeople = array();
 		$this->friendIdMap = array();
 		
-		foreach ( $xml->people->person as $personNode ) {
+		foreach ($xml->people->person as $personNode) {
 			$name = (string)$personNode['name'];
 			$id = (string)$personNode['id'];
 			$person = new Person($id, new Name($this->turnEvil($name)));
@@ -204,11 +207,11 @@
 			$this->friendIdMap[$id] = $this->getFriends($personNode);
 		}
 	}
-	
+
 	private function getFriends($personNode)
 	{
 		$friends = array();
-		foreach ( $personNode as $friend ) {
+		foreach ($personNode as $friend) {
 			$friend = trim((string)$friend);
 			if (! empty($friend)) {
 				$friends[] = $friend;
@@ -216,7 +219,26 @@
 		}
 		return $friends;
 	}
-	
+
+	public function getPeopleWithApp($appId)
+	{
+		if ($this->peopleWithApp == null) {
+			$xml = $this->fetchStateDocument();
+			$this->peopleWithApp = array();
+			foreach ($xml->applications->application as $appNode) {
+				if ((string)$appNode['id'] == $appId) {
+					foreach ($appNode as $appUser) {
+						$appUser = trim((string)$appUser);
+						if (! empty($appUser)) {
+							$this->peopleWithApp[] = $appUser;
+						}
+					}
+				}
+			}
+		}
+		return $this->peopleWithApp;
+	}
+
 	public function getActivities()
 	{
 		if ($this->allActivities == null) {
@@ -224,21 +246,21 @@
 		}
 		return $this->allActivities;
 	}
-	
+
 	private function setupActivities()
 	{
 		$this->allActivities = array();
 		$xml = $this->fetchStateDocument();
-		foreach ( $xml->activities->stream as $streamItem ) {
+		foreach ($xml->activities->stream as $streamItem) {
 			$streamTitle = isset($streamItem['title']) ? (string)$streamItem['title'] : '';
 			$userId = isset($streamItem['userId']) ? (string)$streamItem['userId'] : '';
 			$this->createActivities($streamItem, $userId, $streamTitle);
 		}
 	}
-	
+
 	private function createActivities($streamItem, $userId, $streamTitle)
 	{
-		foreach ( $streamItem->activity as $activityItem ) {
+		foreach ($streamItem->activity as $activityItem) {
 			$title = isset($activityItem['title']) ? (string)$activityItem['title'] : '';
 			$id = isset($activityItem['id']) ? (string)$activityItem['id'] : 0;
 			$body = isset($activityItem['body']) ? (string)$activityItem['body'] : '';
@@ -250,11 +272,11 @@
 			$this->createActivity($userId, $activity, 0);
 		}
 	}
-	
+
 	private function getMediaItems($activityItem)
 	{
 		$media = array();
-		foreach ( $activityItem->mediaItem as $mediaItem ) {
+		foreach ($activityItem->mediaItem as $mediaItem) {
 			$type = isset($mediaItem['type']) ? (string)$mediaItem['type'] : '';
 			$mimeType = isset($mediaItem['mimeType']) ? (string)$mediaItem['mimeType'] : '';
 			$url = isset($mediaItem['url']) ? (string)$mediaItem['url'] : '';
@@ -262,10 +284,10 @@
 		}
 		return $media;
 	}
-	
+
 	public function createActivity($userId, $activity, $appId)
 	{
-		if ($this->allActivities == null && !is_array($this->allActivities)) {
+		if ($this->allActivities == null && ! is_array($this->allActivities)) {
 			$this->setupActivities();
 		}
 		if (! isset($this->allActivities[$userId])) {