Форум OlegON > Ресурсы OlegON > Вопросы сервера

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

19.04.2024 7:50


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, время: 07:50.

Форум на базе vBulletin®
Copyright © Jelsoft Enterprises Ltd.
В случае заимствования информации гипертекстовая индексируемая ссылка на Форум обязательна.