diff options
-rw-r--r-- | includes/common.inc | 7 | ||||
-rw-r--r-- | includes/path.inc | 8 | ||||
-rw-r--r-- | modules/path/path.module | 9 |
3 files changed, 14 insertions, 10 deletions
diff --git a/includes/common.inc b/includes/common.inc index 2bd402a05..d0d8bad0b 100644 --- a/includes/common.inc +++ b/includes/common.inc @@ -1227,11 +1227,18 @@ function url($path = NULL, $options = array()) { $base = $options['absolute'] ? $base_url .'/' : base_path(); + // Preserve the original path before aliasing. + $original_path = $path; + // The special path '<front>' links to the default front page. if (!empty($path) && $path != '<front>') { if (!$options['alias']) { $path = drupal_get_path_alias($path); } + if (function_exists('custom_url_rewrite_outbound')) { + // Modules may alter outbound links by reference. + custom_url_rewrite_outbound($path, $options, $original_path); + } $path = drupal_urlencode($path); if (!$clean_url) { if ($options['query']) { diff --git a/includes/path.inc b/includes/path.inc index 9efee799a..898b39048 100644 --- a/includes/path.inc +++ b/includes/path.inc @@ -110,9 +110,6 @@ function drupal_get_path_alias($path, $path_language = '') { if ($alias = drupal_lookup_path('alias', $path, $path_language)) { $result = $alias; } - if (function_exists('custom_url_rewrite')) { - $result = custom_url_rewrite('alias', $result, $path, $path_language); - } return $result; } @@ -133,8 +130,9 @@ function drupal_get_normal_path($path, $path_language = '') { if ($src = drupal_lookup_path('source', $path, $path_language)) { $result = $src; } - if (function_exists('custom_url_rewrite')) { - $result = custom_url_rewrite('source', $result, $path, $path_language); + if (function_exists('custom_url_rewrite_inbound')) { + // Modules may alter the inbound request path by reference. + custom_url_rewrite_inbound($result, $path, $path_language); } return $result; } diff --git a/modules/path/path.module b/modules/path/path.module index bb1820662..b932a1b66 100644 --- a/modules/path/path.module +++ b/modules/path/path.module @@ -233,11 +233,10 @@ function path_nodeapi(&$node, $op, $arg) { case 'load': $path = "node/$node->nid"; - // We don't use drupal_get_path_alias() to avoid custom rewrite functions. - // We only care about exact aliases. - $result = db_query("SELECT dst FROM {url_alias} WHERE src = '%s'", $path); - if (db_num_rows($result)) { - $node->path = db_result($result); + $language = isset($node->language) ? $node->language : ''; + $alias = drupal_get_path_alias($path, $language); + if ($path != $alias) { + $node->path = $alias; } break; |