summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDries Buytaert <dries@buytaert.net>2000-12-23 15:23:34 +0000
committerDries Buytaert <dries@buytaert.net>2000-12-23 15:23:34 +0000
commit8d5b4e7b8615b636eaef8f50eaac45d27dc52b33 (patch)
tree051fe1574181f17d11b717b4487f999b46b5f447
parent60e1a60dd3661c79fee726e0d3407aee8b4038bf (diff)
downloadbrdo-8d5b4e7b8615b636eaef8f50eaac45d27dc52b33.tar.gz
brdo-8d5b4e7b8615b636eaef8f50eaac45d27dc52b33.tar.bz2
- intermediate commit: see previous commit
-rw-r--r--includes/cron.inc41
-rw-r--r--includes/module.inc69
2 files changed, 69 insertions, 41 deletions
diff --git a/includes/cron.inc b/includes/cron.inc
deleted file mode 100644
index 4cfb74fb8..000000000
--- a/includes/cron.inc
+++ /dev/null
@@ -1,41 +0,0 @@
-<?
-
-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 {
- db_query("INSERT INTO cron (module, scheduled, timestamp) VALUES ('". check_input($module) ."', '". check_input($scheduled) ."', '42')");
- }
-}
-
-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_run($cron) {
- $time = time();
-
- $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();
- }
- }
-
- db_query("UPDATE cron SET timestamp = $time WHERE $time - timestamp > scheduled");
-}
-
-?>
diff --git a/includes/module.inc b/includes/module.inc
new file mode 100644
index 000000000..826e415b4
--- /dev/null
+++ b/includes/module.inc
@@ -0,0 +1,69 @@
+<?
+
+function module_iterate($function) {
+ global $repository;
+ foreach ($repository as $name=>$module) {
+ $function($name, $module);
+ }
+}
+
+function module_execute($module, $hook, $argument = "") {
+ global $repository;
+ return ($repository[$module][$hook]) ? $repository[$module][$hook]($argument) : "";
+}
+
+function module_rehash_crons($name, $module) {
+ if ($module["cron"]) {
+ if (!db_fetch_object(db_query("SELECT * FROM crons WHERE module = '$name'"))) {
+ db_query("INSERT INTO crons (module, scheduled, timestamp) VALUES ('". check_input($name) ."', '172800', '0')");
+ }
+ }
+ else {
+ db_query("DELETE FROM crons WHERE module = '$name'");
+ }
+}
+
+function module_rehash_blocks($name, $module) {
+ db_query("DELETE FROM blocks WHERE module = '$name'");
+ if ($module["block"]) {
+ foreach ($blocks = $module["block"]() as $offset=>$block) {
+ db_query("INSERT INTO blocks (name, module, offset) VALUES ('". check_input($block["info"]) ."', '". check_input($name) ."', '". check_input($offset) ."')");
+ }
+ }
+}
+
+function module_rehash($name) {
+ global $repository;
+
+ if ($module = $repository[$name]) {
+ $result = db_query("SELECT * FROM modules WHERE name = '$name'");
+
+ if (!$object = db_fetch_object($result)) {
+ db_query("INSERT INTO modules (name) VALUES ('". check_input($name) ."')");
+ }
+
+ // rehash crons (if necessary):
+ module_rehash_crons($name, $module);
+
+ // rehash blocks (if necessary):
+ module_rehash_blocks($name, $module);
+ }
+ else {
+ // remove all reference to module:
+ db_query("DELETE FROM modules WHERE name = '$name'");
+ db_query("DELETE FROM blocks WHERE module = '$name'");
+ db_query("DELETE FROM crons WHERE module = '$name'");
+ }
+}
+
+// load modules into repository:
+$handle = opendir("modules");
+while ($file = readdir($handle)) {
+ if ($filename = substr($file, 0, strpos($file, ".module"))) {
+ include "modules/$filename.module";
+ $repository[$filename] = $module;
+ }
+}
+closedir($handle);
+
+?>