diff options
-rw-r--r-- | database/database.mysql | 3 | ||||
-rw-r--r-- | database/database.pgsql | 3 | ||||
-rw-r--r-- | database/updates.inc | 10 | ||||
-rw-r--r-- | modules/block.module | 34 | ||||
-rw-r--r-- | modules/block/block.module | 34 |
5 files changed, 39 insertions, 45 deletions
diff --git a/database/database.mysql b/database/database.mysql index ea9087668..920782aaa 100644 --- a/database/database.mysql +++ b/database/database.mysql @@ -128,8 +128,7 @@ CREATE TABLE blocks ( custom tinyint(2) DEFAULT '0' NOT NULL, throttle tinyint(1) DEFAULT '0' NOT NULL, visibility tinyint(1) DEFAULT '0' NOT NULL, - pages text NOT NULL, - PRIMARY KEY (module, delta) + pages text NOT NULL ) TYPE=MyISAM; -- diff --git a/database/database.pgsql b/database/database.pgsql index 885a82f4e..f083a3bd9 100644 --- a/database/database.pgsql +++ b/database/database.pgsql @@ -123,8 +123,7 @@ CREATE TABLE blocks ( custom smallint NOT NULL default '0', throttle smallint NOT NULL default '0', visibility smallint NOT NULL default '0', - pages text NOT NULL default '', - PRIMARY KEY (module, detla) + pages text NOT NULL default '' ); -- diff --git a/database/updates.inc b/database/updates.inc index 1b7ae8f2d..96d8da6fc 100644 --- a/database/updates.inc +++ b/database/updates.inc @@ -66,8 +66,7 @@ $sql_updates = array( "2005-08-08" => "update_144", "2005-08-15" => "update_145", "2005-08-25" => "update_146", - "2005-09-07" => "update_147", - "2005-09-12" => "update_148" + "2005-09-07" => "update_147" ); function update_110() { @@ -812,13 +811,6 @@ function update_147() { return $ret; } -function update_148() { - $ret = array(); - - $ret[] = update_sql('ALTER TABLE {blocks} ADD PRIMARY KEY (module, delta)'); - - return $ret; -} function update_sql($sql) { $edit = $_POST["edit"]; diff --git a/modules/block.module b/modules/block.module index 9dfaec3ac..576ca1a10 100644 --- a/modules/block.module +++ b/modules/block.module @@ -473,17 +473,17 @@ function block_list($region) { if (!count($blocks)) { $result = db_query("SELECT * FROM {blocks} WHERE theme = '%s' AND status = 1 ORDER BY region, weight, module", $theme_key); - while ($block = db_fetch_array($result)) { + while ($block = db_fetch_object($result)) { if(!isset($blocks[$block->region])) { $blocks[$block->region] = array(); } // Use the user's block visibility setting, if necessary - if ($block['custom'] != 0) { - if ($user->uid && isset($user->block[$block['module']][$block['delta']])) { - $enabled = $user->block[$block['module']][$block['delta']]; + if ($block->custom != 0) { + if ($user->uid && isset($user->block[$block->module][$block->delta])) { + $enabled = $user->block[$block->module][$block->delta]; } else { - $enabled = ($block['custom'] == 1); + $enabled = ($block->custom == 1); } } else { @@ -491,30 +491,32 @@ function block_list($region) { } // Match path if necessary - if ($block['pages']) { - if ($block['visibility'] < 2) { + if ($block->pages) { + if ($block->visibility < 2) { $path = drupal_get_path_alias($_GET['q']); - $regexp = '/^('. preg_replace(array('/(\r\n?|\n)/', '/\\\\\*/', '/(^|\|)\\\\<front\\\\>($|\|)/'), array('|', '.*', '\1'. preg_quote(variable_get('site_frontpage', 'node'), '/') .'\2'), preg_quote($block['pages'], '/')) .')$/'; - $page_match = !($block['visibility'] xor preg_match($regexp, $path)); + $regexp = '/^('. preg_replace(array('/(\r\n?|\n)/', '/\\\\\*/', '/(^|\|)\\\\<front\\\\>($|\|)/'), array('|', '.*', '\1'. preg_quote(variable_get('site_frontpage', 'node'), '/') .'\2'), preg_quote($block->pages, '/')) .')$/'; + $page_match = !($block->visibility xor preg_match($regexp, $path)); } else { - $page_match = drupal_eval($block['pages']); + $page_match = drupal_eval($block->pages); } } else { $page_match = TRUE; } + if ($enabled && $page_match) { // Check the current throttle status and see if block should be displayed // based on server load. - if (!($block['throttle'] && (module_invoke('throttle', 'status') > 0))) { - $array = module_invoke($block['module'], 'block', 'view', $block['delta']); - if (is_array($array)) { - $block = array_merge($block, $array); + if (!($block->throttle && (module_invoke('throttle', 'status') > 0))) { + if (is_array($array = module_invoke($block->module, 'block', 'view', $block->delta))) { + foreach ($array as $k => $v) { + $block->$k = $v; + } } } - if (isset($block['content']) && $block['content']) { - $blocks[$region]["$block[module]_$block[delta]"] = (object) $block; + if (isset($block->content) && $block->content) { + $blocks[$block->region]["{$block->module}_{$block->delta}"] = $block; } } } diff --git a/modules/block/block.module b/modules/block/block.module index 9dfaec3ac..576ca1a10 100644 --- a/modules/block/block.module +++ b/modules/block/block.module @@ -473,17 +473,17 @@ function block_list($region) { if (!count($blocks)) { $result = db_query("SELECT * FROM {blocks} WHERE theme = '%s' AND status = 1 ORDER BY region, weight, module", $theme_key); - while ($block = db_fetch_array($result)) { + while ($block = db_fetch_object($result)) { if(!isset($blocks[$block->region])) { $blocks[$block->region] = array(); } // Use the user's block visibility setting, if necessary - if ($block['custom'] != 0) { - if ($user->uid && isset($user->block[$block['module']][$block['delta']])) { - $enabled = $user->block[$block['module']][$block['delta']]; + if ($block->custom != 0) { + if ($user->uid && isset($user->block[$block->module][$block->delta])) { + $enabled = $user->block[$block->module][$block->delta]; } else { - $enabled = ($block['custom'] == 1); + $enabled = ($block->custom == 1); } } else { @@ -491,30 +491,32 @@ function block_list($region) { } // Match path if necessary - if ($block['pages']) { - if ($block['visibility'] < 2) { + if ($block->pages) { + if ($block->visibility < 2) { $path = drupal_get_path_alias($_GET['q']); - $regexp = '/^('. preg_replace(array('/(\r\n?|\n)/', '/\\\\\*/', '/(^|\|)\\\\<front\\\\>($|\|)/'), array('|', '.*', '\1'. preg_quote(variable_get('site_frontpage', 'node'), '/') .'\2'), preg_quote($block['pages'], '/')) .')$/'; - $page_match = !($block['visibility'] xor preg_match($regexp, $path)); + $regexp = '/^('. preg_replace(array('/(\r\n?|\n)/', '/\\\\\*/', '/(^|\|)\\\\<front\\\\>($|\|)/'), array('|', '.*', '\1'. preg_quote(variable_get('site_frontpage', 'node'), '/') .'\2'), preg_quote($block->pages, '/')) .')$/'; + $page_match = !($block->visibility xor preg_match($regexp, $path)); } else { - $page_match = drupal_eval($block['pages']); + $page_match = drupal_eval($block->pages); } } else { $page_match = TRUE; } + if ($enabled && $page_match) { // Check the current throttle status and see if block should be displayed // based on server load. - if (!($block['throttle'] && (module_invoke('throttle', 'status') > 0))) { - $array = module_invoke($block['module'], 'block', 'view', $block['delta']); - if (is_array($array)) { - $block = array_merge($block, $array); + if (!($block->throttle && (module_invoke('throttle', 'status') > 0))) { + if (is_array($array = module_invoke($block->module, 'block', 'view', $block->delta))) { + foreach ($array as $k => $v) { + $block->$k = $v; + } } } - if (isset($block['content']) && $block['content']) { - $blocks[$region]["$block[module]_$block[delta]"] = (object) $block; + if (isset($block->content) && $block->content) { + $blocks[$block->region]["{$block->module}_{$block->delta}"] = $block; } } } |