Перейти из форума на сайт.

НовостиФайловые архивы
ПоискАктивные темыТоп лист
ПравилаКто в on-line?
Вход Забыли пароль? Первый раз на этом сайте? Регистрация
Компьютерный форум Ru.Board » IkonBoard и другие форумы » Invision Board » Система плюсования

Модерирует : Antuan, Dekker

 Версия для печати • ПодписатьсяДобавить в закладки
Страницы: 1 2 3 4 5

Открыть новую тему     Написать ответ в эту тему

Tsusaro

Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Идеально! Спасибо огромнейшее!
 
Добавлено
Одно плохо: после анонимного изменения кармы пользователь может не ждать неделю, а снова изменить карму сразу же.

Всего записей: 44 | Зарегистр. 10-11-2002 | Отправлено: 08:14 18-04-2003
theIggs



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
...хак из последних сил пытался сопротивляться...
 
Tsusaro
Убирай все изменения и тестируй вот такой вариант:
 
0. Запустить команду mySQL (через phpMyAdmin или Админцентр->SQL Management->mySQL Toolbox, раздел Run a Query):

Код:
ALTER TABLE `ibf_reputation` ADD `vis` TINYINT(1) DEFAULT '1' NOT NULL;

 
1. Открыть Skin/s*/skin_karma.php.
Найти:
 

Код:
<td class='row1'>{$ibforums->member['name']}</td>

 
Заменить на:
 

Код:
<td class='row1'>{$ibforums->member['name']} <input type='checkbox' name='anonymno' value='yes'> Анонимно</td>

 
Найти:
 

Код:
function ShowRow($memid, $name, $fromid, $url, $title, $message, $img_src, $rep_date) {

 
Заменить на:
 

Код:
function ShowRow($memid, $name, $url, $title, $message, $img_src, $rep_date) {

 
Найти:
 

Код:
<td class='row1' width='15%'><a href="{$ibforums->vars['board_url']}/index.{$ibforums->vars['php_ext']}?s={$ibforums->session_id}&act=Profile&CODE=03&MID={$fromid}"><b>$name</b></a></td>

 
Заменить на:
 

Код:
<td class='row1' width='15%'>$name</td>

 
2. sources/Karma.php
Найти:
 

Код:
        $db_string = $std->compile_db_string( array(  
                                                     'member_id'      => $memid,
                                                     'msg_date'       => time(),
                                                     'message'        => $ibforums->input['message'],
                                                     'from_id'        => $ibforums->member['id'],
                                                     'forum_id'       => $ibforums->input['f'],
                                                     'topic_id'       => $ibforums->input['t'],
                                                     'CODE'           => $ibforums->input['CODE'],
                                            )      );

 
Заменить на:
 

Код:
        if ($ibforums->input['anonymno'] == 'yes') {$show = 0;} else {$show = 1;}
        $db_string = $std->compile_db_string( array(  
                                                     'member_id'      => $memid,
                                                     'msg_date'       => time(),
                                                     'message'        => $ibforums->input['message'],
                                                     'from_id'        => $ibforums->member['id'],
                                                     'forum_id'       => $ibforums->input['f'],
                                                     'topic_id'       => $ibforums->input['t'],
                                                     'CODE'           => $ibforums->input['CODE'],
                                                     'vis'            => $show,
                                            )      );

 
Найти:
 

Код:
$output .= $karma_html->ShowRow($memid, $i['name'], $i['from_id'], $rep_url, $rep_title, $i['message'], $img_src, $rep_date);

 
Заменить на:
 

Код:
if ($i['vis'] != 0)
{
$i['name'] = "<a href='{$ibforums->vars['board_url']}/index.{$ibforums->vars['php_ext']}?s={$ibforums->session_id}&act=Profile&CODE=03&MID={$fromid}'><b>{$i['name']}</b></a>";
} else {
$i['name'] = "<font color='lightsteelblue'>Аноним</font>";
}
$output .= $karma_html->ShowRow($memid, $i['name'], $rep_url, $rep_title, $i['message'], $img_src, $rep_date);

 
Должно работать.
 
И по пункту 2 - как лучше сделать?
а) у кого меньше X постов - вообще не видит системы репутаций (так же, как гость);
б) видит систему, но при попытке плюсовать получает ошибку, мол, надо набрать X постов.

----------
Русская поддержка по IP.Board на IBResource.ru.
Для счастья нужно: национальный трекер и поисковик!

