Форум по программному обеспечению и оборудованию > >

VBulletin. Запрет ссылок для определенных групп

07.12.2016 19:27


[ОТВЕТИТЬ]
Опции темы
18.12.2011 16:43  
OlegON
Замучился выкидывать ссылки от новичков и их же емейлы. Задумался, как же запретить писать ссылки для определенных групп, кроме как на этот же форум.
Существует два расположения :
1) threadfpdata_presave - хук на сообщение в создаваемой теме
2) postdata_presave - хук на добавляемое в тему сообщение

соответственно, в оба расположения добавил
Код:
global $vbulletin; 
$groups = explode(',','2,3,17');  
if (is_member_of($vbulletin->userinfo, $groups) OR $groups[0] == 0) 
{ 
$pagetext = $this->fetch_field('pagetext','post'); 
$pagetext = str_replace('[url]https://olegon.ru','',$pagetext);
$pagetext = str_replace('https://olegon.ru','',$pagetext);
$pagetext = str_replace('[url]https://storage.olegon.ru','',$pagetext);
$pagetext = str_replace('https://storage.olegon.ru','',$pagetext);
if ((stristr($pagetext,'[url') or stristr($pagetext,'://') or stristr($pagetext,'@') or stristr($pagetext,'[URL') or stristr($pagetext,'www.'))) 
    { 
    $this->error('restrict_by_rules'); 
    $return_value = false; 
    } 
}
'2,3,17' - группы пользователей, которые не имеют право вставлять ссылки
куча replace - для того, чтобы можно было вставлять ссылки на сам форум и Хранилище.
Обратил внимание, что если создавать переменную, как
$pagetext =& $this->fetch_field('pagetext','post');
то в нее передается ссылка на сам текст, которая, если переменную править, в итоге остается в БД, как сообщение. Как бы понятнее объяснить...
Если сделать
$pagetext =& $this->fetch_field('pagetext','post');
$pagetext = '';
то все создаваемые сообщения после срабатывания хука будут пустыми. Можно использовать для редактирования сообщений на лету.
Фразу restrict_by_rules необходимо добавить в раздел "Сообщения об ошибках" (не в общие фразы!)
 
29.12.2011 16:44  
Pyatak
Я вроде не новичёк, однако при попытке отправить сообщение с ссылкой на внешний ресурс выскакивает "нарушение правил форума" и сообщение не оставляется. Я еще "не дорос" или это ошибка?
 
29.12.2011 17:08  
OlegON
Дело не в новичковости, а в том, что ты репутацию растерял, пока молчал... Я добавил спасибами, сейчас бот пройдет - подрастешь...
 
29.12.2011 17:30  
DIMAJBL
Недавно пытался напсать в в ветке Операционные системы про то как убрать надоедающее окошко в открытой сессии RDP не получилось ни просто написать ни ссылку кинуть говорит нарушаю правила форума
 
29.12.2011 17:38  
OlegON
Убери все ссылки из своего сообщения и будет тебе счастье...
 
 
Опции темы



Часовой пояс GMT +3, время: 19:27.

Все в прочитанное - Календарь - RSS - - Карта - Вверх 👫 Яндекс.Метрика
Форум сделан на основе vBulletin®
Copyright ©2000 - 2016, Jelsoft Enterprises Ltd. Перевод: zCarot и OlegON
В случае заимствования информации гипертекстовая индексируемая ссылка на Форум обязательна.