123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134 |
- <?php
- /**
- * @file
- * Hooks provided by the Elysia cron module.
- */
- /**
- * @addtogroup hooks
- * @{
- */
- /**
- * You can extend cron functionality in you modules by using elysia_cron api.
- *
- * With it you can:
- * - have more than one cron job per module
- * - have a different schedule rule for each cron job defined
- * - set a description for each cron job.
- *
- * To do this you should add in you module a new hook. This is the syntax:
- *
- * - 'key' is the identifier for the task you are defining.
- * You can define a timing for the standard cron hook of the module by using
- * the "MODULENAME_cron" key. (See examples).
- *
- * - description:
- * a textual description of the job, used in elysia cron's status
- * page. Use the untranslated string, without the "t()" wrapper (elysia_cron
- * will apply it)
- *
- * - rule:
- * the crontab rule. For example: "0 * * * *" to execute the task every hour.
- *
- * - weight (optional):
- * a numerical value to define order of execution. (Default:0)
- *
- * - callback (optional):
- * you can define here a name of a PHP function that should
- * by called to execute the task. This is not mandatory: if you don't specify
- * it Elysia cron will search for a function called like the task KEY.
- * If this function is not found, Elysia cron will call the "hook_cronapi"
- * function with $op = 'execute' and $job = 'KEY' (the key of the task).
- * (See examples)
- *
- * - arguments (optional):
- * an array of arguments passed to callback (only if callback is defined).
- *
- * - file/file path:
- * the PHP file that contains the callback (hook_menu's syntax).
- *
- * @param string $op
- * Operation: "list" or "execute".
- * @param string|null $job
- * Name of current job or it is NULL if we define job list.
- *
- * @return array
- * Job list.
- */
- function hook_cronapi($op, $job = NULL) {
- // General example of all parameters.
- $items['key'] = array(
- 'description' => 'string',
- 'rule' => 'string',
- 'weight' => 1234,
- 'callback' => 'function_name',
- 'arguments' => array('first', 'second', 3),
- // External file, like in hook_menu.
- 'file' => 'string',
- 'file path' => 'string',
- );
- // Run function example_sendmail_cron() every 2 hours.
- // Note: i don't need to define a callback, i'll use "example_sendmail_cron"
- // function.
- $items['example_sendmail_cron'] = array(
- 'description' => 'Send mail with news',
- 'rule' => '0 */2 * * *',
- );
- // Run example_news_fetch('all') every 5 minutes.
- // Note: this function has argument.
- $items['example_news_cron'] = array(
- 'description' => 'Send mail with news',
- 'rule' => '*/5 * * * *',
- 'callback' => 'example_news_fetch',
- 'arguments' => array('all'),
- );
- // Definition of rules list and embedded code.
- if ($op == 'list') {
- // Rules list.
- $items['job1'] = array(
- 'description' => 'Send mail with news',
- 'rule' => '0 */2 * * *',
- );
- $items['job2'] = array(
- 'description' => 'Send mail with news',
- 'rule' => '*/5 * * * *',
- );
- }
- elseif ($op == 'execute') {
- // Embedded code.
- switch ($job) {
- case 'job1':
- // ... job1 code.
- break;
- case 'job2':
- // ... job2 code.
- break;
- }
- }
- return $items;
- }
- /**
- * Altering hook_cron definition.
- *
- * You can use the "hook_cron_alter" function to edit cronapi data of other
- * modules.
- *
- * @param array $data
- * Array of cron rules.
- */
- function hook_cron_alter(&$data) {
- $data['key']['rule'] = '0 */6 * * *';
- }
- /**
- * @} End of "addtogroup hooks".
- */
|