Esempio n. 1
0
 /**
  * Submits a contact message.
  * @param array $formParams
  * @return array $response
  */
 public function contact(array $formParams = array())
 {
     // get categories
     $categoriesModel = new Contact_Model_Categories();
     $categories = $categoriesModel->getResource()->fetchValues('category');
     // get user if one is logged in
     $userId = Daiquiri_Auth::getInstance()->getCurrentId();
     if ($userId > 0) {
         // get the user model for getting user details
         $userModel = new Auth_Model_User();
         $user = $userModel->getResource()->fetchRow($userId);
     } else {
         $user = array();
     }
     // create the form object
     $form = new Contact_Form_Submit(array('categories' => $categories, 'user' => $user));
     if (!empty($formParams)) {
         if ($form->isValid($formParams)) {
             // form is valid, get values
             $values = $form->getValues();
             unset($values['submit']);
             // set the user_id
             $values['user_id'] = $userId;
             // set timestamp
             $values['datetime'] = date("Y-m-d H:i:s");
             // set status of new message to active
             $statusModel = new Contact_Model_Status();
             $values['status_id'] = $statusModel->getResource()->fetchId(array('where' => array('`status` = "active"')));
             // store in database (if enabled)
             $this->getResource()->insertRow($values);
             // get the category
             $row = $categoriesModel->getResource()->fetchRow($values['category_id']);
             $values['category'] = $row['category'];
             // send mail to user who used the contact form
             $this->getModelHelper('mail')->send('contact.submit_user', array('to' => $values['email'], 'firstname' => $values['firstname'], 'lastname' => $values['lastname']));
             // send mail to support
             $userResource = new Auth_Model_Resource_User();
             $this->getModelHelper('mail')->send('contact.submit_support', array('to' => array_merge($userResource->fetchEmailByRole('manager'), $userResource->fetchEmailByRole('admin')), 'reply_to' => $values['email'], 'firstname' => $values['firstname'], 'lastname' => $values['lastname'], 'email' => $values['email'], 'category' => $values['category'], 'subject' => $values['subject'], 'message' => $values['message'], 'link' => Daiquiri_Config::getInstance()->getSiteUrl() . '/contact/messages'));
             return array('status' => 'ok');
         } else {
             return array('status' => 'error', 'errors' => $form->getMessages(), 'form' => $form);
         }
     }
     return array('form' => $form, 'status' => 'form');
 }
Esempio n. 2
0
 /**
  * Responds to a contact message.
  * @param int $id id of the message
  * @param array $formParams
  * @return array $response
  */
 public function respond($id, array $formParams = array())
 {
     // get the message
     $message = $this->getResource()->fetchRow($id);
     // create the form object
     $form = new Contact_Form_Respond(array('subject' => "{$message['subject']}", 'body' => "Dear {$message['firstname']} {$message['lastname']},\n\n\n\nBest Regards"));
     if (!empty($formParams)) {
         if ($form->isValid($formParams)) {
             // form is valid, get values
             $values = $form->getValues();
             unset($values['submit']);
             // get manager
             $userResource = new Auth_Model_Resource_User();
             $manager = array_merge($userResource->fetchEmailByRole('admin'), $userResource->fetchEmailByRole('manager'));
             // send mail to user who used the contact form
             $this->getModelHelper('mail')->send('contact.respond', array('to' => $message['email'], 'bcc' => $manager, 'subject' => $values['subject'], 'body' => $values['body']));
             // set message status to closed
             $statusModel = new Contact_Model_Status();
             $status_id = $statusModel->getResource()->fetchId(array('where' => array('`status` = "closed"')));
             $this->getResource()->updateRow($id, array('status_id' => $status_id));
             return array('status' => 'ok');
         } else {
             return array('status' => 'error', 'errors' => $form->getMessages(), 'form' => $form);
         }
     }
     return array('message' => $message, 'form' => $form, 'status' => 'form');
 }