Page MenuHomePhabricator

D11445.id27510.diff
No OneTemporary

D11445.id27510.diff

diff --git a/src/applications/daemon/controller/PhabricatorDaemonConsoleController.php b/src/applications/daemon/controller/PhabricatorDaemonConsoleController.php
--- a/src/applications/daemon/controller/PhabricatorDaemonConsoleController.php
+++ b/src/applications/daemon/controller/PhabricatorDaemonConsoleController.php
@@ -3,9 +3,8 @@
final class PhabricatorDaemonConsoleController
extends PhabricatorDaemonController {
- public function processRequest() {
- $request = $this->getRequest();
- $user = $request->getUser();
+ public function handleRequest(AphrontRequest $request) {
+ $viewer = $this->getViewer();
$window_start = (time() - (60 * 15));
@@ -71,7 +70,7 @@
}
$logs = id(new PhabricatorDaemonLogQuery())
- ->setViewer($user)
+ ->setViewer($viewer)
->withStatus(PhabricatorDaemonLogQuery::STATUS_ALIVE)
->setAllowStatusWrites(true)
->execute();
@@ -123,7 +122,7 @@
$completed_panel->appendChild($completed_table);
$daemon_table = new PhabricatorDaemonLogListView();
- $daemon_table->setUser($user);
+ $daemon_table->setUser($viewer);
$daemon_table->setDaemonLogs($logs);
$daemon_panel = new PHUIObjectBoxView();
@@ -190,6 +189,7 @@
->setNoDataString(pht('Task queue is empty.')));
$triggers = id(new PhabricatorWorkerTriggerQuery())
+ ->setViewer($viewer)
->setOrder(PhabricatorWorkerTriggerQuery::ORDER_EXECUTION)
->needEvents(true)
->setLimit(10)
diff --git a/src/infrastructure/daemon/workers/PhabricatorTriggerDaemon.php b/src/infrastructure/daemon/workers/PhabricatorTriggerDaemon.php
--- a/src/infrastructure/daemon/workers/PhabricatorTriggerDaemon.php
+++ b/src/infrastructure/daemon/workers/PhabricatorTriggerDaemon.php
@@ -102,6 +102,7 @@
$limit = 100;
$query = id(new PhabricatorWorkerTriggerQuery())
+ ->setViewer($this->getViewer())
->withVersionBetween($cursor, null)
->setOrder(PhabricatorWorkerTriggerQuery::ORDER_VERSION)
->needEvents(true)
@@ -183,6 +184,7 @@
$now = PhabricatorTime::getNow();
$triggers = id(new PhabricatorWorkerTriggerQuery())
+ ->setViewer($this->getViewer())
->setOrder(PhabricatorWorkerTriggerQuery::ORDER_EXECUTION)
->withNextEventBetween(null, $now)
->needEvents(true)
@@ -249,6 +251,7 @@
$sleep = 60;
$next_triggers = id(new PhabricatorWorkerTriggerQuery())
+ ->setViewer($this->getViewer())
->setOrder(PhabricatorWorkerTriggerQuery::ORDER_EXECUTION)
->setLimit(1)
->needEvents(true)
diff --git a/src/infrastructure/daemon/workers/management/PhabricatorWorkerTriggerManagementWorkflow.php b/src/infrastructure/daemon/workers/management/PhabricatorWorkerTriggerManagementWorkflow.php
--- a/src/infrastructure/daemon/workers/management/PhabricatorWorkerTriggerManagementWorkflow.php
+++ b/src/infrastructure/daemon/workers/management/PhabricatorWorkerTriggerManagementWorkflow.php
@@ -22,6 +22,7 @@
}
$triggers = id(new PhabricatorWorkerTriggerQuery())
+ ->setViewer($this->getViewer())
->withIDs($ids)
->needEvents(true)
->execute();
diff --git a/src/infrastructure/daemon/workers/phid/PhabricatorWorkerTriggerPHIDType.php b/src/infrastructure/daemon/workers/phid/PhabricatorWorkerTriggerPHIDType.php
--- a/src/infrastructure/daemon/workers/phid/PhabricatorWorkerTriggerPHIDType.php
+++ b/src/infrastructure/daemon/workers/phid/PhabricatorWorkerTriggerPHIDType.php
@@ -9,19 +9,15 @@
}
public function newObject() {
- return new PhabricatorWorkerTriggerPHIDType();
+ return new PhabricatorWorkerTrigger();
}
protected function buildQueryForObjects(
PhabricatorObjectQuery $query,
array $phids) {
- // TODO: Maybe straighten this out eventually, but these aren't policy
- // objects and don't have an applicable query which we can return here.
- // Since we should never call this normally, just leave it stubbed for
- // now.
-
- throw new PhutilMethodNotImplementedException();
+ return id(new PhabricatorWorkerTriggerQuery())
+ ->withPHIDs($phids);
}
public function loadHandles(
diff --git a/src/infrastructure/daemon/workers/query/PhabricatorWorkerTriggerQuery.php b/src/infrastructure/daemon/workers/query/PhabricatorWorkerTriggerQuery.php
--- a/src/infrastructure/daemon/workers/query/PhabricatorWorkerTriggerQuery.php
+++ b/src/infrastructure/daemon/workers/query/PhabricatorWorkerTriggerQuery.php
@@ -1,7 +1,11 @@
<?php
final class PhabricatorWorkerTriggerQuery
- extends PhabricatorOffsetPagedQuery {
+ extends PhabricatorPolicyAwareQuery {
+
+ // NOTE: This is a PolicyAware query so it can work with other infrastructure
+ // like handles; triggers themselves are low-level and do not have
+ // meaninguful policies.
const ORDER_ID = 'id';
const ORDER_EXECUTION = 'execution';
@@ -17,6 +21,10 @@
private $needEvents;
private $order = self::ORDER_ID;
+ public function getQueryApplicationClass() {
+ return null;
+ }
+
public function withIDs(array $ids) {
$this->ids = $ids;
return $this;
@@ -59,7 +67,13 @@
return $this;
}
- public function execute() {
+ public function nextPage(array $page) {
+ // NOTE: We don't implement paging because we don't currently ever need
+ // it and paging ORDER_EXCUTION is a hassle.
+ throw new PhutilMethodNotImplementedException();
+ }
+
+ public function loadPage() {
$task_table = new PhabricatorWorkerTrigger();
$conn_r = $task_table->establishConnection('r');
diff --git a/src/infrastructure/daemon/workers/storage/PhabricatorWorkerTrigger.php b/src/infrastructure/daemon/workers/storage/PhabricatorWorkerTrigger.php
--- a/src/infrastructure/daemon/workers/storage/PhabricatorWorkerTrigger.php
+++ b/src/infrastructure/daemon/workers/storage/PhabricatorWorkerTrigger.php
@@ -3,7 +3,8 @@
final class PhabricatorWorkerTrigger
extends PhabricatorWorkerDAO
implements
- PhabricatorDestructibleInterface {
+ PhabricatorDestructibleInterface,
+ PhabricatorPolicyInterface {
protected $triggerVersion;
protected $clockClass;
@@ -143,7 +144,7 @@
// gymnastics, so don't bother trying to get it totally correct for now.
if ($this->getEvent()) {
- return $this->getEvent()->getNextEpoch();
+ return $this->getEvent()->getNextEventEpoch();
} else {
return $this->getNextEventEpoch(null, $is_reschedule = false);
}
@@ -167,4 +168,30 @@
$this->saveTransaction();
}
+
+/* -( PhabricatorPolicyInterface )----------------------------------------- */
+
+
+ // NOTE: Triggers are low-level infrastructure and do not have real
+ // policies, but implementing the policy interface allows us to use
+ // infrastructure like handles.
+
+ public function getCapabilities() {
+ return array(
+ PhabricatorPolicyCapability::CAN_VIEW,
+ );
+ }
+
+ public function getPolicy($capability) {
+ return PhabricatorPolicies::getMostOpenPolicy();
+ }
+
+ public function hasAutomaticCapability($capability, PhabricatorUser $viewer) {
+ return true;
+ }
+
+ public function describeAutomaticCapability($capability) {
+ return null;
+ }
+
}

File Metadata

Mime Type
text/plain
Expires
Thu, May 9, 1:47 PM (3 w, 2 d ago)
Storage Engine
blob
Storage Format
Encrypted (AES-256-CBC)
Storage Handle
6274926
Default Alt Text
D11445.id27510.diff (7 KB)

Event Timeline