diff --git a/src/applications/conpherence/controller/ConpherenceUpdateController.php b/src/applications/conpherence/controller/ConpherenceUpdateController.php --- a/src/applications/conpherence/controller/ConpherenceUpdateController.php +++ b/src/applications/conpherence/controller/ConpherenceUpdateController.php @@ -79,6 +79,30 @@ $user, $conpherence, $message); + + // The above may generate multiple transactions. + // In practice, the comment is the only one. + $xaction_comment = PhabricatorTransactions::findByType( + $xactions, + PhabricatorTransactions::TYPE_COMMENT); + + $text_metadata = $request->getStr('text_metadata'); + if ($text_metadata && $xaction_comment) { + $text_metadata = phutil_json_decode($text_metadata); + $attached_file_phids = idx($text_metadata, + 'attachedFilePHIDs', + array()); + if ($attached_file_phids) { + $metadata_object = array( + 'remarkup.control' => array( + 'attachedFilePHIDs' => $attached_file_phids, + ), + ); + + $xaction_comment->setMetadata($metadata_object); + } + } + $delete_draft = true; } else { $action = ConpherenceUpdateActions::LOAD; diff --git a/src/applications/transactions/constants/PhabricatorTransactions.php b/src/applications/transactions/constants/PhabricatorTransactions.php --- a/src/applications/transactions/constants/PhabricatorTransactions.php +++ b/src/applications/transactions/constants/PhabricatorTransactions.php @@ -41,4 +41,19 @@ ); } + /** + * Find the first transaction that matches a type. + * @param array $xactions + * @param string $type + * @return PhabricatorTransaction|null + */ + public static function findByType($xactions, $type) { + foreach ($xactions as $xaction) { + if ($xaction->getTransactionType() === $type) { + return $xaction; + } + } + return null; + } + }