From: Michael <heluecht@pirati.ca>
Date: Fri, 24 Apr 2020 17:55:49 +0000 (+0000)
Subject: Prticipation is now a view as well
X-Git-Url: https://git.mxchange.org/?a=commitdiff_plain;h=89dcab774d6b6f88f43a07bff377184515dbec28;p=friendica.git

Prticipation is now a view as well
---

diff --git a/src/Protocol/Diaspora.php b/src/Protocol/Diaspora.php
index 19ef391a0a..fe6c328d9f 100644
--- a/src/Protocol/Diaspora.php
+++ b/src/Protocol/Diaspora.php
@@ -259,27 +259,13 @@ class Diaspora
 	 */
 	public static function participantsForThread($thread, array $contacts)
 	{
-		$r = DBA::p("SELECT `contact`.`batch`, `contact`.`id`, `contact`.`url`, `contact`.`name`, `contact`.`network`, `contact`.`protocol`,
-				`fcontact`.`batch` AS `fbatch`, `fcontact`.`network` AS `fnetwork` FROM `participation`
-				INNER JOIN `contact` ON `contact`.`id` = `participation`.`cid`
-				INNER JOIN `fcontact` ON `fcontact`.`id` = `participation`.`fid`
-				WHERE `participation`.`iid` = ? AND NOT `contact`.`archive`", $thread);
-
-		while ($contact = DBA::fetch($r)) {
-			if (!empty($contact['fnetwork'])) {
-				$contact['network'] = $contact['fnetwork'];
-			}
-			unset($contact['fnetwork']);
+		$participation = DBA::select('participation-view', [], ['iid' => $thread]);
 
+		while ($contact = DBA::fetch($participation)) {	
 			if (empty($contact['protocol'])) {
 				$contact['protocol'] = $contact['network'];
 			}
 
-			if (empty($contact['batch']) && !empty($contact['fbatch'])) {
-				$contact['batch'] = $contact['fbatch'];
-			}
-			unset($contact['fbatch']);
-
 			$exists = false;
 			foreach ($contacts as $entry) {
 				if ($entry['batch'] == $contact['batch']) {
@@ -291,7 +277,8 @@ class Diaspora
 				$contacts[] = $contact;
 			}
 		}
-		DBA::close($r);
+
+		DBA::close($participation);
 
 		return $contacts;
 	}
diff --git a/static/dbview.config.php b/static/dbview.config.php
index 9722ca3819..7e0ce0a0f6 100755
--- a/static/dbview.config.php
+++ b/static/dbview.config.php
@@ -175,6 +175,20 @@ return [
 			INNER JOIN `contact` ON `contact`.`uid` = `user`.`uid` AND `contact`.`self`
 			INNER JOIN `profile` ON `profile`.`uid` = `user`.`uid`"
 	],
+	"participation-view" => [
+		"fields" => [
+			"iid" => ["participation", "iid"],
+			"id" => ["contact", "id"],
+			"url" => ["contact", "url"],
+			"name" => ["contact", "name"],
+			"protocol" => ["contact", "protocol"],
+			"batch" => "CASE `contact`.`batch` WHEN '' THEN `fcontact`.`batch` ELSE `contact`.`batch` END",
+			"network" => "CASE `fcontact`.`network` WHEN '' THEN `contact`.`network` ELSE `fcontact`.`network` END",
+		],
+		"query" => "FROM `participation`
+			INNER JOIN `contact` ON `contact`.`id` = `participation`.`cid` AND NOT `contact`.`archive`
+			INNER JOIN `fcontact` ON `fcontact`.`id` = `participation`.`fid`"
+	],
 	"pending-view" => [
 		"fields" => [
 			"id" => ["register", "id"],