From 17838b1f2335ef26898d7c6ccd165109ab7480aa Mon Sep 17 00:00:00 2001 From: Egorka Date: Mon, 3 Sep 2018 01:57:40 +0300 Subject: [PATCH] Project information --- .../modules/forms/controllers/FormController.php | 206 +++++++++++---------- composer.json | 15 +- 2 files changed, 117 insertions(+), 104 deletions(-) diff --git a/common/modules/forms/controllers/FormController.php b/common/modules/forms/controllers/FormController.php index 6bf941f..d5b0228 100644 --- a/common/modules/forms/controllers/FormController.php +++ b/common/modules/forms/controllers/FormController.php @@ -6,7 +6,6 @@ namespace common\modules\forms\controllers; - use common\modules\forms\entities\Form; use common\modules\forms\services\FormMessageManageService; use frontend\components\FrontendController; @@ -19,97 +18,114 @@ use Yii; class FormController extends FrontendController { - public $mailer; - public $message_service; - - public function __construct( string $id, $module, MailerInterface $mailer, FormMessageManageService $message_service, array $config = [] ) { - parent::__construct( $id, $module, $config ); - $this->mailer = $mailer; - $this->message_service = $message_service; - } - - public function actionSend($id) - { - $form = $this->findModel($id); - - $className = 'DynaForm' . $id; - $classPath = '\\common\\modules\\forms\\runtime\\' . $className; - - /* @var $dynaForm Model */ - $dynaForm = new $classPath(); - - if ($dynaForm->load(Yii::$app->request->post()) && $dynaForm->validate()) { - // send message - $this->sendMessage($form->data, $form, $dynaForm); - - if ($form->complete_page_id) { - return $this->redirect(['/pages/page/view', 'id' => $form->complete_page_id]); - } - //return $form->complete_text; - return $this->render('view', ['text' => $form->complete_text]); - } - return $this->redirect(Yii::$app->request->referrer); - } - - private function sendMessage($json_string, Form $form, $dynaForm) - { - $messageItems = $this->prepareItems($json_string, $dynaForm); - // save message - $this->message_service->create($form->id, Json::encode($messageItems, JSON_UNESCAPED_UNICODE)); - //prepare e-mail message - $to = isset($form->return) && $form->return ? explode(',',$form->return) : [Yii::$app->params['adminEmail']]; - $from = isset($form->from) && $form->from ? explode(',',$form->from) : [Yii::$app->params['adminEmail']]; - $reply = isset($form->reply) && $form->reply ? explode(',',$form->reply) : $from; - - $sent = $this->mailer->compose( - ['html' => '@common/modules/forms/mail/form-html', 'text' => '@common/modules/forms/mail/form-text'], - ['items' => $messageItems] - ) - ->setTo($to) - ->setFrom($from) - ->setReplyTo($reply) - ->setSubject($form->subject) - ->send(); - if (!$sent) { - throw new \RuntimeException('Sending error.'); - } - } - - private function prepareItems($json_string, $dynaForm): array - { - $items = []; - $json = Json::decode($json_string, true); - foreach ($json as $item) { - if ($item['type'] == 'button') {continue;} - if ($item['type'] == 'paragraph') {continue;} - if ($item['type'] == 'header') {continue;} - - $item['name'] = str_replace( '-', '_', $item['name'] ); - $items[] = [ - 'key' => isset($item['label']) ? $item['label'] : '', - 'value' => is_array($dynaForm->{$item['name']}) ? implode(', ', array_map(function($el){return Html::encode($el);}, $dynaForm->{$item['name']})) : Html::encode($dynaForm->{$item['name']}), - ]; - } - return $items; - } - - /*private function prepareMessage($json_string, $dynaForm): string - { - $message = ''; - $json = Json::decode($json_string, true); - foreach ($json as $item) { - if ($item['type'] == 'button') {continue;} - $item['name'] = str_replace('-', '_', $item['name']); - $message.=$item['label'] . ': ' . Html::encode($dynaForm->{$item['name']}) . "\n"; - } - return $message; - }*/ - - protected function findModel($id): Form - { - if (($model = Form::findOne($id)) !== null) { - return $model; - } - throw new NotFoundHttpException('The requested form does not exist.'); - } -} \ No newline at end of file + public $mailer; + public $message_service; + + public function __construct( + string $id, + $module, + MailerInterface $mailer, + FormMessageManageService $message_service, + array $config = [] + ) { + parent::__construct($id, $module, $config); + $this->mailer = $mailer; + $this->message_service = $message_service; + } + + public function actionSend($id) + { + $form = $this->findModel($id); + + $className = 'DynaForm' . $id; + $classPath = '\\common\\modules\\forms\\runtime\\' . $className; + + /* @var $dynaForm Model */ + $dynaForm = new $classPath(); + + if ($dynaForm->load(Yii::$app->request->post()) && $dynaForm->validate()) { + // send message + $this->sendMessage($form->data, $form, $dynaForm); + + if ($form->complete_page_id) { + return $this->redirect(['/pages/page/view', 'id' => $form->complete_page_id]); + } + + //return $form->complete_text; + return $this->render('view', ['text' => $form->complete_text]); + } + + return $this->redirect(Yii::$app->request->referrer); + } + + private function sendMessage($json_string, Form $form, $dynaForm) + { + $messageItems = $this->prepareItems($json_string, $dynaForm); + // save message + $this->message_service->create($form->id, Json::encode($messageItems, JSON_UNESCAPED_UNICODE)); + //prepare e-mail message + $to = isset($form->return) && $form->return ? explode(',', $form->return) : [Yii::$app->params['adminEmail']]; + $from = isset($form->from) && $form->from ? explode(',', $form->from) : [Yii::$app->params['adminEmail']]; + $reply = isset($form->reply) && $form->reply ? explode(',', $form->reply) : $from; + + $sent = $this->mailer->compose( + ['html' => '@common/modules/forms/mail/form-html', 'text' => '@common/modules/forms/mail/form-text'], + ['items' => $messageItems] + ) + ->setTo($to) + ->setFrom($from) + ->setReplyTo($reply) + ->setSubject($form->subject) + ->send(); + if (!$sent) { + throw new \RuntimeException('Sending error.'); + } + } + + private function prepareItems($json_string, $dynaForm): array + { + $items = []; + $json = Json::decode($json_string, true); + foreach ($json as $item) { + if ($item['type'] == 'button') { + continue; + } + if ($item['type'] == 'paragraph') { + continue; + } + if ($item['type'] == 'header') { + continue; + } + + $item['name'] = str_replace('-', '_', $item['name']); + $items[] = [ + 'key' => isset($item['label']) ? $item['label'] : '', + 'value' => is_array($dynaForm->{$item['name']}) ? implode(', ', array_map(function ($el) { + return Html::encode($el); + }, $dynaForm->{$item['name']})) : Html::encode($dynaForm->{$item['name']}), + ]; + } + + return $items; + } + + /*private function prepareMessage($json_string, $dynaForm): string + { + $message = ''; + $json = Json::decode($json_string, true); + foreach ($json as $item) { + if ($item['type'] == 'button') {continue;} + $item['name'] = str_replace('-', '_', $item['name']); + $message.=$item['label'] . ': ' . Html::encode($dynaForm->{$item['name']}) . "\n"; + } + return $message; + }*/ + + protected function findModel($id): Form + { + if (($model = Form::findOne($id)) !== null) { + return $model; + } + throw new NotFoundHttpException('The requested form does not exist.'); + } +} diff --git a/composer.json b/composer.json index 2b00c31..f69687b 100644 --- a/composer.json +++ b/composer.json @@ -1,16 +1,13 @@ { - "name": "yiisoft/yii2-app-advanced", - "description": "Yii 2 Advanced Project Template", - "keywords": ["yii2", "framework", "advanced", "project template"], - "homepage": "http://www.yiiframework.com/", + "name": "zertex/zxcms", + "description": "Zertex CMS", + "keywords": ["Zertex", "CMS", "yii2", "framework", "advanced"], + "homepage": "https://cms.zertex.ru/", "type": "project", "license": "BSD-3-Clause", "support": { - "issues": "https://github.com/yiisoft/yii2/issues?state=open", - "forum": "http://www.yiiframework.com/forum/", - "wiki": "http://www.yiiframework.com/wiki/", - "irc": "irc://irc.freenode.net/yii", - "source": "https://github.com/yiisoft/yii2" + "issues": "https://gitlab.com/zertex/zxcms/issues", + "source": "https://gitlab.com/zertex/zxcms" }, "minimum-stability": "stable", "require": {