diff --git a/cron.php b/cron.php new file mode 100644 index 0000000000000000000000000000000000000000..ebde1b30b21c08f90f4e20cc614c4bb635fc9766 --- /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 0000000000000000000000000000000000000000..59ff0a07cd32e8bfd531efd8d16e3d292302f073 --- /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'"); +} + +?>