[ Mini Kiebo ]
Server: Windows NT DESKTOP-5B8S0D4 6.2 build 9200 (Windows 8 Professional Edition) i586
Path:
D:
/
Backup
/
14082024
/
Data
/
htdocs
/
htdocs
/
jurnal-kesmas
/
baru
/
lib
/
pkp
/
controllers
/
page
/
[
Home
]
File: PageHandler.php
<?php /** * @file lib/pkp/controllers/page/PageHandler.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 PageHandler * * @ingroup controllers_page * * @brief Handler for requests for page components such as the header, tasks, * usernav, and CSS. */ namespace PKP\controllers\page; use APP\handler\Handler; use APP\template\TemplateManager; use PKP\core\JSONMessage; use PKP\core\PKPRequest; use PKP\plugins\Hook; use PKP\plugins\PluginRegistry; use PKP\security\authorization\PKPSiteAccessPolicy; class PageHandler extends Handler { // // Implement template methods from PKPHandler // /** * @copydoc PKPHandler::authorize() */ public function authorize($request, &$args, $roleAssignments) { $this->addPolicy(new PKPSiteAccessPolicy( $request, ['tasks', 'css'], PKPSiteAccessPolicy::SITE_ACCESS_ALL_ROLES )); $this->setEnforceRestrictedSite(false); return parent::authorize($request, $args, $roleAssignments); } // // Public operations // /** * Display the tasks component * * @param array $args * @param PKPRequest $request * * @return JSONMessage JSON object */ public function tasks($args, $request) { $this->setupTemplate($request); $templateMgr = TemplateManager::getManager($request); return $templateMgr->fetchJson('controllers/page/tasks.tpl'); } /** * Get the compiled CSS * * @param array $args * @param PKPRequest $request */ public function css($args, $request) { header('Content-Type: text/css'); $templateManager = TemplateManager::getManager($request); $name = $request->getUserVar('name'); if (empty($name)) { $name = 'pkp-lib'; } switch ($name) { // The core app stylesheet case 'pkp-lib': $cachedFile = $templateManager->getCachedLessFilePath($name); if (!file_exists($cachedFile)) { $styles = $templateManager->compileLess($name, 'styles/index.less'); if (!$templateManager->cacheLess($cachedFile, $styles)) { echo $styles; exit; } } break; default: // Backwards compatibility. This hook is deprecated. if (Hook::getHooks('PageHandler::displayCss')) { $result = ''; $lastModified = null; Hook::call('PageHandler::displayCss', [$request, &$name, &$result, &$lastModified]); if ($lastModified) { header('Last-Modified: ' . gmdate('D, d M Y H:i:s', $lastModified) . ' GMT'); } header('Content-Length: ' . strlen($result)); echo $result; exit; } else { $cachedFile = $templateManager->getCachedLessFilePath($name); if (!file_exists($cachedFile)) { // Process styles registered with the current theme $styles = ''; $themes = PluginRegistry::loadCategory('themes', true); foreach ($themes as $theme) { if ($theme->isActive()) { $style = $theme->getStyle($name); if (!empty($style)) { // Compile and cache the stylesheet $styles = $templateManager->compileLess( $name, $style['style'], [ 'baseUrl' => $style['baseUrl'] ?? null, 'addLess' => $style['addLess'] ?? null, 'addLessVariables' => $style['addLessVariables'] ?? null, ] ); } break; } } // If we still haven't found styles, fire off a hook // which allows other types of plugins to handle // requests if (!$styles) { Hook::call( 'PageHandler::getCompiledLess', [ 'request' => $request, 'name' => &$name, 'styles' => &$styles, ] ); } // Give up if there are still no styles if (!$styles) { exit; } // Try to save the styles to a cached file. If we can't, // just print them out if (!$templateManager->cacheLess($cachedFile, $styles)) { echo $styles; exit; } } } break; } // Deliver the cached file header('Last-Modified: ' . gmdate('D, d M Y H:i:s', filemtime($cachedFile)) . ' GMT'); header('Content-Length: ' . filesize($cachedFile)); readfile($cachedFile); exit; } } if (!PKP_STRICT_MODE) { class_alias('\PKP\controllers\page\PageHandler', '\PageHandler'); }