1
0
Fork 0
mirror of https://we.phorge.it/source/phorge.git synced 2024-11-26 16:52:41 +01:00

Add pagers to server clients and client authorizations in OAuth Server GUI

Summary: ...also make the pager usage in ChatLog use the nice formatWhereClause functionality

Test Plan: set $page_size = 2 and paged around the data a bit

Reviewers: epriestley

Reviewed By: epriestley

CC: aran

Maniphest Tasks: T905

Differential Revision: https://secure.phabricator.com/D2106
This commit is contained in:
Bob Trahan 2012-04-04 17:51:16 -07:00
parent 05b4c90bfd
commit 09172a1937
10 changed files with 192 additions and 23 deletions

View file

@ -677,6 +677,7 @@ phutil_register_library_map(array(
'PhabricatorOAuthClientAuthorizationDeleteController' => 'applications/oauthserver/controller/clientauthorization/delete', 'PhabricatorOAuthClientAuthorizationDeleteController' => 'applications/oauthserver/controller/clientauthorization/delete',
'PhabricatorOAuthClientAuthorizationEditController' => 'applications/oauthserver/controller/clientauthorization/edit', 'PhabricatorOAuthClientAuthorizationEditController' => 'applications/oauthserver/controller/clientauthorization/edit',
'PhabricatorOAuthClientAuthorizationListController' => 'applications/oauthserver/controller/clientauthorization/list', 'PhabricatorOAuthClientAuthorizationListController' => 'applications/oauthserver/controller/clientauthorization/list',
'PhabricatorOAuthClientAuthorizationQuery' => 'applications/oauthserver/query/clientauthorization',
'PhabricatorOAuthClientBaseController' => 'applications/oauthserver/controller/client/base', 'PhabricatorOAuthClientBaseController' => 'applications/oauthserver/controller/client/base',
'PhabricatorOAuthClientDeleteController' => 'applications/oauthserver/controller/client/delete', 'PhabricatorOAuthClientDeleteController' => 'applications/oauthserver/controller/client/delete',
'PhabricatorOAuthClientEditController' => 'applications/oauthserver/controller/client/edit', 'PhabricatorOAuthClientEditController' => 'applications/oauthserver/controller/client/edit',
@ -698,6 +699,7 @@ phutil_register_library_map(array(
'PhabricatorOAuthServerAuthController' => 'applications/oauthserver/controller/auth', 'PhabricatorOAuthServerAuthController' => 'applications/oauthserver/controller/auth',
'PhabricatorOAuthServerAuthorizationCode' => 'applications/oauthserver/storage/authorizationcode', 'PhabricatorOAuthServerAuthorizationCode' => 'applications/oauthserver/storage/authorizationcode',
'PhabricatorOAuthServerClient' => 'applications/oauthserver/storage/client', 'PhabricatorOAuthServerClient' => 'applications/oauthserver/storage/client',
'PhabricatorOAuthServerClientQuery' => 'applications/oauthserver/query/client',
'PhabricatorOAuthServerController' => 'applications/oauthserver/controller/base', 'PhabricatorOAuthServerController' => 'applications/oauthserver/controller/base',
'PhabricatorOAuthServerDAO' => 'applications/oauthserver/storage/base', 'PhabricatorOAuthServerDAO' => 'applications/oauthserver/storage/base',
'PhabricatorOAuthServerScope' => 'applications/oauthserver/scope', 'PhabricatorOAuthServerScope' => 'applications/oauthserver/scope',
@ -1510,6 +1512,7 @@ phutil_register_library_map(array(
'PhabricatorOAuthClientAuthorizationDeleteController' => 'PhabricatorOAuthClientAuthorizationBaseController', 'PhabricatorOAuthClientAuthorizationDeleteController' => 'PhabricatorOAuthClientAuthorizationBaseController',
'PhabricatorOAuthClientAuthorizationEditController' => 'PhabricatorOAuthClientAuthorizationBaseController', 'PhabricatorOAuthClientAuthorizationEditController' => 'PhabricatorOAuthClientAuthorizationBaseController',
'PhabricatorOAuthClientAuthorizationListController' => 'PhabricatorOAuthClientAuthorizationBaseController', 'PhabricatorOAuthClientAuthorizationListController' => 'PhabricatorOAuthClientAuthorizationBaseController',
'PhabricatorOAuthClientAuthorizationQuery' => 'PhabricatorOffsetPagedQuery',
'PhabricatorOAuthClientBaseController' => 'PhabricatorOAuthServerController', 'PhabricatorOAuthClientBaseController' => 'PhabricatorOAuthServerController',
'PhabricatorOAuthClientDeleteController' => 'PhabricatorOAuthClientBaseController', 'PhabricatorOAuthClientDeleteController' => 'PhabricatorOAuthClientBaseController',
'PhabricatorOAuthClientEditController' => 'PhabricatorOAuthClientBaseController', 'PhabricatorOAuthClientEditController' => 'PhabricatorOAuthClientBaseController',
@ -1529,6 +1532,7 @@ phutil_register_library_map(array(
'PhabricatorOAuthServerAuthController' => 'PhabricatorAuthController', 'PhabricatorOAuthServerAuthController' => 'PhabricatorAuthController',
'PhabricatorOAuthServerAuthorizationCode' => 'PhabricatorOAuthServerDAO', 'PhabricatorOAuthServerAuthorizationCode' => 'PhabricatorOAuthServerDAO',
'PhabricatorOAuthServerClient' => 'PhabricatorOAuthServerDAO', 'PhabricatorOAuthServerClient' => 'PhabricatorOAuthServerDAO',
'PhabricatorOAuthServerClientQuery' => 'PhabricatorOffsetPagedQuery',
'PhabricatorOAuthServerController' => 'PhabricatorController', 'PhabricatorOAuthServerController' => 'PhabricatorController',
'PhabricatorOAuthServerDAO' => 'PhabricatorLiskDAO', 'PhabricatorOAuthServerDAO' => 'PhabricatorLiskDAO',
'PhabricatorOAuthServerTestCase' => 'PhabricatorTestCase', 'PhabricatorOAuthServerTestCase' => 'PhabricatorTestCase',

View file

@ -53,12 +53,6 @@ final class PhabricatorChatLogQuery extends PhabricatorOffsetPagedQuery {
$this->channels); $this->channels);
} }
if ($where) { return $this->formatWhereClause($where);
$where = 'WHERE ('.implode(') AND (', $where).')';
} else {
$where = '';
}
return $where;
} }
} }

View file

@ -30,9 +30,17 @@ extends PhabricatorOAuthClientBaseController {
$title = 'OAuth Clients'; $title = 'OAuth Clients';
$request = $this->getRequest(); $request = $this->getRequest();
$current_user = $request->getUser(); $current_user = $request->getUser();
$clients = id(new PhabricatorOAuthServerClient()) $offset = $request->getInt('offset', 0);
->loadAllWhere('creatorPHID = %s', $page_size = 100;
$current_user->getPHID()); $pager = new AphrontPagerView();
$request_uri = $request->getRequestURI();
$pager->setURI($request_uri, 'offset');
$pager->setPageSize($page_size);
$pager->setOffset($offset);
$query = new PhabricatorOAuthServerClientQuery();
$query->withCreatorPHIDs(array($current_user->getPHID()));
$clients = $query->executeWithPager($pager);
$rows = array(); $rows = array();
$rowc = array(); $rowc = array();
@ -76,8 +84,10 @@ extends PhabricatorOAuthClientBaseController {
$panel = $this->buildClientList($rows, $rowc, $title); $panel = $this->buildClientList($rows, $rowc, $title);
return $this->buildStandardPageResponse( return $this->buildStandardPageResponse(
array($this->getNoticeView(), array(
$panel), $this->getNoticeView(),
$panel->appendChild($pager)
),
array('title' => $title) array('title' => $title)
); );
} }

View file

@ -7,13 +7,13 @@
phutil_require_module('phabricator', 'applications/oauthserver/controller/client/base'); phutil_require_module('phabricator', 'applications/oauthserver/controller/client/base');
phutil_require_module('phabricator', 'applications/oauthserver/storage/client'); phutil_require_module('phabricator', 'applications/oauthserver/query/client');
phutil_require_module('phabricator', 'view/control/pager');
phutil_require_module('phabricator', 'view/control/table'); phutil_require_module('phabricator', 'view/control/table');
phutil_require_module('phabricator', 'view/form/error'); phutil_require_module('phabricator', 'view/form/error');
phutil_require_module('phabricator', 'view/layout/panel'); phutil_require_module('phabricator', 'view/layout/panel');
phutil_require_module('phutil', 'markup'); phutil_require_module('phutil', 'markup');
phutil_require_module('phutil', 'utils');
phutil_require_source('PhabricatorOAuthClientListController.php'); phutil_require_source('PhabricatorOAuthClientListController.php');

View file

@ -30,9 +30,17 @@ extends PhabricatorOAuthClientAuthorizationBaseController {
$title = 'OAuth Client Authorizations'; $title = 'OAuth Client Authorizations';
$request = $this->getRequest(); $request = $this->getRequest();
$current_user = $request->getUser(); $current_user = $request->getUser();
$authorizations = id(new PhabricatorOAuthClientAuthorization()) $offset = $request->getInt('offset', 0);
->loadAllWhere('userPHID = %s', $page_size = 100;
$current_user->getPHID()); $pager = new AphrontPagerView();
$request_uri = $request->getRequestURI();
$pager->setURI($request_uri, 'offset');
$pager->setPageSize($page_size);
$pager->setOffset($offset);
$query = new PhabricatorOAuthClientAuthorizationQuery();
$query->withUserPHIDs(array($current_user->getPHID()));
$authorizations = $query->executeWithPager($pager);
$client_authorizations = mpull($authorizations, null, 'getClientPHID'); $client_authorizations = mpull($authorizations, null, 'getClientPHID');
$client_phids = array_keys($client_authorizations); $client_phids = array_keys($client_authorizations);
@ -101,8 +109,10 @@ extends PhabricatorOAuthClientAuthorizationBaseController {
$panel = $this->buildClientAuthorizationList($rows, $rowc, $title); $panel = $this->buildClientAuthorizationList($rows, $rowc, $title);
return $this->buildStandardPageResponse( return $this->buildStandardPageResponse(
array($this->getNoticeView(), array(
$panel), $this->getNoticeView(),
$panel->appendChild($pager),
),
array('title' => $title) array('title' => $title)
); );
} }

View file

@ -7,9 +7,10 @@
phutil_require_module('phabricator', 'applications/oauthserver/controller/clientauthorization/base'); phutil_require_module('phabricator', 'applications/oauthserver/controller/clientauthorization/base');
phutil_require_module('phabricator', 'applications/oauthserver/query/clientauthorization');
phutil_require_module('phabricator', 'applications/oauthserver/storage/client'); phutil_require_module('phabricator', 'applications/oauthserver/storage/client');
phutil_require_module('phabricator', 'applications/oauthserver/storage/clientauthorization');
phutil_require_module('phabricator', 'infrastructure/env'); phutil_require_module('phabricator', 'infrastructure/env');
phutil_require_module('phabricator', 'view/control/pager');
phutil_require_module('phabricator', 'view/control/table'); phutil_require_module('phabricator', 'view/control/table');
phutil_require_module('phabricator', 'view/form/error'); phutil_require_module('phabricator', 'view/form/error');
phutil_require_module('phabricator', 'view/layout/panel'); phutil_require_module('phabricator', 'view/layout/panel');

View file

@ -0,0 +1,60 @@
<?php
/*
* Copyright 2012 Facebook, Inc.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
final class PhabricatorOAuthServerClientQuery
extends PhabricatorOffsetPagedQuery {
private $creatorPHIDs;
public function withCreatorPHIDs(array $phids) {
$this->creatorPHIDs = $phids;
return $this;
}
private function getCreatorPHIDs() {
return $this->creatorPHIDs;
}
public function execute() {
$table = new PhabricatorOAuthServerClient();
$conn_r = $table->establishConnection('r');
$where_clause = $this->buildWhereClause($conn_r);
$limit_clause = $this->buildLimitClause($conn_r);
$data = queryfx_all(
$conn_r,
'SELECT * FROM %T client %Q %Q',
$table->getTableName(),
$where_clause,
$limit_clause);
return $table->loadAllFromArray($data);
}
private function buildWhereClause($conn_r) {
$where = array();
if ($this->getCreatorPHIDs()) {
$where[] = qsprintf(
$conn_r,
'creatorPHID IN (%Ls)',
$this->getCreatorPHIDs());
}
return $this->formatWhereClause($where);
}
}

View file

@ -0,0 +1,15 @@
<?php
/**
* This file is automatically generated. Lint this module to rebuild it.
* @generated
*/
phutil_require_module('phabricator', 'applications/oauthserver/storage/client');
phutil_require_module('phabricator', 'infrastructure/query/offsetpaged');
phutil_require_module('phabricator', 'storage/qsprintf');
phutil_require_module('phabricator', 'storage/queryfx');
phutil_require_source('PhabricatorOAuthServerClientQuery.php');

View file

@ -0,0 +1,60 @@
<?php
/*
* Copyright 2012 Facebook, Inc.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
final class PhabricatorOAuthClientAuthorizationQuery
extends PhabricatorOffsetPagedQuery {
private $userPHIDs;
public function withUserPHIDs(array $phids) {
$this->userPHIDs = $phids;
return $this;
}
private function getUserPHIDs() {
return $this->userPHIDs;
}
public function execute() {
$table = new PhabricatorOAuthClientAuthorization();
$conn_r = $table->establishConnection('r');
$where_clause = $this->buildWhereClause($conn_r);
$limit_clause = $this->buildLimitClause($conn_r);
$data = queryfx_all(
$conn_r,
'SELECT * FROM %T auth %Q %Q',
$table->getTableName(),
$where_clause,
$limit_clause);
return $table->loadAllFromArray($data);
}
private function buildWhereClause($conn_r) {
$where = array();
if ($this->getUserPHIDs()) {
$where[] = qsprintf(
$conn_r,
'userPHID IN (%Ls)',
$this->getUserPHIDs());
}
return $this->formatWhereClause($where);
}
}

View file

@ -0,0 +1,15 @@
<?php
/**
* This file is automatically generated. Lint this module to rebuild it.
* @generated
*/
phutil_require_module('phabricator', 'applications/oauthserver/storage/clientauthorization');
phutil_require_module('phabricator', 'infrastructure/query/offsetpaged');
phutil_require_module('phabricator', 'storage/qsprintf');
phutil_require_module('phabricator', 'storage/queryfx');
phutil_require_source('PhabricatorOAuthClientAuthorizationQuery.php');