diff --git a/controllers/AdminFormSendMessageController.php b/controllers/AdminFormSendMessageController.php
index 9c605e2..2baa013 100644
--- a/controllers/AdminFormSendMessageController.php
+++ b/controllers/AdminFormSendMessageController.php
@@ -31,9 +31,27 @@ class AdminFormSendMessageController extends AdminModelEditorSmartController
$this->enableScenarios = true;
$this->gridColumns = [
- 'form_id',
+ [
+ 'class' => \yii\grid\DataColumn::className(),
+ 'value' => function(FormSendMessage $model)
+ {
+
+ if ($form = Form::find()->where(['id' => $model->form_id])->one())
+ {
+ return $form->name;
+ }
+
+ },
+ 'attribute' => 'form_id',
+ 'format' => 'html'
+ ],
+
['class' => \skeeks\cms\grid\CreatedAtColumn::className()],
- ['class' => \skeeks\cms\grid\CreatedByColumn::className()]
+ ['class' => \skeeks\cms\grid\CreatedByColumn::className()],
+ 'page_url',
+ 'ip'
+
+
];
parent::init();
diff --git a/controllers/BackendController.php b/controllers/BackendController.php
index d67c3aa..fd1e808 100644
--- a/controllers/BackendController.php
+++ b/controllers/BackendController.php
@@ -8,6 +8,7 @@
namespace skeeks\modules\cms\form\controllers;
use skeeks\cms\base\Controller;
use skeeks\modules\cms\form\models\Form;
+use skeeks\modules\cms\form\models\FormField;
use skeeks\modules\cms\form\models\FormSendMessage;
use yii\filters\VerbFilter;
use yii\helpers\ArrayHelper;
@@ -67,14 +68,16 @@ class BackendController extends Controller
//Все проверки прошли, формируем модель отправленного сообщения и сохраняем ее
$modelFormSendMessage = new FormSendMessage();
+ $modelFormSendMessage->data_values = $model->attributeValues();
+ $modelFormSendMessage->data_labels = $model->attributeLabels();
-
- $modelFormSendMessage->data = $model->getValues();
$modelFormSendMessage->page_url = \Yii::$app->request->referrer;
$modelFormSendMessage->form_id = $formId;
if ($modelFormSendMessage->save())
{
+ $modelFormSendMessage->notify();
+
$response['success'] = true;
$response['message'] = 'Успешно отправлена';
} else
diff --git a/mail/send-message.php b/mail/send-message.php
new file mode 100644
index 0000000..58ca869
--- /dev/null
+++ b/mail/send-message.php
@@ -0,0 +1,48 @@
+
+ * @link http://skeeks.com/
+ * @copyright 2010 SkeekS (СкикС)
+ * @date 19.03.2015
+ */
+use skeeks\cms\mail\helpers\Html;
+/**
+ * @var $formSendMessage \skeeks\modules\cms\form\models\FormSendMessage
+ * @var $form \skeeks\modules\cms\form\models\Form
+ * @var $formField \skeeks\modules\cms\form\models\FormField
+ */
+?>
+= Html::beginTag('h1'); ?>
+ Отправка формы «= \yii\helpers\Html::encode($form->name)?>» #= $formSendMessage->id; ?>
+= Html::endTag('h1'); ?>
+
+= Html::beginTag('p'); ?>
+ Форма была заполнена и успешно отправлена со страницы: = Html::a($formSendMessage->page_url, $formSendMessage->page_url); ?>
+ Дата и время отправки: = \Yii::$app->formatter->asDatetime($formSendMessage->created_at) ?>
+ Уникальный номер сообщения: = $formSendMessage->id; ?>
+= Html::endTag('p'); ?>
+
+= Html::beginTag('h3'); ?>
+ Данные формы:
+= Html::endTag('h3'); ?>
+
+= Html::beginTag('p'); ?>
+ foreach((array) $form->fields() as $formField) : ?>
+ if ($value = \yii\helpers\ArrayHelper::getValue((array) $formSendMessage->data_values, $formField->attribute)) : ?>
+ = Html::beginTag('b'); ?>
+ = $formField->normalName() ?>:
+ = Html::endTag('b'); ?>
+ = Html::encode($value) ?>
+
+ endif; ?>
+ endforeach; ?>
+= Html::endTag('p'); ?>
+
+
+= Html::beginTag('h5'); ?>
+ Дополнительная информация:
+= Html::endTag('h5'); ?>
+
+= Html::beginTag('p'); ?>
+ Дополнительные данные по данному сообщению можно посмотреть = Html::a('тут', \skeeks\cms\helpers\UrlHelper::construct('form/admin-form-send-message/update', ['id' => $formSendMessage->id])->enableAdmin()->enableAbsolute()->toString()); ?>.
+= Html::endTag('p'); ?>
\ No newline at end of file
diff --git a/migrations/m150307_162740_create_form_send_messages_table.php b/migrations/m150307_162740_create_form_send_messages_table.php
index e48fa42..3c281d4 100644
--- a/migrations/m150307_162740_create_form_send_messages_table.php
+++ b/migrations/m150307_162740_create_form_send_messages_table.php
@@ -34,7 +34,8 @@ class m150307_162740_create_form_send_messages_table extends Migration
'processed_by' => Schema::TYPE_INTEGER . ' NULL', //пользователь который принял заявку
- 'data' => Schema::TYPE_TEXT . ' NULL', //Данные с формы в серилизованном виде
+ 'data_values' => Schema::TYPE_TEXT . ' NULL', //Данные с формы в серилизованном виде
+ 'data_labels' => Schema::TYPE_TEXT . ' NULL', //Данные с формы в серилизованном виде
'emails' => Schema::TYPE_TEXT . ' NULL', //email на которые были отправлены уведомления
'phones' => Schema::TYPE_TEXT . ' NULL', //Телефоны на которые были отправлены уведомления
diff --git a/models/Form.php b/models/Form.php
index c01cafc..5657b8a 100644
--- a/models/Form.php
+++ b/models/Form.php
@@ -94,7 +94,7 @@ class Form extends Core
/**
* @return \yii\db\ActiveQuery
*/
- public function getFormEmails()
+ public function findFormEmails()
{
return $this->hasMany(FormEmail::className(), ['form_id' => 'id']);
}
diff --git a/models/FormField.php b/models/FormField.php
index 2eb59e8..efec303 100644
--- a/models/FormField.php
+++ b/models/FormField.php
@@ -215,8 +215,21 @@ class FormField extends Core
}
+ /**
+ * @return string
+ */
public function normalName()
{
- return $this->
+ if ($this->name)
+ {
+ return (string) $this->name;
+ }
+
+ if ($this->label)
+ {
+ return (string) $this->label;
+ }
+
+ return (string) $this->attribute;
}
}
\ No newline at end of file
diff --git a/models/FormSendMessage.php b/models/FormSendMessage.php
index 176dc9e..aaaee4f 100644
--- a/models/FormSendMessage.php
+++ b/models/FormSendMessage.php
@@ -15,6 +15,8 @@ use skeeks\cms\models\behaviors\HasStatus;
use skeeks\cms\models\behaviors\Implode;
use skeeks\cms\models\behaviors\Serialize;
use skeeks\cms\models\Core;
+use yii\helpers\ArrayHelper;
+use yii\helpers\Html;
/**
* This is the model class for table "{{%form_send_message}}".
@@ -64,7 +66,7 @@ class FormSendMessage extends Core
Serialize::className() =>
[
'class' => Serialize::className(),
- 'fields' => ['data', 'data_server', 'data_session', 'data_cookie', 'additional_data', 'data_request']
+ 'fields' => ['data_labels', 'data_values', 'data_server', 'data_session', 'data_cookie', 'additional_data', 'data_request']
],
Implode::className() =>
@@ -82,7 +84,7 @@ class FormSendMessage extends Core
{
return array_merge(parent::rules(), [
[['created_by', 'updated_by', 'created_at', 'updated_at', 'processed_by', 'status', 'form_id'], 'integer'],
- [['data', 'emails', 'phones', 'email_message', 'phone_message', 'data_server', 'data_session', 'data_cookie', 'data_request', 'additional_data'], 'safe'],
+ [['emails', 'phones', 'email_message', 'phone_message', 'data_server', 'data_session', 'data_cookie', 'data_request', 'additional_data', 'data_labels', 'data_values'], 'safe'],
[['ip'], 'string', 'max' => 32],
[['page_url'], 'string', 'max' => 500],
[['form_id'], 'required'],
@@ -148,8 +150,45 @@ class FormSendMessage extends Core
/**
* @return \yii\db\ActiveQuery
*/
- public function getForm()
+ public function findForm()
{
- return $this->hasOne(FormForm::className(), ['id' => 'form_id']);
+ return $this->hasOne(Form::className(), ['id' => 'form_id']);
+ }
+
+
+
+ /**
+ * Уведомить всех кого надо и как надо
+ */
+ public function notify()
+ {
+ /**
+ * @var Form $form
+ */
+ $form = $this->findForm()->one();
+
+ if ($form)
+ {
+ $emails = $form->findFormEmails()->all();
+
+ if ($emails)
+ {
+ foreach ($emails as $formEmail)
+ {
+ //\Yii::$app->mailer->setViewPath(\Yii::$app->getModule('form')->basePath . '/mail');
+
+
+ \Yii::$app->mailer->compose('@skeeks/modules/cms/form/mail/send-message', [
+ 'form' => $form,
+ 'formSendMessage' => $this
+ ])
+ ->setFrom([\Yii::$app->params['supportEmail'] => \Yii::$app->name])
+ ->setTo($formEmail->value)
+ ->setSubject("Отправка формы «{$form->name}» #" . $this->id)
+ ->send();
+
+ }
+ }
+ }
}
}
\ No newline at end of file
diff --git a/models/FormValidateModel.php b/models/FormValidateModel.php
index b21a6f6..e5d576e 100644
--- a/models/FormValidateModel.php
+++ b/models/FormValidateModel.php
@@ -52,7 +52,7 @@ class FormValidateModel extends Model
/**
* @return array
*/
- public function getValues()
+ public function attributeValues()
{
$result = parent::rules();
@@ -66,26 +66,7 @@ class FormValidateModel extends Model
return $result;
}
- /**
- * @return array
- */
- public function getFieldsValues()
- {
- $result = parent::rules();
-
- foreach ($this->modelForm->fields() as $field)
- {
- if ($this->getAttribute($field->attribute))
- {
- $result[$field->attribute] = [
- 'field' => $field,
- 'value' => $this->getAttribute($field->attribute)
- ];
- }
- }
- return $result;
- }
/**
* @var array attribute values indexed by attribute names
@@ -251,7 +232,7 @@ class FormValidateModel extends Model
foreach ($this->modelForm->fields() as $field)
{
- $result[$field->attribute] = $field->label;
+ $result[$field->attribute] = $field->normalName();
}
return $result;