mirror of
https://github.com/Oreolek/ifhub.club.git
synced 2024-07-01 05:55:02 +03:00
Ограничение по времени на постинг на стене
This commit is contained in:
parent
ca8ff71d49
commit
b035b10962
|
@ -404,6 +404,7 @@ class ActionProfile extends Action {
|
||||||
}
|
}
|
||||||
|
|
||||||
$oWall=Engine::GetEntity('Wall');
|
$oWall=Engine::GetEntity('Wall');
|
||||||
|
$oWall->_setValidateScenario('add');
|
||||||
$oWall->setWallUserId($this->oUserProfile->getId());
|
$oWall->setWallUserId($this->oUserProfile->getId());
|
||||||
$oWall->setUserId($this->oUserCurrent->getId());
|
$oWall->setUserId($this->oUserCurrent->getId());
|
||||||
$oWall->setText(getRequest('sText'));
|
$oWall->setText(getRequest('sText'));
|
||||||
|
|
|
@ -477,5 +477,41 @@ class ModuleACL extends Module {
|
||||||
return false;
|
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(
|
protected $aValidateRules=array(
|
||||||
array('pid','pid'),
|
array('pid','pid','on'=>array('','add')),
|
||||||
|
array('user_id','time_limit','on'=>array('add')),
|
||||||
);
|
);
|
||||||
|
|
||||||
public function Init() {
|
public function Init() {
|
||||||
parent::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 = ?d }
|
||||||
{ AND pid IS NULL AND 1 = ?d }
|
{ AND pid IS NULL AND 1 = ?d }
|
||||||
{ AND wall_user_id = ?d }
|
{ AND wall_user_id = ?d }
|
||||||
|
{ AND user_id = ?d }
|
||||||
{ AND ip = ? }
|
{ AND ip = ? }
|
||||||
{ AND id = ?d }
|
{ AND id = ?d }
|
||||||
{ 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,
|
(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,
|
(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['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['ip']) ? $aFilter['ip'] : DBSIMPLE_SKIP,
|
||||||
isset($aFilter['id']) ? $aFilter['id'] : DBSIMPLE_SKIP,
|
isset($aFilter['id']) ? $aFilter['id'] : DBSIMPLE_SKIP,
|
||||||
isset($aFilter['id_less']) ? $aFilter['id_less'] : 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']['limit_time_rating'] = 1; // рейтинг, выше которого перестаёт действовать ограничение по времени на отправку инбоксов
|
||||||
$config['acl']['create']['talk_comment']['limit_time'] = 10; // время в секундах между отправкой инбоксов, если 0 то ограничение по времени не будет работать
|
$config['acl']['create']['talk_comment']['limit_time'] = 10; // время в секундах между отправкой инбоксов, если 0 то ограничение по времени не будет работать
|
||||||
$config['acl']['create']['talk_comment']['limit_time_rating'] = 5; // рейтинг, выше которого перестаёт действовать ограничение по времени на отправку инбоксов
|
$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']['comment']['rating'] = -3; // порог рейтинга при котором юзер может голосовать за комментарии
|
||||||
$config['acl']['vote']['blog']['rating'] = -5; // порог рейтинга при котором юзер может голосовать за блог
|
$config['acl']['vote']['blog']['rating'] = -5; // порог рейтинга при котором юзер может голосовать за блог
|
||||||
$config['acl']['vote']['topic']['rating'] = -7; // порог рейтинга при котором юзер может голосовать за топик
|
$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_pid_error' => 'At this message can not be reply',
|
||||||
'wall_add_error' => 'Error adding a post to the wall',
|
'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.
|
* Configs.
|
||||||
*/
|
*/
|
||||||
|
|
|
@ -562,6 +562,7 @@ return array(
|
||||||
*/
|
*/
|
||||||
'wall_add_pid_error' => 'На данное сообщение невозможно ответить',
|
'wall_add_pid_error' => 'На данное сообщение невозможно ответить',
|
||||||
'wall_add_error' => 'Ошибка добавления записи на стены',
|
'wall_add_error' => 'Ошибка добавления записи на стены',
|
||||||
|
'wall_add_time_limit' => 'Вам нельзя слишком часто писать на стене',
|
||||||
/**
|
/**
|
||||||
* Настройки
|
* Настройки
|
||||||
*/
|
*/
|
||||||
|
|
Loading…
Reference in a new issue