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