From 3cd2ed54ebb868dbdc54b7fde6b7774b2f493305 Mon Sep 17 00:00:00 2001
From: fabrixxm <fabrix.xm@gmail.com>
Date: Wed, 13 Jul 2016 19:47:15 +0200
Subject: [PATCH] api: item owner and activities details

return new fileld for items 'friendica_owner'.
'user' is always the author of the item.
Items activitites now returns array of contacts details: {'name','url'}
---
 include/api.php | 47 ++++++++++++++++++++++++++++++++++-------------
 1 file changed, 34 insertions(+), 13 deletions(-)

diff --git a/include/api.php b/include/api.php
index 9b245a73ee..38555706b5 100644
--- a/include/api.php
+++ b/include/api.php
@@ -664,18 +664,20 @@
 
 		// Comments in threads may appear as wall-to-wall postings.
 		// So only take the owner at the top posting.
-		if ($item["id"] == $item["parent"])
-			$status_user = api_get_user($a,$item["owner-link"]);
-		else
-			$status_user = api_get_user($a,$item["author-link"]);
-
+		#if ($item["id"] == $item["parent"])
+		#	$status_user = api_get_user($a,$item["owner-link"]);
+		#else
+		
+		$status_user = api_get_user($a,$item["author-link"]);
 		$status_user["protected"] = (($item["allow_cid"] != "") OR
 						($item["allow_gid"] != "") OR
 						($item["deny_cid"] != "") OR
 						($item["deny_gid"] != "") OR
 						$item["private"]);
 
-		return ($status_user);
+		$owner_user = api_get_user($a,$item["owner-link"]);						
+						
+		return (array($status_user, $owner_user));
 	}
 
 
@@ -2278,6 +2280,24 @@
 		return $text;
 	}
 
+	
+	/**
+	 * @brief return <a href='url'>name</a> as array
+	 *
+	 * @param string $txt
+	 * @return array
+	 * 			name => 'name'
+	 * 			'url => 'url'
+	 */ 		
+	function api_contactlink_to_array($txt) {
+		$elm = new SimpleXMLElement($txt);
+		return array(
+			'name' => $elm->__toString(),
+			'url' => $elm->attributes()['href']->__toString()
+		);
+	}
+	
+	
 	/**
 	 * @brief return likes, dislikes and attend status for item
 	 *
@@ -2286,7 +2306,7 @@
 	 * 			likes => int count
 	 * 			dislikes => int count
 	 */
-	function api_format_items_likes(&$item) {
+	function api_format_items_activities(&$item) {
 		$activities = array(
 			'like' => array(),
 			'dislike' => array(),
@@ -2301,13 +2321,13 @@
 		foreach ($items as $i){
 			builtin_activity_puller($i, $activities);
 		}
-
+		
 		$res = array();
-		$uri = $item['uri'];
+		$uri = $item['uri']."-l";
 		foreach($activities as $k => $v) {
-			$res[$k] = (x($v,$uri)?$v[$uri]:0);
+			$res[$k] = ( x($v,$uri) ? array_map("api_contactlink_to_array", $v[$uri]) : array() );
 		}
-
+	
 		return $res;
 	}
 
@@ -2327,7 +2347,7 @@
 			api_share_as_retweet($item);
 
 			localize_item($item);
-			$status_user = api_item_get_user($a,$item);
+			list($status_user, $owner_user) = api_item_get_user($a,$item);
 
 			// Look if the posts are matching if they should be filtered by user id
 			if ($filter_user AND ($status_user["id"] != $user_info["id"]))
@@ -2388,10 +2408,11 @@
 				'geo' => NULL,
 				'favorited' => $item['starred'] ? true : false,
 				'user' =>  $status_user ,
+				'friendica_owner' => $owner_user,
 				//'entities' => NULL,
 				'statusnet_html'		=> $converted["html"],
 				'statusnet_conversation_id'	=> $item['parent'],
-				'friendica_activities' => api_format_items_likes($item),
+				'friendica_activities' => api_format_items_activities($item),
 			);
 
 			if (count($converted["attachments"]) > 0)
-- 
2.39.5