Всего записей: 1114 | Зарегистр. 13-11-2002 | Отправлено: 14:02 18-04-2003
Tsusaro

Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Моя ИМХА - вариант б. Хотя тут уж не знаю. Теперь действительно все замечательно работает. Только имхо было бы логичнее, если после изменения кармы человека перебрасывало бы на страницу с кармой пользователя, а не на первую страницу темы. И еще: получается забавно если много-много раз жать на кнопку "Готово" при отправке кармы. И никакой недели ждать не надо :)

Всего записей: 44 | Зарегистр. 10-11-2002 | Отправлено: 16:33 18-04-2003
theIggs



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Tsusaro
Ууууу, хакер, блин! Все секреты рассказал!
Над кнопкой надобно будет поработать.
 
Вот второй мод. Ищи баги.
 
1. Открыть файл sources/Admin/ad_settings.php.
Найти:
 

Код:
$this->save_config( array ( 'karma_display', 'karma_remove', 'karma_display_options', 'karma_time' ) );

 
Заменить на:
 

Код:
$this->save_config( array ( 'karma_display', 'karma_remove', 'karma_display_options', 'karma_time', 'karma_posts' ) );

 
Найти:
 

Код:
$ADMIN->html .= $SKIN->add_td_row( array( "<b>How many days the user can't change the same user's Karma again?</b>" ,
$SKIN->form_input( "karma_time", $INFO['karma_time'] )
) );

 
Ниже добавить:
 

