. */ require_once dirname(__FILE__) . "/IRundaily.php"; class MailsRundaily implements IRundaily { private $messages; public function __construct() { $this->messages = array(); } public function run() { global $setup; $queryBuilder = new QueryBuilder($GLOBALS['DB'], "mailout"); $queryBuilder->addField(array("id", "date", "to", "content", "mail")); if( $GLOBALS['DB']->select($queryBuilder->toQuery()) > 0 ) { // There are mails in the queue $count = 0; $sendIds = array(); $mail = new Mail($setup['MailReturnpath'], $setup['MailReturnpath']); while( $row = $GLOBALS['DB']->fetchAssoc() ) { $mail = unserialize($row['mail']); if( $mail->send() == Mail::MAIL_OK ) { $sendIds[] = $row['id']; $this->addMessage("Sent '" . $row['content'] . "' to '" . $row['to'] . "' (queued " . get_date($row['date']) . ")"); $count++; }else { $this->addMessage("Failed sending '" . $row['content'] . "' to '" . $row['to'] . "' (queued " . get_date($row['date']) . ")"); } } if( $count > 0 ) { if( $GLOBALS['DB']->delete("mailout", $sendIds) ) { $this->addMessage("Send successfully " . $count . " out of " . $GLOBALS['DB']->numRows() . " queued messages."); }else { $this->addMessage("Send successfully " . $count . " out of " . $GLOBALS['DB']->numRows() . " queued messages, but I failed deleting them from the queue."); dolog("rundaily", "failed deleting queue of waiting mails", "error"); } } }else { $this->addMessage("No queued messages available."); } } public function isEnabled() { return true; } public function getTitle() { return "Sending queued messages"; } public function getMessages() { return $this->messages; } private function addMessage($message) { $this->messages[] = $message; } } ?>