Inheritance: extends CFormModel
示例#1
0
 /**
  * @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;
 }
示例#3
0
 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));
 }
示例#4
0
 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));
 }
示例#5
0
 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]);
 }