1
0
Fork 0
mirror of https://we.phorge.it/source/phorge.git synced 2024-11-25 16:22:43 +01:00

Fix Exception in Chat room when you are not a Participant

Summary:
After this change you can lurk in public chats, and receive notifications, without crashing your planet.

Fix exception "Undefined index: PHID-USER-..." shown to newcomers when they are receiving messages
from a public Chat they are not members of.

Closes T15497

Test Plan:
- Have the Notification server (Aphlict) enabled and running.
  https://we.phorge.it/book/phorge/article/notifications/
- Be user Alice and visit a Conpherence Room. Alice must be not a participant.
- Be user Bob and send a message in that Room.

Now Alice does not see a crash anymore, but the message from Bob.

Reviewers: O1 Blessed Committers, speck

Reviewed By: O1 Blessed Committers, speck

Subscribers: speck, tobiaswiese, Matthew, Cigaryno

Maniphest Tasks: T15497

Differential Revision: https://we.phorge.it/D25408
This commit is contained in:
Valerio Bozzolan 2023-11-09 21:04:06 +01:00
parent dfa15726ea
commit 8507d3a950

View file

@ -328,7 +328,12 @@ final class ConpherenceUpdateController
->executeOne(); ->executeOne();
$non_update = false; $non_update = false;
$participant = $conpherence->getParticipant($user->getPHID());
// The User is always available. The Participant may not. See:
// User: it's you, lurking the Chat (maybe it's a public chat).
// Participant: it's you, if you are a Chat Member.
// https://we.phorge.it/T15497
$participant = $conpherence->getParticipantIfExists($user->getPHID());
if ($need_transactions && $conpherence->getTransactions()) { if ($need_transactions && $conpherence->getTransactions()) {
$data = ConpherenceTransactionRenderer::renderTransactions( $data = ConpherenceTransactionRenderer::renderTransactions(
@ -336,7 +341,7 @@ final class ConpherenceUpdateController
$conpherence); $conpherence);
$key = PhabricatorConpherenceColumnMinimizeSetting::SETTINGKEY; $key = PhabricatorConpherenceColumnMinimizeSetting::SETTINGKEY;
$minimized = $user->getUserSetting($key); $minimized = $user->getUserSetting($key);
if (!$minimized) { if (!$minimized && $participant) {
$participant->markUpToDate($conpherence); $participant->markUpToDate($conpherence);
} }
} else if ($need_transactions) { } else if ($need_transactions) {