From f1efb8d2773dfd8839f292dc9a1cd5b735fdab89 Mon Sep 17 00:00:00 2001 From: Michael Date: Sat, 3 Feb 2024 11:01:17 +0000 Subject: [PATCH 1/3] Fix: Saving of channel languages --- src/Module/Conversation/Timeline.php | 13 +++++++++---- src/Module/Settings/Channels.php | 2 +- 2 files changed, 10 insertions(+), 5 deletions(-) diff --git a/src/Module/Conversation/Timeline.php b/src/Module/Conversation/Timeline.php index a8db2d85df..fc9b138ef6 100644 --- a/src/Module/Conversation/Timeline.php +++ b/src/Module/Conversation/Timeline.php @@ -275,6 +275,9 @@ class Timeline extends BaseModule { $uid = $this->session->getLocalUserId(); + $table = 'post-engagement'; + $fields = ['uri-id', 'created', 'owner-id', 'comments', 'activities']; + if ($this->selectedTab == ChannelEntity::WHATSHOT) { if (!is_null($this->accountType)) { $condition = ["(`comments` > ? OR `activities` > ?) AND `contact-type` = ?", $this->getMedianComments($uid, 4), $this->getMedianActivities($uid, 4), $this->accountType]; @@ -327,15 +330,17 @@ class Timeline extends BaseModule $condition = ["`language` = ?", User::getLanguageCode($uid)]; } elseif (is_numeric($this->selectedTab)) { $condition = $this->getUserChannelConditions($this->selectedTab, $uid); + //$table = 'post-searchindex'; + //$fields = ['uri-id', 'created', 'owner-id']; } if (($this->selectedTab != ChannelEntity::LANGUAGE) && !is_numeric($this->selectedTab)) { $condition = $this->addLanguageCondition($uid, $condition); } - $condition = DBA::mergeConditions($condition, ["(NOT `restricted` OR EXISTS(SELECT `id` FROM `post-user` WHERE `uid` = ? AND `uri-id` = `post-engagement`.`uri-id`))", $uid]); + $condition = DBA::mergeConditions($condition, ["(NOT `restricted` OR EXISTS(SELECT `id` FROM `post-user` WHERE `uid` = ? AND `uri-id` = `$table`.`uri-id`))", $uid]); - $condition = DBA::mergeConditions($condition, ["NOT EXISTS(SELECT `cid` FROM `user-contact` WHERE `uid` = ? AND `cid` = `post-engagement`.`owner-id` AND (`ignored` OR `blocked` OR `collapsed` OR `is-blocked` OR `channel-frequency` = ?))", $uid, Contact\User::FREQUENCY_NEVER]); + $condition = DBA::mergeConditions($condition, ["NOT EXISTS(SELECT `cid` FROM `user-contact` WHERE `uid` = ? AND `cid` = `$table`.`owner-id` AND (`ignored` OR `blocked` OR `collapsed` OR `is-blocked` OR `channel-frequency` = ?))", $uid, Contact\User::FREQUENCY_NEVER]); if (($this->selectedTab != ChannelEntity::WHATSHOT) && !is_null($this->accountType)) { $condition = DBA::mergeConditions($condition, ['contact-type' => $this->accountType]); @@ -347,7 +352,7 @@ class Timeline extends BaseModule $condition = DBA::mergeConditions($condition, ['uri-id' => $this->itemUriId]); } else { if ($this->noSharer) { - $condition = DBA::mergeConditions($condition, ["NOT `uri-id` IN (SELECT `uri-id` FROM `post-user` WHERE `post-user`.`uid` = ? AND `post-user`.`uri-id` = `post-engagement`.`uri-id`)", $this->session->getLocalUserId()]); + $condition = DBA::mergeConditions($condition, ["NOT `uri-id` IN (SELECT `uri-id` FROM `post-user` WHERE `post-user`.`uid` = ? AND `post-user`.`uri-id` = `$table`.`uri-id`)", $this->session->getLocalUserId()]); } if (isset($this->maxId)) { @@ -365,7 +370,7 @@ class Timeline extends BaseModule } $items = []; - $result = $this->database->select('post-engagement', ['uri-id', 'created', 'owner-id', 'comments', 'activities'], $condition, $params); + $result = $this->database->select($table, $fields, $condition, $params); if ($this->database->errorNo()) { throw new \Exception($this->database->errorMessage(), $this->database->errorNo()); } diff --git a/src/Module/Settings/Channels.php b/src/Module/Settings/Channels.php index a1b5949ede..c581e0c609 100644 --- a/src/Module/Settings/Channels.php +++ b/src/Module/Settings/Channels.php @@ -101,7 +101,7 @@ class Channels extends BaseSettings continue; } - if (!array_diff((array)$request['languages'][$id], $channel_languages)) { + if (!array_diff((array)$request['languages'][$id], $channel_languages) && (count((array)$request['languages'][$id]) == count($channel_languages))) { $request['languages'][$id] = null; } From 053dfb3e2ba9bc957ccf2ba8fb409214e025f591 Mon Sep 17 00:00:00 2001 From: Michael Date: Sat, 3 Feb 2024 11:04:42 +0000 Subject: [PATCH 2/3] Revert test changes / added saving of languages --- .../Conversation/Repository/UserDefinedChannel.php | 2 +- src/Module/Conversation/Timeline.php | 13 ++++--------- 2 files changed, 5 insertions(+), 10 deletions(-) diff --git a/src/Content/Conversation/Repository/UserDefinedChannel.php b/src/Content/Conversation/Repository/UserDefinedChannel.php index 6515bc7196..78386f890a 100644 --- a/src/Content/Conversation/Repository/UserDefinedChannel.php +++ b/src/Content/Conversation/Repository/UserDefinedChannel.php @@ -134,7 +134,7 @@ class UserDefinedChannel extends \Friendica\BaseRepository 'max-size' => $Channel->maxSize, 'full-text-search' => $Channel->fullTextSearch, 'media-type' => $Channel->mediaType, - 'languages' => serialize($Channel->languages), + 'languages' => !empty($Channel->languages) ? serialize($Channel->languages) : null, 'publish' => $Channel->publish, 'valid' => $this->isValid($Channel->fullTextSearch), ]; diff --git a/src/Module/Conversation/Timeline.php b/src/Module/Conversation/Timeline.php index fc9b138ef6..ca3957e4a2 100644 --- a/src/Module/Conversation/Timeline.php +++ b/src/Module/Conversation/Timeline.php @@ -275,9 +275,6 @@ class Timeline extends BaseModule { $uid = $this->session->getLocalUserId(); - $table = 'post-engagement'; - $fields = ['uri-id', 'created', 'owner-id', 'comments', 'activities']; - if ($this->selectedTab == ChannelEntity::WHATSHOT) { if (!is_null($this->accountType)) { $condition = ["(`comments` > ? OR `activities` > ?) AND `contact-type` = ?", $this->getMedianComments($uid, 4), $this->getMedianActivities($uid, 4), $this->accountType]; @@ -330,17 +327,15 @@ class Timeline extends BaseModule $condition = ["`language` = ?", User::getLanguageCode($uid)]; } elseif (is_numeric($this->selectedTab)) { $condition = $this->getUserChannelConditions($this->selectedTab, $uid); - //$table = 'post-searchindex'; - //$fields = ['uri-id', 'created', 'owner-id']; } if (($this->selectedTab != ChannelEntity::LANGUAGE) && !is_numeric($this->selectedTab)) { $condition = $this->addLanguageCondition($uid, $condition); } - $condition = DBA::mergeConditions($condition, ["(NOT `restricted` OR EXISTS(SELECT `id` FROM `post-user` WHERE `uid` = ? AND `uri-id` = `$table`.`uri-id`))", $uid]); + $condition = DBA::mergeConditions($condition, ["(NOT `restricted` OR EXISTS(SELECT `id` FROM `post-user` WHERE `uid` = ? AND `uri-id` = `'post-engagement'`.`uri-id`))", $uid]); - $condition = DBA::mergeConditions($condition, ["NOT EXISTS(SELECT `cid` FROM `user-contact` WHERE `uid` = ? AND `cid` = `$table`.`owner-id` AND (`ignored` OR `blocked` OR `collapsed` OR `is-blocked` OR `channel-frequency` = ?))", $uid, Contact\User::FREQUENCY_NEVER]); + $condition = DBA::mergeConditions($condition, ["NOT EXISTS(SELECT `cid` FROM `user-contact` WHERE `uid` = ? AND `cid` = `'post-engagement'`.`owner-id` AND (`ignored` OR `blocked` OR `collapsed` OR `is-blocked` OR `channel-frequency` = ?))", $uid, Contact\User::FREQUENCY_NEVER]); if (($this->selectedTab != ChannelEntity::WHATSHOT) && !is_null($this->accountType)) { $condition = DBA::mergeConditions($condition, ['contact-type' => $this->accountType]); @@ -352,7 +347,7 @@ class Timeline extends BaseModule $condition = DBA::mergeConditions($condition, ['uri-id' => $this->itemUriId]); } else { if ($this->noSharer) { - $condition = DBA::mergeConditions($condition, ["NOT `uri-id` IN (SELECT `uri-id` FROM `post-user` WHERE `post-user`.`uid` = ? AND `post-user`.`uri-id` = `$table`.`uri-id`)", $this->session->getLocalUserId()]); + $condition = DBA::mergeConditions($condition, ["NOT `uri-id` IN (SELECT `uri-id` FROM `post-user` WHERE `post-user`.`uid` = ? AND `post-user`.`uri-id` = `'post-engagement'`.`uri-id`)", $this->session->getLocalUserId()]); } if (isset($this->maxId)) { @@ -370,7 +365,7 @@ class Timeline extends BaseModule } $items = []; - $result = $this->database->select($table, $fields, $condition, $params); + $result = $this->database->select('post-engagement', ['uri-id', 'created', 'owner-id', 'comments', 'activities'], $condition, $params); if ($this->database->errorNo()) { throw new \Exception($this->database->errorMessage(), $this->database->errorNo()); } From 672186e5492d1bb81376043a2f7e8668988deb40 Mon Sep 17 00:00:00 2001 From: Michael Date: Sat, 3 Feb 2024 11:06:05 +0000 Subject: [PATCH 3/3] Additional revert --- src/Module/Conversation/Timeline.php | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/Module/Conversation/Timeline.php b/src/Module/Conversation/Timeline.php index ca3957e4a2..a8db2d85df 100644 --- a/src/Module/Conversation/Timeline.php +++ b/src/Module/Conversation/Timeline.php @@ -333,9 +333,9 @@ class Timeline extends BaseModule $condition = $this->addLanguageCondition($uid, $condition); } - $condition = DBA::mergeConditions($condition, ["(NOT `restricted` OR EXISTS(SELECT `id` FROM `post-user` WHERE `uid` = ? AND `uri-id` = `'post-engagement'`.`uri-id`))", $uid]); + $condition = DBA::mergeConditions($condition, ["(NOT `restricted` OR EXISTS(SELECT `id` FROM `post-user` WHERE `uid` = ? AND `uri-id` = `post-engagement`.`uri-id`))", $uid]); - $condition = DBA::mergeConditions($condition, ["NOT EXISTS(SELECT `cid` FROM `user-contact` WHERE `uid` = ? AND `cid` = `'post-engagement'`.`owner-id` AND (`ignored` OR `blocked` OR `collapsed` OR `is-blocked` OR `channel-frequency` = ?))", $uid, Contact\User::FREQUENCY_NEVER]); + $condition = DBA::mergeConditions($condition, ["NOT EXISTS(SELECT `cid` FROM `user-contact` WHERE `uid` = ? AND `cid` = `post-engagement`.`owner-id` AND (`ignored` OR `blocked` OR `collapsed` OR `is-blocked` OR `channel-frequency` = ?))", $uid, Contact\User::FREQUENCY_NEVER]); if (($this->selectedTab != ChannelEntity::WHATSHOT) && !is_null($this->accountType)) { $condition = DBA::mergeConditions($condition, ['contact-type' => $this->accountType]); @@ -347,7 +347,7 @@ class Timeline extends BaseModule $condition = DBA::mergeConditions($condition, ['uri-id' => $this->itemUriId]); } else { if ($this->noSharer) { - $condition = DBA::mergeConditions($condition, ["NOT `uri-id` IN (SELECT `uri-id` FROM `post-user` WHERE `post-user`.`uid` = ? AND `post-user`.`uri-id` = `'post-engagement'`.`uri-id`)", $this->session->getLocalUserId()]); + $condition = DBA::mergeConditions($condition, ["NOT `uri-id` IN (SELECT `uri-id` FROM `post-user` WHERE `post-user`.`uid` = ? AND `post-user`.`uri-id` = `post-engagement`.`uri-id`)", $this->session->getLocalUserId()]); } if (isset($this->maxId)) {