From e12b6e01a23ede9e7e134bc4615d14dc618ebebd Mon Sep 17 00:00:00 2001
From: Michael <heluecht@pirati.ca>
Date: Sun, 7 Jan 2018 17:14:43 +0000
Subject: [PATCH] Best "uid" for sending comments, refresh after commenting
 might work now

---
 boot.php                     |  2 +-
 database.sql                 |  4 ++--
 mod/community.php            |  4 ++--
 src/Database/DBStructure.php |  2 +-
 src/Object/Post.php          | 10 +++++++++-
 src/Object/Thread.php        |  2 +-
 6 files changed, 16 insertions(+), 8 deletions(-)

diff --git a/boot.php b/boot.php
index 5607260d9..e47665f94 100644
--- a/boot.php
+++ b/boot.php
@@ -43,7 +43,7 @@ define('FRIENDICA_PLATFORM',     'Friendica');
 define('FRIENDICA_CODENAME',     'Asparagus');
 define('FRIENDICA_VERSION',      '3.6-dev');
 define('DFRN_PROTOCOL_VERSION',  '2.23');
-define('DB_UPDATE_VERSION',      1238);
+define('DB_UPDATE_VERSION',      1239);
 define('NEW_UPDATE_ROUTINE_VERSION', 1170);
 
 /**
diff --git a/database.sql b/database.sql
index a8c12f272..48c2e7ece 100644
--- a/database.sql
+++ b/database.sql
@@ -1,6 +1,6 @@
 -- ------------------------------------------
 -- Friendica 3.6-dev (Asparagus)
--- DB_UPDATE_VERSION 1238
+-- DB_UPDATE_VERSION 1239
 -- ------------------------------------------
 
 
@@ -972,7 +972,7 @@ CREATE TABLE IF NOT EXISTS `thread` (
 	 INDEX `uid_created` (`uid`,`created`),
 	 INDEX `uid_commented` (`uid`,`commented`),
 	 INDEX `uid_wall_created` (`uid`,`wall`,`created`),
-	 INDEX `private_wall_received` (`private`,`wall`,`received`)
+	 INDEX `private_wall_commented` (`private`,`wall`,`commented`)
 ) DEFAULT COLLATE utf8mb4_general_ci;
 
 --
diff --git a/mod/community.php b/mod/community.php
index 7c480d259..4b755e18c 100644
--- a/mod/community.php
+++ b/mod/community.php
@@ -190,14 +190,14 @@ function community_getitems($start, $itemspage, $content)
 			item_joins() . " AND `contact`.`self`
 			WHERE `thread`.`visible` AND NOT `thread`.`deleted` AND NOT `thread`.`moderated`
 			AND NOT `thread`.`private` AND `thread`.`wall`
-			ORDER BY `thread`.`received` DESC LIMIT " . intval($start) . ", " . intval($itemspage)
+			ORDER BY `thread`.`commented` DESC LIMIT " . intval($start) . ", " . intval($itemspage)
 		);
 		return dba::inArray($r);
 	} elseif ($content == 'global') {
 		$r = dba::p("SELECT " . item_fieldlists() . " FROM `thread`
 			INNER JOIN `item` ON `item`.`id` = `thread`.`iid` " . item_joins() .
 				"WHERE `thread`.`uid` = 0 AND `verb` = ?
-			ORDER BY `thread`.`created` DESC LIMIT " . intval($start) . ", " . intval($itemspage),
+			ORDER BY `thread`.`commented` DESC LIMIT " . intval($start) . ", " . intval($itemspage),
 			ACTIVITY_POST
 		);
 		return dba::inArray($r);
diff --git a/src/Database/DBStructure.php b/src/Database/DBStructure.php
index c7bdeabe3..b33f02345 100644
--- a/src/Database/DBStructure.php
+++ b/src/Database/DBStructure.php
@@ -1601,7 +1601,7 @@ class DBStructure {
 						"uid_created" => array("uid","created"),
 						"uid_commented" => array("uid","commented"),
 						"uid_wall_created" => array("uid","wall","created"),
-						"private_wall_received" => array("private","wall","received"),
+						"private_wall_commented" => array("private","wall","commented"),
 						)
 				);
 		$database["tokens"] = array(
diff --git a/src/Object/Post.php b/src/Object/Post.php
index b0d442563..97768bf56 100644
--- a/src/Object/Post.php
+++ b/src/Object/Post.php
@@ -765,6 +765,14 @@ class Post extends BaseObject
 				$qcomment = (($qc) ? explode("\n", $qc) : null);
 			}
 
+			// Fetch the user id from the parent when the owner user is empty
+			$uid = $conv->getProfileOwner();
+			$parent_uid = $this->getDataValue('uid');
+
+			if (!empty($parent_uid) && empty($uid) && ($uid != $parent_uid)) {
+				$uid = $parent_uid;
+			}
+
 			$template = get_markup_template($this->getCommentBoxTemplate());
 			$comment_box = replace_macros($template, array(
 				'$return_path' => $a->query_string,
@@ -774,7 +782,7 @@ class Post extends BaseObject
 				'$id'          => $this->getId(),
 				'$parent'      => $this->getId(),
 				'$qcomment'    => $qcomment,
-				'$profile_uid' => $conv->getProfileOwner(),
+				'$profile_uid' => $uid,
 				'$mylink'      => $a->remove_baseurl($a->contact['url']),
 				'$mytitle'     => t('This is you'),
 				'$myphoto'     => $a->remove_baseurl($a->contact['thumb']),
diff --git a/src/Object/Thread.php b/src/Object/Thread.php
index 534095efb..cf1ddceac 100644
--- a/src/Object/Thread.php
+++ b/src/Object/Thread.php
@@ -67,7 +67,7 @@ class Thread extends BaseObject
 				$this->writable = can_write_wall($this->profile_owner) || $writable;
 				break;
 			case 'community':
-				$this->profile_owner = local_user();
+				$this->profile_owner = 0;
 				$this->writable = $writable;
 				break;
 			default: