Редактирование базы данных vBulletin не влияет на сайт

Это проблема, с которой я постоянно сталкивался при работе с несколькими базами данных vBulletin. Я не могу отредактировать базу данных, чтобы изменить такие параметры, как cookiepath, bburl или определить, активен он или нет. Я имею в виду, что я могу изменить их с помощью PHPMyAdmin, но на сайте это никак не отразится.

Прямо сейчас я потерял доступ к старой установке и мне нужно изменить причину закрытия, bburl и т. д. Я изменил текст для причины закрытия, но он по-прежнему показывает текст, который был раньше, доска все еще закрыта, а bburl все еще неправильно.

Я проверил, что это правильная БД и правильный сервер, так как это случалось много раз. Может быть, я просто что-то упускаю здесь? Я не знаю.


person user1558746    schedule 11.10.2012    source источник


Ответы (1)


vBulletin не получает доступ к настройкам напрямую из таблицы "Настройки".

Эта информация предназначена для vBulletin 4.x, она может совпадать или не совпадать с другими версиями.

При сохранении настроек они сериализуются и сохраняются в таблице «хранилище данных». vBulletin извлекает данные из таблицы «хранилище данных» для активного использования.


У меня не было необходимости использовать следующие шаги, но я проверил их, изменив протокол записи «bburl» как в таблице данных, так и в таблицах настроек через PhpMyAdmin.

Конкретные настройки, которые вы ищете, хранятся в массиве «options».

Если вам известны текущие данные или имена переменных для настроек, которые вы хотите изменить, вы можете найти их в сериализованной строке и заменить новыми настройками.

Настройка для активной доски выглядит так: s:8:"bbactive";i:1;
Причина выглядит так:

s:14:"bbclosedreason";s:125:"<p>Sorry, the board is unavailable at the moment while we are testing some functionality.</p>
<p>We will be back soon...</p>";

Перейдите в таблицу «datastore» и найдите запись «options» в поле «title».

Скопируйте сериализованные данные из поля «данные», связанного с записью «параметры». Обязательно сделайте резервную копию на случай, если ваши изменения вызовут проблемы.

Найдите в данных элементы, которые вы хотите изменить. При изменении данных убедитесь, что вы используете правильный сериализованный формат, обновив длину, связанную с этой записью.

Обновите запись «options» в таблице «datastore» с измененными сериализованными данными, а также обновите отдельные записи в таблице настроек.


Функция, которая обновляет таблицы "settings" и "datastore", находится здесь:
includes\adminfunctions.php

примерно на строке номер 2474 (в зависимости от вашей версии).

// #############################################################################
/**
* Reads settings from the settings then saves the values to the datastore
*
* After reading the contents of the setting table, the function will rebuild
* the $vbulletin->options array, then serialize the array and save that serialized
* array into the 'options' entry of the datastore in the database
*
* @return   array   The $vbulletin->options array
*/
function build_options()
{
    require_once(DIR . '/includes/adminfunctions_options.php');

    global $vbulletin;

    $vbulletin->options = array();

    $settings = $vbulletin->db->query_read("SELECT varname, value, datatype FROM " . TABLE_PREFIX . "setting");
    while ($setting = $vbulletin->db->fetch_array($settings))
    {
        $vbulletin->options["$setting[varname]"] = validate_setting_value($setting['value'], $setting['datatype'], true, false);
    }

    if (substr($vbulletin->options['cookiepath'], -1, 1) != '/')
    {
        $vbulletin->options['cookiepath'] .= '/';
        $vbulletin->db->query_write("
            UPDATE " . TABLE_PREFIX . "setting
            SET value = '" . $vbulletin->db->escape_string($vbulletin->options['cookiepath']) . "'
            WHERE varname = 'cookiepath'
        ");
    }

    build_datastore('options', serialize($vbulletin->options), 1);

    return $vbulletin->options;
}
person codewaggle    schedule 12.10.2012