Мод даёт возможность "оценить" пользователя посредством выставления ему "репутации". мод также даёт возможность оставлять комментарии относительно понижения/повышения репутации, регулировать шаг, оценки, выставлять права доступа и т.д.
Интересная штука, короче. Здесь она тоже установлена (в личном деле).
Сканов модификации с чистого форума нашёл - на одном из сайтов это выглядит так:


вывод для subsilver2 будет выглядеть так:

Если хотите - ставим.
Скачать модификацию из архива сайта:
Скачать из файлового архива сайта
распаковать, содержимое папки root загрузить в корень сайта (где файл config.php).
если у вас уже есть на сервере папка umil - удалите её из папки root перед копированием файлов.
Редактирование файлов форума:
(правок хватает, но они несложные. делайте спокойно и не спеша - и всё получится)
Код: Выделить всё
require($phpbb_root_path . 'includes/constants.' . $phpEx);
require($phpbb_root_path . 'includes/db/' . $dbms . '.' . $phpEx);
require($phpbb_root_path . 'includes/utf/utf_tools.' . $phpEx);
Вставить после найденного
Код: Выделить всё
// Reputation Points MOD
require($phpbb_root_path . 'includes/functions_reputation.' . $phpEx);
// end
Код: Выделить всё
// Output page
page_header($user->lang['INDEX']);
Вставить после найденного
Код: Выделить всё
// Reputation Points MOD
$user->add_lang('mods/reputation_mod');
$reputation->toplist();
// end
Код: Выделить всё
if (!empty($profile_fields['row']))
{
$template->assign_vars($profile_fields['row']);
}
Вставить перед найденным
Код: Выделить всё
// Reputation Points MOD
$user->add_lang('mods/reputation_mod');
$template->assign_vars(array(
'S_REPUTATION' => $member['user_hide_reputation'] ? false : true,
'REPUTATION' => $member['user_reputation'],
'REP_POWER' => $reputation->get_rep_power($member['user_posts'], $member['user_regdate'], $member['user_reputation'], $member['group_id']),
)
);
// end
Код: Выделить всё
// Setup look and feel
$user->setup('viewtopic', $topic_data['forum_style']);
Вставить после найденного
Код: Выделить всё
// Reputation Points MOD
$user->add_lang('mods/reputation_mod');
// end
Код: Выделить всё
// Does this topic contain a poll?
Вставить перед найденным
Код: Выделить всё
// Reputation Points MOD
$reputation->viewtopic($forum_id);
// end
Код: Выделить всё
// Generate online information for user
Вставить перед найденным
Код: Выделить всё
// Reputation Points MOD
$reputation_cache = $reputation->get_user_reputation($id_cache);
// end
Код: Выделить всё
if (isset($cp_row['row']) && sizeof($cp_row['row']))
{
$postrow = array_merge($postrow, $cp_row['row']);
}
Вставить после найденного
Код: Выделить всё
// Reputation Points MOD
$postrow = array_merge($postrow, $reputation->reputation_row($poster_id, $row['post_id'], $reputation_cache));
// end
Код: Выделить всё
<dl>
<dt><label for="group_legend">{L_GROUP_LEGEND}:</label></dt>
<dd><input name="group_legend" type="checkbox" value="1" class="radio" id="group_legend"{GROUP_LEGEND} /></dd>
</dl>
Вставить после найденного
Код: Выделить всё
<dl>
<dt><label for="group_reputation_power">{L_RP_GROUP_POWER}:</label></dt>
<dd><input name="group_reputation_power" type="text" id="group_reputation_power" maxlength="4" size="4" value="{GROUP_REPUTATION_POWER}" /></dd></dd>
</dl>
Код: Выделить всё
$update_ary = array(
FORUMS_TABLE => array('forum_last_poster_name'),
MODERATOR_CACHE_TABLE => array('username'),
POSTS_TABLE => array('post_username'),
TOPICS_TABLE => array('topic_first_poster_name', 'topic_last_poster_name'),
);
Вставить после найденного
Код: Выделить всё
// Reputation Points MOD
$update_ary[REPUTATIONS_TABLE] = array('username');
// end
Код: Выделить всё
function user_delete($mode, $user_id, $post_username = false)
{
global $cache, $config, $db, $user, $auth;
global $phpbb_root_path, $phpEx;
Вставить после найденного
Код: Выделить всё
// Reputation Points MOD
global $reputation;
// end
Код: Выделить всё
if ($user_row['user_avatar'] && $user_row['user_avatar_type'] == AVATAR_UPLOAD)
{
avatar_delete('user', $user_row);
}
Вставить после найденного
Код: Выделить всё
// Reputation Points MOD
$reputation->delete_user($user_id);
// end
Код: Выделить всё
$user_attribute_ary = array('group_colour', 'group_rank', 'group_avatar', 'group_avatar_type', 'group_avatar_width', 'group_avatar_height');
Вставить после найденного
Код: Выделить всё
$user_attribute_ary[] = 'group_reputation_power';
Код: Выделить всё
function page_footer($run_cron = true)
{
global $db, $config, $template, $user, $auth, $cache, $starttime, $phpbb_root_path, $phpEx;
Вставить после найденного
Код: Выделить всё
// Reputation Points MOD
global $reputation;
$reputation = new reputation();
if(!empty($reputation)) {
$reputation->reputation_end(); }
//end
Код: Выделить всё
$user->add_lang('acp/groups');
Вставить после найденного
Код: Выделить всё
// Reputation Points MOD
$user->add_lang('mods/reputation_mod');
// end
Код: Выделить всё
if ($user->data['user_type'] == USER_FOUNDER)
{
$submit_ary['founder_manage'] = isset($_REQUEST['group_founder_manage']) ? 1 : 0;
}
Вставить после найденного
Код: Выделить всё
// Reputation Points MOD
$submit_ary['reputation_power'] = request_var('group_reputation_power', 0);
// end
Код: Выделить всё
'founder_manage'=> 'int',
'skip_auth' => 'int',
);
Вставить после найденного
Код: Выделить всё
// Reputation Points MOD
$test_variables[] = 'reputation_power';
$test_variables['reputation_power'] = 'int';
// end
Код: Выделить всё
'L_AVATAR_EXPLAIN' => sprintf($user->lang['AVATAR_EXPLAIN'], $config['avatar_max_width'], $config['avatar_max_height'], round($config['avatar_filesize'] / 1024)),
));
Вставить после найденного
Код: Выделить всё
// Reputation Points MOD
$template->assign_vars(array(
'GROUP_REPUTATION_POWER' => (isset($group_row['group_reputation_power'])) ? $group_row['group_reputation_power'] : 0,
));
// end
Код: Выделить всё
'U_SEARCH_USER' => ($auth->acl_get('u_search')) ? append_sid("{$phpbb_root_path}search.$phpEx", 'author_id=' . $user->data['user_id'] . '&sr=posts') : '',
));
Вставить после найденного
Код: Выделить всё
// idiotnesia wuz here
global $reputation;
$reputation->display_comment($user->data['user_id'], 'ucp', 0, $config['rp_recent_points'], false);
// end
Код: Выделить всё
case 'personal':
add_form_key('ucp_prefs_personal');
Вставить после найденного
Код: Выделить всё
// Reputation Points MOD
$user->add_lang('mods/reputation_mod');
// end
Код: Выделить всё
if ($data['notifymethod'] == NOTIFY_IM && (!$config['jab_enable'] || !$user->data['user_jabber'] || !@extension_loaded('xml')))
{
// Jabber isnt enabled, or no jabber field filled in. Update the users table to be sure its correct.
$data['notifymethod'] = NOTIFY_BOTH;
}
Вставить перед найденным
Код: Выделить всё
// Reputation Points MOD
$data['hidereputation'] = request_var('hidereputation', (bool) $user->data['user_hide_reputation']);
// end
Код: Выделить всё
'user_lang' => $data['lang'],
'user_timezone' => $data['tz'],
'user_style' => $data['style'],
);
Вставить после найденного
Код: Выделить всё
// Reputation Points MOD
$sql_ary['user_hide_reputation'] = $data['hidereputation'];
// end
Код: Выделить всё
'S_SELECT_NOTIFY' => ($config['jab_enable'] && $user->data['user_jabber'] && @extension_loaded('xml')) ? true : false)
);
Вставить после найденного
Код: Выделить всё
// Reputation Points MOD
$template->assign_vars(array(
'S_HIDE_REPUTATION' => $data['hidereputation'],
'S_CAN_HIDE_REPUTATION' => ($config['rp_enable'] && $auth->acl_get('u_rp_disable')) ? true : false,
)
);
// end
Код: Выделить всё
<!-- IF NEWEST_USER -->
Вставить после найденного
Код: Выделить всё
<!-- IF REPUTATION_TOPLIST -->
<h3>{L_REPUTATION_TOPLIST}</h3>
<p>{L_REPUTATION_TOPLIST_EXPLAIN}: <strong>{REPUTATION_TOPLIST}</strong></p>
<!-- ENDIF -->
Код: Выделить всё
<dd>{POSTS} <!-- IF S_DISPLAY_SEARCH -->| <strong><a href="{U_SEARCH_USER}">{L_SEARCH_USER_POSTS}</a></strong><!-- ENDIF -->
<!-- IF POSTS_PCT --><br />({POSTS_PCT} / {POSTS_DAY})<!-- ENDIF -->
<!-- IF POSTS_IN_QUEUE and U_MCP_QUEUE --><br />(<a href="{U_MCP_QUEUE}">{L_POSTS_IN_QUEUE}</a>)<!-- ELSEIF POSTS_IN_QUEUE --><br />({L_POSTS_IN_QUEUE})<!-- ENDIF -->
</dd>
Вставить после найденного
Код: Выделить всё
<!-- IF S_REPUTATION -->
<dt>{L_RP_TOTAL_POINTS}:</dt> <dd>{REPUTATION}</dd>
<dt>{L_RP_POWER}:</dt> <dd>{REP_POWER}</dd>
<!-- ENDIF -->
Код: Выделить всё
<h3>{L_YOUR_DETAILS}</h3>
Вставить перед найденным
Код: Выделить всё
<!-- IF .reputation_row -->
<h3>{L_RP_RECENT_POINTS}</h3>
<table class="table1" cellspacing="0">
<thead>
<tr>
<th class="name">{L_RP_POINTS}</th>
<th class="name">{L_FROM}</th>
<th class="name">{L_RP_COMMENTS}</th>
<th class="name">{L_POSTS}</th>
</tr>
</thead>
<tbody>
<!-- BEGIN reputation_row -->
<tr class="<!-- IF reputation_row.S_ROW_COUNT is even -->bg1<!-- ELSE -->bg2<!-- ENDIF -->">
<td><span>{reputation_row.POINT_IMG}</span></td>
<td><span>{reputation_row.FROM}</span></td>
<td><span>{reputation_row.COMMENT}</span></td>
<td><span><!-- IF reputation_row.POST_SUBJECT --><a href="{reputation_row.U_POST}">{reputation_row.POST_SUBJECT}</a><!-- ELSE -->{L_RP_NA}<!-- ENDIF --></span></td>
</tr>
<!-- END reputation_row -->
</tbody>
</table>
<!-- ENDIF -->
Код: Выделить всё
<!-- IF S_CAN_HIDE_ONLINE -->
<dl>
<dt><label for="hideonline0">{L_HIDE_ONLINE}:</label><br /><span>{L_HIDE_ONLINE_EXPLAIN}</span></dt>
<dd>
<label for="hideonline1"><input type="radio" name="hideonline" id="hideonline1" value="1"<!-- IF S_HIDE_ONLINE --> checked="checked"<!-- ENDIF --> /> {L_YES}</label>
<label for="hideonline0"><input type="radio" name="hideonline" id="hideonline0" value="0"<!-- IF not S_HIDE_ONLINE --> checked="checked"<!-- ENDIF --> /> {L_NO}</label>
</dd>
</dl>
<!-- ENDIF -->
Вставить после найденного
Код: Выделить всё
<!-- IF S_CAN_HIDE_REPUTATION -->
<dl>
<dt><label for="hideonline0">{L_RP_HIDE}:</label></dt>
<dd>
<label for="hidereputation1"><input type="radio" name="hidereputation" id="hidereputation1" value="1"<!-- IF S_HIDE_REPUTATION --> checked="checked"<!-- ENDIF --> /> {L_YES}</label>
<label for="hidereputation0"><input type="radio" name="hidereputation" id="hidereputation0" value="0"<!-- IF not S_HIDE_REPUTATION --> checked="checked"<!-- ENDIF --> /> {L_NO}</label>
</dd>
</dl>
<!-- ENDIF -->
Код: Выделить всё
<!-- BEGIN custom_fields -->
<dd><strong>{postrow.custom_fields.PROFILE_FIELD_NAME}:</strong> {postrow.custom_fields.PROFILE_FIELD_VALUE}</dd>
<!-- END custom_fields -->
Вставить после найденного
Код: Выделить всё
<!-- IF S_REPUTATION and postrow.S_USER_REPUTATION -->
<!-- IF S_REP_DISPLAY neq 'block' --><dd><strong>{L_RP_TOTAL_POINTS}:</strong> {postrow.REPUTATION_TEXT}</dd><!-- ENDIF -->
<!-- IF S_REP_DISPLAY neq 'text' --><dd><!-- IF postrow.U_VIEW_REP --><a href="{postrow.U_VIEW_REP}" onclick="popup(this.href, 780, 550); return false;" ><!-- ENDIF -->{postrow.REPUTATION_BLOCK}<!-- IF postrow.U_VIEW_REP --></a><!-- ENDIF --></dd><!-- ENDIF -->
<!-- IF postrow.S_GIVE_REPUTATION --><dd><a href="{postrow.U_ADD_POS}"><img src="{T_IMAGES_PATH}reputation/add.png" title="{L_RP_ADD_POINTS} {postrow.POST_AUTHOR}" alt="{L_RP_ADD_POINTS} {postrow.POST_AUTHOR}" /></a><!-- IF postrow.S_GIVE_NEGATIVE--><a href="{postrow.U_ADD_NEG}"><img src="{T_IMAGES_PATH}reputation/subtract.png" title="{L_RP_SUBTRACT_POINTS} {postrow.POST_AUTHOR}" alt="{L_RP_SUBTRACT_POINTS} {postrow.POST_AUTHOR}" /></a><!-- ENDIF --></dd><!-- ENDIF -->
<!-- ENDIF -->
Код: Выделить всё
<table class="tablebg" width="100%" cellspacing="1">
<tr>
<td class="cat" colspan="2"><h4>{L_STATISTICS}</h4></td>
</tr>
<tr>
<td class="row1"><img src="{T_THEME_PATH}/images/whosonline.gif" alt="{L_STATISTICS}" /></td>
<td class="row1" width="100%" valign="middle"><p class="genmed">{TOTAL_POSTS} | {TOTAL_TOPICS} | {TOTAL_USERS} | {NEWEST_USER}</p></td>
</tr>
</table>
Вставить после найденного
Код: Выделить всё
<!-- IF REPUTATION_TOPLIST -->
<br clear="all" />
<table class="tablebg" width="100%" cellspacing="1">
<tr>
<td class="cat"><h4>{L_REPUTATION_TOPLIST}</h4></td>
</tr>
<tr>
<td class="row1" width="100%"><p class="genmed">{L_REPUTATION_TOPLIST_EXPLAIN}: <strong>{REPUTATION_TOPLIST}</strong></p></td>
</tr>
</table>
<!-- ENDIF -->
Код: Выделить всё
<!-- IF S_SHOW_ACTIVITY -->
Вставить перед найденным
Код: Выделить всё
<!-- IF S_REPUTATION -->
<tr>
<td class="gen" align="{S_CONTENT_FLOW_END}" valign="top" nowrap="nowrap">{L_RP_TOTAL_POINTS}: </td>
<td><b class="gen">{REPUTATION}</b></td>
</tr>
<tr>
<td class="gen" align="{S_CONTENT_FLOW_END}" valign="top" nowrap="nowrap">{L_RP_POWER}: </td>
<td><b class="gen">{REP_POWER}</b></td>
</tr>
<!-- ENDIF -->
Код: Выделить всё
<tr>
<th colspan="3">{L_YOUR_DETAILS}</th>
</tr>
Вставить перед найденным
Код: Выделить всё
<!-- IF .reputation_row -->
<tr>
<th colspan="3">{L_RP_RECENT_POINTS}</th>
</tr>
<tr>
<td class="row1" colspan="3">
<table width="100%" cellspacing="1" cellpadding="4">
<tr class="row3">
<td><b class="genmed">{L_RP_POINTS}</b></td>
<td><b class="genmed">{L_RP_COMMENTS}</b></td>
<td><b class="genmed">{L_RP_FROM}</b></td>
<td><b class="genmed">{L_POSTS}</b></td>
</tr>
<!-- BEGIN reputation_row -->
<!-- IF reputation_row.S_ROW_COUNT is even --><tr class="row1"><!-- ELSE --><tr class="row2"><!-- ENDIF -->
<td><span class="genmed">{reputation_row.POINT_IMG}</span></td>
<td><span class="genmed">{reputation_row.COMMENT}</span></td>
<td><span class="genmed">{reputation_row.FROM}</span></td>
<td><span class="genmed"><!-- IF reputation_row.POST_SUBJECT --><a href="{reputation_row.U_POST}">{reputation_row.POST_SUBJECT}</span></a><!-- ELSE -->{L_RP_NA}<!-- ENDIF --></td>
<!-- END reputation_row -->
</tr>
</table>
</td>
</tr>
<!-- ENDIF -->
Код: Выделить всё
<!-- IF S_SELECT_NOTIFY -->
Вставить перед найденным
Код: Выделить всё
<!-- IF S_CAN_HIDE_REPUTATION -->
<tr>
<td class="row1" width="50%"><b class="genmed">{L_RP_HIDE}:</b></td>
<td class="row2"><input type="radio" class="radio" name="hidereputation" value="1"<!-- IF S_HIDE_REPUTATION --> checked="checked"<!-- ENDIF --> /><span class="genmed">{L_YES}</span> <input type="radio" class="radio" name="hidereputation" value="0"<!-- IF not S_HIDE_REPUTATION --> checked="checked"<!-- ENDIF --> /><span class="genmed">{L_NO}</span></td>
</tr>
<!-- ENDIF -->
Код: Выделить всё
<!-- BEGIN custom_fields -->
<br /><b>{postrow.custom_fields.PROFILE_FIELD_NAME}:</b> {postrow.custom_fields.PROFILE_FIELD_VALUE}
<!-- END custom_fields -->
Вставить после найденного
Код: Выделить всё
<!-- IF S_REPUTATION and postrow.S_USER_REPUTATION -->
<!-- IF S_REP_DISPLAY neq 'block' --><br /><strong>{L_RP_TOTAL_POINTS}:</strong> {postrow.REPUTATION_TEXT}<!-- ENDIF -->
<!-- IF S_REP_DISPLAY neq 'text' --><br /><!-- IF postrow.U_VIEW_REP --><a href="{postrow.U_VIEW_REP}" onclick="popup(this.href, 780, 550); return false;" ><!-- ENDIF -->{postrow.REPUTATION_BLOCK}<!-- IF postrow.U_VIEW_REP --></a><!-- ENDIF --><!-- ENDIF -->
<!-- IF postrow.S_GIVE_REPUTATION --><br /><a href="{postrow.U_ADD_POS}"><img src="{T_IMAGES_PATH}reputation/add.png" title="{L_RP_ADD_POINTS} {postrow.POST_AUTHOR}" alt="{L_RP_ADD_POINTS} {postrow.POST_AUTHOR}" /></a><!-- IF postrow.S_GIVE_NEGATIVE--><a href="{postrow.U_ADD_NEG}"><img src="{T_IMAGES_PATH}reputation/subtract.png" title="{L_RP_SUBTRACT_POINTS} {postrow.POST_AUTHOR}" alt="{L_RP_SUBTRACT_POINTS} {postrow.POST_AUTHOR}" /></a><!-- ENDIF --><!-- ENDIF -->
<!-- ENDIF -->
Завершение установки:
Для завершения установки запустите через браузер инсталляционный файл db_install.php по адресу
Код: Выделить всё
http://ваш сайт/db_install.php
после отработки удалить файл с сервера.
Почистить кэш.
Настройки мода находятся по адресу Админка - Модули - Настройка репутации.
Добавлены права доступа - проверьте настройки.
Успешной вам установки и применения.