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

[FINAL] In-post hidden messages BBcode Mod

Здесь авторы постили бета-версии своих модификаций для phpBB 2.0.x. Внимание! Не устанавливайте бета-версии модов на работающие форумы!
Midi
phpBB 1.0.0
Сообщения: 4
Стаж: 16 лет 10 месяцев

Сообщение Midi »

Valiks
перестало цитироваться скрытое
но не выводится - "Скрытое сообщение" и "Для"
если Вы автор поста, то Вы его и не увидите, тк автор мода оперирует полем post_username.
я себе строку

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

if ($userdata['username']==$postrow[$i]['post_username']||$is_auth['auth_mod'] || $userdata['user_level'] == ADMIN)
переделал в

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

if ($userdata['user_id']==$postrow[$i]['poster_id']||$is_auth['auth_mod'] || $userdata['user_level'] == ADMIN)
после чего автор поста стал видеть свое скрытое сообщение
Аватара пользователя
PhoeNiXX
phpBB 1.4.0
Сообщения: 31
Стаж: 16 лет 4 месяца
Откуда: Питер

Сообщение PhoeNiXX »

Да, проблемка такая - фича не работает с никами, содержащими символы, отличные от цифр и букв, если @ $ & можно добавить в исключение таким образом:

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

$priv_ptrn = "#\[priv=([А-Яа-яa-z0-9$@~?*/\#%&, ]+)\](.*?)\[/priv\]#is";
Но как быть с такими символами как " ' . , [ ] и др?
Например: {петя}'",
Ограничивать пользователей в выборе ников - это не решение.
Midi
phpBB 1.0.0
Сообщения: 4
Стаж: 16 лет 10 месяцев

Сообщение Midi »

как вариант

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

$priv_ptrn = "#\[priv='([[:print:], ]+)'\](.*?)\[/priv\]#is";
только формат ввода [priv='1,2,3,4']блаблабла[/priv]
Аватара пользователя
PhoeNiXX
phpBB 1.4.0
Сообщения: 31
Стаж: 16 лет 4 месяца
Откуда: Питер

Сообщение PhoeNiXX »

Сработало! Спасибо! А то уже хотел сносить мод)
Jumangee
phpBB 1.4.0
Сообщения: 39
Стаж: 17 лет 11 месяцев

Сообщение Jumangee »

Да, спасибо всем за помощь! Не успеваю протестировать столько вариантов :)
По поводу минусов всё понятно, а вот по поводу того, что должен добавлять скрытое сообщение могли только админы и модеры - не согласен, т.к. мод нацелен на форумные рпг. Поэтому, думаю добавить настройки - кому показывать, как и т.п., думаю так будет удобнее.
Valiks
phpBB 1.4.1
Сообщения: 46
Стаж: 17 лет 9 месяцев

Сообщение Valiks »

А что сработало и как?
PhoeNiXX писал(а):Сработало! Спасибо! А то уже хотел сносить мод)
Покажите кто-нибудь окончательный вариант кода, пожалуйста

Вот это
Jumangee писал(а):добавить настройки - кому показывать, как и т.п., думаю так будет удобнее.
самое лучшее решение
Val
Jumangee
phpBB 1.4.0
Сообщения: 39
Стаж: 17 лет 11 месяцев

Сообщение Jumangee »

Midi писал(а):Valiks
Цитата:
перестало цитироваться скрытое
но не выводится - "Скрытое сообщение" и "Для"


если Вы автор поста, то Вы его и не увидите, тк автор мода оперирует полем post_username.
Не совсем понял, а почему по username может не отрабатывать? Переделаю как у вас, прозапас, но всё равно странно....

Добавлено спустя 50 минут 46 секунд:

Вот новая версия
http://bbs.jumangee.net/files/inpost_ms ... tall_0.rar
исправил надеюсь всё :)
Midi
phpBB 1.0.0
Сообщения: 4
Стаж: 16 лет 10 месяцев

Сообщение Midi »

Jumangee писал(а):
Midi писал(а):Valiks
Цитата:
перестало цитироваться скрытое
но не выводится - "Скрытое сообщение" и "Для"


если Вы автор поста, то Вы его и не увидите, тк автор мода оперирует полем post_username.
Не совсем понял, а почему по username может не отрабатывать?
это, возможно, особенность моей "версии" phpBB (перелопаченной от и до) - поле post_username у меня пусто.
не навязываю использование poster_id, но рекомендую, тк poster_id есть всегда.
Valiks
phpBB 1.4.1
Сообщения: 46
Стаж: 17 лет 9 месяцев

Сообщение Valiks »

Кто может объяснить, как можно создавать подобные скрытые сообщения но не по имени, а по
- группам пользователей
- регистрированные
- незарегистрированные
- и т.д.

чтобы можно было бы варьировать - кому показывать, а кому нет, в более широком диапазоне
Val
Jumangee
phpBB 1.4.0
Сообщения: 39
Стаж: 17 лет 11 месяцев

Сообщение Jumangee »

