From 82d779a33b287699cb1e543d384445422e50710f Mon Sep 17 00:00:00 2001
From: Domovoy <domovoy@errlock.org>
Date: Sun, 12 Aug 2012 17:46:02 +0200
Subject: [PATCH] Conversation and Item now handles (dis)like as they should

---
 include/conversation.php |  9 +++++++++
 object/Conversation.php  | 12 ++++++++++++
 object/Item.php          | 21 +++++++++++++++++++++
 3 files changed, 42 insertions(+)

diff --git a/include/conversation.php b/include/conversation.php
index 19ca0dc4cf..2c1c274695 100644
--- a/include/conversation.php
+++ b/include/conversation.php
@@ -862,9 +862,18 @@ function conversation(&$a, $items, $mode, $update, $preview = false) {
 			$threads = array();
 			foreach($items as $item) {
 
+				// Can we put this after the visibility check?
 				like_puller($a,$item,$alike,'like');
 				like_puller($a,$item,$dlike,'dislike');
 
+				// Only add what is visible
+				if($item['network'] === NETWORK_MAIL && local_user() != $item['uid']) {
+					continue;
+				}
+				if($item['verb'] === ACTIVITY_LIKE || $item['verb'] === ACTIVITY_DISLIKE) {
+					continue;
+				}
+
 				if($item['id'] == $item['parent']) {
 					$item_object = new Item($item);
 					$conv->add_thread($item_object);
diff --git a/object/Conversation.php b/object/Conversation.php
index d8d14589d2..b9b0cb74c2 100644
--- a/object/Conversation.php
+++ b/object/Conversation.php
@@ -91,6 +91,18 @@ class Conversation extends BaseObject {
 			logger('[WARN] Conversation::add_thread : Thread already exists ('. $item->get_id() .').', LOGGER_DEBUG);
 			return false;
 		}
+
+		/*
+		 * Only add will be displayed
+		 */
+		if($item->get_data_value('network') === NETWORK_MAIL && local_user() != $item->get_data_value('uid')) {
+			logger('[WARN] Conversation::add_thread : Thread is a mail ('. $item->get_id() .').', LOGGER_DEBUG);
+			return false;
+		}
+		if($item->get_data_value('verb') === ACTIVITY_LIKE || $item->get_data_value('verb') === ACTIVITY_DISLIKE) {
+			logger('[WARN] Conversation::add_thread : Thread is a (dis)like ('. $item->get_id() .').', LOGGER_DEBUG);
+			return false;
+		}
 		$item->set_conversation($this);
 		$this->threads[] = $item;
 		return end($this->threads);
diff --git a/object/Item.php b/object/Item.php
index 0639e4db71..7f883b41d5 100644
--- a/object/Item.php
+++ b/object/Item.php
@@ -42,6 +42,15 @@ class Item extends BaseObject {
 		// Prepare the children
 		if(count($data['children'])) {
 			foreach($data['children'] as $item) {
+				/*
+				 * Only add will be displayed
+				 */
+				if($item['network'] === NETWORK_MAIL && local_user() != $item['uid']) {
+					continue;
+				}
+				if($item['verb'] === ACTIVITY_LIKE || $item['verb'] === ACTIVITY_DISLIKE) {
+					continue;
+				}
 				$child = new Item($item);
 				$this->add_child($child);
 			}
@@ -270,6 +279,18 @@ class Item extends BaseObject {
 			logger('[WARN] Item::add_child : Item already exists ('. $item->get_id() .').', LOGGER_DEBUG);
 			return false;
 		}
+		/*
+		 * Only add will be displayed
+		 */
+		if($item->get_data_value('network') === NETWORK_MAIL && local_user() != $item->get_data_value('uid')) {
+			logger('[WARN] Item::add_child : Item is a mail ('. $item->get_id() .').', LOGGER_DEBUG);
+			return false;
+		}
+		if($item->get_data_value('verb') === ACTIVITY_LIKE || $item->get_data_value('verb') === ACTIVITY_DISLIKE) {
+			logger('[WARN] Item::add_child : Item is a (dis)like ('. $item->get_id() .').', LOGGER_DEBUG);
+			return false;
+		}
+		
 		$item->set_parent($this);
 		$this->children[] = $item;
 		return end($this->children);
-- 
2.39.5