You are here

function path_redirect_save in Path redirect 6

Same name and namespace in other branches
  1. 5 path_redirect.module \path_redirect_save()

Save an URL redirect to the database.

4 calls to path_redirect_save()
PathRedirectTestHelper::addRedirect in ./path_redirect.test
path_redirect_check_alias_changed in ./path_redirect.module
Creates a redirect if an URL alias is being changed.
path_redirect_edit_form_submit in ./path_redirect.admin.inc
path_redirect_generate_redirects in generate/path_redirect_generate.module

File

./path_redirect.module, line 318

Code

function path_redirect_save(&$redirect) {

  // Merge default values.
  $redirect += array(
    'rid' => NULL,
    'query' => '',
    'fragment' => '',
    'language' => '',
    'type' => variable_get('path_redirect_default_status', 301),
    'last_used' => time(),
  );

  // Convert query arrays into a saveable query string.
  if (isset($redirect['source_query']) && is_array($redirect['source_query'])) {
    $redirect['source'] .= '?' . drupal_query_string_encode($redirect['source_query']);
  }
  if (is_array($redirect['query'])) {
    $redirect['query'] = drupal_query_string_encode($redirect['query']);
  }

  // Allow spaces in "from" path
  // @todo Move to validation?
  $redirect['source'] = str_replace('+', ' ', $redirect['source']);

  // Remove beginning and trailing slashes from path.
  // @todo Move to validation?
  $redirect['source'] = trim($redirect['source'], '\\/?');
  path_redirect_clear_cache();
  if (empty($redirect['rid'])) {
    drupal_write_record('path_redirect', $redirect);
    module_invoke_all('path_redirect_insert', $redirect);
  }
  else {
    drupal_write_record('path_redirect', $redirect, array(
      'rid',
    ));
    module_invoke_all('path_redirect_update', $redirect);
  }
  return $redirect;
}