Перейти к контенту

Разделение ПОСТА


Anna

Рекомендуемые сообщения

Мод: Разделение ПОСТА

Категория: Модификации

Совместимость: 2.0.x

Описание:

Вот банальный пример для ДАННОГО сайта. В правилах сказано - "один вопрос - одна тема". Что если пользователь задал в тему ДВА вопроса. Причем предположим, что вопросы важные и нужные для истории, но им место в разных темах. Что делать? С помощью данного мода, можно разделить этот пост на два и потом разнести части в разные темы.

 

Апдейт 31/10/2007:

Вот версия под 2.1.х. http://www.ibresource.ru/db/981/

Поддержку осуществляет ее автор - Arhar

 

Подробнее...

Скачать

Ссылка на комментарий
Поделиться на других сайтах

  • 3 месяца спустя...
Адаптация под древовидную структуру 2.1.x, естественно. :D Плюс часть изменений нужно делать в других файлах.
Ссылка на комментарий
Поделиться на других сайтах

  • 8 месяцев спустя...
  • 3 года спустя...

Тема бородатая, но для меня актуальная.

 

Может кто-то возьмется заточить этот мод под версию v2.3.1.

Оплата за суету предполагается.

Ссылка на комментарий
Поделиться на других сайтах

Ох наворотили... А попроще алгоритм в голову не пришел?

Элементарно же.

SELECT * FROM ibf_posts WHERE topic_id = zzz ORDER BY pid ASC

В цикле по строкам сначала копируем строку (посты, помеченные для разделения, копируем дважды), затем удаляем исходную строку.

И ВСЁ!!! Получаем топик с нужным порядком сообщений и дублированием тех, которые нужно разделить.

Ссылка на комментарий
Поделиться на других сайтах

а как будут выглядеть pid для копированных постов?

Я напишу как в однушке, я думаю ты поймешь. Пишу с руки, поэтому если где-то по мелочи ошибусь, строго не суди.

$uno = $DB->query("SELECT * FROM ibf_posts WHERE topic_id = ".$ibforums->input['topic_id']." ORDER BY pid ASC");
while($row = $DB->fetch_row($uno))
{
// Забираем содержимое строки:
$db_string = array();
foreach($row as $k=>$v)if($k != "pid")db_string[$k] = $v;
// Компонуем для вставки:
$db_string = $DB->compile_db_insert_string($db_string);
// Вставляем; айдишник получит по инкременту:
$DB->query("INSERT INTO ibf_posts (" .$db_string['FIELD_NAMES']. ") VALUES (". $db_string['FIELD_VALUES'] .")");
// И еще раз для разделяемого сообщения:
if($row['pid'] == $ibforums->input['post_id'])
	$DB->query("INSERT INTO ibf_posts (" .$db_string['FIELD_NAMES']. ") VALUES (". $db_string['FIELD_VALUES'] .")");
// Удаляем прошлую строку:
$DB->query("DELETE FROM ibf_posts WHERE pid = ".$row['pid']);
}

Заданный пост сдублируется.

 

Единственная проблема, которую я вижу - у всех постов этого топика изменятся айдишники. А значит, если в других топиках есть прямые ссылки на пост, они перестанут работать.

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

Ссылка на комментарий
Поделиться на других сайтах

Потому я предлагаю ставит в настройках по умолчанию сортировку по дате, а с id как угодно разобраться. В моде изменения порядка сообщений так и делал, сохранял номера и менял доты местами. Вроде бы :D
Ссылка на комментарий
Поделиться на других сайтах

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

Этот вариант мне в принципе не годится. :D

Медицинский форум: вопросы посетителей, ответы врачей; даты и время сообщений менять я не буду, это какая-никакая история болезни. ;)

Теперь ситуация: захожу в топик, а там подряд 2 разных вопроса от разных посетителей. Если я потом напишу 2 ответа подряд, визуально будет трудно понять к какому опросу какой ответ. Я делаю проще: пишу ответ на первый вопрос, а потом подменой айдишника поднимаю его под сам вопрос - мод обмена айдишниками между двумя сообщениями у меня давно сделан.

 

Сейчас и разделение у меня сделано, но не всегда оно может работать: мод считает айдишники между разделяемым постом и следующим постом темы, и если есть "свободный" айдишник (в результате удаления сообщения) - разделяет; если же нет свободного айдишника - просит пардону и не разделяет.

Ссылка на комментарий
Поделиться на других сайтах

Это уже специфика, редкий случай :D
Ссылка на комментарий
Поделиться на других сайтах

×
×
  • Создать...

Важная информация

Находясь на нашем сайте, вы соглашаетесь на использование файлов cookie, а также с нашим положением о конфиденциальности Политика конфиденциальности и пользовательским соглашением Условия использования.