[FINAL] In-post hidden messages BBcode Mod

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

Сообщение Midi » 22.12.2007 19:15

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)


после чего автор поста стал видеть свое скрытое сообщение
Midi
phpBB 1.0.0
 
Сообщения: 4
Зарегистрирован: 13.06.2007 12:05
CPCH

Сообщение PhoeNiXX » 22.12.2007 19:32

Да, проблемка такая - фича не работает с никами, содержащими символы, отличные от цифр и букв, если @ $ & можно добавить в исключение таким образом:
Код: Выделить всё
$priv_ptrn = "#\[priv=([А-Яа-яa-z0-9$@~?*/\#%&, ]+)\](.*?)\[/priv\]#is";

Но как быть с такими символами как " ' . , [ ] и др?
Например: {петя}'",
Ограничивать пользователей в выборе ников - это не решение.
Аватара пользователя
PhoeNiXX
phpBB 1.4.0
 
Сообщения: 32
Зарегистрирован: 07.12.2007 2:20
Откуда: Питер

Сообщение Midi » 22.12.2007 19:55

как вариант
Код: Выделить всё
$priv_ptrn = "#\[priv='([[:print:], ]+)'\](.*?)\[/priv\]#is";


только формат ввода [priv='1,2,3,4']блаблабла[/priv]
Midi
phpBB 1.0.0
 
Сообщения: 4
Зарегистрирован: 13.06.2007 12:05

Сообщение PhoeNiXX » 22.12.2007 20:16

Сработало! Спасибо! А то уже хотел сносить мод)
Аватара пользователя
PhoeNiXX
phpBB 1.4.0
 
Сообщения: 32
Зарегистрирован: 07.12.2007 2:20
Откуда: Питер

Сообщение Jumangee » 22.12.2007 23:27

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

Сообщение Valiks » 23.12.2007 3:43

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

Покажите кто-нибудь окончательный вариант кода, пожалуйста

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

самое лучшее решение
Val
Valiks
phpBB 1.4.1
 
Сообщения: 47
Зарегистрирован: 10.07.2006 19:07

Сообщение Jumangee » 23.12.2007 16:06

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


если Вы автор поста, то Вы его и не увидите, тк автор мода оперирует полем post_username.


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

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

Вот новая версия
http://bbs.jumangee.net/files/inpost_ms ... tall_0.rar
исправил надеюсь всё :)
Jumangee
phpBB 1.4.0
 
Сообщения: 33
Зарегистрирован: 28.04.2006 10:46

Сообщение Midi » 23.12.2007 19:28

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


если Вы автор поста, то Вы его и не увидите, тк автор мода оперирует полем post_username.


Не совсем понял, а почему по username может не отрабатывать?


это, возможно, особенность моей "версии" пхпбб (перелопаченной от и до) - поле post_username у меня пусто.
не навязываю использование poster_id, но рекомендую, тк poster_id есть всегда.
Midi
phpBB 1.0.0
 
Сообщения: 4
Зарегистрирован: 13.06.2007 12:05

Сообщение Valiks » 25.12.2007 12:14

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

чтобы можно было бы варьировать - кому показывать, а кому нет, в более широком диапазоне
Val
Valiks
phpBB 1.4.1
 
Сообщения: 47
Зарегистрирован: 10.07.2006 19:07

Сообщение Jumangee » 25.12.2007 12:28

Вообще, я так понял в 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 раз.
Jumangee
phpBB 1.4.0
 
Сообщения: 33
Зарегистрирован: 28.04.2006 10:46

Сообщение Valiks » 25.12.2007 15:24

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

примерно ясно

А вот это
Jumangee писал(а):потом, в коде проверять

я не смогу реализовать,- не владею
Мне нкжен готовый код, сам не одолею
Val
Valiks
phpBB 1.4.1
 
Сообщения: 47
Зарегистрирован: 10.07.2006 19:07

Сообщение Jumangee » 25.12.2007 16:02

выше это и есть готовый код,
было:
Код: Выделить всё
if (strcasecmp($userlist[$t], $userdata['username'])==0)

стало:
Код: Выделить всё
if (strcasecmp($userlist[$t], $userdata['username'])==0||(strcasecmp($userlist[$t], 'registered')==0&&$userdata['user_id']>0))

в таком варианте должно работать
Jumangee
phpBB 1.4.0
 
Сообщения: 33
Зарегистрирован: 28.04.2006 10:46

Сообщение Valiks » 12.02.2008 14:15

Установил мод, все работало, после вышеприведенных изменений... все обнулилось,- ничего не работает
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
Valiks
phpBB 1.4.1
 
Сообщения: 47
Зарегистрирован: 10.07.2006 19:07

Сообщение Jumangee » 03.03.2008 10:47

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

В строке мода:
Код: Выделить всё
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);

здесь текст не выполнен в виде языковой переменной - это я сделаю в теме техподдержки мода и на страничке мода.
Jumangee
phpBB 1.4.0
 
Сообщения: 33
Зарегистрирован: 28.04.2006 10:46

Сообщение Alek$ » 03.03.2008 17:27

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

Пред.След.

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

 


  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 0