Index: branches/RC/core/units/email_events/email_events_event_handler.php =================================================================== diff -u -r10632 -r11319 --- branches/RC/core/units/email_events/email_events_event_handler.php (.../email_events_event_handler.php) (revision 10632) +++ branches/RC/core/units/email_events/email_events_event_handler.php (.../email_events_event_handler.php) (revision 11319) @@ -392,12 +392,13 @@ * Process emails from queue * * @param kEvent $event + * @todo Move to MailingList */ function OnProcessEmailQueue(&$event) { $deliver_count = $event->getEventParam('deliver_count'); if ($deliver_count === false) { - $deliver_count = $this->Application->ConfigValue('Smtp_ProcessEmailsPerStep'); + $deliver_count = $this->Application->ConfigValue('MailingListSendPerStep'); if ($deliver_count === false) { $deliver_count = 10; // 10 emails per script run (if not specified directly) } @@ -409,8 +410,8 @@ if ($email_queue_progress === false) { $emails_sent = 0; $sql = 'SELECT COUNT(*) - FROM '.TABLE_PREFIX.'EmailQueue - WHERE (SendRetries < 5) AND (LastSendRetry < '.(adodb_mktime() - 7200).')'; + FROM ' . TABLE_PREFIX . 'EmailQueue + WHERE (SendRetries < 5) AND (LastSendRetry < ' . strtotime('-2 hours') . ')'; $total_emails = $this->Conn->GetOne($sql); $this->Application->StoreVar('email_queue_progress', $emails_sent.':'.$total_emails); } @@ -421,8 +422,8 @@ $sql = 'SELECT * FROM '.TABLE_PREFIX.'EmailQueue - WHERE (SendRetries < 5) AND (LastSendRetry < '.(adodb_mktime() - 7200).') - LIMIT 0,'.$deliver_count; + WHERE (SendRetries < 5) AND (LastSendRetry < ' . strtotime('-2 hours') . ') + LIMIT 0,' . $deliver_count; $messages = $this->Conn->Query($sql); $message_count = count($messages); @@ -435,37 +436,11 @@ return ; } - $esender =& $this->Application->recallObject('EmailSender'); - /* @var $esender kEmailSendingHelper */ + $mailing_list_helper =& $this->Application->recallObject('MailingListHelper'); + /* @var $mailing_list_helper MailingListHelper */ - $i = 0; - $message = Array (); - while ($i < $message_count) { - $message[0] = unserialize($messages[$i]['MessageHeaders']); - $message[1] =& $messages[$i]['MessageBody']; - $delivered = $esender->Deliver($message, true); // immediate send! + $mailing_list_helper->processQueue($messages); - if ($delivered) { - // send succseeded, delete from queue - $sql = 'DELETE FROM '.TABLE_PREFIX.'EmailQueue - WHERE EmailQueueId = '.$messages[$i]['EmailQueueId']; - $this->Conn->Query($sql); - } - else { - // send failed, increment retries counter - $sql = 'UPDATE '.TABLE_PREFIX.'EmailQueue - SET SendRetries = SendRetries + 1, LastSendRetry = '.adodb_mktime().' - WHERE EmailQueueId = '.$messages[$i]['EmailQueueId']; - $this->Conn->Query($sql); - } - $i++; - } - - $wait_time = $this->Application->ConfigValue('Smtp_StepWaitTime'); - if ($wait_time !== false) { - sleep((int)$wait_time); - } - if ($processing_type = 'return_progress') { $emails_sent += $message_count; if ($emails_sent >= $total_emails) {