From 232dd76af572883c926f974f73de32e3bd8077ea Mon Sep 17 00:00:00 2001 From: Sebastian Grewe Date: Thu, 28 Nov 2013 10:53:24 +0100 Subject: [PATCH 1/3] [ADDED] TXID on debit transactions --- cronjobs/auto_payout.php | 4 ++-- cronjobs/manual_payout.php | 7 ++++--- public/include/classes/transaction.class.php | 6 +++--- public/include/config/error_codes.inc.php | 1 + 4 files changed, 10 insertions(+), 8 deletions(-) diff --git a/cronjobs/auto_payout.php b/cronjobs/auto_payout.php index c766232d..239afdc1 100755 --- a/cronjobs/auto_payout.php +++ b/cronjobs/auto_payout.php @@ -66,14 +66,14 @@ if (! empty($users)) { // Send balance, fees are reduced later by RPC Server try { - $bitcoin->sendtoaddress($aUserData['coin_address'], $dBalance - $config['txfee']); + $txid = $bitcoin->sendtoaddress($aUserData['coin_address'], $dBalance - $config['txfee']); } catch (BitcoinClientException $e) { $log->logError('Failed to send requested balance to coin address, please check payout process'); continue; } // Create transaction record - if ($transaction->addTransaction($aUserData['id'], $dBalance - $config['txfee'], 'Debit_AP', NULL, $aUserData['coin_address']) && $transaction->addTransaction($aUserData['id'], $config['txfee'], 'TXFee', NULL, $aUserData['coin_address'])) { + if ($transaction->addTransaction($aUserData['id'], $dBalance - $config['txfee'], 'Debit_AP', NULL, $aUserData['coin_address'], $txid) && $transaction->addTransaction($aUserData['id'], $config['txfee'], 'TXFee', NULL, $aUserData['coin_address'])) { // Mark all older transactions as archived if (!$transaction->setArchived($aUserData['id'], $transaction->insert_id)) $log->logError('Failed to mark transactions for user #' . $aUserData['id'] . ' prior to #' . $transaction->insert_id . ' as archived'); diff --git a/cronjobs/manual_payout.php b/cronjobs/manual_payout.php index dd24f5b2..b0c909ea 100755 --- a/cronjobs/manual_payout.php +++ b/cronjobs/manual_payout.php @@ -64,13 +64,13 @@ if (count($aPayouts) > 0) { continue; } try { - $bitcoin->sendtoaddress($aData['coin_address'], $dBalance - $config['txfee']); + $txid = $bitcoin->sendtoaddress($aData['coin_address'], $dBalance - $config['txfee']); } catch (BitcoinClientException $e) { $log->logError('Failed to send requested balance to coin address, please check payout process'); continue; } - if ($transaction->addTransaction($aData['account_id'], $dBalance - $config['txfee'], 'Debit_MP', NULL, $aData['coin_address']) && $transaction->addTransaction($aData['account_id'], $config['txfee'], 'TXFee', NULL, $aData['coin_address'])) { + if ($transaction->addTransaction($aData['account_id'], $dBalance - $config['txfee'], 'Debit_MP', NULL, $aData['coin_address'], $txid) && $transaction->addTransaction($aData['account_id'], $config['txfee'], 'TXFee', NULL, $aData['coin_address'])) { // Mark all older transactions as archived if (!$transaction->setArchived($aData['account_id'], $transaction->insert_id)) $log->logError('Failed to mark transactions for #' . $aData['account_id'] . ' prior to #' . $transaction->insert_id . ' as archived'); @@ -82,7 +82,8 @@ if (count($aPayouts) > 0) { if (!$notification->sendNotification($aData['account_id'], 'manual_payout', $aMailData)) $log->logError('Failed to send notification email to users address: ' . $aMailData['email']); } else { - $log->logError('Failed to add new Debit_MP transaction in database for user ' . $user->getUserName($aData['account_id'])); + $log->logFatal('Failed to add new Debit_MP transaction in database for user ' . $user->getUserName($aData['account_id'])); + $monitoring->endCronjob($cron_name, 'E0064', 1, true); } } diff --git a/public/include/classes/transaction.class.php b/public/include/classes/transaction.class.php index ecf93357..4c29cc3f 100644 --- a/public/include/classes/transaction.class.php +++ b/public/include/classes/transaction.class.php @@ -18,9 +18,9 @@ class Transaction extends Base { * @param coin_address string Coin address for this transaction [optional] * @return bool **/ - public function addTransaction($account_id, $amount, $type='Credit', $block_id=NULL, $coin_address=NULL) { - $stmt = $this->mysqli->prepare("INSERT INTO $this->table (account_id, amount, block_id, type, coin_address) VALUES (?, ?, ?, ?, ?)"); - if ($this->checkStmt($stmt) && $stmt->bind_param("idiss", $account_id, $amount, $block_id, $type, $coin_address) && $stmt->execute()) { + public function addTransaction($account_id, $amount, $type='Credit', $block_id=NULL, $coin_address=NULL, $txid=NULL) { + $stmt = $this->mysqli->prepare("INSERT INTO $this->table (account_id, amount, block_id, type, coin_address, txid) VALUES (?, ?, ?, ?, ?, ?)"); + if ($this->checkStmt($stmt) && $stmt->bind_param("idisss", $account_id, $amount, $block_id, $type, $coin_address, $txid) && $stmt->execute()) { $this->insert_id = $stmt->insert_id; return true; } diff --git a/public/include/config/error_codes.inc.php b/public/include/config/error_codes.inc.php index 518bed00..514f9be2 100644 --- a/public/include/config/error_codes.inc.php +++ b/public/include/config/error_codes.inc.php @@ -67,4 +67,5 @@ $aErrorCodes['E0060'] = 'Failed to add new worker'; $aErrorCodes['E0061'] = 'Failed to delete worker'; $aErrorCodes['E0062'] = 'Block has no share_id, not running payouts'; $aErrorCodes['E0063'] = 'Upstream share already assigned to previous block'; +$aErrorCodes['E0064'] = 'Failed to create transaction record'; ?> From 551b42aacf748cb88fe97980479f1628f92cdf5d Mon Sep 17 00:00:00 2001 From: Sebastian Grewe Date: Thu, 28 Nov 2013 10:57:10 +0100 Subject: [PATCH 2/3] [UPDATE] SQL Upgrade File --- sql/006_txid_transactions.sql | 1 + 1 file changed, 1 insertion(+) create mode 100644 sql/006_txid_transactions.sql diff --git a/sql/006_txid_transactions.sql b/sql/006_txid_transactions.sql new file mode 100644 index 00000000..862b4d10 --- /dev/null +++ b/sql/006_txid_transactions.sql @@ -0,0 +1 @@ +ALTER TABLE `transactions` ADD `txid` VARCHAR( 256 ) NULL DEFAULT NULL AFTER `timestamp` ; From 1ffcba8b51b45c0148d7f9d0e703b8c78a4957f8 Mon Sep 17 00:00:00 2001 From: Sebastian Grewe Date: Thu, 28 Nov 2013 11:52:15 +0100 Subject: [PATCH 3/3] [ADDED] RPC txid to Transaction lists --- public/include/classes/transaction.class.php | 1 + .../mpos/account/transactions/default.tpl | 18 ++++++++++-------- .../mpos/admin/transactions/default.tpl | 18 ++++++++++-------- 3 files changed, 21 insertions(+), 16 deletions(-) diff --git a/public/include/classes/transaction.class.php b/public/include/classes/transaction.class.php index 4c29cc3f..71aeb95c 100644 --- a/public/include/classes/transaction.class.php +++ b/public/include/classes/transaction.class.php @@ -112,6 +112,7 @@ class Transaction extends Base { t.amount AS amount, t.coin_address AS coin_address, t.timestamp AS timestamp, + t.txid AS txid, b.height AS height, b.blockhash AS blockhash, b.confirmations AS confirmations diff --git a/public/templates/mpos/account/transactions/default.tpl b/public/templates/mpos/account/transactions/default.tpl index a761f825..2b936780 100644 --- a/public/templates/mpos/account/transactions/default.tpl +++ b/public/templates/mpos/account/transactions/default.tpl @@ -68,14 +68,15 @@ - - - - + + + + - - - + + + + @@ -97,7 +98,8 @@ {else if $TRANSACTIONS[transaction].confirmations == -1}Orphaned {else}Unconfirmed{/if} - + + diff --git a/public/templates/mpos/admin/transactions/default.tpl b/public/templates/mpos/admin/transactions/default.tpl index 9a88324f..364fa511 100644 --- a/public/templates/mpos/admin/transactions/default.tpl +++ b/public/templates/mpos/admin/transactions/default.tpl @@ -75,14 +75,15 @@
TX #AccountDateTX TypeIDAccountDateTX Type StatusPayment AddressBlock #AmountPayment AddressTX #Block #Amount
{$TRANSACTIONS[transaction].coin_address}{$TRANSACTIONS[transaction].coin_address|truncate:20:"...":true:true}{$TRANSACTIONS[transaction].txid|truncate:20:"...":true:true} {if $TRANSACTIONS[transaction].height == 0}n/a{else}{$TRANSACTIONS[transaction].height}{/if} {$TRANSACTIONS[transaction].amount|number_format:"8"}
- - - - + + + + - - - + + + + @@ -104,7 +105,8 @@ {else if $TRANSACTIONS[transaction].confirmations == -1}Orphaned {else}Unconfirmed{/if} - + +
TX #AccountDateTX TypeIDAccountDateTX Type StatusPayment AddressBlock #AmountPayment AddressTX #Block #Amount
{$TRANSACTIONS[transaction].coin_address}{$TRANSACTIONS[transaction].coin_address|truncate:20:"...":true:true}{$TRANSACTIONS[transaction].txid|truncate:20:"...":true:true} {if $TRANSACTIONS[transaction].height == 0}n/a{else}{/if}{$TRANSACTIONS[transaction].height} {$TRANSACTIONS[transaction].amount|number_format:"8"}