1
0
Fork 0
mirror of https://github.com/Oreolek/ifhub.club.git synced 2024-06-16 23:00:51 +03:00

У блогов удален рейтинг

This commit is contained in:
Mzhelskiy Maxim 2014-11-20 15:13:48 +07:00
parent e0dbd6a62e
commit 53f00cfe1e
13 changed files with 14 additions and 201 deletions

View file

@ -57,7 +57,6 @@ class ActionAjax extends Action
{
$this->AddEventPreg('/^vote$/i', '/^comment$/', 'EventVoteComment');
$this->AddEventPreg('/^vote$/i', '/^topic$/', 'EventVoteTopic');
$this->AddEventPreg('/^vote$/i', '/^blog$/', 'EventVoteBlog');
$this->AddEventPreg('/^vote$/i', '/^user$/', 'EventVoteUser');
$this->AddEventPreg('/^vote$/i', '/^get$/', '/^info$/', '/^topic$/', 'EventVoteGetInfoTopic');
@ -1240,67 +1239,6 @@ class ActionAjax extends Action
}
}
/**
* Голосование за блог
*
*/
protected function EventVoteBlog()
{
/**
* Пользователь авторизован?
*/
if (!$this->oUserCurrent) {
$this->Message_AddErrorSingle($this->Lang_Get('need_authorization'), $this->Lang_Get('error'));
return;
}
/**
* Блог существует?
*/
if (!($oBlog = $this->Blog_GetBlogById(getRequestStr('iTargetId', null, 'post')))) {
return $this->EventErrorDebug();
}
/**
* Имеет право на голосование?
*/
if (!$this->ACL_CanVoteBlog($this->oUserCurrent, $oBlog)) {
$this->Message_AddErrorSingle($this->Rbac_GetMsgLast());
return;
}
$iValue = getRequestStr('value', null, 'post');
if (in_array($iValue, array('1', '-1'))) {
$oBlogVote = Engine::GetEntity('Vote');
$oBlogVote->setTargetId($oBlog->getId());
$oBlogVote->setTargetType('blog');
$oBlogVote->setVoterId($this->oUserCurrent->getId());
$oBlogVote->setDirection($iValue);
$oBlogVote->setDate(date("Y-m-d H:i:s"));
$iVal = (float)$this->Rating_VoteBlog($this->oUserCurrent, $oBlog, $iValue);
$oBlogVote->setValue($iVal);
$oBlog->setCountVote($oBlog->getCountVote() + 1);
$this->Hook_Run("vote_{$oBlogVote->getTargetType()}_before",
array('oTarget' => $oBlog, 'oVote' => $oBlogVote, 'iValue' => $iValue));
if ($this->Vote_AddVote($oBlogVote) and $this->Blog_UpdateBlog($oBlog)) {
$this->Hook_Run("vote_{$oBlogVote->getTargetType()}_after",
array('oTarget' => $oBlog, 'oVote' => $oBlogVote, 'iValue' => $iValue));
$this->Viewer_AssignAjax('iCountVote', $oBlog->getCountVote());
$this->Viewer_AssignAjax('iRating', $oBlog->getRating());
$this->Message_AddNoticeSingle($this->Lang_Get('vote.notices.success'), $this->Lang_Get('attention'));
/**
* Добавляем событие в ленту
*/
$this->Stream_write($oBlogVote->getVoterId(), 'vote_blog', $oBlog->getId());
} else {
$this->Message_AddErrorSingle($this->Lang_Get('system_error'), $this->Lang_Get('attention'));
return;
}
} else {
return $this->EventErrorDebug();
}
}
/**
* Голосование за пользователя
*

View file

@ -79,10 +79,9 @@ class ActionBlogs extends Action
$sOrderField = in_array(getRequestStr('sort_by'), array(
'blog_id',
'blog_title',
'blog_rating',
'blog_count_user',
'blog_count_topic'
)) ? getRequestStr('sort_by') : 'blog_rating';
)) ? getRequestStr('sort_by') : 'blog_count_user';
if (is_numeric(getRequestStr('pageNext')) and getRequestStr('pageNext') > 0) {
$iPage = getRequestStr('pageNext');
} else {
@ -155,7 +154,7 @@ class ActionBlogs extends Action
/**
* Получаем список блогов
*/
$aResult = $this->Blog_GetBlogsByFilter($aFilter, array('blog_rating' => 'desc'), 1,
$aResult = $this->Blog_GetBlogsByFilter($aFilter, array('blog_count_user' => 'desc'), 1,
Config::Get('module.blog.per_page'));
$aBlogs = $aResult['collection'];
/**

View file

@ -309,52 +309,6 @@ class ModuleACL extends Module
));
}
/**
* Проверяет может ли пользователь голосовать за конкретный блог
*
* @param ModuleUser_EntityUser $oUser Пользователь
* @param ModuleBlog_EntityBlog $oBlog Блог
* @return bool
*/
public function CanVoteBlog($oUser, $oBlog)
{
$that = $this; // fix for PHP < 5.4
return $this->Rbac_IsAllowUser($oUser, 'vote_blog', array(
'callback' => function ($oUser, $aParams) use ($that, $oBlog) {
if (!$oUser) {
return false;
}
/**
* Голосует за свой блог?
*/
if ($oBlog->getOwnerId() == $oUser->getId()) {
return $that->Lang_Get('vote.notices.error_self');
}
/**
* Уже голосовал?
*/
if ($oBlogVote = $that->Vote_GetVote($oBlog->getId(), 'blog', $oUser->getId())) {
return $that->Lang_Get('vote.notices.error_already_voted');
}
/**
* Если блог закрытый, проверяем является ли пользователь его читателем
*/
if ($oBlog->getType() == 'close') {
$oBlogUser = $that->Blog_GetBlogUserByBlogIdAndUserId($oBlog->getId(), $oUser->getId());
if (!$oBlogUser || $oBlogUser->getUserRole() < ModuleBlog::BLOG_USER_ROLE_GUEST) {
return $that->Lang_Get('blog.vote.notices.error_close');
}
} elseif ($oBlog->getType() == 'personal') {
return $that->Lang_Get('vote.notices.error_acl');
}
if ($oUser->getRating() < Config::Get('acl.vote.blog.rating')) {
return $that->Lang_Get('vote.notices.error_acl');
}
return true;
}
));
}
/**
* Проверяет может ли пользователь голосовать за конкретный топик
*

View file

@ -768,7 +768,7 @@ class ModuleBlog extends Module
*/
public function GetBlogsRating($iCurrPage, $iPerPage)
{
return $this->GetBlogsByFilter(array('exclude_type' => 'personal'), array('blog_rating' => 'desc'), $iCurrPage,
return $this->GetBlogsByFilter(array('exclude_type' => 'personal'), array('blog_count_user' => 'desc'), $iCurrPage,
$iPerPage);
}
@ -799,7 +799,7 @@ class ModuleBlog extends Module
public function GetBlogsRatingSelf($sUserId, $iLimit)
{
$aResult = $this->GetBlogsByFilter(array('exclude_type' => 'personal', 'user_owner_id' => $sUserId),
array('blog_rating' => 'desc'), 1, $iLimit);
array('blog_count_user' => 'desc'), 1, $iLimit);
return $aResult['collection'];
}

View file

@ -126,16 +126,6 @@ class ModuleBlog_EntityBlog extends Entity
return $this->_getDataOne('blog_date_edit');
}
/**
* Возвращает рейтинг блога
*
* @return string
*/
public function getRating()
{
return number_format(round($this->_getDataOne('blog_rating'), 2), 2, '.', '');
}
/**
* Возврщает количество проголосовавших за блог
*
@ -359,16 +349,6 @@ class ModuleBlog_EntityBlog extends Entity
$this->_aData['blog_date_edit'] = $data;
}
/**
* Устанавливает рейтинг блога
*
* @param float $data
*/
public function setRating($data)
{
$this->_aData['blog_rating'] = $data;
}
/**
* Устаналивает количество проголосовавших
*

View file

@ -70,7 +70,6 @@ class ModuleBlog_MapperBlog extends Mapper
blog_description= ?,
blog_type= ?,
blog_date_edit= ?,
blog_rating= ?f,
blog_count_vote = ?d,
blog_count_user= ?d,
blog_count_topic= ?d,
@ -81,7 +80,7 @@ class ModuleBlog_MapperBlog extends Mapper
blog_id = ?d
";
$res = $this->oDb->query($sql, $oBlog->getTitle(), $oBlog->getDescription(), $oBlog->getType(),
$oBlog->getDateEdit(), $oBlog->getRating(), $oBlog->getCountVote(), $oBlog->getCountUser(),
$oBlog->getDateEdit(), $oBlog->getCountVote(), $oBlog->getCountUser(),
$oBlog->getCountTopic(), $oBlog->getLimitRatingTopic(), $oBlog->getUrl(), $oBlog->getAvatar(),
$oBlog->getId());
return $this->IsSuccessful($res);
@ -107,7 +106,7 @@ class ModuleBlog_MapperBlog extends Mapper
foreach ($aOrder as $key => $value) {
$value = (string)$value;
if (!in_array($key,
array('blog_id', 'blog_title', 'blog_type', 'blog_rating', 'blog_count_user', 'blog_date_add'))
array('blog_id', 'blog_title', 'blog_type', 'blog_count_user', 'blog_date_add'))
) {
unset($aOrder[$key]);
} elseif (in_array($value, array('asc', 'desc'))) {
@ -393,7 +392,7 @@ class ModuleBlog_MapperBlog extends Mapper
" . Config::Get('db.table.blog') . " as b
WHERE
b.blog_type<>'personal'
ORDER by b.blog_rating desc
ORDER by b.blog_count_user desc
LIMIT ?d, ?d ";
$aReturn = array();
if ($aRows = $this->oDb->selectPage($iCount, $sql, ($iCurrPage - 1) * $iPerPage, $iPerPage)) {
@ -424,7 +423,7 @@ class ModuleBlog_MapperBlog extends Mapper
bu.blog_id = b.blog_id
AND
b.blog_type<>'personal'
ORDER by b.blog_rating desc
ORDER by b.blog_count_user desc
LIMIT 0, ?d
;
";
@ -454,7 +453,7 @@ class ModuleBlog_MapperBlog extends Mapper
b.user_owner_id = ?d
AND
b.blog_type<>'personal'
ORDER by b.blog_rating desc
ORDER by b.blog_count_user desc
LIMIT 0, ?d
;";
$aReturn = array();
@ -555,7 +554,7 @@ class ModuleBlog_MapperBlog extends Mapper
*/
public function GetBlogsByFilter($aFilter, $aOrder, &$iCount, $iCurrPage, $iPerPage)
{
$aOrderAllow = array('blog_id', 'blog_title', 'blog_rating', 'blog_count_user', 'blog_count_topic');
$aOrderAllow = array('blog_id', 'blog_title', 'blog_count_user', 'blog_count_topic');
$sOrder = '';
foreach ($aOrder as $key => $value) {
if (!in_array($key, $aOrderAllow)) {

View file

@ -138,44 +138,6 @@ class ModuleRating extends Module
return $iDeltaRating;
}
/**
* Расчет рейтинга и силы при голосовании за блог
*
* @param ModuleUser_EntityUser $oUser Объект пользователя, который голосует
* @param ModuleBlog_EntityBlog $oBlog Объект блога
* @param int $iValue
* @return int
*/
public function VoteBlog(ModuleUser_EntityUser $oUser, ModuleBlog_EntityBlog $oBlog, $iValue)
{
/**
* Устанавливаем рейтинг блога, используя логарифмическое распределение
*/
$skill = $oUser->getSkill();
$iMinSize = 1.13;
$iMaxSize = 15;
$iSizeRange = $iMaxSize - $iMinSize;
$iMinCount = log(0 + 1);
$iMaxCount = log(500 + 1);
$iCountRange = $iMaxCount - $iMinCount;
if ($iCountRange == 0) {
$iCountRange = 1;
}
if ($skill > 50 and $skill < 200) {
$skill_new = $skill / 20;
} elseif ($skill >= 200) {
$skill_new = $skill / 10;
} else {
$skill_new = $skill / 50;
}
$iDelta = $iMinSize + (log($skill_new + 1) - $iMinCount) * ($iSizeRange / $iCountRange);
/**
* Сохраняем рейтинг
*/
$oBlog->setRating($oBlog->getRating() + $iValue * $iDelta);
return $iValue * $iDelta;
}
/**
* Расчет рейтинга и силы при голосовании за пользователя
*

View file

@ -104,7 +104,6 @@ $config['acl']['create']['wall']['limit_time_rating'] = 0; // рейтинг,
$config['acl']['update']['comment']['rating'] = -5; // порог рейтинга при котором юзер может редактировать комментарии
$config['acl']['update']['comment']['limit_time'] = 60 * 3; // время в секундах после создания комментария, когда можно его отредактировать, если 0 то ограничение по времени не будет работать
$config['acl']['vote']['comment']['rating'] = -3; // порог рейтинга при котором юзер может голосовать за комментарии
$config['acl']['vote']['blog']['rating'] = -5; // порог рейтинга при котором юзер может голосовать за блог
$config['acl']['vote']['topic']['rating'] = -7; // порог рейтинга при котором юзер может голосовать за топик
$config['acl']['vote']['user']['rating'] = -1; // порог рейтинга при котором юзер может голосовать за пользователя
$config['acl']['vote']['topic']['limit_time'] = 60 * 60 * 24 * 20; // ограничение времени голосования за топик

View file

@ -20,10 +20,9 @@
sSortName = 'sort-blog-list'
sSortSearchType = 'blogs'
aSortList = [
[ name => 'blog_rating', text => $aLang.sort.by_rating, order => 'asc' ],
[ name => 'blog_title', text => $aLang.sort.by_title ],
[ name => 'blog_count_user', text => $aLang.blog.sort.by_users ],
[ name => 'blog_count_topic', text => $aLang.blog.sort.by_topics ]
[ name => 'blog_count_topic', text => $aLang.blog.sort.by_topics ],
[ name => 'blog_title', text => $aLang.sort.by_title ]
]}
<div class="js-search-ajax-blog">

View file

@ -385,13 +385,6 @@ jQuery(document).ready(function($){
*/
ls.blog.init();
// Голосование за блог
$('.js-vote-blog').vote({
urls: {
vote: aRouter['ajax'] + 'vote/blog/'
}
});
// Приглашение пользователей в блог
$('.js-user-list-add-blog-invite').lsBlogInvites();

View file

@ -18,7 +18,8 @@
<a href="{$oBlog->getUrlFull()}">{$oBlog->getTitle()|escape}</a>
<p>{lang 'blog.blocks.blogs.item.rating'}: <strong>{$oBlog->getRating()}</strong></p>
<p>{lang 'blog.users.readers_total'}: <strong>{$oBlog->getCountUser()}</strong></p>
<p>{lang 'blog.topics_total'}: <strong>{$oBlog->getCountTopic()}</strong></p>
</li>
{/foreach}
</ul>

View file

@ -27,7 +27,6 @@
{* Информация *}
{$info = [
[ 'label' => "{$aLang.blog.users.readers_total}:", 'content' => "<span class=\"js-blog-users-count\" data-blog-id=\"{$blog->getId()}\">{$blog->getCountUser()}</span>" ],
[ 'label' => "{$aLang.vote.rating}:", 'content' => $blog->getRating() ],
[ 'label' => "{$aLang.blog.topics_total}:", 'content' => $blog->getCountTopic() ]
]}

View file

@ -28,16 +28,6 @@
{* Блог *}
<div class="{$component} {mod name=$component mods=$smarty.local.mods} {$smarty.local.classes}" data-id="{$blog->getId()}" {$smarty.local.attributes}>
<header class="{$component}-header">
{* Голосование *}
{block 'blog_vote'}
{include 'components/vote/vote.tpl'
classes = 'js-vote-blog'
mods = 'large'
target = $blog
isLocked = $isBlogAdmin
showLabel = true}
{/block}
{* Заголовок *}
<h2 class="page-header blog-title">
{if $blog->getType() == 'close'}