Перейти к контенту

Убрать возможность некоторым группам постить линки


Рекомендуемые сообщения

На форум часто приходят жадные дети и постят сообщения типа "Я 19-летняя проститутка, ищу кому отдаться на сайте ХХХ.нафиг.ру". Вместо того, чтобы перекрывать кислород ВСЕМ гостям хотелось бы иметь возможность раздавать возможность вставлять линки в посты таким же образом, как это сделано для Uploads... Например разрешить постить линки всем, у кого меньше 20 постов. Или запретить постить линки группам Guests, Validating, Newbies, а всем что выше - разрешить.

 

Очень надеюсь на помощь гуру этого сайта.

Ссылка на комментарий
Поделиться на других сайтах

Файл post_parser.php

Найди

 function regex_build_url($url=array()) {

и замени на

function regex_build_url($url=array()) {
global $ibforums;

if ( !$ibforums->member['id'] or $ibforums->member['posts'] < 20 ) return "";

Ссылка на комментарий
Поделиться на других сайтах

Чуток переделал : )

 

function regex_build_url($url=array()) {
global $ibforums;
 
if ( !$ibforums->member['id'] or $ibforums->member['posts'] < $ibforums->member['numposts_link']  ) return "* Link removed *";

 

Потом в админке создал новый параметр в разделе Topics, Posts and Polls:

 

Setting title? Необходимое число постов для размещения линка

Setting Type? Text Input

Setting Key? numposts_link

Setting Current Value? 20

Setting Default Value? 20

 

Сохранить изменения. Вуаля...

 

Song, респект! :D

Ссылка на комментарий
Поделиться на других сайтах

catbegemot.net

вообще принято в массив $ibforums->member запихивать свойства юзера.

А если у тебя константа, причём одна на всю доску, то обычно для этого используют файл conf_global.php + $ibforums->vars

Ссылка на комментарий
Поделиться на других сайтах

Song, Dekker

 

я ж не разработчик модов. Так, юзер обыкновенный, одна штука :D Просто в админке легче параметр менять, чем в конфиг файле.

 

Song

 

видишь ли, есть у меня надежда, что спамеры заколебали не только меня и что когда-нибудь я увижу мод, который позволяет разрешать/запрещать постить линки точно так же, как с аттачментами - для разных групп юзеров и разных форумов. Например в форуме где идет разговор о том, что музыка Битлз добрее и гуманнее, чем хэви метал линки постить смогут только Advanced Users, а в форуме Шутки - все, кроме гостей... "В таком вот акцепте" (С) ;)

Ссылка на комментарий
Поделиться на других сайтах

:D;)

 

ты не представляешь какую фигню ты сказал sorry )

 

$ibforums->member - это массив, расположенный в оперативной памяти машины и который действует в пределах одного клика на любую ссылку в Форуме.

Сохраняться может только

1) в файл

2) в базу

3) в куки

Ссылка на комментарий
Поделиться на других сайтах

  • 1 год спустя...
  • 4 недели спустя...
Файл post_parser.php

