Blame view

frontend/controllers/SiteController.php 10.7 KB
abf1649b   andryeyev   Чистая установка ...
1
2
3
4
5
6
7
8
9
  <?php
  namespace frontend\controllers;
  
  use Yii;
  use common\models\LoginForm;
  use frontend\models\PasswordResetRequestForm;
  use frontend\models\ResetPasswordForm;
  use frontend\models\SignupForm;
  use frontend\models\ContactForm;
0012685b   Yarik   Многоязычные опции
10
11
  use frontend\models\Options;
  use frontend\models\OptionValues;
abf1649b   andryeyev   Чистая установка ...
12
13
14
15
16
  use yii\base\InvalidParamException;
  use yii\web\BadRequestHttpException;
  use yii\web\Controller;
  use yii\filters\VerbFilter;
  use yii\filters\AccessControl;
0012685b   Yarik   Многоязычные опции
17
18
  use frontend\models\OptionsToValues;
  use yii\validators\EmailValidator;
280e92c2   Dmitryi   авторизация через...
19
20
  use common\models\User;
  use yii\helpers\VarDumper;
703388f5   andryeyev   + pageController
21
  use common\models\Page; 
b15a9aec   Yarik   Добавил языки, ад...
22
  use frontend\models\Option;
bb8cf49c   Dmitryi   user auth
23
24
  use common\models\Social;
  
