mirror of
https://github.com/Oreolek/ifhub.club.git
synced 2024-06-16 23:00:51 +03:00
У блогов удален рейтинг
This commit is contained in:
parent
e0dbd6a62e
commit
53f00cfe1e
|
@ -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();
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Голосование за пользователя
|
||||
*
|
||||
|
|
|
@ -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'];
|
||||
/**
|
||||
|
|
|
@ -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;
|
||||
}
|
||||
));
|
||||
}
|
||||
|
||||
/**
|
||||
* Проверяет может ли пользователь голосовать за конкретный топик
|
||||
*
|
||||
|
|
|
@ -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'];
|
||||
}
|
||||
|
||||
|
|
|
@ -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;
|
||||
}
|
||||
|
||||
/**
|
||||
* Устаналивает количество проголосовавших
|
||||
*
|
||||
|
|
|
@ -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)) {
|
||||
|
|
|
@ -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;
|
||||
}
|
||||
|
||||
/**
|
||||
* Расчет рейтинга и силы при голосовании за пользователя
|
||||
*
|
||||
|
|
|
@ -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; // ограничение времени голосования за топик
|
||||
|
|
|
@ -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">
|
||||
|
|
|
@ -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();
|
||||
|
||||
|
|
|
@ -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>
|
|
@ -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() ]
|
||||
]}
|
||||
|
||||
|
|
|
@ -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'}
|
||||
|
|
Loading…
Reference in a new issue