mirror of
https://we.phorge.it/source/phorge.git
synced 2024-12-19 12:00:55 +01:00
Audit - fix erroneous mentions of tasks, etc via commit message
Summary: we don't want to mention these phids... when expanding transactions, build the unmnentionable map and make it so. slightly hairy due to how the editor framework works, but overall i think this is the right place to put these hooks. Fixes T6331. Test Plan: made a commit with a commit message that had fixes, refs, depends on, and auditors and saw no erroneous mentions Reviewers: epriestley Reviewed By: epriestley Subscribers: Korvin, chad, epriestley Maniphest Tasks: T6331 Differential Revision: https://secure.phabricator.com/D10721
This commit is contained in:
parent
01e0b08fce
commit
d9dd098e40
1 changed files with 59 additions and 0 deletions
|
@ -321,6 +321,7 @@ final class PhabricatorAuditEditor
|
|||
$object);
|
||||
if ($request) {
|
||||
$xactions[] = $request;
|
||||
$this->setUnmentionablePHIDMap($request->getNewValue());
|
||||
}
|
||||
break;
|
||||
default:
|
||||
|
@ -448,6 +449,64 @@ final class PhabricatorAuditEditor
|
|||
return true;
|
||||
}
|
||||
|
||||
protected function expandCustomRemarkupBlockTransactions(
|
||||
PhabricatorLiskDAO $object,
|
||||
array $xactions,
|
||||
$blocks,
|
||||
PhutilMarkupEngine $engine) {
|
||||
|
||||
// we are only really trying to find unmentionable phids here...
|
||||
// don't bother with this outside initial commit (i.e. create)
|
||||
// transaction
|
||||
$is_commit = false;
|
||||
foreach ($xactions as $xaction) {
|
||||
switch ($xaction->getTransactionType()) {
|
||||
case PhabricatorAuditTransaction::TYPE_COMMIT:
|
||||
$is_commit = true;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
// "result" is always an array....
|
||||
$result = array();
|
||||
if (!$is_commit) {
|
||||
return $result;
|
||||
}
|
||||
|
||||
$flat_blocks = array_mergev($blocks);
|
||||
$huge_block = implode("\n\n", $flat_blocks);
|
||||
$phid_map = array();
|
||||
$phid_map[] = $this->getUnmentionablePHIDMap();
|
||||
$monograms = array();
|
||||
|
||||
$task_refs = id(new ManiphestCustomFieldStatusParser())
|
||||
->parseCorpus($huge_block);
|
||||
foreach ($task_refs as $match) {
|
||||
foreach ($match['monograms'] as $monogram) {
|
||||
$monograms[] = $monogram;
|
||||
}
|
||||
}
|
||||
|
||||
$rev_refs = id(new DifferentialCustomFieldDependsOnParser())
|
||||
->parseCorpus($huge_block);
|
||||
foreach ($rev_refs as $match) {
|
||||
foreach ($match['monograms'] as $monogram) {
|
||||
$monograms[] = $monogram;
|
||||
}
|
||||
}
|
||||
|
||||
$objects = id(new PhabricatorObjectQuery())
|
||||
->setViewer($this->getActor())
|
||||
->withNames($monograms)
|
||||
->execute();
|
||||
$phid_map[] = mpull($objects, 'getPHID', 'getPHID');
|
||||
$phid_map = array_mergev($phid_map);
|
||||
$this->setUnmentionablePHIDMap($phid_map);
|
||||
|
||||
return $result;
|
||||
}
|
||||
|
||||
|
||||
protected function shouldSendMail(
|
||||
PhabricatorLiskDAO $object,
|
||||
array $xactions) {
|
||||
|
|
Loading…
Reference in a new issue