You are here

function _redirect_migrate_path_redirect_redirects in Redirect 7.2

Same name and namespace in other branches
  1. 7 redirect.install \_redirect_migrate_path_redirect_redirects()

Migrate data and variables from the Drupal 6 path_redirect module.

1 string reference to '_redirect_migrate_path_redirect_redirects'
redirect_install in ./redirect.install
Implements hook_install().

File

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

Code

function _redirect_migrate_path_redirect_redirects(&$context) {
  if (!isset($context['sandbox']['progress']) && db_table_exists('path_redirect')) {
    $context['sandbox']['progress'] = 0;
    $context['sandbox']['current_rid'] = 0;
    $context['sandbox']['max'] = db_query('SELECT COUNT(rid) FROM {path_redirect}')
      ->fetchField();
    $context['results']['skipped'] = array();
  }
  if (empty($context['sandbox']['max'])) {
    $context['finished'] = 1;
    return t('No redirects to migrate.');
  }

  // Ensure the redirect module is loaded since we need to use its functions.
  drupal_load('module', 'redirect');
  $query = db_query_range("SELECT * FROM {path_redirect} WHERE rid > :rid ORDER BY rid", 0, 25, array(
    ':rid' => $context['sandbox']['current_rid'],
  ));
  foreach ($query as $old_redirect) {
    $redirect = _redirect_migrate_path_redirect_redirect($old_redirect);
    if (empty($redirect->success)) {
      $context['results']['skipped'][$old_redirect->rid] = t('RID @rid: @from to @to', array(
        '@rid' => $old_redirect->rid,
        '@from' => redirect_url($redirect->source, $redirect->source_options),
        '@to' => redirect_url($redirect->redirect, $redirect->redirect_options),
      ));
    }
    $context['sandbox']['progress']++;
    $context['sandbox']['current_rid'] = $old_redirect->rid;
  }
  $context['finished'] = $context['sandbox']['progress'] / $context['sandbox']['max'];
  if ($context['finished'] >= 1) {

    // Once finished, drop the old table.
    db_drop_table('path_redirect');

    // Migrate variables.
    _redirect_migrate_path_redirect_variables();

    // Remove the path_redirect entry from the system table.
    db_delete('system')
      ->condition('name', 'path_redirect')
      ->execute();

    // Record how many redirects were migrated, and how many were skipped.
    $context['results']['skipped_count'] = count($context['results']['skipped']);
    $context['results']['migrated'] = $context['sandbox']['progress'] - $context['results']['skipped_count'];
  }
}