1f21dad39SAndreas Gohr<?php 2f21dad39SAndreas Gohr 3f21dad39SAndreas Gohrnamespace dokuwiki\Action; 4f21dad39SAndreas Gohr 5f21dad39SAndreas Gohruse dokuwiki\Action\Exception\ActionAbort; 6f21dad39SAndreas Gohruse dokuwiki\Action\Exception\ActionException; 7f21dad39SAndreas Gohr 8ab583a1bSAndreas Gohr/** 9ab583a1bSAndreas Gohr * Class Revert 10ab583a1bSAndreas Gohr * 11ab583a1bSAndreas Gohr * Quick revert to an old revision 12ab583a1bSAndreas Gohr * 13ab583a1bSAndreas Gohr * @package dokuwiki\Action 14ab583a1bSAndreas Gohr */ 15*601a1f60SAndreas Gohrclass Revert extends AbstractUserAction 16*601a1f60SAndreas Gohr{ 17f21dad39SAndreas Gohr 18f21dad39SAndreas Gohr /** @inheritdoc */ 19*601a1f60SAndreas Gohr public function minimumPermission() 20*601a1f60SAndreas Gohr { 21f21dad39SAndreas Gohr return AUTH_EDIT; 22f21dad39SAndreas Gohr } 23f21dad39SAndreas Gohr 24ec701221SAndreas Gohr /** 25ec701221SAndreas Gohr * 26ec701221SAndreas Gohr * @inheritdoc 27ec701221SAndreas Gohr * @throws ActionAbort 28ec701221SAndreas Gohr * @throws ActionException 29ec701221SAndreas Gohr * @todo check for writability of the current page ($INFO might do it wrong and check the attic version) 30ec701221SAndreas Gohr */ 31*601a1f60SAndreas Gohr public function preProcess() 32*601a1f60SAndreas Gohr { 33f21dad39SAndreas Gohr if (!checkSecurityToken()) throw new ActionException(); 34f21dad39SAndreas Gohr 35f21dad39SAndreas Gohr global $ID; 36f21dad39SAndreas Gohr global $REV; 37f21dad39SAndreas Gohr global $lang; 38f21dad39SAndreas Gohr 39f21dad39SAndreas Gohr // when no revision is given, delete current one 40f21dad39SAndreas Gohr // FIXME this feature is not exposed in the GUI currently 41f21dad39SAndreas Gohr $text = ''; 42f21dad39SAndreas Gohr $sum = $lang['deleted']; 43f21dad39SAndreas Gohr if ($REV) { 44f21dad39SAndreas Gohr $text = rawWiki($ID, $REV); 45f21dad39SAndreas Gohr if (!$text) throw new ActionException(); //something went wrong 46f21dad39SAndreas Gohr $sum = sprintf($lang['restored'], dformat($REV)); 47f21dad39SAndreas Gohr } 48f21dad39SAndreas Gohr 49f21dad39SAndreas Gohr // spam check 50f21dad39SAndreas Gohr if (checkwordblock($text)) { 51f21dad39SAndreas Gohr msg($lang['wordblock'], -1); 52f21dad39SAndreas Gohr throw new ActionException('edit'); 53f21dad39SAndreas Gohr } 54f21dad39SAndreas Gohr 55f21dad39SAndreas Gohr saveWikiText($ID, $text, $sum, false); 56f21dad39SAndreas Gohr msg($sum, 1); 57f21dad39SAndreas Gohr $REV = ''; 58231f749dSAndreas Gohr 59231f749dSAndreas Gohr // continue with draftdel -> redirect -> show 60231f749dSAndreas Gohr throw new ActionAbort('draftdel'); 61f21dad39SAndreas Gohr } 62f21dad39SAndreas Gohr 63f21dad39SAndreas Gohr} 64