function ExportEmail(Model_ExportType $export_type) { $logger = DevblocksPlatform::getConsoleLog(); $db = DevblocksPlatform::getDatabaseService(); @($email_current_hour = 0); @($email_sent_today = 0); $memory_limit = ini_get('memory_limit'); if (substr($memory_limit, 0, -1) < 128) { @ini_set('memory_limit', '128M'); } @set_time_limit(0); // Unlimited (if possible) $logger->info("[Email Exporter] Overloaded memory_limit to: " . ini_get('memory_limit')); $logger->info("[Email Exporter] Overloaded max_execution_time to: " . ini_get('max_execution_time')); $sql = sprintf("SELECT mr.id " . "FROM message_recipient mr " . "inner join customer_recipient cr on mr.recipient_id = cr.id " . "WHERE mr.send_status in (0,3,4) " . "AND cr.is_disabled = 0 " . "AND cr.export_type = %d " . "AND cr.type = 0 ", $export_type->id); $rs = $db->Execute($sql); // Loop though pending outbound emails. while ($row = mysql_fetch_assoc($rs)) { $id = $row['id']; $logger->info("[Email Exporter] Procing MR ID: " . $id); $message_recipient = DAO_MessageRecipient::get($id); $message = DAO_Message::get($message_recipient->message_id); $message_lines = explode('\\n', substr($message->message, 1, -1)); $recipient = DAO_CustomerRecipient::get($message_recipient->recipient_id); $to = !empty($recipient->address_to) ? array($recipient->address => $recipient->address_to) : array($recipient->address); $subject = $recipient->subject; $from_addy = !empty($export_type->params['7']) ? $export_type->params['7'] : null; $from_personal = !empty($export_type->params['11']) ? $export_type->params['11'] : null; //echo "<pre>"; //print_r($export_type); //echo "</pre>"; // FIXME - Need to add in filter for now everything is unfiltered. $send_status = FegMail::sendMail($to, $subject, implode("\r\n", $message_lines), $from_addy, $from_personal); $logger->info("[Email Exporter] Send Status: " . ($send_status ? "Successful" : "Failure")); // Give plugins a chance to run export $eventMgr = DevblocksPlatform::getEventService(); $eventMgr->trigger(new Model_DevblocksEvent('cron.send.email', array('recipient' => $recipient, 'message' => $message, 'message_lines' => $message_lines, 'message_recipient' => $message_recipient, 'send_status' => $send_status))); if ($send_status) { $email_current_hour++; $email_sent_today++; } $fields = array(DAO_MessageRecipient::SEND_STATUS => $send_status ? 2 : 1, DAO_MessageRecipient::CLOSED_DATE => $send_status ? time() : 0); DAO_MessageRecipient::update($id, $fields); } mysql_free_result($rs); if ($email_current_hour) { $current_fields = DAO_Stats::get(0); $fields = array(DAO_Stats::EMAIL_CURRENT_HOUR => $current_fields->email_current_hour + $email_current_hour, DAO_Stats::EMAIL_SENT_TODAY => $current_fields->email_sent_today + $email_sent_today); DAO_Stats::update(0, $fields); } $timeout = ini_get('max_execution_time'); $runtime = microtime(true); return NULL; }