67 lines
		
	
	
		
			1.7 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
			
		
		
	
	
			67 lines
		
	
	
		
			1.7 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
| <?php
 | |
| /**
 | |
|  * Popularity Feedback Plugin
 | |
|  *
 | |
|  * @license    GPL 2 (http://www.gnu.org/licenses/gpl.html)
 | |
|  */
 | |
| 
 | |
| class action_plugin_popularity extends DokuWiki_Action_Plugin
 | |
| {
 | |
| 
 | |
|     /**
 | |
|      * @var helper_plugin_popularity
 | |
|      */
 | |
|     protected $helper;
 | |
| 
 | |
|     public function __construct()
 | |
|     {
 | |
|         $this->helper = $this->loadHelper('popularity', false);
 | |
|     }
 | |
| 
 | |
|     /** @inheritdoc */
 | |
|     public function register(Doku_Event_Handler $controller)
 | |
|     {
 | |
|         $controller->register_hook('INDEXER_TASKS_RUN', 'AFTER', $this, 'autosubmit', array());
 | |
|     }
 | |
| 
 | |
|     /**
 | |
|      * Event handler
 | |
|      *
 | |
|      * @param Doku_Event $event
 | |
|      * @param $param
 | |
|      */
 | |
|     public function autosubmit(Doku_Event &$event, $param)
 | |
|     {
 | |
|         //Do we have to send the data now
 | |
|         if (!$this->helper->isAutosubmitEnabled() || $this->isTooEarlyToSubmit()) {
 | |
|             return;
 | |
|         }
 | |
| 
 | |
|         //Actually send it
 | |
|         $status = $this->helper->sendData($this->helper->gatherAsString());
 | |
| 
 | |
|         if ($status !== '') {
 | |
|             //If an error occured, log it
 | |
|             io_saveFile($this->helper->autosubmitErrorFile, $status);
 | |
|         } else {
 | |
|             //If the data has been sent successfully, previous log of errors are useless
 | |
|             @unlink($this->helper->autosubmitErrorFile);
 | |
|             //Update the last time we sent data
 | |
|             touch($this->helper->autosubmitFile);
 | |
|         }
 | |
| 
 | |
|         $event->stopPropagation();
 | |
|         $event->preventDefault();
 | |
|     }
 | |
| 
 | |
|     /**
 | |
|      * Check if it's time to send autosubmit data
 | |
|      * (we should have check if autosubmit is enabled first)
 | |
|      */
 | |
|     protected function isTooEarlyToSubmit()
 | |
|     {
 | |
|         $lastSubmit = $this->helper->lastSentTime();
 | |
|         return $lastSubmit + 24*60*60*30 > time();
 | |
|     }
 | |
| }
 |