Но это-же решается просто, достаточно при вызове function submit_post подставить дату старого поста и всё (и то это даже не нужно, вполне можно добавленный пост датировать датой обновления)Это даст некоторые разногласия со временем
[MODDB] Advanced Posts Merging
-
- Former team member
- Сообщения: 816
- Стаж: 21 год
- Откуда: Estonia, Tallinn
Серый цвет - светлый (светлее чёрного), но он и тёмный (темнее белого), он же промежуточный (между чёрным и белым). Теорию относительности никто не отменял. Истина в целом - понятие виртуально-ситуативное.
-
- phpBB Guru
- Сообщения: 5484
- Стаж: 21 год 1 месяц
- Поблагодарили: 2 раза
-
- Former team member
- Сообщения: 816
- Стаж: 21 год
- Откуда: Estonia, Tallinn
Я даже поставить не могу пока (бошка болит) но надо проинспектировать запись поста в базе, может bb_uid глючит, или какой-то параметр типа "отключить bbcode" сбивается надо искать не причину а следствие, а когда будет ясно что искать тогда может и найти проще будет
Серый цвет - светлый (светлее чёрного), но он и тёмный (темнее белого), он же промежуточный (между чёрным и белым). Теорию относительности никто не отменял. Истина в целом - понятие виртуально-ситуативное.
-
- phpBB Guru
- Сообщения: 5484
- Стаж: 21 год 1 месяц
- Поблагодарили: 2 раза
Параметры bbcode и прочие берутся из предыдущего поста. Может и сбиваются, но в таком случае теги должны просто отрезаться. Скорее я где-то с преобразованием сообщения намудрил. Пока посмотреть даже минимально не могу - работы по горло.
Эксперт - это человек, который избегает мелких ошибок на пути к грандиозному провалу.
Любая более-менее сложная задача имеет несколько простых, изящных, лёгких для понимания неправильных решений
Любая более-менее сложная задача имеет несколько простых, изящных, лёгких для понимания неправильных решений
-
- Former team member
- Сообщения: 816
- Стаж: 21 год
- Откуда: Estonia, Tallinn
Нет, как ораз если отрезается bb_uid у тега то он превращается в текст...Может и сбиваются, но в таком случае теги должны просто отрезаться.
Серый цвет - светлый (светлее чёрного), но он и тёмный (темнее белого), он же промежуточный (между чёрным и белым). Теорию относительности никто не отменял. Истина в целом - понятие виртуально-ситуативное.
-
- phpBB Guru
- Сообщения: 5484
- Стаж: 21 год 1 месяц
- Поблагодарили: 2 раза
-
- Former team member
- Сообщения: 816
- Стаж: 21 год
- Откуда: Estonia, Tallinn
А у меня ощущение что происходит следующее
Берётся цитата (на уровне SQL)
А обратно возвращается
Так вот если это так, то это и надо копать
Берётся цитата (на уровне SQL)
Код: Выделить всё
[quote:12345678="Johny"]
Код: Выделить всё
[quote="Johny"]
Серый цвет - светлый (светлее чёрного), но он и тёмный (темнее белого), он же промежуточный (между чёрным и белым). Теорию относительности никто не отменял. Истина в целом - понятие виртуально-ситуативное.
-
- phpBB Guru
- Сообщения: 5484
- Стаж: 21 год 1 месяц
- Поблагодарили: 2 раза
Vladson
Бррр...
Это преобразование происходит после вытягивания текстов сообщений для просмотра темы. Если в открывающем коде есть uid, и есть соответствующий ему закрывающий код, они в соответствии с шаблоном преобразуются в html.
Добавлено спустя 34 секунды:
Я пошел копать...
Бррр...
Это преобразование происходит после вытягивания текстов сообщений для просмотра темы. Если в открывающем коде есть uid, и есть соответствующий ему закрывающий код, они в соответствии с шаблоном преобразуются в html.
Добавлено спустя 34 секунды:
Я пошел копать...

