ModuleACL

Package modules.acl
Inheritance class ModuleACL » Module » LsObject
Since 1.0
Source Code /classes/modules/acl/ACL.class.php
ACL(Access Control List) Модуль для разруливания ограничений по карме/рейтингу юзера

Protected Properties

Hide inherited properties

PropertyTypeDescriptionDefined By
bIsInit bool Указывает на то, была ли проведенна инициализация модуля Module
oEngine Engine Объект ядра Module

Public Methods

Hide inherited methods

MethodDescriptionDefined 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

Hide inherited methods

MethodDescriptionDefined By
__clone() Блокируем копирование/клонирование объекта Module

Method Details

CanAddTopic() method
public bool CanAddTopic(ModuleUser_EntityUser $oUser, ModuleBlog_EntityBlog $oBlog)
$oUser ModuleUser_EntityUser Пользователь
$oBlog ModuleBlog_EntityBlog Блог
{return} bool
Source Code: /classes/modules/acl/ACL.class.php#65 (show)
public function CanAddTopic(ModuleUser_EntityUser $oUserModuleBlog_EntityBlog $oBlog) {
    
/**
     * Если юзер является создателем блога то разрешаем ему постить
     */
    
if ($oUser->getId()==$oBlog->getOwnerId()) {
        return 
true;
    }
    
/**
     * Если рейтинг юзера больше либо равен порогу постинга в блоге то разрешаем постинг
     */
    
if ($oUser->getRating()>=$oBlog->getLimitRatingTopic()) {
        return 
true;
    }
    return 
false;
}

Проверяет может ли пользователь создавать топики в определенном блоге

CanAddWallTime() method
public bool CanAddWallTime(ModuleUser_EntityUser $oUser, ModuleWall_EntityWall $oWall)
$oUser ModuleUser_EntityUser Пользователь
$oWall ModuleWall_EntityWall Объект сообщения на стене
{return} bool
Source Code: /classes/modules/acl/ACL.class.php#460 (show)
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;
}

Проверка на ограничение по времени на постинг на стене

CanCreateBlog() method
public bool CanCreateBlog(ModuleUser_EntityUser $oUser)
$oUser ModuleUser_EntityUser Пользователь
{return} bool
Source Code: /classes/modules/acl/ACL.class.php#52 (show)
public function CanCreateBlog(ModuleUser_EntityUser $oUser) {
    if (
$oUser->getRating()>=Config::Get('acl.create.blog.rating')) {
        return 
true;
    }
    return 
false;
}

Проверяет может ли пользователь создавать блоги

CanDeleteComment() method
public bool CanDeleteComment(ModuleUser_EntityUser $oUser)
$oUser ModuleUser_EntityUser Пользователь
{return} bool
Source Code: /classes/modules/acl/ACL.class.php#382 (show)
public function CanDeleteComment($oUser) {
    if (!
$oUser || !$oUser->isAdministrator()) {
        return 
false;
    }
    return 
true;
}

Проверяет может ли пользователь удалить комментарий

CanPostComment() method
public bool CanPostComment(ModuleUser_EntityUser $oUser)
$oUser ModuleUser_EntityUser Пользователь
{return} bool
Source Code: /classes/modules/acl/ACL.class.php#86 (show)
public function CanPostComment(ModuleUser_EntityUser $oUser) {
    if (
$oUser->getRating()>=Config::Get('acl.create.comment.rating')) {
        return 
true;
    }
    return 
false;
}

Проверяет может ли пользователь создавать комментарии

CanPostCommentTime() method
public bool CanPostCommentTime(ModuleUser_EntityUser $oUser)
$oUser ModuleUser_EntityUser Пользователь
{return} bool
Source Code: /classes/modules/acl/ACL.class.php#98 (show)
public function CanPostCommentTime(ModuleUser_EntityUser $oUser) {
    if (
Config::Get('acl.create.comment.limit_time')>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 минут)

CanPostTalkCommentTime() method
public bool CanPostTalkCommentTime(ModuleUser_EntityUser $oUser)
$oUser ModuleUser_EntityUser Пользователь
{return} bool
Source Code: /classes/modules/acl/ACL.class.php#157 (show)
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;
}

Проверяет может ли пользователь создавать комментарии к инбоксу по времени

CanPostTopicTime() method
public bool CanPostTopicTime(ModuleUser_EntityUser $oUser)
$oUser ModuleUser_EntityUser Пользователь
{return} bool
Source Code: /classes/modules/acl/ACL.class.php#113 (show)
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;
}

Проверяет может ли пользователь создавать топик по времени

CanSendInvite() method
public bool CanSendInvite(ModuleUser_EntityUser $oUser)
$oUser ModuleUser_EntityUser Пользователь
{return} bool
Source Code: /classes/modules/acl/ACL.class.php#262 (show)
public function CanSendInvite(ModuleUser_EntityUser $oUser) {
    if (
$this->User_GetCountInviteAvailable($oUser)==0) {
        return 
false;
    }
    return 
true;
}

Проверяет можно ли юзеру слать инвайты

CanSendTalkTime() method
public bool CanSendTalkTime(ModuleUser_EntityUser $oUser)
$oUser ModuleUser_EntityUser Пользователь
{return} bool
Source Code: /classes/modules/acl/ACL.class.php#135 (show)
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;
}

Проверяет может ли пользователь отправить инбокс по времени

CanUseHtmlInComment() method
public bool CanUseHtmlInComment(ModuleUser_EntityUser $oUser)
$oUser ModuleUser_EntityUser Пользователь
{return} bool
Source Code: /classes/modules/acl/ACL.class.php#192 (show)
public function CanUseHtmlInComment(ModuleUser_EntityUser $oUser) {
    return 
true;
}

Проверяет может ли пользователь создавать комментарии используя HTML

