ModuleACL
Package | modules.acl |
---|---|
Inheritance | class ModuleACL » Module » LsObject |
Since | 1.0 |
Source Code | /classes/modules/acl/ACL.class.php |
Protected Properties
Property | Type | Description | Defined By |
---|---|---|---|
bIsInit | bool | Указывает на то, была ли проведенна инициализация модуля | Module |
oEngine | Engine | Объект ядра | Module |
Public Methods
Method | Description | Defined By |
---|---|---|
CanAddTopic() | Проверяет может ли пользователь создавать топики в определенном блоге | ModuleACL |
CanAddWallTime() | Проверка на ограничение по времени на постинг на стене | ModuleACL |
CanCreateBlog() | Проверяет может ли пользователь создавать блоги | ModuleACL |
CanDeleteComment() | Проверяет может ли пользователь удалить комментарий | ModuleACL |
CanPostComment() | Проверяет может ли пользователь создавать комментарии | ModuleACL |
CanPostCommentTime() | Проверяет может ли пользователь создавать комментарии по времени(например ограничение максимум 1 коммент в 5 минут) | ModuleACL |
CanPostTalkCommentTime() | Проверяет может ли пользователь создавать комментарии к инбоксу по времени | ModuleACL |
CanPostTopicTime() | Проверяет может ли пользователь создавать топик по времени | ModuleACL |
CanSendInvite() | Проверяет можно ли юзеру слать инвайты | ModuleACL |
CanSendTalkTime() | Проверяет может ли пользователь отправить инбокс по времени | ModuleACL |
CanUseHtmlInComment() | Проверяет может ли пользователь создавать комментарии используя HTML | ModuleACL |
CanVoteBlog() | Проверяет может ли пользователь голосовать за конкретный блог | ModuleACL |
CanVoteComment() | Проверяет может ли пользователь голосовать за конкретный комментарий | ModuleACL |
CanVoteTopic() | Проверяет может ли пользователь голосовать за конкретный топик | ModuleACL |
CanVoteUser() | Проверяет может ли пользователь голосовать за конкретного пользователя | ModuleACL |
Init() | Инициализация модуля | ModuleACL |
IsAllowAdminBlog() | Проверяет можно или нет пользователю управлять пользователями блога | ModuleACL |
IsAllowBlog() | Проверяет можно или нет юзеру постить в данный блог | ModuleACL |
IsAllowDeleteBlog() | Проверяет можно или нет пользователю удалять данный блог | ModuleACL |
IsAllowDeleteTopic() | Проверяет можно или нет пользователю удалять данный топик | ModuleACL |
IsAllowEditBlog() | Проверяет можно или нет пользователю редактировать данный блог | ModuleACL |
IsAllowEditTopic() | Проверяет можно или нет пользователю редактировать данный топик | ModuleACL |
IsAllowPublishIndex() | Проверяет может ли пользователь публиковать на главной | ModuleACL |
SetInit() | Помечает модуль как инициализированный | Module |
Shutdown() | Метод срабатывает при завершении работы ядра | Module |
__call() | Ставим хук на вызов неизвестного метода и считаем что хотели вызвать метод какого либо модуля | Module |
__construct() | При создании модуля передаем объект ядра | Module |
isInit() | Возвращает значение флага инициализации модуля | Module |
Protected Methods
Method | Description | Defined By |
---|---|---|
__clone() | Блокируем копирование/клонирование объекта | Module |
Method Details
public bool CanAddTopic(ModuleUser_EntityUser $oUser, ModuleBlog_EntityBlog $oBlog)
| ||
$oUser | ModuleUser_EntityUser | Пользователь |
$oBlog | ModuleBlog_EntityBlog | Блог |
{return} | bool |
public function CanAddTopic(ModuleUser_EntityUser $oUser, ModuleBlog_EntityBlog $oBlog) {
/**
* Если юзер является создателем блога то разрешаем ему постить
*/
if ($oUser->getId()==$oBlog->getOwnerId()) {
return true;
}
/**
* Если рейтинг юзера больше либо равен порогу постинга в блоге то разрешаем постинг
*/
if ($oUser->getRating()>=$oBlog->getLimitRatingTopic()) {
return true;
}
return false;
}
Проверяет может ли пользователь создавать топики в определенном блоге
public bool CanAddWallTime(ModuleUser_EntityUser $oUser, ModuleWall_EntityWall $oWall)
| ||
$oUser | ModuleUser_EntityUser | Пользователь |
$oWall | ModuleWall_EntityWall | Объект сообщения на стене |
{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;
}
Проверка на ограничение по времени на постинг на стене
public bool CanCreateBlog(ModuleUser_EntityUser $oUser)
| ||
$oUser | ModuleUser_EntityUser | Пользователь |
{return} | bool |
public function CanCreateBlog(ModuleUser_EntityUser $oUser) {
if ($oUser->getRating()>=Config::Get('acl.create.blog.rating')) {
return true;
}
return false;
}
Проверяет может ли пользователь создавать блоги
public bool CanDeleteComment(ModuleUser_EntityUser $oUser)
| ||
$oUser | ModuleUser_EntityUser | Пользователь |
{return} | bool |
public function CanDeleteComment($oUser) {
if (!$oUser || !$oUser->isAdministrator()) {
return false;
}
return true;
}
Проверяет может ли пользователь удалить комментарий
public bool CanPostComment(ModuleUser_EntityUser $oUser)
| ||
$oUser | ModuleUser_EntityUser | Пользователь |
{return} | bool |
public function CanPostComment(ModuleUser_EntityUser $oUser) {
if ($oUser->getRating()>=Config::Get('acl.create.comment.rating')) {
return true;
}
return false;
}
Проверяет может ли пользователь создавать комментарии
public bool CanPostCommentTime(ModuleUser_EntityUser $oUser)
| ||
$oUser | ModuleUser_EntityUser | Пользователь |
{return} | bool |
public function CanPostCommentTime(ModuleUser_EntityUser $oUser) {
if (Config::Get('acl.create.comment.limit_time')>0 and $oUser->getDateCommentLast()) {
$sDateCommentLast=strtotime($oUser->getDateCommentLast());
if ($oUser->getRating()<Config::Get('acl.create.comment.limit_time_rating') and ((time()-$sDateCommentLast)<Config::Get('acl.create.comment.limit_time'))) {
return false;
}
}
return true;
}
Проверяет может ли пользователь создавать комментарии по времени(например ограничение максимум 1 коммент в 5 минут)
public bool CanPostTalkCommentTime(ModuleUser_EntityUser $oUser)
| ||
$oUser | ModuleUser_EntityUser | Пользователь |
{return} | bool |
public function CanPostTalkCommentTime(ModuleUser_EntityUser $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;
}
Проверяет может ли пользователь создавать комментарии к инбоксу по времени
public bool CanPostTopicTime(ModuleUser_EntityUser $oUser)
| ||
$oUser | ModuleUser_EntityUser | Пользователь |
{return} | bool |
public function CanPostTopicTime(ModuleUser_EntityUser $oUser) {
// Для администраторов ограничение по времени не действует
if($oUser->isAdministrator()
or Config::Get('acl.create.topic.limit_time')==0
or $oUser->getRating()>=Config::Get('acl.create.topic.limit_time_rating'))
return true;
/**
* Проверяем, если топик опубликованный меньше чем acl.create.topic.limit_time секунд назад
*/
$aTopics=$this->Topic_GetLastTopicsByUserId($oUser->getId(),Config::Get('acl.create.topic.limit_time'));
if(isset($aTopics['count']) and $aTopics['count']>0){
return false;
}
return true;
}
Проверяет может ли пользователь создавать топик по времени
public bool CanSendInvite(ModuleUser_EntityUser $oUser)
| ||
$oUser | ModuleUser_EntityUser | Пользователь |
{return} | bool |
public function CanSendInvite(ModuleUser_EntityUser $oUser) {
if ($this->User_GetCountInviteAvailable($oUser)==0) {
return false;
}
return true;
}
Проверяет можно ли юзеру слать инвайты
public bool CanSendTalkTime(ModuleUser_EntityUser $oUser)
| ||
$oUser | ModuleUser_EntityUser | Пользователь |
{return} | bool |
public function CanSendTalkTime(ModuleUser_EntityUser $oUser) {
// Для администраторов ограничение по времени не действует
if($oUser->isAdministrator()
or Config::Get('acl.create.talk.limit_time')==0
or $oUser->getRating()>=Config::Get('acl.create.talk.limit_time_rating'))
return true;
/**
* Проверяем, если топик опубликованный меньше чем acl.create.topic.limit_time секунд назад
*/
$aTalks=$this->Talk_GetLastTalksByUserId($oUser->getId(),Config::Get('acl.create.talk.limit_time'));
if(isset($aTalks['count']) and $aTalks['count']>0){
return false;
}
return true;
}
Проверяет может ли пользователь отправить инбокс по времени
public bool CanUseHtmlInComment(ModuleUser_EntityUser $oUser)
| ||
$oUser | ModuleUser_EntityUser | Пользователь |
{return} | bool |
public function CanUseHtmlInComment(ModuleUser_EntityUser $oUser) {
return true;
}
Проверяет может ли пользователь создавать комментарии используя HTML
public bool CanVoteBlog(ModuleUser_EntityUser $oUser, ModuleBlog_EntityBlog $oBlog)
| ||
$oUser | ModuleUser_EntityUser | Пользователь |
$oBlog | ModuleBlog_EntityBlog | Блог |
{return} | bool |
public function CanVoteBlog(ModuleUser_EntityUser $oUser, ModuleBlog_EntityBlog $oBlog) {
/**
* Если блог закрытый, проверяем является ли пользователь его читателем
*/
if($oBlog->getType()=='close') {
$oBlogUser = $this->Blog_GetBlogUserByBlogIdAndUserId($oBlog->getId(),$oUser->getId());
if(!$oBlogUser || $oBlogUser->getUserRole()<ModuleBlog::BLOG_USER_ROLE_GUEST) {
return self::CAN_VOTE_BLOG_ERROR_CLOSE;
}
}
if ($oUser->getRating()>=Config::Get('acl.vote.blog.rating')) {
return self::CAN_VOTE_BLOG_TRUE;
}
return self::CAN_VOTE_BLOG_FALSE;
}
Проверяет может ли пользователь голосовать за конкретный блог
public bool CanVoteComment(ModuleUser_EntityUser $oUser, ModuleComment_EntityComment $oComment)
| ||
$oUser | ModuleUser_EntityUser | Пользователь |
$oComment | ModuleComment_EntityComment | Комментарий |
{return} | bool |
public function CanVoteComment(ModuleUser_EntityUser $oUser, ModuleComment_EntityComment $oComment) {
if ($oUser->getRating()>=Config::Get('acl.vote.comment.rating')) {
return true;
}
return false;
}
Проверяет может ли пользователь голосовать за конкретный комментарий
public bool CanVoteTopic(ModuleUser_EntityUser $oUser, ModuleTopic_EntityTopic $oTopic)
| ||
$oUser | ModuleUser_EntityUser | Пользователь |
$oTopic | ModuleTopic_EntityTopic | Топик |
{return} | bool |
public function CanVoteTopic(ModuleUser_EntityUser $oUser, ModuleTopic_EntityTopic $oTopic) {
if ($oUser->getRating()>=Config::Get('acl.vote.topic.rating')) {
return true;
}
return false;
}
Проверяет может ли пользователь голосовать за конкретный топик
public bool CanVoteUser(ModuleUser_EntityUser $oUser, ModuleUser_EntityUser $oUserTarget)
| ||
$oUser | ModuleUser_EntityUser | Пользователь |
$oUserTarget | ModuleUser_EntityUser | Пользователь за которого голосуем |
{return} | bool |
public function CanVoteUser(ModuleUser_EntityUser $oUser, ModuleUser_EntityUser $oUserTarget) {
if ($oUser->getRating()>=Config::Get('acl.vote.user.rating')) {
return true;
}
return false;
}
Проверяет может ли пользователь голосовать за конкретного пользователя
public void Init()
|
public function Init() {
}
Инициализация модуля
public bool IsAllowAdminBlog(ModuleBlog_EntityBlog $oBlog, ModuleUser_EntityUser $oUser)
| ||
$oBlog | ModuleBlog_EntityBlog | Блог |
$oUser | ModuleUser_EntityUser | Пользователь |
{return} | bool |
public function IsAllowAdminBlog($oBlog,$oUser) {
if ($oUser->isAdministrator()) {
return true;
}
/**
* Разрешаем если это создатель блога
*/
if ($oBlog->getOwnerId() == $oUser->getId()) {
return true;
}
/**
* Явлется ли авторизованный пользователь администратором блога
*/
$oBlogUser = $this->Blog_GetBlogUserByBlogIdAndUserId($oBlog->getId(), $oUser->getId());
if ($oBlogUser && $oBlogUser->getIsAdministrator()) {
return true;
}
return false;
}
Проверяет можно или нет пользователю управлять пользователями блога
public void IsAllowBlog(ModuleBlog_EntityBlog $oBlog, ModuleUser_EntityUser $oUser)
| ||
$oBlog | ModuleBlog_EntityBlog | Блог |
$oUser | ModuleUser_EntityUser | Пользователь |
public function IsAllowBlog($oBlog,$oUser) {
if ($oUser->isAdministrator()) {
return true;
}
if ($oUser->getRating()<=Config::Get('acl.create.topic.limit_rating')) {
return false;
}
if ($oBlog->getOwnerId()==$oUser->getId()) {
return true;
}
if ($oBlogUser=$this->Blog_GetBlogUserByBlogIdAndUserId($oBlog->getId(),$oUser->getId())) {
if ($this->ACL_CanAddTopic($oUser,$oBlog) or $oBlogUser->getIsAdministrator() or $oBlogUser->getIsModerator()) {
return true;
}
}
return false;
}
Проверяет можно или нет юзеру постить в данный блог
public bool IsAllowDeleteBlog(ModuleBlog_EntityBlog $oBlog, ModuleUser_EntityUser $oUser)
| ||
$oBlog | ModuleBlog_EntityBlog | Блог |
$oUser | ModuleUser_EntityUser | Пользователь |
{return} | bool |
public function IsAllowDeleteBlog($oBlog,$oUser) {
/**
* Разрешаем если это админ сайта или автор блога
*/
if ($oUser->isAdministrator()) {
return self::CAN_DELETE_BLOG_WITH_TOPICS;
}
/**
* Разрешаем удалять администраторам блога и автору, но только пустой
*/
if($oBlog->getOwnerId()==$oUser->getId()) {
return self::CAN_DELETE_BLOG_EMPTY_ONLY;
}
$oBlogUser=$this->Blog_GetBlogUserByBlogIdAndUserId($oBlog->getId(),$oUser->getId());
if($oBlogUser and $oBlogUser->getIsAdministrator()) {
return self::CAN_DELETE_BLOG_EMPTY_ONLY;
}
return false;
}
Проверяет можно или нет пользователю удалять данный блог
public bool IsAllowDeleteTopic(ModuleTopic_EntityTopic $oTopic, ModuleUser_EntityUser $oUser)
| ||
$oTopic | ModuleTopic_EntityTopic | Топик |
$oUser | ModuleUser_EntityUser | Пользователь |
{return} | bool |
public function IsAllowDeleteTopic($oTopic,$oUser) {
/**
* Разрешаем если это админ сайта или автор топика
*/
if ($oTopic->getUserId()==$oUser->getId() or $oUser->isAdministrator()) {
return true;
}
/**
* Если автор(смотритель) блога
*/
if ($oTopic->getBlog()->getOwnerId()==$oUser->getId()) {
return true;
}
/**
* Если модер или админ блога
*/
$oBlogUser=$this->Blog_GetBlogUserByBlogIdAndUserId($oTopic->getBlogId(),$oUser->getId());
if ($oBlogUser and ($oBlogUser->getIsModerator() or $oBlogUser->getIsAdministrator())) {
return true;
}
return false;
}
Проверяет можно или нет пользователю удалять данный топик
public bool IsAllowEditBlog(ModuleBlog_EntityBlog $oBlog, ModuleUser_EntityUser $oUser)
| ||
$oBlog | ModuleBlog_EntityBlog | Блог |
$oUser | ModuleUser_EntityUser | Пользователь |
{return} | bool |
public function IsAllowEditBlog($oBlog,$oUser) {
if ($oUser->isAdministrator()) {
return true;
}
/**
* Разрешаем если это создатель блога
*/
if ($oBlog->getOwnerId() == $oUser->getId()) {
return true;
}
/**
* Явлется ли авторизованный пользователь администратором блога
*/
$oBlogUser = $this->Blog_GetBlogUserByBlogIdAndUserId($oBlog->getId(), $oUser->getId());
if ($oBlogUser && $oBlogUser->getIsAdministrator()) {
return true;
}
return false;
}
Проверяет можно или нет пользователю редактировать данный блог
public bool IsAllowEditTopic(ModuleTopic_EntityTopic $oTopic, ModuleUser_EntityUser $oUser)
| ||
$oTopic | ModuleTopic_EntityTopic | Топик |
$oUser | ModuleUser_EntityUser | Пользователь |
{return} | bool |
public function IsAllowEditTopic($oTopic,$oUser) {
/**
* Разрешаем если это админ сайта или автор топика
*/
if ($oTopic->getUserId()==$oUser->getId() or $oUser->isAdministrator()) {
return true;
}
/**
* Если автор(смотритель) блога
*/
if ($oTopic->getBlog()->getOwnerId()==$oUser->getId()) {
return true;
}
/**
* Если модер или админ блога
*/
$oBlogUser=$this->Blog_GetBlogUserByBlogIdAndUserId($oTopic->getBlogId(),$oUser->getId());
if ($oBlogUser and ($oBlogUser->getIsModerator() or $oBlogUser->getIsAdministrator())) {
return true;
}
return false;
}
Проверяет можно или нет пользователю редактировать данный топик
public bool IsAllowPublishIndex(ModuleUser_EntityUser $oUser)
| ||
$oUser | ModuleUser_EntityUser | Пользователь |
{return} | bool |
public function IsAllowPublishIndex(ModuleUser_EntityUser $oUser) {
if ($oUser->isAdministrator()) {
return true;
}
return false;
}
Проверяет может ли пользователь публиковать на главной