Page Menu
Home
Phabricator
Search
Configure Global Search
Log In
Files
F15355164
D11445.id27507.diff
No One
Temporary
Actions
View File
Edit File
Delete File
View Transforms
Subscribe
Mute Notifications
Award Token
Flag For Later
Size
6 KB
Referenced Files
None
Subscribers
None
D11445.id27507.diff
View Options
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)
@@ -249,6 +250,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;
@@ -167,4 +168,29 @@
$this->saveTransaction();
}
+
+/* -( PhabricatorPolicyInterface )----------------------------------------- */
+
+
+ public function getCapabilities() {
+ return array(
+ PhabricatorPolicyCapability::CAN_VIEW,
+ );
+ }
+
+ public function getPolicy($capability) {
+ return PhabricatorPolicies::getMostOpenPolicy();
+ }
+
+ public function hasAutomaticCapability($capability, PhabricatorUser $viewer) {
+ // NOTE: Triggers are low-level infrastructure and do not have real
+ // policies, but implementing the policy interface allows us to use
+ // infrastructure like handles.
+ return true;
+ }
+
+ public function describeAutomaticCapability($capability) {
+ return null;
+ }
+
}
File Metadata
Details
Attached
Mime Type
text/plain
Expires
Wed, Mar 12, 5:46 AM (2 h, 52 m)
Storage Engine
blob
Storage Format
Encrypted (AES-256-CBC)
Storage Handle
7225627
Default Alt Text
D11445.id27507.diff (6 KB)
Attached To
Mode
D11445: Implement PolicyAwareQuery for triggers
Attached
Detach File
Event Timeline
Log In to Comment