|
- <?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');
- }
- }
|