summaryrefslogtreecommitdiff
path: root/platform/www/inc/Action/Save.php
diff options
context:
space:
mode:
Diffstat (limited to 'platform/www/inc/Action/Save.php')
-rw-r--r--platform/www/inc/Action/Save.php60
1 files changed, 60 insertions, 0 deletions
diff --git a/platform/www/inc/Action/Save.php b/platform/www/inc/Action/Save.php
new file mode 100644
index 0000000..0b24729
--- /dev/null
+++ b/platform/www/inc/Action/Save.php
@@ -0,0 +1,60 @@
+<?php
+
+namespace dokuwiki\Action;
+
+use dokuwiki\Action\Exception\ActionAbort;
+use dokuwiki\Action\Exception\ActionException;
+
+/**
+ * Class Save
+ *
+ * Save at the end of an edit session
+ *
+ * @package dokuwiki\Action
+ */
+class Save extends AbstractAction {
+
+ /** @inheritdoc */
+ public function minimumPermission() {
+ global $INFO;
+ if($INFO['exists']) {
+ return AUTH_EDIT;
+ } else {
+ return AUTH_CREATE;
+ }
+ }
+
+ /** @inheritdoc */
+ public function preProcess() {
+ if(!checkSecurityToken()) throw new ActionException('preview');
+
+ global $ID;
+ global $DATE;
+ global $PRE;
+ global $TEXT;
+ global $SUF;
+ global $SUM;
+ global $lang;
+ global $INFO;
+ global $INPUT;
+
+ //spam check
+ if(checkwordblock()) {
+ msg($lang['wordblock'], -1);
+ throw new ActionException('edit');
+ }
+ //conflict check
+ if($DATE != 0 && $INFO['meta']['date']['modified'] > $DATE) {
+ throw new ActionException('conflict');
+ }
+
+ //save it
+ saveWikiText($ID, con($PRE, $TEXT, $SUF, true), $SUM, $INPUT->bool('minor')); //use pretty mode for con
+ //unlock it
+ unlock($ID);
+
+ // continue with draftdel -> redirect -> show
+ throw new ActionAbort('draftdel');
+ }
+
+}