function execute($process, $event)
 {
     $parameters = $process->attribute('parameter_list');
     $co = eZContentObject::fetch($parameters['object_id']);
     $parent = eZContentObjectTreeNode::fetch($co->attribute('main_parent_node_id'));
     $parentco = $parent->attribute('object');
     $newslettertype = eZPersistentObject::fetchObject(eZNewsletterType::definition(), null, array('article_pool_object_id' => $parentco->attribute('id'), 'status' => eZNewsletterType_StatusPublished));
     $list = eZNewsletter::fetchByContentObject($parameters['object_id']);
     if (empty($list) and is_object($newslettertype)) {
         $newsletter = eZNewsletter::create($co->attribute('name'), $co->attribute('owner_id'), $newslettertype->attribute('id'));
         $newsletter->setAttribute('contentobject_id', $parameters['object_id']);
         $newsletter->setAttribute('template_to_use', 'mobotixnewsletter');
         $newsletter->setAttribute('contentobject_version', $parameters['version']);
         $newsletter->store();
         $newsletter->publish();
     }
     return eZWorkflowType::STATUS_ACCEPTED;
 }
 function fetchNewsletterListByType($typeID, $offset = 0, $limit = 10, $isSend = null, $isDraft = null, $grouping = null, $recurring = null)
 {
     $sendStatus = false;
     $draftStatus = eZNewsletterType::StatusPublished;
     if ($isDraft === true && ($isSend === true || $isSend === false)) {
         $sendStatus = array(array(eZNewsletter::SendStatusNone));
         $draftStatus = eZNewsletterType::StatusDraft;
     } else {
         if ($isSend === false) {
             $sendStatus = array(array(eZNewsletter::SendStatusNone, eZNewsletter::SendStatusBuldingList, eZNewsletter::SendStatusSending));
         } else {
             if ($isSend === true) {
                 $sendStatus = eZNewsletter::SendStatusFinished;
             }
         }
     }
     if ($recurring === true) {
         $sendStatus = array(array(eZNewsletter::SendStatusNone, eZNewsletter::SendStatusStopped));
     }
     $result = false;
     $newsletterType = eZNewsletterType::fetch($typeID);
     if ($newsletterType) {
         $result = $newsletterType->fetchNewsletterList($offset, $limit, $sendStatus, $draftStatus, true, $grouping, $recurring);
     }
     return array('result' => $result);
 }
