<commit_before><?php
/*---------------------------------------------------------------------------
 * @Project: Alto CMS
 * @Project URI: http://altocms.com
 * @Description: Advanced Community Engine
 * @Copyright: Alto CMS Team
 * @License: GNU GPL v2 & MIT
 *----------------------------------------------------------------------------
 * Based on
 *   LiveStreet Engine Social Networking by <NAME>
 *   Site: www.livestreet.ru
 *   E-mail: <EMAIL>
 *----------------------------------------------------------------------------
 */

/**
 * ACL (Access Control List)
 * Модуль контроля доступа пользователей к определенным возможностям/функциям
 *
 * @package modules.acl
 * @since   1.0
 */
class ModuleACL extends Module {
    /**
     * Коды ответов на запрос о возможности
     * пользователя голосовать за блог
     */
    const CAN_VOTE_BLOG_FALSE = 0;
    const CAN_VOTE_BLOG_TRUE = 1;
    const CAN_VOTE_BLOG_ERROR_CLOSE = 2;
    const CAN_VOTE_BLOG_ERROR_BAN = 3;
    /**
     * Коды ответов на запрос о возможности
     * пользователя голосовать за топик
     */
    const CAN_VOTE_TOPIC_FALSE = 0;
    const CAN_VOTE_TOPIC_TRUE = 1;
    const CAN_VOTE_TOPIC_ERROR_BAN = 2;
    /**
     * Коды ответов на запрос о возможности
     * пользователя голосовать за комментарий
     */
    const CAN_VOTE_COMMENT_FALSE = 0;
    const CAN_VOTE_COMMENT_TRUE = 1;
    const CAN_VOTE_COMMENT_ERROR_BAN = 2;
    /**
     * Коды ответов на запрос о возможности
     * пользователя оставлять комментарий
     */
    const CAN_TOPIC_COMMENT_FALSE = 0;
    const CAN_TOPIC_COMMENT_TRUE = 1;
    const CAN_TOPIC_COMMENT_ERROR_BAN = 2;
    /**
     * Коды механизма удаления блога
     */
    const CAN_DELETE_BLOG_EMPTY_ONLY = 1;
    const CAN_DELETE_BLOG_WITH_TOPICS = 2;

    /**
     * Инициализация модуля
     *
     */
    public function Init() {

    }

    /**
     * Проверяет может ли пользователь создавать блоги
     *
     * @param ModuleUser_EntityUser $oUser    Пользователь
     *
     * @return bool
     */
    public function CanCreateBlog(ModuleUser_EntityUser $oUser) {
        if ($oUser->getRating() >= Config::Get('acl.create.blog.rating')) {
            return true;
        }
        return false;
    }

    /**
     * Проверяет может ли пользователь создавать топики в определенном блоге
     *
     * @param ModuleUser_EntityUser $oUser    Пользователь
     * @param ModuleBlog_EntityBlog $oBlog    Блог
     *
     * @return bool
     */
    public function CanAddTopic(ModuleUser_EntityUser $oUser, ModuleBlog_EntityBlog $oBlog) {
        // * Если юзер является создателем блога то разрешаем ему постить
        if ($oUser->isAdministrator() || ($oUser->getId() == $oBlog->getOwnerId())) {
            return true;
        }
        // * Если рейтинг юзера больше либо равен порогу постинга в блоге то разрешаем постинг
        if ($oUser->getRating() >= $oBlog->getLimitRatingTopic()) {
            return true;
        }
        return false;
    }

