[ Mini Kiebo ]
Server: Windows NT DESKTOP-5B8S0D4 6.2 build 9200 (Windows 8 Professional Edition) i586
Path:
D:
/
Backup
/
05122024
/
htdocs
/
jurnal-kesmas
/
baru
/
lib
/
pkp
/
api
/
v1
/
stats
/
users
/
[
Home
]
File: PKPStatsUserHandler.php
<?php /** * @file api/v1/stats/users/PKPStatsUserHandler.php * * Copyright (c) 2014-2021 Simon Fraser University * Copyright (c) 2003-2021 John Willinsky * Distributed under the GNU GPL v3. For full terms see the file docs/COPYING. * * @class PKPStatsUserHandler * * @ingroup api_v1_stats * * @brief Handle API requests for publication statistics. * */ namespace PKP\API\v1\stats\users; use APP\facades\Repo; use PKP\handler\APIHandler; use PKP\plugins\Hook; use PKP\security\authorization\ContextAccessPolicy; use PKP\security\authorization\PolicySet; use PKP\security\authorization\RoleBasedHandlerOperationPolicy; use PKP\security\authorization\UserRolesRequiredPolicy; use PKP\security\Role; class PKPStatsUserHandler extends APIHandler { /** * Constructor */ public function __construct() { $this->_handlerPath = 'stats/users'; $this->_endpoints = [ 'GET' => [ [ 'pattern' => $this->getEndpointPattern(), 'handler' => [$this, 'get'], 'roles' => [Role::ROLE_ID_SITE_ADMIN, Role::ROLE_ID_MANAGER, Role::ROLE_ID_SUB_EDITOR], ], ], ]; parent::__construct(); } /** * @copydoc PKPHandler::authorize() */ public function authorize($request, &$args, $roleAssignments) { $this->addPolicy(new UserRolesRequiredPolicy($request), true); $this->addPolicy(new ContextAccessPolicy($request, $roleAssignments)); $rolePolicy = new PolicySet(PolicySet::COMBINING_PERMIT_OVERRIDES); foreach ($roleAssignments as $role => $operations) { $rolePolicy->addPolicy(new RoleBasedHandlerOperationPolicy($request, $role, $operations)); } $this->addPolicy($rolePolicy); return parent::authorize($request, $args, $roleAssignments); } /** * Get user stats * * Returns the count of users broken down by roles * * @param \Slim\Http\Request $slimRequest Slim request object * @param object $response Response * @param array $args * * @return object Response */ public function get($slimRequest, $response, $args) { $request = $this->getRequest(); if (!$request->getContext()) { return $response->withStatus(404)->withJsonError('api.404.resourceNotFound'); } $collector = Repo::user()->getCollector(); $dateParams = []; foreach ($slimRequest->getQueryParams() as $param => $value) { switch ($param) { case 'registeredAfter': $collector->filterRegisteredAfter($value); $dateParams['dateStart'] = $value; break; case 'registeredBefore': $collector->filterRegisteredBefore($value); $dateParams['dateEnd'] = $value; break; case 'status': switch ($value) { case 'disabled': $collector->filterByStatus($collector::STATUS_DISABLED); break; case 'all': $collector->filterByStatus($collector::STATUS_ALL); break; default: case 'active': $collector->filterByStatus($collector::STATUS_ACTIVE); break; } } } Hook::call('API::stats::users::params', [$collector, $slimRequest]); $collector->filterByContextIds([$request->getContext()->getId()]); $result = $this->_validateStatDates($dateParams); if ($result !== true) { return $response->withStatus(400)->withJsonError($result); } return $response->withJson(array_map( function ($item) { $item['name'] = __($item['name']); return $item; }, Repo::user()->getRolesOverview($collector) )); } }