mirror of
https://github.com/silverstripe/silverstripe-framework
synced 2024-10-22 14:05:37 +02:00
e5f1ca3bbe
1. Separated responsibility of handleAction so that it no longer bootstraps the controller and cleans up after the request is handled. 2. NEW beforeHandleRequest to take responsibility of bootstrapping the controller 3. NEW afterHandleRequest to take responsibility of cleanup for the controller 4. NEW calling init on controllers deprecated in favour of callInit() which takes responsibility of enforcing that "base init" is called and the before and after hooks 5. NEW Added prepareResponse to Controller for dealing with responses from controllers 6. NEW setResponse added to controller for setting response objects on the controller
41 lines
1.0 KiB
PHP
41 lines
1.0 KiB
PHP
<?php
|
|
/**
|
|
* 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.
|
|
*
|
|
* @package framework
|
|
* @subpackage cron
|
|
*/
|
|
abstract class CliController extends Controller {
|
|
|
|
private static $allowed_actions = array(
|
|
'index'
|
|
);
|
|
|
|
protected function init() {
|
|
parent::init();
|
|
// Unless called from the command line, all CliControllers need ADMIN privileges
|
|
if(!Director::is_cli() && !Permission::check("ADMIN")) {
|
|
return Security::permissionFailure();
|
|
}
|
|
}
|
|
|
|
public function index() {
|
|
foreach(ClassInfo::subclassesFor($this->class) as $subclass) {
|
|
echo $subclass . "\n";
|
|
$task = new $subclass();
|
|
$task->doInit();
|
|
$task->process();
|
|
}
|
|
}
|
|
|
|
/**
|
|
* Overload this method to contain the task logic.
|
|
*/
|
|
public function process() {}
|
|
|
|
}
|