Blame view

frontend/modules/forms/controllers/SaveController.php 2.29 KB
c7f97c88   alex   Google recaptcha ...
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
  <?php
  
  namespace frontend\modules\forms\controllers;
  
  use artbox\core\forms\DynamicModel;
  use yii\web\Controller;
  use yii\web\Response;
  
  /**
   * Class SaveController
   *
   * @property \artbox\core\forms\Module $module
   * @package artbox\core\forms\controllers
   */
  class SaveController extends Controller
  {
  	/**
  	 * Custom data saving via POST
  	 *
  	 * @return bool|\yii\web\Response
  	 * @throws \yii\base\InvalidConfigException
  	 */
  	public function actionNoAjax()
  	{
  		$returnUrl = \Yii::$app->request->referrer;
  		$model = $this->module->model;
  		if (\Yii::$app->request->isPost and $model->load(\Yii::$app->request->post())) {
  			if ($model instanceof DynamicModel) {
  				$this->sendEmail($model);
  			} else {
  				if ($model->save()) {
  					if ($this->module->sendEmail) {
  						$this->sendEmail($model);
  						return $this->redirect($returnUrl);
  					}
  				} else {
  					return false;
  				}
  			}
  			return $this->redirect($returnUrl);
  
  		}
  		return $this->redirect($returnUrl);
  	}
  
  	/**
  	 * Action that saves data submited via AJAX
  	 *
  	 * @return array
  	 * @throws \yii\base\InvalidConfigException
  	 */
  	public function actionAjax()
  	{
  		\Yii::$app->response->format = Response::FORMAT_JSON;
  		$model = $this->module->model;
  		if (\Yii::$app->request->isPost and $model->load(\Yii::$app->request->post())) {
  			if ($model instanceof DynamicModel) {
  				$this->sendEmail($model);
  				return ['status' => 'success'];
  			} else {
94154eea   Alex Savenko   Добавление капчи ...
61
62
  
  				if ($model->save(false)) {
c7f97c88   alex   Google recaptcha ...
63
64
65
66
67
68
  					if ($this->module->sendEmail) {
  						$this->sendEmail($model);
  						return ['status' => 'success'];
  					}
  					return ['status' => 'success'];
  				} else {
94154eea   Alex Savenko   Добавление капчи ...
69
  					return ['status' => 'error','errors'=>$model->errors];
c7f97c88   alex   Google recaptcha ...
70
71
72
73
  				}
  			}
  
  		}
94154eea   Alex Savenko   Добавление капчи ...
74
  		return ['status' => 'error','error' => 'if doesent work'];
c7f97c88   alex   Google recaptcha ...
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
  	}
  
  	/**
  	 * @param $model
  	 *
  	 * @return bool
  	 * @throws \yii\base\InvalidConfigException
  	 */
  	public function sendEmail($model)
  	{
  
  		if ($this->module->mailer == null) {
  			$mailer = \Yii::$app->mailer;
  		} else {
  			$mailer = \Yii::$app->get($this->module->mailer);
  		}
  		return $mailer->compose(
  			[
  				'html' => $this->module->emailFile,
  				'text' => $this->module->emailFile,
  			],
  			[$model]
  		)
  			->setFrom([\Yii::$app->params['supportEmail'] => \Yii::$app->name . ' robot'])
  			->setTo($this->module->email)
  			->setSubject($this->module->subject)
  			->send();
  	}
  
  }