One Hat Cyber Team
Your IP :
216.73.216.182
Server IP :
203.175.9.166
Server :
Linux tanggamus.iixcp.rumahweb.net 5.14.0-427.28.1.el9_4.x86_64 #1 SMP PREEMPT_DYNAMIC Fri Aug 2 03:44:10 EDT 2024 x86_64
Server Software :
LiteSpeed
PHP Version :
7.4.33
Buat File
|
Buat Folder
Eksekusi
Dir :
~
/
home
/
cite5577
/
www
/
lib
/
pkp
/
classes
/
user
/
View File Name :
Report.inc.php
<?php /** * @defgroup lib_pkp_classes_user */ /** * @file lib/pkp/classes/user/Report.inc.php * * Copyright (c) 2003-2021 Simon Fraser University * Copyright (c) 2003-2021 John Willinsky * Distributed under the GNU GPL v3. For full terms see the file LICENSE. * * @class Report * @ingroup lib_pkp_classes_user * * @brief Generates a CSV report with basic user information given a list of users and an output stream. */ namespace PKP\User; class Report { /** @var iterable The report data source, should yield /User objects */ private $_dataSource; /** @var \PKPRequest */ private $_request; /** * Constructor * @param iterable $dataSource The data source, should yield /User objects */ public function __construct(iterable $dataSource) { \AppLocale::requireComponents(LOCALE_COMPONENT_PKP_SUBMISSION, LOCALE_COMPONENT_APP_EDITOR, LOCALE_COMPONENT_PKP_USER, LOCALE_COMPONENT_PKP_COMMON); $this->_dataSource = $dataSource; $this->_request = \Application::get()->getRequest(); } /** * Serializes the report to the given output * @param resource $output A ready to write stream */ public function serialize($output) : void { // Adds BOM (byte order mark) to enforce the UTF-8 format fwrite($output, "\xEF\xBB\xBF"); // Outputs column headings fputcsv($output, $this->_getHeadings()); // Outputs each user foreach ($this->_dataSource as $user) { fputcsv($output, $this->_getDataRow($user)); } } /** * Retrieves the report headings * @return string[] */ private function _getHeadings() : array { return array_merge([ __('common.id'), __('user.givenName'), __('user.familyName'), __('user.email'), __('user.phone'), __('common.country'), __('common.mailingAddress'), __('user.dateRegistered'), __('common.updated'), ], array_map(function($userGroup) { return $userGroup->getLocalizedName(); }, $this->_getUserGroups()) ); } /** * Retrieves the report row * @param \User $user * @return string[] */ private function _getDataRow(\User $user) : array { $userGroups = \Services::get('user')->getProperties($user, ['groups'], ['request' => $this->_request])['groups']; $groups = []; foreach ($userGroups as ['id' => $id]) { $groups[$id] = 0; } return array_merge([ $user->getId(), $user->getLocalizedGivenName(), $user->getFamilyName(\AppLocale::getLocale()), $user->getEmail(), $user->getPhone(), $user->getCountryLocalized(), $user->getMailingAddress(), $user->getDateRegistered(), $user->getLocalizedData('dateProfileUpdated'), ], array_map(function($userGroup) use ($groups) { return __(isset($groups[$userGroup->getId()]) ? 'common.yes' : 'common.no'); }, $this->_getUserGroups()) ); } /** * Retrieves the user groups * @return array */ private function _getUserGroups() : array { static $cache = null; return $cache ?? $cache = iterator_to_array( \DAORegistry::getDAO('UserGroupDAO')->getByContextId($this->_request->getContext()->getId())->toIterator() ); } }