In some cases plugins need to execute tasks on a regular basis. For example, if your plugin needs to send an email to a fulfillment center after an invoice is paid you'll want to create a cron task for that.

Adding Cron Tasks

To add cron tasks have your plugin invoke the CronTasks::add() method during its install or upgrade process.

You need to remove any cron tasks you create when your plugin is completely uninstalled. Do this by invoking CronTasks::getTaskRunByKey(), and pass the cron task ID to CronTasks::delete() method.

<?php
class MyPluginPlugin extends Plugin {
 
    ...
 
    public function install($plugin_id) {
		Loader::loadModels($this, array("CronTasks"));

		$task = array(
			'key' => "my_task", // a string used to identify this cron task (see MyPluginPlugin::cron())
			'plugin_dir' => "my_plugin", // the plugin directory of this plugin
			'name' => "My Plugin Task", // the name of this cron task
			'description' => "This cron tasks does stuff", // the description of this task
			'type' => "time" // "time" = once per day at a defined time, "interval" = every few minutes or hours
		);
		$this->CronTasks->add($task);

		// Add additional cron tasks as needed...
    }
 
    public function cron($key) {
        // This method is invoked once for each different cron task configured by the plugin and identified by $key
    }
}
?>

Executing Cron Tasks

Cron tasks are automatically executed at the appropriate time as configured by Company > Automation settings.