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

Перемещение сообщений из одной темы в другую - порядок сообщений


2rough4u

Вопрос

Привет всем.

 

Есть проблема: при перемещении сообщений из одной темы в другую, созданную позже написания перемещаемых сообщений, перемещённые сообщения в новой теме оказываются выше, чем то, которое её начинало. Объясню по-другому: есть большая тема, например, в ней много сообщений от 24-го августа. Я создаю новую тему 26-го августа, таким образом в новой теме у нас сейчас только один пост, датирующийся 26-м августа (он же топик-стартер). Перемещаем в эту новую тему сообщения и старой темы и получаем следующую картину: топик-стартером новой темы становится первое из перемещённых старых сообщений, а бывшее ранее топик-стартером сообщение новой темы уходит в конец этой темы.

 

Есть ли готовое решение этой проблемы или придётся самому ковырятьл? :D

 

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

 

Спасибо!

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

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

  • 0

Вполне естественно, если сортировка сообщений происходит по дате (айдишнику).

 

"Ковырять" не много, всего лишь добавить критерий сортировки: Вместо ORDER BY pid использовать ORDER BY new_topic DESC, pid ASC в запросе.

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

  • 0

Вообще странные дела, вчера залез в БД, очень долго пытался ручками поменять первое сообщение темы... поменял в ibf_topics значения полей starter_id, start_date, starter_name и topic_firstpost на значения, заимствованные из таблицы ibf_posts записи того поста, который я хочу сделать топик-стартером. При этом у поста, который я хочу сделать топик-стартером я поставил единичку (1) в поле new_topic, а у поста, который раньше ошибочно стал топик-стратером, соответственно, значение new_topic занулил (0). Таким образом я получил следущую картину: тот пост, который я делал топик-стартером начал выводиться первым только на 2-й и последующих страницах темы, на первой странице остался первым старый топик-стартер пост. Но это всё держится до первого обновления кеша (оно происходит при добавлении нового поста в тему, например).

 

Ничего не понимаю... где же тогда еще форум запоминает топик-стартер посты?? Полтергейст.

 

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

 

Вполне естественно, если сортировка сообщений происходит по дате (айдишнику).

 

"Ковырять" не много, всего лишь добавить критерий сортировки: Вместо ORDER BY pid использовать ORDER BY new_topic DESC, pid ASC в запросе.

Соответственно - проблема. При перемещении сообщений в другую тему, функция переноса выполняет следущую махинацию:

//-----------------------------------------

// Move the posts

//-----------------------------------------

 

$this->ipsclass->DB->do_update( 'posts', array( 'new_topic' => 0 ), "topic_id={$this->topic['tid']}" );

Вероятно, делает она это для того, чтобы избежать дуплицирования постов с new_topic=1 в одной теме. Каким образом потом какому-то сообщению присваивается маркер new_topic=1 - я так и не нашёл.

 

Но фишка в том, что даже если вручную в БД поменять маркер new_topic, то после обновления кеша топика он снова каким-то образом перепрыгивает на старое сообщение-стартер.

 

UPD: Короче, что бы я не писал напрямую в БД, после перекеширования темы эти изменения сходят на нет...

Изменено пользователем 2rough4u
Ссылка на комментарий
Поделиться на других сайтах

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

Присоединиться к обсуждению

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

Гость
Unfortunately, your content contains terms that we do not allow. Please edit your content to remove the highlighted words below.
Ответить на вопрос...

×   Вы вставили отформатированный текст.   Удалить форматирование

  Допустимо не более 75 смайлов.

×   Ваша ссылка была автоматически заменена на медиа-контент.   Отображать как ссылку

×   Ваши публикации восстановлены.   Очистить редактор

×   Вы не можете вставить изображения напрямую. Загрузите или вставьте изображения по ссылке.

Зарузка...
×
×
  • Создать...

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

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