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