From 71384e6f39ac1a2ee85b17e291cc4e8952bd2774 Mon Sep 17 00:00:00 2001 From: Michael Vogel Date: Tue, 20 Feb 2024 07:11:26 +0100 Subject: [PATCH] Issue 13909: Filter channels by network (#13924) --- database.sql | 4 +++- doc/database/db_post-engagement.md | 1 + src/Model/Post/Engagement.php | 1 + src/Module/Conversation/Network.php | 2 -- src/Module/Conversation/Timeline.php | 6 ++++++ static/dbstructure.config.php | 3 ++- static/dbview.config.php | 1 + update.php | 7 +++++++ 8 files changed, 21 insertions(+), 4 deletions(-) diff --git a/database.sql b/database.sql index 41ce810cf5..3ffb6ad07c 100644 --- a/database.sql +++ b/database.sql @@ -1,6 +1,6 @@ -- ------------------------------------------ -- Friendica 2024.03-rc (Yellow Archangel) --- DB_UPDATE_VERSION 1553 +-- DB_UPDATE_VERSION 1554 -- ------------------------------------------ @@ -1352,6 +1352,7 @@ CREATE TABLE IF NOT EXISTS `post-engagement` ( `searchtext` mediumtext COMMENT 'Simplified text for the full text search', `size` int unsigned COMMENT 'Body size', `created` datetime COMMENT '', + `network` char(4) COMMENT '', `restricted` boolean NOT NULL DEFAULT '0' COMMENT 'If true, this post is either unlisted or not from a federated network', `comments` mediumint unsigned COMMENT 'Number of comments', `activities` mediumint unsigned COMMENT 'Number of activities (like, dislike, ...)', @@ -2123,6 +2124,7 @@ CREATE VIEW `post-searchindex-user-view` AS SELECT `post-thread-user`.`commented` AS `commented`, `post-thread-user`.`received` AS `received`, `post-thread-user`.`created` AS `created`, + `post-thread-user`.`network` AS `network`, `post-searchindex`.`language` AS `restricted`, 0 AS `comments`, 0 AS `activities` diff --git a/doc/database/db_post-engagement.md b/doc/database/db_post-engagement.md index c82c62b863..32f3ce76b6 100644 --- a/doc/database/db_post-engagement.md +++ b/doc/database/db_post-engagement.md @@ -16,6 +16,7 @@ Fields | searchtext | Simplified text for the full text search | mediumtext | YES | | NULL | | | size | Body size | int unsigned | YES | | NULL | | | created | | datetime | YES | | NULL | | +| network | | char(4) | YES | | NULL | | | restricted | If true, this post is either unlisted or not from a federated network | boolean | NO | | 0 | | | comments | Number of comments | mediumint unsigned | YES | | NULL | | | activities | Number of activities (like, dislike, ...) | mediumint unsigned | YES | | NULL | | diff --git a/src/Model/Post/Engagement.php b/src/Model/Post/Engagement.php index 99940a784d..f37aa3571c 100644 --- a/src/Model/Post/Engagement.php +++ b/src/Model/Post/Engagement.php @@ -118,6 +118,7 @@ class Engagement 'searchtext' => $searchtext, 'size' => self::getContentSize($parent), 'created' => $parent['created'], + 'network' => $parent['network'], 'restricted' => !in_array($item['network'], Protocol::FEDERATED) || ($parent['private'] != Item::PUBLIC), 'comments' => DBA::count('post', ['parent-uri-id' => $item['parent-uri-id'], 'gravity' => Item::GRAVITY_COMMENT]), 'activities' => DBA::count('post', [ diff --git a/src/Module/Conversation/Network.php b/src/Module/Conversation/Network.php index 9f5c041456..0a9d5e33b6 100644 --- a/src/Module/Conversation/Network.php +++ b/src/Module/Conversation/Network.php @@ -65,8 +65,6 @@ class Network extends Timeline /** @var int */ protected $circleId; /** @var string */ - protected $network; - /** @var string */ protected $dateFrom; /** @var string */ protected $dateTo; diff --git a/src/Module/Conversation/Timeline.php b/src/Module/Conversation/Timeline.php index 020c10272d..d77e78fc5b 100644 --- a/src/Module/Conversation/Timeline.php +++ b/src/Module/Conversation/Timeline.php @@ -74,6 +74,8 @@ class Timeline extends BaseModule protected $raw; /** @var string */ protected $order; + /** @var string */ + protected $network; /** @var App\Mode $mode */ protected $mode; @@ -372,6 +374,10 @@ class Timeline extends BaseModule $this->setMaxMinByOrder($request); + if (!empty($this->network)) { + $condition = DBA::mergeConditions($condition, ['network' => $this->network]); + } + if (($this->selectedTab != ChannelEntity::LANGUAGE) && !is_numeric($this->selectedTab)) { $condition = $this->addLanguageCondition($uid, $condition); } diff --git a/static/dbstructure.config.php b/static/dbstructure.config.php index 7606d7b65f..98567bbbce 100644 --- a/static/dbstructure.config.php +++ b/static/dbstructure.config.php @@ -56,7 +56,7 @@ use Friendica\Database\DBA; // This file is required several times during the test in DbaDefinition which justifies this condition if (!defined('DB_UPDATE_VERSION')) { - define('DB_UPDATE_VERSION', 1553); + define('DB_UPDATE_VERSION', 1554); } return [ @@ -1373,6 +1373,7 @@ return [ "searchtext" => ["type" => "mediumtext", "comment" => "Simplified text for the full text search"], "size" => ["type" => "int unsigned", "comment" => "Body size"], "created" => ["type" => "datetime", "comment" => ""], + "network" => ["type" => "char(4)", "comment" => ""], "restricted" => ["type" => "boolean", "not null" => "1", "default" => "0", "comment" => "If true, this post is either unlisted or not from a federated network"], "comments" => ["type" => "mediumint unsigned", "comment" => "Number of comments"], "activities" => ["type" => "mediumint unsigned", "comment" => "Number of activities (like, dislike, ...)"], diff --git a/static/dbview.config.php b/static/dbview.config.php index 99f9132ff3..7ce0fca393 100644 --- a/static/dbview.config.php +++ b/static/dbview.config.php @@ -154,6 +154,7 @@ "commented" => ["post-thread-user", "commented"], "received" => ["post-thread-user", "received"], "created" => ["post-thread-user", "created"], + "network" => ["post-thread-user", "network"], "restricted" => ["post-searchindex", "language"], "comments" => "0", "activities" => "0", diff --git a/update.php b/update.php index c19bbed388..7329b84b8d 100644 --- a/update.php +++ b/update.php @@ -1429,3 +1429,10 @@ function update_1552() return Update::SUCCESS; } + +function update_1554() +{ + DBA::e("UPDATE `post-engagement` INNER JOIN `post` ON `post`.`uri-id` = `post-engagement`.`uri-id` SET `post-engagement`.`network` = `post`.`network`"); + + return Update::SUCCESS; +}