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
/
public_html
/
lib
/
pkp
/
pages
/
admin
/
View File Name :
AdminHandler.inc.php
<?php /** * @file pages/admin/AdminHandler.inc.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 AdminHandler * @ingroup pages_admin * * @brief Handle requests for site administration functions. */ import('classes.handler.Handler'); use Illuminate\Database\Capsule\Manager as Capsule; class AdminHandler extends Handler { /** @copydoc PKPHandler::_isBackendPage */ var $_isBackendPage = true; /** * Constructor */ function __construct() { parent::__construct(); $this->addRoleAssignment( [ROLE_ID_SITE_ADMIN], [ 'index', 'contexts', 'settings', 'wizard', 'systemInfo', 'phpinfo', 'expireSessions', 'clearTemplateCache', 'clearDataCache', 'downloadScheduledTaskLogFile', 'clearScheduledTaskLogFiles', ] ); } /** * @copydoc PKPHandler::authorize() */ function authorize($request, &$args, $roleAssignments) { import('lib.pkp.classes.security.authorization.PKPSiteAccessPolicy'); $this->addPolicy(new PKPSiteAccessPolicy($request, null, $roleAssignments)); $returner = parent::authorize($request, $args, $roleAssignments); // Admin shouldn't access this page from a specific context if ($request->getContext()) { return false; } return $returner; } /** * @copydoc PKPHandler::initialize() */ function initialize($request) { AppLocale::requireComponents( LOCALE_COMPONENT_PKP_ADMIN, LOCALE_COMPONENT_APP_MANAGER, LOCALE_COMPONENT_APP_ADMIN, LOCALE_COMPONENT_APP_COMMON, LOCALE_COMPONENT_PKP_USER, LOCALE_COMPONENT_PKP_MANAGER ); $templateMgr = TemplateManager::getManager($request); $templateMgr->assign([ 'pageComponent' => 'AdminPage', ]); if ($request->getRequestedOp() !== 'index') { $router = $request->getRouter(); $templateMgr->assign([ 'breadcrumbs' => [ [ 'id' => 'admin', 'url' => $router->url($request, 'index', 'admin'), 'name' => __('navigation.admin'), ] ] ]); } // Interact with the beacon (if enabled) and determine if a new version exists import('lib.pkp.classes.site.VersionCheck'); $latestVersion = VersionCheck::checkIfNewVersionExists(); // Display a warning message if there is a new version of OJS available if (Config::getVar('general', 'show_upgrade_warning') && $latestVersion) { $currentVersion = VersionCheck::getCurrentDBVersion(); $templateMgr->assign([ 'newVersionAvailable' => true, 'currentVersion' => $currentVersion, 'latestVersion' => $latestVersion, ]); } return parent::initialize($request); } /** * Display site admin index page. * @param $args array * @param $request PKPRequest */ function index($args, $request) { $this->setupTemplate($request); $templateMgr = TemplateManager::getManager($request); $templateMgr->assign([ 'pageTitle' => __('admin.siteAdmin'), ]); $templateMgr->display('admin/index.tpl'); } /** * Display a list of the contexts hosted on the site. * @param $args array * @param $request PKPRequest */ function contexts($args, $request) { $this->setupTemplate($request); $templateMgr = TemplateManager::getManager($request); $breadcrumbs = $templateMgr->get_template_vars('breadcrumbs'); $breadcrumbs[] = [ 'id' => 'contexts', 'name' => __('admin.hostedContexts'), ]; $templateMgr->assign([ 'breadcrumbs' => $breadcrumbs, 'pageTitle' => __('admin.hostedContexts'), ]); $templateMgr->display('admin/contexts.tpl'); } /** * Display the administration settings page. * @param $args array * @param $request PKPRequest */ function settings($args, $request) { $this->setupTemplate($request); $site = $request->getSite(); $dispatcher = $request->getDispatcher(); $apiUrl = $dispatcher->url($request, ROUTE_API, CONTEXT_ID_ALL, 'site'); $themeApiUrl = $dispatcher->url($request, ROUTE_API, CONTEXT_ID_ALL, 'site/theme'); $temporaryFileApiUrl = $dispatcher->url($request, ROUTE_API, CONTEXT_ID_ALL, 'temporaryFiles'); import('classes.file.PublicFileManager'); $publicFileManager = new PublicFileManager(); $baseUrl = $request->getBaseUrl() . '/' . $publicFileManager->getSiteFilesPath(); $supportedLocales = $site->getSupportedLocales(); $localeNames = AppLocale::getAllLocales(); $locales = array_map(function($localeKey) use ($localeNames) { return ['key' => $localeKey, 'label' => $localeNames[$localeKey]]; }, $supportedLocales); $contexts = Services::get('context')->getManySummary(); $siteAppearanceForm = new \PKP\components\forms\site\PKPSiteAppearanceForm($apiUrl, $locales, $site, $baseUrl, $temporaryFileApiUrl); $siteConfigForm = new \PKP\components\forms\site\PKPSiteConfigForm($apiUrl, $locales, $site); $siteInformationForm = new \PKP\components\forms\site\PKPSiteInformationForm($apiUrl, $locales, $site); $siteBulkEmailsForm = new \PKP\components\forms\site\PKPSiteBulkEmailsForm($apiUrl, $site, $contexts); $themeForm = new \PKP\components\forms\context\PKPThemeForm($themeApiUrl, $locales); $templateMgr = TemplateManager::getManager($request); $templateMgr->setState([ 'components' => [ FORM_SITE_APPEARANCE => $siteAppearanceForm->getConfig(), FORM_SITE_CONFIG => $siteConfigForm->getConfig(), FORM_SITE_INFO => $siteInformationForm->getConfig(), FORM_SITE_BULK_EMAILS => $siteBulkEmailsForm->getConfig(), FORM_THEME => $themeForm->getConfig(), ], ]); $breadcrumbs = $templateMgr->get_template_vars('breadcrumbs'); $breadcrumbs[] = [ 'id' => 'settings', 'name' => __('admin.siteSettings'), ]; $templateMgr->assign([ 'breadcrumbs' => $breadcrumbs, 'pageTitle' => __('admin.siteSettings'), 'componentAvailability' => $this->siteSettingsAvailability($request), ]); $templateMgr->display('admin/settings.tpl'); } /** * Business logic for site settings single/multiple contexts availability * * @param $request PKPRequest * @return array [siteComponent, availability (bool)] */ private function siteSettingsAvailability($request) { $tabsSingleContextAvailability = [ 'siteSetup', 'languages', 'bulkEmails', ]; $tabs = [ 'siteSetup', 'siteAppearance', 'sitePlugins', 'siteConfig', 'siteInfo', 'languages', 'navigationMenus', 'bulkEmails', 'siteTheme', 'siteAppearanceSetup', ]; $singleContextSite = (Services::get('context')->getCount() == 1); $tabsAvailability = array(); foreach ($tabs as $tab) { $tabsAvailability[$tab] = true; if ($singleContextSite && !in_array($tab, $tabsSingleContextAvailability)) { $tabsAvailability[$tab] = false; } } return $tabsAvailability; } /** * Display a settings wizard for a journal * * @param $args array * @param $request PKPRequest */ public function wizard($args, $request) { $this->setupTemplate($request); $router = $request->getRouter(); $dispatcher = $request->getDispatcher(); if (!isset($args[0]) || !ctype_digit((string) $args[0])) { $request->getDispatcher()->handle404(); } import('classes.core.Services'); $contextService = Services::get('context'); $context = $contextService->get((int) $args[0]); if (empty($context)) { $request->getDispatcher()->handle404(); } $apiUrl = $dispatcher->url($request, ROUTE_API, $context->getPath(), 'contexts/' . $context->getId()); $themeApiUrl = $dispatcher->url($request, ROUTE_API, $context->getPath(), 'contexts/' . $context->getId() . '/theme'); $sitemapUrl = $router->url($request, $context->getPath(), 'sitemap'); $supportedFormLocales = $context->getSupportedFormLocales(); $localeNames = AppLocale::getAllLocales(); $locales = array_map(function($localeKey) use ($localeNames) { return ['key' => $localeKey, 'label' => $localeNames[$localeKey]]; }, $supportedFormLocales); $contextForm = new APP\components\forms\context\ContextForm($apiUrl, $locales, $request->getBaseUrl(), $context); $themeForm = new PKP\components\forms\context\PKPThemeForm($themeApiUrl, $locales, $context); $indexingForm = new PKP\components\forms\context\PKPSearchIndexingForm($apiUrl, $locales, $context, $sitemapUrl); $components = [ FORM_CONTEXT => $contextForm->getConfig(), FORM_SEARCH_INDEXING => $indexingForm->getConfig(), FORM_THEME => $themeForm->getConfig(), ]; $bulkEmailsEnabled = in_array($context->getId(), (array) $request->getSite()->getData('enableBulkEmails')); if ($bulkEmailsEnabled) { $userGroups = DAORegistry::getDAO('UserGroupDAO')->getByContextId($context->getId()); $restrictBulkEmailsForm = new PKP\components\forms\context\PKPRestrictBulkEmailsForm($apiUrl, $context, $userGroups); $components[$restrictBulkEmailsForm->id] = $restrictBulkEmailsForm->getConfig(); } $templateMgr = TemplateManager::getManager($request); $templateMgr->setState([ 'components' => $components, ]); $breadcrumbs = $templateMgr->get_template_vars('breadcrumbs'); $breadcrumbs[] = [ 'id' => 'contexts', 'name' => __('admin.hostedContexts'), 'url' => $router->url($request, 'index', 'admin', 'contexts'), ]; $breadcrumbs[] = [ 'id' => 'wizard', 'name' => __('manager.settings.wizard'), ]; $templateMgr->assign([ 'breadcrumbs' => $breadcrumbs, 'bulkEmailsEnabled' => $bulkEmailsEnabled, 'editContext' => $context, 'pageTitle' => __('manager.settings.wizard'), ]); $templateMgr->display('admin/contextSettings.tpl'); } /** * Show system information summary. * @param $args array * @param $request PKPRequest */ function systemInfo($args, $request) { $this->setupTemplate($request, true); $versionDao = DAORegistry::getDAO('VersionDAO'); /* @var $versionDao VersionDAO */ $currentVersion = $versionDao->getCurrentVersion(); if ($request->getUserVar('versionCheck')) { $latestVersionInfo = VersionCheck::getLatestVersion(); $latestVersionInfo['patch'] = VersionCheck::getPatch($latestVersionInfo); } else $latestVersionInfo = null; $versionDao = DAORegistry::getDAO('VersionDAO'); /* @var $versionDao VersionDAO */ $versionHistory = $versionDao->getVersionHistory(); $pdo = Capsule::getPDO(); $serverInfo = [ 'admin.server.platform' => PHP_OS, 'admin.server.phpVersion' => phpversion(), 'admin.server.apacheVersion' => $_SERVER['SERVER_SOFTWARE'], 'admin.server.dbDriver' => $pdo->getAttribute(PDO::ATTR_DRIVER_NAME), 'admin.server.dbVersion' => $pdo->getAttribute(PDO::ATTR_SERVER_VERSION), ]; $templateMgr = TemplateManager::getManager($request); $breadcrumbs = $templateMgr->get_template_vars('breadcrumbs'); $breadcrumbs[] = [ 'id' => 'wizard', 'name' => __('admin.systemInformation'), ]; $templateMgr->assign([ 'breadcrumbs' => $breadcrumbs, 'currentVersion' => $currentVersion, 'latestVersionInfo' => $latestVersionInfo, 'pageTitle' => __('admin.systemInformation'), 'versionHistory' => $versionHistory, 'serverInfo' => $serverInfo, 'configData' => Config::getData(), ]); $templateMgr->display('admin/systemInfo.tpl'); } /** * Show full PHP configuration information. */ function phpinfo() { phpinfo(); } /** * Expire all user sessions (will log out all users currently logged in). * @param $args array * @param $request PKPRequest */ function expireSessions($args, $request) { if (!$request->checkCSRF()) return new JSONMessage(false); $sessionDao = DAORegistry::getDAO('SessionDAO'); /* @var $sessionDao SessionDAO */ $sessionDao->deleteAllSessions(); $request->redirect(null, 'login'); } /** * Clear compiled templates. * @param $args array * @param $request PKPRequest */ function clearTemplateCache($args, $request) { if (!$request->checkCSRF()) return new JSONMessage(false); $templateMgr = TemplateManager::getManager($request); $templateMgr->clearTemplateCache(); $templateMgr->clearCssCache(); $request->redirect(null, 'admin'); } /** * Clear the data cache. * @param $args array * @param $request PKPRequest */ function clearDataCache($args, $request) { if (!$request->checkCSRF()) return new JSONMessage(false); // Clear the CacheManager's caches $cacheManager = CacheManager::getManager(); $cacheManager->flush(); // Clear ADODB's cache $userDao = DAORegistry::getDAO('UserDAO'); // As good as any $userDao->flushCache(); $request->redirect(null, 'admin'); } /** * Download scheduled task execution log file. */ function downloadScheduledTaskLogFile($args, $request) { $file = basename($request->getUserVar('file')); import('lib.pkp.classes.scheduledTask.ScheduledTaskHelper'); ScheduledTaskHelper::downloadExecutionLog($file); } /** * Clear scheduled tasks execution logs. */ function clearScheduledTaskLogFiles($args, $request) { if (!$request->checkCSRF()) return new JSONMessage(false); import('lib.pkp.classes.scheduledTask.ScheduledTaskHelper'); ScheduledTaskHelper::clearExecutionLogs(); $request->redirect(null, 'admin'); } }