Page MenuHomePhabricator

D10925.diff
No OneTemporary

D10925.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
@@ -3789,6 +3789,7 @@
'FundSchemaSpec' => 'PhabricatorConfigSchemaSpec',
'HarbormasterBuild' => array(
'HarbormasterDAO',
+ 'PhabricatorApplicationTransactionInterface',
'PhabricatorPolicyInterface',
),
'HarbormasterBuildAbortedException' => 'Exception',
@@ -3820,6 +3821,7 @@
'HarbormasterBuildPHIDType' => 'PhabricatorPHIDType',
'HarbormasterBuildPlan' => array(
'HarbormasterDAO',
+ 'PhabricatorApplicationTransactionInterface',
'PhabricatorPolicyInterface',
'PhabricatorSubscribableInterface',
),
@@ -3833,6 +3835,7 @@
'HarbormasterBuildQuery' => 'PhabricatorCursorPagedPolicyAwareQuery',
'HarbormasterBuildStep' => array(
'HarbormasterDAO',
+ 'PhabricatorApplicationTransactionInterface',
'PhabricatorPolicyInterface',
'PhabricatorCustomFieldInterface',
),
@@ -3859,6 +3862,7 @@
'HarbormasterBuildWorker' => 'HarbormasterWorker',
'HarbormasterBuildable' => array(
'HarbormasterDAO',
+ 'PhabricatorApplicationTransactionInterface',
'PhabricatorPolicyInterface',
'HarbormasterBuildableInterface',
),
@@ -4154,6 +4158,7 @@
'NuanceSchemaSpec' => 'PhabricatorConfigSchemaSpec',
'NuanceSource' => array(
'NuanceDAO',
+ 'PhabricatorApplicationTransactionInterface',
'PhabricatorPolicyInterface',
),
'NuanceSourceDefaultEditCapability' => 'PhabricatorPolicyCapability',
@@ -5312,6 +5317,7 @@
'PhabricatorRepositoriesApplication' => 'PhabricatorApplication',
'PhabricatorRepository' => array(
'PhabricatorRepositoryDAO',
+ 'PhabricatorApplicationTransactionInterface',
'PhabricatorPolicyInterface',
'PhabricatorFlaggableInterface',
'PhabricatorMarkupInterface',
@@ -5837,6 +5843,7 @@
'PholioUploadedImageView' => 'AphrontView',
'PhortuneAccount' => array(
'PhortuneDAO',
+ 'PhabricatorApplicationTransactionInterface',
'PhabricatorPolicyInterface',
),
'PhortuneAccountEditController' => 'PhortuneController',
@@ -5851,6 +5858,7 @@
'PhortuneBalancedPaymentProvider' => 'PhortunePaymentProvider',
'PhortuneCart' => array(
'PhortuneDAO',
+ 'PhabricatorApplicationTransactionInterface',
'PhabricatorPolicyInterface',
),
'PhortuneCartAcceptController' => 'PhortuneCartController',
@@ -5887,6 +5895,7 @@
'PhortuneMemberHasMerchantEdgeType' => 'PhabricatorEdgeType',
'PhortuneMerchant' => array(
'PhortuneDAO',
+ 'PhabricatorApplicationTransactionInterface',
'PhabricatorPolicyInterface',
),
'PhortuneMerchantCapability' => 'PhabricatorPolicyCapability',
@@ -6056,6 +6065,7 @@
'PonderAddAnswerView' => 'AphrontView',
'PonderAnswer' => array(
'PonderDAO',
+ 'PhabricatorApplicationTransactionInterface',
'PhabricatorMarkupInterface',
'PonderVotableInterface',
'PhabricatorPolicyInterface',
@@ -6079,6 +6089,7 @@
'PonderEditor' => 'PhabricatorApplicationTransactionEditor',
'PonderQuestion' => array(
'PonderDAO',
+ 'PhabricatorApplicationTransactionInterface',
'PhabricatorMarkupInterface',
'PonderVotableInterface',
'PhabricatorSubscribableInterface',
@@ -6126,6 +6137,7 @@
'ReleephAuthorFieldSpecification' => 'ReleephFieldSpecification',
'ReleephBranch' => array(
'ReleephDAO',
+ 'PhabricatorApplicationTransactionInterface',
'PhabricatorPolicyInterface',
),
'ReleephBranchAccessController' => 'ReleephBranchController',
@@ -6183,6 +6195,7 @@
),
'ReleephProject' => array(
'ReleephDAO',
+ 'PhabricatorApplicationTransactionInterface',
'PhabricatorPolicyInterface',
),
'ReleephProjectInfoConduitAPIMethod' => 'ReleephConduitAPIMethod',
@@ -6192,6 +6205,7 @@
'ReleephReasonFieldSpecification' => 'ReleephFieldSpecification',
'ReleephRequest' => array(
'ReleephDAO',
+ 'PhabricatorApplicationTransactionInterface',
'PhabricatorPolicyInterface',
'PhabricatorCustomFieldInterface',
),
diff --git a/src/applications/audit/storage/PhabricatorAuditTransaction.php b/src/applications/audit/storage/PhabricatorAuditTransaction.php
--- a/src/applications/audit/storage/PhabricatorAuditTransaction.php
+++ b/src/applications/audit/storage/PhabricatorAuditTransaction.php
@@ -28,6 +28,10 @@
return new PhabricatorAuditTransactionComment();
}
+ public function getApplicationTransactionViewObject() {
+ return new PhabricatorAuditTransactionView();
+ }
+
public function getRemarkupBlocks() {
$blocks = parent::getRemarkupBlocks();
diff --git a/src/applications/differential/controller/DifferentialRevisionViewController.php b/src/applications/differential/controller/DifferentialRevisionViewController.php
--- a/src/applications/differential/controller/DifferentialRevisionViewController.php
+++ b/src/applications/differential/controller/DifferentialRevisionViewController.php
@@ -926,22 +926,14 @@
DifferentialDiff $right_diff,
array $changesets) {
- $viewer = $this->getRequest()->getUser();
-
- $xactions = id(new DifferentialTransactionQuery())
- ->setViewer($viewer)
- ->withObjectPHIDs(array($revision->getPHID()))
- ->needComments(true)
- ->execute();
-
- $timeline = id(new DifferentialTransactionView())
- ->setUser($viewer)
- ->setObjectPHID($revision->getPHID())
+ $timeline = $this->buildTransactionTimeline(
+ $revision,
+ new DifferentialTransactionQuery());
+ $timeline
->setChangesets($changesets)
->setRevision($revision)
->setLeftDiff($left_diff)
- ->setRightDiff($right_diff)
- ->setTransactions($xactions);
+ ->setRightDiff($right_diff);
return $timeline;
}
diff --git a/src/applications/differential/storage/DifferentialTransaction.php b/src/applications/differential/storage/DifferentialTransaction.php
--- a/src/applications/differential/storage/DifferentialTransaction.php
+++ b/src/applications/differential/storage/DifferentialTransaction.php
@@ -31,6 +31,10 @@
return new DifferentialTransactionComment();
}
+ public function getApplicationTransactionViewObject() {
+ return new DifferentialTransactionView();
+ }
+
public function shouldHide() {
$old = $this->getOldValue();
$new = $this->getNewValue();
diff --git a/src/applications/diffusion/controller/DiffusionCommitController.php b/src/applications/diffusion/controller/DiffusionCommitController.php
--- a/src/applications/diffusion/controller/DiffusionCommitController.php
+++ b/src/applications/diffusion/controller/DiffusionCommitController.php
@@ -628,13 +628,10 @@
}
private function buildComments(PhabricatorRepositoryCommit $commit) {
- $viewer = $this->getRequest()->getUser();
-
- $xactions = id(new PhabricatorAuditTransactionQuery())
- ->setViewer($viewer)
- ->withObjectPHIDs(array($commit->getPHID()))
- ->needComments(true)
- ->execute();
+ $timeline = $this->buildTransactionTimeline(
+ $commit,
+ new PhabricatorAuditTransactionQuery());
+ $xactions = $timeline->getTransactions();
$path_ids = array();
foreach ($xactions as $xaction) {
@@ -654,11 +651,7 @@
$path_map = ipull($path_map, 'path', 'id');
}
- return id(new PhabricatorAuditTransactionView())
- ->setUser($viewer)
- ->setObjectPHID($commit->getPHID())
- ->setPathMap($path_map)
- ->setTransactions($xactions);
+ return $timeline->setPathMap($path_map);
}
private function renderAddCommentPanel(
diff --git a/src/applications/diffusion/controller/DiffusionRepositoryEditMainController.php b/src/applications/diffusion/controller/DiffusionRepositoryEditMainController.php
--- a/src/applications/diffusion/controller/DiffusionRepositoryEditMainController.php
+++ b/src/applications/diffusion/controller/DiffusionRepositoryEditMainController.php
@@ -93,27 +93,10 @@
$repository,
$this->buildActionsActions($repository));
- $xactions = id(new PhabricatorRepositoryTransactionQuery())
- ->setViewer($viewer)
- ->withObjectPHIDs(array($repository->getPHID()))
- ->execute();
-
- $engine = id(new PhabricatorMarkupEngine())
- ->setViewer($viewer);
- foreach ($xactions as $xaction) {
- if ($xaction->getComment()) {
- $engine->addObject(
- $xaction->getComment(),
- PhabricatorApplicationTransactionComment::MARKUP_FIELD_COMMENT);
- }
- }
- $engine->process();
-
- $xaction_view = id(new PhabricatorApplicationTransactionView())
- ->setUser($viewer)
- ->setObjectPHID($repository->getPHID())
- ->setTransactions($xactions)
- ->setMarkupEngine($engine);
+ $timeline = $this->buildTransactionTimeline(
+ $repository,
+ new PhabricatorRepositoryTransactionQuery());
+ $timeline->setShouldTerminate(true);
$boxes = array();
@@ -187,7 +170,7 @@
array(
$crumbs,
$boxes,
- $xaction_view,
+ $timeline,
),
array(
'title' => $title,
diff --git a/src/applications/fund/controller/FundInitiativeViewController.php b/src/applications/fund/controller/FundInitiativeViewController.php
--- a/src/applications/fund/controller/FundInitiativeViewController.php
+++ b/src/applications/fund/controller/FundInitiativeViewController.php
@@ -60,15 +60,11 @@
->setHeader($header)
->appendChild($properties);
- $xactions = id(new FundInitiativeTransactionQuery())
- ->setViewer($viewer)
- ->withObjectPHIDs(array($initiative->getPHID()))
- ->execute();
- $timeline = id(new PhabricatorApplicationTransactionView())
- ->setUser($viewer)
- ->setObjectPHID($initiative->getPHID())
- ->setTransactions($xactions)
+ $timeline = $this->buildTransactionTimeline(
+ $initiative,
+ new FundInitiativeTransactionQuery());
+ $timeline
->setShouldTerminate(true);
return $this->buildApplicationPage(
diff --git a/src/applications/harbormaster/controller/HarbormasterBuildViewController.php b/src/applications/harbormaster/controller/HarbormasterBuildViewController.php
--- a/src/applications/harbormaster/controller/HarbormasterBuildViewController.php
+++ b/src/applications/harbormaster/controller/HarbormasterBuildViewController.php
@@ -191,14 +191,10 @@
$targets[] = $this->buildLog($build, $build_target);
}
- $xactions = id(new HarbormasterBuildTransactionQuery())
- ->setViewer($viewer)
- ->withObjectPHIDs(array($build->getPHID()))
- ->execute();
- $timeline = id(new PhabricatorApplicationTransactionView())
- ->setUser($viewer)
- ->setObjectPHID($build->getPHID())
- ->setTransactions($xactions);
+ $timeline = $this->buildTransactionTimeline(
+ $build,
+ new HarbormasterBuildTransactionQuery());
+ $timeline->setShouldTerminate(true);
return $this->buildApplicationPage(
array(
diff --git a/src/applications/harbormaster/controller/HarbormasterBuildableViewController.php b/src/applications/harbormaster/controller/HarbormasterBuildableViewController.php
--- a/src/applications/harbormaster/controller/HarbormasterBuildableViewController.php
+++ b/src/applications/harbormaster/controller/HarbormasterBuildableViewController.php
@@ -46,14 +46,10 @@
$box = id(new PHUIObjectBoxView())
->setHeader($header);
- $xactions = id(new HarbormasterBuildableTransactionQuery())
- ->setViewer($viewer)
- ->withObjectPHIDs(array($buildable->getPHID()))
- ->execute();
- $timeline = id(new PhabricatorApplicationTransactionView())
- ->setUser($viewer)
- ->setObjectPHID($buildable->getPHID())
- ->setTransactions($xactions);
+ $timeline = $this->buildTransactionTimeline(
+ $buildable,
+ new HarbormasterBuildableTransactionQuery());
+ $timeline->setShouldTerminate(true);
$actions = $this->buildActionList($buildable);
$this->buildPropertyLists($box, $buildable, $actions);
diff --git a/src/applications/harbormaster/controller/HarbormasterPlanViewController.php b/src/applications/harbormaster/controller/HarbormasterPlanViewController.php
--- a/src/applications/harbormaster/controller/HarbormasterPlanViewController.php
+++ b/src/applications/harbormaster/controller/HarbormasterPlanViewController.php
@@ -22,16 +22,10 @@
return new Aphront404Response();
}
- $xactions = id(new HarbormasterBuildPlanTransactionQuery())
- ->setViewer($viewer)
- ->withObjectPHIDs(array($plan->getPHID()))
- ->execute();
-
- $xaction_view = id(new PhabricatorApplicationTransactionView())
- ->setUser($viewer)
- ->setObjectPHID($plan->getPHID())
- ->setTransactions($xactions)
- ->setShouldTerminate(true);
+ $timeline = $this->buildTransactionTimeline(
+ $plan,
+ new HarbormasterBuildPlanTransactionQuery());
+ $timeline->setShouldTerminate(true);
$title = pht('Plan %d', $id);
@@ -77,7 +71,7 @@
$crumbs,
$box,
$step_list,
- $xaction_view,
+ $timeline,
),
array(
'title' => $title,
diff --git a/src/applications/harbormaster/controller/HarbormasterStepEditController.php b/src/applications/harbormaster/controller/HarbormasterStepEditController.php
--- a/src/applications/harbormaster/controller/HarbormasterStepEditController.php
+++ b/src/applications/harbormaster/controller/HarbormasterStepEditController.php
@@ -191,16 +191,10 @@
if ($is_new) {
$xaction_view = null;
} else {
- $xactions = id(new HarbormasterBuildStepTransactionQuery())
- ->setViewer($viewer)
- ->withObjectPHIDs(array($step->getPHID()))
- ->execute();
-
- $xaction_view = id(new PhabricatorApplicationTransactionView())
- ->setUser($viewer)
- ->setObjectPHID($step->getPHID())
- ->setTransactions($xactions)
- ->setShouldTerminate(true);
+ $timeline = $this->buildTransactionTimeline(
+ $step,
+ new HarbormasterBuildStepTransactionQuery());
+ $timeline->setShouldTerminate(true);
}
return $this->buildApplicationPage(
@@ -208,7 +202,7 @@
$crumbs,
$box,
$variables,
- $xaction_view,
+ $timeline,
),
array(
'title' => $implementation->getName(),
diff --git a/src/applications/harbormaster/storage/HarbormasterBuildable.php b/src/applications/harbormaster/storage/HarbormasterBuildable.php
--- a/src/applications/harbormaster/storage/HarbormasterBuildable.php
+++ b/src/applications/harbormaster/storage/HarbormasterBuildable.php
@@ -2,6 +2,7 @@
final class HarbormasterBuildable extends HarbormasterDAO
implements
+ PhabricatorApplicationTransactionInterface,
PhabricatorPolicyInterface,
HarbormasterBuildableInterface {
@@ -226,6 +227,22 @@
}
+/* -( PhabricatorApplicationTransactionInterface )------------------------- */
+
+
+ public function getApplicationTransactionEditor() {
+ return new HarbormasterBuildableTransactionEditor();
+ }
+
+ public function getApplicationTransactionObject() {
+ return $this;
+ }
+
+ public function getApplicationTransactionTemplate() {
+ return new HarbormasterBuildableTransaction();
+ }
+
+
/* -( PhabricatorPolicyInterface )----------------------------------------- */
diff --git a/src/applications/harbormaster/storage/build/HarbormasterBuild.php b/src/applications/harbormaster/storage/build/HarbormasterBuild.php
--- a/src/applications/harbormaster/storage/build/HarbormasterBuild.php
+++ b/src/applications/harbormaster/storage/build/HarbormasterBuild.php
@@ -1,7 +1,9 @@
<?php
final class HarbormasterBuild extends HarbormasterDAO
- implements PhabricatorPolicyInterface {
+ implements
+ PhabricatorApplicationTransactionInterface,
+ PhabricatorPolicyInterface {
protected $buildablePHID;
protected $buildPlanPHID;
@@ -402,6 +404,22 @@
}
+/* -( PhabricatorApplicationTransactionInterface )------------------------- */
+
+
+ public function getApplicationTransactionEditor() {
+ return new HarbormasterBuildTransactionEditor();
+ }
+
+ public function getApplicationTransactionObject() {
+ return $this;
+ }
+
+ public function getApplicationTransactionTemplate() {
+ return new HarbormasterBuildTransaction();
+ }
+
+
/* -( PhabricatorPolicyInterface )----------------------------------------- */
diff --git a/src/applications/harbormaster/storage/configuration/HarbormasterBuildPlan.php b/src/applications/harbormaster/storage/configuration/HarbormasterBuildPlan.php
--- a/src/applications/harbormaster/storage/configuration/HarbormasterBuildPlan.php
+++ b/src/applications/harbormaster/storage/configuration/HarbormasterBuildPlan.php
@@ -2,6 +2,7 @@
final class HarbormasterBuildPlan extends HarbormasterDAO
implements
+ PhabricatorApplicationTransactionInterface,
PhabricatorPolicyInterface,
PhabricatorSubscribableInterface {
@@ -69,6 +70,22 @@
}
+/* -( PhabricatorApplicationTransactionInterface )------------------------- */
+
+
+ public function getApplicationTransactionEditor() {
+ return new HarbormasterBuildPlanEditor();
+ }
+
+ public function getApplicationTransactionObject() {
+ return $this;
+ }
+
+ public function getApplicationTransactionTemplate() {
+ return new HarbormasterBuildPlanTransaction();
+ }
+
+
/* -( PhabricatorPolicyInterface )----------------------------------------- */
diff --git a/src/applications/harbormaster/storage/configuration/HarbormasterBuildStep.php b/src/applications/harbormaster/storage/configuration/HarbormasterBuildStep.php
--- a/src/applications/harbormaster/storage/configuration/HarbormasterBuildStep.php
+++ b/src/applications/harbormaster/storage/configuration/HarbormasterBuildStep.php
@@ -2,6 +2,7 @@
final class HarbormasterBuildStep extends HarbormasterDAO
implements
+ PhabricatorApplicationTransactionInterface,
PhabricatorPolicyInterface,
PhabricatorCustomFieldInterface {
@@ -88,6 +89,22 @@
}
+/* -( PhabricatorApplicationTransactionInterface )------------------------- */
+
+
+ public function getApplicationTransactionEditor() {
+ return new HarbormasterBuildStepEditor();
+ }
+
+ public function getApplicationTransactionObject() {
+ return $this;
+ }
+
+ public function getApplicationTransactionTemplate() {
+ return new HarbormasterBuildStepTransaction();
+ }
+
+
/* -( PhabricatorPolicyInterface )----------------------------------------- */
diff --git a/src/applications/legalpad/controller/LegalpadDocumentManageController.php b/src/applications/legalpad/controller/LegalpadDocumentManageController.php
--- a/src/applications/legalpad/controller/LegalpadDocumentManageController.php
+++ b/src/applications/legalpad/controller/LegalpadDocumentManageController.php
@@ -29,11 +29,6 @@
return new Aphront404Response();
}
- $xactions = id(new LegalpadTransactionQuery())
- ->setViewer($user)
- ->withObjectPHIDs(array($document->getPHID()))
- ->execute();
-
$subscribers = PhabricatorSubscribersQuery::loadSubscribersForPHID(
$document->getPHID());
@@ -53,14 +48,10 @@
$engine->addObject(
$document_body,
LegalpadDocumentBody::MARKUP_FIELD_TEXT);
- foreach ($xactions as $xaction) {
- if ($xaction->getComment()) {
- $engine->addObject(
- $xaction->getComment(),
- PhabricatorApplicationTransactionComment::MARKUP_FIELD_COMMENT);
- }
- }
- $engine->process();
+ $timeline = $this->buildTransactionTimeline(
+ $document,
+ new LegalpadTransactionQuery(),
+ $engine);
$title = $document_body->getTitle();
@@ -74,12 +65,6 @@
$comment_form_id = celerity_generate_unique_node_id();
- $xaction_view = id(new LegalpadTransactionView())
- ->setUser($this->getRequest()->getUser())
- ->setObjectPHID($document->getPHID())
- ->setTransactions($xactions)
- ->setMarkupEngine($engine);
-
$add_comment = $this->buildAddCommentView($document, $comment_form_id);
$crumbs = $this->buildApplicationCrumbs($this->buildSideNav());
@@ -97,7 +82,7 @@
$content = array(
$crumbs,
$object_box,
- $xaction_view,
+ $timeline,
$add_comment,
);
diff --git a/src/applications/nuance/controller/NuanceSourceViewController.php b/src/applications/nuance/controller/NuanceSourceViewController.php
--- a/src/applications/nuance/controller/NuanceSourceViewController.php
+++ b/src/applications/nuance/controller/NuanceSourceViewController.php
@@ -31,19 +31,11 @@
}
$source_phid = $source->getPHID();
- $xactions = id(new NuanceSourceTransactionQuery())
- ->setViewer($viewer)
- ->withObjectPHIDs(array($source_phid))
- ->execute();
-
- $engine = id(new PhabricatorMarkupEngine())
- ->setViewer($viewer);
- $timeline = id(new PhabricatorApplicationTransactionView())
- ->setUser($viewer)
- ->setObjectPHID($source_phid)
- ->setMarkupEngine($engine)
- ->setTransactions($xactions);
+ $timeline = $this->buildTransactionTimeline(
+ $source,
+ new NuanceSourceTransactionQuery());
+ $timeline->setShouldTerminate(true);
$title = pht('%s', $source->getName());
$crumbs = $this->buildApplicationCrumbs();
diff --git a/src/applications/nuance/storage/NuanceSource.php b/src/applications/nuance/storage/NuanceSource.php
--- a/src/applications/nuance/storage/NuanceSource.php
+++ b/src/applications/nuance/storage/NuanceSource.php
@@ -1,7 +1,9 @@
<?php
final class NuanceSource extends NuanceDAO
- implements PhabricatorPolicyInterface {
+ implements
+ PhabricatorApplicationTransactionInterface,
+ PhabricatorPolicyInterface {
protected $name;
protected $type;
@@ -64,6 +66,23 @@
->setType($lucky_definition->getSourceTypeConstant());
}
+
+/* -( PhabricatorApplicationTransactionInterface )------------------------- */
+
+
+ public function getApplicationTransactionEditor() {
+ return new NuanceSourceEditor();
+ }
+
+ public function getApplicationTransactionObject() {
+ return $this;
+ }
+
+ public function getApplicationTransactionTemplate() {
+ return new NuanceSourceTransaction();
+ }
+
+
public function getCapabilities() {
return array(
PhabricatorPolicyCapability::CAN_VIEW,
diff --git a/src/applications/phortune/controller/PhortuneAccountViewController.php b/src/applications/phortune/controller/PhortuneAccountViewController.php
--- a/src/applications/phortune/controller/PhortuneAccountViewController.php
+++ b/src/applications/phortune/controller/PhortuneAccountViewController.php
@@ -72,7 +72,10 @@
$payment_methods = $this->buildPaymentMethodsSection($account);
$purchase_history = $this->buildPurchaseHistorySection($account);
$charge_history = $this->buildChargeHistorySection($account);
- $account_history = $this->buildAccountHistorySection($account);
+ $timeline = $this->buildTransactionTimeline(
+ $account,
+ new PhortuneAccountTransactionQuery());
+ $timeline->setShouldTerminate(true);
$object_box = id(new PHUIObjectBoxView())
->setHeader($header)
@@ -85,7 +88,7 @@
$payment_methods,
$purchase_history,
$charge_history,
- $account_history,
+ $timeline,
),
array(
'title' => $title,
@@ -258,23 +261,6 @@
->appendChild($table);
}
- private function buildAccountHistorySection(PhortuneAccount $account) {
- $request = $this->getRequest();
- $user = $request->getUser();
-
- $xactions = id(new PhortuneAccountTransactionQuery())
- ->setViewer($user)
- ->withObjectPHIDs(array($account->getPHID()))
- ->execute();
-
- $xaction_view = id(new PhabricatorApplicationTransactionView())
- ->setUser($user)
- ->setObjectPHID($account->getPHID())
- ->setTransactions($xactions);
-
- return $xaction_view;
- }
-
protected function buildApplicationCrumbs() {
$crumbs = parent::buildApplicationCrumbs();
diff --git a/src/applications/phortune/controller/PhortuneCartViewController.php b/src/applications/phortune/controller/PhortuneCartViewController.php
--- a/src/applications/phortune/controller/PhortuneCartViewController.php
+++ b/src/applications/phortune/controller/PhortuneCartViewController.php
@@ -161,23 +161,18 @@
$crumbs->addTextCrumb(pht('Cart %d', $cart->getID()));
$crumbs->setActionList($actions);
- $xactions = id(new PhortuneCartTransactionQuery())
- ->setViewer($viewer)
- ->withObjectPHIDs(array($cart->getPHID()))
- ->execute();
-
- $xaction_view = id(new PhabricatorApplicationTransactionView())
- ->setUser($viewer)
- ->setObjectPHID($cart->getPHID())
- ->setTransactions($xactions)
- ->setShouldTerminate(true);
+ $timeline = $this->buildTransactionTimeline(
+ $cart,
+ new PhortuneCartTransactionQuery());
+ $timeline
+ ->setShouldTerminate(true);
return $this->buildApplicationPage(
array(
$crumbs,
$cart_box,
$charges,
- $xaction_view,
+ $timeline,
),
array(
'title' => pht('Cart'),
diff --git a/src/applications/phortune/controller/PhortuneLandingController.php b/src/applications/phortune/controller/PhortuneLandingController.php
--- a/src/applications/phortune/controller/PhortuneLandingController.php
+++ b/src/applications/phortune/controller/PhortuneLandingController.php
@@ -12,7 +12,9 @@
->execute();
if (!$accounts) {
- $account = $this->createUserAccount($user);
+ $account = PhortuneAccount::createNewAccount(
+ $user,
+ PhabricatorContentSource::newFromRequest($request));
$accounts = array($account);
}
diff --git a/src/applications/phortune/controller/PhortuneMerchantViewController.php b/src/applications/phortune/controller/PhortuneMerchantViewController.php
--- a/src/applications/phortune/controller/PhortuneMerchantViewController.php
+++ b/src/applications/phortune/controller/PhortuneMerchantViewController.php
@@ -53,15 +53,10 @@
->setHeader($header)
->appendChild($properties);
- $xactions = id(new PhortuneMerchantTransactionQuery())
- ->setViewer($viewer)
- ->withObjectPHIDs(array($merchant->getPHID()))
- ->execute();
-
- $timeline = id(new PhabricatorApplicationTransactionView())
- ->setUser($viewer)
- ->setObjectPHID($merchant->getPHID())
- ->setTransactions($xactions);
+ $timeline = $this->buildTransactionTimeline(
+ $merchant,
+ new PhortuneMerchantTransactionQuery());
+ $timeline->setShouldTerminate(true);
return $this->buildApplicationPage(
array(
diff --git a/src/applications/phortune/storage/PhortuneAccount.php b/src/applications/phortune/storage/PhortuneAccount.php
--- a/src/applications/phortune/storage/PhortuneAccount.php
+++ b/src/applications/phortune/storage/PhortuneAccount.php
@@ -7,7 +7,9 @@
* a personal account).
*/
final class PhortuneAccount extends PhortuneDAO
- implements PhabricatorPolicyInterface {
+ implements
+ PhabricatorApplicationTransactionInterface,
+ PhabricatorPolicyInterface {
protected $name;
@@ -95,6 +97,22 @@
}
+/* -( PhabricatorApplicationTransactionInterface )------------------------- */
+
+
+ public function getApplicationTransactionEditor() {
+ return new PhortuneAccountEditor();
+ }
+
+ public function getApplicationTransactionObject() {
+ return $this;
+ }
+
+ public function getApplicationTransactionTemplate() {
+ return new PhortuneAccountTransaction();
+ }
+
+
/* -( PhabricatorPolicyInterface )----------------------------------------- */
diff --git a/src/applications/phortune/storage/PhortuneCart.php b/src/applications/phortune/storage/PhortuneCart.php
--- a/src/applications/phortune/storage/PhortuneCart.php
+++ b/src/applications/phortune/storage/PhortuneCart.php
@@ -1,7 +1,9 @@
<?php
final class PhortuneCart extends PhortuneDAO
- implements PhabricatorPolicyInterface {
+ implements
+ PhabricatorApplicationTransactionInterface,
+ PhabricatorPolicyInterface {
const STATUS_BUILDING = 'cart:building';
const STATUS_READY = 'cart:ready';
@@ -597,6 +599,22 @@
}
+/* -( PhabricatorApplicationTransactionInterface )------------------------- */
+
+
+ public function getApplicationTransactionEditor() {
+ return new PhortuneCartEditor();
+ }
+
+ public function getApplicationTransactionObject() {
+ return $this;
+ }
+
+ public function getApplicationTransactionTemplate() {
+ return new PhortuneCartTransaction();
+ }
+
+
/* -( PhabricatorPolicyInterface )----------------------------------------- */
diff --git a/src/applications/phortune/storage/PhortuneMerchant.php b/src/applications/phortune/storage/PhortuneMerchant.php
--- a/src/applications/phortune/storage/PhortuneMerchant.php
+++ b/src/applications/phortune/storage/PhortuneMerchant.php
@@ -1,7 +1,9 @@
<?php
final class PhortuneMerchant extends PhortuneDAO
- implements PhabricatorPolicyInterface {
+ implements
+ PhabricatorApplicationTransactionInterface,
+ PhabricatorPolicyInterface {
protected $name;
protected $viewPolicy;
@@ -40,6 +42,22 @@
}
+/* -( PhabricatorApplicationTransactionInterface )------------------------- */
+
+
+ public function getApplicationTransactionEditor() {
+ return new PhortuneMerchantEditor();
+ }
+
+ public function getApplicationTransactionObject() {
+ return $this;
+ }
+
+ public function getApplicationTransactionTemplate() {
+ return new PhortuneMerchantTransaction();
+ }
+
+
/* -( PhabricatorPolicyInterface )----------------------------------------- */
diff --git a/src/applications/ponder/controller/PonderAnswerCommentController.php b/src/applications/ponder/controller/PonderAnswerCommentController.php
--- a/src/applications/ponder/controller/PonderAnswerCommentController.php
+++ b/src/applications/ponder/controller/PonderAnswerCommentController.php
@@ -29,7 +29,7 @@
$qid = $answer->getQuestion()->getID();
$aid = $answer->getID();
- $view_uri = "Q{$qid}#A{$aid}";
+ $view_uri = "/Q{$qid}#A{$aid}";
$xactions = array();
$xactions[] = id(new PonderAnswerTransaction())
diff --git a/src/applications/ponder/controller/PonderAnswerHistoryController.php b/src/applications/ponder/controller/PonderAnswerHistoryController.php
--- a/src/applications/ponder/controller/PonderAnswerHistoryController.php
+++ b/src/applications/ponder/controller/PonderAnswerHistoryController.php
@@ -20,27 +20,11 @@
return new Aphront404Response();
}
- $xactions = id(new PonderAnswerTransactionQuery())
- ->setViewer($viewer)
- ->withObjectPHIDs(array($answer->getPHID()))
- ->execute();
-
- $engine = id(new PhabricatorMarkupEngine())
- ->setViewer($viewer);
- foreach ($xactions as $xaction) {
- if ($xaction->getComment()) {
- $engine->addObject(
- $xaction->getComment(),
- PhabricatorApplicationTransactionComment::MARKUP_FIELD_COMMENT);
- }
- }
- $engine->process();
- $timeline = id(new PhabricatorApplicationTransactionView())
- ->setUser($viewer)
- ->setObjectPHID($answer->getPHID())
- ->setTransactions($xactions)
- ->setMarkupEngine($engine);
+ $timeline = $this->buildTransactionTimeline(
+ $answer,
+ new PonderAnswerTransactionQuery());
+ $timeline->setShouldTerminate(true);
$qid = $answer->getQuestion()->getID();
$aid = $answer->getID();
diff --git a/src/applications/ponder/controller/PonderQuestionHistoryController.php b/src/applications/ponder/controller/PonderQuestionHistoryController.php
--- a/src/applications/ponder/controller/PonderQuestionHistoryController.php
+++ b/src/applications/ponder/controller/PonderQuestionHistoryController.php
@@ -20,27 +20,10 @@
return new Aphront404Response();
}
- $xactions = id(new PonderQuestionTransactionQuery())
- ->setViewer($viewer)
- ->withObjectPHIDs(array($question->getPHID()))
- ->execute();
-
- $engine = id(new PhabricatorMarkupEngine())
- ->setViewer($viewer);
- foreach ($xactions as $xaction) {
- if ($xaction->getComment()) {
- $engine->addObject(
- $xaction->getComment(),
- PhabricatorApplicationTransactionComment::MARKUP_FIELD_COMMENT);
- }
- }
- $engine->process();
-
- $timeline = id(new PhabricatorApplicationTransactionView())
- ->setUser($viewer)
- ->setObjectPHID($question->getPHID())
- ->setTransactions($xactions)
- ->setMarkupEngine($engine);
+ $timeline = $this->buildTransactionTimeline(
+ $question,
+ new PonderQuestionTransactionQuery());
+ $timeline->setShouldTerminate(true);
$qid = $question->getID();
diff --git a/src/applications/ponder/controller/PonderQuestionViewController.php b/src/applications/ponder/controller/PonderQuestionViewController.php
--- a/src/applications/ponder/controller/PonderQuestionViewController.php
+++ b/src/applications/ponder/controller/PonderQuestionViewController.php
@@ -178,31 +178,14 @@
}
private function buildQuestionTransactions(PonderQuestion $question) {
- $viewer = $this->getRequest()->getUser();
+ $viewer = $this->getViewer();
$id = $question->getID();
- $xactions = id(new PonderQuestionTransactionQuery())
- ->setViewer($viewer)
- ->withTransactionTypes(array(PhabricatorTransactions::TYPE_COMMENT))
- ->withObjectPHIDs(array($question->getPHID()))
- ->execute();
-
- $engine = id(new PhabricatorMarkupEngine())
- ->setViewer($viewer);
- foreach ($xactions as $xaction) {
- if ($xaction->getComment()) {
- $engine->addObject(
- $xaction->getComment(),
- PhabricatorApplicationTransactionComment::MARKUP_FIELD_COMMENT);
- }
- }
- $engine->process();
-
- $timeline = id(new PhabricatorApplicationTransactionView())
- ->setUser($viewer)
- ->setObjectPHID($question->getPHID())
- ->setTransactions($xactions)
- ->setMarkupEngine($engine);
+ $timeline = $this->buildTransactionTimeline(
+ $question,
+ id(new PonderQuestionTransactionQuery())
+ ->withTransactionTypes(array(PhabricatorTransactions::TYPE_COMMENT)));
+ $xactions = $timeline->getTransactions();
$add_comment = id(new PhabricatorApplicationTransactionCommentView())
->setUser($viewer)
@@ -220,6 +203,13 @@
));
}
+ /**
+ * This is fairly non-standard; building N timelines at once (N = number of
+ * answers) is tricky business.
+ *
+ * TODO - re-factor this to ajax in one answer panel at a time in a more
+ * standard fashion. This is necessary to scale this application.
+ */
private function buildAnswers(array $answers) {
$request = $this->getRequest();
$viewer = $request->getUser();
diff --git a/src/applications/ponder/storage/PonderAnswer.php b/src/applications/ponder/storage/PonderAnswer.php
--- a/src/applications/ponder/storage/PonderAnswer.php
+++ b/src/applications/ponder/storage/PonderAnswer.php
@@ -2,6 +2,7 @@
final class PonderAnswer extends PonderDAO
implements
+ PhabricatorApplicationTransactionInterface,
PhabricatorMarkupInterface,
PonderVotableInterface,
PhabricatorPolicyInterface,
@@ -112,6 +113,23 @@
return self::MARKUP_FIELD_CONTENT;
}
+
+/* -( PhabricatorApplicationTransactionInterface )------------------------- */
+
+
+ public function getApplicationTransactionEditor() {
+ return new PonderAnswerEditor();
+ }
+
+ public function getApplicationTransactionObject() {
+ return $this;
+ }
+
+ public function getApplicationTransactionTemplate() {
+ return new PonderAnswerTransaction();
+ }
+
+
// Markup interface
public function getMarkupFieldKey($field) {
diff --git a/src/applications/ponder/storage/PonderQuestion.php b/src/applications/ponder/storage/PonderQuestion.php
--- a/src/applications/ponder/storage/PonderQuestion.php
+++ b/src/applications/ponder/storage/PonderQuestion.php
@@ -2,6 +2,7 @@
final class PonderQuestion extends PonderDAO
implements
+ PhabricatorApplicationTransactionInterface,
PhabricatorMarkupInterface,
PonderVotableInterface,
PhabricatorSubscribableInterface,
@@ -144,6 +145,23 @@
return self::MARKUP_FIELD_CONTENT;
}
+
+/* -( PhabricatorApplicationTransactionInterface )------------------------- */
+
+
+ public function getApplicationTransactionEditor() {
+ return new PonderQuestionEditor();
+ }
+
+ public function getApplicationTransactionObject() {
+ return $this;
+ }
+
+ public function getApplicationTransactionTemplate() {
+ return new PonderQuestionTransaction();
+ }
+
+
// Markup interface
public function getMarkupFieldKey($field) {
diff --git a/src/applications/releeph/controller/branch/ReleephBranchHistoryController.php b/src/applications/releeph/controller/branch/ReleephBranchHistoryController.php
--- a/src/applications/releeph/controller/branch/ReleephBranchHistoryController.php
+++ b/src/applications/releeph/controller/branch/ReleephBranchHistoryController.php
@@ -25,15 +25,10 @@
}
$this->setBranch($branch);
- $xactions = id(new ReleephBranchTransactionQuery())
- ->setViewer($viewer)
- ->withObjectPHIDs(array($branch->getPHID()))
- ->execute();
-
- $timeline = id(new PhabricatorApplicationTransactionView())
- ->setUser($viewer)
- ->setObjectPHID($branch->getPHID())
- ->setTransactions($xactions)
+ $timeline = $this->buildTransactionTimeline(
+ $branch,
+ new ReleephBranchTransactionQuery());
+ $timeline
->setShouldTerminate(true);
$crumbs = $this->buildApplicationCrumbs();
diff --git a/src/applications/releeph/controller/product/ReleephProductEditController.php b/src/applications/releeph/controller/product/ReleephProductEditController.php
--- a/src/applications/releeph/controller/product/ReleephProductEditController.php
+++ b/src/applications/releeph/controller/product/ReleephProductEditController.php
@@ -85,6 +85,7 @@
}
$product
+ ->setName($product_name)
->setTrunkBranch($trunk_branch)
->setDetail('pushers', $pusher_phids)
->setDetail('pick_failure_instructions', $pick_failure_instructions)
diff --git a/src/applications/releeph/controller/product/ReleephProductHistoryController.php b/src/applications/releeph/controller/product/ReleephProductHistoryController.php
--- a/src/applications/releeph/controller/product/ReleephProductHistoryController.php
+++ b/src/applications/releeph/controller/product/ReleephProductHistoryController.php
@@ -25,16 +25,10 @@
}
$this->setProduct($product);
- $xactions = id(new ReleephProductTransactionQuery())
- ->setViewer($viewer)
- ->withObjectPHIDs(array($product->getPHID()))
- ->execute();
-
- $timeline = id(new PhabricatorApplicationTransactionView())
- ->setUser($viewer)
- ->setObjectPHID($product->getPHID())
- ->setTransactions($xactions)
- ->setShouldTerminate(true);
+ $timeline = $this->buildTransactionTimeline(
+ $product,
+ new ReleephProductTransactionQuery());
+ $timeline->setShouldTerminate(true);
$crumbs = $this->buildApplicationCrumbs();
$crumbs->addTextCrumb(pht('History'));
diff --git a/src/applications/releeph/controller/request/ReleephRequestViewController.php b/src/applications/releeph/controller/request/ReleephRequestViewController.php
--- a/src/applications/releeph/controller/request/ReleephRequestViewController.php
+++ b/src/applications/releeph/controller/request/ReleephRequestViewController.php
@@ -56,15 +56,9 @@
->setCustomFields($field_list)
->setPullRequest($pull);
- $xactions = id(new ReleephRequestTransactionQuery())
- ->setViewer($viewer)
- ->withObjectPHIDs(array($pull->getPHID()))
- ->execute();
-
- $timeline = id(new PhabricatorApplicationTransactionView())
- ->setUser($request->getUser())
- ->setObjectPHID($pull->getPHID())
- ->setTransactions($xactions);
+ $timeline = $this->buildTransactionTimeline(
+ $pull,
+ new ReleephRequestTransactionQuery());
$add_comment_header = pht('Plea or Yield');
diff --git a/src/applications/releeph/storage/ReleephBranch.php b/src/applications/releeph/storage/ReleephBranch.php
--- a/src/applications/releeph/storage/ReleephBranch.php
+++ b/src/applications/releeph/storage/ReleephBranch.php
@@ -1,7 +1,9 @@
<?php
final class ReleephBranch extends ReleephDAO
- implements PhabricatorPolicyInterface {
+ implements
+ PhabricatorApplicationTransactionInterface,
+ PhabricatorPolicyInterface {
protected $releephProjectID;
protected $isActive;
@@ -149,6 +151,22 @@
}
+/* -( PhabricatorApplicationTransactionInterface )------------------------- */
+
+
+ public function getApplicationTransactionEditor() {
+ return new ReleephBranchEditor();
+ }
+
+ public function getApplicationTransactionObject() {
+ return $this;
+ }
+
+ public function getApplicationTransactionTemplate() {
+ return new ReleephBranchTransaction();
+ }
+
+
/* -( PhabricatorPolicyInterface )----------------------------------------- */
diff --git a/src/applications/releeph/storage/ReleephProject.php b/src/applications/releeph/storage/ReleephProject.php
--- a/src/applications/releeph/storage/ReleephProject.php
+++ b/src/applications/releeph/storage/ReleephProject.php
@@ -1,7 +1,9 @@
<?php
final class ReleephProject extends ReleephDAO
- implements PhabricatorPolicyInterface {
+ implements
+ PhabricatorApplicationTransactionInterface,
+ PhabricatorPolicyInterface {
const DEFAULT_BRANCH_NAMESPACE = 'releeph-releases';
const SYSTEM_AGENT_USERNAME_PREFIX = 'releeph-agent-';
@@ -121,8 +123,26 @@
return false;
}
+
+/* -( PhabricatorApplicationTransactionInterface )------------------------- */
+
+
+ public function getApplicationTransactionEditor() {
+ return new ReleephProductEditor();
+ }
+
+ public function getApplicationTransactionObject() {
+ return $this;
+ }
+
+ public function getApplicationTransactionTemplate() {
+ return new ReleephProductTransaction();
+ }
+
+
/* -( PhabricatorPolicyInterface )----------------------------------------- */
+
public function getCapabilities() {
return array(
PhabricatorPolicyCapability::CAN_VIEW,
diff --git a/src/applications/releeph/storage/ReleephRequest.php b/src/applications/releeph/storage/ReleephRequest.php
--- a/src/applications/releeph/storage/ReleephRequest.php
+++ b/src/applications/releeph/storage/ReleephRequest.php
@@ -2,6 +2,7 @@
final class ReleephRequest extends ReleephDAO
implements
+ PhabricatorApplicationTransactionInterface,
PhabricatorPolicyInterface,
PhabricatorCustomFieldInterface {
@@ -296,6 +297,22 @@
}
+/* -( PhabricatorApplicationTransactionInterface )------------------------- */
+
+
+ public function getApplicationTransactionEditor() {
+ return new ReleephRequestTransactionalEditor();
+ }
+
+ public function getApplicationTransactionObject() {
+ return $this;
+ }
+
+ public function getApplicationTransactionTemplate() {
+ return new ReleephRequestTransaction();
+ }
+
+
/* -( PhabricatorPolicyInterface )----------------------------------------- */
diff --git a/src/applications/repository/storage/PhabricatorRepository.php b/src/applications/repository/storage/PhabricatorRepository.php
--- a/src/applications/repository/storage/PhabricatorRepository.php
+++ b/src/applications/repository/storage/PhabricatorRepository.php
@@ -6,6 +6,7 @@
*/
final class PhabricatorRepository extends PhabricatorRepositoryDAO
implements
+ PhabricatorApplicationTransactionInterface,
PhabricatorPolicyInterface,
PhabricatorFlaggableInterface,
PhabricatorMarkupInterface,
@@ -1512,6 +1513,22 @@
}
+/* -( PhabricatorApplicationTransactionInterface )------------------------- */
+
+
+ public function getApplicationTransactionEditor() {
+ return new PhabricatorRepositoryEditor();
+ }
+
+ public function getApplicationTransactionObject() {
+ return $this;
+ }
+
+ public function getApplicationTransactionTemplate() {
+ return new PhabricatorRepositoryTransaction();
+ }
+
+
/* -( PhabricatorPolicyInterface )----------------------------------------- */

File Metadata

Mime Type
text/plain
Expires
Mon, Mar 10, 10:12 PM (2 w, 21 h ago)
Storage Engine
blob
Storage Format
Encrypted (AES-256-CBC)
Storage Handle
7226073
Default Alt Text
D10925.diff (43 KB)

Event Timeline