mirror of
https://we.phorge.it/source/phorge.git
synced 2025-02-17 01:08:41 +01:00
Make X-Herald-Rules header sticky
Summary: This isn't terribly elegant but it solves the problem without loss of generality. We can pursue a more finessed solution later if it seems prudent. Test Plan: Created a revision matched by a blanket herald rule, and then commented on it. Comment email had X-Herald-Rules header in it. Reviewed By: aran Reviewers: aran, tuomaspelkonen, jungejason CC: aran Differential Revision: 218
This commit is contained in:
parent
8c031db32b
commit
8370f93048
7 changed files with 40 additions and 0 deletions
4
resources/sql/patches/034.savedheader.sql
Normal file
4
resources/sql/patches/034.savedheader.sql
Normal file
|
@ -0,0 +1,4 @@
|
||||||
|
CREATE TABLE phabricator_herald.herald_savedheader (
|
||||||
|
phid varchar(64) binary not null primary key,
|
||||||
|
header varchar(255) not null
|
||||||
|
) ENGINE=InnoDB;
|
|
@ -304,6 +304,9 @@ class DifferentialCommentEditor {
|
||||||
->loadHandles();
|
->loadHandles();
|
||||||
$actor_handle = $handles[$this->actorPHID];
|
$actor_handle = $handles[$this->actorPHID];
|
||||||
|
|
||||||
|
$xherald_header = HeraldTranscript::loadXHeraldRulesHeader(
|
||||||
|
$revision->getPHID());
|
||||||
|
|
||||||
id(new DifferentialCommentMail(
|
id(new DifferentialCommentMail(
|
||||||
$revision,
|
$revision,
|
||||||
$actor_handle,
|
$actor_handle,
|
||||||
|
@ -316,6 +319,7 @@ class DifferentialCommentEditor {
|
||||||
array($revision->getAuthorPHID())))
|
array($revision->getAuthorPHID())))
|
||||||
->setCCPHIDs($revision->getCCPHIDs())
|
->setCCPHIDs($revision->getCCPHIDs())
|
||||||
->setChangedByCommit($this->getChangedByCommit())
|
->setChangedByCommit($this->getChangedByCommit())
|
||||||
|
->setXHeraldRulesHeader($xherald_header)
|
||||||
->send();
|
->send();
|
||||||
|
|
||||||
$event_data = array(
|
$event_data = array(
|
||||||
|
|
|
@ -13,6 +13,7 @@ phutil_require_module('phabricator', 'applications/differential/mail/comment');
|
||||||
phutil_require_module('phabricator', 'applications/differential/storage/changeset');
|
phutil_require_module('phabricator', 'applications/differential/storage/changeset');
|
||||||
phutil_require_module('phabricator', 'applications/differential/storage/comment');
|
phutil_require_module('phabricator', 'applications/differential/storage/comment');
|
||||||
phutil_require_module('phabricator', 'applications/differential/storage/inlinecomment');
|
phutil_require_module('phabricator', 'applications/differential/storage/inlinecomment');
|
||||||
|
phutil_require_module('phabricator', 'applications/herald/storage/transcript/base');
|
||||||
phutil_require_module('phabricator', 'applications/phid/handle/data');
|
phutil_require_module('phabricator', 'applications/phid/handle/data');
|
||||||
phutil_require_module('phabricator', 'infrastructure/daemon/timeline/storage/event');
|
phutil_require_module('phabricator', 'infrastructure/daemon/timeline/storage/event');
|
||||||
|
|
||||||
|
|
|
@ -212,6 +212,10 @@ class DifferentialRevisionEditor {
|
||||||
$xscript_phid = $xscript->getPHID();
|
$xscript_phid = $xscript->getPHID();
|
||||||
$xscript_header = $xscript->getXHeraldRulesHeader();
|
$xscript_header = $xscript->getXHeraldRulesHeader();
|
||||||
|
|
||||||
|
HeraldTranscript::saveXHeraldRulesHeader(
|
||||||
|
$revision->getPHID(),
|
||||||
|
$xscript_header);
|
||||||
|
|
||||||
$sub = array(
|
$sub = array(
|
||||||
'rev' => array(),
|
'rev' => array(),
|
||||||
'ccs' => $adapter->getCCsAddedByHerald(),
|
'ccs' => $adapter->getCCsAddedByHerald(),
|
||||||
|
|
|
@ -13,6 +13,7 @@ phutil_require_module('phabricator', 'applications/differential/storage/comment'
|
||||||
phutil_require_module('phabricator', 'applications/differential/storage/revision');
|
phutil_require_module('phabricator', 'applications/differential/storage/revision');
|
||||||
phutil_require_module('phabricator', 'applications/herald/adapter/differential');
|
phutil_require_module('phabricator', 'applications/herald/adapter/differential');
|
||||||
phutil_require_module('phabricator', 'applications/herald/engine/engine');
|
phutil_require_module('phabricator', 'applications/herald/engine/engine');
|
||||||
|
phutil_require_module('phabricator', 'applications/herald/storage/transcript/base');
|
||||||
phutil_require_module('phabricator', 'applications/phid/handle/data');
|
phutil_require_module('phabricator', 'applications/phid/handle/data');
|
||||||
phutil_require_module('phabricator', 'applications/search/index/indexer/differential');
|
phutil_require_module('phabricator', 'applications/search/index/indexer/differential');
|
||||||
phutil_require_module('phabricator', 'infrastructure/env');
|
phutil_require_module('phabricator', 'infrastructure/env');
|
||||||
|
|
|
@ -33,6 +33,8 @@ class HeraldTranscript extends HeraldDAO {
|
||||||
protected $objectPHID;
|
protected $objectPHID;
|
||||||
protected $dryRun;
|
protected $dryRun;
|
||||||
|
|
||||||
|
const TABLE_SAVED_HEADER = 'herald_savedheader';
|
||||||
|
|
||||||
public function getXHeraldRulesHeader() {
|
public function getXHeraldRulesHeader() {
|
||||||
$ids = array();
|
$ids = array();
|
||||||
foreach ($this->applyTranscripts as $xscript) {
|
foreach ($this->applyTranscripts as $xscript) {
|
||||||
|
@ -57,6 +59,29 @@ class HeraldTranscript extends HeraldDAO {
|
||||||
return implode(', ', $ids);
|
return implode(', ', $ids);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public static function saveXHeraldRulesHeader($phid, $header) {
|
||||||
|
queryfx(
|
||||||
|
id(new HeraldTranscript())->establishConnection('w'),
|
||||||
|
'INSERT INTO %T (phid, header) VALUES (%s, %s)
|
||||||
|
ON DUPLICATE KEY UPDATE header = VALUES(header)',
|
||||||
|
self::TABLE_SAVED_HEADER,
|
||||||
|
$phid,
|
||||||
|
$header);
|
||||||
|
}
|
||||||
|
|
||||||
|
public static function loadXHeraldRulesHeader($phid) {
|
||||||
|
$header = queryfx_one(
|
||||||
|
id(new HeraldTranscript())->establishConnection('r'),
|
||||||
|
'SELECT * FROM %T WHERE phid = %s',
|
||||||
|
self::TABLE_SAVED_HEADER,
|
||||||
|
$phid);
|
||||||
|
if ($header) {
|
||||||
|
return idx($header, 'header');
|
||||||
|
}
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
protected function getConfiguration() {
|
protected function getConfiguration() {
|
||||||
// Ugh. Too much of a mess to deal with.
|
// Ugh. Too much of a mess to deal with.
|
||||||
return array(
|
return array(
|
||||||
|
|
|
@ -8,6 +8,7 @@
|
||||||
|
|
||||||
phutil_require_module('phabricator', 'applications/herald/storage/base');
|
phutil_require_module('phabricator', 'applications/herald/storage/base');
|
||||||
phutil_require_module('phabricator', 'applications/phid/storage/phid');
|
phutil_require_module('phabricator', 'applications/phid/storage/phid');
|
||||||
|
phutil_require_module('phabricator', 'storage/queryfx');
|
||||||
|
|
||||||
phutil_require_module('phutil', 'utils');
|
phutil_require_module('phutil', 'utils');
|
||||||
|
|
||||||
|
|
Loading…
Add table
Reference in a new issue