HOME


Mini Shell 1.0
DIR: /home/dhnidqcz/journal.pragmaticsng.org/lib__47455f6/pkp/pages/user/
Upload File :
Current File : /home/dhnidqcz/journal.pragmaticsng.org/lib__47455f6/pkp/pages/user/PKPUserHandler.php
<?php

/**
 * @file pages/user/PKPUserHandler.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 PKPUserHandler
 *
 * @ingroup pages_user
 *
 * @brief Handle requests for user functions.
 */

namespace PKP\pages\user;

use APP\core\Request;
use APP\handler\Handler;
use APP\template\TemplateManager;
use PKP\core\JSONMessage;
use PKP\core\PKPRequest;
use PKP\facades\Locale;
use PKP\security\Validation;
use PKP\user\InterestManager;

class PKPUserHandler extends Handler
{
    /**
     * Index page; redirect to profile
     */
    public function index($args, $request)
    {
        $request->redirect(null, null, 'profile');
    }

    /**
     * Change the locale for the current user.
     *
     * @param array $args first parameter is the new locale
     */
    public function setLocale($args, $request)
    {
        $setLocale = array_shift($args);

        $site = $request->getSite();
        $context = $request->getContext();
        if ($context != null) {
            $contextSupportedLocales = (array) $context->getSupportedLocales();
        }

        if (Locale::isLocaleValid($setLocale) && (!isset($contextSupportedLocales) || in_array($setLocale, $contextSupportedLocales)) && in_array($setLocale, $site->getSupportedLocales())) {
            $session = $request->getSession();
            $session->setSessionVar('currentLocale', $setLocale);
        }

        $source = $request->getUserVar('source');
        if (preg_match('#^/\w#', $source) === 1) {
            $request->redirectUrl($source);
        }

        if (isset($_SERVER['HTTP_REFERER'])) {
            $request->redirectUrl($_SERVER['HTTP_REFERER']);
        }

        $request->redirect(null, 'index');
    }

    /**
     * Get interests for reviewer interests autocomplete.
     *
     * @param array $args
     * @param PKPRequest $request
     *
     * @return JSONMessage JSON object
     */
    public function getInterests($args, $request)
    {
        return new JSONMessage(
            true,
            (new InterestManager())->getAllInterests($request->getUserVar('term'))
        );
    }

    /**
     * Display an authorization denied message.
     *
     * @param array $args
     * @param Request $request
     */
    public function authorizationDenied($args, $request)
    {
        if (!Validation::isLoggedIn()) {
            Validation::redirectLogin();
        }

        // Get message with sanity check (for XSS or phishing)
        $authorizationMessage = $request->getUserVar('message');
        if (!preg_match('/^[a-zA-Z0-9.]+$/', $authorizationMessage)) {
            fatalError('Invalid locale key for auth message.');
        }

        $this->setupTemplate($request);
        $templateMgr = TemplateManager::getManager($request);
        $templateMgr->assign('message', $authorizationMessage);
        return $templateMgr->display('frontend/pages/message.tpl');
    }
}