Page Menu
Home
Phabricator
Search
Configure Global Search
Log In
Files
F15378230
D10925.diff
No One
Temporary
Actions
View File
Edit File
Delete File
View Transforms
Subscribe
Mute Notifications
Award Token
Flag For Later
Size
43 KB
Referenced Files
None
Subscribers
None
D10925.diff
View Options
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
Details
Attached
Mime Type
text/plain
Expires
Fri, Mar 14, 1:29 PM (1 w, 4 d ago)
Storage Engine
blob
Storage Format
Encrypted (AES-256-CBC)
Storage Handle
7226073
Default Alt Text
D10925.diff (43 KB)
Attached To
Mode
D10925: Transactions - deploy buildTransactionTimeline to remaining applications
Attached
Detach File
Event Timeline
Log In to Comment