// the most recently created alias for each source. Subsequent queries
// using fetchField() must use pid DESC to have the same effect.
// For performance reasons, the query builder is not used here.
if($path_language==LANGUAGE_NONE){
if($langcode==LANGUAGE_NONE){
// Prevent PDO from complaining about a token the query doesn't use.
unset($args[':language']);
$result=db_query('SELECT source, alias FROM {url_alias} WHERE source IN (:system) AND language = :language_none ORDER BY pid ASC',$args);
unset($args[':langcode']);
$result=db_query('SELECT source, alias FROM {url_alias} WHERE source IN (:system) AND langcode = :language_none ORDER BY pid ASC',$args);
}
elseif($path_language<LANGUAGE_NONE){
$result=db_query('SELECT source, alias FROM {url_alias} WHERE source IN (:system) AND language IN (:language, :language_none) ORDER BY language ASC, pid ASC',$args);
elseif($langcode<LANGUAGE_NONE){
$result=db_query('SELECT source, alias FROM {url_alias} WHERE source IN (:system) AND langcode IN (:langcode, :language_none) ORDER BY langcode ASC, pid ASC',$args);
}
else{
$result=db_query('SELECT source, alias FROM {url_alias} WHERE source IN (:system) AND language IN (:language, :language_none) ORDER BY language DESC, pid ASC',$args);
$result=db_query('SELECT source, alias FROM {url_alias} WHERE source IN (:system) AND langcode IN (:langcode, :language_none) ORDER BY langcode DESC, pid ASC',$args);
$alias=db_query("SELECT alias FROM {url_alias} WHERE source = :source AND language = :language_none ORDER BY pid DESC",$args)->fetchField();
if($langcode==LANGUAGE_NONE){
unset($args[':langcode']);
$alias=db_query("SELECT alias FROM {url_alias} WHERE source = :source AND langcode = :language_none ORDER BY pid DESC",$args)->fetchField();
}
elseif($path_language>LANGUAGE_NONE){
$alias=db_query("SELECT alias FROM {url_alias} WHERE source = :source AND language IN (:language, :language_none) ORDER BY language DESC, pid DESC",$args)->fetchField();
elseif($langcode>LANGUAGE_NONE){
$alias=db_query("SELECT alias FROM {url_alias} WHERE source = :source AND langcode IN (:langcode, :language_none) ORDER BY langcode DESC, pid DESC",$args)->fetchField();
}
else{
$alias=db_query("SELECT alias FROM {url_alias} WHERE source = :source AND language IN (:language, :language_none) ORDER BY language ASC, pid DESC",$args)->fetchField();
$alias=db_query("SELECT alias FROM {url_alias} WHERE source = :source AND langcode IN (:langcode, :language_none) ORDER BY langcode ASC, pid DESC",$args)->fetchField();
}
$cache['map'][$path_language][$path]=$alias;
$cache['map'][$langcode][$path]=$alias;
return$alias;
}
}
// Check $no_source for this $path in case we've already determined that there
$result=db_query("SELECT source FROM {url_alias} WHERE alias = :alias AND language = :language_none ORDER BY pid DESC",$args);
if($langcode==LANGUAGE_NONE){
unset($args[':langcode']);
$result=db_query("SELECT source FROM {url_alias} WHERE alias = :alias AND langcode = :language_none ORDER BY pid DESC",$args);
}
elseif($path_language>LANGUAGE_NONE){
$result=db_query("SELECT source FROM {url_alias} WHERE alias = :alias AND language IN (:language, :language_none) ORDER BY language DESC, pid DESC",$args);
elseif($langcode>LANGUAGE_NONE){
$result=db_query("SELECT source FROM {url_alias} WHERE alias = :alias AND langcode IN (:langcode, :language_none) ORDER BY langcode DESC, pid DESC",$args);
}
else{
$result=db_query("SELECT source FROM {url_alias} WHERE alias = :alias AND language IN (:language, :language_none) ORDER BY language ASC, pid DESC",$args);
$result=db_query("SELECT source FROM {url_alias} WHERE alias = :alias AND langcode IN (:langcode, :language_none) ORDER BY langcode ASC, pid DESC",$args);
}
if($source=$result->fetchField()){
$cache['map'][$path_language][$source]=$path;
$cache['map'][$langcode][$source]=$path;
}
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_source.
$cache['no_source'][$path_language][$path]=TRUE;
$cache['no_source'][$langcode][$path]=TRUE;
}
}
return$source;
...
...
@@ -225,20 +225,20 @@ function drupal_cache_system_paths() {
*
* @param $path
* An internal Drupal path.
* @param $path_language
* @param $langcode
* An optional language code to look up the path in.
*
* @return
* An aliased path if one was found, or the original path if no alias was
'description'=>"The language code this alias is for; if 'und', the alias will be used for unknown languages. Each Drupal path can have an alias for each supported language.",
'#description'=>t('A path alias set for a specific language will always be used when displaying this page in that language, and takes precedence over path aliases set for <em>All languages</em>.'),
);
}
else{
$form['language']=array(
$form['langcode']=array(
'#type'=>'value',
'#value'=>$path['language']
'#value'=>$path['langcode']
);
}
...
...
@@ -189,12 +189,12 @@ function path_admin_form_validate($form, &$form_state) {
'description'=>"The language this alias is for; if 'und', the alias will be used for unknown languages. Each Drupal path can have an alias for each supported language.",
'langcode'=>array(
'description'=>"The language code this alias is for; if 'und', the alias will be used for unknown languages. Each Drupal path can have an alias for each supported language.",