Differential D21234 Diff 50570 src/applications/transactions/editor/PhabricatorApplicationTransactionEditor.php
Changeset View
Changeset View
Standalone View
Standalone View
src/applications/transactions/editor/PhabricatorApplicationTransactionEditor.php
Show First 20 Lines • Show All 5,021 Lines • ▼ Show 20 Lines | private function buildHistoryMail(PhabricatorLiskDAO $object) { | ||||
// message regardless of their other mail settings. | // message regardless of their other mail settings. | ||||
$mail->setForceDelivery(true); | $mail->setForceDelivery(true); | ||||
return $mail; | return $mail; | ||||
} | } | ||||
public function newAutomaticInlineTransactions( | public function newAutomaticInlineTransactions( | ||||
PhabricatorLiskDAO $object, | PhabricatorLiskDAO $object, | ||||
array $inlines, | |||||
$transaction_type, | $transaction_type, | ||||
PhabricatorCursorPagedPolicyAwareQuery $query_template) { | PhabricatorCursorPagedPolicyAwareQuery $query_template) { | ||||
$actor = $this->getActor(); | |||||
$inlines = id(clone $query_template) | |||||
->setViewer($actor) | |||||
->withObjectPHIDs(array($object->getPHID())) | |||||
->withPublishableComments(true) | |||||
->needAppliedDrafts(true) | |||||
->needReplyToComments(true) | |||||
->execute(); | |||||
$inlines = msort($inlines, 'getID'); | |||||
$xactions = array(); | $xactions = array(); | ||||
foreach ($inlines as $key => $inline) { | foreach ($inlines as $key => $inline) { | ||||
if ($inline->isEmptyInlineComment()) { | |||||
unset($inlines[$key]); | |||||
continue; | |||||
} | |||||
$xactions[] = $object->getApplicationTransactionTemplate() | $xactions[] = $object->getApplicationTransactionTemplate() | ||||
->setTransactionType($transaction_type) | ->setTransactionType($transaction_type) | ||||
->attachComment($inline); | ->attachComment($inline); | ||||
} | } | ||||
$state_xaction = $this->newInlineStateTransaction( | $state_xaction = $this->newInlineStateTransaction( | ||||
$object, | $object, | ||||
$query_template); | $query_template); | ||||
Show All 10 Lines | protected function newInlineStateTransaction( | ||||
PhabricatorCursorPagedPolicyAwareQuery $query_template) { | PhabricatorCursorPagedPolicyAwareQuery $query_template) { | ||||
$actor_phid = $this->getActingAsPHID(); | $actor_phid = $this->getActingAsPHID(); | ||||
$author_phid = $object->getAuthorPHID(); | $author_phid = $object->getAuthorPHID(); | ||||
$actor_is_author = ($actor_phid == $author_phid); | $actor_is_author = ($actor_phid == $author_phid); | ||||
$state_map = PhabricatorTransactions::getInlineStateMap(); | $state_map = PhabricatorTransactions::getInlineStateMap(); | ||||
$query = id(clone $query_template) | $inline_query = id(clone $query_template) | ||||
->setViewer($this->getActor()) | ->setViewer($this->getActor()) | ||||
->withFixedStates(array_keys($state_map)); | ->withObjectPHIDs(array($object->getPHID())) | ||||
->withFixedStates(array_keys($state_map)) | |||||
$inlines = array(); | ->withPublishableComments(true); | ||||
$inlines[] = id(clone $query) | |||||
->withAuthorPHIDs(array($actor_phid)) | |||||
->withHasTransaction(false) | |||||
->execute(); | |||||
if ($actor_is_author) { | if ($actor_is_author) { | ||||
$inlines[] = id(clone $query) | $inline_query->withPublishedComments(true); | ||||
->withHasTransaction(true) | |||||
->execute(); | |||||
} | } | ||||
$inlines = array_mergev($inlines); | $inlines = $inline_query->execute(); | ||||
foreach ($inlines as $key => $inline) { | |||||
if ($inline->isEmptyInlineComment()) { | |||||
unset($inlines[$key]); | |||||
continue; | |||||
} | |||||
} | |||||
if (!$inlines) { | if (!$inlines) { | ||||
return null; | return null; | ||||
} | } | ||||
$old_value = mpull($inlines, 'getFixedState', 'getPHID'); | $old_value = mpull($inlines, 'getFixedState', 'getPHID'); | ||||
$new_value = array(); | $new_value = array(); | ||||
foreach ($old_value as $key => $state) { | foreach ($old_value as $key => $state) { | ||||
▲ Show 20 Lines • Show All 315 Lines • Show Last 20 Lines |