summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorNeil Drumm <drumm@3064.no-reply.drupal.org>2006-11-26 01:55:37 +0000
committerNeil Drumm <drumm@3064.no-reply.drupal.org>2006-11-26 01:55:37 +0000
commitfb70944dc92345e3f62c5ff810c805ffdeacd4bb (patch)
tree3b57d43ce8720ff109e3354c58fb1ee4f35f0408
parent0b61aef4546048039711ec412835d606b7f51832 (diff)
downloadbrdo-fb70944dc92345e3f62c5ff810c805ffdeacd4bb.tar.gz
brdo-fb70944dc92345e3f62c5ff810c805ffdeacd4bb.tar.bz2
Fixing a PHP notice with proper checking.
-rw-r--r--includes/path.inc38
-rw-r--r--themes/garland/page.tpl.php4
2 files changed, 24 insertions, 18 deletions
diff --git a/includes/path.inc b/includes/path.inc
index bc11198b4..75a869d48 100644
--- a/includes/path.inc
+++ b/includes/path.inc
@@ -24,7 +24,8 @@ function drupal_init_path() {
/**
* Given an alias, return its Drupal system URL if one exists. Given a Drupal
- * system URL return its alias if one exists.
+ * system URL return one of its aliases if such a one exists. Otherwise,
+ * return FALSE.
*
* @param $action
* One of the following values:
@@ -39,39 +40,44 @@ function drupal_init_path() {
* found.
*/
function drupal_lookup_path($action, $path = '') {
- static $map = array();
+ // $map keys are Drupal paths and the values are the corresponding aliases
+ static $map = array(), $no_src = array();
static $count = NULL;
+ // Use $count to avoid looking up paths in subsequent calls if there simply are no aliases
if ($count === NULL) {
$count = db_result(db_query('SELECT COUNT(pid) FROM {url_alias}'));
}
if ($action == 'wipe') {
$map = array();
+ $no_src = array();
}
elseif ($count > 0 && $path != '') {
if ($action == 'alias') {
- if (isset($map[$path])) {
+ if (isset($map[$path]) || array_key_exists($path, $map)) {
return $map[$path];
}
- if ($alias = db_result(db_query("SELECT dst FROM {url_alias} WHERE src = '%s'", $path))) {
- $map[$path] = $alias;
- return $alias;
- }
- else {
- $map[$path] = $path;
- }
+ $alias = db_result(db_query("SELECT dst FROM {url_alias} WHERE src = '%s'", $path));
+ $map[$path] = $alias;
+ return $alias;
}
- elseif ($action == 'source') {
- if ($alias = array_search($path, $map)) {
- return $alias;
- }
- if (!isset($map[$path])) {
+ // Check $no_src for this $path in case we've already determined that there
+ // isn't a path that has this alias
+ elseif ($action == 'source' && !isset($no_src[$path])) {
+ // Look for the value $path within the cached $map
+ if (!$src = array_search($path, $map)) {
if ($src = db_result(db_query("SELECT src FROM {url_alias} WHERE dst = '%s'", $path))) {
$map[$src] = $path;
- return $src;
+ }
+ else {
+ // We can't record anything into $map because we do not have a valid
+ // index and there is no need because we have not learned anything
+ // about any Drupal path. Thus cache to $no_src.
+ $no_src[$path] = TRUE;
}
}
+ return $src;
}
}
diff --git a/themes/garland/page.tpl.php b/themes/garland/page.tpl.php
index df2c95e31..50c3c0e4f 100644
--- a/themes/garland/page.tpl.php
+++ b/themes/garland/page.tpl.php
@@ -67,7 +67,7 @@
<?php if ($title): print '<h2'. ($tabs ? ' class="with-tabs"' : '') .'>'. $title .'</h2>'; endif; ?>
<?php if ($tabs): print $tabs .'</div>'; endif; ?>
- <?php if ($tabs2): print $tabs2; endif; ?>
+ <?php if (isset($tabs2)): print $tabs2; endif; ?>
<?php if ($help): print $help; endif; ?>
<?php if ($messages): print $messages; endif; ?>
@@ -89,4 +89,4 @@
<?php print $closure ?>
</body>
-</html> \ No newline at end of file
+</html>