if (isset($Params['BrowseSelected']) && $Params['BrowseSelected'] == 'article') {
    if ($http->hasPostVariable('SelectedObjectIDArray')) {
        $articlePoolNodeID = $http->postVariable('SelectedObjectIDArray');
        if (isset($articlePoolNodeID) && !$http->hasPostVariable('BrowseCancelButton')) {
            $newsletterType->setAttribute('article_pool_object_id', $articlePoolNodeID[0]);
            $newsletterType->store();
        }
    }
} else {
    if (isset($Params['BrowseSelected']) && $Params['BrowseSelected'] == 'inbox') {
        if ($http->hasPostVariable('SelectedObjectIDArray')) {
            $inboxNodeID = $http->postVariable('SelectedObjectIDArray');
            if (isset($inboxNodeID) && !$http->hasPostVariable('BrowseCancelButton')) {
                $newsletterType->setAttribute('inbox_id', $inboxNodeID[0]);
                $newsletterType->store();
            }
        }
    }
}
$tpl = eZNewsletterTemplateWrapper::templateInit();
$tpl->setVariable('warning', $warning);
$tpl->setVariable('newsletter_type', $newsletterType);
$tpl->setVariable('contentclass_list', eZNewsletterType::unserializeArray($newsletterType->attribute('contentclass_list')));
$tpl->setVariable('selected_designs', eZNewsletterType::unserializeArray($newsletterType->attribute('allowed_designs')));
// countAll(eZSendNewsletterItem::definition()) ) ) erzeugt einen sql fehler
$tpl->setVariable('subscription_list_array', eZSubscriptionList::fetchList(0, eZSubscriptionList::countAll(eZSubscriptionList::StatusPublished)));
$Result = array();
$Result['newsletter_menu'] = 'design:parts/content/newsletter_menu.tpl';
$Result['left_menu'] = 'design:parts/content/eznewsletter_menu.tpl';
$Result['content'] = $tpl->fetch("design:{$extension}/edit_newslettertype.tpl");
$Result['path'] = array(array('url' => false, 'text' => ezpI18n::tr('eznewsletter/edit_newslettertype', 'Edit newsletter type')));
if (!$subscriptionList->siteaccessAllowed()) {
    return $Module->handleError(eZError::KERNEL_ACCESS_DENIED, 'kernel');
}
$warning = array();
if ($http->hasPostVariable('StoreButton') || $http->hasPostVariable('GenerateURLHash') || $http->hasPostVariable('BrowseRelatedObject_1') || $http->hasPostVariable('DeleteRelatedObject_1') || $http->hasPostVariable('BrowseRelatedObject_2') || $http->hasPostVariable('DeleteRelatedObject_2') || $http->hasPostVariable('BrowseRelatedObject_3') || $http->hasPostVariable('DeleteRelatedObject_3')) {
    $subscriptionList->setAttribute('name', $http->postVariable('Name'));
    $subscriptionList->setAttribute('description', $http->postVariable('Description'));
    $subscriptionList->setAttribute('login_steps', $http->postVariable('LoginSteps'));
    $subscriptionList->setAttribute('require_password', $http->hasPostVariable('RequirePassword') ? 1 : 0);
    $subscriptionList->setAttribute('allow_anonymous', $http->hasPostVariable('AllowAnonymous') ? 1 : 0);
    $subscriptionList->setAttribute('auto_confirm_registered', $http->hasPostVariable('AutoConfirmRegistered') ? 1 : 0);
    $subscriptionList->setAttribute('auto_approve_registered', $http->hasPostVariable('AutoApproveRegistered') ? 1 : 0);
    $subscriptionList->setAttribute('url_type', $http->postVariable('RegistrationURL'));
    $subscriptionList->setAttribute('url', $http->postVariable('URLName'));
    if ($http->hasPostVariable('AllowedSiteaccesses') && 0 < count($http->postVariable('AllowedSiteaccesses'))) {
        $subscriptionList->setAttribute('allowed_siteaccesses', eZNewsletterType::serializeArray($http->postVariable('AllowedSiteaccesses')));
    } else {
        $warning[] = ezpI18n::tr('eznewsletter/edit_subscription_list', 'You have to select at least one allowed siteaccess.');
    }
    if ($http->hasPostVariable('GenerateURLHash')) {
        $subscriptionList->setAttribute('url', md5(mt_rand()));
    }
    $subscriptionList->store();
}
if (0 === count($warning) && $http->hasPostVariable('StoreButton')) {
    $subscriptionList->publish();
    return $Module->redirectToView('subscription_list', array($subscriptionList->attribute('url_alias')));
}
if ($http->hasPostVariable('CancelButton')) {
    $subscriptionList->removeDraft();
    return $Module->redirectToView('list_subscriptions');
$cli->output('Building send list ...');
$conditions = array();
//pregeneration parameter
if (in_array('-pregeneration', $_SERVER['argv'])) {
    //fetch only newsletter with send_date <= in 1 hour
    $timestamp = time() + 3600;
    $cli->output('Pregeneration enabled.');
} else {
    $timestamp = time();
}
$conditions = array_merge($conditions, array('send_date' => array('<=', $timestamp)));
//newslettertype parameter
if (in_array('-newslettertype', $_SERVER['argv'])) {
    $key = array_search('-newslettertype', $_SERVER['argv']);
    $newslettertype_id = $_SERVER['argv'][$key + 1];
    if (is_numeric($newslettertype_id) && eZNewsletterType::fetch($newslettertype_id)) {
        $conditions = array_merge($conditions, array('newslettertype_id' => array('=', $newslettertype_id)));
        $cli->output('Filter for newslettertype <' . $newslettertype_id . '> enabled.');
    } else {
        $cli->output('Invalid id of newslettertype <' . $newslettertype_id . '>!');
        eZExecution::cleanup();
        eZExecution::setCleanExit();
        exit(1);
    }
}
$newsletterList = eZNewsletter::fetchListBySendStatus(eZNewsletter::SendStatusNone, eZNewsletter::StatusPublished, true, $conditions);
$cli->output('Found ' . count($newsletterList) . ' newsletter.');
foreach ($newsletterList as $newsletter) {
    $cli->output('Fetching subscriber for newsletter ' . $newsletter->attribute('name'));
    $newsletter->setAttribute('send_status', eZNewsletter::SendStatusBuldingList);
    $newsletter->sync();
                        $Result['left_menu'] = 'design:parts/content/eznewsletter_menu.tpl';
                        $Result['content'] = $tpl->fetch("design:{$extension}/confirmremove_newsletter.tpl");
                        $Result['path'] = array(array('url' => false, 'text' => ezpI18n::tr('eznewsletter/list_newslettertype', 'Newsletter types')));
                        return;
                    } else {
                        if ($http->hasPostVariable('ConfirmRemoveNewsletterButton')) {
                            $newsletterIDArray = $http->sessionVariable('NewsletterList');
                            $db = eZDB::instance();
                            $db->begin();
                            foreach ($newsletterIDArray as $id) {
                                eZNewsletter::removeAll($id);
                            }
                            $db->commit();
                            return $Module->redirectToView('list_type');
                        }
                    }
                }
            }
        }
    }
}
$viewParameters = array('offset' => $offset, 'limitkey' => isset($userParameters['limitkey']) ? $userParameters['limitkey'] : 1);
$newsletterTypeArray = eZNewsletterType::fetchByOffset($offset, $limit, eZNewsletterType::StatusPublished, true, true);
$tpl->setVariable('view_parameters', $viewParameters);
$tpl->setVariable('limit', $limit);
$tpl->setVariable('newsletter_type_array', $newsletterTypeArray);
$Result = array();
$Result['newsletter_menu'] = 'design:parts/content/newsletter_menu.tpl';
$Result['left_menu'] = 'design:parts/content/eznewsletter_menu.tpl';
$Result['content'] = $tpl->fetch("design:{$extension}/list_newsletter_type.tpl");
$Result['path'] = array(array('url' => false, 'text' => ezpI18n::tr('eznewsletter/list_newslettertype', 'Newsletter types')));
/*! \file view_newslettertype.php
*/
$extension = 'eznewsletter';
$base = eZExtension::baseDirectory();
$baseDir = "{$base}/{$extension}/classes/";
$http = eZHTTPTool::instance();
$newsletterTypeID = $Params['NewsletterTypeID'];
$Module = $Params['Module'];
$newsletterType = eZNewsletterType::fetch($newsletterTypeID);
if (!$newsletterType) {
    return $Module->handleError(eZError::KERNEL_NOT_AVAILABLE, 'kernel');
}
$userParameters = $Params['UserParameters'];
$offset = isset($userParameters['offset']) ? $userParameters['offset'] : 0;
$limitKey = isset($userParameters['limit']) ? $userParameters['limit'] : '1';
$limitList = array('1' => 10, '2' => 25, '3' => 50);
$limit = $limitList[(string) $limitKey];
$viewParameters = array('offset' => $offset);
$tpl = eZNewsletterTemplateWrapper::templateInit();
$tpl->setVariable('limit', $limit);
$tpl->setVariable('limitKey', $limitKey);
$tpl->setVariable('offset', $offset);
$tpl->setVariable('view_parameters', $viewParameters);
$tpl->setVariable('newsletter_type', $newsletterType);
//unserialize the contentclass_list, which is stored as imploded arrays
$tpl->setVariable('contentclass_list', eZNewsletterType::unserializeArray($newsletterType->attribute('contentclass_list')));
$Result = array();
$Result['newsletter_menu'] = 'design:parts/content/newsletter_menu.tpl';
$Result['left_menu'] = 'design:parts/content/eznewsletter_menu.tpl';
$Result['content'] = $tpl->fetch("design:{$extension}/list_inprogress.tpl");
$Result['path'] = array(array('url' => false, 'text' => ezpI18n::tr('eznewsletter/list_inprogress', 'View newsletter type')));
 static function fetchByOffset($offset, $limit, $status = eZNewsletterType::StatusPublished, $asObject = true, $useFilter = false)
 {
     $custom_conds = null;
     if ($useFilter) {
         $currentAccessArray = $GLOBALS['eZCurrentAccess'];
         $custom_conds = 'AND allowed_siteaccesses LIKE \'%' . $currentAccessArray['name'] . '%\'';
     }
     $newsletterTypeList = eZPersistentObject::fetchObjectList(eZNewsletterType::definition(), null, array('status' => $status), array('id' => 'ASC'), array('offset' => $offset, 'length' => $limit), $asObject, false, null, null, $custom_conds);
     return $newsletterTypeList;
 }
 static function sendNewsletterMail(eZNewsletter $newsletter, $sendPreview = false)
 {
     $sendMailSettings = eZINI::instance('ezsendmailsettings.ini');
     $hostname = $sendMailSettings->variable('SendNewsletter', 'Host');
     $sys = eZSys::instance();
     // Check that the newsletter type exists, if not, process next newsletter
     if (!$newsletter->attribute('newsletter_type')) {
         return false;
     }
     if ($sendPreview) {
         // Fetch the draft because the object is not published during preview
         $contentObject = $newsletter->contentObjectVersion();
     } else {
         $contentObject = $newsletter->contentObject();
     }
     $mailTemplate = $newsletter->generateNewsletter($contentObject);
     $partCounter = 0;
     // 4. Go through revceivers, and send emails.
     if (!$sendPreview) {
         $idcounter = 0;
         $sendCount = 0;
         $skipCount = 0;
         while ($receiverList = eZSendNewsletterItem::fetchByNewsletterID($newsletter->attribute('id'))) {
             foreach ($receiverList as $receiver) {
                 $mail = clone $mailTemplate;
                 $userData = $receiver->attribute('user_data');
                 if (!$userData) {
                     //When no userdata is found, it is usually the result of a deleted subscription,
                     //we mark the mail as being sent, without sending it.
                     $receiver->setAttribute('send_status', eZSendNewsletterItem::SendStatusSent);
                     $receiver->setAttribute('send_ts', time());
                     $receiver->sync();
                     continue;
                 }
                 //personalize if set in type
                 $newsletter_type = eZNewsletterType::fetch($newsletter->attribute('newslettertype_id'));
                 if ($newsletter_type->attribute('personalise') === '1') {
                     $mail->personalize($userData, true);
                 } else {
                     $mail->personalize($userData, false);
                 }
                 $mail->generateMessageId($receiver->attribute('id') . '.' . $newsletter->attribute('id'));
                 $mail->to = array();
                 $mail->addTo(new ezcMailAddress($userData['email'], null, 'utf-8'));
                 $mail->build();
                 $mailResult = eZNewsletterMailTransport::send($mail, false);
                 $sendCount++;
                 $receiver->setAttribute('send_status', eZSendNewsletterItem::SendStatusSent);
                 $receiver->setAttribute('send_ts', time());
                 $receiver->sync();
             }
         }
         return array('sendCount' => $sendCount, 'skipCount' => $skipCount);
     } else {
         $mail = clone $mailTemplate;
         //send preview
         $user = eZUser::currentUser();
         $userObject = $user->attribute('contentobject');
         //personalize if set in type
         $newsletter_type = eZNewsletterType::fetch($newsletter->attribute('newslettertype_id'));
         if ($newsletter_type->attribute('personalise') === '1') {
             $mail->personalize(array('name' => $userObject->attribute('name')), true);
         } else {
             $mail->personalize(array('name' => $userObject->attribute('name')), false);
             $newsletterMail = $newsletter->personalize($mail->plainText, array('name' => $userObject->attribute('name')), false);
         }
         $mail->addTo(new ezcMailAddress($newsletter->attribute('preview_email')));
         $mail->build();
         $mailResult = eZNewsletterMailTransport::send($mail, true);
     }
 }
