diff options
-rw-r--r-- | cron.php | 12 | ||||
-rw-r--r-- | includes/cron.inc | 24 |
2 files changed, 36 insertions, 0 deletions
diff --git a/cron.php b/cron.php new file mode 100644 index 000000000..ebde1b30b --- /dev/null +++ b/cron.php @@ -0,0 +1,12 @@ +<? + +include "includes/theme.inc"; +include "includes/cron.inc"; + +$result = db_query("SELECT * FROM cron"); + +while ($cron = db_fetch_object($result)) { + if (time() - $cron->timestamp > $cron->scheduled) cron_execute($cron); +} + +?> diff --git a/includes/cron.inc b/includes/cron.inc new file mode 100644 index 000000000..59ff0a07c --- /dev/null +++ b/includes/cron.inc @@ -0,0 +1,24 @@ +<? + +function cron_add($name, $help, $code, $scheduled, $message = "") { + if (empty($name) || empty($code) || empty($scheduled)) { + $message = "failed: information missing"; + } + else { + $result = db_query("INSERT INTO cron (name, help, code, scheduled) VALUES ('". check_input($name) ."', '". check_input($help) ."', '". check_code($code) ."', '". check_input($scheduled) ."')"); + } +} + +function cron_delete($id) { + $result = db_query("DELETE FROM cron WHERE id = $id"); +} + +function cron_execute($cron) { + eval($cron->code); + + db_query("UPDATE cron SET timestamp = '". time() ."' WHERE id = $cron->id"); + + watchdog("message", "cron: executed '$cron->name'"); +} + +?> |