61 lines
		
	
	
		
			1.4 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
			
		
		
	
	
			61 lines
		
	
	
		
			1.4 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
<?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 AbstractAction {
 | 
						|
 | 
						|
    /** @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');
 | 
						|
    }
 | 
						|
 | 
						|
}
 |