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