summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--includes/common.inc7
-rw-r--r--includes/path.inc8
-rw-r--r--modules/path/path.module9
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;