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();
 | 
						|
    }
 | 
						|
}
 |