<?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; } }