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