Completed
Push — actionrefactor ( 6e4bf0 )
by Andreas
04:36
created

Edit   A

Complexity

Total Complexity 15

Size/Duplication

Total Lines 76
Duplicated Lines 0 %

Coupling/Cohesion

Components 0
Dependencies 2

Importance

Changes 0
Metric Value
dl 0
loc 76
rs 10
c 0
b 0
f 0
wmc 15
lcom 0
cbo 2

4 Methods

Rating   Name   Duplication   Size   Complexity  
A minimumPermission() 0 8 2
A checkPermissions() 0 9 3
D preProcess() 0 45 9
A tplContent() 0 3 1
1
<?php
2
3
namespace dokuwiki\Action;
4
5
use dokuwiki\Action\Exception\ActionAbort;
6
7
/**
8
 * Class Edit
9
 *
10
 * Handle editing
11
 *
12
 * @package dokuwiki\Action
13
 */
14
class Edit extends AbstractAction {
15
16
    /** @inheritdoc */
17
    function minimumPermission() {
0 ignored issues
show
Best Practice introduced by
It is generally recommended to explicitly declare the visibility for methods.

Adding explicit visibility (private, protected, or public) is generally recommend to communicate to other developers how, and from where this method is intended to be used.

Loading history...
18
        global $INFO;
19
        if($INFO['exists']) {
20
            return AUTH_READ; // we check again below
21
        } else {
22
            return AUTH_CREATE;
23
        }
24
    }
25
26
    /**
27
     * @inheritdoc falls back to 'source' if page not writable
28
     */
29
    public function checkPermissions() {
30
        parent::checkPermissions();
31
        global $INFO;
32
33
        // no edit permission? view source
34
        if($INFO['exists'] && !$INFO['writable']) {
35
            throw new ActionAbort('source');
36
        }
37
    }
38
39
    public function preProcess() {
40
        global $ID;
41
        global $INFO;
42
43
        global $TEXT;
44
        global $RANGE;
45
        global $PRE;
46
        global $SUF;
47
        global $REV;
48
        global $SUM;
49
        global $lang;
50
        global $DATE;
51
52
        if(!isset($TEXT)) {
53
            if($INFO['exists']) {
54
                if($RANGE) {
55
                    list($PRE, $TEXT, $SUF) = rawWikiSlices($RANGE, $ID, $REV);
56
                } else {
57
                    $TEXT = rawWiki($ID, $REV);
58
                }
59
            } else {
60
                $TEXT = pageTemplate($ID);
61
            }
62
        }
63
64
        //set summary default
65
        if(!$SUM) {
66
            if($REV) {
67
                $SUM = sprintf($lang['restored'], dformat($REV));
68
            } elseif(!$INFO['exists']) {
69
                $SUM = $lang['created'];
70
            }
71
        }
72
73
        // Use the date of the newest revision, not of the revision we edit
74
        // This is used for conflict detection
75
        if(!$DATE) $DATE = @filemtime(wikiFN($ID));
76
77
        //check if locked by anyone - if not lock for my self
78
        $lockedby = checklock($ID);
79
        if($lockedby) {
80
            throw new ActionAbort('locked');
81
        };
82
        lock($ID);
83
    }
84
85
    public function tplContent() {
86
        html_edit();
87
    }
88
89
}
90