2013-11-20 20:20:42 +00:00
|
|
|
<?php
|
|
|
|
|
|
|
|
class OpportunisticQMPlugin extends Plugin {
|
2019-06-03 01:56:52 +01:00
|
|
|
const PLUGIN_VERSION = '2.0.0';
|
|
|
|
|
2013-11-20 20:20:42 +00:00
|
|
|
public $qmkey = false;
|
|
|
|
public $secs_per_action = 1; // total seconds to run script per action
|
|
|
|
public $rel_to_pageload = true; // relative to pageload or queue start
|
2016-01-09 23:51:25 +00:00
|
|
|
public $verbosity = 1;
|
2013-11-20 20:20:42 +00:00
|
|
|
|
|
|
|
public function onRouterInitialized($m)
|
|
|
|
{
|
2019-07-11 19:14:03 +01:00
|
|
|
$m->connect('main/runqueue',
|
|
|
|
['action' => 'runqueue']);
|
2013-11-20 20:20:42 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
/**
|
|
|
|
* When the page has finished rendering, let's do some cron jobs
|
|
|
|
* if we have the time.
|
|
|
|
*/
|
2015-02-27 11:11:43 +00:00
|
|
|
public function onEndActionExecute(Action $action)
|
2013-11-20 20:20:42 +00:00
|
|
|
{
|
|
|
|
if ($action instanceof RunqueueAction) {
|
|
|
|
return true;
|
|
|
|
}
|
|
|
|
|
|
|
|
global $_startTime;
|
|
|
|
|
|
|
|
$args = array(
|
|
|
|
'qmkey' => common_config('opportunisticqm', 'qmkey'),
|
|
|
|
'max_execution_time' => $this->secs_per_action,
|
|
|
|
'started_at' => $this->rel_to_pageload ? $_startTime : null,
|
2016-01-09 23:51:25 +00:00
|
|
|
'verbosity' => $this->verbosity,
|
2013-11-20 20:20:42 +00:00
|
|
|
);
|
|
|
|
$qm = new OpportunisticQueueManager($args);
|
|
|
|
$qm->runQueue();
|
|
|
|
return true;
|
|
|
|
}
|
|
|
|
|
2019-08-12 15:03:30 +01:00
|
|
|
public function onPluginVersion(array &$versions): bool
|
2013-11-20 20:20:42 +00:00
|
|
|
{
|
|
|
|
$versions[] = array('name' => 'OpportunisticQM',
|
2019-06-03 01:56:52 +01:00
|
|
|
'version' => self::PLUGIN_VERSION,
|
2013-11-20 20:20:42 +00:00
|
|
|
'author' => 'Mikael Nordfeldth',
|
|
|
|
'homepage' => 'http://www.gnu.org/software/social/',
|
|
|
|
'description' =>
|
|
|
|
// TRANS: Plugin description.
|
|
|
|
_m('Opportunistic queue manager plugin for background processing.'));
|
|
|
|
return true;
|
|
|
|
}
|
|
|
|
}
|