Exemplo n.º 1
0
 /**
  * Sends information mail to the user
  * Also performs a charset Conversion for the mail.
  *
  * @param int $orderUid OrderID
  * @param array $orderData Collected Order Data form PI3
  *
  * @return bool TRUE on success
  */
 public function sendUserMail($orderUid, array $orderData)
 {
     $hooks = HookFactory::getHooks('Controller/CheckoutController', 'sendUserMail');
     $frontendController = $this->getFrontendController();
     if (strlen($this->sessionData['billing']['email'])) {
         // If user has email in the formular, use this
         $userMail = $this->sessionData['billing']['email'];
     } elseif (is_array($this->getFrontendUser()->user) && strlen($this->getFrontendUser()->user['email'])) {
         $userMail = $this->getFrontendUser()->user['email'];
     } else {
         return false;
     }
     $userMail = \CommerceTeam\Commerce\Utility\GeneralUtility::validEmailList($userMail);
     if ($userMail && !preg_match("/\r/i", $userMail) && !preg_match("/\n/i", $userMail)) {
         foreach ($hooks as $hookObj) {
             if (method_exists($hookObj, 'getUserMail')) {
                 $hookObj->getUserMail($userMail, $orderUid, $orderData);
             }
         }
         if ($userMail != '' && GeneralUtility::validEmail($userMail)) {
             /**
              * Checkout controller.
              *
              * @var \CommerceTeam\Commerce\Controller\CheckoutController $userMailObj
              */
             $userMailObj = GeneralUtility::makeInstance('CommerceTeam\\Commerce\\Controller\\CheckoutController');
             $userMailObj->conf = $this->conf;
             $userMailObj->pi_setPiVarDefaults();
             $userMailObj->cObj = $this->cObj;
             $userMailObj->pi_loadLL();
             $userMailObj->staticInfo =& $this->staticInfo;
             $userMailObj->currency = $this->currency;
             $userMailObj->showCurrency = $this->conf['usermail.']['showCurrency'];
             $userMailObj->templateCode = $this->cObj->fileResource($this->conf['usermail.']['templateFile']);
             $userMailObj->generateLanguageMarker();
             $userMailObj->userData = $this->userData;
             foreach ($hooks as $hookObj) {
                 if (method_exists($hookObj, 'preGenerateMail')) {
                     $hookObj->preGenerateMail($userMailObj, $this);
                 }
             }
             $userMarker = array();
             $mailcontent = $userMailObj->generateMail($orderUid, $orderData, $userMarker);
             $basket = $this->getBasket();
             foreach ($hooks as $hookObj) {
                 if (method_exists($hookObj, 'postGenerateMail')) {
                     $hookObj->postGenerateMail($userMailObj, $this, $basket, $mailcontent);
                 }
             }
             $htmlContent = '';
             if ($this->conf['usermail.']['useHtml'] == '1' && $this->conf['usermail.']['templateFileHtml']) {
                 $userMailObj->templateCode = $this->cObj->fileResource($this->conf['usermail.']['templateFileHtml']);
                 $htmlContent = $userMailObj->generateMail($orderUid, $orderData, $userMarker);
                 $userMailObj->isHtmlMail = true;
                 foreach ($hooks as $hookObj) {
                     if (method_exists($hookObj, 'postGenerateMail')) {
                         $hookObj->postGenerateMail($userMailObj, $this, $basket, $htmlContent);
                     }
                 }
                 unset($userMailObj->isHtmlMail);
             }
             // Moved to plainMailEncoded
             $parts = explode(chr(10), $mailcontent, 2);
             // First line is subject
             $subject = trim($parts[0]);
             $plainMessage = trim($parts[1]);
             // Check if charset ist set by TS
             // Otherwise set to default Charset
             if (!$this->conf['usermail.']['charset']) {
                 $this->conf['usermail.']['charset'] = $frontendController->renderCharset;
             }
             // Checck if mailencoding ist set
             // otherwise set to 8bit
             if (!$this->conf['usermail.']['encoding']) {
                 $this->conf['usermail.']['encoding'] = '8bit';
             }
             // Convert Text to charset
             $frontendController->csConvObj->initCharset($frontendController->renderCharset);
             $frontendController->csConvObj->initCharset(strtolower($this->conf['usermail.']['charset']));
             $plainMessage = $frontendController->csConvObj->conv($plainMessage, $frontendController->renderCharset, strtolower($this->conf['usermail.']['charset']));
             $subject = $frontendController->csConvObj->conv($subject, $frontendController->renderCharset, strtolower($this->conf['usermail.']['charset']));
             if ($this->debug) {
                 print '<b>Usermail to ' . $userMail . '</b><pre>' . $plainMessage . '</pre>' . LF;
             }
             // Mailconf for  tx_commerce_div::sendMail($mailconf);
             $recipient = array();
             if ($this->conf['usermail.']['cc']) {
                 $recipient = GeneralUtility::trimExplode(',', $this->conf['usermail.']['cc']);
             }
             if (is_array($recipient)) {
                 array_push($recipient, $userMail);
             }
             $mailconf = array('plain' => array('content' => $plainMessage, 'subject' => $subject), 'html' => array('content' => $htmlContent, 'path' => '', 'useHtml' => $this->conf['usermail.']['useHtml']), 'defaultCharset' => $this->conf['usermail.']['charset'], 'encoding' => $this->conf['usermail.']['encoding'], 'attach' => $this->conf['usermail.']['attach.'], 'alternateSubject' => $this->conf['usermail.']['alternateSubject'], 'recipient' => implode(',', $recipient), 'recipient_copy' => $this->conf['usermail.']['bcc'], 'fromEmail' => $this->conf['usermail.']['from'], 'fromName' => $this->conf['usermail.']['from_name'], 'replyTo' => $this->conf['usermail.']['from'], 'priority' => $this->conf['usermail.']['priority'], 'callLocation' => 'sendUserMail', 'additionalData' => $this);
             \CommerceTeam\Commerce\Utility\GeneralUtility::sendMail($mailconf);
             return true;
         }
     }
     return false;
 }