Найди

 function regex_build_url($url=array()) {

и замени на

function regex_build_url($url=array()) {
global $ibforums;

if ( !$ibforums->member['id'] or $ibforums->member['posts'] < 20 ) return "";

 

Вопрошаю как этот код (для 2.0) будет выглядеть для 2.1.

Ссылка на комментарий
Поделиться на других сайтах

А где мне этот файл для редактирования найти? Форум версии 2.1.6

Этот файл лежит здесь: /sources/lib/

Попытался внести эти изменения (2.1.7), но при тестировании ссылку запостить все же можно.

На 2.1.* кто-нибудь ставил этот фильтр?

Ссылка на комментарий
Поделиться на других сайтах

Вместо $ibforums писать $ipsclass

 

Так нужно?

function regex_build_url($url=array()) {
global $ipsclass;

if ( !$ipsclass->member['id'] or $ipsclass->member['posts'] < 20 ) return "";

 

Прописал таким образом, но ссылки пропускает.

Ссылка на комментарий
Поделиться на других сайтах

Проверенно на 2.1.7:

 

Пользователи, у которых кол-во постов меньше, чем указанно в Админке, не смогут постить URL-ссылки.
(C)AVol + все интересное из этой темы :)

================================================================================
================================================================================
Добавляем новую настройку в админку:
ACP ->  НАСТРОЙКИ -> Добавить новый параметр
================================================================================
* Название настройки: Постов для размещения URL
* Расположение настройки: 111
* Описание настройки: Необходимое число постов для размещения ссылки.
* Группа настройки: Темы, Сообщения и Опросы
* Тип настройки: Ввод текста (одна строка)
* Ключ настройки: num_posts_for_url
* Текущее значение настройки: 
* Значение настройки по умолчанию: 5
* Дополнительно: 
* Выполнение PHP-кода до отображения или сохранения настройки:
if($save == 1)
{
 $_POST['num_posts_for_url'] = intval($_POST['num_posts_for_url']);
 if($_POST['num_posts_for_url'] < 0)
 {
		 $_POST['num_posts_for_url'] = 0;
 }
}
* Начать группу настроек: Антиспам с сообщениях
* Закончить группу настроек: Нет
* Ключ помощи (опционально): 
* Добавить эту настройку в кеш настроек: Да
================================================================================
================================================================================
В файле:
./sources/classes/bbcode/class_bbcode_core.php
================================================================================
Найти функцию: function regex_build_url($url=array())
================================================================================
Найти:
================================================================================
	return $url['st'] . "<a href=\"".$url['html']."\" target=\"_blank\">".$show."</a>" . $url['end'];
================================================================================
ВЫШЕ добавить:
================================================================================
	//Antispam
	if ( (!stristr($url['html'], $this->ipsclass->base_url)) and (!$this->ipsclass->member['g_is_supmod']) )
	{
		if ( (!$this->ipsclass->member['id']) or ($this->ipsclass->member['posts'] < $this->ipsclass->vars['num_posts_for_url']) )
		{
			return $url['st'] . "*" . preg_replace( "#^(http|ftp|https|news)://(\S+)$#i", "\\2", $url['show'] ) . "*" . $url['end'];
		}
	}
================================================================================
================================================================================

Ссылка на комментарий
Поделиться на других сайтах

а на 2.1.4 будет работать?
Проверь - потом расскажешь :D

 

Да кстати - забыл написать - тута еще идет проверка, чтобы ссылки внутри данного ресурса всегда добавлялись. Ну а также этот фильтр не распространяется на супермодераторов и администраторов.

Url у меня не удаляется полностью, а лиш немного "подрезается" и добавляется как обычный текст.

Ссылка на комментарий
Поделиться на других сайтах

Url у меня не удаляется полностью, а лиш немного "подрезается" и добавляется как обычный текст.

А можно сделать так, чтобы сообщение вообще не создавалось, если пытаются вставить ссылку?

 

Простое исправление ссылки спам не остановит.

А вот если бы тех, кто пытается разместить ссылку (имея меньше Х сообщений на форуме) заворачивало на главную страницу (или на страницу правил форума), а сообщение не публиковалось. Тогда можно было бы существенно сокртить количество спама.

Ссылка на комментарий
Поделиться на других сайтах

Спам это не остановит, но, ИМХО, без ссылок он уже не опасен. Просто потом левые посты подтираются модератором.

 

Но вообще можно и так сделать. Может посмотрю как-нибуть, когда не лень будет... :D

Ссылка на комментарий
Поделиться на других сайтах

AVol, большое спасибо, работает отлично, версия 2.1.7

 

сорри за оффтоп, но что написать в

if ( (!stristr($url['html'], $this->ipsclass->base_url))

чтобы разрешались линки не тлько с mydomain.com/forums/ но и с mydomain.com и mydomain.ru?

Ссылка на комментарий
Поделиться на других сайтах

AVol, большое тебе спасибо! Всё работает отлично, но вот таких ников вроде "fjdhdjkfhdff" и тем "gfghdfkghdfgdf" не стало меьше, может можно чё-нибудь сделать, чтобы запретить регить такие ники и создавать такие темы?
Ссылка на комментарий
Поделиться на других сайтах

AVol, большое спасибо, работает отлично, версия 2.1.7

 

сорри за оффтоп, но что написать в

if ( (!stristr($url['html'], $this->ipsclass->base_url))

чтобы разрешались линки не тлько с mydomain.com/forums/ но и с mydomain.com и mydomain.ru?

Ну можно прямо так и написать:

if ( (!stristr($url['html'], "mydomain.com") and (!stristr($url['html'], "mydomain.ru") )

 

AVol, большое тебе спасибо! Всё работает отлично, но вот таких ников вроде "fjdhdjkfhdff" и тем "gfghdfkghdfgdf" не стало меьше, может можно чё-нибудь сделать, чтобы запретить регить такие ники и создавать такие темы?

Ну это уже немного другое. Может это дело и можно парсить, только какой должен быть алгоритм, определяющий критерий осмысленности в имени или названии темы?

Всетаки, самое верное здесь - это живой модератор.

Ссылка на комментарий
Поделиться на других сайтах

Присоединиться к обсуждению

Вы можете ответить сейчас, а зарегистрироваться позже. Если у вас уже есть аккаунт, войдите, чтобы ответить от своего имени.

Гость
Ответить в этой теме...

×   Вы вставили отформатированный текст.   Удалить форматирование

  Допустимо не более 75 смайлов.

×   Ваша ссылка была автоматически заменена на медиа-контент.   Отображать как ссылку

×   Ваши публикации восстановлены.   Очистить редактор

×   Вы не можете вставить изображения напрямую. Загрузите или вставьте изображения по ссылке.

Зарузка...
×
×
  • Создать...

Важная информация

Находясь на нашем сайте, вы соглашаетесь на использование файлов cookie, а также с нашим положением о конфиденциальности Политика конфиденциальности и пользовательским соглашением Условия использования.