public function executeSend(sfWebRequest $request) { $this->forward404Unless($request->isMethod('post')); if ($this->getUser()->getApiUserId()) { sfConfig::set('app_recaptcha_active', false); } $this->form = new FeedbackForm(); if ($this->getUser()->getApiUserId()) { unset($this->form['name']); unset($this->form['email']); } $requestData = $request->getParameter($this->form->getName()); if (sfConfig::get('app_recaptcha_active', false)) { $requestData['challenge'] = $this->getRequestParameter('recaptcha_challenge_field'); $requestData['response'] = $this->getRequestParameter('recaptcha_response_field'); } $this->form->bind($requestData); if ($this->form->isValid()) { if ($this->getUser()->getApiUserId()) { $user_data = Api::getInstance()->get('user/' . $this->getUser()->getApiUserId(), true); $user = ApiDoctrine::createQuickObject($user_data['body']); } else { $user = null; } $values = $this->form->getValues(); $name = $this->getUser()->getApiUserId() ? $user->getPreferredName() ? $user->getPreferredName() : $user->getFullName() : $this->form->getValue('name'); $email = $this->getUser()->getApiUserId() ? $user->getEmailAddress() : $this->form->getValue('email'); $signinUrl = $this->getUser()->getReferer($request->getReferer()); $message = $name . ' ' . $email . "\n" . $values['message'] . "\nReferer:" . $signinUrl; $to = ProjectConfiguration::getApplicationFeedbackAddress(); $subjects = sfConfig::get('app_feedback_subjects', array()); $subject = ProjectConfiguration::getApplicationName() . ': ' . (array_key_exists($values['subject'], $subjects) ? $subjects[$values['subject']] : $values['subject']); $from_address = $this->getUser()->getApiUserId() ? "{$name} <{$email}>" : ProjectConfiguration::getApplicationEmailAddress(); AppMail::sendMail($to, $from_address, $subject, $message); $this->getUser()->setFlash('notice', 'Your message has been sent to ' . ProjectConfiguration::getApplicationName() . '.'); return $this->redirect('' != $signinUrl ? $signinUrl : '@homepage'); } $this->getUser()->setReferer($this->getContext()->getActionStack()->getSize() > 1 ? $request->getUri() : $request->getReferer()); $this->setTemplate('feedback'); }