<?php namespace dokuwiki\Action; use dokuwiki\Action\Exception\ActionAbort; use dokuwiki\Action\Exception\ActionException; /** * Class Revert * * Quick revert to an old revision * * @package dokuwiki\Action */ class Revert extends AbstractUserAction { /** @inheritdoc */ public function minimumPermission() { return AUTH_EDIT; } /** * * @inheritdoc * @throws ActionAbort * @throws ActionException * @todo check for writability of the current page ($INFO might do it wrong and check the attic version) */ public function preProcess() { if (!checkSecurityToken()) throw new ActionException(); global $ID; global $REV; global $lang; // when no revision is given, delete current one // FIXME this feature is not exposed in the GUI currently $text = ''; $sum = $lang['deleted']; if ($REV) { $text = rawWiki($ID, $REV); if (!$text) throw new ActionException(); //something went wrong $sum = sprintf($lang['restored'], dformat($REV)); } // spam check if (checkwordblock($text)) { msg($lang['wordblock'], -1); throw new ActionException('edit'); } saveWikiText($ID, $text, $sum, false); msg($sum, 1); $REV = ''; // continue with draftdel -> redirect -> show throw new ActionAbort('draftdel'); } }