Completed
Push — master ( bf6f54...20dc95 )
by Andreas
03:16
created

ActionException   A

Complexity

Total Complexity 6

Size/Duplication

Total Lines 51
Duplicated Lines 0 %

Coupling/Cohesion

Components 1
Dependencies 0

Importance

Changes 0
Metric Value
dl 0
loc 51
rs 10
c 0
b 0
f 0
wmc 6
lcom 1
cbo 0

3 Methods

Rating   Name   Duplication   Size   Complexity  
A __construct() 0 13 3
A getNewAction() 0 3 1
A displayToUser() 0 4 2
1
<?php
2
3
namespace dokuwiki\Action\Exception;
4
5
/**
6
 * Class ActionException
7
 *
8
 * This exception and its subclasses signal that the current action should be
9
 * aborted and a different action should be used instead. The new action can
10
 * be given as parameter in the constructor. Defaults to 'show'
11
 *
12
 * The message will NOT be shown to the enduser
13
 *
14
 * @package dokuwiki\Action\Exception
15
 */
16
class ActionException extends \Exception {
17
18
    /** @var string the new action */
19
    protected $newaction;
20
21
    /** @var bool should the exception's message be shown to the user? */
22
    protected $displayToUser = false;
23
24
    /**
25
     * ActionException constructor.
26
     *
27
     * When no new action is given 'show' is assumed. For requests that originated in a POST,
28
     * a 'redirect' is used which will cause a redirect to the 'show' action.
29
     *
30
     * @param string|null $newaction the action that should be used next
31
     * @param string $message optional message, will not be shown except for some dub classes
32
     */
33
    public function __construct($newaction = null, $message = '') {
34
        global $INPUT;
35
        parent::__construct($message);
36
        if(is_null($newaction)) {
37
            if(strtolower($INPUT->server->str('REQUEST_METHOD')) == 'post') {
38
                $newaction = 'redirect';
39
            } else {
40
                $newaction = 'show';
41
            }
42
        }
43
44
        $this->newaction = $newaction;
45
    }
46
47
    /**
48
     * Returns the action to use next
49
     *
50
     * @return string
51
     */
52
    public function getNewAction() {
53
        return $this->newaction;
54
    }
55
56
    /**
57
     * Should this Exception's message be shown to the user?
58
     *
59
     * @param null|bool $set when null is given, the current setting is not changed
60
     * @return bool
61
     */
62
    public function displayToUser($set = null) {
63
        if(!is_null($set)) $this->displayToUser = $set;
64
        return $set;
65
    }
66
}
67