Код:
$ADMIN->html .= $SKIN->add_td_row( array( "<b>Number of posts required to use the Karma system?</b>" ,
$SKIN->form_input( "karma_posts", $INFO['karma_posts'] )
) );

 
2. Открыть файл lang/*/lang_error.php
Для английского языка:
Найти:
 

Код:
'complete_form'             => "You must complete the form fully before proceeding. Please go back and check the data you entered.",

 
Ниже добавить:
 

Код:
'karma_noposts'=> "You do not have enough posts to change users' reputation. <#EXTRA#> posts required",

 
Для русского языка:
 

Код:
'complete_form'             => "Вы должны заполнить все поля формы. Вернитесь назад, проверьте введённые данные и повторите попытку.",

 
Ниже добавить:
 

Код:
'karma_noposts'=> "У Вас недостаточно постов, чтобы изменять репутацию пользователей. Необходимо <#EXTRA#> постов.",

 
3. Открыть файл sources/Karma.php
ВНИМАНИЕ! Встречается дважды!
Найти:
 

Код:
if (time() - $info['msg_date'] < 60*60*24*$ktime)
{
$std->Error( array( 'LEVEL' => 1, 'MSG' => 'karma_early' ) );
}

 
Ниже добавить:
 

Код:
        if ($ibforums->member['posts'] < $ibforums->vars['karma_posts'] )
        {
            $std->Error( array( LEVEL => 1, MSG => 'karma_noposts', 'EXTRA' => $ibforums->vars['karma_posts']) );
        }

 
ВНИМАНИЕ! Встречается трижды!
Найти:
 

Код:
"?s=".$ibforums->session_id."&act=ST&f=".$ibforums->input['f']."&t=".$ibforums->input['t']

 
Заменить на:
 

Код:
"&act=karma&CODE=03&mid=".$memid

 
ЗЫ:

Что-то у меня не получается быстро-быстро по кнопке давить... всегда только одна запись добавляется. Так что протестировать не смогу... По идее, если

Код:
$this->add_why($ibforums->input['mid']);

заменить на

Код:
if ( time() - $ibforums->lastclick > 2 ) {$this->add_why($ibforums->input['mid']);}

а

Код:
$DB->query("UPDATE ibf_members SET warn_level='".$new."' WHERE id='$memid'");

заменить на

Код:
if ( time() - $ibforums->lastclick > 2 ) {$DB->query("UPDATE ibf_members SET warn_level='".$new."' WHERE id='$memid'");}

то должно работать, но точно не скажу...  


----------
Русская поддержка по IP.Board на IBResource.ru.
Для счастья нужно: национальный трекер и поисковик!

Всего записей: 1114 | Зарегистр. 13-11-2002 | Отправлено: 19:49 18-04-2003 | Исправлено: theIggs, 20:23 18-04-2003
Tsusaro

Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Хмм.. я не знаю, может оно и по-другому получилось, но
http://dragonlance.olmer.ru/forum/index.php?s=&act=karma&CODE=03&mid=145
здесь один человек умудрился дважды повысить харизму, тьфу, карму...

Всего записей: 44 | Зарегистр. 10-11-2002 | Отправлено: 20:47 18-04-2003
Tsusaro

Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
И снова огромнейшее спасибо. Я поставил, никаких багов пока не заметно. Посмотрю будут ли теперь снова появляться двойные изменения кармы :).  
 
У меня на форуме этот мод был очень тепло принят. В общем, рулез! Еще раз спасибо.

Всего записей: 44 | Зарегистр. 10-11-2002 | Отправлено: 15:31 20-04-2003
Chuwi

Full Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
Э.....я вот подумал а может немного изменить хак...а theIggs?
Просто не всегде даешь репутацию за определнный пост...а вместо этой колонки сделать что-то езе=)

Всего записей: 486 | Зарегистр. 10-03-2003 | Отправлено: 15:34 20-04-2003
Tsusaro

Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
В таком случае можно еще сделать возможность плюсования из профиля...

Всего записей: 44 | Зарегистр. 10-11-2002 | Отправлено: 00:57 21-04-2003
theIggs



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Эх... Всё идёт к варианту "Ну прям как на АГ".
В оригинале хак предусматривал возможность плюсовать из темы, из профиля и прямо со статистики репутаций.
Мне, правда, не понравилось, как эти фичи юзаются на аг.ру - там народ заходит друг к другу профиль и ставит плюсики с описанием вроде "Привет, как дела?"...

----------
Русская поддержка по IP.Board на IBResource.ru.
Для счастья нужно: национальный трекер и поисковик!

Всего записей: 1114 | Зарегистр. 13-11-2002 | Отправлено: 04:49 21-04-2003
Tsusaro

Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Хмм... двойные изменения кармы по-прежнему наблюдаются.  У одного человека карма=9, хотя судя по записям в бд она должна быть 7...

Всего записей: 44 | Зарегистр. 10-11-2002 | Отправлено: 07:18 22-04-2003
theIggs



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Tsusaro
Не, так не бывает... :-\
Либо и там и там лишнее, либо хз.
Говори, добавлял ли эти строчки
if ( time() - $ibforums->lastclick > 2 ) {$this->add_why($ibforums->input['mid']);}  
if ( time() - $ibforums->lastclick > 2 ) {$DB->query("UPDATE ibf_members SET warn_level='".$new."' WHERE id='$memid'");}  
Если да, то отправляй мылку на theiggs@ngs.ru и приложи Karma.php...

----------
Русская поддержка по IP.Board на IBResource.ru.
Для счастья нужно: национальный трекер и поисковик!

Всего записей: 1114 | Зарегистр. 13-11-2002 | Отправлено: 14:18 22-04-2003
theIggs



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Обнаружен баг в моде № 1 (второй пост на этой странице).
Вместо

Код:
if ($i['vis'] != 0)  
{  
$i['name'] = "<a href='{$ibforums->vars['board_url']}/index.{$ibforums->vars['php_ext']}?s={$ibforums->session_id}&act=Profile&CODE=03&MID={$fromid}'><b>{$i['name']}</b></a>";  
} else {  
$i['name'] = "<font color='lightsteelblue'>Аноним</font>";  
}  
$output .= $karma_html->ShowRow($memid, $i['name'], $rep_url, $rep_title, $i['message'], $img_src, $rep_date);

следует писать

Код:
if ($i['vis'] != 0)  
{  
$i['name'] = "<a href='{$ibforums->vars['board_url']}/index.{$ibforums->vars['php_ext']}?s={$ibforums->session_id}&act=Profile&CODE=03&MID={$i['from_id']}'><b>{$i['name']}</b></a>";
} else {  
$i['name'] = "<font color='lightsteelblue'>Аноним</font>";  
}  
$output .= $karma_html->ShowRow($memid, $i['name'], $rep_url, $rep_title, $i['message'], $img_src, $rep_date);

 
...а кнопочку будем пинать ногами.  
 
Добавлено
Попробуем разобраться с кнопкой вот так:
 
Открыть Skin/s*/skin_karma.php. Найти:
 

Код:
     <br>
     <form action="{$ibforums->vars['board_url']}/index.{$ibforums->vars['php_ext']}" method="post" name='Karma'>

 
Заменить на:
 

Код:
<script language="javascript">
<!--
function Validate() { document.Karma.go.disabled = true; }
// -->
</script>
     <br>
     <form action="{$ibforums->vars['board_url']}/index.{$ibforums->vars['php_ext']}" method="post" name='Karma' onSubmit='return Validate()'>

 
Жду баг-репорты.

Всего записей: 1114 | Зарегистр. 13-11-2002 | Отправлено: 12:58 30-04-2003 | Исправлено: theIggs, 13:01 30-04-2003
MuxaJIbI4

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Зачем гемороица и жать кнопку готово, когда можно поступить проще -  
1. повышаем/понижаем карму/репу
2. жмем два раза назад и мы опять в форме изменения репы/кармы
3. жмем готово.
4. повторять 2-3 по необходимости ))
 
