mirror of
https://github.com/Oreolek/ifhub.club.git
synced 2024-06-26 03:30:48 +03:00
Ограничение по времени на постинг на стене
This commit is contained in:
parent
ca8ff71d49
commit
b035b10962
|
@ -404,6 +404,7 @@ class ActionProfile extends Action {
|
|||
}
|
||||
|
||||
$oWall=Engine::GetEntity('Wall');
|
||||
$oWall->_setValidateScenario('add');
|
||||
$oWall->setWallUserId($this->oUserProfile->getId());
|
||||
$oWall->setUserId($this->oUserCurrent->getId());
|
||||
$oWall->setText(getRequest('sText'));
|
||||
|
|
|
@ -475,7 +475,43 @@ class ModuleACL extends Module {
|
|||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Проверка на ограничение по времени на постинг на стене
|
||||
*
|
||||
* @param $oUser
|
||||
* @param $oWall
|
||||
* @return bool
|
||||
*/
|
||||
public function CanAddWallTime($oUser,$oWall) {
|
||||
// Для администраторов ограничение по времени не действует
|
||||
if($oUser->isAdministrator()
|
||||
or Config::Get('acl.create.wall.limit_time')==0
|
||||
or $oUser->getRating()>=Config::Get('acl.create.wall.limit_time_rating')) {
|
||||
return true;
|
||||
}
|
||||
if ($oWall->getUserId()==$oWall->getWallUserId()) {
|
||||
return true;
|
||||
}
|
||||
/**
|
||||
* Получаем последнее сообщение
|
||||
*/
|
||||
$aWall=$this->Wall_GetWall(array('user_id'=>$oWall->getUserId()),array('id'=>'desc'),1,1,array());
|
||||
/**
|
||||
* Если сообщений нет
|
||||
*/
|
||||
if($aWall['count']==0){
|
||||
return true;
|
||||
}
|
||||
|
||||
$oWallLast = array_shift($aWall['collection']);
|
||||
$sDate = strtotime($oWallLast->getDateAdd());
|
||||
if($sDate and ((time()-$sDate)<Config::Get('acl.create.wall.limit_time'))) {
|
||||
return false;
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
}
|
||||
?>
|
|
@ -21,12 +21,29 @@ class ModuleWall_EntityWall extends Entity {
|
|||
* Определяем правила валидации
|
||||
*/
|
||||
protected $aValidateRules=array(
|
||||
array('pid','pid'),
|
||||
array('pid','pid','on'=>array('','add')),
|
||||
array('user_id','time_limit','on'=>array('add')),
|
||||
);
|
||||
|
||||
public function Init() {
|
||||
parent::Init();
|
||||
$this->aValidateRules[]=array('text','string','max'=>Config::Get('module.wall.text_max'),'min'=>Config::Get('module.wall.text_min'),'allowEmpty'=>false);
|
||||
$this->aValidateRules[]=array('text','string','max'=>Config::Get('module.wall.text_max'),'min'=>Config::Get('module.wall.text_min'),'allowEmpty'=>false,'on'=>array('','add'));
|
||||
}
|
||||
/**
|
||||
* Проверка на ограничение по времени
|
||||
*
|
||||
* @param $sValue
|
||||
* @param $aParams
|
||||
*
|
||||
* @return bool
|
||||
*/
|
||||
public function ValidateTimeLimit($sValue,$aParams) {
|
||||
if ($oUser=$this->User_GetUserById($this->getUserId())) {
|
||||
if ($this->ACL_CanAddWallTime($oUser,$this)) {
|
||||
return true;
|
||||
}
|
||||
}
|
||||
return $this->Lang_Get('wall_add_time_limit');
|
||||
}
|
||||
/**
|
||||
* Валидация родительского сообщения
|
||||
|
|
|
@ -64,6 +64,7 @@ class ModuleWall_MapperWall extends Mapper {
|
|||
{ AND pid = ?d }
|
||||
{ AND pid IS NULL AND 1 = ?d }
|
||||
{ AND wall_user_id = ?d }
|
||||
{ AND user_id = ?d }
|
||||
{ AND ip = ? }
|
||||
{ AND id = ?d }
|
||||
{ AND id < ?d }
|
||||
|
@ -76,6 +77,7 @@ class ModuleWall_MapperWall extends Mapper {
|
|||
(isset($aFilter['pid']) and !is_null($aFilter['pid'])) ? $aFilter['pid'] : DBSIMPLE_SKIP,
|
||||
(array_key_exists('pid',$aFilter) and is_null($aFilter['pid'])) ? 1 : DBSIMPLE_SKIP,
|
||||
isset($aFilter['wall_user_id']) ? $aFilter['wall_user_id'] : DBSIMPLE_SKIP,
|
||||
isset($aFilter['user_id']) ? $aFilter['user_id'] : DBSIMPLE_SKIP,
|
||||
isset($aFilter['ip']) ? $aFilter['ip'] : DBSIMPLE_SKIP,
|
||||
isset($aFilter['id']) ? $aFilter['id'] : DBSIMPLE_SKIP,
|
||||
isset($aFilter['id_less']) ? $aFilter['id_less'] : DBSIMPLE_SKIP,
|
||||
|
|
|
@ -153,6 +153,8 @@ $config['acl']['create']['talk']['limit_time'] = 300; // время в
|
|||
$config['acl']['create']['talk']['limit_time_rating'] = 1; // рейтинг, выше которого перестаёт действовать ограничение по времени на отправку инбоксов
|
||||
$config['acl']['create']['talk_comment']['limit_time'] = 10; // время в секундах между отправкой инбоксов, если 0 то ограничение по времени не будет работать
|
||||
$config['acl']['create']['talk_comment']['limit_time_rating'] = 5; // рейтинг, выше которого перестаёт действовать ограничение по времени на отправку инбоксов
|
||||
$config['acl']['create']['wall']['limit_time'] = 20; // рейтинг, выше которого перестаёт действовать ограничение по времени на отправку сообщений на стену
|
||||
$config['acl']['create']['wall']['limit_time_rating'] = 0; // рейтинг, выше которого перестаёт действовать ограничение по времени на отправку сообщений на стену
|
||||
$config['acl']['vote']['comment']['rating'] = -3; // порог рейтинга при котором юзер может голосовать за комментарии
|
||||
$config['acl']['vote']['blog']['rating'] = -5; // порог рейтинга при котором юзер может голосовать за блог
|
||||
$config['acl']['vote']['topic']['rating'] = -7; // порог рейтинга при котором юзер может голосовать за топик
|
||||
|
|
|
@ -562,6 +562,7 @@ return array(
|
|||
*/
|
||||
'wall_add_pid_error' => 'At this message can not be reply',
|
||||
'wall_add_error' => 'Error adding a post to the wall',
|
||||
'wall_add_time_limit' => 'You can\'t send post on wall a frequent rate',
|
||||
/**
|
||||
* Configs.
|
||||
*/
|
||||
|
|
|
@ -562,6 +562,7 @@ return array(
|
|||
*/
|
||||
'wall_add_pid_error' => 'На данное сообщение невозможно ответить',
|
||||
'wall_add_error' => 'Ошибка добавления записи на стены',
|
||||
'wall_add_time_limit' => 'Вам нельзя слишком часто писать на стене',
|
||||
/**
|
||||
* Настройки
|
||||
*/
|
||||
|
|
Loading…
Reference in a new issue