1
0
Fork 0
mirror of https://we.phorge.it/source/phorge.git synced 2024-12-02 03:32:42 +01:00

(stable) Don't try to emit project board update events if there are no projects to update

Summary: Ref T4900. We may execute a bad query here if the task has no projects at all.

Test Plan: Edited a task with no new or old projects. Instead of an exception, things worked.

Maniphest Tasks: T4900

Differential Revision: https://secure.phabricator.com/D20689
This commit is contained in:
epriestley 2019-07-31 12:40:53 -07:00
parent 6f6ae61f00
commit 8e1600ba83

View file

@ -879,34 +879,36 @@ final class ManiphestTransactionEditor
$project_phids = array_fuse($old_phids) + array_fuse($new_phids); $project_phids = array_fuse($old_phids) + array_fuse($new_phids);
$project_phids = array_keys($project_phids); $project_phids = array_keys($project_phids);
$projects = id(new PhabricatorProjectQuery()) if ($project_phids) {
->setViewer(PhabricatorUser::getOmnipotentUser()) $projects = id(new PhabricatorProjectQuery())
->withPHIDs($project_phids) ->setViewer(PhabricatorUser::getOmnipotentUser())
->execute(); ->withPHIDs($project_phids)
->execute();
$notify_projects = array(); $notify_projects = array();
foreach ($projects as $project) { foreach ($projects as $project) {
$notify_projects[$project->getPHID()] = $project; $notify_projects[$project->getPHID()] = $project;
foreach ($project->getAncestorProjects() as $ancestor) { foreach ($project->getAncestorProjects() as $ancestor) {
$notify_projects[$ancestor->getPHID()] = $ancestor; $notify_projects[$ancestor->getPHID()] = $ancestor;
}
} }
}
foreach ($notify_projects as $key => $project) { foreach ($notify_projects as $key => $project) {
if (!$project->getHasWorkboard()) { if (!$project->getHasWorkboard()) {
unset($notify_projects[$key]); unset($notify_projects[$key]);
}
} }
}
$notify_phids = array_keys($notify_projects); $notify_phids = array_keys($notify_projects);
if ($notify_phids) { if ($notify_phids) {
$data = array( $data = array(
'type' => 'workboards', 'type' => 'workboards',
'subscribers' => $notify_phids, 'subscribers' => $notify_phids,
); );
PhabricatorNotificationClient::tryToPostMessage($data); PhabricatorNotificationClient::tryToPostMessage($data);
}
} }
} }