срочно нужно исправлять, т.к. юзера злоупотребляют (

Всего записей: 6 | Зарегистр. 03-05-2003 | Отправлено: 14:56 03-05-2003
theIggs



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
MuxaJIbI4
Не понял... Это если временной интервал на изменения репы включён? :-\ Дай ссылку на форум.

Всего записей: 1114 | Зарегистр. 13-11-2002 | Отправлено: 16:17 03-05-2003
MuxaJIbI4

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
theIggs
интервал включен - 7 дней, форум в локалке без выхода в инет.

Всего записей: 6 | Зарегистр. 03-05-2003 | Отправлено: 20:21 03-05-2003
theIggs



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
MuxaJIbI4
Естественно, оно так будет работать! Так уж код написан!..
ЗЫ: вот что получается, когда чужой код меняешь... проще блин самому писать.
 
Вот фикс:
В Karma.php найти:
 

Код:
if(! $passed)
        {
            $std->Error( array( 'LEVEL' => 1, 'MSG' => 'not_registered' ) );
        }

 
Ниже добавить:
 

Код:
if ($ibforums->input['CODE'] != '03') {
$DB->query("SELECT msg_date FROM ibf_reputation WHERE member_id='".$ibforums->input['mid']."' AND from_id='".$ibforums->member['id']."' ORDER BY msg_date DESC");
$info = $DB->fetch_row();
$ktime = $ibforums->vars['karma_time'];
if (time() - $info['msg_date'] < 60*60*24*$ktime)
{
$std->Error( array( 'LEVEL' => 1, 'MSG' => 'karma_early' ) );
}
}

 
По-хорошему, вот это:

Код:
$DB->query("SELECT msg_date FROM ibf_reputation WHERE member_id='$memid' AND from_id='$fromid' ORDER BY msg_date DESC");
$info = $DB->fetch_row();
$ktime = $ibforums->vars['karma_time'];
if (time() - $info['msg_date'] < 60*60*24*$ktime)
{
$std->Error( array( 'LEVEL' => 1, 'MSG' => 'karma_early' ) );
}

нужно теперь повыкидывать из всех остальных мест в коде... Впрочем, не уверен, что это не нарушит целостность, посему лучше просто пока поставить фикс.
 
В скором (нескором?) времени постараюсь исправить все мелкие неточности в Karma.php и сделать финальную версию. Но это только после того, как закончатся разборки по поводу системы репутаций на ibplanet.com... а то, понимаешь, пишешь-пишешь коды, а потом в один прекрасный момент их кто-нить присваивает...

----------
Русская поддержка по IP.Board на IBResource.ru.
Для счастья нужно: национальный трекер и поисковик!

Всего записей: 1114 | Зарегистр. 13-11-2002 | Отправлено: 21:06 03-05-2003 | Исправлено: theIggs, 21:21 03-05-2003
MuxaJIbI4

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
theIggs
пасиб за оперативность, поставил только фикс и пока все нормально (покрайней мере у меня не получалось делать несколько +/- ).

Всего записей: 6 | Зарегистр. 03-05-2003 | Отправлено: 21:44 03-05-2003
Noeater



Junior Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
Эээээ а можно теперь все это вместе взятое, со всеми багфиксами и аддонами зафиналить и харелизить, а потом кинуть ссылку?
Я спасиб скажу

Всего записей: 72 | Зарегистр. 28-08-2001 | Отправлено: 18:00 06-05-2003
razdor



Junior Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
так поделиться кто нибудь или нет ?

Всего записей: 50 | Зарегистр. 12-10-2002 | Отправлено: 22:02 07-05-2003
bady

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
пожалуйста может нет ктонибудь поделитса поеснением как хак устанавливать а то всех файлов как устанавливать уже нет...а так хотелось бы установить этот хак.

Всего записей: 18 | Зарегистр. 09-03-2003 | Отправлено: 00:06 22-05-2003
Открыть новую тему     Написать ответ в эту тему

Страницы: 1 2 3 4 5

Компьютерный форум Ru.Board » IkonBoard и другие форумы » Invision Board » Система плюсования


Реклама на форуме Ru.Board.

Powered by Ikonboard "v2.1.7b" © 2000 Ikonboard.com
Modified by Ru.B0ard
© Ru.B0ard 2000-2024

BitCoin: 1NGG1chHtUvrtEqjeerQCKDMUi6S6CG4iC

Рейтинг.ru