67 lines
1.9 KiB
PHP
67 lines
1.9 KiB
PHP
|
<?php
|
||
|
|
||
|
namespace dokuwiki\Action\Exception;
|
||
|
|
||
|
/**
|
||
|
* Class ActionException
|
||
|
*
|
||
|
* This exception and its subclasses signal that the current action should be
|
||
|
* aborted and a different action should be used instead. The new action can
|
||
|
* be given as parameter in the constructor. Defaults to 'show'
|
||
|
*
|
||
|
* The message will NOT be shown to the enduser
|
||
|
*
|
||
|
* @package dokuwiki\Action\Exception
|
||
|
*/
|
||
|
class ActionException extends \Exception {
|
||
|
|
||
|
/** @var string the new action */
|
||
|
protected $newaction;
|
||
|
|
||
|
/** @var bool should the exception's message be shown to the user? */
|
||
|
protected $displayToUser = false;
|
||
|
|
||
|
/**
|
||
|
* ActionException constructor.
|
||
|
*
|
||
|
* When no new action is given 'show' is assumed. For requests that originated in a POST,
|
||
|
* a 'redirect' is used which will cause a redirect to the 'show' action.
|
||
|
*
|
||
|
* @param string|null $newaction the action that should be used next
|
||
|
* @param string $message optional message, will not be shown except for some dub classes
|
||
|
*/
|
||
|
public function __construct($newaction = null, $message = '') {
|
||
|
global $INPUT;
|
||
|
parent::__construct($message);
|
||
|
if(is_null($newaction)) {
|
||
|
if(strtolower($INPUT->server->str('REQUEST_METHOD')) == 'post') {
|
||
|
$newaction = 'redirect';
|
||
|
} else {
|
||
|
$newaction = 'show';
|
||
|
}
|
||
|
}
|
||
|
|
||
|
$this->newaction = $newaction;
|
||
|
}
|
||
|
|
||
|
/**
|
||
|
* Returns the action to use next
|
||
|
*
|
||
|
* @return string
|
||
|
*/
|
||
|
public function getNewAction() {
|
||
|
return $this->newaction;
|
||
|
}
|
||
|
|
||
|
/**
|
||
|
* Should this Exception's message be shown to the user?
|
||
|
*
|
||
|
* @param null|bool $set when null is given, the current setting is not changed
|
||
|
* @return bool
|
||
|
*/
|
||
|
public function displayToUser($set = null) {
|
||
|
if(!is_null($set)) $this->displayToUser = $set;
|
||
|
return $set;
|
||
|
}
|
||
|
}
|