Быстрый лёгкий надёжный форумный движок
Вы не вошли.
Ну так никто не может сделать чтобы при склейки сообщений топик начинался светиться как непрочитанный?
Вобщем там надо обнавлять topic.last_post на время, когда было добавлено сообщение, тогда будет выглядеть как новое сообщение в теме. Нужно найти строку 240 и после нее добавить:
else
$db->query('UPDATE '.$db->prefix.'topics SET last_post='.$now.' WHERE id='.$tid) or error('Unable to update topic', __FILE__, __LINE__, $db->error());
Тоесть выглядеть должно вроде так:
if (!$merged)
// Update topic
$db->query('UPDATE '.$db->prefix.'topics SET num_replies='.$num_replies.', last_post='.$now.', last_post_id='.$new_pid.', last_poster=\''.$db->escape($username).'\' WHERE id='.$tid) or error('Unable to update topic', __FILE__, __LINE__, $db->error());
else
$db->query('UPDATE '.$db->prefix.'topics SET last_post='.$now.' WHERE id='.$tid) or error('Unable to update topic', __FILE__, __LINE__, $db->error());
за правильность синтаксиса не ручаюсь, но обновить запись нужно именно так.
hcs
Всё работает.
Спасибо.
Проблемка обнаружилась.
Когда это первый пост в теме и в неё добавляется новый пост этим же юзером - то выдаётся такая ошибка:
An error was encountered
Error: Unable to fetch subscription info.
Но при этом посты склеиваются - если обновить страницу.
Было бы неплохо еще показать номер строки, потомучто обращение к subscription есть в нескольких местах.
Но вобщем можно попробовать это:
Найти в строке ~214
if ($pun_config['o_subscriptions'] == '1' && $subscribe)
заменить
if ($pun_config['o_subscriptions'] == '1' && $subscribe && !$merged)
hcs
Не помогло (
Всё склеивается но переход происходит к указанной ошибке ((
А как сделать чтобы отменить показ этой ошибки? Чтобы переход происходил к посту?
hcs
Или хотябы внести изменения в сам мод - типа если это первое сообщение в теме - то чтобы склейка не происходила...
что-то я ничего не понимаю.
верни назад изменения, что бы стало
if ($pun_config['o_subscriptions'] == '1' && $subscribe)
и перед этим добавь
if (!$merged)
Тоже не помогает (
Склеивается но параллельно на экран выводится ошибка.
Включи дебаг и покажи номер строки и часть запроса, на котором валится ошибка.
> Включи дебаг и покажи номер строки и часть запроса, на котором валится ошибка.
Ты бы подсказал как это сделать?..
файл /include/common.php
найди строку
//define('PUN_DEBUG', 1);
убери символы //
должно получиться так:
define('PUN_DEBUG', 1);
после этого сообщение об ошибке будет содержать имя файла, номер строки и часть запроса в котором произошла ошибка.
Редактировался hcs (2006-04-02 10:21:32)
Сенкс.
Вот что выдаёт:
An error was encountered
File: /home/y/ru/public_html/post.php
Line: 250
PunBB reported: Unable to fetch subscription info
Database reported: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'AND (fp.read_forum IS NULL OR fp.read_forum=1) AND s.topic_id=817 AND u.id!=2' at line 1 (Errno: 1064)
я чегото не пойму, покажи как выглядят твои строки начиная с 240 по 250.
С 238 по 255:
update_search_index('post', $new_pid, $message);
update_forum($cur_posting['id']);
// Should we send out notifications?
if ($pun_config['o_subscriptions'] == '1')
{
// Get the post time for the previous post in this topic
$result = $db->query('SELECT posted FROM '.$db->prefix.'posts WHERE topic_id='.$tid.' ORDER BY id DESC LIMIT 1, 1') or error('Unable to fetch post info', __FILE__, __LINE__, $db->error());
$previous_post_time = $db->result($result);
// Get any subscribed users that should be notified (banned users are excluded)
$result = $db->query('SELECT u.id, u.email, u.notify_with_post, u.language FROM '.$db->prefix.'users AS u INNER JOIN '.$db->prefix.'subscriptions AS s ON u.id=s.user_id LEFT JOIN '.$db->prefix.'forum_perms AS fp ON (fp.forum_id='.$cur_posting['id'].' AND fp.group_id=u.group_id) LEFT JOIN '.$db->prefix.'online AS o ON u.id=o.user_id LEFT JOIN '.$db->prefix.'bans AS b ON u.username=b.username WHERE b.username IS NULL AND COALESCE(o.logged, u.last_visit)>'.$previous_post_time.' AND (fp.read_forum IS NULL OR fp.read_forum=1) AND s.topic_id='.$tid.' AND u.id!='.intval($pun_user['id'])) or error('Unable to fetch subscription info', __FILE__, __LINE__, $db->error());
if ($db->num_rows($result))
{
require_once PUN_ROOT.'include/email.php';
$notification_emails = array();
в четвертой строке кода, который ты показал
if ($pun_config['o_subscriptions'] == '1')
замени на
if ($pun_config['o_subscriptions'] == '1' && !$merged)
ну как?
Сейчас полный порядок )))
Сенкс.
А где лежит полностью исправленная версия мода. При установке с http://www.punres.org/files.php?pid=222 он ставиться с ошибкой
File: /var/www/html/forum/include/search_idx.php
Line: 149
PunBB reported: Unable to insert search index words
Database reported: Duplicate entry '' for key 1 (Errno: 1062)
Хм, попробуй в таблице pun_search_words для поля word выставить аттрибут BINARY
В исправленой версии почти ничего не изменилось, кроме того, что юзеры теперь не могут выбирать клеить им посты или нет.
Инструкция по апгрейду:
1. open post.php
2. find line:~ 147
//////begin hcs merge posts
$merged=false;
if (!$pun_user['is_guest'] && !$fid && isset($_POST['merge']) && $cur_posting['poster_id']!=NULL && $cur_posting['message']!=NULL && time()-$cur_posting['posted']<$pun_config['o_merge_timeout'])
{
$message= pun_linebreaks(pun_trim("[color=#808080][i]".$lang_post['Added']." ".strftime("%c")." : [/i][/color]")) . "\n" . $message;
$merged=true;
}
///////end hcs merge posts
3. replace with
// MERGE POSTS BEGIN
$merged=false;
if (!$pun_user['is_guest'] && !$fid && (($is_admmod && intval($_POST['merge'])==1) || !$is_admmod) && $cur_posting['poster_id']!=NULL && $cur_posting['message']!=NULL && time()-$cur_posting['posted']<$pun_config['o_merge_timeout'])
{
$message= pun_linebreaks(pun_trim("[color=#808080][i]".$lang_post['Added']." ".strftime("%c")." : [/i][/color]")) . "\n" . $message;
$merged=true;
}
// MERGE POSTS END
4. FIND (line: ~ 557)
$checkboxes[] = '<label><input type="checkbox" name="merge" value="1" checked="checked" />'.$lang_post['Merge posts'];
5. ADD BEFORE
if ($is_admmod)
6. OPEN viewtopic.php
7. FIND (line: ~ 416)
<label><input type="checkbox" name="merge" value="1" checked="checked" /><?php echo $lang_post['Merge posts']; ?><br /></label>
8. REPLACE WITH
<?php if ($is_admmod) :
?> <label><input type="checkbox" name="merge" value="1" checked="checked" /><?php echo $lang_post['Merge posts']; ?><br /></label>
<?php endif;
?>
Вот и все обновление. В админке интервал между постингом для юзеров поставить в 0.
таблице pun_search_words для поля word выставить аттрибут BINARY
Не понял. Тип поля BINARY не нашел. Можно командочку, для замены типа поля.
ALTER TABLE `header` CHANGE `id` `id` BINARY( 32 ) NOT NULL () (c) PhpMyAdmin
Не тип поля а атрибут, тип varchar(20) аттрибут binary/
в пыхадмине заходишь в структуру таблицы, выбираешь поле, жмешь редактировать, появляется опции поля - тип, длина, атрибут, по умолчанию, дополнительно. в атрибуте выбираешь binary
Сделал, что Вы написали - ошибка та же. Не знаю что и делать. Форум ставил с нуля 1.2.14, так что базы новые и свежие. Другого ничего не накатывал.
Если после ошибки назад и обновить то в топике -следующее
dfgdfgdfg
[color=#808080][i]Добавленный
[color=#808080][i]Добавленный
С BINARY получилось так.
ALTER TABLE `forumsearch_words` MODIFY `word` varchar(20) BINARY;
В админке интервал между постингом для юзеров поставить в 0.
При таком тайминге, вообще посты сливаться не будут. А как тогда админу их слить?
Редактировался mnk (2006-11-22 17:52:45)
Я имел в виду флуд-интервал, т.е. чтобы юзер мог оправлять следующий пост сразу же,а не по прошествии 5 минут как по дефолту.
Насчет ошибки я право даже не знаю, везде работает, а тут аномалия. Причем ошибка и способ решения взяты с оф.сайта - применить для этого поля varchar binary или varbinary
Но я тут увидел, что надпись "добавлено бла-бла-бла" добавляется к сообщению и индексируется. Это надо будет убрать.
Добавлено Wed Nov 22 20:57:06 2006 :
mnk,в версии 1.2.14 таблица уже правильная, с нужным аттрибутом. Советую ее удалить поставить заново, взяв запрос на ее создание из инсталлера.
Этот форум тоже 1.2.14, но все работает. Может ошибка при установке?
Дак нужно запускать install_mod.php или нет? Или руками новую таблицу добавить?