Open Journal Systems  3.3.0
AdminHandler.inc.php
1 <?php
2 
16 import('classes.handler.Handler');
17 
18 class AdminHandler extends Handler {
19 
21  var $_isBackendPage = true;
22 
26  function __construct() {
27  parent::__construct();
28 
29  $this->addRoleAssignment(
30  [ROLE_ID_SITE_ADMIN],
31  [
32  'index',
33  'contexts',
34  'settings',
35  'wizard',
36  'systemInfo',
37  'phpinfo',
38  'expireSessions',
39  'clearTemplateCache',
40  'clearDataCache',
41  'downloadScheduledTaskLogFile',
42  'clearScheduledTaskLogFiles',
43  ]
44  );
45  }
46 
50  function authorize($request, &$args, $roleAssignments) {
51  import('lib.pkp.classes.security.authorization.PKPSiteAccessPolicy');
52  $this->addPolicy(new PKPSiteAccessPolicy($request, null, $roleAssignments));
53  $returner = parent::authorize($request, $args, $roleAssignments);
54 
55  // Admin shouldn't access this page from a specific context
56  if ($request->getContext()) {
57  return false;
58  }
59 
60  return $returner;
61  }
62 
66  function initialize($request) {
68  LOCALE_COMPONENT_PKP_ADMIN,
69  LOCALE_COMPONENT_APP_MANAGER,
70  LOCALE_COMPONENT_APP_ADMIN,
71  LOCALE_COMPONENT_APP_COMMON,
72  LOCALE_COMPONENT_PKP_USER,
73  LOCALE_COMPONENT_PKP_MANAGER
74  );
75  $templateMgr = TemplateManager::getManager($request);
76 
77  $templateMgr->assign([
78  'pageComponent' => 'AdminPage',
79  ]);
80 
81  if ($request->getRequestedOp() !== 'index') {
82  $router = $request->getRouter();
83  $templateMgr->assign([
84  'breadcrumbs' => [
85  [
86  'id' => 'admin',
87  'url' => $router->url($request, 'index', 'admin'),
88  'name' => __('navigation.admin'),
89  ]
90  ]
91  ]);
92  }
93 
94  if (Config::getVar('general', 'show_upgrade_warning')) {
95  import('lib.pkp.classes.site.VersionCheck');
96  if ($latestVersion = VersionCheck::checkIfNewVersionExists()) {
97  $currentVersion = VersionCheck::getCurrentDBVersion();
98  $templateMgr->assign([
99  'currentVersion' => $currentVersion,
100  'newVersionAvailable' => true,
101  'latestVersion' => $latestVersion,
102  ]);
103  }
104  }
105 
106  return parent::initialize($request);
107  }
108 
114  function index($args, $request) {
115  $this->setupTemplate($request);
116  $templateMgr = TemplateManager::getManager($request);
117  $templateMgr->assign([
118  'pageTitle' => __('admin.siteAdmin'),
119  ]);
120  $templateMgr->display('admin/index.tpl');
121  }
122 
128  function contexts($args, $request) {
129  $this->setupTemplate($request);
130  $templateMgr = TemplateManager::getManager($request);
131  $breadcrumbs = $templateMgr->get_template_vars('breadcrumbs');
132  $breadcrumbs[] = [
133  'id' => 'contexts',
134  'name' => __('admin.hostedContexts'),
135  ];
136  $templateMgr->assign([
137  'breadcrumbs' => $breadcrumbs,
138  'pageTitle' => __('admin.hostedContexts'),
139  ]);
140  $templateMgr->display('admin/contexts.tpl');
141  }
142 
148  function settings($args, $request) {
149  $this->setupTemplate($request);
150  $site = $request->getSite();
151  $dispatcher = $request->getDispatcher();
152 
153  $apiUrl = $dispatcher->url($request, ROUTE_API, CONTEXT_ID_ALL, 'site');
154  $themeApiUrl = $dispatcher->url($request, ROUTE_API, CONTEXT_ID_ALL, 'site/theme');
155  $temporaryFileApiUrl = $dispatcher->url($request, ROUTE_API, CONTEXT_ID_ALL, 'temporaryFiles');
156 
157  import('classes.file.PublicFileManager');
158  $publicFileManager = new PublicFileManager();
159  $baseUrl = $request->getBaseUrl() . '/' . $publicFileManager->getSiteFilesPath();
160 
161  $supportedLocales = $site->getSupportedLocales();
162  $localeNames = AppLocale::getAllLocales();
163  $locales = array_map(function($localeKey) use ($localeNames) {
164  return ['key' => $localeKey, 'label' => $localeNames[$localeKey]];
165  }, $supportedLocales);
166 
167  $siteAppearanceForm = new \PKP\components\forms\site\PKPSiteAppearanceForm($apiUrl, $locales, $site, $baseUrl, $temporaryFileApiUrl);
168  $siteConfigForm = new \PKP\components\forms\site\PKPSiteConfigForm($apiUrl, $locales, $site);
169  $siteInformationForm = new \PKP\components\forms\site\PKPSiteInformationForm($apiUrl, $locales, $site);
170  $themeForm = new \PKP\components\forms\context\PKPThemeForm($themeApiUrl, $locales);
171 
172  $templateMgr = TemplateManager::getManager($request);
173 
174  $templateMgr->setState([
175  'components' => [
176  FORM_SITE_APPEARANCE => $siteAppearanceForm->getConfig(),
177  FORM_SITE_CONFIG => $siteConfigForm->getConfig(),
178  FORM_SITE_INFO => $siteInformationForm->getConfig(),
179  FORM_THEME => $themeForm->getConfig(),
180  ],
181  ]);
182 
183  $breadcrumbs = $templateMgr->get_template_vars('breadcrumbs');
184  $breadcrumbs[] = [
185  'id' => 'settings',
186  'name' => __('admin.siteSettings'),
187  ];
188  $templateMgr->assign([
189  'breadcrumbs' => $breadcrumbs,
190  'pageTitle' => __('admin.siteSettings'),
191  'componentAvailability' => $this->siteSettingsAvailability($request),
192  ]);
193 
194  $templateMgr->display('admin/settings.tpl');
195  }
196 
203  private function siteSettingsAvailability($request) {
204  $tabsSingleContextAvailability = [
205  'siteSetup',
206  'languages',
207  ];
208 
209  $tabs = [
210  'siteSetup',
211  'siteAppearance',
212  'sitePlugins',
213  'siteConfig',
214  'siteInfo',
215  'languages',
216  'navigationMenus',
217  'siteTheme',
218  'siteAppearanceSetup',
219  ];
220 
221  $singleContextSite = (Services::get('context')->getCount() == 1);
222 
223  $tabsAvailability = array();
224 
225  foreach ($tabs as $tab) {
226  $tabsAvailability[$tab] = true;
227  if ($singleContextSite && !in_array($tab, $tabsSingleContextAvailability)) {
228  $tabsAvailability[$tab] = false;
229  }
230  }
231 
232  return $tabsAvailability;
233  }
234 
241  public function wizard($args, $request) {
242  $this->setupTemplate($request);
243  $router = $request->getRouter();
244  $dispatcher = $request->getDispatcher();
245 
246  if (!isset($args[0]) || !ctype_digit((string) $args[0])) {
247  $request->getDispatcher()->handle404();
248  }
249 
250  import('classes.core.Services');
251  $contextService = Services::get('context');
252  $context = $contextService->get((int) $args[0]);
253 
254  if (empty($context)) {
255  $request->getDispatcher()->handle404();
256  }
257 
258  $apiUrl = $dispatcher->url($request, ROUTE_API, $context->getPath(), 'contexts/' . $context->getId());
259  $themeApiUrl = $dispatcher->url($request, ROUTE_API, $context->getPath(), 'contexts/' . $context->getId() . '/theme');
260  $sitemapUrl = $router->url($request, $context->getPath(), 'sitemap');
261 
262  $supportedFormLocales = $context->getSupportedFormLocales();
263  $localeNames = AppLocale::getAllLocales();
264  $locales = array_map(function($localeKey) use ($localeNames) {
265  return ['key' => $localeKey, 'label' => $localeNames[$localeKey]];
266  }, $supportedFormLocales);
267 
268  $contextForm = new APP\components\forms\context\ContextForm($apiUrl, $locales, $request->getBaseUrl(), $context);
269  $themeForm = new PKP\components\forms\context\PKPThemeForm($themeApiUrl, $locales, $context);
270  $indexingForm = new PKP\components\forms\context\PKPSearchIndexingForm($apiUrl, $locales, $context, $sitemapUrl);
271 
272  $templateMgr = TemplateManager::getManager($request);
273 
274  $templateMgr->setState([
275  'components' => [
276  FORM_CONTEXT => $contextForm->getConfig(),
277  FORM_SEARCH_INDEXING => $indexingForm->getConfig(),
278  FORM_THEME => $themeForm->getConfig(),
279  ],
280  ]);
281 
282  $breadcrumbs = $templateMgr->get_template_vars('breadcrumbs');
283  $breadcrumbs[] = [
284  'id' => 'contexts',
285  'name' => __('admin.hostedContexts'),
286  'url' => $router->url($request, 'index', 'admin', 'contexts'),
287  ];
288  $breadcrumbs[] = [
289  'id' => 'wizard',
290  'name' => __('manager.settings.wizard'),
291  ];
292 
293  $templateMgr->assign([
294  'breadcrumbs' => $breadcrumbs,
295  'editContext' => $context,
296  'pageTitle' => __('manager.settings.wizard'),
297  ]);
298 
299  $templateMgr->display('admin/contextSettings.tpl');
300  }
301 
307  function systemInfo($args, $request) {
308  $this->setupTemplate($request, true);
309 
310  $versionDao = DAORegistry::getDAO('VersionDAO'); /* @var $versionDao VersionDAO */
311  $currentVersion = $versionDao->getCurrentVersion();
312 
313  if ($request->getUserVar('versionCheck')) {
314  $latestVersionInfo = VersionCheck::getLatestVersion();
315  $latestVersionInfo['patch'] = VersionCheck::getPatch($latestVersionInfo);
316  }
317 
318  $versionDao = DAORegistry::getDAO('VersionDAO'); /* @var $versionDao VersionDAO */
319  $versionHistory = $versionDao->getVersionHistory();
320 
321  $dbconn = DBConnection::getConn();
322  $dbServerInfo = $dbconn->ServerInfo();
323  $serverInfo = [
324  'admin.server.platform' => PHP_OS,
325  'admin.server.phpVersion' => phpversion(),
326  'admin.server.apacheVersion' => $_SERVER['SERVER_SOFTWARE'],
327  'admin.server.dbDriver' => Config::getVar('database', 'driver'),
328  'admin.server.dbVersion' => (empty($dbServerInfo['description']) ? $dbServerInfo['version'] : $dbServerInfo['description'])
329  ];
330 
331  $templateMgr = TemplateManager::getManager($request);
332 
333  $breadcrumbs = $templateMgr->get_template_vars('breadcrumbs');
334  $breadcrumbs[] = [
335  'id' => 'wizard',
336  'name' => __('admin.systemInformation'),
337  ];
338 
339  $templateMgr->assign([
340  'breadcrumbs' => $breadcrumbs,
341  'currentVersion' => $currentVersion,
342  'latestVersionInfo' => $latestVersionInfo,
343  'pageTitle' => __('admin.systemInformation'),
344  'versionHistory' => $versionHistory,
345  'serverInfo' => $serverInfo,
346  'configData' => Config::getData(),
347  ]);
348 
349  $templateMgr->display('admin/systemInfo.tpl');
350  }
351 
355  function phpinfo() {
356  phpinfo();
357  }
358 
364  function expireSessions($args, $request) {
365  $sessionDao = DAORegistry::getDAO('SessionDAO'); /* @var $sessionDao SessionDAO */
366  $sessionDao->deleteAllSessions();
367  $request->redirect(null, 'admin');
368  }
369 
375  function clearTemplateCache($args, $request) {
376  $templateMgr = TemplateManager::getManager($request);
377  $templateMgr->clearTemplateCache();
378  $templateMgr->clearCssCache();
379  $request->redirect(null, 'admin');
380  }
381 
387  function clearDataCache($args, $request) {
388  // Clear the CacheManager's caches
389  $cacheManager = CacheManager::getManager();
390  $cacheManager->flush();
391 
392  // Clear ADODB's cache
393  $userDao = DAORegistry::getDAO('UserDAO'); // As good as any
394  $userDao->flushCache();
395 
396  $request->redirect(null, 'admin');
397  }
398 
403  $request = Application::get()->getRequest();
404 
405  $file = basename($request->getUserVar('file'));
406  import('lib.pkp.classes.scheduledTask.ScheduledTaskHelper');
408  }
409 
414  import('lib.pkp.classes.scheduledTask.ScheduledTaskHelper');
416 
417  $request = Application::get()->getRequest();
418  $request->redirect(null, 'admin');
419  }
420 }
PKPHandler\addRoleAssignment
addRoleAssignment($roleIds, $operations)
Definition: PKPHandler.inc.php:213
PKPLocale\getAllLocales
static & getAllLocales()
Definition: PKPLocale.inc.php:537
AppLocale\requireComponents
static requireComponents()
Definition: env1/MockAppLocale.inc.php:56
AdminHandler\clearScheduledTaskLogFiles
clearScheduledTaskLogFiles()
Definition: AdminHandler.inc.php:413
APP\components\forms\context\ContextForm
Definition: ContextForm.inc.php:19
DAORegistry\getDAO
static & getDAO($name, $dbconn=null)
Definition: DAORegistry.inc.php:57
AdminHandler\systemInfo
systemInfo($args, $request)
Definition: AdminHandler.inc.php:307
AdminHandler\initialize
initialize($request)
Definition: AdminHandler.inc.php:66
VersionCheck\getCurrentDBVersion
static getCurrentDBVersion()
Definition: VersionCheck.inc.php:52
ScheduledTaskHelper\downloadExecutionLog
static downloadExecutionLog($file)
Definition: ScheduledTaskHelper.inc.php:201
AdminHandler\contexts
contexts($args, $request)
Definition: AdminHandler.inc.php:128
VersionCheck\checkIfNewVersionExists
static checkIfNewVersionExists()
Definition: VersionCheck.inc.php:174
AdminHandler\downloadScheduledTaskLogFile
downloadScheduledTaskLogFile()
Definition: AdminHandler.inc.php:402
ScheduledTaskHelper\clearExecutionLogs
static clearExecutionLogs()
Definition: ScheduledTaskHelper.inc.php:190
PublicFileManager
Wrapper class for uploading files to a site/journal's public directory.
Definition: PublicFileManager.inc.php:18
AdminHandler\settings
settings($args, $request)
Definition: AdminHandler.inc.php:148
VersionCheck\getPatch
static getPatch($versionInfo, $codeVersion=null)
Definition: VersionCheck.inc.php:127
PKP\components\forms\context\PKPThemeForm
Definition: PKPThemeForm.inc.php:26
AdminHandler\expireSessions
expireSessions($args, $request)
Definition: AdminHandler.inc.php:364
CacheManager\getManager
static getManager()
Definition: CacheManager.inc.php:27
Config\getVar
static getVar($section, $key, $default=null)
Definition: Config.inc.php:35
AdminHandler\index
index($args, $request)
Definition: AdminHandler.inc.php:114
VersionCheck\getLatestVersion
static getLatestVersion()
Definition: VersionCheck.inc.php:28
Config\getData
static & getData()
Definition: Config.inc.php:44
DBConnection\getConn
static & getConn()
Definition: DBConnection.inc.php:257
PKPTemplateManager\getManager
static & getManager($request=null)
Definition: PKPTemplateManager.inc.php:1239
AdminHandler
Handle requests for site administration functions.
Definition: AdminHandler.inc.php:18
PKPHandler\setupTemplate
setupTemplate($request)
Definition: PKPHandler.inc.php:466
AdminHandler\wizard
wizard($args, $request)
Definition: AdminHandler.inc.php:241
PKPApplication\get
static get()
Definition: PKPApplication.inc.php:235
PKPHandler\addPolicy
addPolicy($authorizationPolicy, $addToTop=false)
Definition: PKPHandler.inc.php:157
AdminHandler\__construct
__construct()
Definition: AdminHandler.inc.php:26
Handler
Base request handler application class.
Definition: Handler.inc.php:18
PKPSiteAccessPolicy
Class to that makes sure that a user is logged in.
Definition: PKPSiteAccessPolicy.inc.php:20
AdminHandler\phpinfo
phpinfo()
Definition: AdminHandler.inc.php:355
AdminHandler\$_isBackendPage
$_isBackendPage
Definition: AdminHandler.inc.php:21
AdminHandler\clearTemplateCache
clearTemplateCache($args, $request)
Definition: AdminHandler.inc.php:375
AdminHandler\clearDataCache
clearDataCache($args, $request)
Definition: AdminHandler.inc.php:387
AdminHandler\authorize
authorize($request, &$args, $roleAssignments)
Definition: AdminHandler.inc.php:50
PKPServices\get
static get($service)
Definition: PKPServices.inc.php:49
PKP\components\forms\context\PKPSearchIndexingForm
Definition: PKPSearchIndexingForm.inc.php:21