Инструкция. Смена префикса таблиц в modx

681

Для смены префикса таблиц в бд modx revo нам понадобится установить дополнение Console (если конечно оно ранее не было установленно). В панели управления во вкладке Приложения выбираем дополнение Console, затем в окно консоли вставляем следующий код:

<?php
ini_set("max_execution_time", 0);
ignore_user_abort(true);
$current_prefix = $modx->config['table_prefix'];
function randPrefix($size) {
    $chars="qazxswedcvfrtgbnhyujmkiolp1234567890QAZXSWEDCVFRTGBNHYUJMKIOLP";
    $out_prefix=null;
    while($size--) $out_prefix.=$chars[rand(0,StrLen($chars)-1)];
    return $out_prefix;
}

// $new_prefix = 'newmodxprefix_';
$new_prefix = randPrefix(12).'_';

$stmt = $modx->query("SHOW TABLES");
$tables = $stmt->fetchAll(PDO::FETCH_NUM);
$stmt->closeCursor();
foreach($tables as $table){
    $table = reset($table);
    $preg = "/^{$current_prefix}/u";

    if(preg_match($preg, $table)){
        $new_table_name = preg_replace($preg, $new_prefix, $table);
        $sql = "RENAME TABLE `{$table}` TO `{$new_table_name}`";
        if($s = $modx->prepare($sql)){
            $s->execute();
        }
    }
}
echo "\nPrefix updated! New prefix for tables: ".$new_prefix;

По умолчанию префикс таблиц генерируется и состоит из 12 символов, если требуется изменить кол-во символов в префиксе, то просто меняем параметр в вызываемой функции randPrefix(12), также вы можете самостоятельно указать, какой должен быть новый префикс у таблиц, для этого комментируем строку 13 и раскомментируем строку 12, вместо newmodxprefix указываем значение новое значение.

После того, как все настройки произведены, нажимаем на кнопку Выполнить (Если будут ошибки не оброщаем на них внимание).

В окне результата в самом конце вы увидите надпись Prefix updated! New prefix for tables: и после неё значение нового префикса, копируем его, затем, через ftp-клиент открываем файл /core/config/config.inc.php и изменяем значение у переменной $table_prefix на ваше обновленное значение.

Далее чистим кеш, открываем через ftp-клиент директорию /core/cache и удаляем все, что находится внутри.

Все! Теперь на вашем сайте у таблиц обновлен префикс :)