Dleshka.org
Авторизация

Хак Уровень доверия к пользователю

+15
victor200 24-07-2010 Хаки DLE 1 комментарий


Описание:
Хак добавляет каждому пользователю уровень доверия со стороны сайта. Этот уровень доверия влияет на возможность добавления новостей пользователем. Зависит же уровень доверия от нескольких факторов, таких как: время пребывания пользователя на сайте в качестве зарегистрированного пользователя, количество личных данных введенных в профиле, количество комментариев, количество опубликованных ранее новостей.

Совместимость: теоретически, все версии (тестировалось на 8.3 и 8.5)

Возможности:

* Вычисление уровня доверия к пользователю на основе имеющихся о нем данных в БД.
* Блокировка добавления новостей если уровень доверия пользователя ниже 1 (в коде всё прокомментировано - можно настроить под свое число).
* Вывод уровня доверия в профиле, только пользователю или всем пользователям.
* Вывод уровня доверия в профиле, только пользователю в логин-блоке.

Особенности:

* Никакой дополнительной нагрузки
* Быстрая установка


Установка


1. Открыть файл 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;
}
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
// Уровень доверия
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~


2. Открыть файл languages/Russian/website.lng
После:
'wysiwyg_language' => "ru",




Добавить (тут, то что между "..." можно заменить на свое - в конце этой фразы выводится текущий уровень доверия юзеру) :

// Уровень доверия
'add_err_conf' => "Ваш уровень доверия еще очень низкий, Вы должны заполнить о себе больше информации чтобы мы знали, что Вы не спамер. Чтобы добавить новость Ваш уровень доверия должен достичь 1. сейчас Ваш уровень доверия составляет: ",



Если нужен вывод уровня в профиле:

3. Открыть файл 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']) set_block( "'\\[show_confidence\\](.*?)\\[/show_confidence\\]'si", "" );
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
// Уровень доверия
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~



4. Открыть файл templates/{THEME}/userinfo.tpl

Чтобы выводить уровень только хозяину уровня - В любом месте добавить:

[show_confidence]
Ваш уровень доверия на сайте:
{confidence_level}[/show_confidence]



Чтобы выводить уровень всем, кто смотрит профиль юзера - В любом месте добавить:

Уровень доверия к
{usertitle} : {confidence_level}


Если нужен вывод уровня в логин-панели:

5. Открыть файл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}


Готово.
Информация
Зарегистрируйтесь чтобы комментировать публикацию.
orohimaru2
19 января 2012 18:50
+ 0 -
на 9.3 нероботает
Авторизация