path_set_alias

Versions
4.6 – 5
path_set_alias($path = NULL, $alias = NULL, $pid = NULL)
6
path_set_alias($path = NULL, $alias = NULL, $pid = NULL, $language = '')

Set an aliased path for a given Drupal path, preventing duplicates.

▾ 2 functions call path_set_alias()

path_admin_form_submit in modules/path/path.admin.inc
Save a new URL alias to the database.
path_nodeapi in modules/path/path.module
Implementation of hook_nodeapi().

Code

modules/path/path.module, line 87

<?php
function path_set_alias($path = NULL, $alias = NULL, $pid = NULL, $language = '') {
  $path = urldecode($path);
  $alias = urldecode($alias);
  // First we check if we deal with an existing alias and delete or modify it based on pid.
  if ($pid) {
    // An existing alias.
    if (!$path || !$alias) {
      // Delete the alias based on pid.
      db_query('DELETE FROM {url_alias} WHERE pid = %d', $pid);
    }
    else {
      // Update the existing alias.
      db_query("UPDATE {url_alias} SET src = '%s', dst = '%s', language = '%s' WHERE pid = %d", $path, $alias, $language, $pid);
    }
  }
  else if ($path && $alias) {
    // Check for existing aliases.
    if ($alias == drupal_get_path_alias($path, $language)) {
      // There is already such an alias, neutral or in this language.
      // Update the alias based on alias; setting the language if not yet done.
      db_query("UPDATE {url_alias} SET src = '%s', dst = '%s', language = '%s' WHERE dst = '%s'", $path, $alias, $language, $alias);
    }
    else {
      // A new alias. Add it to the database.
      db_query("INSERT INTO {url_alias} (src, dst, language) VALUES ('%s', '%s', '%s')", $path, $alias, $language);
    }
  }
  else {
    // Delete the alias.
    if ($alias) {
      db_query("DELETE FROM {url_alias} WHERE dst = '%s'", $alias);
    }
    else {
      db_query("DELETE FROM {url_alias} WHERE src = '%s'", $path);
    }
  }
  drupal_clear_path_cache();
}
?>
Login or register to post comments
 
 

All source code and documentation on this site is released under the terms of the GNU General Public License, version 2 and later. Drupal is a registered trademark of Dries Buytaert.