mirror of
https://we.phorge.it/source/phorge.git
synced 2024-11-20 05:42:40 +01:00
Integrate user.getcurrentstatus
into user.query
Summary: D2492#6 Test Plan: `user.query` of user which is away. `user.query` of user which is not away. `user.whoami` - no information there. Reviewers: epriestley Reviewed By: epriestley CC: btrahan, aran, Koolvin Differential Revision: https://secure.phabricator.com/D2502
This commit is contained in:
parent
18deff557e
commit
fa36dd513c
6 changed files with 22 additions and 84 deletions
|
@ -186,7 +186,6 @@ phutil_register_library_map(array(
|
||||||
'ConduitAPI_user_addstatus_Method' => 'applications/conduit/method/user/addstatus',
|
'ConduitAPI_user_addstatus_Method' => 'applications/conduit/method/user/addstatus',
|
||||||
'ConduitAPI_user_disable_Method' => 'applications/conduit/method/user/disable',
|
'ConduitAPI_user_disable_Method' => 'applications/conduit/method/user/disable',
|
||||||
'ConduitAPI_user_find_Method' => 'applications/conduit/method/user/find',
|
'ConduitAPI_user_find_Method' => 'applications/conduit/method/user/find',
|
||||||
'ConduitAPI_user_getcurrentstatus_Method' => 'applications/conduit/method/user/getcurrentstatus',
|
|
||||||
'ConduitAPI_user_info_Method' => 'applications/conduit/method/user/info',
|
'ConduitAPI_user_info_Method' => 'applications/conduit/method/user/info',
|
||||||
'ConduitAPI_user_query_Method' => 'applications/conduit/method/user/query',
|
'ConduitAPI_user_query_Method' => 'applications/conduit/method/user/query',
|
||||||
'ConduitAPI_user_removestatus_Method' => 'applications/conduit/method/user/removestatus',
|
'ConduitAPI_user_removestatus_Method' => 'applications/conduit/method/user/removestatus',
|
||||||
|
@ -1220,7 +1219,6 @@ phutil_register_library_map(array(
|
||||||
'ConduitAPI_user_addstatus_Method' => 'ConduitAPI_user_Method',
|
'ConduitAPI_user_addstatus_Method' => 'ConduitAPI_user_Method',
|
||||||
'ConduitAPI_user_disable_Method' => 'ConduitAPI_user_Method',
|
'ConduitAPI_user_disable_Method' => 'ConduitAPI_user_Method',
|
||||||
'ConduitAPI_user_find_Method' => 'ConduitAPI_user_Method',
|
'ConduitAPI_user_find_Method' => 'ConduitAPI_user_Method',
|
||||||
'ConduitAPI_user_getcurrentstatus_Method' => 'ConduitAPI_user_Method',
|
|
||||||
'ConduitAPI_user_info_Method' => 'ConduitAPI_user_Method',
|
'ConduitAPI_user_info_Method' => 'ConduitAPI_user_Method',
|
||||||
'ConduitAPI_user_query_Method' => 'ConduitAPI_user_Method',
|
'ConduitAPI_user_query_Method' => 'ConduitAPI_user_Method',
|
||||||
'ConduitAPI_user_removestatus_Method' => 'ConduitAPI_user_Method',
|
'ConduitAPI_user_removestatus_Method' => 'ConduitAPI_user_Method',
|
||||||
|
|
|
@ -21,14 +21,24 @@
|
||||||
*/
|
*/
|
||||||
abstract class ConduitAPI_user_Method extends ConduitAPIMethod {
|
abstract class ConduitAPI_user_Method extends ConduitAPIMethod {
|
||||||
|
|
||||||
protected function buildUserInformationDictionary(PhabricatorUser $user) {
|
protected function buildUserInformationDictionary(
|
||||||
return array(
|
PhabricatorUser $user,
|
||||||
|
PhabricatorUserStatus $current_status = null) {
|
||||||
|
|
||||||
|
$return = array(
|
||||||
'phid' => $user->getPHID(),
|
'phid' => $user->getPHID(),
|
||||||
'userName' => $user->getUserName(),
|
'userName' => $user->getUserName(),
|
||||||
'realName' => $user->getRealName(),
|
'realName' => $user->getRealName(),
|
||||||
'image' => $user->loadProfileImageURI(),
|
'image' => $user->loadProfileImageURI(),
|
||||||
'uri' => PhabricatorEnv::getURI('/p/'.$user->getUsername().'/'),
|
'uri' => PhabricatorEnv::getURI('/p/'.$user->getUsername().'/'),
|
||||||
);
|
);
|
||||||
|
|
||||||
|
if ($current_status) {
|
||||||
|
$return['currentStatus'] = $current_status->getTextStatus();
|
||||||
|
$return['currentStatusUntil'] = $current_status->getDateTo();
|
||||||
|
}
|
||||||
|
|
||||||
|
return $return;
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,63 +0,0 @@
|
||||||
<?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.
|
|
||||||
*/
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @group conduit
|
|
||||||
*/
|
|
||||||
final class ConduitAPI_user_getcurrentstatus_Method
|
|
||||||
extends ConduitAPI_user_Method {
|
|
||||||
|
|
||||||
public function getMethodStatus() {
|
|
||||||
return self::METHOD_STATUS_UNSTABLE;
|
|
||||||
}
|
|
||||||
|
|
||||||
public function getMethodDescription() {
|
|
||||||
return "Get current status (away or sporadic) of specified users.";
|
|
||||||
}
|
|
||||||
|
|
||||||
public function defineParamTypes() {
|
|
||||||
return array(
|
|
||||||
'userPHIDs' => 'required list',
|
|
||||||
);
|
|
||||||
}
|
|
||||||
|
|
||||||
public function defineReturnType() {
|
|
||||||
return 'dict';
|
|
||||||
}
|
|
||||||
|
|
||||||
public function defineErrorTypes() {
|
|
||||||
return array(
|
|
||||||
);
|
|
||||||
}
|
|
||||||
|
|
||||||
protected function execute(ConduitAPIRequest $request) {
|
|
||||||
$statuses = id(new PhabricatorUserStatus())->loadCurrentStatuses(
|
|
||||||
$request->getValue('userPHIDs'));
|
|
||||||
|
|
||||||
$return = array();
|
|
||||||
foreach ($statuses as $status) {
|
|
||||||
$return[$status->getUserPHID()] = array(
|
|
||||||
'fromEpoch' => $status->getDateFrom(),
|
|
||||||
'toEpoch' => $status->getDateTo(),
|
|
||||||
'status' => $status->getTextStatus(),
|
|
||||||
);
|
|
||||||
}
|
|
||||||
return $return;
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
|
@ -1,15 +0,0 @@
|
||||||
<?php
|
|
||||||
/**
|
|
||||||
* This file is automatically generated. Lint this module to rebuild it.
|
|
||||||
* @generated
|
|
||||||
*/
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
phutil_require_module('phabricator', 'applications/conduit/method/user/base');
|
|
||||||
phutil_require_module('phabricator', 'applications/people/storage/userstatus');
|
|
||||||
|
|
||||||
phutil_require_module('phutil', 'utils');
|
|
||||||
|
|
||||||
|
|
||||||
phutil_require_source('ConduitAPI_user_getcurrentstatus_Method.php');
|
|
|
@ -64,7 +64,7 @@ final class ConduitAPI_user_query_Method
|
||||||
$query->withUsernames($usernames);
|
$query->withUsernames($usernames);
|
||||||
}
|
}
|
||||||
if ($emails) {
|
if ($emails) {
|
||||||
// TODO -- validate emails and maybs
|
// TODO -- validate emails and maybe
|
||||||
// throw new ConduitException('ERR-INVALID-PARAMETER');
|
// throw new ConduitException('ERR-INVALID-PARAMETER');
|
||||||
$query->withEmails($emails);
|
$query->withEmails($emails);
|
||||||
}
|
}
|
||||||
|
@ -85,9 +85,14 @@ final class ConduitAPI_user_query_Method
|
||||||
}
|
}
|
||||||
$users = $query->execute();
|
$users = $query->execute();
|
||||||
|
|
||||||
|
$statuses = id(new PhabricatorUserStatus())->loadCurrentStatuses(
|
||||||
|
mpull($users, 'getPHID'));
|
||||||
|
|
||||||
$results = array();
|
$results = array();
|
||||||
foreach ($users as $user) {
|
foreach ($users as $user) {
|
||||||
$results[] = $this->buildUserInformationDictionary($user);
|
$results[] = $this->buildUserInformationDictionary(
|
||||||
|
$user,
|
||||||
|
idx($statuses, $user->getPHID()));
|
||||||
}
|
}
|
||||||
return $results;
|
return $results;
|
||||||
}
|
}
|
||||||
|
|
|
@ -8,6 +8,9 @@
|
||||||
|
|
||||||
phutil_require_module('phabricator', 'applications/conduit/method/user/base');
|
phutil_require_module('phabricator', 'applications/conduit/method/user/base');
|
||||||
phutil_require_module('phabricator', 'applications/people/query');
|
phutil_require_module('phabricator', 'applications/people/query');
|
||||||
|
phutil_require_module('phabricator', 'applications/people/storage/userstatus');
|
||||||
|
|
||||||
|
phutil_require_module('phutil', 'utils');
|
||||||
|
|
||||||
|
|
||||||
phutil_require_source('ConduitAPI_user_query_Method.php');
|
phutil_require_source('ConduitAPI_user_query_Method.php');
|
||||||
|
|
Loading…
Reference in a new issue