diff --git a/database.sql b/database.sql index 57ce736f1..c0c5f7835 100644 --- a/database.sql +++ b/database.sql @@ -1,6 +1,6 @@ -- ------------------------------------------ -- Friendica 2022.05-rc (Siberian Iris) --- DB_UPDATE_VERSION 1466 +-- DB_UPDATE_VERSION 1467 -- ------------------------------------------ @@ -848,7 +848,7 @@ CREATE TABLE IF NOT EXISTS `notification` ( `id` int unsigned NOT NULL auto_increment COMMENT 'sequential ID', `uid` mediumint unsigned COMMENT 'Owner User id', `vid` smallint unsigned COMMENT 'Id of the verb table entry that contains the activity verbs', - `type` tinyint unsigned COMMENT '', + `type` smallint unsigned COMMENT '', `actor-id` int unsigned COMMENT 'Link to the contact table with uid=0 of the actor that caused the notification', `target-uri-id` int unsigned COMMENT 'Item-uri id of the related post', `parent-uri-id` int unsigned COMMENT 'Item-uri id of the parent of the related post', diff --git a/doc/database/db_notification.md b/doc/database/db_notification.md index 7c7dc3a54..e79778cb5 100644 --- a/doc/database/db_notification.md +++ b/doc/database/db_notification.md @@ -11,7 +11,7 @@ Fields | id | sequential ID | int unsigned | NO | PRI | NULL | auto_increment | | uid | Owner User id | mediumint unsigned | YES | | NULL | | | vid | Id of the verb table entry that contains the activity verbs | smallint unsigned | YES | | NULL | | -| type | | tinyint unsigned | YES | | NULL | | +| type | | smallint unsigned | YES | | NULL | | | actor-id | Link to the contact table with uid=0 of the actor that caused the notification | int unsigned | YES | | NULL | | | target-uri-id | Item-uri id of the related post | int unsigned | YES | | NULL | | | parent-uri-id | Item-uri id of the parent of the related post | int unsigned | YES | | NULL | | diff --git a/src/Navigation/Notifications/Repository/Notification.php b/src/Navigation/Notifications/Repository/Notification.php index 7c3a65fc0..e7ef06211 100644 --- a/src/Navigation/Notifications/Repository/Notification.php +++ b/src/Navigation/Notifications/Repository/Notification.php @@ -117,9 +117,9 @@ class Notification extends BaseRepository */ public function selectDetailedForUser(int $uid): Collection\Notifications { - $condition = []; + $condition = ["`type` & ? != 0", $this->pconfig->get($uid, 'system', 'notify_type', 3 | 72 | 4 | 16 | 32) | 128 | 256]; if (!$this->pconfig->get($uid, 'system', 'notify_like')) { - $condition = DBA::mergeConditions($condition, ['`vid` != ?', Verb::getID(\Friendica\Protocol\Activity::LIKE)]); + $condition = DBA::mergeConditions($condition, ['NOT `vid` IN (?, ?)', Verb::getID(\Friendica\Protocol\Activity::LIKE), Verb::getID(\Friendica\Protocol\Activity::DISLIKE)]); } if (!$this->pconfig->get($uid, 'system', 'notify_announce')) { @@ -138,12 +138,13 @@ class Notification extends BaseRepository */ public function selectDigestForUser(int $uid): Collection\Notifications { - $values = [$uid]; + $values = [$uid, $this->pconfig->get($uid, 'system', 'notify_type', 3 | 72 | 4 | 16 | 32) | 128 | 256]; $like_condition = ''; if (!$this->pconfig->get($uid, 'system', 'notify_like')) { - $like_condition = 'AND vid != ?'; + $like_condition = 'AND NOT `vid` IN (?, ?)'; $values[] = Verb::getID(\Friendica\Protocol\Activity::LIKE); + $values[] = Verb::getID(\Friendica\Protocol\Activity::DISLIKE); } $announce_condition = ''; @@ -158,7 +159,7 @@ class Notification extends BaseRepository WHERE `id` IN ( SELECT MAX(`id`) FROM `notification` - WHERE `uid` = ? + WHERE `uid` = ? AND `type` & ? != 0 $like_condition $announce_condition GROUP BY IFNULL(`parent-uri-id`, `actor-id`) diff --git a/src/Navigation/Notifications/Repository/Notify.php b/src/Navigation/Notifications/Repository/Notify.php index 71d2eba0c..2e2787131 100644 --- a/src/Navigation/Notifications/Repository/Notify.php +++ b/src/Navigation/Notifications/Repository/Notify.php @@ -663,7 +663,7 @@ class Notify extends BaseRepository $type = \Friendica\Factory\Api\Mastodon\Notification::getType($Notification); } - if (in_array($Notification->type, [Model\Post\UserNotification::TYPE_FOLLOW])) { + if (in_array($Notification->type, [Model\Post\UserNotification::TYPE_FOLLOW, Model\Post\UserNotification::TYPE_SHARED])) { return true; } diff --git a/static/dbstructure.config.php b/static/dbstructure.config.php index 1594175b1..642e1667b 100644 --- a/static/dbstructure.config.php +++ b/static/dbstructure.config.php @@ -55,7 +55,7 @@ use Friendica\Database\DBA; if (!defined('DB_UPDATE_VERSION')) { - define('DB_UPDATE_VERSION', 1466); + define('DB_UPDATE_VERSION', 1467); } return [ @@ -902,7 +902,7 @@ return [ "id" => ["type" => "int unsigned", "not null" => "1", "extra" => "auto_increment", "primary" => "1", "comment" => "sequential ID"], "uid" => ["type" => "mediumint unsigned", "foreign" => ["user" => "uid"], "comment" => "Owner User id"], "vid" => ["type" => "smallint unsigned", "foreign" => ["verb" => "id", "on delete" => "restrict"], "comment" => "Id of the verb table entry that contains the activity verbs"], - "type" => ["type" => "tinyint unsigned", "comment" => ""], + "type" => ["type" => "smallint unsigned", "comment" => ""], "actor-id" => ["type" => "int unsigned", "foreign" => ["contact" => "id"], "comment" => "Link to the contact table with uid=0 of the actor that caused the notification"], "target-uri-id" => ["type" => "int unsigned", "foreign" => ["item-uri" => "id"], "comment" => "Item-uri id of the related post"], "parent-uri-id" => ["type" => "int unsigned", "foreign" => ["item-uri" => "id"], "comment" => "Item-uri id of the parent of the related post"],