/** * 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; }