This will add back the transaction fees. Prior to this commit the pool had to cover the transaction fees. Now for each transaction the full balance is transferred (RPC Daemon will remove the TX Fee) but two transactions are added. One for the Debig and one TXFee. Fixes #203. **Requires database upgrade with supplied SQL file**
84 lines
4.2 KiB
PHP
84 lines
4.2 KiB
PHP
<?php
|
|
|
|
// Make sure we are called from index.php
|
|
if (!defined('SECURITY'))
|
|
die('Hacking attempt');
|
|
|
|
if ($user->isAuthenticated()) {
|
|
if ( ! $user->checkPin($_SESSION['USERDATA']['id'], @$_POST['authPin']) && @$_POST['do']) {
|
|
$_SESSION['POPUP'][] = array('CONTENT' => 'Invalid PIN','TYPE' => 'errormsg');
|
|
} else {
|
|
switch (@$_POST['do']) {
|
|
case 'cashOut':
|
|
if ($setting->getValue('manual_payout_active') == 1) {
|
|
$_SESSION['POPUP'][] = array('CONTENT' => 'A manual payout is in progress. Please try again later.', 'TYPE' => 'errormsg');
|
|
} else {
|
|
$setting->setValue('manual_payout_active', 1);
|
|
$continue = true;
|
|
$aBalance = $transaction->getBalance($_SESSION['USERDATA']['id']);
|
|
$dBalance = $aBalance['confirmed'];
|
|
$sCoinAddress = $user->getCoinAddress($_SESSION['USERDATA']['id']);
|
|
// Ensure we can cover the potential transaction fee
|
|
if ($dBalance > $config['txfee']) {
|
|
if ($bitcoin->can_connect() === true) {
|
|
try {
|
|
$bitcoin->validateaddress($sCoinAddress);
|
|
} catch (BitcoinClientException $e) {
|
|
$_SESSION['POPUP'][] = array('CONTENT' => 'Invalid payment address: ' . $sUserSendAddress, 'TYPE' => 'errormsg');
|
|
$continue = false;
|
|
}
|
|
if ($continue == true) {
|
|
// Send balance to address, mind fee for transaction!
|
|
try {
|
|
if ($setting->getValue('auto_payout_active') == 0) {
|
|
$bitcoin->sendtoaddress($sCoinAddress, $dBalance);
|
|
} else {
|
|
$_SESSION['POPUP'][] = array('CONTENT' => 'Auto-payout active, please contact site support immidiately to revoke invalid transactions.', 'TYPE' => 'errormsg');
|
|
$continue = false;
|
|
}
|
|
} catch (BitcoinClientException $e) {
|
|
$_SESSION['POPUP'][] = array('CONTENT' => 'Failed to send ' . $config['currency'] . ', please contact site support immidiately', 'TYPE' => 'errormsg');
|
|
$continue = false;
|
|
}
|
|
}
|
|
// Set balance to 0, add to paid out, insert to ledger
|
|
if ($continue == true && $transaction->addTransaction($_SESSION['USERDATA']['id'], $dBalance - $config['txfee'], 'Debit_MP', NULL, $sCoinAddress) && $transaction->addTransaction($_SESSION['USERDATA']['id'], $config['txfee'], 'TXFee', NULL, $sCoinAddress) ) {
|
|
$_SESSION['POPUP'][] = array('CONTENT' => 'Transaction completed', 'TYPE' => 'success');
|
|
$aMailData['email'] = $user->getUserEmail($user->getUserName($_SESSION['USERDATA']['id']));
|
|
$aMailData['amount'] = $dBalance;
|
|
$aMailData['subject'] = 'Manual Payout Completed';
|
|
$notification->sendNotification($_SESSION['USERDATA']['id'], 'manual_payout', $aMailData);
|
|
}
|
|
} else {
|
|
$_SESSION['POPUP'][] = array('CONTENT' => 'Unable to connect to litecoind RPC service', 'TYPE' => 'errormsg');
|
|
}
|
|
} else {
|
|
$_SESSION['POPUP'][] = array('CONTENT' => 'Insufficient funds, you need more than ' . $config['txfee'] . ' ' . $conifg['currency'] . ' to cover transaction fees', 'TYPE' => 'errormsg');
|
|
}
|
|
$setting->setValue('manual_payout_active', 0);
|
|
}
|
|
break;
|
|
|
|
case 'updateAccount':
|
|
if ($user->updateAccount($_SESSION['USERDATA']['id'], $_POST['paymentAddress'], $_POST['payoutThreshold'], $_POST['donatePercent'], $_POST['email'])) {
|
|
$_SESSION['POPUP'][] = array('CONTENT' => 'Account details updated', 'TYPE' => 'success');
|
|
} else {
|
|
$_SESSION['POPUP'][] = array('CONTENT' => 'Failed to update your account: ' . $user->getError(), 'TYPE' => 'errormsg');
|
|
}
|
|
break;
|
|
|
|
case 'updatePassword':
|
|
if ($user->updatePassword($_SESSION['USERDATA']['id'], $_POST['currentPassword'], $_POST['newPassword'], $_POST['newPassword2'])) {
|
|
$_SESSION['POPUP'][] = array('CONTENT' => 'Password updated', 'TYPE' => 'success');
|
|
} else {
|
|
$_SESSION['POPUP'][] = array('CONTENT' => $user->getError(), 'TYPE' => 'errormsg');
|
|
}
|
|
break;
|
|
}
|
|
}
|
|
}
|
|
|
|
// Tempalte specifics
|
|
$smarty->assign("CONTENT", "default.tpl");
|
|
?>
|