1
0
Fork 0
mirror of https://github.com/Oreolek/ifhub.club.git synced 2024-06-26 03:30:48 +03:00

Контроль времени между добавляемыми комментариями к инбоксам.

This commit is contained in:
Alexey Kachayev 2009-11-04 18:24:21 +00:00
parent 6f3447ab3b
commit 3d05cf49bb
4 changed files with 48 additions and 8 deletions

View file

@ -501,7 +501,14 @@ class ActionTalk extends Action {
if (!($oTalkUser=$this->Talk_GetTalkUser($oTalk->getId(),$this->oUserCurrent->getId()))) {
$this->Message_AddErrorSingle($this->Lang_Get('system_error'),$this->Lang_Get('error'));
return;
}
}
/**
* Проверяем разрешено ли отправлять инбокс по времени
*/
if (!$this->ACL_CanPostTalkCommentTime($this->oUserCurrent)) {
$this->Message_AddErrorSingle($this->Lang_Get('talk_time_limit'),$this->Lang_Get('error'));
return false;
}
/**
* Проверяем текст комментария
*/

View file

@ -149,6 +149,38 @@ class LsACL extends Module {
}
return true;
}
/**
* Проверяет может ли пользователь создавать комментарии к инбоксу по времени
*
* @param Entity_User $oUser
* @return bool
*/
public function CanPostTalkCommentTime(UserEntity_User $oUser) {
// Для администраторов ограничение по времени не действует
if($oUser->isAdministrator()
or Config::Get('acl.create.talk_comment.limit_time')==0
or $oUser->getRating()>=Config::Get('acl.create.talk_comment.limit_time_rating'))
return true;
/**
* Проверяем, если топик опубликованный меньше чем acl.create.topic.limit_time секунд назад
*/
$aTalkComments=$this->Comment_GetCommentsByUserId($oUser->getId(),'talk',1,1);
/**
* Если комментариев не было
*/
if(!is_array($aTalkComments) or $aTalkComments['count']==0){
return true;
}
$oComment = array_shift($aTalkComments['collection']);
$sDate = strtotime($oComment->getDate());
if($sDate and ((time()-$sDate)<Config::Get('acl.create.talk_comment.limit_time'))) {
return false;
}
return true;
}
/**
* Проверяет может ли пользователь создавать комментарии используя HTML

View file

@ -259,11 +259,11 @@ class LsComment extends Module {
/**
* Получить комменты по юзеру
*
* @param unknown_type $sId
* @param unknown_type $sTargetType
* @param unknown_type $iPage
* @param unknown_type $iPerPage
* @return unknown
* @param string $sId
* @param string $sTargetType
* @param int $iPage
* @param int $iPerPage
* @return array
*/
public function GetCommentsByUserId($sId,$sTargetType,$iPage,$iPerPage) {
/**

View file

@ -130,8 +130,9 @@ $config['acl']['create']['comment']['limit_time'] = 10; // время
$config['acl']['create']['comment']['limit_time_rating'] = -1; // рейтинг, выше которого перестаёт действовать ограничение по времени на постинг комментов. Не имеет смысла при $config['acl']['create']['comment']['limit_time']=0
$config['acl']['create']['topic']['limit_time'] = 240;// время в секундах между созданием записей, если 0 то ограничение по времени не будет работать
$config['acl']['create']['topic']['limit_time_rating'] = 5; // рейтинг, выше которого перестаёт действовать ограничение по времени на создание записей
$config['acl']['create']['talk']['limit_time'] = 10; // время в секундах между отправкой инбоксов, если 0 то ограничение по времени не будет работать
$config['acl']['create']['talk']['limit_time_rating'] = 5; // рейтинг, выше которого перестаёт действовать ограничение по времени на отправку инбоксов
$config['acl']['create']['talk_comment']['limit_time'] = 10; // время в секундах между отправкой инбоксов, если 0 то ограничение по времени не будет работать
$config['acl']['create']['talk_comment']['limit_time_rating'] = 5; // рейтинг, выше которого перестаёт действовать ограничение по времени на отправку инбоксов
$config['acl']['vote']['comment']['rating'] = -3; // порог рейтинга при котором юзер может голосовать за комментарии
$config['acl']['vote']['comment']['rating'] = -3; // порог рейтинга при котором юзер может голосовать за комментарии
$config['acl']['vote']['blog']['rating'] = -5; // порог рейтинга при котором юзер может голосовать за блог
$config['acl']['vote']['topic']['rating'] = -7; // порог рейтинга при котором юзер может голосовать за топик