/** * @param null $type */ public function actionIndex($type = null) { $form = new FeedBackForm(); // если пользователь авторизован - подставить его данные if (Yii::app()->getUser()->isAuthenticated()) { $form->email = Yii::app()->getUser()->getProFileField('email'); $form->name = Yii::app()->getUser()->getProFileField('nick_name'); } // проверить не передан ли тип и присвоить его аттрибуту модели $form->type = empty($type) ? FeedBack::TYPE_DEFAULT : (int) $type; $module = Yii::app()->getModule('feedback'); if (Yii::app()->getRequest()->getIsPostRequest() && !empty($_POST['FeedBackForm'])) { $form->setAttributes(Yii::app()->getRequest()->getPost('FeedBackForm')); if ($form->validate()) { if ($this->feedback->send($form, $module)) { if (Yii::app()->getRequest()->getIsAjaxRequest()) { Yii::app()->ajax->success(Yii::t('FeedbackModule.feedback', 'Your message sent! Thanks!')); } Yii::app()->getUser()->setFlash(YFlashMessages::SUCCESS_MESSAGE, Yii::t('FeedbackModule.feedback', 'Your message sent! Thanks!')); $this->redirect($module->successPage ? [$module->successPage] : ['/feedback/contact/index/']); } else { if (Yii::app()->getRequest()->getIsAjaxRequest()) { Yii::app()->ajax->failure(Yii::t('FeedbackModule.feedback', 'It is not possible to send message!')); } Yii::app()->getUser()->setFlash(YFlashMessages::ERROR_MESSAGE, Yii::t('FeedbackModule.feedback', 'It is not possible to send message!')); } } else { if (Yii::app()->getRequest()->getIsAjaxRequest()) { Yii::app()->ajax->rawText(CActiveForm::validate($form)); } } } $this->render('index', ['model' => $form, 'module' => $module]); }
/** * @param FeedBackForm $form * @param FeedbackModule $module * @return bool */ public function send(FeedBackForm $form, FeedbackModule $module) { if (false === $form->validate()) { return false; } $backEnd = array_unique($module->backEnd); $success = true; if (is_array($backEnd)) { foreach ($backEnd as $storage) { $sender = new $storage(Yii::app()->mail, $module); if (!$sender->send($form)) { $success = false; } } } if (true === $success) { Yii::app()->eventManager->fire(FeedbackEvents::SEND_SUCCESS, new FeedbackSendEvent(Yii::app()->getUser(), $form)); } return $success; }
public function actionIndex() { $form = new FeedBackForm(); if (Yii::app()->request->isPostRequest && !empty($_POST['FeedBackForm'])) { $form->setAttributes($_POST['FeedBackForm']); $module = Yii::app()->getModule('feedback'); if ($form->validate()) { // обработка запроса $backEnd = array_unique($module->backEnd); if (is_array($backEnd) && count($backEnd)) { // запись в базу if (in_array('db', $backEnd)) { $feedback = new FeedBack(); $feedback->setAttributes(array('name' => $form->name, 'email' => $form->email, 'theme' => $form->theme, 'text' => $form->text, 'type' => $form->type)); if ($feedback->save()) { Yii::log(Yii::t('feedback', 'Обращение пользователя добавлено в базу!'), CLogger::LEVEL_INFO, FeedbackModule::$logCategory); Yii::app()->user->setFlash(YFlashMessages::NOTICE_MESSAGE, Yii::t('feedback', 'Ваше сообщение отправлено! Спасибо!')); } else { $form->addErrors($feedback->getErrors()); Yii::log(Yii::t('feedback', 'Ошибка при добавлении обращения пользователя в базу!'), CLogger::LEVEL_ERROR, FeedbackModule::$logCategory); Yii::app()->user->setFlash(YFlashMessages::ERROR_MESSAGE, Yii::t('feedback', 'При отправке сообщения произошла ошибка! Повторите попытку позже!')); $this->render('index', array('model' => $form)); } } if (in_array('email', $backEnd) && count($module->emails)) { $emailBody = $this->renderPartial('application.modules.feedback.views.email.feedbackEmail', array('model' => $feedback), true); foreach ($module->emails as $mail) { Yii::app()->mail->send($module->notifyEmailFrom, $mail, $form->theme, $emailBody); } Yii::log(Yii::t('feedback', 'Обращение пользователя отправлено на email!'), CLogger::LEVEL_INFO, FeedbackModule::$logCategory); Yii::app()->user->setFlash(YFlashMessages::NOTICE_MESSAGE, Yii::t('feedback', 'Ваше сообщение отправлено! Спасибо!')); $this->redirect(array('/feedback/contact')); } } } } $this->render('index', array('model' => $form)); }
public function actionIndex() { $form = new FeedBackForm(); // если пользователь авторизован - подставить его данные if (Yii::app()->user->isAuthenticated()) { $form->email = Yii::app()->user->getState('email'); $form->name = Yii::app()->user->getState('nick_name'); } // проверить не передан ли тип и присвоить его аттрибуту модели $form->type = (int) Yii::app()->getRequest()->getParam('type', FeedBack::TYPE_DEFAULT); $module = Yii::app()->getModule('feedback'); if (Yii::app()->getRequest()->getIsPostRequest() && !empty($_POST['FeedBackForm'])) { $form->setAttributes($_POST['FeedBackForm']); if ($form->validate()) { // обработка запроса $backEnd = array_unique($module->backEnd); if (is_array($backEnd) && count($backEnd)) { // запись в базу if (in_array('db', $backEnd)) { unset($backEnd['db']); $feedback = new FeedBack(); $feedback->setAttributes(array('name' => $form->name, 'email' => $form->email, 'theme' => $form->theme, 'text' => $form->text, 'phone' => $form->phone, 'type' => $form->type)); if ($feedback->save()) { Yii::log(Yii::t('FeedbackModule.feedback', 'Feedback was inserted in DB'), CLogger::LEVEL_INFO, FeedbackModule::$logCategory); if ($module->sendConfirmation && !count($backEnd)) { $this->feedbackConfirmationEmail($feedback); } Yii::app()->user->setFlash(yupe\widgets\YFlashMessages::SUCCESS_MESSAGE, Yii::t('FeedbackModule.feedback', 'Your message sent! Thanks!')); if (!count($backEnd)) { if (Yii::app()->getRequest()->getIsAjaxRequest()) { Yii::app()->ajax->success(Yii::t('FeedbackModule.feedback', 'Your message sent! Thanks!')); } $this->redirect($module->successPage ? array($module->successPage) : array('/feedback/contact/faq')); } } else { Yii::log(Yii::t('FeedbackModule.feedback', 'Error when trying to record feedback in DB'), CLogger::LEVEL_ERROR, FeedbackModule::$logCategory); Yii::app()->user->setFlash(yupe\widgets\YFlashMessages::ERROR_MESSAGE, Yii::t('FeedbackModule.feedback', 'There is an error when trying to send message! Please try later!')); $this->render('index', array('model' => $form, 'module' => $module)); } } // отправка на почту if (in_array('email', $backEnd) && count(explode(',', $module->emails))) { $emailBody = $this->renderPartial('feedbackEmail', array('model' => $feedback), true); foreach (explode(',', $module->emails) as $mail) { Yii::app()->mail->send($feedback->email, $mail, $form->theme, $emailBody); } if ($module->sendConfirmation) { $this->feedbackConfirmationEmail($feedback); } Yii::log(Yii::t('FeedbackModule.feedback', 'Feedback was send on e-mail'), CLogger::LEVEL_INFO, FeedbackModule::$logCategory); Yii::app()->user->setFlash(yupe\widgets\YFlashMessages::SUCCESS_MESSAGE, Yii::t('FeedbackModule.feedback', 'Your message sent! Thanks!')); if (Yii::app()->getRequest()->getIsAjaxRequest()) { Yii::app()->ajax->success(Yii::t('FeedbackModule.feedback', 'Your message sent! Thanks!')); } $this->redirect($module->successPage ? array($module->successPage) : array('/feedback/contact/faq')); } } Yii::app()->user->setFlash(yupe\widgets\YFlashMessages::ERROR_MESSAGE, Yii::t('FeedbackModule.feedback', 'It is not possible to send message!')); if (Yii::app()->getRequest()->getIsAjaxRequest()) { Yii::app()->ajax->failure(Yii::t('FeedbackModule.feedback', 'It is not possible to send message!')); } $this->redirect(array('/feedback/contact/index/')); } else { if (Yii::app()->getRequest()->getIsAjaxRequest()) { Yii::app()->ajax->failure(Yii::t('FeedbackModule.feedback', 'Please check e-mail and fill the form correct.')); } } } $this->render('index', array('model' => $form, 'module' => $module)); }
public function actionQuestionForm($type = null) { $form = new FeedBackForm(); // если пользователь авторизован - подставить его данные if (Yii::app()->user->isAuthenticated()) { $form->email = Yii::app()->getUser()->getProFileField('email'); $form->name = Yii::app()->getUser()->getProFileField('nick_name'); } // проверить не передан ли тип и присвоить его аттрибуту модели $form->type = empty($type) ? FeedBack::TYPE_DEFAULT : (int) $type; $module = Yii::app()->getModule('feedback'); if (Yii::app()->getRequest()->getIsPostRequest() && !empty($_POST['FeedBackForm'])) { $form->setAttributes(Yii::app()->getRequest()->getPost('FeedBackForm')); $form->theme = 'Вопрос'; if ($form->validate()) { // обработка запроса $backEnd = array_unique($module->backEnd); $success = true; if (is_array($backEnd)) { foreach ($backEnd as $storage) { $sender = new $storage(Yii::app()->mail, $module); if (!$sender->send($form)) { $success = false; } } } if ($success) { if (Yii::app()->getRequest()->getIsAjaxRequest()) { Yii::app()->ajax->success(Yii::t('FeedbackModule.feedback', 'Your message sent! Thanks!')); } Yii::app()->getUser()->setFlash(YFlashMessages::SUCCESS_MESSAGE, Yii::t('FeedbackModule.feedback', 'Your message sent! Thanks!')); $this->redirect($module->successPage ? [$module->successPage] : ['/feedback/contact/questionForm/']); } else { if (Yii::app()->getRequest()->getIsAjaxRequest()) { Yii::app()->ajax->failure(Yii::t('FeedbackModule.feedback', 'It is not possible to send message!')); } Yii::app()->user->setFlash(YFlashMessages::ERROR_MESSAGE, Yii::t('FeedbackModule.feedback', 'It is not possible to send message!')); } } else { if (Yii::app()->getRequest()->getIsAjaxRequest()) { Yii::app()->ajax->rawText(CActiveForm::validate($form)); } } } $this->render('questionForm', ['model' => $form, 'module' => $module]); }