Merge pull request #11609 from annando/fix-uid

Fix notifications
This commit is contained in:
Tobias Diekershoff 2022-06-05 18:56:16 +02:00 committed by GitHub
commit 9e37435ae6
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
5 changed files with 12 additions and 11 deletions

View file

@ -1,6 +1,6 @@
-- ------------------------------------------ -- ------------------------------------------
-- Friendica 2022.05-rc (Siberian Iris) -- 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', `id` int unsigned NOT NULL auto_increment COMMENT 'sequential ID',
`uid` mediumint unsigned COMMENT 'Owner User id', `uid` mediumint unsigned COMMENT 'Owner User id',
`vid` smallint unsigned COMMENT 'Id of the verb table entry that contains the activity verbs', `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', `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', `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', `parent-uri-id` int unsigned COMMENT 'Item-uri id of the parent of the related post',

View file

@ -11,7 +11,7 @@ Fields
| id | sequential ID | int unsigned | NO | PRI | NULL | auto_increment | | id | sequential ID | int unsigned | NO | PRI | NULL | auto_increment |
| uid | Owner User id | mediumint unsigned | YES | | NULL | | | uid | Owner User id | mediumint unsigned | YES | | NULL | |
| vid | Id of the verb table entry that contains the activity verbs | smallint 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 | | | 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 | | | 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 | | | parent-uri-id | Item-uri id of the parent of the related post | int unsigned | YES | | NULL | |

View file

@ -117,9 +117,9 @@ class Notification extends BaseRepository
*/ */
public function selectDetailedForUser(int $uid): Collection\Notifications 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')) { 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')) { if (!$this->pconfig->get($uid, 'system', 'notify_announce')) {
@ -138,12 +138,13 @@ class Notification extends BaseRepository
*/ */
public function selectDigestForUser(int $uid): Collection\Notifications 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 = ''; $like_condition = '';
if (!$this->pconfig->get($uid, 'system', 'notify_like')) { 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::LIKE);
$values[] = Verb::getID(\Friendica\Protocol\Activity::DISLIKE);
} }
$announce_condition = ''; $announce_condition = '';
@ -158,7 +159,7 @@ class Notification extends BaseRepository
WHERE `id` IN ( WHERE `id` IN (
SELECT MAX(`id`) SELECT MAX(`id`)
FROM `notification` FROM `notification`
WHERE `uid` = ? WHERE `uid` = ? AND `type` & ? != 0
$like_condition $like_condition
$announce_condition $announce_condition
GROUP BY IFNULL(`parent-uri-id`, `actor-id`) GROUP BY IFNULL(`parent-uri-id`, `actor-id`)

View file

@ -663,7 +663,7 @@ class Notify extends BaseRepository
$type = \Friendica\Factory\Api\Mastodon\Notification::getType($Notification); $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; return true;
} }

View file

@ -55,7 +55,7 @@
use Friendica\Database\DBA; use Friendica\Database\DBA;
if (!defined('DB_UPDATE_VERSION')) { if (!defined('DB_UPDATE_VERSION')) {
define('DB_UPDATE_VERSION', 1466); define('DB_UPDATE_VERSION', 1467);
} }
return [ return [
@ -902,7 +902,7 @@ return [
"id" => ["type" => "int unsigned", "not null" => "1", "extra" => "auto_increment", "primary" => "1", "comment" => "sequential ID"], "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"], "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"], "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"], "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"], "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"], "parent-uri-id" => ["type" => "int unsigned", "foreign" => ["item-uri" => "id"], "comment" => "Item-uri id of the parent of the related post"],