Участник

Зарегистрирован: Mar 2004
Место проживания: Gbnth
Публикаций: 13
Статус:  |
Ну вот сам и решил все свои проблемы 
Конечно может немного коряво, но уж , как смог.
Есть подозрение, что это все можно сделать с помощью регулярных выражений, но у меня не получилось. Если кто сделает буду очень признателен.
И так, что требовалось
- Запретить вставку в сообщения ссылок, для определенной группы пользователей
- Возможность разрешить вставку линков пользователям этой группы при наборе определенного кол-ва постов
- Позволить вставлять ссылки на картинки, расположенные в интернет
Ð_еализация:
Заходим в админку - в менеджер фраз выбираем тип фраз "Front-End Error Messages", здесь создаем новую переменную фразы и пишем текстдля показа юзеру при срабатывании запрещения на линки
Я переменную назвал "url_insert" , дальше используется именно она
За тем в файле include/functions_newpost.php
ищем функцию "verify_post_errors"
сразу после строк
PHP:
if ($bbuserinfo['userid'] == 0)
{
$post['username'] = preg_replace('#( ){2,}#', ' ', $post['username']);
if (empty($post['username']))
{
eval('$errors[] = "' . fetch_phrase('nousername', PHRASETYPEID_ERROR) . '";');
}
else if (vbstrlen($post['username']) < $vboptions['minuserlength'])
{
eval('$errors[] = "' . fetch_phrase('usernametooshort', PHRASETYPEID_ERROR) . '";');
}
else if (vbstrlen($post['username']) > $vboptions['maxuserlength'])
{
eval('$errors[] = "' . fetch_phrase('usernametoolong', PHRASETYPEID_ERROR) . '";');
}
else if ($post['username'] != fetch_censored_text($post['username']) OR $checkuser = $DB_site->query_first("SELECT username FROM " . TABLE_PREFIX . "user WHERE username = '" . addslashes(htmlspecialchars_uni($post['username']) ) . "'"))
{
$username = &$post['username'];
eval('$errors[] = "' . fetch_phrase('usernametaken', PHRASETYPEID_ERROR) . '";');
}
else if (!empty($vboptions['illegalusernames']))
{
$usernames = preg_split('/( )+/', trim(strtolower($vboptions['illegalusernames'])), -1, PREG_SPLIT_NO_EMPTY);
$tempusername = strtolower($post['username']);
foreach ($usernames AS $val)
{
if (strpos($tempusername, $val) !== false)
{
$username = &$val;
eval('$errors[] = "' . fetch_phrase('usernametaken', PHRASETYPEID_ERROR) . '";');
break;
}
}
}
}
Вставляем
PHP:
//////////////// -------Проверка на вставку ссылок
if($bbuserinfo['usergroupid']==78 and $bbuserinfo['posts']<350)
{
$img=0;
$url=0;
$img_ex=0;
$img=substr_count($post['message'],'[img]http');
$img=$img+substr_count($post['message'],'[img]www' );
$img=$img+substr_count($post['message'],'www');
$img_ex=substr_count($post['message'],'.jpg');
$img_ex=$img_ex+substr_count($post['message'],'.JPG');
$img_ex=$img_ex+substr_count($post['message'],'.jpeg');
$img_ex=$img_ex+substr_count($post['message'],'.JPEG');
$img_ex=$img_ex+substr_count($post['message'],'.gif');
$img_ex=$img_ex+substr_count($post['message'],'.GIF');
$img_ex=$img_ex+substr_count($post['message'],'.png');
$img_ex=$img_ex+substr_count($post['message'],'.PNG');
$img_ex=$img_ex+substr_count($post['message'],'.bmp');
$img_ex=$img_ex+substr_count($post['message'],'.BMP');
$url=substr_count($post['message'],'http');
$url=$url+substr_count($post['message'],'www');
$url=$url+substr_count($post['message'],'ftp');
$url=$url+substr_count($post['message'],'https');
if ($img<>$url or $img<>$img_ex)
{
eval('$errors[] = "' . fetch_phrase('url_insert', PHRASETYPEID_ERROR) . '";');
}
}
///\\\\\\---------Конец проверки
Обратите внимание!
quote: $img=$img+substr_count($post['message'],'[i
mg]www');
Пишется в одну строчку!!
Где $bbuserinfo['usergroupid'] , на которую распространяется ограничение, прижелании сюда можно вписать несколко групп через "and".
А $bbuserinfo['posts'] - количесто постов юзера если оно меньше определенной цифры - ограничение срадатывает для этой группы
Вообще логику этого "if" можно менять, как угодно!
Ну вот и все. Удачи!!!
Если обнаружатся ошибки - пишите!!
Сообщение было отредактировано mkonk 04-03-2005 в 11:46
Сообщить модератору об этом сообщении | Предупреждение | IP: определен
|