File: /www/exchange0old/exchange/Bin/Queue.php
<?php
class Bin_Queue
{
protected $db;
protected $table = 'email_queue';
public function __construct()
{
$this->db = Bin_Db::connect();
require_once ROOT_FOLDER . 'admin/classes/Model/MEmailLogs.php';
}
public function addMail(PHPMailer $mail, $noaInvoiceId = null){
$this->db->builder()->insert($this->table)
->setValue('timestamp',time())
->setValue('mail',serialize($mail))
->setValue('noa_invoice_id', $this->db->escapeValue($noaInvoiceId))
->execute();
}
public function processMailQueue($callback,$limit=100){
$sql = "SELECT * from ".$this->table." LIMIT ".(int)$limit;
$result = $this->db->query($sql);
$successArray = array();
while($row = $result->fetchAssoc()){
$mail = unserialize($row['mail']);
if($callback($mail, $row['noa_invoice_id'])==true){
$successArray[] = $row['id'];
}
}
if($successArray) {
$sql = "DELETE FROM " . $this->table . " WHERE id in (" . implode(',', $successArray) . ")";
$this->db->query($sql);
}
return count($successArray);
}
}