public function actionFeedback() { $form = new FeedbackForm('insert'); $formName = get_class($form); $this->performAjaxValidation($form); // проверить не передан ли тип и присвоить его аттрибуту модели $module = Yii::app()->getModule('feedback'); if (Yii::app()->getRequest()->getIsPostRequest() && !empty($_POST[$formName])) { $form->setAttributes(Yii::app()->getRequest()->getPost($formName)); if ($form->validate()) { // обработка запроса $feedback = new Feedback(); $feedback->setAttributes($form->getAttributes()); if ($feedback->save()) { Yii::app()->eventManager->fire(FeedbackEvents::SUCCESS_SEND_MESSAGE, new SendFeedbackMessageEvent($feedback)); 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()->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('index', ['model' => $form, 'module' => $module]); }
public function addFeedback($attr) { if (is_array($attr)) { $model = new Feedback(); $model->created_at = time(); $model->updated_at = time(); $model->setAttributes($attr); if ($model->save(FALSE)) { return $model; } } return FALSE; }
/** * Сохраняем данные в СУБД, при наявности POST-запросаЖ * * @param AnswerForm $form - форма ответа * @param Feedback $model - модель * * @return mixed */ public function saveAnswer(AnswerForm $form, Feedback $model) { if (Yii::app()->getRequest()->getIsPostRequest() && ($data = Yii::app()->getRequest()->getPost('AnswerForm')) !== null) { $form->setAttributes($data); if ($form->validate()) { $model->setAttributes(array('answer' => $form->answer, 'status' => Feedback::STATUS_FINISHED)); if ($model->save(true, array('answer', 'status'))) { //отправка ответа $mail = Yii::createComponent('yupe\\components\\Mail'); $body = $this->renderPartial('answerEmail', array('model' => $model), true); $mail->send(Yii::app()->getModule('feedback')->notifyEmailFrom, $model->email, 'RE: ' . $model->theme, $body, Yii::app()->getModule('yupe')->siteName); Yii::app()->user->setFlash(yupe\widgets\YFlashMessages::SUCCESS_MESSAGE, Yii::t('FeedbackModule.feedback', 'Reply on message was sent!')); $this->redirect($this->createUrl('view', array('id' => $model->id))); } else { return array($form, $model); } } } return array($form, $model); }
/** * Обратный звонок */ public function actionFeedback() { $form = new FeedbackForm('insert'); $formName = get_class($form); $this->performAjaxValidation($form); if (Yii::app()->getRequest()->getIsPostRequest() && !empty($_POST[$formName])) { $form->setAttributes($_POST[$formName]); // Проверка if ($form->validate()) { $feedback = new Feedback(); $feedback->setAttributes($form->getAttributes()); //var_dump($feedback->getAttributes()); //exit(); // Сохранение if ($feedback->save()) { // Отправка уведомления $this->_feedbackConfirmationEmail($feedback); if (Yii::app()->getRequest()->getIsAjaxRequest()) { Yii::app()->ajax->success(Yii::t('FeedbackModule.feedback', 'Ваше сообщение отправлено. Спасибо!')); } else { Yii::app()->getUser()->setFlash(yupe\widgets\YFlashMessages::SUCCESS_MESSAGE, Yii::t('FeedbackModule.feedback', 'Ваше сообщение отправлено. Спасибо!')); } // Обновляем страницу $this->refresh(); } else { // Ошибка сохранения if (Yii::app()->getRequest()->getIsAjaxRequest()) { Yii::app()->ajax->failure(Yii::t('FeedbackModule.feedback', 'There is an error when trying to send message! Please try later!')); } else { 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!')); } } } else { if (Yii::app()->getRequest()->getIsAjaxRequest()) { echo CActiveForm::validate($form); Yii::app()->end(); } } } $this->render('feedback', array('model' => $form)); }
/** * Сохраняем данные в СУБД, при наявности POST-запроса * * @param AnswerForm $form - форма ответа * @param Feedback $model - модель * * @return mixed */ public function saveAnswer(AnswerForm $form, Feedback $model) { if (Yii::app()->getRequest()->getIsPostRequest() && ($data = Yii::app()->getRequest()->getPost('AnswerForm')) !== null) { $form->setAttributes($data); if ($form->validate()) { $model->setAttributes(['answer' => $form->answer, 'answer_user' => Yii::app()->user->getId(), 'answer_time' => new CDbExpression('NOW()'), 'status' => Feedback::STATUS_ANSWER_SENDED]); if ($model->save()) { //отправка ответа $body = $this->renderPartial('answerEmail', ['model' => $model], true); Yii::app()->mail->send(Yii::app()->getModule('feedback')->notifyEmailFrom, $model->email, 'RE: ' . $model->theme, $body); if (Yii::app()->getRequest()->getIsAjaxRequest() == false) { Yii::app()->user->setFlash(yupe\widgets\YFlashMessages::SUCCESS_MESSAGE, Yii::t('FeedbackModule.feedback', 'Reply on message was sent!')); $this->redirect(['/feedback/feedbackBackend/view/', 'id' => $model->id]); } else { Yii::app()->ajax->success(['message' => Yii::t('FeedbackModule.feedback', 'Reply on message was sent!')]); return true; } } else { return [$form, $model]; } } } return [$form, $model]; }
/** * Отправление подтверждения пользователю и уведомления админу * @param DictionaryData $type * @return FeedbackForm $feedbackForm */ protected function _processForm($type) { if ($type->id == Feedback::TYPE_CALLBACK) { $feedbackForm = new CallbackForm('insert'); } elseif ($type->id == Feedback::TYPE_ORDER) { $feedbackForm = new OrderForm('insert'); } elseif ($type->id == Feedback::TYPE_REVIEW) { $feedbackForm = new ReviewForm('insert'); } else { $feedbackForm = new FeedbackForm('insert'); } $formName = get_class($feedbackForm); $this->performAjaxValidation($feedbackForm); if (Yii::app()->getRequest()->getIsPostRequest() && !empty($_POST[$formName])) { $feedbackForm->setAttributes($_POST[$formName]); // Проверка if ($feedbackForm->validate()) { $feedback = new Feedback(); $feedback->type_id = $type->id; $feedback->type = $type; $feedback->setAttributes($feedbackForm->getAttributes()); if ($type->id == Feedback::TYPE_ORDER && isset($_POST['productId']) && !empty($_POST['productId'])) { Yii::import("application.modules.catalog.models.Product"); $product = Product::model()->findByPk((int) $_POST['productId']); if (is_null($product)) { throw new CHttpException('404'); } $feedback->theme = 'Заявка на товар "' . $product->title . '"'; $feedback->text = '<p>Ссылка на товар: ' . CHtml::link($product->title, $product->getPermaLink()) . '</p>'; } // Сохранение if ($feedback->save()) { // Отправка уведомлений if (Yii::app()->getModule('feedback')->sendConfirmation) { $this->_feedbackConfirmationEmail($feedback); } $successMessage = $type->id == Feedback::TYPE_ORDER ? 'Ваше сообщение отправлено! Спасибо! В ближайшее время наши менеджеры свяжутся с Вами!' : 'Ваше сообщение отправлено! Спасибо!'; if (Yii::app()->getRequest()->getIsAjaxRequest()) { Yii::app()->ajax->success($successMessage); } else { Yii::app()->user->setFlash(yupe\widgets\YFlashMessages::SUCCESS_MESSAGE, $successMessage); } } else { // Ошибка сохранения if (Yii::app()->getRequest()->getIsAjaxRequest()) { Yii::app()->ajax->failure(Yii::t('FeedbackModule.feedback', 'There is an error when trying to send message! Please try later!')); } else { 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->refresh(); } else { // Ошибка валидации if (Yii::app()->getRequest()->getIsAjaxRequest()) { Yii::app()->ajax->failure('Пожалуйста, проверьте правильность заполнения формы'); } } } return $feedbackForm; }
/** * Manages FAQ. * * @return void */ public function actionFaq() { $model = new Feedback('search'); $model->unsetAttributes(); // clear any default values $model->setAttributes(Yii::app()->getRequest()->getParam('Feedback', array())); // Фильтрация по типу сообщения (отзывы) $type = DictionaryData::model()->findByCode('feedback-faq'); if ($type === null) { $this->redirect($this->createUrl('/backend')); } $model->type_id = $type->id; Yii::app()->user->setState('prevUrl', Yii::app()->request->url); $this->render('index', array('model' => $model)); }