diff options
Diffstat (limited to 'includes/cron.inc')
-rw-r--r-- | includes/cron.inc | 35 |
1 files changed, 26 insertions, 9 deletions
diff --git a/includes/cron.inc b/includes/cron.inc index 59ff0a07c..4cfb74fb8 100644 --- a/includes/cron.inc +++ b/includes/cron.inc @@ -1,24 +1,41 @@ <? -function cron_add($name, $help, $code, $scheduled, $message = "") { - if (empty($name) || empty($code) || empty($scheduled)) { +include "includes/theme.inc"; + +function cron_set($module, $scheduled, $message = "") { + if (empty($module) || empty($scheduled)) { $message = "failed: information missing"; } + else if (db_fetch_object(db_query("SELECT * FROM cron WHERE module = '$module'"))) { + db_query("UPDATE cron SET scheduled = $scheduled WHERE module = '$module'"); + } else { - $result = db_query("INSERT INTO cron (name, help, code, scheduled) VALUES ('". check_input($name) ."', '". check_input($help) ."', '". check_code($code) ."', '". check_input($scheduled) ."')"); + db_query("INSERT INTO cron (module, scheduled, timestamp) VALUES ('". check_input($module) ."', '". check_input($scheduled) ."', '42')"); } } -function cron_delete($id) { - $result = db_query("DELETE FROM cron WHERE id = $id"); +function cron_get($module) { + return db_fetch_object(db_query("SELECT * FROM cron WHERE module = '$module'"), 0); +} + +function cron_delete($module) { + $result = db_query("DELETE FROM cron WHERE module = '$module'"); } -function cron_execute($cron) { - eval($cron->code); +function cron_run($cron) { + $time = time(); - db_query("UPDATE cron SET timestamp = '". time() ."' WHERE id = $cron->id"); + $result = db_query("SELECT * FROM cron WHERE $time - timestamp > scheduled"); + + while ($task = db_fetch_object($result)) { + include "modules/". $task->module .".module"; + if ($function = $module["cron"]) { + watchdog("message", "cron: executed '". $task->module ."_cron()'"); + $function(); + } + } - watchdog("message", "cron: executed '$cron->name'"); + db_query("UPDATE cron SET timestamp = $time WHERE $time - timestamp > scheduled"); } ?> |