Уважаемые пользователи!
C 7 ноября 2020 года phpBB Group прекратила выпуск обновлений и завершила дальнейшее развитие phpBB версии 3.2.
С 1 августа 2024 года phpBB Group прекращает поддержку phpBB 3.2 на официальном сайте.
Сайт официальной русской поддержки phpBB Guru продолжит поддержку phpBB 3.2 до 31 декабря 2024 года.
С учетом этого, настоятельно рекомендуется обновить конференции до версии 3.3.

[MODDB] Advanced Posts Merging

Здесь авторы постили бета-версии своих модификаций для phpBB 2.0.x. Внимание! Не устанавливайте бета-версии модов на работающие форумы!
Аватара пользователя
Vladson
Former team member
Сообщения: 816
Стаж: 20 лет
Откуда: Estonia, Tallinn

Сообщение Vladson »

Это даст некоторые разногласия со временем
Но это-же решается просто, достаточно при вызове function submit_post подставить дату старого поста и всё (и то это даже не нужно, вполне можно добавленный пост датировать датой обновления)
Серый цвет - светлый (светлее чёрного), но он и тёмный (темнее белого), он же промежуточный (между чёрным и белым). Теорию относительности никто не отменял. Истина в целом - понятие виртуально-ситуативное.
AEC

Сообщение AEC »

Xpert писал(а): с bbcode проблемы вроде как не из-за этого.
так а известно из-за чего? я вообще чёт не въеду, как это в превью всё Ок, а после отсылки... :?
Xpert
phpBB Guru
phpBB Guru
Сообщения: 5484
Стаж: 20 лет 2 месяца
Поблагодарили: 2 раза

Сообщение Xpert »

AEC
Пока неизвестно.
Эксперт - это человек, который избегает мелких ошибок на пути к грандиозному провалу.
Любая более-менее сложная задача имеет несколько простых, изящных, лёгких для понимания неправильных решений
Аватара пользователя
Vladson
Former team member
Сообщения: 816
Стаж: 20 лет
Откуда: Estonia, Tallinn

Сообщение Vladson »

Я даже поставить не могу пока (бошка болит) но надо проинспектировать запись поста в базе, может bb_uid глючит, или какой-то параметр типа "отключить bbcode" сбивается надо искать не причину а следствие, а когда будет ясно что искать тогда может и найти проще будет
Серый цвет - светлый (светлее чёрного), но он и тёмный (темнее белого), он же промежуточный (между чёрным и белым). Теорию относительности никто не отменял. Истина в целом - понятие виртуально-ситуативное.
Xpert
phpBB Guru
phpBB Guru
Сообщения: 5484
Стаж: 20 лет 2 месяца
Поблагодарили: 2 раза

Сообщение Xpert »

Параметры bbcode и прочие берутся из предыдущего поста. Может и сбиваются, но в таком случае теги должны просто отрезаться. Скорее я где-то с преобразованием сообщения намудрил. Пока посмотреть даже минимально не могу - работы по горло.
Эксперт - это человек, который избегает мелких ошибок на пути к грандиозному провалу.
Любая более-менее сложная задача имеет несколько простых, изящных, лёгких для понимания неправильных решений
AEC

Сообщение AEC »

Xpert, тока не забудь про нас.
Аватара пользователя
Vladson
Former team member
Сообщения: 816
Стаж: 20 лет
Откуда: Estonia, Tallinn

Сообщение Vladson »

Может и сбиваются, но в таком случае теги должны просто отрезаться.
Нет, как ораз если отрезается bb_uid у тега то он превращается в текст...
Серый цвет - светлый (светлее чёрного), но он и тёмный (темнее белого), он же промежуточный (между чёрным и белым). Теорию относительности никто не отменял. Истина в целом - понятие виртуально-ситуативное.
Xpert
phpBB Guru
phpBB Guru
Сообщения: 5484
Стаж: 20 лет 2 месяца
Поблагодарили: 2 раза

Сообщение Xpert »

