/**
  * @param form_persistentdocument_form $form
  * @param form_persistentdocument_response $response
  * @param block_BlockRequest $request
  * @param string $replyTo
  * @return array an associative array contaning at least the key "success" with a boolean value. This array will be accessible during the acknowledgment notification sending.
  */
 protected function handleData($form, $fields, $response, $request, $replyTo)
 {
     if ($form->getSaveResponse()) {
         $tm = f_persistentdocument_TransactionManager::getInstance();
         try {
             $tm->beginTransaction();
             $this->addResponseToForm($response, $form);
             $response->save();
             $form->save();
             $tm->commit();
         } catch (Exception $e) {
             throw $tm->rollBack($e);
         }
     }
     f_event_EventManager::dispatchEvent(self::FORM_SUBMITTED_EVENT_NAME, $form, array('response' => $response, 'request' => $request, 'referer' => $request->getParameter(form_FormConstants::BACK_URL_PARAMETER)));
     $sendingType = $form->getMessageSendingType();
     if ($sendingType !== self::SEND_EMAIL_AND_APPEND_TO_MAILBOX && $sendingType !== self::SEND_EMAIL_ONLY) {
         Framework::debug(__METHOD__ . " No message to send.");
         return true;
     }
     $copyMail = null;
     $data = $request->getParameters();
     foreach ($fields as $field) {
         if (!$field->getDocumentService()->isConditionValid($field, $data)) {
             continue;
         }
         if ($field instanceof form_persistentdocument_mail) {
             if ($field->getIsReceiver()) {
                 $fieldName = $field->getFieldName();
                 $copyMail = isset($data[$fieldName]) ? $data[$fieldName] : null;
             }
         }
     }
     if (Framework::isDebugEnabled()) {
         Framework::debug(__METHOD__ . " A message has to be sent: " . $form->getMessageSendingType());
     }
     $result = array();
     $result['success'] = $this->sendEmail($form, $response, $request, $copyMail, $replyTo);
     return $result;
 }