[ Mini Kiebo ]
Server: Windows NT DESKTOP-5B8S0D4 6.2 build 9200 (Windows 8 Professional Edition) i586
Path:
D:
/
Backup
/
05122024
/
htdocs
/
jurnal-kesmas
/
v1
/
classes
/
services
/
[
Home
]
File: NavigationMenuService.php
<?php /** * @file classes/services/NavigationMenuService.php * * Copyright (c) 2014-2021 Simon Fraser University * Copyright (c) 2000-2021 John Willinsky * Distributed under the GNU GPL v3. For full terms see the file docs/COPYING. * * @class NavigationMenuService * * @ingroup services * * @brief Helper class that encapsulates NavigationMenu business logic */ namespace APP\services; use APP\core\Application; use APP\template\TemplateManager; use PKP\plugins\Hook; use PKP\security\Validation; class NavigationMenuService extends \PKP\services\PKPNavigationMenuService { // Types for all ojs default navigationMenuItems public const NMI_TYPE_SUBSCRIPTIONS = 'NMI_TYPE_SUBSCRIPTIONS'; public const NMI_TYPE_MY_SUBSCRIPTIONS = 'NMI_TYPE_MY_SUBSCRIPTIONS'; public const NMI_TYPE_CURRENT = 'NMI_TYPE_CURRENT'; public const NMI_TYPE_ARCHIVES = 'NMI_TYPE_ARCHIVES'; /** * Initialize hooks for extending PKPNavigationMenuService */ public function __construct() { Hook::add('NavigationMenus::itemTypes', [$this, 'getMenuItemTypesCallback']); Hook::add('NavigationMenus::displaySettings', [$this, 'getDisplayStatusCallback']); } /** * Return all default navigationMenuItemTypes. * * @param string $hookName * @param array $args of arguments passed */ public function getMenuItemTypesCallback($hookName, $args) { $types = & $args[0]; $ojsTypes = [ self::NMI_TYPE_CURRENT => [ 'title' => __('editor.issues.currentIssue'), 'description' => __('manager.navigationMenus.current.description'), ], self::NMI_TYPE_ARCHIVES => [ 'title' => __('navigation.archives'), 'description' => __('manager.navigationMenus.archives.description'), ], self::NMI_TYPE_SUBSCRIPTIONS => [ 'title' => __('navigation.subscriptions'), 'description' => __('manager.navigationMenus.subscriptions.description'), 'conditionalWarning' => __('manager.navigationMenus.subscriptions.conditionalWarning'), ], self::NMI_TYPE_MY_SUBSCRIPTIONS => [ 'title' => __('user.subscriptions.mySubscriptions'), 'description' => __('manager.navigationMenus.mySubscriptions.description'), 'conditionalWarning' => __('manager.navigationMenus.mySubscriptions.conditionalWarning'), ], ]; $types = array_merge($types, $ojsTypes); } /** * Callback for display menu item functionality * * @param string $hookName * @param array $args of arguments passed */ public function getDisplayStatusCallback($hookName, $args) { $navigationMenuItem = & $args[0]; $request = Application::get()->getRequest(); $dispatcher = $request->getDispatcher(); $templateMgr = TemplateManager::getManager(Application::get()->getRequest()); $isUserLoggedIn = Validation::isLoggedIn(); $isUserLoggedInAs = Validation::loggedInAs(); $context = $request->getContext(); $this->transformNavMenuItemTitle($templateMgr, $navigationMenuItem); $menuItemType = $navigationMenuItem->getType(); // Conditionally hide some items switch ($menuItemType) { case self::NMI_TYPE_CURRENT: case self::NMI_TYPE_ARCHIVES: $navigationMenuItem->setIsDisplayed($context && $context->getData('publishingMode') != \APP\journal\Journal::PUBLISHING_MODE_NONE); break; case self::NMI_TYPE_SUBSCRIPTIONS: if ($context) { $paymentManager = Application::getPaymentManager($context); $navigationMenuItem->setIsDisplayed($context->getData('paymentsEnabled') && $paymentManager->isConfigured()); } break; case self::NMI_TYPE_MY_SUBSCRIPTIONS: if ($context) { $paymentManager = Application::getPaymentManager($context); $navigationMenuItem->setIsDisplayed(Validation::isLoggedIn() && $context->getData('paymentsEnabled') && $paymentManager->isConfigured() && $context->getData('publishingMode') == \APP\journal\Journal::PUBLISHING_MODE_SUBSCRIPTION); } break; } if ($navigationMenuItem->getIsDisplayed()) { // Set the URL switch ($menuItemType) { case self::NMI_TYPE_CURRENT: $navigationMenuItem->setUrl($dispatcher->url( $request, Application::ROUTE_PAGE, null, 'issue', 'current', null )); break; case self::NMI_TYPE_ARCHIVES: $navigationMenuItem->setUrl($dispatcher->url( $request, Application::ROUTE_PAGE, null, 'issue', 'archive', null )); break; case self::NMI_TYPE_SUBSCRIPTIONS: $navigationMenuItem->setUrl($dispatcher->url( $request, Application::ROUTE_PAGE, null, 'about', 'subscriptions', null )); break; case self::NMI_TYPE_MY_SUBSCRIPTIONS: $navigationMenuItem->setUrl($dispatcher->url( $request, Application::ROUTE_PAGE, null, 'user', 'subscriptions', null )); break; } } } } if (!PKP_STRICT_MODE) { foreach ([ 'NMI_TYPE_SUBSCRIPTIONS', 'NMI_TYPE_MY_SUBSCRIPTIONS', 'NMI_TYPE_CURRENT', 'NMI_TYPE_ARCHIVES', ] as $constantName) { define($constantName, constant('\APP\services\NavigationMenuService::' . $constantName)); } }