Double post merge / Склеивание подряд идущих сообщений

Модератор: Лора Палмер

Tester

Double post merge / Склеивание подряд идущих сообщений

Сообщение Tester »

Я правильно понимаю, что это на этом сайте можно высказывать замечания по поводу этого мода?
ra

Сообщение ra »

А замечания такие:
1. Дата слития сообщения указывается на языке пользователя. Лучше сделать добавлено спустя Х минут Х секунд.
2.Даже если проёт один год перед слитием сообщений, они всё равно склеиваются. Надо паставить ограничение на слитие - 24 часа.
3. Последний смайлик в сообщении к которому приклеивается другое сообщение превращается в код.
Аватара пользователя
mercury
Старожил
Сообщения: 1912
Зарегистрирован: Пн авг 12, 2002 23:03
Откуда: ни возьмись
Контактная информация:

Сообщение mercury »

вообще нет. это форум, где этот хак внедрён. и в тест-полигоне можно его опробовать, причём только там.

мод писался исключительно для этого форума и в виде мода представлен "как есть". но. именно здесь в технической поддержке в этой теме его работу можно обсудить )

[off]добавлено Вс Мар 21, 2004 17:17:[/off]

ra,
1.
ra писал(а):Дата слития сообщения указывается на языке пользователя
не знаю, как сделать, чтоб было на дефолтном языке форума, например..
ra писал(а):Лучше сделать добавлено спустя Х минут Х секунд
а вот это, наверное, действительно лучше..
2. на этом форуме стоит ограничение: 18 часов. в моде этого нету. и не знаю если будет.. )
3. есть такое дело! опять же, как победить хз.
ra

Сообщение ra »

Mercuree, а можешь выложить этот мод в том виде, в котором он сейчас?
Аватара пользователя
mercury
Старожил
Сообщения: 1912
Зарегистрирован: Пн авг 12, 2002 23:03
Откуда: ни возьмись
Контактная информация:

Сообщение mercury »

http://chat.md/mercury/phpbb/phpbb_doub ... _merge.rar
вот слегка апдэйтнул.
затронуты пункты 1 и 2.
п.3 всё ещё не знаю как победить. впрочем, и не смотрел особо ) не сейчас.

[off]добавлено спустя 1 минуту:[/off]

если прошло менее минуты то будет: [off]добавлено спустя Х секунд(у,ы)[/off]
если прошло менее часа то будет: [off]добавлено спустя Х минут(у,ы)[/off]
если прошло более часа то будет: [off]добавлено спустя Х час(а,ов) Х минут(у,ы)[/off]
если прошло более часа и не более минуты то будет: [off]добавлено спустя Х час(а,ов)[/off]
Аватара пользователя
Белый С.
Завсегдатай
Сообщения: 2526
Зарегистрирован: Пн дек 22, 2003 22:43
Откуда: Выведен из аксиом
Контактная информация:

Сообщение Белый С. »

ra, Mercuree, интересно. Ушёл тестить.
ra

Сообщение ra »

Mercuree писал(а):если прошло менее часа то будет: добавлено спустя Х минут(у,ы)
если прошло более часа то будет: добавлено спустя Х час(а,ов) Х минут(у,ы)
если прошло более часа и не более минуты то будет: добавлено спустя Х час(а,ов)
Cюда ещё не плохо вставить секунды.
Аватара пользователя
LexX
Старожил
Сообщения: 1741
Зарегистрирован: Пн авг 12, 2002 20:02
Откуда: Кишингтаун
Контактная информация:

Сообщение LexX »

ra,
может сразу тики кварца?...
Гость

Сообщение Гость »

LexX, так серьёзно лучше было бы.
А вот небольшое дополнениe:

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

#
#-----[ OPEN ]------------------------------------------
#

posting.php

#
#-----[ FIND ]------------------------------------------
#

		if ( $hours == 0 && $minutes == 0 )
			{

#
#-----[ AFTER ADD ]-------------------------------------
#

				 if ( $seconds == 01 )  $seconds = 1; 
				 if ( $seconds == 02 )  $seconds = 2; 
				 if ( $seconds == 03 )  $seconds = 3; 
				 if ( $seconds == 04 )  $seconds = 4; 
				 if ( $seconds == 05 )  $seconds = 5; 	
				 if ( $seconds == 06 )  $seconds = 6; 
			   	 if ( $seconds == 07 )  $seconds = 7; 
				 if ( $seconds == 08 )  $seconds = 8; 
				 if ( $seconds == 09 )  $seconds = 9;

# 
#-----[ SAVE/CLOSE ALL FILES ]------------------------------------------ 
#
Siava

Сообщение Siava »

У меня почему-то дишних 3 часа накидывает в "добавленно".. (зависит от GMT?)
Аватара пользователя
mercury
Старожил
Сообщения: 1912
Зарегистрирован: Пн авг 12, 2002 23:03
Откуда: ни возьмись
Контактная информация:

Сообщение mercury »

ra,
ra писал(а):Cюда ещё не плохо вставить секунды.
ну это уже сам, сорри )
Гость писал(а):А вот небольшое дополнениe
всё гораздо проще: найти:

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

