DANFA

Перенос сообщений в таблицу "phpfox_forum_post"

Я давно хотел перенести все сообщения форума в таблицу phpfox_forum_post. И вот сегодня я это сделал!

Модификация Forum имеет две таблицы, которые принадлежать сообщениям, кроме этого есть еще таблицы форума, но о них ни в этой теме.

Первая таблица phpfox_forum_post - в ней хранится вся информация о постах (дата создания, заголовок, кем создано и так далее).

Вторая таблица phpfox_forum_post_text - предназначена для хранения текста постов в двух вариантах, это HTML тегами и BBcode. Я не думаю, что хранить текст с "голым" HTML это хорошая идея, по этому я по возможности избавляюсь от таких вариантов хранения, я храню информацию с BBcode.

Для переноса я добавил поле text (тип: mediumtext) в таблицу phpfox_forum_post, для это выполнил запрос:
ALTER TABLE `phpfox_forum_post` ADD COLUMN `text` mediumtext AFTER `title`;

Затем написал инструмент:
<?php
ini_set('display_errors', 'On');
error_reporting(E_ALL);

define('PHPFOX', true);

include('include/setting/server.sett.php');

$db = new mysqli($_CONF['db']['host'], $_CONF['db']['user'], $_CONF['db']['pass'], $_CONF['db']['name']);
if ($db->connect_errno)
{
	exit('Error MYSQLI: ' . $db->connect_error);
}
$db->set_charset('utf8');

$q = 'SELECT post_id, text
	FROM phpfox_forum_post_text';
$r = $db->query($q) or exit($db->error);

while ($row = $r->fetch_assoc())
{
	$q = 'UPDATE phpfox_forum_post
		SET
			text = \'' . $row['text'] . '\'
		WHERE post_id = ' . (int) $row['post_id'];
	$db->query($q) or exit($db->error);

	echo $row['post_id'] . ' Ok<br />';
}

Данный код необходимо поместить в файл, например, tool.php и залить в корень сайта, после этого перейти по адресу: сайт/tool.php. Сценарий скопирует все посты, после чего файл необходимо удалить с сервера.

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