2007-07-19 10:40:28 +00:00
|
|
|
<?php
|
2008-02-25 02:10:37 +00:00
|
|
|
/**
|
2008-12-01 01:15:27 +00:00
|
|
|
* Base class invoked from CLI rather than the webserver (Cron jobs, handling email bounces).
|
|
|
|
* You can call subclasses of CliController directly, which will trigger a
|
|
|
|
* call to {@link process()} on every sub-subclass. For instance, calling
|
|
|
|
* "sake DailyTask" from the commandline will call {@link process()} on every subclass
|
|
|
|
* of DailyTask.
|
|
|
|
*
|
2012-04-12 18:02:46 +12:00
|
|
|
* @package framework
|
2008-02-25 02:10:37 +00:00
|
|
|
* @subpackage cron
|
|
|
|
*/
|
2007-07-19 10:40:28 +00:00
|
|
|
abstract class CliController extends Controller {
|
2011-02-14 11:14:51 +13:00
|
|
|
|
|
|
|
static $allowed_actions = array(
|
|
|
|
'index'
|
|
|
|
);
|
2010-05-25 02:58:59 +00:00
|
|
|
|
|
|
|
function init() {
|
2009-02-01 23:49:53 +00:00
|
|
|
parent::init();
|
|
|
|
// Unless called from the command line, all CliControllers need ADMIN privileges
|
2010-05-25 02:58:59 +00:00
|
|
|
if(!Director::is_cli() && !Permission::check("ADMIN")) {
|
|
|
|
return Security::permissionFailure();
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
function index() {
|
|
|
|
foreach(ClassInfo::subclassesFor($this->class) as $subclass) {
|
|
|
|
echo $subclass . "\n";
|
|
|
|
$task = new $subclass();
|
2008-12-01 01:15:27 +00:00
|
|
|
$task->init();
|
2010-05-25 02:58:59 +00:00
|
|
|
$task->process();
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
2008-12-01 01:15:27 +00:00
|
|
|
/**
|
|
|
|
* Overload this method to contain the task logic.
|
|
|
|
*/
|
2010-05-25 02:58:59 +00:00
|
|
|
function process() {}
|
2009-02-01 23:49:53 +00:00
|
|
|
|
2012-03-24 16:04:52 +13:00
|
|
|
}
|