/**
  * @inheritdoc
  */
 public function actions()
 {
     return ArrayHelper::merge(parent::actions(), ['index' => ['columns' => [['attribute' => 'status', 'class' => \yii\grid\DataColumn::className(), 'filter' => \skeeks\cms\comments2\models\Comments2Message::$statuses, 'format' => 'raw', 'value' => function (\skeeks\cms\comments2\models\Comments2Message $model) {
         if ($model->status == \skeeks\cms\comments2\models\Comments2Message::STATUS_NEW) {
             $class = "default";
         } else {
             if ($model->status == \skeeks\cms\comments2\models\Comments2Message::STATUS_PROCESSED) {
                 $class = "warning";
             } else {
                 if ($model->status == \skeeks\cms\comments2\models\Comments2Message::STATUS_CANCELED) {
                     $class = "danger";
                 } else {
                     if ($model->status == \skeeks\cms\comments2\models\Comments2Message::STATUS_ALLOWED) {
                         $class = "success";
                     }
                 }
             }
         }
         return '<span class="label label-' . $class . '">' . \yii\helpers\ArrayHelper::getValue(\skeeks\cms\comments2\models\Comments2Message::$statuses, $model->status) . '</span>';
     }], ['class' => \skeeks\cms\grid\CreatedAtColumn::className(), 'label' => 'Добавлен'], ['class' => \skeeks\cms\grid\CreatedByColumn::className()], ['attribute' => 'site_code', 'class' => \yii\grid\DataColumn::className(), 'filter' => \yii\helpers\ArrayHelper::map(\skeeks\cms\models\CmsSite::find()->all(), 'code', 'name'), 'value' => function (\skeeks\cms\comments2\models\Comments2Message $model) {
         return $model->site->name;
     }], ['attribute' => 'element_id', 'relation' => 'element', 'class' => \skeeks\cms\grid\CmsContentElementColumn::className()], ['filter' => \yii\helpers\ArrayHelper::map(\skeeks\cms\models\CmsContent::find()->all(), 'id', 'name'), 'attribute' => 'content_id', 'class' => \yii\grid\DataColumn::className(), 'value' => function (\skeeks\cms\comments2\models\Comments2Message $model) {
         return $model->element->cmsContent->name;
     }]]], "status-allowed-multi" => ['class' => AdminMultiModelEditAction::className(), "name" => \skeeks\cms\comments2\Module::t('app', 'Approve'), "eachCallback" => [$this, 'eachMultiStatusAllowed']], "status-canceled-multi" => ['class' => AdminMultiModelEditAction::className(), "name" => \skeeks\cms\comments2\Module::t('app', 'Reject'), "eachCallback" => [$this, 'eachMultiStatusCanceled']], "status-processed-multi" => ['class' => AdminMultiModelEditAction::className(), "name" => \skeeks\cms\comments2\Module::t('app', 'In progress'), "eachCallback" => [$this, 'eachMultiStatusProcessed']]]);
 }
 public function attributeLabels()
 {
     return ArrayHelper::merge(parent::attributeLabels(), ['enabledBeforeApproval' => \skeeks\cms\comments2\Module::t('app', 'Use pre-moderation comments'), 'elementPropertyCountCode' => \skeeks\cms\comments2\Module::t('app', 'Contact number of comments with the property element'), 'notifyEmails' => \skeeks\cms\comments2\Module::t('app', 'Email addresses for notifications'), 'notifyPhones' => \skeeks\cms\comments2\Module::t('app', 'Telephone numbers for notifications'), 'securityEnabledRateLimit' => \skeeks\cms\comments2\Module::t('app', 'Enable IP protection'), 'securityRateLimitRequests' => \skeeks\cms\comments2\Module::t('app', 'Maximum number of comments for a specified time'), 'securityRateLimitTime' => \skeeks\cms\comments2\Module::t('app', 'The time for that will be taken by the maximum number of comments'), 'messageSuccessBeforeApproval' => \skeeks\cms\comments2\Module::t('app', 'Reporting successfully added comments (if the pre-moderation on)'), 'messageSuccess' => \skeeks\cms\comments2\Module::t('app', 'Reporting successfully added comments (without pre-moderation)'), 'enabledFieldsOnGuest' => \skeeks\cms\comments2\Module::t('app', 'The fields in the form to add comments (not authorized)'), 'enabledFieldsOnUser' => \skeeks\cms\comments2\Module::t('app', 'The fields in the form to add comments (user is logged in)'), 'maxCountMessagesForUser' => \skeeks\cms\comments2\Module::t('app', 'Maximum number of replies to the same post from one user (0 - unlimited)')]);
 }
<?php

/**
 * @author Semenov Alexander <*****@*****.**>
 * @link http://skeeks.com/
 * @copyright 2010 SkeekS (СкикС)
 * @date 07.03.2015
 */
