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 { 20 global $INFO; 21 if ($INFO['exists']) { 22 return AUTH_EDIT; 23 } else { 24 return AUTH_CREATE; 25 } 26 } 27 28 /** @inheritdoc */ 29 public function preProcess() 30 { 31 if (!checkSecurityToken()) throw new ActionException('preview'); 32 33 global $ID; 34 global $DATE; 35 global $PRE; 36 global $TEXT; 37 global $SUF; 38 global $SUM; 39 global $lang; 40 global $INFO; 41 global $INPUT; 42 43 //spam check 44 if (checkwordblock()) { 45 msg($lang['wordblock'], -1); 46 throw new ActionException('edit'); 47 } 48 //conflict check 49 if ( 50 $DATE != 0 51 && isset($INFO['meta']['date']['modified']) 52 && $INFO['meta']['date']['modified'] > $DATE 53 ) { 54 throw new ActionException('conflict'); 55 } 56 57 //save it 58 saveWikiText($ID, con($PRE, $TEXT, $SUF, true), $SUM, $INPUT->bool('minor')); //use pretty mode for con 59 //unlock it 60 unlock($ID); 61 62 // continue with draftdel -> redirect -> show 63 throw new ActionAbort('draftdel'); 64 } 65} 66