Эксперт - это человек, который избегает мелких ошибок на пути к грандиозному провалу.
Любая более-менее сложная задача имеет несколько простых, изящных, лёгких для понимания неправильных решений
Любая более-менее сложная задача имеет несколько простых, изящных, лёгких для понимания неправильных решений
-
- Former team member
- Сообщения: 816
- Стаж: 21 год
- Откуда: Estonia, Tallinn
В том то и дело при редактировании сообщения из базы достаёься
В поле для редактирования переобразуется в
При отправке сообщения обратно в базу должно трансформироваться обратно в
Что то мне подсказывает что этого не происходит...
Код: Выделить всё
[quote:12345678="Johny"]
Код: Выделить всё
[quote="Johny"]
Код: Выделить всё
[quote:12345678="Johny"]
Серый цвет - светлый (светлее чёрного), но он и тёмный (темнее белого), он же промежуточный (между чёрным и белым). Теорию относительности никто не отменял. Истина в целом - понятие виртуально-ситуативное.
-
- phpBB Guru
- Сообщения: 5484
- Стаж: 21 год 1 месяц
- Поблагодарили: 2 раза
Нашел баг, действительно перемудрил с преобразованиями. В результате текст предыдущего сообщения клался в базу с неправильно обработанн6ым bbcode - без bbcode uid.
Вызов функции submit_merged_post (posting.php) должен выглядить следующим образом:
А сама функция (functions_post.php) вот так:
Архив обновлен, версия мода изменена на 2.0.1.
Вызов функции submit_merged_post (posting.php) должен выглядить следующим образом:
Код: Выделить всё
submit_merged_post($last_post_id, $forum_id, $subject, $message, $return_message, $return_meta);
Код: Выделить всё
//
// Post an addon to the existing post
//
function submit_merged_post($post_id, $forum_id, $subject, $message, &$return_message, &$return_meta)
{
global $board_config, $db, $lang, $phpEx, $phpbb_root_path;
include($phpbb_root_path . 'language/lang_' . $board_config['default_lang'] . '/lang_merge.' . $phpEx);
include($phpbb_root_path . 'includes/functions_search.'.$phpEx);
$current_time = time();
// Check message
if ( empty($message) )
{
message_die(GENERAL_MESSAGE, $lang['Empty_message']);
}
$sql = "SELECT p.post_created, p.post_time, p.enable_html, p.enable_bbcode, p.enable_smilies, pt.*
FROM " . POSTS_TABLE . " p, " . POSTS_TEXT_TABLE ." pt
WHERE p.post_id = $post_id
AND pt.post_id = p.post_id";
$result = $db->sql_query($sql) or message_die(GENERAL_ERROR, 'Could not obtain last post information', '', __LINE__, __FILE__, $sql);
$last_post_data = $db->sql_fetchrow($result);
// Flood control
if ( ($current_time - intval($last_post_data['post_time'])) < intval($board_config['merge_flood_interval']) )
{
message_die(GENERAL_MESSAGE, $lang['Flood_Error']);
}
$last_post_created = $last_post_data['post_created'];
$last_post_time = $last_post_data['post_time'];
$last_html = $last_post_data['enable_html'];
$last_bbcode = $last_post_data['enable_bbcode'];
$last_smilies = $last_post_data['enable_smilies'];
$last_bbcode_uid = $last_post_data['bbcode_uid'];
$last_subject = $last_post_data['post_subject'];
$last_message = $last_post_data['post_text'];
$db->sql_freeresult($result);
if ($last_bbcode_uid != '')
{
$last_message = preg_replace('/\:(([a-z0-9]:)?)' . $last_bbcode_uid . '/s', '', $last_message);
}
// Message preparation was partly borrowed from editpost routine
$last_message = str_replace('<', '<', $last_message);
$last_message = str_replace('>', '>', $last_message);
$last_message = str_replace('<br />', "\n", $last_message);
// Adding slashes, we need this step for comparison
$last_subject = addslashes($last_subject);
$last_message = addslashes($last_message);
// Preparing separator
$merged_after = ($current_time - $last_post_time);
$merged_sec = $merged_after % 60;
$merged_min = ($merged_after/60) % 60;
$merged_hours = ($merged_after/3600) % 24 ;
$merged_days = ($merged_after/86400) % 31;
$s_st = ($merged_sec) ? seconds_st($merged_sec) : '';
$m_st = ($merged_min) ? minutes_st($merged_min) : '';
$h_st = ($merged_hours) ? hours_st($merged_hours) : '';
$d_st = ($merged_days) ? days_st($merged_days) : '';
$separator = sprintf($lang['Merge_separator'],$d_st,$h_st,$m_st,$s_st);
$separator .= ( !empty($subject) && ($subject != $last_subject) ) ? sprintf($lang['Merge_post_subject'], $subject) : '';
$separator = str_replace("'", "''", $separator);
$message = ($message != $last_message) ? $last_message . $separator . trim($message) : trim($message);
$message = prepare_message($message, $last_html, $last_bbcode, $last_smilies, $last_bbcode_uid);
// This replacement was borrowed from posting.php
$last_subject = str_replace("\'", "''", $last_subject);
$last_message = str_replace("\'", "''", $last_message);
$sql = "UPDATE " . POSTS_TEXT_TABLE . " SET post_text = '$message' WHERE post_id = $post_id";
$result = $db->sql_query($sql) or message_die(GENERAL_ERROR, 'Could not update post text information', '', __LINE__, __FILE__, $sql);
$sql = "UPDATE " . POSTS_TABLE . " SET post_time = $current_time WHERE post_id = $post_id";
$result = $db->sql_query($sql) or message_die(GENERAL_ERROR, 'Could not update last post time', '', __LINE__, __FILE__, $sql);
$sql = "UPDATE " . FORUMS_TABLE . " SET forum_last_post_id = $post_id WHERE forum_id = $forum_id";
$result = $db->sql_query($sql) or message_die(GENERAL_ERROR, 'Could not update forum last post id', '', __LINE__, __FILE__, $sql);
// Search routines
remove_search_post($post_id);
add_search_words('single', $post_id, stripslashes($message), stripslashes($subject));
// Meta & return message
$return_meta = '<meta http-equiv="refresh" content="3;url=' . append_sid("viewtopic.$phpEx?" . POST_POST_URL . "=" . $post_id) . '#' . $post_id . '">';
$return_message = $lang['Stored'] . '<br /><br />' . sprintf($lang['Click_view_message'], '<a href="' . append_sid("viewtopic.$phpEx?" . POST_POST_URL . "=" . $post_id) . '#' . $post_id . '">', '</a>') . '<br /><br />' . sprintf($lang['Click_return_forum'], '<a href="' . append_sid("viewforum.$phpEx?" . POST_FORUM_URL . "=$forum_id") . '">', '</a>');
}
Эксперт - это человек, который избегает мелких ошибок на пути к грандиозному провалу.
Любая более-менее сложная задача имеет несколько простых, изящных, лёгких для понимания неправильных решений
Любая более-менее сложная задача имеет несколько простых, изящных, лёгких для понимания неправильных решений
-
- Former team member
- Сообщения: 702
- Стаж: 20 лет 6 месяцев
-
- Former team member
- Сообщения: 816
- Стаж: 21 год
- Откуда: Estonia, Tallinn