bb7d15c5   andryeyev   Итерация 3 (Templ...
25
  
abf1649b   andryeyev   Чистая установка ...
26
27
28
29
30
31
32
33
34
35
36
37
38
  /**
   * Site controller
   */
  class SiteController extends Controller
  {
      /**
       * @inheritdoc
       */
      public function behaviors()
      {
          return [
              'access' => [
                  'class' => AccessControl::className(),
6506d20d   Yarik   Коммит 25.15.2015...
39
                  'only' => ['logout', 'signup', 'index'],
abf1649b   andryeyev   Чистая установка ...
40
41
42
43
44
45
46
47
48
49
50
                  'rules' => [
                      [
                          'actions' => ['signup'],
                          'allow' => true,
                          'roles' => ['?'],
                      ],
                      [
                          'actions' => ['logout'],
                          'allow' => true,
                          'roles' => ['@'],
                      ],
6506d20d   Yarik   Коммит 25.15.2015...
51
52
53
54
55
                      [
                          'actions' => ['index'],
                          'allow' => true,
                          'roles' => ['@'],
                      ]
abf1649b   andryeyev   Чистая установка ...
56
57
58
59
60
61
62
63
                  ],
              ],
              'verbs' => [
                  'class' => VerbFilter::className(),
                  'actions' => [
                      'logout' => ['post'],
                  ],
              ],
280e92c2   Dmitryi   авторизация через...
64
65
66
67
68
               'eauth' => [
                          // required to disable csrf validation on OpenID requests
                          'class' => \nodge\eauth\openid\ControllerBehavior::className(),
                          'only' => ['login'],
                      ],
abf1649b   andryeyev   Чистая установка ...
69
70
71
72
73
74
75
          ];
      }
  
      /**
       * @inheritdoc
       */
      public function actions()
0e2718b7   andryeyev   + Рекурсивное мен...
76
      {
abf1649b   andryeyev   Чистая установка ...
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
          return [
              'error' => [
                  'class' => 'yii\web\ErrorAction',
              ],
              'captcha' => [
                  'class' => 'yii\captcha\CaptchaAction',
                  'fixedVerifyCode' => YII_ENV_TEST ? 'testme' : null,
              ],
          ];
      }
  
      /**
       * Displays homepage.
       *
       * @return mixed
       */
      public function actionIndex()
8609d311   andryeyev   Парсинг url и под...
94
      {
8609d311   andryeyev   Парсинг url и под...
95
          return $this->render('index'); 
abf1649b   andryeyev   Чистая установка ...
96
      }
7c9d9ca1   andryeyev   Передел после сов...
97
98
99
100
101
102
      
      /**
       * ===================
       * ==== BASIC YII ====
       * ===================
       */
abf1649b   andryeyev   Чистая установка ...
103
104
105
106
107
108
  
      /**
       * Logs in a user.
       *
       * @return mixed
       */
abf1649b   andryeyev   Чистая установка ...
109
110
      public function actionLogin()
      {
bb8cf49c   Dmitryi   user auth
111
112
113
114
  
      // creat new model table Social and new model User
      $social = new Social();
      $user = new User();
280e92c2   Dmitryi   авторизация через...
115
116
          
      $serviceName = Yii::$app->getRequest()->getQueryParam('service');
bb8cf49c   Dmitryi   user auth
117
  
280e92c2   Dmitryi   авторизация через...
118
119
120
121
122
123
124
125
          if (isset($serviceName)) {
              /** @var $eauth \nodge\eauth\ServiceBase */
              $eauth = Yii::$app->get('eauth')->getIdentity($serviceName);
              $eauth->setRedirectUrl(Yii::$app->getUser()->getReturnUrl());
              $eauth->setCancelUrl(Yii::$app->getUrlManager()->createAbsoluteUrl('site/login'));
  
              try {
                  if ($eauth->authenticate()) {
280e92c2   Dmitryi   авторизация через...
126
127
128
                      $identity = User::findByEAuth($eauth);
                      Yii::$app->getUser()->login($identity);
  
bb8cf49c   Dmitryi   user auth
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
                      //Save date get social network in database
                      if (! $social::find()->where(['social_user_id' => $identity[profile][id], 'social_name' => $identity[profile][service]])->exists()) {
                          $name = explode(' ',$identity[profile][name]);
                          $user->firstname = $name[0];
                          $user->lastname = $name[1];
                          $user->id_system_date = date("d.m.y.H:i:s");
                          $user->save();
                          $social->social_name = $identity[profile][service];
                          $social->social_user_id = $identity[profile][id];
                          $social->user_id = $user->id;
                          $social->validate();
                          $social->errors;
                          $social->save();
                      }
  
280e92c2   Dmitryi   авторизация через...
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
                      // special redirect with closing popup window
                      $eauth->redirect();
                  }
                  else {
                      // close popup window and redirect to cancelUrl
                      $eauth->cancel();
                  }
              }
              catch (\nodge\eauth\ErrorException $e) {
                  // save error to show it later
                  Yii::$app->getSession()->setFlash('error', 'EAuthException: '.$e->getMessage());
  
                  // close popup window and redirect to cancelUrl
  //              $eauth->cancel();
                  $eauth->redirect($eauth->getCancelUrl());
              }
          }
          
          
          
          
abf1649b   andryeyev   Чистая установка ...
165
166
167
168
169
170
171
172
173
174
175
176
177
          if (!\Yii::$app->user->isGuest) {
              return $this->goHome();
          }
  
          $model = new LoginForm();
          if ($model->load(Yii::$app->request->post()) && $model->login()) {
              return $this->goBack();
          } else {
              return $this->render('login', [
                  'model' => $model,
              ]);
          }
      }
7c9d9ca1   andryeyev   Передел после сов...
178
  
abf1649b   andryeyev   Чистая установка ...
179
180
181
182
183
      /**
       * Logs out the current user.
       *
       * @return mixed
       */
abf1649b   andryeyev   Чистая установка ...
184
185
186
187
188
189
      public function actionLogout()
      {
          Yii::$app->user->logout();
  
          return $this->goHome();
      }
7c9d9ca1   andryeyev   Передел после сов...
190
   
abf1649b   andryeyev   Чистая установка ...
191
192
193
194
195
      /**
       * Displays contact page.
       *
       * @return mixed
       */
abf1649b   andryeyev   Чистая установка ...
196
      public function actionContact()
280e92c2   Dmitryi   авторизация через...
197
      {   
f91c1ae8   Dmitryi   new commit compon...
198
          Yii::$app->user->logout();
280e92c2   Dmitryi   авторизация через...
199
200
201
202
          $identity = Yii::$app->getUser()->getIdentity();
          var_dump($identity[profile]);
          die();
          
abf1649b   andryeyev   Чистая установка ...
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
          $model = new ContactForm();
          if ($model->load(Yii::$app->request->post()) && $model->validate()) {
              if ($model->sendEmail(Yii::$app->params['adminEmail'])) {
                  Yii::$app->session->setFlash('success', 'Thank you for contacting us. We will respond to you as soon as possible.');
              } else {
                  Yii::$app->session->setFlash('error', 'There was an error sending email.');
              }
  
              return $this->refresh();
          } else {
              return $this->render('contact', [
                  'model' => $model,
              ]);
          }
      }
abf1649b   andryeyev   Чистая установка ...
218
219
  
      /**
abf1649b   andryeyev   Чистая установка ...
220
221
222
223
       * Signs user up.
       *
       * @return mixed
       */
abf1649b   andryeyev   Чистая установка ...
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
      public function actionSignup()
      {
          $model = new SignupForm();
          if ($model->load(Yii::$app->request->post())) {
              if ($user = $model->signup()) {
                  if (Yii::$app->getUser()->login($user)) {
                      return $this->goHome();
                  }
              }
          }
  
          return $this->render('signup', [
              'model' => $model,
          ]);
      }
8609d311   andryeyev   Парсинг url и под...
239
      
abf1649b   andryeyev   Чистая установка ...
240
241
242
243
      /**
       * Requests password reset.
       *
       * @return mixed
7c9d9ca1   andryeyev   Передел после сов...
244
       */   
abf1649b   andryeyev   Чистая установка ...
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
      public function actionRequestPasswordReset()
      {
          $model = new PasswordResetRequestForm();
          if ($model->load(Yii::$app->request->post()) && $model->validate()) {
              if ($model->sendEmail()) {
                  Yii::$app->session->setFlash('success', 'Check your email for further instructions.');
  
                  return $this->goHome();
              } else {
                  Yii::$app->session->setFlash('error', 'Sorry, we are unable to reset password for email provided.');
              }
          }
  
          return $this->render('requestPasswordResetToken', [
              'model' => $model,
          ]);
      }
abf1649b   andryeyev   Чистая установка ...
262
263
264
265
266
267
268
269
  
      /**
       * Resets password.
       *
       * @param string $token
       * @return mixed
       * @throws BadRequestHttpException
       */
abf1649b   andryeyev   Чистая установка ...
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
      public function actionResetPassword($token)
      {
          try {
              $model = new ResetPasswordForm($token);
          } catch (InvalidParamException $e) {
              throw new BadRequestHttpException($e->getMessage());
          }
  
          if ($model->load(Yii::$app->request->post()) && $model->validate() && $model->resetPassword()) {
              Yii::$app->session->setFlash('success', 'New password was saved.');
  
              return $this->goHome();
          }
  
          return $this->render('resetPassword', [
              'model' => $model,
          ]);
      }
64aac2e6   andryeyev   + fix после восст...
288
  
0012685b   Yarik   Многоязычные опции
289
290
291
292
293
      public function actionOptions() {
          $option_model = new Options();
          $option_list = $option_model->find()->where(1)->all();
          $option_values = array();
          $post = \Yii::$app->request->post();
280e92c2   Dmitryi   авторизация через...
294
          
0012685b   Yarik   Многоязычные опции
295
296
297
298
299
300
301
302
303
304
305
          if(!empty(\Yii::$app->request->post())) {
              $options_to_values = array();
              $hasErrors = false;
              foreach($post['options'] as $key => $val) {
                  $options_to_values[$key] = new OptionsToValues();
                  $options_to_values[$key]['option_id'] = $val['option_id'];
                  $options_to_values[$key]->loadDefaultValues();
                  if($options_to_values[$key]->save()) {
                      $option_values[$key] = new OptionValues();
                      $option_values[$key]['option_value_id'] = $options_to_values[$key]->getAttribute('option_value_id');
                      $option_values[$key]['option_value_text'] = $val['option_value'];
f1ea4c01   andryeyev   lang_id => langua...
306
307
                      if($options_to_values[$key]->option->getAttribute('option_translatable') == 0 || empty($val['option_language_id'])) {
                          $option_values[$key]['option_language_id'] = 0;
0012685b   Yarik   Многоязычные опции
308
                      } else {
f1ea4c01   andryeyev   lang_id => langua...
309
                          $option_values[$key]['option_language_id'] = $val['option_language_id'];
0012685b   Yarik   Многоязычные опции
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
                      }
                      if(!$option_values[$key]->save()) {  
                          $options_to_values[$key]->delete();
                          $hasErrors = true;
                      }
                  }
              }
              if(hasErrors) {
                  $data['option_values'] = $option_values;
                  return $this->render('options', ['options' => $data, 'post' => $post]);
              } else {
                  var_dump($data);
              }
          } else {
              foreach($option_list as $index => $option) {
                  $option_values[$option->getAttribute('option_id')] = new OptionValues();
              }
              $data['option_values'] = $option_values;
              return $this->render('options', ['options' => $data, 'post' => $post]);
          }
64aac2e6   andryeyev   + fix после восст...
330
      }
b15a9aec   Yarik   Добавил языки, ад...
331
332
333
334
335
336
337
338
      
      public function actionFeedback() {
      	$form[0] = Option::create(\Yii::$app->request->post(), 'Feedback', 1, [['name' => 'one_name', 'template' => 'text', 'translate' => false], ['name' => 'phone', 'template' => 'text', 'translate' => false], ['name' => 'message', 'template' => 'text', 'translate' => false]], false);
      	if($form[0]['success'] == false) {
      		return $this->render('feedback', ['forms' => $form]);
      	} else {
      		return $this->render('index');
      	}
0012685b   Yarik   Многоязычные опции
339
      }
abf1649b   andryeyev   Чистая установка ...
340
  }