Рейтинг и Сила пользователя для Veppa
Благодаря пользователю Deman1608 с нашего форума, родилась идея создания рейтинга пользователя в CMS Veppa.
Рейтинг состоит из двух основных частей, таких как Рейтинг пользователя и его Скилл — сила пользователя.
Реализация такого рейтинга совсем проста, но это пока что грубый макет разработки и постепенно его нужно будет допиливать и усовершенствовать, ну а пока что перейдем к рассуждению что есть что и непосредственно к самому коду.
Как рассчитывается Рейтинг пользователя и от чего он зависит:
На данный момент рейтинг зависит от голосования на обои.
При голосовании гостем (не авторизованный пользователем) к рейтингу пользователя добавившего обои начисляется рейтинг 0.040, при этом если учитывается что нужно сделать, отнять или прибавить сумму рейтинга.
При голосовании пользователя имеющего уже какой то положительный рейтинг берется сумма его рейтинга делится на 100 и прибавляется к полученному результату 0.100
Рейтинг пользователя/100/0.040
В итоге к рейтингу пользователя добавившему обои прибавляется сумма 0,075, вместо стандартных 0.040
Абсолютно тоже самое делается и с его силой, от силы пользователя зависит сила рейтинга пользователя.
Давайте приступим к установке
Для начала нам нужно в таблице пользователей создать два дополнительных поля
Откройте базу данных, нажмите на таблицу vws_user, затем кликните по кнопке Структура, под полями есть строчка для добавления Поля.
Введите число 2 и выберите добавить после added_by
Поле номер 1:
Название: user_skill
Тип: FLOAT
По умолчанию: Как определено: 0.000
Атрибуты: UNSIGNED
Поле номер 2:
Название: user_rating
Тип: FLOAT
По умолчанию: Как определено: 0.000
нажимаем кнопку сохранить. С базой все, теперь приступим к коду
Откроем файл /sys/app/models/User.php
Заменяем
На это
Открываем файл /sys/app/models/Vote.php
Перед последней фигурной скобкой
Вставляем функцию
Открываем файл /sys/app/models/Thumbgrid.php
Ищем
Меняем на
Ищем
Меняем на
Открываем файл /sys/app/models/IndexController.php
Ищем функцию
Заменяем ее
Теперь при добавлении голоса за картинку, будет добавляться или рейтинг пользователю.
Выводить рейтинг пользователя я пока еще не решил где и как, так как сейчас пока еще тестирую данный рейтинг, но после теста обязательно напишу где и как я его вывел.
Продолжение темы scriptland.com.ua/blog/php/16.html
Рейтинг состоит из двух основных частей, таких как Рейтинг пользователя и его Скилл — сила пользователя.
Реализация такого рейтинга совсем проста, но это пока что грубый макет разработки и постепенно его нужно будет допиливать и усовершенствовать, ну а пока что перейдем к рассуждению что есть что и непосредственно к самому коду.
Как рассчитывается Рейтинг пользователя и от чего он зависит:
На данный момент рейтинг зависит от голосования на обои.
При голосовании гостем (не авторизованный пользователем) к рейтингу пользователя добавившего обои начисляется рейтинг 0.040, при этом если учитывается что нужно сделать, отнять или прибавить сумму рейтинга.
При голосовании пользователя имеющего уже какой то положительный рейтинг берется сумма его рейтинга делится на 100 и прибавляется к полученному результату 0.100
Рейтинг пользователя/100/0.040
3,534 / 100 + 0.040
В итоге к рейтингу пользователя добавившему обои прибавляется сумма 0,075, вместо стандартных 0.040
Абсолютно тоже самое делается и с его силой, от силы пользователя зависит сила рейтинга пользователя.
Давайте приступим к установке
Для начала нам нужно в таблице пользователей создать два дополнительных поля
Откройте базу данных, нажмите на таблицу vws_user, затем кликните по кнопке Структура, под полями есть строчка для добавления Поля.
Введите число 2 и выберите добавить после added_by
Поле номер 1:
Название: user_skill
Тип: FLOAT
По умолчанию: Как определено: 0.000
Атрибуты: UNSIGNED
Поле номер 2:
Название: user_rating
Тип: FLOAT
По умолчанию: Как определено: 0.000
нажимаем кнопку сохранить. С базой все, теперь приступим к коду
Откроем файл /sys/app/models/User.php
Заменяем
'added_by' => 1
На это
'added_by' => 1,
'user_skill' =>1,
'user_rating'=>1
Открываем файл /sys/app/models/Vote.php
Перед последней фигурной скобкой
}
Вставляем функцию
static function SkillRating($UserIdWall, $UserIdRating, $Rate){
//$Rate = +1;
//$RateDwn = $Rate > 0 ? ' + ' : ' - ' ;
if($UserIdRating != 0) {
$sql = self::findOneFrom('User','id = ' . $UserIdRating . '',array());
//$sql_user_skill = 0.101; // получили скилл
$user_skill = $sql->user_skill <= 0.100 ? 0.100 : $sql->user_skill / 100 + 0.100 ;
$user_skill = round($user_skill, 3) ;
//$sql_user_rating = 0.000 ; // получили рейтинг
$user_rating = $sql->user_rating <= 0.040 ? 0.040 : $sql->user_rating / 100 + 0.040 ;
$user_rating = round($user_rating, 3) ;
} else {
$user_skill = 0.100;
$user_rating = 0.040;
}
$sql = self::findOneFrom('User','id = ' . $UserIdWall . '',array());
if($sql) {
$userSkill = $sql->user_skill ;
$userRating = $sql->user_rating ;
// insert new record
$user = new User();
$user->id = $UserIdWall;
if($Rate > 0) {
$user->user_skill = $userSkill + $user_skill / 2;
$user->user_rating = $userRating + $user_rating / 2;
} else {
$user->user_skill = $userSkill - $user_skill / 2;
$user->user_rating = $userRating - $user_rating / 2;
}
$user->save('id');
}
}
Открываем файл /sys/app/models/Thumbgrid.php
Ищем
rate="+1"
Меняем на
rate="+1_' . $cell->added_by . '_' . (AuthUser::$user->id == '' ? 0 : AuthUser::$user->id) . '"
Ищем
rate="-1"
Меняем на
rate="-1_' . $cell->added_by . '_' . (AuthUser::$user->id == '' ? 0 : AuthUser::$user->id) . '"
Открываем файл /sys/app/models/IndexController.php
Ищем функцию
function rate() {
.......
}
Заменяем ее
function rate()
{
//rate wallpaper
$w_id = $_POST['id'];
$rating = $_POST['rate'];
$arr = explode('_', $rating) ;
echo Vote::SkillRating($arr[1], $arr[2], $arr[0]);
echo Vote::vote($w_id, $arr[0]);
exit();
}
Теперь при добавлении голоса за картинку, будет добавляться или рейтинг пользователю.
Выводить рейтинг пользователя я пока еще не решил где и как, так как сейчас пока еще тестирую данный рейтинг, но после теста обязательно напишу где и как я его вывел.
Продолжение темы scriptland.com.ua/blog/php/16.html
0 комментариев