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