From 2658f7c69c2da4a4df7d3901d2a450dd3e867d10 Mon Sep 17 00:00:00 2001
From: Tim Steiner <tsteiner2@unl.edu>
Date: Mon, 18 Mar 2013 17:54:21 -0500
Subject: [PATCH] Added a script to migrate database prefixes.

---
 migrate-db-prefix.php | 33 +++++++++++++++++++++++++++++++++
 1 file changed, 33 insertions(+)
 create mode 100755 migrate-db-prefix.php

diff --git a/migrate-db-prefix.php b/migrate-db-prefix.php
new file mode 100755
index 0000000..069d5fa
--- /dev/null
+++ b/migrate-db-prefix.php
@@ -0,0 +1,33 @@
+#!/usr/bin/php
+<?php
+
+require_once(dirname(__FILE__) . '/config.php');
+$pdo = getPdo();
+
+require_once DRUPAL_ROOT . '/sites/all/modules/unl/includes/common.php';
+
+$siteTablesQuery = $pdo->prepare('SHOW TABLES LIKE ?');
+
+foreach ($pdo->query('SELECT * FROM ' . DB_PREFIX . 'unl_sites') as $site) {
+    //print_r($site);
+    $settingsFile = DRUPAL_ROOT . '/sites/' . unl_get_sites_subdir($site['uri']) . '/settings.php';
+    if (!file_exists($settingsFile)) {
+        echo 'Could not find settings.php file for ' . $site['uri'] . ' skipping it!' . PHP_EOL;
+        continue;
+    }
+
+    $oldPrefix = $site['db_prefix'] . '_' . DB_PREFIX;
+    $newPrefix = 's' . $site['site_id'] . '_';
+
+    $siteTablesQuery->execute(array($oldPrefix . '%'));
+    foreach ($siteTablesQuery->fetchAll() as $tableRow) {
+        $oldTableName = $tableRow[0];
+        $newTableName = $newPrefix . substr($tableRow[0], strlen($oldPrefix));
+        $pdo->exec('RENAME TABLE `' . $oldTableName . '` TO `' . $newTableName);
+    }
+
+    shell_exec('chmod u+w ' . escapeshellarg(dirname($settingsFile)));
+    shell_exec('chmod u+w ' . escapeshellarg($settingsFile));
+    $command = 'sed -i -e s/' . $oldPrefix . '/' . $newPrefix . '/g ' . escapeshellarg($settingsFile);
+    shell_exec($command);
+}
-- 
GitLab