summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDries Buytaert <dries@buytaert.net>2002-10-30 08:12:28 +0000
committerDries Buytaert <dries@buytaert.net>2002-10-30 08:12:28 +0000
commitc9157a233b4c7e08d1d8659125f94ae3cba53786 (patch)
tree48d66c97c127bf466e71fe5efe429f9f507f68bc
parentaa28ec523077b16cb398b8644ca43962a0456870 (diff)
downloadbrdo-c9157a233b4c7e08d1d8659125f94ae3cba53786.tar.gz
brdo-c9157a233b4c7e08d1d8659125f94ae3cba53786.tar.bz2
- Made sure blocks are sorted by weight. Patch by Ax.
-rw-r--r--modules/block.module19
-rw-r--r--modules/block/block.module19
2 files changed, 32 insertions, 6 deletions
diff --git a/modules/block.module b/modules/block.module
index 2359f3ffa..0f4945256 100644
--- a/modules/block.module
+++ b/modules/block.module
@@ -79,8 +79,15 @@ function block_admin_save($edit) {
}
}
-function block_rehash() {
- $result = db_query("SELECT * FROM blocks ORDER BY weight");
+/**
+ * update blocks db table with blocks currently exported by modules
+ *
+ * @param array $order_by php array_multisort() style sort ordering, eg. "weight", SORT_ASC, SORT_STRING. see {@link http://www.php.net/manual/en/function.array-multisort.php}
+ * @return array blocks currently exported by modules, sorted by $order_by
+ * @access private
+ */
+function _block_rehash($order_by = array("weight")) {
+ $result = db_query("SELECT * FROM blocks");
while ($old_block = db_fetch_object($result)) {
$old_blocks[$old_block->module][$old_block->delta] = $old_block;
}
@@ -109,10 +116,16 @@ function block_rehash() {
db_query("INSERT INTO blocks (module, delta, status, weight, region, path, custom) VALUES ('%s', '%d', '%d', '%d', '%d', '%s', '%d')", $block["module"], $block["delta"], $block["status"], $block["weight"], $block["region"], $block["path"], $block["custom"]);
$blocks[] = $block;
+
+ // build array to sort on
+ $order[$order_by[0]][] = $block[$order_by[0]];
}
}
}
+ // sort
+ array_multisort($order[$order_by[0]], $order_by[1] ? $order_by[1] : SORT_ASC, $order_by[2] ? $order_by[2] : SORT_REGULAR, $blocks);
+
return $blocks;
}
@@ -121,7 +134,7 @@ function block_admin_display() {
$output = "<table border=\"1\" cellpadding=\"2\" cellspacing=\"2\">\n";
$output .= "<tr><th>block</th><th>module</th><th>enabled</th><th>custom</th><th>weight</th><th>region</th><th>path</th><th colspan=\"2\">operations</th></tr>\n";
- $blocks = block_rehash();
+ $blocks = _block_rehash();
foreach ($blocks as $block) {
$output .= "<tr>";
diff --git a/modules/block/block.module b/modules/block/block.module
index 2359f3ffa..0f4945256 100644
--- a/modules/block/block.module
+++ b/modules/block/block.module
@@ -79,8 +79,15 @@ function block_admin_save($edit) {
}
}
-function block_rehash() {
- $result = db_query("SELECT * FROM blocks ORDER BY weight");
+/**
+ * update blocks db table with blocks currently exported by modules
+ *
+ * @param array $order_by php array_multisort() style sort ordering, eg. "weight", SORT_ASC, SORT_STRING. see {@link http://www.php.net/manual/en/function.array-multisort.php}
+ * @return array blocks currently exported by modules, sorted by $order_by
+ * @access private
+ */
+function _block_rehash($order_by = array("weight")) {
+ $result = db_query("SELECT * FROM blocks");
while ($old_block = db_fetch_object($result)) {
$old_blocks[$old_block->module][$old_block->delta] = $old_block;
}
@@ -109,10 +116,16 @@ function block_rehash() {
db_query("INSERT INTO blocks (module, delta, status, weight, region, path, custom) VALUES ('%s', '%d', '%d', '%d', '%d', '%s', '%d')", $block["module"], $block["delta"], $block["status"], $block["weight"], $block["region"], $block["path"], $block["custom"]);
$blocks[] = $block;
+
+ // build array to sort on
+ $order[$order_by[0]][] = $block[$order_by[0]];
}
}
}
+ // sort
+ array_multisort($order[$order_by[0]], $order_by[1] ? $order_by[1] : SORT_ASC, $order_by[2] ? $order_by[2] : SORT_REGULAR, $blocks);
+
return $blocks;
}
@@ -121,7 +134,7 @@ function block_admin_display() {
$output = "<table border=\"1\" cellpadding=\"2\" cellspacing=\"2\">\n";
$output .= "<tr><th>block</th><th>module</th><th>enabled</th><th>custom</th><th>weight</th><th>region</th><th>path</th><th colspan=\"2\">operations</th></tr>\n";
- $blocks = block_rehash();
+ $blocks = _block_rehash();
foreach ($blocks as $block) {
$output .= "<tr>";