CanVoteBlog() method
public bool CanVoteBlog(ModuleUser_EntityUser $oUser, ModuleBlog_EntityBlog $oBlog)
$oUser ModuleUser_EntityUser Пользователь
$oBlog ModuleBlog_EntityBlog Блог
{return} bool
Source Code: /classes/modules/acl/ACL.class.php#215 (show)
public function CanVoteBlog(ModuleUser_EntityUser $oUserModuleBlog_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;
}

Проверяет может ли пользователь голосовать за конкретный блог

CanVoteComment() method
public bool CanVoteComment(ModuleUser_EntityUser $oUser, ModuleComment_EntityComment $oComment)
$oUser ModuleUser_EntityUser Пользователь
$oComment ModuleComment_EntityComment Комментарий
{return} bool
Source Code: /classes/modules/acl/ACL.class.php#202 (show)
public function CanVoteComment(ModuleUser_EntityUser $oUserModuleComment_EntityComment $oComment) {
    if (
$oUser->getRating()>=Config::Get('acl.vote.comment.rating')) {
        return 
true;
    }
    return 
false;
}

Проверяет может ли пользователь голосовать за конкретный комментарий

CanVoteTopic() method
public bool CanVoteTopic(ModuleUser_EntityUser $oUser, ModuleTopic_EntityTopic $oTopic)
$oUser ModuleUser_EntityUser Пользователь
$oTopic ModuleTopic_EntityTopic Топик
{return} bool
Source Code: /classes/modules/acl/ACL.class.php#237 (show)
public function CanVoteTopic(ModuleUser_EntityUser $oUserModuleTopic_EntityTopic $oTopic) {
    if (
$oUser->getRating()>=Config::Get('acl.vote.topic.rating')) {
        return 
true;
    }
    return 
false;
}

Проверяет может ли пользователь голосовать за конкретный топик

CanVoteUser() method
public bool CanVoteUser(ModuleUser_EntityUser $oUser, ModuleUser_EntityUser $oUserTarget)
$oUser ModuleUser_EntityUser Пользователь
$oUserTarget ModuleUser_EntityUser Пользователь за которого голосуем
{return} bool
Source Code: /classes/modules/acl/ACL.class.php#250 (show)
public function CanVoteUser(ModuleUser_EntityUser $oUserModuleUser_EntityUser $oUserTarget) {
    if (
$oUser->getRating()>=Config::Get('acl.vote.user.rating')) {
        return 
true;
    }
    return 
false;
}

Проверяет может ли пользователь голосовать за конкретного пользователя

Init() method
public void Init()
Source Code: /classes/modules/acl/ACL.class.php#43 (show)
public function Init() {

}

Инициализация модуля

IsAllowAdminBlog() method
public bool IsAllowAdminBlog(ModuleBlog_EntityBlog $oBlog, ModuleUser_EntityUser $oUser)
$oBlog ModuleBlog_EntityBlog Блог
$oUser ModuleUser_EntityUser Пользователь
{return} bool
Source Code: /classes/modules/acl/ACL.class.php#434 (show)
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;
}

Проверяет можно или нет пользователю управлять пользователями блога

IsAllowBlog() method
public void IsAllowBlog(ModuleBlog_EntityBlog $oBlog, ModuleUser_EntityUser $oUser)
$oBlog ModuleBlog_EntityBlog Блог
$oUser ModuleUser_EntityUser Пользователь
Source Code: /classes/modules/acl/ACL.class.php#274 (show)
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;
}

Проверяет можно или нет юзеру постить в данный блог

IsAllowDeleteBlog() method
public bool IsAllowDeleteBlog(ModuleBlog_EntityBlog $oBlog, ModuleUser_EntityUser $oUser)
$oBlog ModuleBlog_EntityBlog Блог
$oUser ModuleUser_EntityUser Пользователь
{return} bool
Source Code: /classes/modules/acl/ACL.class.php#356 (show)
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;
}

Проверяет можно или нет пользователю удалять данный блог

IsAllowDeleteTopic() method
public bool IsAllowDeleteTopic(ModuleTopic_EntityTopic $oTopic, ModuleUser_EntityUser $oUser)
$oTopic ModuleTopic_EntityTopic Топик
$oUser ModuleUser_EntityUser Пользователь
{return} bool
Source Code: /classes/modules/acl/ACL.class.php#327 (show)
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;
}

Проверяет можно или нет пользователю удалять данный топик

IsAllowEditBlog() method
public bool IsAllowEditBlog(ModuleBlog_EntityBlog $oBlog, ModuleUser_EntityUser $oUser)
$oBlog ModuleBlog_EntityBlog Блог
$oUser ModuleUser_EntityUser Пользователь
{return} bool
Source Code: /classes/modules/acl/ACL.class.php#407 (show)
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;
}

Проверяет можно или нет пользователю редактировать данный блог

IsAllowEditTopic() method
public bool IsAllowEditTopic(ModuleTopic_EntityTopic $oTopic, ModuleUser_EntityUser $oUser)
$oTopic ModuleTopic_EntityTopic Топик
$oUser ModuleUser_EntityUser Пользователь
{return} bool
Source Code: /classes/modules/acl/ACL.class.php#298 (show)
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;
}

Проверяет можно или нет пользователю редактировать данный топик

IsAllowPublishIndex() method
public bool IsAllowPublishIndex(ModuleUser_EntityUser $oUser)
$oUser ModuleUser_EntityUser Пользователь
{return} bool
Source Code: /classes/modules/acl/ACL.class.php#394 (show)
public function IsAllowPublishIndex(ModuleUser_EntityUser $oUser) {
    if (
$oUser->isAdministrator()) {
        return 
true;
    }
    return 
false;
}

Проверяет может ли пользователь публиковать на главной