Vladson
Я имею в виду при отключении bbcode в свойствах сообщения.
Эксперт - это человек, который избегает мелких ошибок на пути к грандиозному провалу.
Любая более-менее сложная задача имеет несколько простых, изящных, лёгких для понимания неправильных решений
Аватара пользователя
Vladson
Former team member
Сообщения: 816
Стаж: 20 лет
Откуда: Estonia, Tallinn

Сообщение Vladson »

А у меня ощущение что происходит следующее

Берётся цитата (на уровне SQL)

Код: Выделить всё

[quote:12345678="Johny"]
А обратно возвращается

Код: Выделить всё

[quote="Johny"]
Так вот если это так, то это и надо копать
Серый цвет - светлый (светлее чёрного), но он и тёмный (темнее белого), он же промежуточный (между чёрным и белым). Теорию относительности никто не отменял. Истина в целом - понятие виртуально-ситуативное.
Xpert
phpBB Guru
phpBB Guru
Сообщения: 5484
Стаж: 20 лет 2 месяца
Поблагодарили: 2 раза

Сообщение Xpert »

Vladson
Бррр...
Это преобразование происходит после вытягивания текстов сообщений для просмотра темы. Если в открывающем коде есть uid, и есть соответствующий ему закрывающий код, они в соответствии с шаблоном преобразуются в html.

Добавлено спустя 34 секунды:

Я пошел копать... :)
Эксперт - это человек, который избегает мелких ошибок на пути к грандиозному провалу.
Любая более-менее сложная задача имеет несколько простых, изящных, лёгких для понимания неправильных решений
Аватара пользователя
Vladson
Former team member
Сообщения: 816
Стаж: 20 лет
Откуда: Estonia, Tallinn

Сообщение Vladson »

В том то и дело при редактировании сообщения из базы достаёься

Код: Выделить всё

[quote:12345678="Johny"]
В поле для редактирования переобразуется в

Код: Выделить всё

[quote="Johny"]
При отправке сообщения обратно в базу должно трансформироваться обратно в

Код: Выделить всё

[quote:12345678="Johny"]
Что то мне подсказывает что этого не происходит...
Серый цвет - светлый (светлее чёрного), но он и тёмный (темнее белого), он же промежуточный (между чёрным и белым). Теорию относительности никто не отменял. Истина в целом - понятие виртуально-ситуативное.
Xpert
phpBB Guru
phpBB Guru
Сообщения: 5484
Стаж: 20 лет 2 месяца
Поблагодарили: 2 раза

Сообщение Xpert »

Нашел баг, действительно перемудрил с преобразованиями. В результате текст предыдущего сообщения клался в базу с неправильно обработанн6ым bbcode - без bbcode uid.

Вызов функции submit_merged_post (posting.php) должен выглядить следующим образом:

Код: Выделить всё

submit_merged_post($last_post_id, $forum_id, $subject, $message, $return_message, $return_meta);
А сама функция (functions_post.php) вот так:

Код: Выделить всё

//
// 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>');
}
Архив обновлен, версия мода изменена на 2.0.1.
Эксперт - это человек, который избегает мелких ошибок на пути к грандиозному провалу.
Любая более-менее сложная задача имеет несколько простых, изящных, лёгких для понимания неправильных решений
AEC

Сообщение AEC »

вроде как заработало... УРЯЯЯ!
Kastaneda
Former team member
Сообщения: 702
Стаж: 19 лет 7 месяцев

Сообщение Kastaneda »

AEC, а сообщения у тебя сейчас удаляются?
Аватара пользователя
Vladson
Former team member
Сообщения: 816
Стаж: 20 лет
Откуда: Estonia, Tallinn

Сообщение Vladson »

У иеня всё в норме
Серый цвет - светлый (светлее чёрного), но он и тёмный (темнее белого), он же промежуточный (между чёрным и белым). Теорию относительности никто не отменял. Истина в целом - понятие виртуально-ситуативное.

Вернуться в «Бета-версии модов для phpBB 2.0.x»