FAQ Инструкция по изменению даты рождения в движке

G

Gemini_13

Гость
Инструкция для корректной смены даты Дня Рождения пользователей в базе.

ВНИМАНИЕ! Все посторонние моды, которые присосались к ДР перестанут работать и будут выбивать ошибки! Эту ревизию нельзя ставить на боевые трекеры, пока бета-тестеры её не обкатают.

1. Делаем бекап БД
2. Установливаем ревизию R495
3. Заливаем скрипт с аттача в корень форума и меняем расширение на .php
PHP:
<?php
 
define('BB_ROOT', './');
require(BB_ROOT .'common.php');
 
$user->session_start();
 
if (!IS_ADMIN)
{
    message_die(GENERAL_MESSAGE, $lang['NOT_ADMIN']);
}
 
set_time_limit(600);
 
DB()->query("ALTER TABLE ". BB_USERS ." CHANGE COLUMN user_birthday user_birthday_old int(11) NOT NULL DEFAULT 0 AFTER user_gender");
DB()->query("ALTER TABLE ". BB_USERS ." ADD user_birthday date NOT NULL DEFAULT '0000-00-00' AFTER user_gender");
 
$sql = "
    SELECT user_id, user_birthday_old
    FROM ". BB_USERS ."
    WHERE user_birthday_old != 0
    AND user_id NOT IN ('". EXCLUDED_USERS_CSV ."')
";
 
foreach (DB()->fetch_rowset($sql) as $row)
{
    $birthday = realdate($row['user_birthday_old'], 'Y-m-d');
    DB()->query("
        UPDATE ". BB_USERS ."
        SET user_birthday = '". $birthday ."'
        WHERE user_id = ". $row['user_id'] ."
    ");
}
echo 'Done!';
?>
4. Выполнить сркипт в браузере.
Просто вводите в браузере ссылку на ваш трекер и после слеша дописываете название скрипта. Например,

Please Login or Register to view hidden text.


5. После того, как на мониторе появится надпись 'Done!' нужно зайти в таблицу bb_users и удалить колонку user_birthday_old, если все ДР правильно переконвертировались.
6. Почистить кеш и датастор.

Чтобы не играть в телепатов в случае проблем прошу четко писать на каком пункте проблема и прикладывать логи, если таковы есть, будем исправлять ошибки сразу.
 

Вложения

  • change_user_birthday.txt
    860 байт · Просмотры: 17
S

Sarymian

Гость
Gemini_13, привет. Не по теме:

Я рад что новая кровь в проект влилась :)
Удачи тебе в начинаниях!;)
 
G

Gemini_13

Гость
Спасиб)

495 - это для ДР, черновики так.. просто небольшая доработка. и откатывать назад никто не собирался. бета-тестеры помогут отловить баги, составится минимальный список конфиликтов с модами, напишутся решения и всё. надеюсь 496 покроет это всё и тогда сразу будете ставить 2 ревизии.
 

nord51

Пользователь
Gemini_13, Что-то я пропустил, а когда проблема с ДР началась или она и была изначально ?
 
G

Gemini_13

Гость
nord51, никаких проблем не было, просто формат даты в БД изменен. если доделать, то будет легче выбирать именинников как движку, так и человеку. 495 - это ж черновиков, первый шаг, потому на боевой трекер ставить нельзя
 
G

Gemini_13

Гость
та нет же.. просто глянь в 495) просто держать в другом виде эту дату, в читабельном
 
Сверху