1<?php
2
3namespace dokuwiki\Action;
4
5use dokuwiki\Action\Exception\ActionAbort;
6use dokuwiki\Action\Exception\ActionException;
7
8/**
9 * Class Save
10 *
11 * Save at the end of an edit session
12 *
13 * @package dokuwiki\Action
14 */
15class Save extends AbstractAction {
16
17    /** @inheritdoc */
18    public function minimumPermission() {
19        global $INFO;
20        if($INFO['exists']) {
21            return AUTH_EDIT;
22        } else {
23            return AUTH_CREATE;
24        }
25    }
26
27    /** @inheritdoc */
28    public function preProcess() {
29        if(!checkSecurityToken()) throw new ActionException('preview');
30
31        global $ID;
32        global $DATE;
33        global $PRE;
34        global $TEXT;
35        global $SUF;
36        global $SUM;
37        global $lang;
38        global $INFO;
39        global $INPUT;
40
41        //spam check
42        if(checkwordblock()) {
43            msg($lang['wordblock'], -1);
44            throw new ActionException('edit');
45        }
46        //conflict check
47        if($DATE != 0
48            && isset($INFO['meta']['date']['modified'])
49            && $INFO['meta']['date']['modified'] > $DATE
50        ) {
51            throw new ActionException('conflict');
52        }
53
54        //save it
55        saveWikiText($ID, con($PRE, $TEXT, $SUF, true), $SUM, $INPUT->bool('minor')); //use pretty mode for con
56        //unlock it
57        unlock($ID);
58
59        // continue with draftdel -> redirect -> show
60        throw new ActionAbort('draftdel');
61    }
62
63}
64