/**
  * Delete expired messages, optionally by original queue
  *
  * @param int $originalDate Oldest original timestamp to keep
  * @param string|null $queue
  */
 public function deleteOldMessages($originalDate, $queue = null)
 {
     $sql = 'DELETE FROM damaged WHERE original_date < :date';
     if ($queue) {
         $sql .= ' AND original_queue = :queue';
     }
     $params = array('date' => UtcDate::getUtcDatabaseString($originalDate));
     if ($queue) {
         $params['queue'] = $queue;
     }
     $this->prepareAndExecute($sql, $params);
 }
 /**
  * Build and insert a database record from a pending queue message
  *
  * @param array $message
  */
 public function storeMessage($message)
 {
     $this->validateMessage($message);
     $dbRecord = array();
     // These fields (and date) have their own columns in the database
     // Copy the values from the message to the record
     $indexedFields = array('gateway', 'gateway_account', 'gateway_txn_id', 'order_id');
     foreach ($indexedFields as $fieldName) {
         if (isset($message[$fieldName])) {
             $dbRecord[$fieldName] = $message[$fieldName];
         }
     }
     $dbRecord['date'] = UtcDate::getUtcDatabaseString($message['date']);
     // Dump the whole message into a text column
     $dbRecord['message'] = json_encode($message);
     if (isset($message['pending_id'])) {
         $sql = $this->getUpdateStatement($dbRecord);
         $dbRecord['id'] = $message['pending_id'];
     } else {
         $sql = $this->getInsertStatement($dbRecord);
     }
     $this->prepareAndExecute($sql, $dbRecord);
 }
 public static function generateTestMessage()
 {
     $message = array('id' => mt_rand(), 'contribution_tracking_id' => mt_rand(), 'gateway' => 'test_gateway', 'order_id' => mt_rand(), 'gateway_txn_id' => mt_rand(), 'validation_action' => 'process', 'payments_final_status' => 'complete', 'payment_method' => 'cc', 'payment_submethod' => 'jcb', 'country' => 'FR', 'amount' => 1.01, 'currency_code' => 'EUR', 'server' => 'localhost', 'date' => UtcDate::getUtcDatabaseString(time()));
     return $message;
 }