Репутация

DarkMod

Пользователь
MOD Title: Репутация
MOD Version: 1.0.2
MOD Author: antongranik
Updated MOD TP II: DarkMod, отдельное спасибо Antony Rus Liverov

MOD Description: Allows users to give reputation points to each others,
earn it by posts and by "living" on forum, see the history of givings.
Admin can edit users' reputations in admin cp. The whole system can be a text or a
graphic version (5 different medals) and simple or advanced version
(with choosing of how much reputation to give).
You can get help on the system in the guide/ folder.

df0ac80d02f617c351fd30e3fe2aa33c.png
 

Вложения

  • Репутация.rar
    23.7 KB · Просмотры: 209
M

Mr.ELDORADO

Гость
в админ панели такая трабла
Notice: Undefined index: DISABLE_REP in F:\nimp\htdocs\suite.org\admin\admin_reputation.php on line 95 Notice: Undefined index: POSTS_TO_EARN in F:\nimp\htdocs\ suite.org \admin\admin_reputation.php on line 96 Notice: Undefined index: DAYS_TO_EARN in F:\nimp\htdocs\ suite.org \admin\admin_reputation.php on line 97 Notice: Undefined index: FLOOD_CONTROL_TIME in F:\nimp\htdocs\suite.org\admin\admin_reputation.php on line 98 Notice: Undefined index: SHOW_STATS_TO_MODS in F:\nimp\htdocs\suite.org\admin\admin_reputation.php on line 99 Notice: Undefined index: GRAPHIC_VERSION in F:\nimp\htdocs\suite.org\admin\admin_reputation.php on line 100 Notice: Undefined index: MEDAL1_TO_EARN in F:\nimp\htdocs\suite.org\admin\admin_reputation.php on line 101 Notice: Undefined index: MEDAL2_TO_EARN in F:\nimp\htdocs\suite.org\admin\admin_reputation.php on line 102 Notice: Undefined index: MEDAL3_TO_EARN in F:\nimp\htdocs\suite.org\admin\admin_reputation.php on line 103 Notice: Undefined index: MEDAL4_TO_EARN in F:\nimp\htdocs\suite.org\admin\admin_reputation.php on line 104 Notice: Undefined index: GIVEN_REP_TO_EARN in F:\nimp\htdocs\suite.org\admin\admin_reputation.php on line 105 Notice: Undefined index: REPSUM_LIMIT in F:\nimp\htdocs\suite.org\admin\admin_reputation.php on line 106 Notice: Undefined index: PM_NOTIFY in F:\nimp\htdocs\suite.org \admin\admin_reputation.php on line 107 Notice: Undefined index: DEFAULT_AMOUNT in F:\nimp\htdocs\suite.org\admin\admin_reputation.php on line 108 Notice: Undefined index: REPUTATION_CONFIG_TITLE in F:\nimp\htdocs\suite.org\admin\admin_reputation.php on line 110 Notice: Undefined index: REPUTATION_CONFIG_EXPLAIN in F:\nimp\htdocs\suite.org\admin\admin_reputation.php on line 111
0175ca0b1573f7666a2d3f7ef7263f41.gif
 

Mikotka

Пользователь
DarkMod,

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

Фикс 1.
Код:
$lang['REPUTATION'] = 'Репутация';
$lang['NO_VOTES'] = 'Нет голосов';
$lang['VOTES'] = 'голосов';
$lang['REPUTATION'] = 'Репутация';
$lang['REPUTATION_CONFIG_TITLE'] = 'Настройка системы репутации пользователей';
$lang['REPUTATION_CONFIG_EXPLAIN'] = 'Здесь можно настроить все параметры работы системы репутации пользователей.';
$lang['REP_CONFIG_UPDATED'] = 'Настройки репутации изменены';
$lang['CLICK_RETURN_REP_CONFIG'] = '%sВернуться к настройкам репутации%s';
$lang['DISABLE_REP'] = 'Отключить систему репутаций';
$lang['GRAPHIC_VERSION'] = 'Графическая система репутаций';
$lang['SHOW_STATS_TO_MODS'] = 'Показывать статистику выданных очков только администраторам/модераторам';
$lang['PM_NOTIFY'] = 'Уведомлять пользователей через личные сообщения о получении ими новых очков репутации';
$lang['POSTS_TO_EARN'] = 'Кол-во сообщений для заработка 1 очка репутации (0 - запретить)';
$lang['DAYS_TO_EARN'] = 'Кол-во дней существования на форуме для заработка 1 очка репутации (0 - запретить)';
$lang['FLOOD_CONTROL_TIME'] = 'Минимальное кол-во минут для одного пользователя между раздачами репутаций<br />(не действует на модераторов и администраторов)';
$lang['MEDAL1_TO_EARN'] = 'Кол-во очков репутации для заработка медали 1 размера';
$lang['MEDAL2_TO_EARN'] = 'Кол-во очков репутации для заработка медали 2 размера';
$lang['MEDAL3_TO_EARN'] = 'Кол-во очков репутации для заработка медали 3 размера';
$lang['MEDAL4_TO_EARN'] = 'Кол-во очков репутации для заработка медали 4 размера';
$lang['GIVEN_REP_TO_EARN'] = 'Кол-во отданной репутации для заработка 1 очка (0 - запретить)';
$lang['REPSUM_LIMIT'] = 'Максимальное кол-во очков, которые единовременно пользователи могут выдавать (0 - неограниченно)';
$lang['DEFAULT_AMOUNT'] = 'Включить упрощенную систему выдачи репутации и установить каждую выдачу равную этому числу (0 - запретить)';

