[ Index ]

PHP Cross Reference of DokuWiki

title

Body

[close]

/inc/Action/ -> Edit.php (source)

   1  <?php
   2  
   3  namespace dokuwiki\Action;
   4  
   5  use dokuwiki\Ui\Editor;
   6  use dokuwiki\Action\Exception\ActionAbort;
   7  use dokuwiki\Ui;
   8  
   9  /**
  10   * Class Edit
  11   *
  12   * Handle editing
  13   *
  14   * @package dokuwiki\Action
  15   */
  16  class Edit extends AbstractAction
  17  {
  18      /** @inheritdoc */
  19      public function minimumPermission()
  20      {
  21          global $INFO;
  22          if ($INFO['exists']) {
  23              return AUTH_READ; // we check again below
  24          } else {
  25              return AUTH_CREATE;
  26          }
  27      }
  28  
  29      /**
  30       * @inheritdoc falls back to 'source' if page not writable
  31       */
  32      public function checkPreconditions()
  33      {
  34          parent::checkPreconditions();
  35          global $INFO;
  36  
  37          // no edit permission? view source
  38          if ($INFO['exists'] && !$INFO['writable']) {
  39              throw new ActionAbort('source');
  40          }
  41      }
  42  
  43      /** @inheritdoc */
  44      public function preProcess()
  45      {
  46          global $ID;
  47          global $INFO;
  48  
  49          global $TEXT;
  50          global $RANGE;
  51          global $PRE;
  52          global $SUF;
  53          global $REV;
  54          global $SUM;
  55          global $lang;
  56          global $DATE;
  57  
  58          if (!isset($TEXT)) {
  59              if ($INFO['exists']) {
  60                  if ($RANGE) {
  61                      [$PRE, $TEXT, $SUF] = rawWikiSlices($RANGE, $ID, $REV);
  62                  } else {
  63                      $TEXT = rawWiki($ID, $REV);
  64                  }
  65              } else {
  66                  $TEXT = pageTemplate($ID);
  67              }
  68          }
  69  
  70          //set summary default
  71          if (!$SUM) {
  72              if ($REV) {
  73                  $SUM = sprintf($lang['restored'], dformat($REV));
  74              } elseif (!$INFO['exists']) {
  75                  $SUM = $lang['created'];
  76              }
  77          }
  78  
  79          // Use the date of the newest revision, not of the revision we edit
  80          // This is used for conflict detection
  81          if (!$DATE) $DATE = @filemtime(wikiFN($ID));
  82  
  83          //check if locked by anyone - if not lock for my self
  84          $lockedby = checklock($ID);
  85          if ($lockedby) {
  86              throw new ActionAbort('locked');
  87          }
  88          lock($ID);
  89      }
  90  
  91      /** @inheritdoc */
  92      public function tplContent()
  93      {
  94          (new Editor())->show();
  95      }
  96  }