You are here

function _redirect_migrate_path_redirect_redirect in Redirect 7

Same name and namespace in other branches
  1. 7.2 redirect.install \_redirect_migrate_path_redirect_redirect()

Migrate a path redirect redirect to a redirect redirect.

1 call to _redirect_migrate_path_redirect_redirect()
_redirect_migrate_path_redirect_redirects in ./redirect.install
Migrate data and variables from the Drupal 6 path_redirect module.

File

./redirect.install, line 302
Install, update and uninstall functions for the redirect module.

Code

function _redirect_migrate_path_redirect_redirect($old_redirect) {
  $redirect = new stdClass();
  redirect_object_prepare($redirect);
  $source_parsed = redirect_parse_url($old_redirect->source);
  $redirect->source = $source_parsed['url'];
  if (!empty($source_parsed['query'])) {
    $redirect->source_options['query'] = $source_parsed['query'];
  }
  $redirect_parsed = redirect_parse_url($old_redirect->redirect) + array(
    'query' => drupal_get_query_array($old_redirect->query),
    'fragment' => $old_redirect->fragment,
  );
  $redirect->redirect = $redirect_parsed['url'];
  if (!empty($redirect_parsed['query'])) {
    $redirect->redirect_options['query'] = $redirect_parsed['query'];
  }
  if (!empty($redirect_parsed['fragment'])) {
    $redirect->redirect_options['fragment'] = $redirect_parsed['fragment'];
  }
  if (!empty($redirect_parsed['https'])) {
    $redirect->redirect_options['https'] = TRUE;
  }

  // Make sure empty language codes get migrated to use the new constant.
  $redirect->language = empty($old_redirect->language) ? LANGUAGE_NONE : $old_redirect->language;

  // Default status codes get a value of 0.
  if ($old_redirect->type != variable_get('redirect_default_status_code', 301)) {
    $redirect->status_code = (int) $old_redirect->type;
  }
  redirect_hash($redirect);
  if (redirect_load_by_hash($redirect->hash)) {

    // If a redirect with the same hash already exists, then it needs to be
    // skipped.
    $redirect->success = FALSE;
  }
  else {

    // Add the redirect to the database.
    db_insert('redirect')
      ->fields(array(
      'hash' => $redirect->hash,
      'type' => 'redirect',
      'uid' => 1,
      'source' => $redirect->source,
      'source_options' => serialize($redirect->source_options),
      'redirect' => $redirect->redirect,
      'redirect_options' => serialize($redirect->redirect_options),
      'language' => $redirect->language,
      'status_code' => $redirect->status_code,
      'status' => 1,
      'count' => 0,
      'access' => $old_redirect->last_used,
    ))
      ->execute();

    // Migrating this redirect succeeded.
    $redirect->success = TRUE;
  }
  return $redirect;
}