$seconds = date("s", $difference_time);
заменить на:

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

$seconds = intval(date("s", $difference_time));
именно таким образом сделано для минут и часов, если обратил внимание )

Siava,
у меня на локале тоже самое. прибавляется GMT. а тут всё ок, хотя настройки GMT те же.

[off]добавлено спустя 1 минуту:[/off]

ну вот

[off]добавлено спустя 3 минуты:[/off]

GMT не добавляется. так шта не в хаке дело.. получается..
ra

Сообщение ra »

Mercuree, у меня добаляется два часа - решается $hours = $hours - 2;

Вопрос: как сделать, чтобы время добавления сообщения считалась не от времени сообщения, а от времени последнего добавления сообщения? Меняю ответ на решение проблемы с смайлами:

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

#
#-----[ OPEN ]------------------------------------------
#

posting.php

#
#-----[ FIND ]------------------------------------------
#

		$separator = '\n\n[size=9][color=#999999]Добавлено спустя';

#
#-----[ REPLACE WITH ]------------------------------------------
#

		$separator = ' \n\n[size=9][color=#999999]Добавлено спустя';

#
#-----[ FIND ]------------------------------------------
#

		$separator .= ':[/color][/size]\n\n';

#
#-----[ REPLACE WITH ]------------------------------------------
#

		$separator .= ':[/color][/size]\n\n ';

# 
#-----[ SAVE/CLOSE ALL FILES ]------------------------------------------ 
#
Аватара пользователя
mercury
Старожил
Сообщения: 1912
Зарегистрирован: Пн авг 12, 2002 23:03
Откуда: ни возьмись
Контактная информация:

Сообщение mercury »

ra,
ra писал(а):Mercuree, у меня добаляется два часа - решается $hours = $hours - 2;
э, конечно, решение... тока я бы посоветовал убедиться, что у _всех_ твоих пользователей прибавляется 2 часа, а не только у тебя. иначе у кого-то может появится "добавлено спустя -2 часа :)", например.
ra писал(а):как сделать, чтобы время добавления сообщения считалась не от времени сообщения, а от времени последнего добавления сообщения?
уух. с 5-ого раза понял, что ты имел ввиду )) я тоже об этом задумывался, но. дата/время последнего добавления у нас нигде не записывается (при добавлении), поэтому отталкиваться от этой метки мы не можем. можем разве что при каждом добавлении изменять время поста на текущее, что в принципе, весьма разумно. тогда каждое добавление будет отсчитываться от предыдущего.

за смайлы спасибо! )) :super: затестим. вот как полезен свежий взгляд со стороны ))

[off]добавлено спустя 58 минут:[/off]

вот табе ответ в обмен на решение проблемы с смайлами ))

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

# 
#-----[ OPEN ]------------------------------------------ 
# 

posting.php 

# 
#-----[ FIND ]------------------------------------------ 
# 

		$difference_time = time() - $post_id_last_row['post_time'];

# 
#-----[ REPLACE WITH ]------------------------------------------ 
# 

		$current_time = time();
		$difference_time = $current_time - $post_id_last_row['post_time'];

# 
#-----[ FIND ]------------------------------------------ 
# 

	$message = ( !empty($last_message) && $last_message != $message ) ? $last_message . $separator . $message : $message;

# 
#-----[ REPLACE WITH ]------------------------------------------ 
# 

	if ( !empty($last_message) )
	{
		$message = ( $last_message != $message ) ? $last_message . $separator . $message : $message;
		$sql = "UPDATE " . POSTS_TABLE . " SET post_time = " . $current_time . " WHERE post_id = " . $post_id;
		if ( !($result = $db->sql_query($sql)) )
		{
			message_die(GENERAL_ERROR, 'Could not update last post time', '', __LINE__, __FILE__, $sql);
		}
	}

# 
#-----[ SAVE/CLOSE ALL FILES ]------------------------------------------ 
# 


