92 lines
		
	
	
		
			2.1 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
			
		
		
	
	
			92 lines
		
	
	
		
			2.1 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
| <?php
 | |
| 
 | |
| namespace dokuwiki\Action;
 | |
| 
 | |
| use dokuwiki\Action\Exception\ActionAbort;
 | |
| 
 | |
| /**
 | |
|  * Class Edit
 | |
|  *
 | |
|  * Handle editing
 | |
|  *
 | |
|  * @package dokuwiki\Action
 | |
|  */
 | |
| class Edit extends AbstractAction {
 | |
| 
 | |
|     /** @inheritdoc */
 | |
|     public function minimumPermission() {
 | |
|         global $INFO;
 | |
|         if($INFO['exists']) {
 | |
|             return AUTH_READ; // we check again below
 | |
|         } else {
 | |
|             return AUTH_CREATE;
 | |
|         }
 | |
|     }
 | |
| 
 | |
|     /**
 | |
|      * @inheritdoc falls back to 'source' if page not writable
 | |
|      */
 | |
|     public function checkPreconditions() {
 | |
|         parent::checkPreconditions();
 | |
|         global $INFO;
 | |
| 
 | |
|         // no edit permission? view source
 | |
|         if($INFO['exists'] && !$INFO['writable']) {
 | |
|             throw new ActionAbort('source');
 | |
|         }
 | |
|     }
 | |
| 
 | |
|     /** @inheritdoc */
 | |
|     public function preProcess() {
 | |
|         global $ID;
 | |
|         global $INFO;
 | |
| 
 | |
|         global $TEXT;
 | |
|         global $RANGE;
 | |
|         global $PRE;
 | |
|         global $SUF;
 | |
|         global $REV;
 | |
|         global $SUM;
 | |
|         global $lang;
 | |
|         global $DATE;
 | |
| 
 | |
|         if(!isset($TEXT)) {
 | |
|             if($INFO['exists']) {
 | |
|                 if($RANGE) {
 | |
|                     list($PRE, $TEXT, $SUF) = rawWikiSlices($RANGE, $ID, $REV);
 | |
|                 } else {
 | |
|                     $TEXT = rawWiki($ID, $REV);
 | |
|                 }
 | |
|             } else {
 | |
|                 $TEXT = pageTemplate($ID);
 | |
|             }
 | |
|         }
 | |
| 
 | |
|         //set summary default
 | |
|         if(!$SUM) {
 | |
|             if($REV) {
 | |
|                 $SUM = sprintf($lang['restored'], dformat($REV));
 | |
|             } elseif(!$INFO['exists']) {
 | |
|                 $SUM = $lang['created'];
 | |
|             }
 | |
|         }
 | |
| 
 | |
|         // Use the date of the newest revision, not of the revision we edit
 | |
|         // This is used for conflict detection
 | |
|         if(!$DATE) $DATE = @filemtime(wikiFN($ID));
 | |
| 
 | |
|         //check if locked by anyone - if not lock for my self
 | |
|         $lockedby = checklock($ID);
 | |
|         if($lockedby) {
 | |
|             throw new ActionAbort('locked');
 | |
|         };
 | |
|         lock($ID);
 | |
|     }
 | |
| 
 | |
|     /** @inheritdoc */
 | |
|     public function tplContent() {
 | |
|         html_edit();
 | |
|     }
 | |
| 
 | |
| }
 |