    /**
     * Проверяет может ли пользователь создавать комментарии
     *<commit_msg>Исправлена ошибка проверки полномочий пользователя при отсутствии у него блогов<commit_after><?php
/*---------------------------------------------------------------------------
 * @Project: Alto CMS
 * @Project URI: http://altocms.com
 * @Description: Advanced Community Engine
 * @Copyright: Alto CMS Team
 * @License: GNU GPL v2 & MIT
 *----------------------------------------------------------------------------
 * Based on
 *   LiveStreet Engine Social Networking by <NAME>
 *   Site: www.livestreet.ru
 *   E-mail: <EMAIL>
 *----------------------------------------------------------------------------
 */

/**
 * ACL (Access Control List)
 * Модуль контроля доступа пользователей к определенным возможностям/функциям
 *
 * @package modules.acl
 * @since   1.0
 */
class ModuleACL extends Module {
    /**
     * Коды ответов на запрос о возможности
     * пользователя голосовать за блог
     */
    const CAN_VOTE_BLOG_FALSE = 0;
    const CAN_VOTE_BLOG_TRUE = 1;
    const CAN_VOTE_BLOG_ERROR_CLOSE = 2;
    const CAN_VOTE_BLOG_ERROR_BAN = 3;
    /**
     * Коды ответов на запрос о возможности
     * пользователя голосовать за топик
     */
    const CAN_VOTE_TOPIC_FALSE = 0;
    const CAN_VOTE_TOPIC_TRUE = 1;
    const CAN_VOTE_TOPIC_ERROR_BAN = 2;
    /**
     * Коды ответов на запрос о возможности
     * пользователя голосовать за комментарий
     */
    const CAN_VOTE_COMMENT_FALSE = 0;
    const CAN_VOTE_COMMENT_TRUE = 1;
    const CAN_VOTE_COMMENT_ERROR_BAN = 2;
    /**
     * Коды ответов на запрос о возможности
     * пользователя оставлять комментарий
     */
    const CAN_TOPIC_COMMENT_FALSE = 0;
    const CAN_TOPIC_COMMENT_TRUE = 1;
    const CAN_TOPIC_COMMENT_ERROR_BAN = 2;
    /**
     * Коды механизма удаления блога
     */
    const CAN_DELETE_BLOG_EMPTY_ONLY = 1;
    const CAN_DELETE_BLOG_WITH_TOPICS = 2;

    /**
     * Инициализация модуля
     *
     */
    public function Init() {

    }

    /**
     * Проверяет может ли пользователь создавать блоги
     *
     * @param ModuleUser_EntityUser $oUser    Пользователь
     *
     * @return bool
     */
    public function CanCreateBlog(ModuleUser_EntityUser $oUser) {
        if ($oUser->getRating() >= Config::Get('acl.create.blog.rating')) {
            return true;
        }
        return false;
    }

    /**
     * Проверяет может ли пользователь создавать топики в определенном блоге
     *
     * @param ModuleUser_EntityUser $oUser    Пользователь
     * @param ModuleBlog_EntityBlog|null $oBlog    Блог
     *
     * @return bool
     */
    public function CanAddTopic(ModuleUser_EntityUser $oUser, $oBlog) {
        // Если у пользователя нет ни одного блога, то в эту переменную
        // передаётся null, соответственно, постинг в никуда запрещаем
        if (is_null($oBlog)) {
            return false;
        }
        // * Если юзер является создателем блога то разрешаем ему постить
        if ($oUser->isAdministrator() || ($oUser->getId() == $oBlog->getOwnerId())) {
            return true;
        }
        // * Если рейтинг юзера больше либо равен порогу постинга в блоге то разрешаем постинг
        if ($oUser->getRating() >= $oBlog->getLimitRatingTopic()) {
            return true;
        }
        return false;
    }

    /**
     * Проверяет может ли пользователь создавать комментарии
     *
{'fraction_non_alphanumeric': 0.1532926638510871, 'fraction_numerical': 0.005631159080244017, 'mean_word_length': 1.9643022716736207, 'pattern_counts': {'":': 0, '<': 9, '<?xml version=': 0, '>': 23, 'https://': 0, 'lorem ipsum': 0, 'www.': 2, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 0, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'dir': 'git-commits-cleaned', 'id': '5818002', 'n_tokens_mistral': 2169, 'n_tokens_neox': 2295, 'n_words': 496}