1
0
Fork 0
mirror of https://we.phorge.it/source/phorge.git synced 2024-11-19 05:12:41 +01:00

Transactions - don't let objects mention themselves.

Summary: Fixes T6059.

Test Plan: Made a comment on TX mentioning TX and TX+1. TX did not get a "mentioned" transaction while TX+1 did.

Reviewers: epriestley

Reviewed By: epriestley

Subscribers: epriestley, Korvin

Maniphest Tasks: T6059

Differential Revision: https://secure.phabricator.com/D10464
This commit is contained in:
Bob Trahan 2014-09-10 10:26:06 -07:00
parent 568b0e06e7
commit 13834f1406

View file

@ -1199,18 +1199,23 @@ abstract class PhabricatorApplicationTransactionEditor
}
}
$objects = id(new PhabricatorObjectQuery())
$mentioned_objects = id(new PhabricatorObjectQuery())
->setViewer($this->getActor())
->withPHIDs($mentioned_phids)
->execute();
$mentionable_phids = array();
foreach ($objects as $object) {
if ($object instanceof PhabricatorMentionableInterface) {
if (idx($this->getUnmentionablePHIDMap(), $object->getPHID())) {
foreach ($mentioned_objects as $mentioned_object) {
if ($mentioned_object instanceof PhabricatorMentionableInterface) {
$mentioned_phid = $mentioned_object->getPHID();
if (idx($this->getUnmentionablePHIDMap(), $mentioned_phid)) {
continue;
}
$mentionable_phids[$object->getPHID()] = $object->getPHID();
// don't let objects mention themselves
if ($object->getPHID() && $mentioned_phid == $object->getPHID()) {
continue;
}
$mentionable_phids[$mentioned_phid] = $mentioned_phid;
}
}
if ($mentionable_phids) {