119 lines
2.7 KiB
PHP
119 lines
2.7 KiB
PHP
<?php
|
|
/**
|
|
* @file classes/linkAction/request/AjaxAction.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 AjaxAction
|
|
*
|
|
* @ingroup linkAction_request
|
|
*
|
|
* @brief Class defining an AJAX action.
|
|
*/
|
|
|
|
namespace PKP\linkAction\request;
|
|
|
|
use APP\core\Application;
|
|
|
|
class AjaxAction extends LinkActionRequest
|
|
{
|
|
public const AJAX_REQUEST_TYPE_GET = 'get';
|
|
public const AJAX_REQUEST_TYPE_POST = 'post';
|
|
|
|
/** @var string */
|
|
public $_remoteAction;
|
|
|
|
/** @var string */
|
|
public $_requestType;
|
|
|
|
/** @var array */
|
|
public $_requestData;
|
|
|
|
/**
|
|
* Constructor
|
|
*
|
|
* @param string $remoteAction The target URL.
|
|
* @param string $requestType One of the AJAX_REQUEST_TYPE_* constants.
|
|
* @param array $requestData Any request data (e.g. POST params) to be sent.
|
|
*/
|
|
public function __construct($remoteAction, $requestType = self::AJAX_REQUEST_TYPE_POST, $requestData = [])
|
|
{
|
|
parent::__construct();
|
|
$this->_remoteAction = $remoteAction;
|
|
$this->_requestType = $requestType;
|
|
$this->_requestData = array_merge($requestData, [
|
|
'csrfToken' => Application::get()->getRequest()->getSession()->getCSRFToken(),
|
|
]);
|
|
}
|
|
|
|
|
|
//
|
|
// Getters and Setters
|
|
//
|
|
/**
|
|
* Get the target URL.
|
|
*
|
|
* @return string
|
|
*/
|
|
public function getRemoteAction()
|
|
{
|
|
return $this->_remoteAction;
|
|
}
|
|
|
|
/**
|
|
* Get the request type.
|
|
*
|
|
* @return string
|
|
*/
|
|
public function getRequestType()
|
|
{
|
|
return $this->_requestType;
|
|
}
|
|
|
|
/**
|
|
* Get the request data.
|
|
*
|
|
* @return array
|
|
*/
|
|
public function getRequestData()
|
|
{
|
|
return $this->_requestData;
|
|
}
|
|
|
|
|
|
//
|
|
// Overridden protected methods from LinkActionRequest
|
|
//
|
|
/**
|
|
* @see LinkActionRequest::getJSLinkActionRequest()
|
|
*/
|
|
public function getJSLinkActionRequest()
|
|
{
|
|
return '$.pkp.classes.linkAction.AjaxRequest';
|
|
}
|
|
|
|
/**
|
|
* @see LinkActionRequest::getLocalizedOptions()
|
|
*/
|
|
public function getLocalizedOptions()
|
|
{
|
|
return [
|
|
'url' => $this->getRemoteAction(),
|
|
'requestType' => $this->getRequestType(),
|
|
'data' => $this->getRequestData(),
|
|
];
|
|
}
|
|
}
|
|
|
|
if (!PKP_STRICT_MODE) {
|
|
class_alias('\PKP\linkAction\request\AjaxAction', '\AjaxAction');
|
|
foreach ([
|
|
'AJAX_REQUEST_TYPE_GET',
|
|
'AJAX_REQUEST_TYPE_POST',
|
|
] as $constantName) {
|
|
define($constantName, constant('\AjaxAction::' . $constantName));
|
|
}
|
|
}
|