Ограничение голосования - только модераторы

Здравствуйте.

Как можно ограничить голосование за пользователя, топик, блог и комментарий для пользователей, но оставить возможность оценивать модераторам, даже модераторам не того блога, в котором написан топик?

Например в ActionAjax.class.php есть проверка условий на кнопке голосования, как распознать в пользователе модератора и разрешить ему голосовать, если стоит ограничение голосования по рейтингу более 100?

AltoCMS 1.0.7, скин — Start-kit
Сервер — Ubuntu Server 14.04, PHP 5.5.9-1ubuntu4

Похожие статьи

  • Срок голосования за статью истёк!
    Не подскажете, как убрать ограничение по времени на голосование?
  • Бесплатный плагин «Magic Rules» -
    Лайвстритовский плагин «MagicRule» портирован под Alto CMS 1.1.х и доступен для скачивания в нашем каталоге. Плагин позволяет определить правила для голосования и добавления контента.
  • Социальный рейтинг поста (топика, статьи) [идея плагина]
    Всем известный скрипт социальных голосований, который когда то был очень популярен в рунете (ссылка под катом) натолкнул меня на мысль о социальном рейтинге. Смысл в том, что пользователь независимо зарегистрирован...
  • Кто как голосовал - Voter на altocms.ru
    Предлагаю установить плагин показывающий кто как голосовал — Voter на сайте altocms.ru. Это позволит избежать «анонимных доброжелателей». Очень не хватало этой функции на livestreet. Я за прозрачность голосований!

2 комментария

+1
Проверка на право голосовать реализована в модуле common/classes/modules/acl/ACL.class.php, дорабатывать нужно его, а не экшен ActionAjax.class.php.

Вот пример, в котором реализована проверка на то, является ли пользователь модератором или администратором в каком-либо блоге, которая происходит при голосовании за топик. Добавлено первое условие. Для блога и комментария делается аналогично в этом же модуле.

/**
 * Проверяет может ли пользователь голосовать за конкретный топик
 *
 * @param ModuleUser_EntityUser   $oUser     Пользователь
 * @param ModuleTopic_EntityTopic $oTopic    Топик
 *
 * @return bool
 */
public function CanVoteTopic(ModuleUser_EntityUser $oUser, ModuleTopic_EntityTopic $oTopic) {
    // Если пользователь авторизован, тогда будем проверять
    // Не авторизованные и так не могут голосовать
    if (E::IsUser()) {
        // Получим массив идентификаторов блогов, в которых текущий
        // пользователь - модератор или администратор
        $aUserRelation = $this->Blog_GetBlogUsersByUserId(
            E::UserId(),
            array(ModuleBlog::BLOG_USER_ROLE_MODERATOR, ModuleBlog::BLOG_USER_ROLE_ADMINISTRATOR),
            TRUE);
        if (!$aUserRelation) {
            // Пользователь ни в одном блоге не состоит в качестве
            // модератора или администратора, значит голосовать
            // за этот топик не может
            return false;
        }
    }

    // Дальше типовая проверка
    if ($oUser->getRating() >= Config::Get('acl.vote.topic.rating')) {
        return true;
    }
    return false;
}
Отредактирован:
0
Огромное спасибо. Внес изменения, тестирую.
Только зарегистрированные и авторизованные пользователи могут оставлять комментарии.