Ограничение в блогах

Здравствуйте.
Возник вопрос: А как ввести дополнительные ограничение на постинг в определенных блогах, помимо рейтингового ограничения.
А точнее мне нужно сделать чтобы в блог могли постить только администраторы и модераторы блога, а читать блог могли все…
Как такое можно решить, может быть есть готовое решение?

6 комментариев

avatar
docs.livestreetcms.com/api/1.0/ModuleACL#CanAddTopic-detail
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 function CanAddTopic(ModuleUser_EntityUser $oUser, ModuleBlog_EntityBlog $oBlog) {
    /**
     * Если юзер является создателем блога то разрешаем ему постить
     */
    if ($oUser->getId()==$oBlog->getOwnerId()) {
        return true;
    }
    /**
     * Если юзер является администратором или модератором в блоге то разрешаем постинг
     */
    if ($oBlog->getUserIsAdministrator() or $oBlog->getUserIsModerator()) {
        return true;
    }
    return false;
}
avatar
Спасибо. При этом останется лишь одно ограничение.
А что бы осталось строе и добавилось новое.
Я так понимаю нужно будет добавить написанную вам функцию в тот же файл и немного исправить файл? шаблона.
avatar
Смысла не вижу сразу оба условия делать — поэтому и выпилил исходное.
avatar
А я так подумал как бы было хорошо переделать закрытый блог, чтобы в открытый блог могли постить все, а в закрытый только админы и модераторы, а читать все могли.
avatar
Ну это уже костыли придется городить и выпиливать некоторый функционал.
Ну например в начало функции выше можно добавить условие:
if ($oBlog->getType()=='close') {
  if ($oBlog->getUserIsAdministrator() or $oBlog->getUserIsModerator()) {
    return true;
  } 
  return false;
}
а условие рейтинга соответственно не трогать. Ну и выпиливать везде условия закрытости «закрытых» блогов, например docs.livestreetcms.com/api/1.0/ActionBlog#EventShowBlog-detail
if($oBlog->getType()=='close'
        and (!$this->oUserCurrent
            or !in_array(
                $oBlog->getId(),
                $this->Blog_GetAccessibleBlogsByUser($this->oUserCurrent)
            )
        )
    ) {
        $bCloseBlog=true;
    } else {
        $bCloseBlog=false;
    }
заменить на
$bCloseBlog=true;
docs.livestreetcms.com/api/1.0/ActionBlog#EventShowTopic-detail удалить
if($oTopic->getBlog()->getType()=='close'
        and (!$this->oUserCurrent
            || !in_array(
                $oTopic->getBlog()->getId(),
                $this->Blog_GetAccessibleBlogsByUser($this->oUserCurrent)
            )
        )
    ) {
        $this->Message_AddErrorSingle($this->Lang_Get('blog_close_show'),$this->Lang_Get('not_access'));
        return Router::Action('error');
    }
и т.д. Но лучше так не делать)
avatar
Спасибо. Буду думать, может быть и откажусь от этой затеи
Только зарегистрированные и авторизованные пользователи могут оставлять комментарии.