From 89dcab774d6b6f88f43a07bff377184515dbec28 Mon Sep 17 00:00:00 2001 From: Michael Date: Fri, 24 Apr 2020 17:55:49 +0000 Subject: [PATCH] Prticipation is now a view as well --- src/Protocol/Diaspora.php | 21 ++++----------------- static/dbview.config.php | 14 ++++++++++++++ 2 files changed, 18 insertions(+), 17 deletions(-) diff --git a/src/Protocol/Diaspora.php b/src/Protocol/Diaspora.php index 19ef391a0..fe6c328d9 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 9722ca381..7e0ce0a0f 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"],