diff --git a/rules_scheduler/includes/rules_scheduler.handler.inc b/rules_scheduler/includes/rules_scheduler.handler.inc index 6e7afa7..83cb66d 100644 --- a/rules_scheduler/includes/rules_scheduler.handler.inc +++ b/rules_scheduler/includes/rules_scheduler.handler.inc @@ -53,16 +53,28 @@ class RulesSchedulerDefaultTaskHandler implements RulesSchedulerTaskHandlerInter /** * Interface for scheduled task handlers. + * + * Task handlers control the behavior of a task when it's queued or executed. + * Unless specified otherwise, the RulesSchedulerDefaultTaskHandler task handler + * is used. + * + * @see rules_scheduler_run_task() + * @see rules_scheduler_cron() + * @see RulesSchedulerDefaultTaskHandler */ interface RulesSchedulerTaskHandlerInterface { /** * Processes a queue item. + * + * @see rules_scheduler_run_task() */ public function runTask(); /** - * Hook for processing a task after it has been queued. + * Processes a task after it has been queued. + * + * @see rules_scheduler_cron() */ public function afterTaskQueued(); diff --git a/rules_scheduler/rules_scheduler.module b/rules_scheduler/rules_scheduler.module index 3db3ce0..2aa5e47 100644 --- a/rules_scheduler/rules_scheduler.module +++ b/rules_scheduler/rules_scheduler.module @@ -24,9 +24,7 @@ function rules_scheduler_cron() { // Add the task to the queue and remove the entry afterwards. if ($queue->createItem($task)) { $task_created = TRUE; - $class = !empty($task['handler']) ? $task['handler'] : 'RulesSchedulerDefaultTaskHandler'; - $handler = new $class($task); - $handler->afterTaskQueued($task); + rules_scheduler_task_handler($task)->afterTaskQueued(); } } @@ -53,11 +51,25 @@ function rules_scheduler_cron_queue_info() { /** * Queue worker callback for running a single task. + * + * @param array $task + * The task to process. */ function rules_scheduler_run_task(array $task) { + rules_scheduler_task_handler($task)->runTask(); +} + +/** + * Returns the task handler for a given task. + * + * @param array $task + * A task (queue item) array. + * @return RulesSchedulerTaskHandlerInterface + * The task handler. + */ +function rules_scheduler_task_handler(array $task) { $class = !empty($task['handler']) ? $task['handler'] : 'RulesSchedulerDefaultTaskHandler'; - $handler = new $class($task); - $handler->runTask($task); + return new $class($task); } /**