[ Index ]

PHP Cross Reference of DokuWiki

title

Body

[close]

/lib/plugins/popularity/ -> action.php (source)

   1  <?php
   2  /**
   3   * Popularity Feedback Plugin
   4   *
   5   * @license    GPL 2 (http://www.gnu.org/licenses/gpl.html)
   6   */
   7  
   8  class action_plugin_popularity extends DokuWiki_Action_Plugin
   9  {
  10  
  11      /**
  12       * @var helper_plugin_popularity
  13       */
  14      protected $helper;
  15  
  16      public function __construct()
  17      {
  18          $this->helper = $this->loadHelper('popularity', false);
  19      }
  20  
  21      /** @inheritdoc */
  22      public function register(Doku_Event_Handler $controller)
  23      {
  24          $controller->register_hook('INDEXER_TASKS_RUN', 'AFTER', $this, 'autosubmit', array());
  25      }
  26  
  27      /**
  28       * Event handler
  29       *
  30       * @param Doku_Event $event
  31       * @param $param
  32       */
  33      public function autosubmit(Doku_Event &$event, $param)
  34      {
  35          //Do we have to send the data now
  36          if (!$this->helper->isAutosubmitEnabled() || $this->isTooEarlyToSubmit()) {
  37              return;
  38          }
  39  
  40          //Actually send it
  41          $status = $this->helper->sendData($this->helper->gatherAsString());
  42  
  43          if ($status !== '') {
  44              //If an error occured, log it
  45              io_saveFile($this->helper->autosubmitErrorFile, $status);
  46          } else {
  47              //If the data has been sent successfully, previous log of errors are useless
  48              @unlink($this->helper->autosubmitErrorFile);
  49              //Update the last time we sent data
  50              touch($this->helper->autosubmitFile);
  51          }
  52  
  53          $event->stopPropagation();
  54          $event->preventDefault();
  55      }
  56  
  57      /**
  58       * Check if it's time to send autosubmit data
  59       * (we should have check if autosubmit is enabled first)
  60       */
  61      protected function isTooEarlyToSubmit()
  62      {
  63          $lastSubmit = $this->helper->lastSentTime();
  64          return $lastSubmit + 24*60*60*30 > time();
  65      }
  66  }