Фикс 2.
Вместо

Код:
#
#-----[ OPEN ]------------------------------------------
#
language/lang_main.php
Надо
Код:
#
#-----[ OPEN ]------------------------------------------
#
language/lang_russian/lang_main.php

Мелочь, но тут и более тупые "Почему не работает?!" встречаются

Фикс 3.
А вот это серьезный косяк, делающий мод несовместимым с ТП2

Код:
#
#-----[ OPEN ]------------------------------------------
#
reputation.php
#
#-----[ FIND ]--------------------------------------
#
include($phpbb_root_path . 'extension.inc');
include($phpbb_root_path . 'common.php');
include($phpbb_root_path . 'reputation_common.php');
include($phpbb_root_path . 'language/lang_' . $bb_cfg['default_lang'] . '/lang_reputation.php');

#
#-----[ REPLACE ]--------------------------------------
#
define('IN_PHPBB', true);
define('BB_ROOT', './');
require(BB_ROOT .'common.php');
require(BB_ROOT .'reputation_common.php');
require(BB_ROOT .'language/lang_' . $bb_cfg['default_lang'] . '/lang_reputation.php');

Upd. ну и файлик reputation.tpl в аттаче неплохо было бы в UTF сконвертить. А то кракозяблы :)
 

Mikotka

Пользователь
Госссподи... ну и мешанина в коде с регистрами вызова лангов... Лог разрывается просто от необъявленных переменных:confused:

А так, вроде работает... Докинул только проверку от несуществующих пользователей. У меня за несколько лет по разным причинам попадаются посты от юзверей, которых в bb_users нет. На таких постах в теме мод блокирует все.
 

Didier

Пользователь
Вот честно. За последнее время это первый мод сделанный настолько через ... кхм ... ну вы поняли через что. Пришлось уже самому править сие безобразие руками, но так как я себя никогда программистом не считал, то очень много сказал нецензурных выражений. Ну то что в нескольких местах пришлось править Reputation на REPUTATION - это ладно.

В настоящую минуту если включить
упрощенную систему выдачи репутации и установить каждую выдачу равную этому числу (0 - запретить)
, а я ставил скажем 1, то мускуль начинал орать

Код:
)______________________________________________________________________________

#001064 You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '4 WHERE user_id = 3299' at line 2

UPDATE bb_users SET user_reputation = user_reputation + 1,4 WHERE user_id = 3299

Source  : reputation.php(156) :: db1.team_gdi_2011
IP      : 178.49.136.62
Date    : 2011-10-04 13:53:07
Agent  : Mozilla/5.0 (Windows NT 6.1; WOW64; rv:7.0.1) Gecko/20100101 Firefox/7.0.1
Req_URI : /reputation.php?a=post
Referer : http://www.team-gdi.com/reputation.php?a=add&u=3299&p=138001&c=d41d8cd9
Method  : POST
PID    : 02414
Request : Array
(
    [a] => post
    [rep_sum_to_give] => 1
    [rep_neg_to_give] => 0
    [rep_comment_to_give] =>
    [submit] => Выдать
    [user_id_to_give] => 3299
    [post_id_to_give] => 138001
    [ccode] => d41d8cd9

Ну и репутация соответственно не выдавалась (Could not update reputation for the user)

Есть способ избавиться или проще все снести к свиням? :)
 

Mikotka

Пользователь
Didier,
Удалите или закоментируйте в \language\lang_russian\lang_main.php строку
Код:
setlocale(LC_ALL, 'ru_RU.UTF-8');

в ТП2 двойное объявление локали, из-за этого у вас в "+ 1,4" запятая, а должна быть точка. Мускль такого надругательства не выдерживает :)
 

Didier

Пользователь
Mikotka, спасибо огромное. Сам бы не допер. :)
--- добавлено: Oct 5, 2011 12:38 AM ---
Кстати, как избавится от вывода десятичных дробей?
(Репутация 535.5
Голосов 524)
 

Mikotka

Пользователь
Кстати, как избавится от вывода десятичных дробей?
А зачем? Мне как раз даже понравилось, что, чем больше разница в "уровнях" по рейтингу, тем больше бонус получающему.

Но, если очень надо, то это явно задается в reputation.php

Код:
        if ($userdata['user_reputation'] > $row['user_reputation'])
        {
            if ($userdata['user_reputation'] >= $rep_config['medal1_to_earn']) // >= medal1?
            {
                $mul = 1.4;
            } else if ($userdata['user_reputation'] >= $rep_config['medal2_to_earn']) // >= medal2 && < medal1
            {
                $mul = 1.3;
            } else if ($userdata['user_reputation'] >= $rep_config['medal3_to_earn']) // >=medal3 && <medal2 && <medal1
            {
                $mul = 1.2;
            } else
            {
                $mul = 1.1;
            }
        } else
        {
            $mul = 1;
        }

Поставьте вместо этого просто
Код:
$mul = 1;

И не будет присваивать дробные числа.
 
Сверху