Ограничение создание топика по количеству комментариев

Решил сделать ограничения на создания топика по рейтингу.
но оказалось что в LS все уже есть направил NPC , но у меня возник конфликт с Blogs Autoconnect Plugin тут подсказали s4people что можно по количеству комментариев
Сделал следующие
в /classes/modules/acl/ACL.class.php добавил
/**
         * Проверяет может ли пользователь создавать топик по количеству коментариев
         *
         * @param  ModuleUser_EntityUser $oUser Пользователь
         * @return bool
         */
        public function CanPostTopicComment(ModuleUser_EntityUser $oUser) {
                // Для администраторов ограничение по времени не действует
                if($oUser->isAdministrator()
                        or Config::Get('acl.create.topic.limit_comment')==0
                        or $oUser->getCountComment()>=Config::Get('acl.create.topic.limit_time_rating'))
                        return true;

                /**
                 * Проверяем, если у топика коментариев меньше чем acl.create.topic.limit_comment
                 */
                $aTopics=$this->Topic_GetCountCommentsByUserId($oUser->getId(),Config::Get('acl.create.topic.limit_comment'));
                if(isset($aTopics['count']) and $aTopics['count']>0){
                        return false;
                }
                return true;
        }

в /classes/actions/ActionTopic.class.php добавил
/**
                 * Проверяем разрешено ли постить топик по количеству коментариев
                 */
                if (isPost('submit_topic_publish') and !$oTopic->getPublishDraft() and !$this->ACL_CanPostTopicComment($this->oUserCurrent)) {
                        $this->Message_AddErrorSingle($this->Lang_Get('topic_time_limit'),$this->Lang_Get('error'));
                        return;
                }
                $oTopic->setBlogId($oBlog->getId());

в /config/config.local.php добавил
$config['acl']['create']['topic']['limit_comment'] =  5;  // порог количества комментариев при котором юзер может создать топик


В общем не заработало, подскажите, что не так.

Мне вообще нужно было немного другое, вот здесь описывал, решил попробовать пока это сделать

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

avatar
!$this->oUserCurrent->isAdministrator()

вот это Вам ничего не напоминает?
avatar
ну в принципе создал по условию как ActionBlog.class.php там это работает
avatar
Хм, в конфиге ж уже есть:
$config['acl']['create']['topic']['limit_rating'] = -20;// порог рейтинга при котором юзер может создавать топики (учитываются любые блоги, включая персональные), как дополнительная защита от спама/троллинга


Ну и если твою переменную добавляешь, то надо в config.local.php, всё таки.
  • NPC
  • 0
avatar
Пробовал, не реагирует, создаются
что касательно config, да все верно в config.local.php
avatar
странно что у вас не реагирует эта переменная, да и то что вы сделали дааавно есть в LS, но другое дело что ваш способ можно использовать например при лимите комментариев а не только рейтинге, вот описали бы это например :)
avatar
Пробовал, не реагирует, создаются
вы админ, у вас создается
avatar
в одном браузере админ, там создаются, в другом браузере обычный пользователь, тоже создаются в конфиге порог рейтинга 1 у пользователя 0
avatar
в лс это давно уже работает. какая версия лс, плагинов?
avatar
все последние, сейчас попробую плагины поотключать
avatar
нашел с кем конфликт
Blogs Autoconnect Plugin
avatar
отписался в поддержке плагина, пробовал исправить ACL.class.php в плагине не получилось может кто знает.
avatar
попробовал сделать по комментариям
Сделал следующие
в /classes/modules/acl/ACL.class.php добавил
/**
	 * Проверяет может ли пользователь создавать топик по количеству коментариев
	 *
	 * @param  ModuleUser_EntityUser $oUser	Пользователь
	 * @return bool
	 */
	public function CanPostTopicComment(ModuleUser_EntityUser $oUser) {
		// Для администраторов ограничение по времени не действует
		if($oUser->isAdministrator()
			or Config::Get('acl.create.topic.limit_comment')==0
			or $oUser->getCountComment()>=Config::Get('acl.create.topic.limit_time_rating'))
			return true;

		/**
		 * Проверяем, если у топика коментариев меньше чем acl.create.topic.limit_comment
		 */
		$aTopics=$this->Topic_GetCountCommentsByUserId($oUser->getId(),Config::Get('acl.create.topic.limit_comment'));
		if(isset($aTopics['count']) and $aTopics['count']>0){
			return false;
		}
		return true;
	}

в /classes/actions/ActionTopic.class.php добавил
/**
		 * Проверяем разрешено ли постить топик по количеству коментариев
		 */
		if (isPost('submit_topic_publish') and !$oTopic->getPublishDraft() and !$this->ACL_CanPostTopicComment($this->oUserCurrent)) {
			$this->Message_AddErrorSingle($this->Lang_Get('topic_time_limit'),$this->Lang_Get('error'));
			return;
		}
		$oTopic->setBlogId($oBlog->getId());

в /config/config.local.php добавил
$config['acl']['create']['topic']['limit_comment'] =  5;  // порог количества комментариев при котором юзер может создать топик

Не работает, подскажите, что не так.
Только зарегистрированные и авторизованные пользователи могут оставлять комментарии.