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 && $INFO['meta']['date']['modified'] > $DATE) { 48 throw new ActionException('conflict'); 49 } 50 51 //save it 52 saveWikiText($ID, con($PRE, $TEXT, $SUF, true), $SUM, $INPUT->bool('minor')); //use pretty mode for con 53 //unlock it 54 unlock($ID); 55 56 // continue with draftdel -> redirect -> show 57 throw new ActionAbort('draftdel'); 58 } 59 60} 61