Page MenuHomePhabricator

D19858.id.diff
No OneTemporary

D19858.id.diff

diff --git a/src/applications/audit/editor/PhabricatorAuditEditor.php b/src/applications/audit/editor/PhabricatorAuditEditor.php
--- a/src/applications/audit/editor/PhabricatorAuditEditor.php
+++ b/src/applications/audit/editor/PhabricatorAuditEditor.php
@@ -251,47 +251,16 @@
case PhabricatorTransactions::TYPE_COMMENT:
$this->didExpandInlineState = true;
- $actor_phid = $this->getActingAsPHID();
- $author_phid = $object->getAuthorPHID();
- $actor_is_author = ($actor_phid == $author_phid);
+ $query_template = id(new DiffusionDiffInlineCommentQuery())
+ ->withCommitPHIDs(array($object->getPHID()));
- $state_map = PhabricatorTransactions::getInlineStateMap();
+ $state_xaction = $this->newInlineStateTransaction(
+ $object,
+ $query_template);
- $query = id(new DiffusionDiffInlineCommentQuery())
- ->setViewer($this->getActor())
- ->withCommitPHIDs(array($object->getPHID()))
- ->withFixedStates(array_keys($state_map));
-
- $inlines = array();
-
- $inlines[] = id(clone $query)
- ->withAuthorPHIDs(array($actor_phid))
- ->withHasTransaction(false)
- ->execute();
-
- if ($actor_is_author) {
- $inlines[] = id(clone $query)
- ->withHasTransaction(true)
- ->execute();
+ if ($state_xaction) {
+ $xactions[] = $state_xaction;
}
-
- $inlines = array_mergev($inlines);
-
- if (!$inlines) {
- break;
- }
-
- $old_value = mpull($inlines, 'getFixedState', 'getPHID');
- $new_value = array();
- foreach ($old_value as $key => $state) {
- $new_value[$key] = $state_map[$state];
- }
-
- $xactions[] = id(new PhabricatorAuditTransaction())
- ->setTransactionType(PhabricatorTransactions::TYPE_INLINESTATE)
- ->setIgnoreOnNoEffect(true)
- ->setOldValue($old_value)
- ->setNewValue($new_value);
break;
}
}
diff --git a/src/applications/differential/editor/DifferentialRevisionEditEngine.php b/src/applications/differential/editor/DifferentialRevisionEditEngine.php
--- a/src/applications/differential/editor/DifferentialRevisionEditEngine.php
+++ b/src/applications/differential/editor/DifferentialRevisionEditEngine.php
@@ -279,36 +279,17 @@
$object);
$inlines = msort($inlines, 'getID');
- foreach ($inlines as $inline) {
- $xactions[] = id(new DifferentialTransaction())
- ->setTransactionType(DifferentialTransaction::TYPE_INLINE)
- ->attachComment($inline);
- }
+ $editor = $object->getApplicationTransactionEditor()
+ ->setActor($viewer);
- $viewer_phid = $viewer->getPHID();
- $viewer_is_author = ($object->getAuthorPHID() == $viewer_phid);
- if ($viewer_is_author) {
- $state_map = PhabricatorTransactions::getInlineStateMap();
+ $query_template = id(new DifferentialDiffInlineCommentQuery())
+ ->withRevisionPHIDs(array($object->getPHID()));
- $inlines = id(new DifferentialDiffInlineCommentQuery())
- ->setViewer($viewer)
- ->withRevisionPHIDs(array($object->getPHID()))
- ->withFixedStates(array_keys($state_map))
- ->execute();
- if ($inlines) {
- $old_value = mpull($inlines, 'getFixedState', 'getPHID');
- $new_value = array();
- foreach ($old_value as $key => $state) {
- $new_value[$key] = $state_map[$state];
- }
-
- $xactions[] = id(new DifferentialTransaction())
- ->setTransactionType(PhabricatorTransactions::TYPE_INLINESTATE)
- ->setIgnoreOnNoEffect(true)
- ->setOldValue($old_value)
- ->setNewValue($new_value);
- }
- }
+ $xactions = $editor->newAutomaticInlineTransactions(
+ $object,
+ $inlines,
+ DifferentialTransaction::TYPE_INLINE,
+ $query_template);
return $xactions;
}
diff --git a/src/applications/differential/editor/DifferentialTransactionEditor.php b/src/applications/differential/editor/DifferentialTransactionEditor.php
--- a/src/applications/differential/editor/DifferentialTransactionEditor.php
+++ b/src/applications/differential/editor/DifferentialTransactionEditor.php
@@ -247,50 +247,16 @@
case DifferentialTransaction::TYPE_INLINE:
$this->didExpandInlineState = true;
- $actor_phid = $this->getActingAsPHID();
- $author_phid = $object->getAuthorPHID();
- $actor_is_author = ($actor_phid == $author_phid);
-
- $state_map = PhabricatorTransactions::getInlineStateMap();
-
- $query = id(new DifferentialDiffInlineCommentQuery())
- ->setViewer($this->getActor())
- ->withRevisionPHIDs(array($object->getPHID()))
- ->withFixedStates(array_keys($state_map));
-
- $inlines = array();
-
- // We're going to undraft any "done" marks on your own inlines.
- $inlines[] = id(clone $query)
- ->withAuthorPHIDs(array($actor_phid))
- ->withHasTransaction(false)
- ->execute();
-
- // If you're the author, we also undraft any "done" marks on other
- // inlines.
- if ($actor_is_author) {
- $inlines[] = id(clone $query)
- ->withHasTransaction(true)
- ->execute();
- }
+ $query_template = id(new DifferentialDiffInlineCommentQuery())
+ ->withRevisionPHIDs(array($object->getPHID()));
- $inlines = array_mergev($inlines);
+ $state_xaction = $this->newInlineStateTransaction(
+ $object,
+ $query_template);
- if (!$inlines) {
- break;
+ if ($state_xaction) {
+ $results[] = $state_xaction;
}
-
- $old_value = mpull($inlines, 'getFixedState', 'getPHID');
- $new_value = array();
- foreach ($old_value as $key => $state) {
- $new_value[$key] = $state_map[$state];
- }
-
- $results[] = id(new DifferentialTransaction())
- ->setTransactionType(PhabricatorTransactions::TYPE_INLINESTATE)
- ->setIgnoreOnNoEffect(true)
- ->setOldValue($old_value)
- ->setNewValue($new_value);
break;
}
}
diff --git a/src/applications/diffusion/editor/DiffusionCommitEditEngine.php b/src/applications/diffusion/editor/DiffusionCommitEditEngine.php
--- a/src/applications/diffusion/editor/DiffusionCommitEditEngine.php
+++ b/src/applications/diffusion/editor/DiffusionCommitEditEngine.php
@@ -170,36 +170,17 @@
$raw = true);
$inlines = msort($inlines, 'getID');
- foreach ($inlines as $inline) {
- $xactions[] = $object->getApplicationTransactionTemplate()
- ->setTransactionType(PhabricatorAuditActionConstants::INLINE)
- ->attachComment($inline);
- }
+ $editor = $object->getApplicationTransactionEditor()
+ ->setActor($viewer);
- $viewer_phid = $viewer->getPHID();
- $viewer_is_author = ($object->getAuthorPHID() == $viewer_phid);
- if ($viewer_is_author) {
- $state_map = PhabricatorTransactions::getInlineStateMap();
+ $query_template = id(new DiffusionDiffInlineCommentQuery())
+ ->withCommitPHIDs(array($object->getPHID()));
- $inlines = id(new DiffusionDiffInlineCommentQuery())
- ->setViewer($viewer)
- ->withCommitPHIDs(array($object->getPHID()))
- ->withFixedStates(array_keys($state_map))
- ->execute();
- if ($inlines) {
- $old_value = mpull($inlines, 'getFixedState', 'getPHID');
- $new_value = array();
- foreach ($old_value as $key => $state) {
- $new_value[$key] = $state_map[$state];
- }
-
- $xactions[] = $object->getApplicationTransactionTemplate()
- ->setTransactionType(PhabricatorTransactions::TYPE_INLINESTATE)
- ->setIgnoreOnNoEffect(true)
- ->setOldValue($old_value)
- ->setNewValue($new_value);
- }
- }
+ $xactions = $editor->newAutomaticInlineTransactions(
+ $object,
+ $inlines,
+ PhabricatorAuditActionConstants::INLINE,
+ $query_template);
return $xactions;
}
diff --git a/src/applications/transactions/editor/PhabricatorApplicationTransactionEditor.php b/src/applications/transactions/editor/PhabricatorApplicationTransactionEditor.php
--- a/src/applications/transactions/editor/PhabricatorApplicationTransactionEditor.php
+++ b/src/applications/transactions/editor/PhabricatorApplicationTransactionEditor.php
@@ -4594,4 +4594,75 @@
return $mail;
}
+ public function newAutomaticInlineTransactions(
+ PhabricatorLiskDAO $object,
+ array $inlines,
+ $transaction_type,
+ PhabricatorCursorPagedPolicyAwareQuery $query_template) {
+
+ $xactions = array();
+
+ foreach ($inlines as $inline) {
+ $xactions[] = $object->getApplicationTransactionTemplate()
+ ->setTransactionType($transaction_type)
+ ->attachComment($inline);
+ }
+
+ $state_xaction = $this->newInlineStateTransaction(
+ $object,
+ $query_template);
+
+ if ($state_xaction) {
+ $xactions[] = $state_xaction;
+ }
+
+ return $xactions;
+ }
+
+ protected function newInlineStateTransaction(
+ PhabricatorLiskDAO $object,
+ PhabricatorCursorPagedPolicyAwareQuery $query_template) {
+
+ $actor_phid = $this->getActingAsPHID();
+ $author_phid = $object->getAuthorPHID();
+ $actor_is_author = ($actor_phid == $author_phid);
+
+ $state_map = PhabricatorTransactions::getInlineStateMap();
+
+ $query = id(clone $query_template)
+ ->setViewer($this->getActor())
+ ->withFixedStates(array_keys($state_map));
+
+ $inlines = array();
+
+ $inlines[] = id(clone $query)
+ ->withAuthorPHIDs(array($actor_phid))
+ ->withHasTransaction(false)
+ ->execute();
+
+ if ($actor_is_author) {
+ $inlines[] = id(clone $query)
+ ->withHasTransaction(true)
+ ->execute();
+ }
+
+ $inlines = array_mergev($inlines);
+
+ if (!$inlines) {
+ return null;
+ }
+
+ $old_value = mpull($inlines, 'getFixedState', 'getPHID');
+ $new_value = array();
+ foreach ($old_value as $key => $state) {
+ $new_value[$key] = $state_map[$state];
+ }
+
+ return $object->getApplicationTransactionTemplate()
+ ->setTransactionType(PhabricatorTransactions::TYPE_INLINESTATE)
+ ->setIgnoreOnNoEffect(true)
+ ->setOldValue($old_value)
+ ->setNewValue($new_value);
+ }
+
}

File Metadata

Mime Type
text/plain
Expires
Fri, Mar 7, 6:47 AM (1 w, 5 d ago)
Storage Engine
blob
Storage Format
Encrypted (AES-256-CBC)
Storage Handle
7324843
Default Alt Text
D19858.id.diff (10 KB)

Event Timeline