return ['permissions' => [['name' => \skeeks\cms\comments2\components\Comments2Component::PERMISSION_ADD_REVIEW, 'description' => \skeeks\cms\comments2\Module::t('app', 'Add comments')]]];
 public function actionSubmit()
 {
     $rr = new RequestResponse();
     $model = new Comments2Message();
     if ($rr->isRequestOnValidateAjaxForm()) {
         return $rr->ajaxValidateForm($model);
     }
     if ($rr->isRequestAjaxPost()) {
         $model->scenario = Comments2Message::SCENARIO_SITE_INSERT;
         $model->page_url = \Yii::$app->request->referrer;
         if ($model->load(\Yii::$app->request->post())) {
             //Проверка на максимальное количество комментариев к одному посту от одного пользователя.
             $messagesFind = Comments2Message::find();
             if (\Yii::$app->user->isGuest) {
                 $messagesFind->andWhere(['ip' => Request::getRealUserIp()]);
             } else {
                 $messagesFind->andWhere(['created_by' => \Yii::$app->user->identity->id]);
             }
             $messagesFind2 = clone $messagesFind;
             $messagesFind->andWhere(['status' => Comments2Message::STATUS_ALLOWED])->andWhere(['element_id' => $model->element_id]);
             if (\Yii::$app->comments2->maxCountMessagesForUser != 0) {
                 if ($messagesFind->count() >= \Yii::$app->comments2->maxCountMessagesForUser) {
                     $rr->success = false;
                     $rr->message = \skeeks\cms\comments2\Module::t('app', 'You have already added a comment on this post before.');
                     return $rr;
                 }
             }
             //Проверка частоты добавления комментариев
             if (\Yii::$app->comments2->securityEnabledRateLimit == Cms::BOOL_Y) {
                 $messagesFind2 = Comments2Message::find();
                 if (\Yii::$app->user->isGuest) {
                     $messagesFind2->andWhere(['ip' => Request::getRealUserIp()]);
                 } else {
                     $messagesFind2->andWhere(['created_by' => \Yii::$app->user->identity->id]);
                 }
                 $lastTime = \Yii::$app->formatter->asTimestamp(time()) - (int) \Yii::$app->comments2->securityRateLimitTime;
                 $messagesFind2->andWhere(['>=', 'created_at', $lastTime]);
                 //print_r($messagesFind2->createCommand()->rawSql);die;
                 if ($messagesFind2->count() >= \Yii::$app->comments2->securityRateLimitRequests) {
                     $rr->success = false;
                     $rr->message = \skeeks\cms\comments2\Module::t('app', 'You too often add comments.');
                     return $rr;
                 }
             }
             if ($model->save()) {
                 $rr->success = true;
                 if (\Yii::$app->comments2->enabledBeforeApproval == Cms::BOOL_Y) {
                     $rr->message = \Yii::$app->comments2->messageSuccessBeforeApproval;
                 } else {
                     $rr->message = \Yii::$app->comments2->messageSuccess;
                     //Отключена предмодерация, сразу публикуем
                     $model->status = Comments2Message::STATUS_ALLOWED;
                     $model->scenario = ActiveRecord::SCENARIO_DEFAULT;
                     $model->save();
                 }
                 $model->notifyCreate();
             } else {
                 $rr->success = false;
                 $rr->message = \skeeks\cms\comments2\Module::t('app', 'You comments not added') . ": " . implode(",", $model->getFirstErrors());
             }
         } else {
             $rr->success = false;
             $rr->message = \skeeks\cms\comments2\Module::t('app', 'You comments not added') . ": " . implode(",", $model->getFirstErrors());
         }
     }
     return $rr;
 }
예제 #5
0
<?php

/**
 * @author Semenov Alexander <*****@*****.**>
 * @link http://skeeks.com/
 * @copyright 2010 SkeekS (СкикС)
 * @date 12.03.2015
 */
return ['other' => ['items' => [["label" => \skeeks\cms\comments2\Module::t('app', 'Comments'), "img" => ['\\skeeks\\cms\\comments2\\assets\\Comments2Asset', 'icons/comments.jpg'], 'items' => [["label" => \skeeks\cms\comments2\Module::t('app', 'Comments'), "url" => ["comments2/admin-message"], "img" => ['\\skeeks\\cms\\comments2\\assets\\Comments2Asset', 'icons/comments.jpg']], ["label" => \skeeks\cms\comments2\Module::t('app', 'Settings'), "url" => ["cms/admin-settings", "component" => 'skeeks\\cms\\comments2\\components\\Comments2Component'], "img" => ['\\skeeks\\cms\\modules\\admin\\assets\\AdminAsset', 'images/icons/settings.png'], "activeCallback" => function (\skeeks\cms\modules\admin\helpers\AdminMenuItem $adminMenuItem) {
    return (bool) (\Yii::$app->request->getUrl() == $adminMenuItem->getUrl());
}]]]]]];