[ Index ]

PHP Cross Reference of DokuWiki

title

Body

[close]

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

   1  <?php
   2  
   3  namespace dokuwiki\Action;
   4  
   5  use dokuwiki\Action\Exception\ActionException;
   6  use dokuwiki\Action\Exception\FatalException;
   7  
   8  /**
   9   * Class AbstractAction
  10   *
  11   * Base class for all actions
  12   *
  13   * @package dokuwiki\Action
  14   */
  15  abstract class AbstractAction
  16  {
  17      /** @var string holds the name of the action (lowercase class name, no namespace) */
  18      protected $actionname;
  19  
  20      /**
  21       * AbstractAction constructor.
  22       *
  23       * @param string $actionname the name of this action (see getActionName() for caveats)
  24       */
  25      public function __construct($actionname = '')
  26      {
  27          if ($actionname !== '') {
  28              $this->actionname = $actionname;
  29          } else {
  30              // http://stackoverflow.com/a/27457689/172068
  31              $this->actionname = strtolower(substr(strrchr(get_class($this), '\\'), 1));
  32          }
  33      }
  34  
  35      /**
  36       * Return the minimum permission needed
  37       *
  38       * This needs to return one of the AUTH_* constants. It will be checked against
  39       * the current user and page after checkPermissions() ran through. If it fails,
  40       * the user will be shown the Denied action.
  41       *
  42       * @return int
  43       */
  44      abstract public function minimumPermission();
  45  
  46      /**
  47       * Check conditions are met to run this action
  48       *
  49       * @throws ActionException
  50       * @return void
  51       */
  52      public function checkPreconditions()
  53      {
  54      }
  55  
  56      /**
  57       * Process data
  58       *
  59       * This runs before any output is sent to the browser.
  60       *
  61       * Throw an Exception if a different action should be run after this step.
  62       *
  63       * @throws ActionException
  64       * @return void
  65       */
  66      public function preProcess()
  67      {
  68      }
  69  
  70      /**
  71       * Output whatever content is wanted within tpl_content();
  72       *
  73       * @fixme we may want to return a Ui class here
  74       * @throws FatalException
  75       */
  76      public function tplContent()
  77      {
  78          throw new FatalException('No content for Action ' . $this->actionname);
  79      }
  80  
  81      /**
  82       * Returns the name of this action
  83       *
  84       * This is usually the lowercased class name, but may differ for some actions.
  85       * eg. the export_ modes or for the Plugin action.
  86       *
  87       * @return string
  88       */
  89      public function getActionName()
  90      {
  91          return $this->actionname;
  92      }
  93  }