diff --git a/server/addons.php b/server/addons.php new file mode 100644 index 0000000000000000000000000000000000000000..615a56d7434b64912d6b114874d20164db0a7117 --- /dev/null +++ b/server/addons.php @@ -0,0 +1,72 @@ +uses('ini_parser,file,services,getconf,system,cron,functions'); +$app->load('libdatetime,cronjob'); + +// Path settings +$path = SCRIPT_PATH . '/lib/classes/cron.d'; + +//** Get commandline options +$cmd_opt = getopt('', array('cronjob::')); + +if(isset($cmd_opt['cronjob']) && is_file($path.'/'.$cmd_opt['cronjob'])) { + // Cronjob that shell be run + $cronjob_file = $cmd_opt['cronjob']; +} else { + die('Usage example: php cron_debug.php --cronjob=100-mailbox_stats.inc.php'); +} + +// Load and run the cronjob +$name = substr($cronjob_file, 0, strpos($cronjob_file, '.')); +if(preg_match('/^\d+\-(.*)$/', $name, $match)) $name = $match[1]; // strip numerical prefix from file name +include $path . '/' . $cronjob_file; +$class_name = 'cronjob_' . $name; +$cronjob = new $class_name(); + +$cronjob->onPrepare(); +$cronjob->onBeforeRun(); +$cronjob->onRunJob(); +$cronjob->onAfterRun(); + +die("finished.\n"); + +?>