Страниц (3): [1] 2 3 »
Найдено сообщений: 33 |
RomAndry |
Отправлено: 7 марта 2013 — 18:42 • Тема: Проекту требуется веб-программист • Форум: Новости |
Ответов: 19 Просмотров: 0
|
BON пишет:RomAndry, особых каких то требований нет. Главное ваше желание и время. А вообще самое главное требование не обещать много, как было тут раньше
Да я не обещал-то. Просто немного правлю свой форум, некоторые вещи выкладывал в паблик, в т.ч. мод БАН.
Поэтому, думаю так и продолжать - делать себе, делиться с сообществом, помогать.
Ну и критические баги первоочередно делать. |
RomAndry |
Отправлено: 5 марта 2013 — 20:08 • Тема: Проекту требуется веб-программист • Форум: Новости |
Ответов: 19 Просмотров: 0
|
Какие требования?
Я знаю хорошо движек, много "допиливал" под свои нужды.
Могу делиться опытом, фиксить баги, потихоньку делать моды.
Времени не много, но уделял бы, помогая развитию ExBB. |
RomAndry |
Отправлено: 17 марта 2010 — 11:26 • Тема: ExBB FM 1.0 RC1 • Форум: Релизы |
Ответов: 203 Просмотров: 0
|
templates/Ваш Скин/profile.tpl
находим
CODE:
<td class="profilright"><input type="text" style="width: 50px" name="topics2page" maxlength="3" value="{$fm->user['posts2page']}"></td>
меняем на
CODE:
<td class="profilright"><input type="text" style="width: 50px" name="topics2page" maxlength="3" value="{$fm->user['topics2page']}"></td>
далее находим
CODE:
<td class="profilright"><input type="text" style="width: 50px" name="posts2page" maxlength="3" value="{$fm->user['topics2page']}"></td>
меняем на
CODE:
<td class="profilright"><input type="text" style="width: 50px" name="posts2page" maxlength="3" value="{$fm->user['posts2page']}"></td>
|
RomAndry |
Отправлено: 17 марта 2010 — 00:15 • Тема: Решение проблемы перемещения последнего топика юзера • Форум: Решение проблем |
Ответов: 2 Просмотров: 0
|
Приветствую.
Вот заметил не приятную особенность:
когда перемещаешь последний топик юзера, в его профиле остаются старые данные
исправил так:
файл posting.php
ищем строки
CODE:
// Обновим статистику постов у пользователей
$thread = $fm->_Read($newtopicfile);
foreach ($thread as $id => $post)
if (!isset($autors[$post['p_id']])) $autors[$post['p_id']] = 1;
else $autors[$post['p_id']]++;
UpdateAutorsInfo($autors);
и меняем на
CODE: // Обновим статистику постов у пользователей
$thread = $fm->_Read($newtopicfile);
foreach ($thread as $id => $post)
if (!isset($autors[$post['p_id']])) $autors[$post['p_id']] = 1;
else $autors[$post['p_id']]++;
UpdateAutorsInfo($autors,$newtopic_id,$topic_id);
ищем
CODE:function UpdateAutorsInfo(&$autors) {
меняем на
CODE:function UpdateAutorsInfo(&$autors, $newtopic_id=false,$topic_id=false) {
чуть ниже ищемCODE:
if (file_exists('members/'.$user_id.'.php')) {
$user = $fm->_Read2Write($fp_user, 'members/'.$user_id.'.php');
и добавляем
CODE:
// если у юзера это последний пост, то меняем в его профиле
$link = explode("=", $user['lastpost']['link']);
if(intval($link[1])==$forum_id && intval($link[2]==$topic_id)) {
$user['lastpost']['link'] = 'topic.php?forum='.$toforum_id.'&topic='.$newtopic_id;
}
Я реализовал через параметры функции, возможно было и через GLOBAL, но я не сторонник такого. |
RomAndry |
Отправлено: 13 марта 2010 — 21:15 • Тема: Вирус в скрипте all_header.tpl • Форум: Решение проблем |
Ответов: 3 Просмотров: 0
|
Не приятная ситуация, по всей видимости это NOD32 ругается.
ИМХО бы послать им письмо оффициальное, от разработчиков, с приложением кода, что бы они сделав анализ исключили из базы. |
RomAndry |
Отправлено: 27 февраля 2010 — 08:03 • Тема: Дополнение: Отправка сообщений по Ctrl + Enter • Форум: Модификации и дополнения |
Ответов: 10 Просмотров: 0
|
1. Саму функцию копируем в конец файла /javascript/formcode.js
2. В шаблонах post_edit.tpl, post_reply.tpl и post_addnew.tpl
ищем строки <form name="...."{$enctype}>
вставляем после {$enctype}
CODE: onkeypress="ctrlEnter(event, this);"
3. В шаблоне post_form.tpl ищем строку <form name="....(this)">
вставляем после this)"
CODE: onkeypress="ctrlEnter(event, this);" |
RomAndry |
Отправлено: 24 февраля 2010 — 19:32 • Тема: Мод: Бан лист • Форум: Модификации и дополнения |
Ответов: 84 Просмотров: 0
|
HARUSAME
скорей всего вам необходимо добавить изменения, дописанные мной ниже.
Такая проблема
Цитата:Parse error: syntax error, unexpected '}' in /home/kachn619/domains/sharalincs.ru/public_html/profile.php on line 188
оказалась у electron и мы вместе нашли где и что, о чем я сообщил в топике. в данном случае не до конца дописана функция banmemberlist() |
RomAndry |
Отправлено: 21 февраля 2010 — 19:12 • Тема: Мод: Бан лист • Форум: Модификации и дополнения |
Ответов: 84 Просмотров: 0
|
там в коде обрезалась функция в файле 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'; |
RomAndry |
Отправлено: 21 февраля 2010 — 18:09 • Тема: Мод: Бан лист • Форум: Модификации и дополнения |
Ответов: 84 Просмотров: 0
|
Я пока думаю и ищу варианты как лучше...
Не увидел смысла показывать банлист везде
Как его лучше- не знаю, надеюсь и с Вашей помощью поравить неточности
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']}" /> <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']}" /> <b>{$fm->LANG['BanUsers']}</b></a>
на
|
RomAndry |
Отправлено: 21 февраля 2010 — 17:19 • Тема: Мод: Бан лист • Форум: Модификации и дополнения |
Ответов: 84 Просмотров: 0
|
Да, спасибо, что поправили - я больше думал что бы ничего не забыть
по поводу ошибки я испрваил ее и отредактировал топик.
Было:
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' : '');
|
RomAndry |
Отправлено: 17 февраля 2010 — 20:35 • Тема: Мод: Бан лист • Форум: Модификации и дополнения |
Ответов: 84 Просмотров: 0
|
Приветствую.
Вот понадобилось сделать для форума портала PHP.SU нечто более, чем текущий бан.
К примеру временная блокировка и указание причины бана. Так же нужен список забаненных товарищей с информацией кого, когда, на сколько и кто забанил. Так же кто разбанил, Модератор или сам скрипт по истечению (авторазбан работает, когда забаненный юзер пытается зайти по истечению срока бана. Возможно лучшее решение это крон раз в сутки).
Бан ставится минимум на 1 день. Возможно разбанить и раньше - обычной кнопкой "Разбанить"
Я слышал, что в новой версии будет улучшен этот алгоритм, но сегодня появилось время и решил сделать - может кому еще пригодится.
1. Для начала создаем в папке data папку banned_users и сразу ставим права 777 (rwxrwxrwx). В этой папке будут храниться файлы ИДюзера.php
2. в файле profile.php после строки
CODE:if ($is_moder && !$to_moder) {
коменируем
CODE:// $moders_ban= '<a href="..........';
и добавляем код
Спойлер (Отобразить)
CODE:
$moders_ban= '';
if($user['status'] == 'banned' AND file_exists('data/banned_users/'.$user_id.'.php')) {
$usrban = $fm->_Read('data/banned_users/'.$user_id.'.php');
$moders_ban.= '<br />'.$fm->LANG['BanReason'].': <b>'.$usrban['reason'].'</b> '.$fm->LANG['BanDays'].' <b>'.$usrban['days'].'</b> '.$fm->LANG['BanDateEnd'].': <b>'.$fm->_DateFormat($usrban['end']).'</b>';
}
$moders_ban.= '<hr/><form action="profile.php?action=show&member='.$user_id.'&ban=yes" method="POST">';
if($user['status'] == 'banned') {
$moders_ban.= '<input type="hidden" name="unban" value="1">';
}else {
$moders_ban.= $fm->LANG['BanDays'].': <input type="text" size="5" name="days"> ';
$moders_ban.= $fm->LANG['BanReason'].': <input type="text" size="70" name="reason">';
}
$moders_ban.= '<input type="submit" value="'.(($user['status'] == 'banned') ? $fm->LANG['BanUnSet'] : $fm->LANG['BanSet']).'">';
$moders_ban.= '</form>';
if ($fm->_Boolean1('ban') AND ($user['status'] == 'me' OR $user['status'] == 'banned')) {
$days = isset($fm->input['days']) ? abs(intval($fm->input['days'])) : 0;
$reason = isset($fm->input['reason']) ? $fm->_String('reason') : '';
$unban = isset($fm->input['unban']) ? intval($fm->input['unban']) : 0;
if($reason!='' OR $unban==1) {
if($days>0 OR $unban==1) {
$days = $unban==1 ? 0 : $days;
$user_ban = $fm->_Read2Write($fp_ban, 'data/banned_users/'.$user_id.'.php');
$user_ban['user_id'] = $user_id;
$user_ban['user_name'] = $user['name'];
$user_ban['days'] = $days;
$user_ban['date'] = time();
$user_ban['end'] = mktime(0,0,0,date('m'),date('d')+$days,date('Y'));
$user_ban['reason'] = $unban==1 ? $user_ban['reason'] : ($reason ? $reason : '');
$user_ban['who_id'] = $fm->user['id'];
$user_ban['who_name'] = (isset($fm->LANG['Pun'.$fm->user['status']]) ? $fm->LANG['Pun'.$fm->user['status']].' ' : '').$fm->user['name'];
if($unban==1) {
$user_ban['whounban_id'] = $fm->user['id'];
$user_ban['whounban_name'] = (isset($fm->LANG['Pun'.$fm->user['status']]) ? $fm->LANG['Pun'.$fm->user['status']].' ' : '').$fm->user['name'];
}
$fm->_Write($fp_ban, $user_ban);
}else{
$fm->_Message($fm->LANG['MainMsg'], $fm->LANG['BanErrorDays']);
}
}else{
$fm->_Message($fm->LANG['MainMsg'], $fm->LANG['BanErrorReason']);
}
}
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:
$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:
$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']}" /> <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']}" /> <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=">" /> <a href="index.php">{$fm->exbb['boardname']}</a> » <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=">" width="8" height="8" /> {$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"> </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/. |
RomAndry |
Отправлено: 10 сентября 2009 — 18:01 • Тема: Что означает эта ошибка • Форум: Решение проблем |
Ответов: 31 Просмотров: 0
|
electron пишет:скорее всего пятая, если повнимательнее вчитаться в ошибку
да втом то и дело, такая ошибка была в ветке 4 (не помню в каком именно релизе пофиксили) потому и спросил |
RomAndry |
Отправлено: 10 сентября 2009 — 13:29 • Тема: Что означает эта ошибка • Форум: Решение проблем |
Ответов: 31 Просмотров: 0
|
интересно, какая версия PHP?
лечить в php.ini:
CODE:
session.gc_probability = 1
session.gc_divisor = 1
ну и перегрузить апач |
|
Страниц (3): [1] 2 3 »
|