Page Menu
Home
Phabricator
Search
Configure Global Search
Log In
Files
F14038493
D8199.id18553.diff
No One
Temporary
Actions
View File
Edit File
Delete File
View Transforms
Subscribe
Mute Notifications
Award Token
Flag For Later
Size
9 KB
Referenced Files
None
Subscribers
None
D8199.id18553.diff
View Options
Index: src/applications/differential/editor/DifferentialCommentEditor.php
===================================================================
--- src/applications/differential/editor/DifferentialCommentEditor.php
+++ src/applications/differential/editor/DifferentialCommentEditor.php
@@ -647,7 +647,7 @@
$mail = id(new DifferentialCommentMail(
$revision,
$actor_handle,
- $comment,
+ array($comment),
$changesets,
$inline_comments))
->setActor($actor)
Index: src/applications/differential/editor/DifferentialRevisionEditor.php
===================================================================
--- src/applications/differential/editor/DifferentialRevisionEditor.php
+++ src/applications/differential/editor/DifferentialRevisionEditor.php
@@ -381,24 +381,21 @@
$actor_handle = $handles[$this->getActorPHID()];
$changesets = null;
- $comment = null;
$old_status = $revision->getStatus();
if ($diff) {
$changesets = $diff->loadChangesets();
// TODO: This should probably be in DifferentialFeedbackEditor?
if (!$is_new) {
- $comment = $this->createComment();
- }
- if ($comment) {
+ $this->createComment();
$mail[] = id(new DifferentialNewDiffMail(
$revision,
$actor_handle,
$changesets))
->setActor($this->getActor())
- ->setIsFirstMailAboutRevision($is_new)
- ->setIsFirstMailToRecipients($is_new)
- ->setComments($this->getComments())
+ ->setIsFirstMailAboutRevision(false)
+ ->setIsFirstMailToRecipients(false)
+ ->setCommentText($this->getComments())
->setToPHIDs(array_keys($stable['rev']))
->setCCPHIDs(array_keys($stable['ccs']));
}
@@ -804,8 +801,6 @@
}
$comment->save();
-
- return $comment;
}
private function updateAuxiliaryFields() {
Index: src/applications/differential/mail/DifferentialCommentMail.php
===================================================================
--- src/applications/differential/mail/DifferentialCommentMail.php
+++ src/applications/differential/mail/DifferentialCommentMail.php
@@ -19,56 +19,60 @@
public function __construct(
DifferentialRevision $revision,
PhabricatorObjectHandle $actor,
- DifferentialComment $comment,
+ array $comments,
array $changesets,
array $inline_comments) {
+
+ assert_instances_of($comments, 'DifferentialComment');
assert_instances_of($changesets, 'DifferentialChangeset');
assert_instances_of($inline_comments, 'PhabricatorInlineCommentInterface');
$this->setRevision($revision);
$this->setActorHandle($actor);
- $this->setComment($comment);
+ $this->setComments($comments);
$this->setChangesets($changesets);
$this->setInlineComments($inline_comments);
}
protected function getMailTags() {
- $tags = array();
- $comment = $this->getComment();
- $action = $comment->getAction();
-
- switch ($action) {
- case DifferentialAction::ACTION_ADDCCS:
- $tags[] = MetaMTANotificationType::TYPE_DIFFERENTIAL_CC;
- break;
- case DifferentialAction::ACTION_CLOSE:
- $tags[] = MetaMTANotificationType::TYPE_DIFFERENTIAL_CLOSED;
- break;
- case DifferentialAction::ACTION_ADDREVIEWERS:
- $tags[] = MetaMTANotificationType::TYPE_DIFFERENTIAL_REVIEWERS;
- break;
- case DifferentialAction::ACTION_COMMENT:
- // this is a comment which we will check separately below for content
- break;
- default:
- $tags[] = MetaMTANotificationType::TYPE_DIFFERENTIAL_OTHER;
- break;
- }
+ $tags = array();
- $has_comment = strlen(trim($comment->getContent()));
- $has_inlines = (bool)$this->getInlineComments();
+ foreach ($this->getComments() as $comment) {
+ $action = $comment->getAction();
- if ($has_comment || $has_inlines) {
switch ($action) {
+ case DifferentialAction::ACTION_ADDCCS:
+ $tags[] = MetaMTANotificationType::TYPE_DIFFERENTIAL_CC;
+ break;
case DifferentialAction::ACTION_CLOSE:
- // Commit comments are auto-generated and not especially interesting,
- // so don't tag them as having a comment.
+ $tags[] = MetaMTANotificationType::TYPE_DIFFERENTIAL_CLOSED;
+ break;
+ case DifferentialAction::ACTION_ADDREVIEWERS:
+ $tags[] = MetaMTANotificationType::TYPE_DIFFERENTIAL_REVIEWERS;
+ break;
+ case DifferentialAction::ACTION_COMMENT:
+ // this is a comment which we will check separately below for content
break;
default:
- $tags[] = MetaMTANotificationType::TYPE_DIFFERENTIAL_COMMENT;
+ $tags[] = MetaMTANotificationType::TYPE_DIFFERENTIAL_OTHER;
break;
}
+
+ $has_comment = strlen(trim($comment->getContent()));
+ $has_inlines = (bool)$this->getInlineComments();
+
+ if ($has_comment || $has_inlines) {
+ switch ($action) {
+ case DifferentialAction::ACTION_CLOSE:
+ // Commit comments are auto-generated and not especially
+ // interesting, so don't tag them as having a comment.
+ break;
+ default:
+ $tags[] = MetaMTANotificationType::TYPE_DIFFERENTIAL_COMMENT;
+ break;
+ }
+ }
}
if (!$tags) {
@@ -84,7 +88,9 @@
}
protected function getVerb() {
- $comment = $this->getComment();
+ // NOTE: Eventually, this will use getStrongestAction() transaction logic.
+ // For now, pick the first comment.
+ $comment = head($this->getComments());
$action = $comment->getAction();
$verb = DifferentialAction::getActionPastTenseVerb($action);
return $verb;
@@ -94,16 +100,22 @@
parent::prepareBody();
// If the commented added reviewers or CCs, list them explicitly.
- $meta = $this->getComment()->getMetadata();
- $m_reviewers = idx(
- $meta,
- DifferentialComment::METADATA_ADDED_REVIEWERS,
- array());
- $m_cc = idx(
- $meta,
- DifferentialComment::METADATA_ADDED_CCS,
- array());
- $load = array_merge($m_reviewers, $m_cc);
+ $load = array();
+ foreach ($this->comments as $comment) {
+ $meta = $comment->getMetadata();
+ $m_reviewers = idx(
+ $meta,
+ DifferentialComment::METADATA_ADDED_REVIEWERS,
+ array());
+ $m_cc = idx(
+ $meta,
+ DifferentialComment::METADATA_ADDED_CCS,
+ array());
+ $load[] = $m_reviewers;
+ $load[] = $m_cc;
+ }
+
+ $load = array_mergev($load);
if ($load) {
$handles = id(new PhabricatorHandleQuery())
->setViewer($this->getActor())
@@ -119,8 +131,10 @@
}
protected function renderBody() {
+ // TODO: This will be ApplicationTransactions eventually, but split the
+ // difference for now.
- $comment = $this->getComment();
+ $comment = head($this->getComments());
$actor = $this->getActorName();
$name = $this->getRevision()->getTitle();
@@ -139,10 +153,12 @@
$body[] = null;
- $content = $comment->getContent();
- if (strlen($content)) {
- $body[] = $this->formatText($content);
- $body[] = null;
+ foreach ($this->getComments() as $comment) {
+ $content = $comment->getContent();
+ if (strlen($content)) {
+ $body[] = $this->formatText($content);
+ $body[] = null;
+ }
}
if ($this->getChangedByCommit()) {
Index: src/applications/differential/mail/DifferentialMail.php
===================================================================
--- src/applications/differential/mail/DifferentialMail.php
+++ src/applications/differential/mail/DifferentialMail.php
@@ -9,7 +9,7 @@
protected $actorHandle;
protected $revision;
- protected $comment;
+ protected $comments;
protected $changesets;
protected $inlineComments;
protected $isFirstMailAboutRevision;
@@ -370,13 +370,13 @@
return "D{$id}: {$title}";
}
- public function setComment($comment) {
- $this->comment = $comment;
+ public function setComments(array $comments) {
+ $this->comments = $comments;
return $this;
}
- public function getComment() {
- return $this->comment;
+ public function getComments() {
+ return $this->comments;
}
public function setChangesets($changesets) {
Index: src/applications/differential/mail/DifferentialReviewRequestMail.php
===================================================================
--- src/applications/differential/mail/DifferentialReviewRequestMail.php
+++ src/applications/differential/mail/DifferentialReviewRequestMail.php
@@ -4,17 +4,17 @@
const MAX_AFFECTED_FILES = 1000;
- protected $comments;
+ protected $commentText;
private $patch;
- public function setComments($comments) {
- $this->comments = $comments;
+ public function setCommentText($comment_text) {
+ $this->commentText = $comment_text;
return $this;
}
- public function getComments() {
- return $this->comments;
+ public function getCommentText() {
+ return $this->commentText;
}
public function __construct(
@@ -46,8 +46,8 @@
$body = array();
if (!$this->isFirstMailToRecipients()) {
- if (strlen($this->getComments())) {
- $body[] = $this->formatText($this->getComments());
+ if (strlen($this->getCommentText())) {
+ $body[] = $this->formatText($this->getCommentText());
$body[] = null;
}
}
File Metadata
Details
Attached
Mime Type
text/plain
Expires
Mon, Nov 11, 11:54 PM (1 w, 1 d ago)
Storage Engine
blob
Storage Format
Encrypted (AES-256-CBC)
Storage Handle
6752271
Default Alt Text
D8199.id18553.diff (9 KB)
Attached To
Mode
D8199: Allow Differential Mail to accept multiple comments for one mail
Attached
Detach File
Event Timeline
Log In to Comment