summaryrefslogtreecommitdiff
path: root/includes/module.inc
diff options
context:
space:
mode:
Diffstat (limited to 'includes/module.inc')
-rw-r--r--includes/module.inc10
1 files changed, 8 insertions, 2 deletions
diff --git a/includes/module.inc b/includes/module.inc
index 6c11a358d..c339ee8f7 100644
--- a/includes/module.inc
+++ b/includes/module.inc
@@ -24,12 +24,18 @@ function module_rehash_crons($name, $module) {
}
function module_rehash_blocks($name, $module) {
- db_query("DELETE FROM blocks WHERE module = '$name'");
+ db_query("UPDATE blocks SET remove = '1' WHERE module = '$name'");
if ($module["block"] && $blocks = $module["block"]()) {
foreach ($blocks as $offset=>$block) {
- db_query("INSERT INTO blocks (name, module, offset) VALUES ('". check_input($block["info"]) ."', '". check_input($name) ."', '". check_input($offset) ."')");
+ if (!db_fetch_object(db_query("SELECT * FROM blocks WHERE module = '$name' AND name = '". check_input($block["info"]) ."'"))) {
+ db_query("INSERT INTO blocks (name, module, offset) VALUES ('". check_input($block["info"]) ."', '". check_input($name) ."', '". check_input($offset) ."')");
+ }
+ else {
+ db_query("UPDATE blocks SET offset = '". check_input($offset) ."', remove = '0' WHERE module = '$name' AND name = '". check_input($block["info"]) ."'");
+ }
}
}
+ db_query("DELETE FROM blocks WHERE module = '$name' AND remove = '1'");
}
function module_rehash($name) {