Вообще, я так понял в phpbb нет групп "зарегистрированные" и "незарегистрированные", но это наверное можно обойти так: [priv=registered]text[/priv]
потом, в коде проверять

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

for ($t = 0; $t < count($userlist); $t++)
{			
	$userlist[$t] = trim($userlist[$t]);			
	if (strcasecmp($userlist[$t], $userdata['username'])==0||(strcasecmp($userlist[$t], 'registered')==0&&$userdata['user_id']>0)) // добавили "виртуального registered"
	{
		$found = true;
		...
		break;
	}
}
Последний раз редактировалось Jumangee 25.12.2007 16:03, всего редактировалось 1 раз.
Valiks
phpBB 1.4.1
Сообщения: 46
Стаж: 17 лет 9 месяцев

Сообщение Valiks »

Насчет этого
Jumangee писал(а):[priv=registered]text[/priv]
примерно ясно

А вот это
Jumangee писал(а):потом, в коде проверять
я не смогу реализовать,- не владею
Мне нкжен готовый код, сам не одолею
Val
Jumangee
phpBB 1.4.0
Сообщения: 39
Стаж: 17 лет 11 месяцев

Сообщение Jumangee »

выше это и есть готовый код,
было:

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

if (strcasecmp($userlist[$t], $userdata['username'])==0)
стало:

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

if (strcasecmp($userlist[$t], $userdata['username'])==0||(strcasecmp($userlist[$t], 'registered')==0&&$userdata['user_id']>0))
в таком варианте должно работать
Valiks
phpBB 1.4.1
Сообщения: 46
Стаж: 17 лет 9 месяцев

Сообщение Valiks »

Установил мод, все работало, после вышеприведенных изменений... все обнулилось,- ничего не работает
Jumangee писал(а):выше это и есть готовый код,
было:

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

if (strcasecmp($userlist[$t], $userdata['username'])==0)
стало:

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

if (strcasecmp($userlist[$t], $userdata['username'])==0||(strcasecmp($userlist[$t], 'registered')==0&&$userdata['user_id']>0))
в таком варианте должно работать
вернее стало так. Если я как админ захожу и ставлю тэги,- все вижу, модераторы тоже видят, но... больше никто ничего не видит. Пустое поле. Я ставил вариант

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

[priv=registered]text[/priv]
а также Юзера,- эффект один и тот же. Почему, не понимаю.

И не понял еще другого,- как вставлять круппу пользователей?

Есть предложение,- если этот мод работает и его доработать так, чтобы в нем можно было бы проставлять вывод информации при условии определенного количества сообщений,- он бы реши проблему модуля Hide, которая так и не решилась. Но это так,- пожелание. Пока, неплохо было бы если бы я разобрался в его основных функциях, но если бы были и эти дополнительные... цены бы ему не было.

Может быть я что-то не понимаю в нем, и есть смысл просто написать маленькую инструкцию о том, как правильно им пользоваться и показать все его возможности после введения всех исправлений? Думаю, и другим было бы полезно. Сегодня смотрел форум,- многие ищут то, что здесь уже существует, но... найти не могут, так как не знают о данном модуле
Последний раз редактировалось Valiks 04.03.2008 11:46, всего редактировалось 1 раз.
Val
Jumangee
phpBB 1.4.0
Сообщения: 39
Стаж: 17 лет 11 месяцев

Сообщение Jumangee »

Сделал и себе такую штуку, вроде работает нормально. Что изменилось:

В строке мода:

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

if (strcasecmp($userlist[$t], $userdata['username'])==0)
добавить перед закрывающей ")" это:

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

||(strcasecmp($userlist[$t], 'registered')==0&&$userdata['user_id']>0)
получится:

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

if (strcasecmp($userlist[$t], $userdata['username'])==0||
					(strcasecmp($userlist[$t], 'registered')==0&&$userdata['user_id']>0)
					)
				{
					$found = true;
...
далее, добавил такую фишку, чтоб было видно - что здесь "что-то должно быть" - чтоб было понятно что надо зарегаться.

Находим строку:

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

$message = preg_replace($priv_ptrn, "", $message, 1);
и меняем ее на:

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

			$txt = '';
			if (in_array('registered', $userlist))
			{
				$txt = '<i>Скрытое сообщение: необходимо быть зарегистрированным пользователем чтобы его увидеть</i>';
			}
			$message = preg_replace($priv_ptrn, $txt, $message, 1);
здесь текст не выполнен в виде языковой переменной - это я сделаю в теме техподдержки мода и на страничке мода.
Аватара пользователя
Alek$
Former team member
Сообщения: 2616
Стаж: 18 лет 8 месяцев
Откуда: Новосибирск
Поблагодарили: 3 раза

Сообщение Alek$ »

Jumangee
вопрос на засыпку. При ответе с цитированием текст может просмотреть тоже только адресат?
Самая страшная ошибка, это ошибка без видимых причин и конкретных последствий.
phpBB3 [db_update.php generator]
Первая помощь по всем phpBB-вопросам: phpBB2 и phpBB3 FAQ; Правила общения;
Все консультации в icq или личке - на платной основе.

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