ExBB Community ExBB Community
 Сайт проекта ExBB Общение объединяет!
Войдите на форум при помощиВойти через loginza
 Чат на форуме      Помощь      Поиск      Пользователи     BanList BanList


 Страниц (6): [1] 2 3 4 5 6 »   

> Описание: Модификация существующего
electron
Отправлено: 28 сентября 2010 — 13:06
Post Id



Администратор
ExBB Team


Покинул форум
Сообщений всего: 3917
Дата рег-ции: Февр. 2009  
Репутация: 341




значится так.... собрал всю инструкцию в один файл. выкладываю в этом посте.
автор мода - RomAndry.

прикрепляю архив. в нем:
- инструкция по установке на примере стиля InvisionExBB.
- готовые файлы banmemblist.tpl и banmemblist_data.tpl из п. 11 , 12 инструкции, которые надо залить в папку InvisionExBB . при использовании уже готовых файлов из архива, п. 11 и 12 инструкции не выполнять. если у вас шкурка не InvisionExBB, откройте эти файлы блокнотом и замените в них все "InvisionExBB" на имя вашей шкурки.
- рисунок banmembers.gif , который используется в шапке перед надписью Banlist . его надо залить в папку im , что в папке со шкуркой. т.е. если у вас стиль InvisionExBB, то заливать его надо в папку templates/InvisionExBB/im

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

отредактировано 30.09.2010 : данный пост прикрепляю, чтоб он был всегда вверху темы
 
 
RomAndry
Отправлено: 17 февраля 2010 — 20:35
Post Id


Пользователь
Newbie


Покинул форум
Сообщений всего: 33
Дата рег-ции: Июнь 2009  
Откуда: Ukraine
Репутация: 6




Приветствую.
Вот понадобилось сделать для форума портала PHP.SU нечто более, чем текущий бан.

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

Бан ставится минимум на 1 день. Возможно разбанить и раньше - обычной кнопкой "Разбанить"

Я слышал, что в новой версии будет улучшен этот алгоритм, но сегодня появилось время и решил сделать - может кому еще пригодится.

1. Для начала создаем в папке data папку banned_users и сразу ставим права 777 (rwxrwxrwx). В этой папке будут храниться файлы ИДюзера.php

2. в файле profile.php после строки

