Open Journal Systems  3.3.0
NavigationMenuService.inc.php
1 <?php
2 
16 namespace APP\Services;
17 
19 define('NMI_TYPE_SUBSCRIPTIONS', 'NMI_TYPE_SUBSCRIPTIONS');
20 define('NMI_TYPE_MY_SUBSCRIPTIONS', 'NMI_TYPE_MY_SUBSCRIPTIONS');
21 define('NMI_TYPE_CURRENT', 'NMI_TYPE_CURRENT');
22 define('NMI_TYPE_ARCHIVES', 'NMI_TYPE_ARCHIVES');
23 
25 
29  public function __construct() {
30 
31  \HookRegistry::register('NavigationMenus::itemTypes', array($this, 'getMenuItemTypesCallback'));
32  \HookRegistry::register('NavigationMenus::displaySettings', array($this, 'getDisplayStatusCallback'));
33  }
34 
40  public function getMenuItemTypesCallback($hookName, $args) {
41  $types =& $args[0];
42 
43  \AppLocale::requireComponents(LOCALE_COMPONENT_APP_COMMON, LOCALE_COMPONENT_PKP_USER, LOCALE_COMPONENT_APP_EDITOR);
44 
45  $ojsTypes = array(
46  NMI_TYPE_CURRENT => array(
47  'title' => __('editor.issues.currentIssue'),
48  'description' => __('manager.navigationMenus.current.description'),
49  ),
50  NMI_TYPE_ARCHIVES => array(
51  'title' => __('navigation.archives'),
52  'description' => __('manager.navigationMenus.archives.description'),
53  ),
54  NMI_TYPE_SUBSCRIPTIONS => array(
55  'title' => __('navigation.subscriptions'),
56  'description' => __('manager.navigationMenus.subscriptions.description'),
57  'conditionalWarning' => __('manager.navigationMenus.subscriptions.conditionalWarning'),
58  ),
60  'title' => __('user.subscriptions.mySubscriptions'),
61  'description' => __('manager.navigationMenus.mySubscriptions.description'),
62  'conditionalWarning' => __('manager.navigationMenus.mySubscriptions.conditionalWarning'),
63  ),
64  );
65 
66  $types = array_merge($types, $ojsTypes);
67  }
68 
74  function getDisplayStatusCallback($hookName, $args) {
75  $navigationMenuItem =& $args[0];
76 
77  $request = \Application::get()->getRequest();
78  $dispatcher = $request->getDispatcher();
79  $templateMgr = \TemplateManager::getManager(\Application::get()->getRequest());
80 
81  $isUserLoggedIn = \Validation::isLoggedIn();
82  $isUserLoggedInAs = \Validation::isLoggedInAs();
83  $context = $request->getContext();
84 
85  $this->transformNavMenuItemTitle($templateMgr, $navigationMenuItem);
86 
87  $menuItemType = $navigationMenuItem->getType();
88 
89  // Conditionally hide some items
90  switch ($menuItemType) {
91  case NMI_TYPE_CURRENT:
92  case NMI_TYPE_ARCHIVES:
93  $navigationMenuItem->setIsDisplayed($context && $context->getData('publishingMode') != PUBLISHING_MODE_NONE);
94  break;
96  if ($context) {
97  $paymentManager = \Application::getPaymentManager($context);
98  $navigationMenuItem->setIsDisplayed($context->getData('paymentsEnabled') && $paymentManager->isConfigured());
99  }
100  break;
102  if ($context) {
103  $paymentManager = \Application::getPaymentManager($context);
104  $navigationMenuItem->setIsDisplayed(\Validation::isLoggedIn() && $context->getData('paymentsEnabled') && $paymentManager->isConfigured() && $context->getData('publishingMode') == PUBLISHING_MODE_SUBSCRIPTION);
105  }
106  break;
107  }
108 
109  if ($navigationMenuItem->getIsDisplayed()) {
110 
111  // Set the URL
112  switch ($menuItemType) {
113  case NMI_TYPE_CURRENT:
114  $navigationMenuItem->setUrl($dispatcher->url(
115  $request,
116  ROUTE_PAGE,
117  null,
118  'issue',
119  'current',
120  null
121  ));
122  break;
123  case NMI_TYPE_ARCHIVES:
124  $navigationMenuItem->setUrl($dispatcher->url(
125  $request,
126  ROUTE_PAGE,
127  null,
128  'issue',
129  'archive',
130  null
131  ));
132  break;
134  $navigationMenuItem->setUrl($dispatcher->url(
135  $request,
136  ROUTE_PAGE,
137  null,
138  'about',
139  'subscriptions',
140  null
141  ));
142  break;
144  $navigationMenuItem->setUrl($dispatcher->url(
145  $request,
146  ROUTE_PAGE,
147  null,
148  'user',
149  'subscriptions',
150  null
151  ));
152  break;
153  }
154  }
155  }
156 }
APP\Services\NavigationMenuService\getDisplayStatusCallback
getDisplayStatusCallback($hookName, $args)
Definition: NavigationMenuService.inc.php:74
AppLocale\requireComponents
static requireComponents()
Definition: env1/MockAppLocale.inc.php:56
Validation\isLoggedInAs
static isLoggedInAs()
Definition: Validation.inc.php:388
APP\Services\NavigationMenuService\getMenuItemTypesCallback
getMenuItemTypesCallback($hookName, $args)
Definition: NavigationMenuService.inc.php:40
APP\Services\NMI_TYPE_MY_SUBSCRIPTIONS
const NMI_TYPE_MY_SUBSCRIPTIONS
Definition: NavigationMenuService.inc.php:20
Validation\isLoggedIn
static isLoggedIn()
Definition: Validation.inc.php:376
Application\getPaymentManager
static getPaymentManager($context)
Definition: Application.inc.php:226
APP\Services\NavigationMenuService
Definition: NavigationMenuService.inc.php:24
PKP\Services\PKPNavigationMenuService\transformNavMenuItemTitle
transformNavMenuItemTitle($templateMgr, &$navigationMenuItem)
Definition: PKPNavigationMenuService.inc.php:509
APP\Services\NavigationMenuService\__construct
__construct()
Definition: NavigationMenuService.inc.php:29
APP\Services\NMI_TYPE_ARCHIVES
const NMI_TYPE_ARCHIVES
Definition: NavigationMenuService.inc.php:22
APP\Services\NMI_TYPE_CURRENT
const NMI_TYPE_CURRENT
Definition: NavigationMenuService.inc.php:21
PKPTemplateManager\getManager
static & getManager($request=null)
Definition: PKPTemplateManager.inc.php:1239
APP\Services
Definition: ContextService.inc.php:15
HookRegistry\register
static register($hookName, $callback, $hookSequence=HOOK_SEQUENCE_NORMAL)
Definition: HookRegistry.inc.php:70
PKP\Services\PKPNavigationMenuService
Definition: PKPNavigationMenuService.inc.php:20
PKPApplication\get
static get()
Definition: PKPApplication.inc.php:235
APP\Services\NMI_TYPE_SUBSCRIPTIONS
const NMI_TYPE_SUBSCRIPTIONS
Definition: NavigationMenuService.inc.php:19