/** * @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; }
<?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()); }]]]]]];