CODE:
if ($is_moder && !$to_moder) {


коменируем

CODE:
// $moders_ban= '<a href="..........';


и добавляем код

Спойлер (Отобразить)


3. в файле tools.php после строк

CODE:
case 'members':
memberslist();
break;


добавиляем
CODE:

case 'banmembers':
banmemberslist();
break;


там же перед строкой

CODE:
function memberslist() {


добавляем

CODE:

function banmemberslist() {
global $fm;
$users = $fm->_Read(FM_USERS);

$userskeys = array_keys($users);

$banmembers_data = '';
$time_end = time();
$is_moder = ($fm->user['status'] == 'ad' || $fm->user['status'] == 'sm') ? 1 : 0;
foreach ($userskeys AS $key => $user_id) {
$user = $fm->_GetBanMember($user_id);
if(!$user){continue;}
if($user['end'] < $time_end AND $is_moder==0) {continue;}
$user['user_name'] = ($user['end'] < time() OR $user['days']==0) ? $user['user_name'] : '<font color=\'red\'>'.$user['user_name'].'</font>';
$user['date'] = $fm->_DateFormat($user['date']);
$user['end'] = $user['days']>=999 ? 'никогда' : $fm->_DateFormat($user['end']);
$user['days'] = $user['days']>0 ? ($user['days']>=999 ? '-' : $user['days']) : $fm->LANG['BanUnSeted'];
$user['whounban'] = (isset($user['whounban_id']) AND $user['whounban_id']>0) ? '<a href="profile.php?action=show&member='.$user['whounban_id'].'" title="'.$fm->LANG['UserProfile'].' '.$user['whounban_name'].'">'.$user['whounban_name'].'</a>' : ($user['days']==0 ? 'Auto' : '');
include('./templates/'.DEF_SKIN.'/banmemblist_data.tpl');
unset($user);

}


4. в файле loginout.php после строк

CODE:
$fm->_Fclose($fp_user);
$fm->_WriteLog($fm->LANG['BannedLoged']);


добавляем

CODE:
if($text_ban = $fm->_AutoUnBan($user, TRUE)) {
$fm->_Message($fm->LANG['ErrorLogin'],$fm->LANG['LoginDeniedBan'].'<br />'.$text_ban);
}


5. в файле include/fm.class.php

перед

CODE:
/*
_Locale установка локальных настроек форума для пользователя и гостя
*/
function _Locale() {


добавляем

CODE:

/*
_AutoUnBan разбанивание по окончании времени действия бана
*/
function _AutoUnBan($user, $msg=FALSE){
$usrban = $this->_Read('data/banned_users/'.$user['id'].'.php');
if($usrban['end'] < time()) {
$user_ban = $this->_Read2Write($fp_ban, 'data/banned_users/'.$user['id'].'.php');
$user_ban['whounban_id'] = 0;
$user_ban['whounban_name'] = 'auto';
$user_ban['days'] = 0;
$this->_Write($fp_ban, $user_ban);

$user_unban = $this->_Read2Write($fp_user_unban, 'members/'.$user['id'].'.php');
$user_unban['status'] = 'me';
$this->_Write($fp_user_unban, $user_unban);
$this->_Mail($this->exbb['boardname'],$this->exbb['adminemail'],$this->exbb['adminemail'], 'AutoUnBanned User (PHP.SU)', 'AutoUnBan '.$user['name']);
$this->_WriteLog(sprintf('AutoUnBan', 'Auto', '<b>'.$user['name'].'</b>'), 2); // Запись в лог
return false;
}
if($msg) {
return '<br />Причина: '.$usrban['reason'].'<br /> Дней: '.$usrban['days'].'<br /> Дата окончания: '.$this->_DateFormat($usrban['end']);
}
return true;
}


после

CODE:
if ($this->user['id'] == 0) {
$this->user['name'] = $this->LANG['Guest'];
}elseif ($this->user['status'] == 'banned') {


добавляем

CODE:

if($text_ban =$this->_AutoUnBan($this->user,TRUE)) {
$this->_Message($this->LANG['MainMsg'],$this->LANG['LoginDeniedBan'].$text_ban,'',1);
}


7. в файле language/russian/lang_front_all.php перед строкой

CODE:
?>


добаляем

CODE:

$this->LANG['BanUnSeted'] = 'Разбанен';
$this->LANG['BanReason'] = 'Причина';
$this->LANG['BanDays'] = 'Дней';
$this->LANG['BanDate'] = 'Дата бана';
$this->LANG['BanDateEnd'] = 'Дата окончания';
$this->LANG['BanUser'] = 'Пользователь';
$this->LANG['BanWho'] = 'Кто забанил';
$this->LANG['BanWhoUnban'] = 'Кто разбанил';


8. в файле language/russian/lang_front_register.php перед строкой

CODE:
?>


добавляем

CODE:

$this->LANG['Punad'] = 'Администратор';
$this->LANG['Punsm'] = 'Супермодератор';
/*
Ban/UnBan
*/
$this->LANG['BanReason'] = 'Причина';
$this->LANG['BanDays'] = 'Дней';
$this->LANG['BanDate'] = 'Дата';
$this->LANG['BanDateEnd'] = 'Дата окончания';
$this->LANG['BanSet'] = 'Забанить';
$this->LANG['BanUnSet'] = 'Разбанить';
$this->LANG['BanErrorReason'] = 'Укажите причину бана';
$this->LANG['BanErrorDays'] = 'Укажите количество дней бана (целое число от 1)';


9. в файле templates/InvisionBB/logos.tpl

за строкой

CODE:
<a href="tools.php?action=members" title="{$fm->LANG['Users']}"><img src="./templates/InvisionExBB/im/members.gif" border="0" alt="{$fm->LANG['Users']}" />&nbsp;<b>{$fm->LANG['Users']}</b></a>


добавляем

CODE:

<a href="tools.php?action=banmembers" title="{$fm->LANG['BanUsers']}"><img src="./templates/InvisionExBB/im/banmembers.gif" border="0" alt="{$fm->LANG['BanUsers']}" />&nbsp;<b>{$fm->LANG['BanUsers']}</b></a>


10. создаем файл templates/InvisionBB/banmemblist.tpl с таким содержанием :
CODE:

<?php
echo <<<MEMBERS
<br/>
<div id="navstrip" align="left">
<img src="./templates/InvisionExBB/im/nav.gif" border="0" alt="&gt;" />&nbsp;<a href="index.php">{$fm->exbb['boardname']}</a>&nbsp;&raquo;&nbsp;<a href="tools.php?action=banmembers">{$fm->LANG['BanMemberlist']}</a>
</div>
<table width="100%" cellpadding="0" cellspacing="1" class="tableborder">
<tr>
<td class="maintitle" colspan="8"><img src="./templates/InvisionExBB/im/nav_m.gif" border="0" alt="&gt;" width="8" height="8" />&nbsp;{$fm->LANG['BanMemberlist']}</td>
</tr>
<tr class="postlinksbar" align="center">
<td width="15%" height="29">{$fm->LANG['BanUser']}</td>
<td width="33%">{$fm->LANG['BanReason']}</td>
<td width="15%">{$fm->LANG['BanDate']}</td>
<td width="2%">{$fm->LANG['BanDays']}</td>
<td width="15%">{$fm->LANG['BanDateEnd']}</td>
<td width="15%">{$fm->LANG['BanWho']}</td>
<td width="15%">{$fm->LANG['BanWhoUnban']}</td>
</tr>
{$banmembers_data}
<tr>
<td class="activeuserstrip" align="center" colspan="8">&nbsp;</td>
</tr>
</table>
MEMBERS;
?>


11. создаем файл templates/InvisionBB/banmemblist_data.tpl с таким содержанием :

CODE:

<?php
$banmembers_data .= <<<DATA
<tr align="center">
<td class="row2"><b><a href="profile.php?action=show&member={$user_id}" title="{$fm->LANG['UserProfile']} {$user['user_name']}">{$user['user_name']}</a></b</td>
<td class="row2">{$user['reason']}</td>
<td class="row2">{$user['date']}</td>
<td class="row2">{$user['days']}</td>
<td class="row2">{$user['end']}</td>
<td class="row2"><b><a href="profile.php?action=show&member={$user['who_id']}" title="{$fm->LANG['UserProfile']} {$user['who_name']}">{$user['who_name']}</a></b</td>
<td class="row2">{$user['whounban']}</td>
</tr>
DATA;
?>


пара моментов которые зацепил походу:

1. в файле modules/punish/profile.php
строку
CODE:
$whoadd = $fm->LANG['Pun'.$status].$moder;


заменить на

CODE:
$whoadd = (isset($fm->LANG['Pun'.$status]) ? $fm->LANG['Pun'.$status].' - ' : '').$moder;


2. в файле language/russian/lang_front_all.php
(необходимо так как забаненному выскакивает предупреждение из шаблона админки) добавляем

CODE:
$this->LANG['Administrating'] = 'Администрирование ExBB FM';


Конечно, много нюансов и вопросов остается, но сделал за несколько часов, и в будущем буду модифицировать и выкладывать
Как это выглядит:
1. В профиле юзера модераторы видят форму с полями для бана
2. http://forum.php.su/tools.php?action=banmembers
Модераторы так же видят кого разбанили.

Возможно лучшее решение это удалять разбаненого пользователя из папки data/banned_users/.


Отредактировано администратором: Александр Михалицын, 21 февраля 2010 — 12:47
 
 
electron
Отправлено: 20 февраля 2010 — 18:49
Post Id



Администратор
ExBB Team


Покинул форум
Сообщений всего: 3917
Дата рег-ции: Февр. 2009  
Репутация: 341




RomAndry , конечно задумка офигенная, но на вашем форуме на страничке бан-листа ошибка
Цитата:
Notice: Undefined index: whounban_id in /home/admin/public_html/forum/tools.php on line 245
 
 
Александр Михалицын
Отправлено: 21 февраля 2010 — 12:45
Post Id


Администратор
Super Member


Покинул форум
Сообщений всего: 723
Дата рег-ции: Февр. 2009  
Репутация: 42




RomAndry,
увеличил максимальный размер сообщения в 2 раза. Улыбка

Отредактировал ваш пост тут (добавил первый пост из второй темы).
Вторую тему удалил.
 
 
electron
Отправлено: 21 февраля 2010 — 14:26
Post Id



Администратор
ExBB Team


Покинул форум
Сообщений всего: 3917
Дата рег-ции: Февр. 2009  
Репутация: 341




и я тоже подредактировал - добавил тэги [code] где это надо, для более правильного отображения Улыбка
 
 
RomAndry
Отправлено: 21 февраля 2010 — 17:19
Post Id


Пользователь
Newbie


Покинул форум
Сообщений всего: 33
Дата рег-ции: Июнь 2009  
Откуда: Ukraine
Репутация: 6




Да, спасибо, что поправили - я больше думал что бы ничего не забыть
по поводу ошибки я испрваил ее и отредактировал топик.
Было:
CODE:

$user['whounban'] = $user['whounban_id']>0 ? '<a href="profile.php?action=show&member='.$user['whounban_id'].'" title="'.$fm->LANG['UserProfile'].' '.$user['whounban_name'].'">'.$user['whounban_name'].'</a>' : 'Auto';


сейчас:
CODE:
$user['whounban'] = (isset($user['whounban_id']) AND $user['whounban_id']>0) ? '<a href="profile.php?action=show&member='.$user['whounban_id'].'" title="'.$fm->LANG['UserProfile'].' '.$user['whounban_name'].'">'.$user['whounban_name'].'</a>' : ($user['days']==0 ? 'Auto' : '');

(Отредактировано автором: 21 февраля 2010 — 17:24)

 
 
electron
Отправлено: 21 февраля 2010 — 17:36
Post Id



Администратор
ExBB Team


Покинул форум
Сообщений всего: 3917
Дата рег-ции: Февр. 2009  
Репутация: 341




RomAndry пишет:
я больше думал что бы ничего не забыть

все-таки забыл кое-что Улыбка
в файл language/russian/lang_front_all.php просто необходимо добавить строку
CODE:
$this->LANG['BanUsers'] = "Банлист";


и еще. назрел вопрос. если при установке данного мода правится файл logos.tpl - почему на вашем сайте ссылка на бан-лист видна только на страничке http://forum.php.su/tools.php?action=banmembers , а не на всех страницах форума?
 
 
RomAndry
Отправлено: 21 февраля 2010 — 18:09
Post Id


Пользователь
Newbie


Покинул форум
Сообщений всего: 33
Дата рег-ции: Июнь 2009  
Откуда: Ukraine
Репутация: 6




electron пишет:
и еще. назрел вопрос. если при установке данного мода правится файл logos.tpl - почему на вашем сайте ссылка на бан-лист видна только на страничке http://forum.php.su/tools.php?action=banmembers , а не на всех страницах форума?

Я пока думаю и ищу варианты как лучше...
Не увидел смысла показывать банлист везде
Как его лучше- не знаю, надеюсь и с Вашей помощью поравить неточности

logos.tpl
сразу после <?php
вставляем
CODE:

$banlist = '';
if(isset($fm->input['action']) AND ($fm->input['action']=='members' OR $fm->input['action']=='banmembers')){
$banlist = <<<BANLIST
<a href="tools.php?action=banmembers" title="{$fm->LANG['BanUsers']}"><img src="./templates/InvisionExBB/im/banmembers.gif" border="0" alt="{$fm->LANG['BanUsers']}" />&nbsp;<b>{$fm->LANG['BanUsers']}</b></a>
BANLIST;
}


и меняем
CODE:
<a href="tools.php?action=banmembers" title="{$fm->LANG['BanUsers']}"><img src="./templates/InvisionExBB/im/banmembers.gif" border="0" alt="{$fm->LANG['BanUsers']}" />&nbsp;<b>{$fm->LANG['BanUsers']}</b></a>

на
CODE:
{$banlist}
 
 
electron
Отправлено: 21 февраля 2010 — 18:12
Post Id



Администратор
ExBB Team


Покинул форум
Сообщений всего: 3917
Дата рег-ции: Февр. 2009  
Репутация: 341




RomAndry пишет:
Не увидел смысла показывать банлист везде

ну почему же? как раз данную информацию надо светить везде, чтоб забаненным позорно было. имхо.

поставил мод себе - белый экран при входе на страницу банлиста. странно...
 
 
RomAndry
Отправлено: 21 февраля 2010 — 19:12
Post Id


Пользователь
Newbie


Покинул форум
Сообщений всего: 33
Дата рег-ции: Июнь 2009  
Откуда: Ukraine
Репутация: 6




там в коде обрезалась функция в файле tools.php, а отредактировать не могу из-за тех же 10кб ограничения. в этом файле перед строкой
CODE:
function memberslist() {

надо добавлять такой код:
CODE:
function banmemberslist() {
global $fm;
$users = $fm->_Read(FM_USERS);

$userskeys = array_keys($users);

$banmembers_data = '';
$time_end = time();
$is_moder = ($fm->user['status'] == 'ad' || $fm->user['status'] == 'sm') ? 1 : 0;
foreach ($userskeys AS $key => $user_id) {
$user = $fm->_GetBanMember($user_id);
if(!$user){continue;}
if($user['end'] < $time_end AND $is_moder==0) {continue;}
$user['user_name'] = ($user['end'] < time() OR $user['days']==0) ? $user['user_name'] : '<font color=\'red\'>'.$user['user_name'].'</font>';
$user['date'] = $fm->_DateFormat($user['date']);
$user['end'] = $user['days']>=999 ? 'никогда' : $fm->_DateFormat($user['end']);
$user['days'] = $user['days']>0 ? ($user['days']>=999 ? '-' : $user['days']) : $fm->LANG['BanUnSeted'];
$user['whounban'] = (isset($user['whounban_id']) AND $user['whounban_id']>0) ? '<a href="profile.php?action=show&member='.$user['whounban_id'].'" title="'.$fm->LANG['UserProfile'].' '.$user['whounban_name'].'">'.$user['whounban_name'].'</a>' : ($user['days']==0 ? 'Auto' : '');
// $user['who_name'] = (isset($fm->LANG['Pun'.$status]) ? $fm->LANG['Pun'.$status].' - ' : '').$user['who_name'];
include('./templates/'.DEF_SKIN.'/banmemblist_data.tpl');
unset($user);

}

$fm->_Title = ' :: '.$fm->LANG['BanMemberlist'];
include('./templates/'.DEF_SKIN.'/all_header.tpl');
include('./templates/'.DEF_SKIN.'/logos.tpl');
include('./templates/'.DEF_SKIN.'/banmemblist.tpl');
include('./templates/'.DEF_SKIN.'/footer.tpl');

}


в файле include/fm.class.php
после
CODE:

function _Getmember($uid) {
if ($this->_Checkuser($uid)) {
$userfile = 'members/'.$uid.'.php';
return $this->_Read($userfile,FALSE);
}
return FALSE;
}




добавляем функцию:

CODE:

/*
_GetBanMember возвращает инфо о забаненом пользователе с ID переданным в аргументе
*/
function _GetBanMember($uid) {
if ($this->_Checkuser($uid)) {
$userfile = 'data/banned_users/'.$uid.'.php';
return $this->_Read($userfile,FALSE);
}
return FALSE;
}



в language/russian/lang_front_tools.php добавить

CODE:
$this->LANG['BanMemberlist'] = 'Ban List';


в language/russian/lang_front_all.php добавить

CODE:
$this->LANG['BanUsers'] = 'BanList';


Отредактировано модератором: electron, 21 февраля 2010 — 21:51
собрал все дополнения к моду в этом посте
 
 
lisiycat
Отправлено: 21 февраля 2010 — 19:24
Post Id



Пользователь
ExBB Team
ExBB Ukrainian Translator


Покинул форум
Сообщений всего: 560
Дата рег-ции: Февр. 2009  
Откуда: Чернигов
Репутация: 56




Просьба к модераторам, пожалуйста слепите инструкцию по установке мода в одно сообщение...
Хочу себе поставить попробовать, так глаза разбегаются Не понял - сейчас очень неудобно выглядит
 
 
electron
Отправлено: 21 февраля 2010 — 19:34
Post Id



Администратор
ExBB Team


Покинул форум
Сообщений всего: 3917
Дата рег-ции: Февр. 2009  
Репутация: 341




вот теперь всё работает. спасибо

lisiycat пишет:
Просьба к модераторам, пожалуйста слепите инструкцию по установке мода в одно сообщение...
Хочу себе поставить попробовать, так глаза разбегаются - сейчас очень неудобно выглядит

собрал дополнения в один пост. в основную инструкцию добавить не могу - снова действует ограничение в 10 кБ
 
 
RomAndry
Отправлено: 21 февраля 2010 — 19:38
Post Id


Пользователь
Newbie


Покинул форум
Сообщений всего: 33
Дата рег-ции: Июнь 2009  
Откуда: Ukraine
Репутация: 6




и Вам спасибо, что помогли найти пропущенные моменты
 
 
HARUSAME
Отправлено: 23 февраля 2010 — 20:48
Post Id



Пользователь
Newbie


Покинул форум
Сообщений всего: 22
Дата рег-ции: Нояб. 2009  
Репутация: 1




Былоб неплохо... сделать в одном сообщении работающий мод ))
 
 
lisiycat
Отправлено: 23 февраля 2010 — 21:02
Post Id



Пользователь
ExBB Team
ExBB Ukrainian Translator


Покинул форум
Сообщений всего: 560
Дата рег-ции: Февр. 2009  
Откуда: Чернигов
Репутация: 56




HARUSAME пишет:
Былоб неплохо... сделать в одном сообщении работающий мод ))


Да, просьба к автору мода - приведите пожалуйста в читаемый вид установку мода, например как тут. Если не трудно, конечно
 
 
Страниц (6): [1] 2 3 4 5 6 »
Сейчас эту тему просматривают: 1 (гостей: 1, зарегистрированных: 0)
« Модификации и дополнения »

> Похожие темы: Мод: Бан лист
Темы Форум Информация о теме Обновление
Модификация алгоритма расчёта "популярности" темы
Теперь тема "тухнет"
Обсуждение Ответов: 5
Автор темы: CAB
16 февраля 2014 — 18:38
Автор: CAB
Модификация движка ExBB
О жизни Ответов: 1
Автор темы: sqrt
11 мая 2024 — 11:19
Автор: sqrt
Модификация мода портала от пользователя igrok54
Модификации и дополнения Ответов: 3
Автор темы: electron
24 мая 2014 — 12:45
Автор: Parapsixolog
Мод : Бан - лист (новая версия)
доработанный мод с функцией вечного бана
Модификации и дополнения Ответов: 11
Автор темы: electron
13 апреля 2014 — 10:27
Автор: Parapsixolog
Мод: Смена автора существующего сообщения
Иногда требуется после восстановления удалённого пользователя
Модификации и дополнения Ответов: 33
Автор темы: Леголегс
20 марта 2018 — 04:32
Автор: Liliat
 



Все гости форума могут просматривать этот раздел.
Только администраторы и модераторы могут создавать новые темы в этом разделе.
Только администраторы и модераторы могут отвечать на сообщения в этом разделе.
 




Яндекс.Метрика   

Powered by ExBB
ExBB FM 1.0 RC1 by TvoyWeb.ru
InvisionExBB Style converted by Markus®

[Script Execution time: 0.0719]     [ ]