[off]добавлено спустя 6 минут:[/off]

вот теперь по идее дата/время последнего сообщения меняется на дату/время последнего добавления, чего, насколько я помню, давно желал Белый С.. правда, галка "непрочтённое сообщение" не ставится.

[off]добавлено спустя 1 минуту:[/off]

и время "спустя" уже соответственно отсчитывается от последнего добавления )

[off]добавлено спустя 18 минут:[/off]

ra,
если хочешь напиши своё имя/мыло, я тебя в графу "thanks to" запишу в моде )
я его апдэйтнул, до 1.0.1. надо бы апдэйтнуть и на phpbbhacks.com, шоб народ юзал новую версию :)

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

## Thanks to:
##		Ra - for ideas and some code hints


[off]добавлено спустя 35 минут:[/off]

2222

[off]добавлено спустя 36 секунд:[/off]

6666
Siava

Сообщение Siava »

Mercuree,
среди этих & и > ничего не понятно... :(
Можно как-нибудь в другой форме вставить?
Аватара пользователя
Белый С.
Завсегдатай
Сообщения: 2526
Зарегистрирован: Пн дек 22, 2003 22:43
Откуда: Выведен из аксиом
Контактная информация:

Сообщение Белый С. »

Поддерживаю Siava: и в самом деле, Мерк, почему многие символы (больше, меньше, .... румынская диакритика и прочие) часто (но не всегда) заменяются на их HTMLование? :(
Mercuree писал(а):дата/время последнего сообщения меняется на дату/время последнего добавления
Да, желал, а ещё я желал что-то (т.е. время последнего измененения/добавления в тему/форум) сделать в случае редактирования поста, но пока живу так.
Аватара пользователя
mercury
Старожил
Сообщения: 1912
Зарегистрирован: Пн авг 12, 2002 23:03
Откуда: ни возьмись
Контактная информация:

Сообщение mercury »

Siava писал(а):&
абздольц... :ermm:

http://chat.md/mercury/phpbb/phpbb_doub ... _merge.rar
сами разберетёсь?
Гость

Сообщение Гость »

Mercuree, копирайты:

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

## Thanks to: 
##      ra - for ideas and some code hints
##      mailto: meos@mail.ru      site: www.heatpc.net
Спасибо за дороботку мода!
Аватара пользователя
x
Продвинутый
Сообщения: 957
Зарегистрирован: Вт янв 07, 2003 10:15

Сообщение x »

тут такая хрень произойдет:
когда $mode = 'editpost'; он будет ругаться при посте, из-за $sql = "UPDATE " . POSTS_TABLE . " SET post_time = " . $current_time. " WHERE post_id = " . $post_id; из-за флуд-протектора, потому что 15 сек не прошло.
Те получается вот что: скрипт берет $currenttime = time(); потом он впихивает это значение на место post_time в базу, потом (не меняя $curent_time, ничего ведь не рефрешится) пытается проверить if (intval($row['last_post_time']) > 0 && ($current_time - intval($row['last_post_time'])) < intval($board_config['flood_interval'])) . Ессно эта проверка всегда провалится, потому что разницы нету никакой, а надо чтоб было больше чем $board_config['flood_interval']
надо чето делать, толи SET post_time = " . $current_time -15., толи хз, лишь бы курент_тиме не имело то же значение с пост_тиме, те было бы больше.
или радикально, в функциях, отрубить флуд-контрол для моде-едитпост.
Аватара пользователя
Белый С.
Завсегдатай
Сообщения: 2526
Зарегистрирован: Пн дек 22, 2003 22:43
Откуда: Выведен из аксиом
Контактная информация:

Сообщение Белый С. »

[off]Mercuree, что такое абздольц? :insane: [/off]
x писал(а):отрубить флуд-контрол для моде-едитпост
Да здравствуют умные люди! :super:

А СКЛЕЙКА ВООБЩЕ НЕ РАБОТАЕТ. НЕУЖЕЛИ ТАК РЕШИЛИ ПРОБЛЕМУ, ЕКСПЕРИМЕНТАТОРЫ?
Аватара пользователя
mercury
Старожил
Сообщения: 1912
Зарегистрирован: Пн авг 12, 2002 23:03
Откуда: ни возьмись
Контактная информация:

Сообщение mercury »

x,
спасибо за баго_отлов. вроде решил добавлением одной переменной. чуть позже опишу как.
Белый С. писал(а):[off]что такое[/off]
[off]негодование (применяется, как альтернатива слову п-ц)[/off]
Ответить

Вернуться в «Техническая поддержка»