mirror of
https://we.phorge.it/source/phorge.git
synced 2024-11-19 05:12:41 +01:00
Don't show self-subscribes in feed or mail
Summary: These transactions (when a user subscribes or unsubscribes only themselves) are universally uninteresting. Test Plan: - Subscribed/unsubscribed, saw transactions but no feed/mail. - Commented, got implicitly subscribed, saw only comment in feed/mail, saw both transasctions on task. Reviewers: chad Reviewed By: chad Differential Revision: https://secure.phabricator.com/D14853
This commit is contained in:
parent
af8cc2a5fc
commit
536d3a2185
1 changed files with 41 additions and 25 deletions
|
@ -565,6 +565,10 @@ abstract class PhabricatorApplicationTransaction
|
|||
}
|
||||
|
||||
public function shouldHideForMail(array $xactions) {
|
||||
if ($this->isSelfSubscription()) {
|
||||
return true;
|
||||
}
|
||||
|
||||
switch ($this->getTransactionType()) {
|
||||
case PhabricatorTransactions::TYPE_TOKEN:
|
||||
return true;
|
||||
|
@ -614,6 +618,10 @@ abstract class PhabricatorApplicationTransaction
|
|||
}
|
||||
|
||||
public function shouldHideForFeed() {
|
||||
if ($this->isSelfSubscription()) {
|
||||
return true;
|
||||
}
|
||||
|
||||
switch ($this->getTransactionType()) {
|
||||
case PhabricatorTransactions::TYPE_TOKEN:
|
||||
return true;
|
||||
|
@ -1103,32 +1111,11 @@ abstract class PhabricatorApplicationTransaction
|
|||
case PhabricatorTransactions::TYPE_COMMENT:
|
||||
return 0.5;
|
||||
case PhabricatorTransactions::TYPE_SUBSCRIBERS:
|
||||
$old = $this->getOldValue();
|
||||
$new = $this->getNewValue();
|
||||
|
||||
$add = array_diff($old, $new);
|
||||
$rem = array_diff($new, $old);
|
||||
|
||||
// If this action is the actor subscribing or unsubscribing themselves,
|
||||
// it is less interesting. In particular, if someone makes a comment and
|
||||
// also implicitly subscribes themselves, we should treat the
|
||||
// transaction group as "comment", not "subscribe". In this specific
|
||||
// case (one affected user, and that affected user it the actor),
|
||||
// decrease the action strength.
|
||||
|
||||
if ((count($add) + count($rem)) != 1) {
|
||||
// Not exactly one CC change.
|
||||
break;
|
||||
if ($this->isSelfSubscription()) {
|
||||
// Make this weaker than TYPE_COMMENT.
|
||||
return 0.25;
|
||||
}
|
||||
|
||||
$affected_phid = head(array_merge($add, $rem));
|
||||
if ($affected_phid != $this->getAuthorPHID()) {
|
||||
// Affected user is someone else.
|
||||
break;
|
||||
}
|
||||
|
||||
// Make this weaker than TYPE_COMMENT.
|
||||
return 0.25;
|
||||
break;
|
||||
}
|
||||
|
||||
return 1.0;
|
||||
|
@ -1333,6 +1320,35 @@ abstract class PhabricatorApplicationTransaction
|
|||
return rtrim($text."\n\n".$body);
|
||||
}
|
||||
|
||||
/**
|
||||
* Test if this transaction is just a user subscribing or unsubscribing
|
||||
* themselves.
|
||||
*/
|
||||
private function isSelfSubscription() {
|
||||
$type = $this->getTransactionType();
|
||||
if ($type != PhabricatorTransactions::TYPE_SUBSCRIBERS) {
|
||||
return false;
|
||||
}
|
||||
|
||||
$old = $this->getOldValue();
|
||||
$new = $this->getNewValue();
|
||||
|
||||
$add = array_diff($old, $new);
|
||||
$rem = array_diff($new, $old);
|
||||
|
||||
if ((count($add) + count($rem)) != 1) {
|
||||
// More than one user affected.
|
||||
return false;
|
||||
}
|
||||
|
||||
$affected_phid = head(array_merge($add, $rem));
|
||||
if ($affected_phid != $this->getAuthorPHID()) {
|
||||
// Affected user is someone else.
|
||||
return false;
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
|
||||
/* -( PhabricatorPolicyInterface Implementation )-------------------------- */
|
||||
|
|
Loading…
Reference in a new issue