diff --git a/apps/webhook_listeners/lib/Db/WebhookListenerMapper.php b/apps/webhook_listeners/lib/Db/WebhookListenerMapper.php index f4a475b7028..7f4636f652b 100644 --- a/apps/webhook_listeners/lib/Db/WebhookListenerMapper.php +++ b/apps/webhook_listeners/lib/Db/WebhookListenerMapper.php @@ -168,10 +168,11 @@ class WebhookListenerMapper extends QBMapper { $qb->selectDistinct('event') ->from($this->getTableName()) - ->where($qb->expr()->in( - 'user_id_filter', - $qb->createNamedParameter(array_unique(['',$userId]), IQueryBuilder::PARAM_STR_ARRAY), - )); + ->where($qb->expr()->emptyString('user_id_filter')); + + if ($userId !== '') { + $qb->orWhere($qb->expr()->eq('user_id_filter', $qb->createNamedParameter($userId))); + } $result = $qb->executeQuery(); @@ -209,13 +210,19 @@ class WebhookListenerMapper extends QBMapper { $qb->select('*') ->from($this->getTableName()) - ->where($qb->expr()->eq('event', $qb->createNamedParameter($event, IQueryBuilder::PARAM_STR))) - ->andWhere( - $qb->expr()->in( - 'user_id_filter', - $qb->createNamedParameter(array_unique(['',$userId ?? '']), IQueryBuilder::PARAM_STR_ARRAY), + ->where($qb->expr()->eq('event', $qb->createNamedParameter($event, IQueryBuilder::PARAM_STR))); + + + if ($userId === '' || $userId === null) { + $qb->andWhere($qb->expr()->emptyString('user_id_filter')); + } else { + $qb->andWhere( + $qb->expr()->orX( + $qb->expr()->emptyString('user_id_filter'), + $qb->expr()->eq('user_id_filter', $qb->createNamedParameter($userId)), ) ); + } return $this->findEntities($qb); } diff --git a/apps/webhook_listeners/tests/Db/WebhookListenerMapperTest.php b/apps/webhook_listeners/tests/Db/WebhookListenerMapperTest.php index 725d4108e03..bf39d4779ea 100644 --- a/apps/webhook_listeners/tests/Db/WebhookListenerMapperTest.php +++ b/apps/webhook_listeners/tests/Db/WebhookListenerMapperTest.php @@ -168,5 +168,6 @@ class WebhookListenerMapperTest extends TestCase { $this->assertEquals([$listener1, $listener2], $this->mapper->getByEvent(NodeWrittenEvent::class, 'alice')); $this->assertEquals([$listener2], $this->mapper->getByEvent(NodeWrittenEvent::class, 'otherUser')); + $this->assertEquals([$listener2], $this->mapper->getByEvent(NodeWrittenEvent::class)); } }