From 1c72a71933901979b02818198ae8970aa4d7a3d3 Mon Sep 17 00:00:00 2001
From: Michael <heluecht@pirati.ca>
Date: Wed, 27 Dec 2017 21:44:22 +0000
Subject: [PATCH] Use another uid for likes

---
 include/like.php | 27 ++++++++++++++-------------
 1 file changed, 14 insertions(+), 13 deletions(-)

diff --git a/include/like.php b/include/like.php
index 05bb758c2a..32a2cabcfd 100644
--- a/include/like.php
+++ b/include/like.php
@@ -79,26 +79,28 @@ function do_like($item_id, $verb) {
 	}
 
 	$item = $items[0];
+	$uid = $item['uid'];
 
-	if (!can_write_wall($a, $item['uid']) && ($item['uid'] != 0)) {
-		logger('like: unable to write on wall ' . $item['uid']);
+	if (!can_write_wall($a, $uid) && (($uid != 0) || !local_user())) {
+		logger('like: unable to write on wall ' . $uid);
 		return false;
 	}
 
 	// Retrieves the local post owner
-	if ($item['uid'] != 0) {
+	if ($uid != 0) {
 		$owners = q("SELECT `contact`.* FROM `contact`
 			WHERE `contact`.`self`
 			AND `contact`.`uid` = %d",
-			intval($item['uid'])
+			intval($uid)
 		);
 		if (DBM::is_result($owners)) {
 			$owner_self_contact = $owners[0];
 		} else {
-			logger('like: unknown owner ' . $item['uid']);
+			logger('like: unknown owner ' . $uid);
 			return false;
 		}
 	} else {
+		$uid = local_user();
 		$owner_self_contact = ['uid' => 0, 'nick' => 'feed-item'];
 	}
 
@@ -116,11 +118,11 @@ function do_like($item_id, $verb) {
 	}
 
 	// Contact-id is the uid-dependant author contact
-	if (local_user() == $item['uid']) {
+	if (local_user() == $uid) {
 		$item_contact_id = $owner_self_contact['id'];
 		$item_contact = $owner_self_contact;
 	} else {
-		$item_contact_id = Contact::getIdForURL($author_contact['url'], $item['uid']);
+		$item_contact_id = Contact::getIdForURL($author_contact['url'], $uid);
 
 		$contacts = q("SELECT * FROM `contact` WHERE `id` = %d",
 			intval($item_contact_id)
@@ -150,7 +152,7 @@ function do_like($item_id, $verb) {
 		AND (`parent` = '%s' OR `parent-uri` = '%s' OR `thr-parent` = '%s')
 		LIMIT 1",
 		intval($author_contact['id']),
-		intval($item['uid']),
+		intval($uid),
 		dbesc($item_id), dbesc($item_id), dbesc($item['uri'])
 	);
 
@@ -209,8 +211,8 @@ EOT;
 
 	$new_item = array(
 		'guid'          => get_guid(32),
-		'uri'           => item_new_uri($a->get_hostname(), $item['uid']),
-		'uid'           => $item['uid'],
+		'uri'           => item_new_uri($a->get_hostname(), $uid),
+		'uid'           => $uid,
 		'contact-id'    => $item_contact_id,
 		'type'          => 'activity',
 		'wall'          => $item['wall'],
@@ -244,9 +246,8 @@ EOT;
 
 	// @todo: Explain this block
 	if (! $item['visible']) {
-		q("UPDATE `item` SET `visible` = 1 WHERE `id` = %d AND `uid` = %d",
-			intval($item['id']),
-			intval($item['uid'])
+		q("UPDATE `item` SET `visible` = 1 WHERE `id` = %d",
+			intval($item['id'])
 		);
 	}