Page MenuHomePhabricator

D19031.id45634.diff
No OneTemporary

D19031.id45634.diff

diff --git a/src/__phutil_library_map__.php b/src/__phutil_library_map__.php
--- a/src/__phutil_library_map__.php
+++ b/src/__phutil_library_map__.php
@@ -1346,6 +1346,7 @@
'HarbormasterWaitForPreviousBuildStepImplementation' => 'applications/harbormaster/step/HarbormasterWaitForPreviousBuildStepImplementation.php',
'HarbormasterWorker' => 'applications/harbormaster/worker/HarbormasterWorker.php',
'HarbormasterWorkingCopyArtifact' => 'applications/harbormaster/artifact/HarbormasterWorkingCopyArtifact.php',
+ 'HeraldActingUserField' => 'applications/herald/field/HeraldActingUserField.php',
'HeraldAction' => 'applications/herald/action/HeraldAction.php',
'HeraldActionGroup' => 'applications/herald/action/HeraldActionGroup.php',
'HeraldActionRecord' => 'applications/herald/storage/HeraldActionRecord.php',
@@ -6589,6 +6590,7 @@
'HarbormasterWaitForPreviousBuildStepImplementation' => 'HarbormasterBuildStepImplementation',
'HarbormasterWorker' => 'PhabricatorWorker',
'HarbormasterWorkingCopyArtifact' => 'HarbormasterDrydockLeaseArtifact',
+ 'HeraldActingUserField' => 'HeraldField',
'HeraldAction' => 'Phobject',
'HeraldActionGroup' => 'HeraldGroup',
'HeraldActionRecord' => 'HeraldDAO',
diff --git a/src/applications/diffusion/engine/DiffusionCommitHookEngine.php b/src/applications/diffusion/engine/DiffusionCommitHookEngine.php
--- a/src/applications/diffusion/engine/DiffusionCommitHookEngine.php
+++ b/src/applications/diffusion/engine/DiffusionCommitHookEngine.php
@@ -297,7 +297,11 @@
return;
}
- $adapter_template->setHookEngine($this);
+ $viewer = $this->getViewer();
+
+ $adapter_template
+ ->setHookEngine($this)
+ ->setActingAsPHID($viewer->getPHID());
$engine = new HeraldEngine();
$rules = null;
diff --git a/src/applications/herald/adapter/HeraldAdapter.php b/src/applications/herald/adapter/HeraldAdapter.php
--- a/src/applications/herald/adapter/HeraldAdapter.php
+++ b/src/applications/herald/adapter/HeraldAdapter.php
@@ -40,6 +40,7 @@
private $forbiddenActions = array();
private $viewer;
private $mustEncryptReasons = array();
+ private $actingAsPHID;
public function getEmailPHIDs() {
return array_values($this->emailPHIDs);
@@ -49,6 +50,15 @@
return array_values($this->forcedEmailPHIDs);
}
+ final public function setActingAsPHID($acting_as_phid) {
+ $this->actingAsPHID = $acting_as_phid;
+ return $this;
+ }
+
+ final public function getActingAsPHID() {
+ return $this->actingAsPHID;
+ }
+
public function addEmailPHID($phid, $force) {
$this->emailPHIDs[$phid] = $phid;
if ($force) {
diff --git a/src/applications/herald/controller/HeraldTestConsoleController.php b/src/applications/herald/controller/HeraldTestConsoleController.php
--- a/src/applications/herald/controller/HeraldTestConsoleController.php
+++ b/src/applications/herald/controller/HeraldTestConsoleController.php
@@ -41,6 +41,7 @@
$adapter
->setIsNewObject(false)
+ ->setActingAsPHID($viewer->getPHID())
->setViewer($viewer);
$rules = id(new HeraldRuleQuery())
diff --git a/src/applications/herald/field/HeraldActingUserField.php b/src/applications/herald/field/HeraldActingUserField.php
new file mode 100644
--- /dev/null
+++ b/src/applications/herald/field/HeraldActingUserField.php
@@ -0,0 +1,32 @@
+<?php
+
+final class HeraldActingUserField
+ extends HeraldField {
+
+ const FIELDCONST = 'herald.acting-user';
+
+ public function getHeraldFieldName() {
+ return pht('Acting user');
+ }
+
+ public function getHeraldFieldValue($object) {
+ return $this->getAdapter()->getActingAsPHID();
+ }
+
+ protected function getHeraldFieldStandardType() {
+ return self::STANDARD_PHID;
+ }
+
+ protected function getDatasource() {
+ return new PhabricatorPeopleDatasource();
+ }
+
+ public function supportsObject($object) {
+ return true;
+ }
+
+ public function getFieldGroupKey() {
+ return HeraldEditFieldGroup::FIELDGROUPKEY;
+ }
+
+}
diff --git a/src/applications/transactions/editor/PhabricatorApplicationTransactionEditor.php b/src/applications/transactions/editor/PhabricatorApplicationTransactionEditor.php
--- a/src/applications/transactions/editor/PhabricatorApplicationTransactionEditor.php
+++ b/src/applications/transactions/editor/PhabricatorApplicationTransactionEditor.php
@@ -3254,6 +3254,7 @@
$adapter = $this->buildHeraldAdapter($object, $xactions)
->setContentSource($this->getContentSource())
->setIsNewObject($this->getIsNewObject())
+ ->setActingAsPHID($this->getActingAsPHID())
->setAppliedTransactions($xactions);
if ($this->getApplicationEmail()) {

File Metadata

Mime Type
text/plain
Expires
Sun, Mar 16, 11:20 PM (6 d, 14 m ago)
Storage Engine
blob
Storage Format
Encrypted (AES-256-CBC)
Storage Handle
7704147
Default Alt Text
D19031.id45634.diff (4 KB)

Event Timeline