summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--cron.php12
-rw-r--r--includes/cron.inc24
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'");
+}
+
+?>