Exemple #10
0
 static function sendNewsletterMail($newsletter, $sendPreview = false, $previewFormat = false, $receiverLimit = null)
 {
     $sendMailSettings = eZINI::instance('ezsendmailsettings.ini');
     $replaceMsgIDHost = $sendMailSettings->variable('SendNewsletter', 'ReplaceMessageIDHost');
     $newSendHost = $sendMailSettings->variable('SendNewsletter', 'Host');
     $hostSettings['replace'] = $replaceMsgIDHost;
     $hostSettings['host'] = $newSendHost;
     $mail = new eZNewsletterMail();
     $sys = eZSys::instance();
     $newsletterMailData = array();
     // Check that the newsletter type exists, if not, process next newsletter
     if (!$newsletter->attribute('newsletter_type')) {
         return;
     }
     $newsletterMailData[eZNewsletter::OutputFormatText] = $newsletter->generateNewsletter(eZNewsletter::OutputFormatText, $sendPreview);
     $newsletterMailData[eZNewsletter::OutputFormatHTML] = $newsletter->generateNewsletter(eZNewsletter::OutputFormatHTML, $sendPreview);
     $newsletterMailData[eZNewsletter::OutputFormatExternalHTML] = $newsletter->generateNewsletter(eZNewsletter::OutputFormatExternalHTML, $sendPreview);
     $newsletterMailData[eZNewsletter::OutputFormatSMS] = $newsletter->generateNewsletter(eZNewsletter::OutputFormatSMS, $sendPreview);
     $newsletterOutputFormatList = $newsletter->attribute('output_format_list');
     $noMimeMessage = "This message is in MIME format. Since your mail reader does not understand\nthis format, some or all of this message may not be legible.";
     $lineBreak = "\r\n";
     $partCounter = 0;
     $boundary = date("YmdGHjs") . ':' . getmypid() . ':' . $partCounter++;
     $charset = eZTextCodec::internalCharset();
     $contentTypeHtmlPart = "Content-Type: text/html; charset={$charset}";
     foreach (array(eZNewsletter::OutputFormatHTML, eZNewsletter::OutputFormatExternalHTML) as $key) {
         $htmlOutput =& $newsletterMailData[$key];
         if ($htmlOutput['imageNameMap']) {
             $data = $noMimeMessage . $lineBreak;
             $data .= $lineBreak . '--' . $boundary . $lineBreak;
             $data .= $contentTypeHtmlPart . $lineBreak;
             $data .= "Content-Transfer-Encoding: 8bit" . $lineBreak . $lineBreak;
             $data .= $htmlOutput['body'] . $lineBreak;
             foreach ($htmlOutput['imageNameMap'] as $id => $filename) {
                 $filename = trim($filename);
                 if (is_readable($filename)) {
                     $mime = eZMimeType::findByURL($filename);
                     $encodedFileContent = chunk_split(base64_encode(file_get_contents($filename)), 76, $lineBreak);
                     $data .= $lineBreak . '--' . $boundary . $lineBreak;
                     $data .= "Content-Type: " . $mime['name'] . ';' . $lineBreak . ' name="' . basename($filename) . '"' . $lineBreak;
                     $data .= "Content-ID: <" . $id . ">" . $lineBreak;
                     $data .= "Content-Transfer-Encoding: base64" . $lineBreak;
                     $original_filename = basename($filename);
                     if ($htmlOutput['imageNameMapName'][$id]) {
                         $original_filename = $htmlOutput['imageNameMapName'][$id];
                     }
                     $data .= 'Content-Disposition: INLINE;' . $lineBreak . ' filename="' . $original_filename . '"' . $lineBreak . $lineBreak;
                     $data .= $encodedFileContent;
                 }
             }
             $data .= $lineBreak . '--' . $boundary . '--';
             $htmlOutput['body'] = $data;
         } else {
             $data = $noMimeMessage . $lineBreak;
             $data .= $lineBreak . '--' . $boundary . $lineBreak;
             $data .= $contentTypeHtmlPart . $lineBreak;
             $data .= "Content-Transfer-Encoding: 8bit" . $lineBreak . $lineBreak;
             $data .= $htmlOutput['body'] . $lineBreak;
             $data .= $lineBreak . '--' . $boundary . '--';
             $htmlOutput['body'] = $data;
         }
     }
     // 4. Go through revceivers, and send emails.
     if (!$sendPreview) {
         $mail->setSender($newsletterMailData[eZNewsletter::OutputFormatText]['emailSender'], $newsletterMailData[eZNewsletter::OutputFormatText]['emailSenderName']);
         $idcounter = 0;
         $sendCount = 0;
         $skipCount = 0;
         // HACK!
         $receiverList = eZSendNewsletterItem::fetchByNewsletterID($newsletter->attribute('id'), 0, $receiverLimit);
         foreach ($receiverList as $receiver) {
             $msgid = eZNewsletter::generateMessageId($newsletterMailData[eZNewsletter::OutputFormatText]['emailSender'], $receiver->attribute('id'), $idcounter++, $hostSettings);
             $mail->setMessageID($msgid);
             $userData = $receiver->attribute('user_data');
             if (!$userData) {
                 //When no userdata is found, it is usually the result of a deleted subscription,
                 //we mark the mail as being sent, without sending it.
                 $receiver->setAttribute('send_status', eZSendNewsletterItem::SendStatusSent);
                 $receiver->setAttribute('send_ts', time());
                 $receiver->sync();
                 continue;
             }
             // #TODO# IDs expected
             $userOutputFormatList = explode(',', $userData['output_format']);
             // #TODO#
             #echo " ### userOutputFormatList\n";  ok
             #var_dump( $userOutputFormatList );
             #echo " ### newsletterOutputFormatList\n"; ok
             #var_dump( $newsletterOutputFormatList );
             $outputFormat = false;
             //special case for SMS sending
             if (in_array(eZNewsletter::OutputFormatSMS, $userOutputFormatList) && in_array(eZNewsletter::OutputFormatSMS, $newsletterOutputFormatList)) {
                 $mail->setContentType("sms", false, false, false, $boundary);
                 $outputFormat = eZNewsletter::OutputFormatSMS;
                 //$mail->setSubject( $userMailData['subject'] );                                        ### $userMailData is undefined
                 # echo " ### userMailData\n";
                 # var_dump( $userMailData );
                 # $mail->setSubject( $userMailData['subject'] );
                 # $mail->setReceiver( $userData['email'] );
                 # $mail->setMobile( $userData['mobile'] );
                 //$mail->setBody( $userMailData['body'] );                                              ### $userMailData is undefined
                 # $mail->setBody( $userMailData['body'] );
                 # $mail->setDateTimestamp( $newsletter->attribute( 'send_date') );
                 $mailResult = eZNewsletterMailTransport::send($mail, false);
             }
             //send regular emails
             if (in_array(eZNewsletter::OutputFormatHTML, $userOutputFormatList) && in_array(eZNewsletter::OutputFormatHTML, $newsletterOutputFormatList)) {
                 $mail->setContentType("multipart/related", false, false, false, $boundary);
                 $outputFormat = eZNewsletter::OutputFormatHTML;
             }
             if (in_array(eZNewsletter::OutputFormatExternalHTML, $userOutputFormatList) && in_array(eZNewsletter::OutputFormatExternalHTML, $newsletterOutputFormatList)) {
                 $mail->setContentType("multipart/related", false, false, false, $boundary);
                 $outputFormat = eZNewsletter::OutputFormatExternalHTML;
             }
             // ...
             if ($outputFormat === false) {
                 $outputIntersect = array_intersect($userOutputFormatList, $newsletterOutputFormatList);
                 if (count($outputIntersect) > 0) {
                     $outputFormat = $outputIntersect[0];
                 }
             }
             if ($outputFormat !== false) {
                 //personalize if set in type
                 $newsletter_type = eZNewsletterType::fetch($newsletter->attribute('newslettertype_id'));
                 if ($newsletter_type->attribute('personalise') === '1') {
                     $userMailData = eZNewsletter::personalize($newsletterMailData[$outputFormat], $userData, true);
                 } else {
                     $userMailData = eZNewsletter::personalize($newsletterMailData[$outputFormat], $userData, false);
                 }
                 $mail->setSubject($userMailData['subject']);
                 $mail->setReceiver($userData['email']);
                 $mail->setMobile($userData['mobile']);
                 $mail->setBody($userMailData['body']);
                 $mail->setDateTimestamp($newsletter->attribute('send_date'));
                 //if only SMS was selected, don't send email
                 if (!(in_array(eZNewsletter::OutputFormatSMS, $userOutputFormatList) && count($userOutputFormatList) == 1)) {
                     $mailResult = eZNewsletterMailTransport::send($mail, false);
                 }
                 $sendCount++;
             } else {
                 // User doesnt want any format we defined - skipped
                 $skipCount++;
             }
             $receiver->setAttribute('send_status', eZSendNewsletterItem::SendStatusSent);
             $receiver->setAttribute('send_ts', time());
             $receiver->sync();
         }
         //send SMS messages
         $instance = eZSMS::instance();
         if ($instance->countNumbers() > 0) {
             echo "Preparing to send " . $instance->countNumbers() . " SMS messages..." . "\n";
             $instance->setContent($newsletterMailData[eZNewsletter::OutputFormatSMS]['body']);
             foreach ($instance->getNumbers() as $number) {
                 echo "Recipient is: " . $number . "\n";
             }
             $reply = $instance->sendMessages();
             if ($reply != "") {
                 echo "SMS Reply:" . "\n";
                 echo $reply;
             }
         }
         //}
         return array('sendCount' => $sendCount, 'skipCount' => $skipCount);
     } else {
         //send preview
         $msgid = eZNewsletter::generateMessageId($newsletterMailData[eZNewsletter::OutputFormatText]['emailSender'], 0, 0, $hostSettings);
         $mail->setMessageID($msgid);
         $userOutputFormatList = $previewFormat;
         $outputFormat = false;
         //special case for SMS sending
         if (in_array(eZNewsletter::OutputFormatSMS, $userOutputFormatList)) {
             $mail->setContentType("sms", false, false, false, $boundary);
             $outputFormat = eZNewsletter::OutputFormatSMS;
             $newsletterMail = $newsletterMailData[eZNewsletter::OutputFormatSMS];
             $mail->setSender($newsletterMail['emailSender'], $newsletterMail['emailSenderName']);
             $mail->setReceiver($newsletter->attribute('preview_email'));
             $mail->setMobile($newsletter->attribute('preview_mobile'));
             $mail->setBody($newsletterMail['body']);
             $mail->setSubject($newsletterMail['subject']);
             $mail->setDateTimestamp($newsletter->attribute('send_date'));
             $mailResult = eZNewsletterMailTransport::send($mail, true);
         }
         //send regular emails
         if (in_array(eZNewsletter::OutputFormatHTML, $userOutputFormatList)) {
             $mail->setContentType("multipart/related", false, false, false, $boundary);
             $outputFormat = eZNewsletter::OutputFormatHTML;
         }
         if (in_array(eZNewsletter::OutputFormatExternalHTML, $userOutputFormatList)) {
             $mail->setContentType("multipart/related", false, false, false, $boundary);
             $outputFormat = eZNewsletter::OutputFormatExternalHTML;
         }
         if ($outputFormat === false) {
             $outputIntersect = array_intersect($userOutputFormatList, $newsletterOutputFormatList);
             if (count($outputIntersect) > 0) {
                 $outputFormat = $outputIntersect[0];
             }
         }
         if ($outputFormat === false) {
             $outputFormat = $newsletterOutputFormatList[0];
             if ($outputFormat == eZNewsletter::OutputFormatHTML || $outputFormat == eZNewsletter::OutputFormatExternalHTML) {
                 $mail->setContentType("multipart/related", false, false, false, $boundary);
             }
         }
         $user = eZUser::currentUser();
         $userObject = $user->attribute('contentobject');
         //personalize if set in type
         $newsletter_type = eZNewsletterType::fetch($newsletter->attribute('newslettertype_id'));
         if ($newsletter_type->attribute('personalise') === '1') {
             $newsletterMail = $newsletter->personalize($newsletterMailData[$outputFormat], array('name' => $userObject->attribute('name')), true);
         } else {
             $newsletterMail = $newsletter->personalize($newsletterMailData[$outputFormat], array('name' => $userObject->attribute('name')), false);
         }
         $mail->setSender($newsletterMail['emailSender']);
         $mail->setReceiver($newsletter->attribute('preview_email'));
         $mail->setMobile($newsletter->attribute('preview_mobile'));
         $mail->setBody($newsletterMail['body']);
         $mail->setSubject($newsletterMail['subject']);
         $mail->setDateTimestamp($newsletter->attribute('send_date'));
         //if only SMS was selected, don't send email
         if (!(in_array(eZNewsletter::OutputFormatSMS, $userOutputFormatList) && count($userOutputFormatList) == 1)) {
             $mailResult = eZNewsletterMailTransport::send($mail, true);
         }
         //send SMS messages
         $instance = eZSMS::instance();
         if ($instance->countNumbers() > 0) {
             //echo "Preparing to send ".$instance->countNumbers()." SMS messages..."."\n";
             $instance->setContent($newsletterMailData[eZNewsletter::OutputFormatSMS]['body']);
             $reply = $instance->sendMessages();
             if ($reply != "") {
                 echo "SMS Reply:" . "\n";
                 echo $reply;
             }
         }
     }
 }