Page MenuHomePhabricator

D9975.diff
No OneTemporary

D9975.diff

diff --git a/src/applications/search/controller/PhabricatorSearchAttachController.php b/src/applications/search/controller/PhabricatorSearchAttachController.php
--- a/src/applications/search/controller/PhabricatorSearchAttachController.php
+++ b/src/applications/search/controller/PhabricatorSearchAttachController.php
@@ -57,33 +57,67 @@
$phids = array_values($phids);
if ($edge_type) {
- if (!$object instanceof PhabricatorApplicationTransactionInterface) {
- throw new Exception(
- pht(
- 'Expected object ("%s") to implement interface "%s".',
- get_class($object),
- 'PhabricatorApplicationTransactionInterface'));
+ if ($object instanceof PhabricatorRepositoryCommit) {
+ // TODO: Remove this entire branch of special cased grossness
+ // after T4896.
+
+ $old_phids = PhabricatorEdgeQuery::loadDestinationPHIDs(
+ $this->phid,
+ $edge_type);
+ $add_phids = $phids;
+ $rem_phids = array_diff($old_phids, $add_phids);
+
+ // Doing this correctly (in a way that writes edge transactions) would
+ // be a huge mess and we don't get the commit half of the transaction
+ // anyway until T4896, so just write the edges themselves and skip
+ // the transactions for now.
+
+ $editor = new PhabricatorEdgeEditor();
+ foreach ($add_phids as $phid) {
+ $editor->addEdge(
+ $object->getPHID(),
+ DiffusionCommitHasTaskEdgeType::EDGECONST,
+ $phid);
+ }
+
+ foreach ($rem_phids as $phid) {
+ $editor->removeEdge(
+ $object->getPHID(),
+ DiffusionCommitHasTaskEdgeType::EDGECONST,
+ $phid);
+ }
+
+ $editor->save();
+
+ } else {
+ if (!$object instanceof PhabricatorApplicationTransactionInterface) {
+ throw new Exception(
+ pht(
+ 'Expected object ("%s") to implement interface "%s".',
+ get_class($object),
+ 'PhabricatorApplicationTransactionInterface'));
+ }
+
+ $old_phids = PhabricatorEdgeQuery::loadDestinationPHIDs(
+ $this->phid,
+ $edge_type);
+ $add_phids = $phids;
+ $rem_phids = array_diff($old_phids, $add_phids);
+
+ $txn_editor = $object->getApplicationTransactionEditor()
+ ->setActor($user)
+ ->setContentSourceFromRequest($request);
+ $txn_template = $object->getApplicationTransactionTemplate()
+ ->setTransactionType(PhabricatorTransactions::TYPE_EDGE)
+ ->setMetadataValue('edge:type', $edge_type)
+ ->setNewValue(array(
+ '+' => array_fuse($add_phids),
+ '-' => array_fuse($rem_phids)));
+ $txn_editor->applyTransactions(
+ $object->getApplicationTransactionObject(),
+ array($txn_template));
}
- $old_phids = PhabricatorEdgeQuery::loadDestinationPHIDs(
- $this->phid,
- $edge_type);
- $add_phids = $phids;
- $rem_phids = array_diff($old_phids, $add_phids);
-
- $txn_editor = $object->getApplicationTransactionEditor()
- ->setActor($user)
- ->setContentSourceFromRequest($request);
- $txn_template = $object->getApplicationTransactionTemplate()
- ->setTransactionType(PhabricatorTransactions::TYPE_EDGE)
- ->setMetadataValue('edge:type', $edge_type)
- ->setNewValue(array(
- '+' => array_fuse($add_phids),
- '-' => array_fuse($rem_phids)));
- $txn_editor->applyTransactions(
- $object->getApplicationTransactionObject(),
- array($txn_template));
-
return id(new AphrontReloadResponse())->setURI($handle->getURI());
} else {
return $this->performMerge($object, $handle, $phids);

File Metadata

Mime Type
text/plain
Expires
Sat, Dec 21, 5:27 AM (13 h, 7 m)
Storage Engine
blob
Storage Format
Encrypted (AES-256-CBC)
Storage Handle
6912857
Default Alt Text
D9975.diff (3 KB)

Event Timeline