[ 'class' => 'yii\web\ErrorAction', ], ]; } /** * @inheritdoc */ public function behaviors() { return [ 'verbs' => [ 'class' => VerbFilter::className(), 'actions' => [ 'feedback' => [ 'post' ], ], ], ]; } /** * Displays homepage. * * @return mixed */ public function actionIndex() { $speakers = Speaker::find() ->with( [ 'language', 'image', ] ) ->where([ 'status' => true ]) ->orderBy('sort') ->all(); return $this->render( 'index', [ 'speakers' => $speakers, ] ); } /** * Displays contact page. * * @return mixed */ public function actionContact() { $contact = new Feedback(); return $this->render( 'contact', [ 'contact' => $contact, ] ); } /** * Displays about page. * * @return mixed */ public function actionAbout() { return $this->render('about'); } /** * Action to view robots.txt file dinamycli * * @return string */ public function actionRobots() { $response = \Yii::$app->response; /** * @var Settings $settings */ $settings = Settings::find() ->one(); $temp = tmpfile(); fwrite($temp, $settings->robots); $meta = stream_get_meta_data($temp); $response->format = $response::FORMAT_RAW; $response->headers->set('Content-Type', 'text/plain'); return $this->renderFile($meta[ 'uri' ]); } public function actionFeedback() { Yii::$app->response->format = Response::FORMAT_JSON; /** * @var Mailer $mailer */ $mailer = \Yii::$app->get('smtpmailer'); $settings = Settings::getInstance(); if (empty(Yii::$app->request->post())) { throw new BadRequestHttpException(); } else { $model = new Feedback(); if ($model->load(Yii::$app->request->post()) && $model->save()) { $mailer->compose( 'feedback', [ 'model' => $model, ] ) ->setFrom('artbox@domain.com') ->setTo($settings->email) ->setSubject(\Yii::t('app', 'Feedback')) ->send(); return [ 'success' => true, 'message' => 'Success message', 'alert' => '

Success

Success text

', ]; } else { return [ 'success' => false, 'error' => $model->errors, ]; } } } public function actionRegister() { $model = new Customer(); if ($model->load(\Yii::$app->request->post())) { $model->file = UploadedFile::getInstance($model, 'file'); if ($model->upload() and $model->save()) { \Yii::$app->session->setFlash( 'success', \Yii::t( 'app', 'Дякуемо за реєстрацію. Підтвердження участі буде відправлено на вказаний email' ) ); try { $this->mail($model); } catch (\Exception $exception) { \Yii::error($exception->getMessage() . '. On request: ' . $model->id); return $this->redirect([ 'site/index' ]); } catch (\Throwable $throwable) { \Yii::error($throwable->getMessage() . '. On request: ' . $model->id); return $this->redirect([ 'site/index' ]); } return $this->redirect([ 'site/index' ]); } } return $this->render( 'signup', [ 'model' => $model, ] ); } /** * @param $model Customer */ public function mail($model) { \Yii::$app->mailer->compose( 'request', [ 'model' => $model, ] ) ->setFrom( [ 'artboxcore@gmail.com' => 'Artbox Core', ] ) ->setTo( [ 'kennen.md@gmail.com', 'kazimirova.artweb@gmail.com', ] ) ->setSubject('U have request!') ->attach(\Yii::getAlias('@' . trim($model->image, '/'))) ->send(); } }