[ 'class' => 'yii\web\ErrorAction', ], ]; } /** * @inheritdoc */ public function behaviors() { return [ 'verbs' => [ 'class' => VerbFilter::className(), 'actions' => [ 'feedback' => [ 'post' ], ], ], ]; } /** * Displays homepage. * * @return mixed */ public function actionIndex() { $categories = Category::find() ->with('categories.lang', 'lang') ->where([ 'level' => 0 ]) ->all(); $topItems = Product::find() ->with('lang', 'image', 'variants') ->where('mask & 1 != 0') ->limit(20) ->all(); $newItems = Product::find() ->with('lang', 'image', 'variants') ->where('mask & 2 != 0') ->limit(20) ->all(); $saleItems = Product::find() ->with('lang', 'image', 'variants') ->where('mask & 4 != 0') ->limit(20) ->all(); $productCount = Product::find() ->count(); $brandCount = Brand::find() ->count(); $brands = Brand::find() ->where([ 'status' => true ]) ->andWhere( [ 'not', [ 'image_id' => null ], ] ) ->orderBy([ 'sort' => SORT_ASC ]) ->limit(6) ->with('image') ->all(); $articles = Article::find() ->orderBy('sort') ->with( [ 'lang', 'image', 'category.lang', ] ) ->limit(4) ->all(); return $this->render( 'index', [ 'categories' => $categories, 'topItems' => $topItems, 'newItems' => $newItems, 'saleItems' => $saleItems, 'productCount' => $productCount, 'brandCount' => $brandCount, 'brands' => $brands, 'articles' => $articles, ] ); } /** * 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; if (empty(Yii::$app->request->post())) { throw new BadRequestHttpException(); } else { $model = new Feedback(); if ($model->load(Yii::$app->request->post()) && $model->save()) { return [ 'success' => true, 'message' => 'Success message', 'alert' => '

Success

Success text

', ]; } else { return [ 'success' => false, 'error' => $model->errors, ]; } } } public function actionLogin() { if (!\Yii::$app->user->isGuest) { return $this->redirect([ 'index' ]); } $loginForm = new LoginForm(); $signupForm = new SignupForm(); if ($loginForm->load(\Yii::$app->request->post()) && $loginForm->login()) { if (!empty($loginForm->returnUrl)) { return $this->redirect($loginForm->returnUrl); } else { return $this->redirect([ 'index' ]); } } if ($signupForm->load(\Yii::$app->request->post())) { if ($user = $signupForm->signup()) { if (\Yii::$app->getUser() ->login($user) ) { return $this->redirect([ 'index' ]); } } } return $this->render( 'login', [ 'loginForm' => $loginForm, 'signupForm' => $signupForm, ] ); } public function actionLogout() { \Yii::$app->user->logout(); return $this->redirect([ 'index' ]); } /** * Requests password reset. * * @return mixed */ 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->redirect([ 'index' ]); } else { Yii::$app->session->setFlash( 'error', 'Sorry, we are unable to reset password for the provided email address.' ); } } return $this->render( 'requestPasswordResetToken', [ 'model' => $model, ] ); } /** * Resets password. * * @param string $token * * @return mixed * @throws BadRequestHttpException */ 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 saved.'); return $this->redirect([ 'index' ]); } return $this->render( 'resetPassword', [ 'model' => $model, ] ); } }