Уровень доверия к пользователю
Представляем вам хак для dle который добавит каждому пользователю уровень доверия со стороны сайта. Данный уровень влияет на возможность добавления новостей пользователем, и этот уровень доверия зависит от нескольких факторов, таких как, время пребывания пользователя на сайте в качестве уже зарегистрированного пользователя, количество заполненных личных данных в своем профиле, количество комментариев или количество опубликованных ранее новостей, также посмотрите и другие у нас хаки для dle возможно вы найдете что-то полезное еще.
Возможности:
- Вычисление уровня доверия к пользователю на основе имеющихся о нем данных в БД.
- Блокировка добавления новостей если уровень доверия пользователя ниже 1 (в коде всё прокомментировано - можно настроить под свое число).
- Вывод уровня доверия в профиле, только пользователю или всем пользователям.
- Вывод уровня доверия, только пользователю в логин-блоке.
- Вывод уровня доверия в комментариях
Особенности:
- Никакой дополнительной нагрузки.
- Быстрая установка.
Расценки уровня доверия:
- Каждый день после регистрации 0.1
- Заполнение информации о себе 0.1
- Загрузка авы 0.5
- Заполнение информации о месте жительства 0.2
- Заполнение имени в профиле 0.2
- Заполнение ICQ в профиле 0.2
- За добавление новости 0.1
- За добавление комментария 0.01
P.S. - Также инструкция есть в архиве!!!
Установка:
Открываем engine/modules/addnews.php, в нем ищем:
if( ! $allow_addnews ) {
Выше вставляем:
$conf_points = array();
$conf_points['regtime'] = round( ( ( $_TIME-$member_id['reg_date'])/864000 ), 2 ); // 0.1 за день с момента регистрации
$conf_points['info'] = strlen($member_id['info']) < 10 ? 0 : 0.1; // 0.1 за зполнение информации о себе
$conf_points['foto'] = ($member_id['foto'] and (file_exists( ROOT_DIR . "/uploads/fotos/" . $member_id['foto'] ))) ? 0.5 : 0; // 0.5 за загрузку авы
$conf_points['land'] = $member_id['land'] == '' ? 0 : 0.2; // 0.2 за зполнение места жительства
$conf_points['name'] = $member_id['fullname'] == '' ? 0 : 0.2; // 0.2 за зполнение имени
$conf_points['icq'] = strlen($member_id['icq']) < 5 ? 0 : 0.1; // 0.1 за зполнение информации об icq
$conf_points['news'] = ( $member_id['news_num']/10 ); // 0.1 за каждую новость
$conf_points['comments'] = ( $member_id['comm_num']/100 ); // 0.01 за каждый комментарий
$confidence_level = array_sum($conf_points);
if( ($confidence_level < 1) && $allow_addnews ) {
$allow_addnews = false;
$lang['add_err_9'] = $lang['add_err_conf'].$confidence_level;
}
Открываем languages/Russian/website.lng, в нем ищем:
'wysiwyg_language' => "ru",
Ниже вставляем:
// Уровень доверия
'add_err_conf' => "Ваш уровень доверия еще очень низкий, Вы должны заполнить о себе больше информации чтобы мы знали, что Вы не спамер. Чтобы добавить новость Ваш уровень доверия должен достичь 1. сейчас Ваш уровень доверия составляет: ",
Открываем engine/modules/profile.php, в нем ищем:
$tpl->set( '{lastdate}', langdate( "j F Y H:i", $row['lastdate'] ) );
Ниже вставляем:
if( $member_id['user_id'] == $row['user_id'] ) {
$conf_points = array();
$conf_points['regtime'] = round( ( ( $_TIME-$member_id['reg_date'])/864000 ), 2 ); // 0.1 за день с момента регистрации
$conf_points['info'] = strlen($member_id['info']) < 10 ? 0 : 0.1; // 0.1 за зполнение информации о себе
$conf_points['foto'] = ($member_id['foto'] and (file_exists( ROOT_DIR . "/uploads/fotos/" . $member_id['foto'] ))) ? 0.5 : 0; // 0.5 за загрузку авы
$conf_points['land'] = $member_id['land'] == '' ? 0 : 0.2; // 0.2 за зполнение места жительства
$conf_points['name'] = $member_id['fullname'] == '' ? 0 : 0.2; // 0.2 за зполнение имени
$conf_points['icq'] = strlen($member_id['icq']) < 5 ? 0 : 0.1; // 0.1 за зполнение информации об icq
$conf_points['news'] = ( $member_id['news_num']/10 ); // 0.1 за каждую новость
$conf_points['comments'] = ( $member_id['comm_num']/100 ); // 0.01 за каждый комментарий
} else {
$conf_points = array();
$conf_points['regtime'] = round( ( ( $_TIME-$row['reg_date'])/864000 ), 2 ); // 0.1 за день с момента регистрации
$conf_points['info'] = strlen($row['info']) < 10 ? 0 : 0.1; // 0.1 за зполнение информации о себе
$conf_points['foto'] = ($row['foto'] and (file_exists( ROOT_DIR . "/uploads/fotos/" . $member_id['foto'] ))) ? 0.5 : 0; // 0.5 за загрузку авы
$conf_points['land'] = $row['land'] == '' ? 0 : 0.2; // 0.2 за зполнение места жительства
$conf_points['name'] = $row['fullname'] == '' ? 0 : 0.2; // 0.2 за зполнение имени
$conf_points['icq'] = strlen($row['icq']) < 5 ? 0 : 0.1; // 0.1 за зполнение информации об icq
$conf_points['news'] = ( $row['news_num']/10 ); // 0.1 за каждую новость
$conf_points['comments'] = ( $row['comm_num']/100 ); // 0.01 за каждый комментарий
}
$tpl->set('{confidence_level}', array_sum($conf_points));
if( $member_id['user_id'] == $row['user_id'] ) $tpl->set_block( "'\\[show_confidence\\](.*?)\\[/show_confidence\\]'si", "\\1" );
else $tpl->set_block( "'\\[show_confidence\\](.*?)\\[/show_confidence\\]'si", "" );
Открываем engine/modules/show.full.php, в нем ищем:
land, icq
Рядом вставляем:
, info
Открываем engine/classes/comments.class.php, в нем ищем: (Для DLE <= 9.0)
else $tpl->set( '{foto}', "{THEME}/images/noavatar.png" );
Ищем: (DLE >= 9.2)
$tpl->set( '{group-name}', $user_group[$row['user_group']]['group_prefix'].$user_group[$row['user_group']]['group_name'].$user_group[$row['user_group']]['group_suffix'] );
Ниже вставляем:
$conf_points = array();
$conf_points['regtime'] = round( ( ( $_TIME-$row['reg_date'])/864000 ), 2 ); // 0.1 за день с момента регистрации
$conf_points['info'] = strlen($row['info']) < 10 ? 0 : 0.1; // 0.1 за зполнение информации о себе
$conf_points['foto'] = ($row['foto'] and (file_exists( ROOT_DIR . "/uploads/fotos/" . $member_id['foto'] ))) ? 0.5 : 0; // 0.5 за загрузку авы
$conf_points['land'] = $row['land'] == '' ? 0 : 0.2; // 0.2 за зполнение места жительства
$conf_points['name'] = $row['fullname'] == '' ? 0 : 0.2; // 0.2 за зполнение имени
$conf_points['icq'] = strlen($row['icq']) < 5 ? 0 : 0.1; // 0.1 за зполнение информации об icq
$conf_points['news'] = ( $row['news_num']/10 ); // 0.1 за каждую новость
$conf_points['comments'] = ( $row['comm_num']/100 ); // 0.01 за каждый комментарий
$tpl->set('{confidence_level}', array_sum($conf_points));
if( $row['is_register'] ) $tpl->set_block( "'\\[show_confidence\\](.*?)\\[/show_confidence\\]'si", "\\1" );
else $tpl->set_block( "'\\[show_confidence\\](.*?)\\[/show_confidence\\]'si", "" );
Только для DLE <= 9.0
Открываем templates/{THEME}/login.tpl в нем ищем:
if ($user_group[$member_id['user_group']]['allow_admin']) {
Выше вставляем:
$conf_points = array();
$conf_points['regtime'] = round( ( ( $_TIME-$member_id['reg_date'])/864000 ), 2 ); // 0.1 за день с момента регистрации
$conf_points['info'] = strlen($member_id['info']) < 10 ? 0 : 0.1; // 0.1 за зполнение информации о себе
$conf_points['foto'] = ($member_id['foto'] and (file_exists( ROOT_DIR . "/uploads/fotos/" . $member_id['foto'] ))) ? 0.5 : 0; // 0.5 за загрузку авы
$conf_points['land'] = $member_id['land'] == '' ? 0 : 0.2; // 0.2 за зполнение места жительства
$conf_points['name'] = $member_id['fullname'] == '' ? 0 : 0.2; // 0.2 за зполнение имени
$conf_points['icq'] = strlen($member_id['icq']) < 5 ? 0 : 0.1; // 0.1 за зполнение информации об icq
$conf_points['news'] = ( $member_id['news_num']/10 ); // 0.1 за каждую новость
$conf_points['comments'] = ( $member_id['comm_num']/100 ); // 0.01 за каждый комментарий
$confidence_level = array_sum($conf_points);
В этом же файле в любом месте вставляем:
Ваш уровень доверия: {$confidence_level}
Только для DLE >= 9.2
Открываем templates/{THEME}/login.tpl в нем в любом месте вставляем:
Ваш уровень доверия: {confidence_level}
Только для DLE >= 9.2
Открываем engine/init.php в нем ищем:
$tpl->set( '{all-pm}', $member_id['pm_all'] );
Ниже вставляем:
$conf_points = array();
$conf_points['regtime'] = round( ( ( $_TIME-$member_id['reg_date'])/864000 ), 2 ); // 0.1 за день с момента регистрации
$conf_points['info'] = strlen($member_id['info']) < 10 ? 0 : 0.1; // 0.1 за зполнение информации о себе
$conf_points['foto'] = ($member_id['foto'] and (file_exists( ROOT_DIR . "/uploads/fotos/" . $member_id['foto'] ))) ? 0.5 : 0; // 0.5 за загрузку авы
$conf_points['land'] = $member_id['land'] == '' ? 0 : 0.2; // 0.2 за зполнение места жительства
$conf_points['name'] = $member_id['fullname'] == '' ? 0 : 0.2; // 0.2 за зполнение имени
$conf_points['icq'] = strlen($member_id['icq']) < 5 ? 0 : 0.1; // 0.1 за зполнение информации об icq
$conf_points['news'] = ( $member_id['news_num']/10 ); // 0.1 за каждую новость
$conf_points['comments'] = ( $member_id['comm_num']/100 ); // 0.01 за каждый комментарий
$confidence_level = array_sum($conf_points);
$tpl->set( '{confidence_level}', $confidence_level );
Открываем templates/{THEME}/comments.tpl,
Чтобы выводить уровень только хозяину уровня - В любом месте добавить:
[show_confidence]Ваш уровень доверия на сайте: {confidence_level}[/show_confidence]
Чтобы выводить уровень всем, кто смотрит профиль юзера - В любом месте добавить:
Уровень доверия: {confidence_level}
Открываем templates/{THEME}/userinfo.tpl,
Чтобы выводить уровень только хозяину уровня - В любом месте добавить:
[show_confidence]Ваш уровень доверия на сайте: {confidence_level}[/show_confidence]
Чтобы выводить уровень всем, кто смотрит профиль юзера - В любом месте добавить:
Уровень доверия к {usertitle} : {confidence_level}
Все!
- Версия DLE: 8.x -10.0
- Категория: Хаки
- Автор: Inrus
- Автор модификации: Qnut
- Источник:
Войдите на сайт
Все собранные средства будут переданы автору этой статьи - DEN
Сумма перевода от 10.00 рублей