diff --git a/cronjobs/auto_payout.php b/cronjobs/auto_payout.php deleted file mode 100755 index d867e4fb..00000000 --- a/cronjobs/auto_payout.php +++ /dev/null @@ -1,104 +0,0 @@ -#!/usr/bin/php -getValue('disable_ap') == 1) { - $log->logInfo(" auto payout disabled via admin panel"); - $monitoring->endCronjob($cron_name, 'E0009', 0, true, false); -} - -if ($bitcoin->can_connect() !== true) { - $log->logFatal(" unable to connect to RPC server, exiting"); - $monitoring->endCronjob($cron_name, 'E0006', 1, true); -} - -// Fetch all users with setup AP -$users = $user->getAllAutoPayout(); - -// Quick summary -if (count($users) > 0) $log->logInfo(" found " . count($users) . " queued payout(s)"); - -// Go through users and run transactions -if (! empty($users)) { - $log->logInfo("\tUserID\tUsername\tBalance\tThreshold\tAddress"); - - foreach ($users as $aUserData) { - $aBalance = $transaction->getBalance($aUserData['id']); - $dBalance = $aBalance['confirmed']; - $log->logInfo("\t" . $aUserData['id'] . "\t" . $aUserData['username'] . "\t" . $dBalance . "\t" . $aUserData['ap_threshold'] . "\t\t" . $aUserData['coin_address']); - - // Only run if balance meets threshold and can pay the potential transaction fee - if ($dBalance > $aUserData['ap_threshold'] && $dBalance > $config['txfee']) { - // Validate address against RPC - try { - $aStatus = $bitcoin->validateaddress($aUserData['coin_address']); - if (!$aStatus['isvalid']) { - $log->logError('Failed to verify this users coin address, skipping payout'); - continue; - } - } catch (BitcoinClientException $e) { - $log->logError('Failed to verifu this users coin address, skipping payout'); - continue; - } - - // Send balance, fees are reduced later by RPC Server - try { - $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'], $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'); - // Notify user via mail - $aMailData['email'] = $user->getUserEmail($user->getUserName($aUserData['id'])); - $aMailData['subject'] = 'Auto Payout Completed'; - $aMailData['amount'] = $dBalance; - if (!$notification->sendNotification($aUserData['id'], 'auto_payout', $aMailData)) - $log->logError('Failed to send notification email to users address: ' . $aMailData['email']); - // Recheck the users balance to make sure it is now 0 - $aBalance = $transaction->getBalance($aUserData['id']); - if ($aBalance['confirmed'] > 0) { - $log->logFatal('User has a remaining balance of ' . $aBalance['confirmed'] . ' after a successful payout!'); - $monitoring->endCronjob($cron_name, 'E0065', 1, true); - } - } else { - $log->logFatal('Failed to add new Debit_AP transaction in database for user ' . $user->getUserName($aUserData['id'])); - $monitoring->endCronjob($cron_name, 'E0064', 1, true); - } - } - } -} else { - $log->logDebug(" no user has configured their AP > 0"); -} - -// Cron cleanup and monitoring -require_once('cron_end.inc.php'); -?> diff --git a/cronjobs/manual_payout.php b/cronjobs/payouts.php similarity index 55% rename from cronjobs/manual_payout.php rename to cronjobs/payouts.php index 7deb173c..58960e72 100755 --- a/cronjobs/manual_payout.php +++ b/cronjobs/payouts.php @@ -25,8 +25,8 @@ chdir(dirname(__FILE__)); // Include all settings and classes require_once('shared.inc.php'); -if ($setting->getValue('disable_mp') == 1) { - $log->logInfo(" manual payout disabled via admin panel"); +if ($setting->getValue('disable_payouts') == 1) { + $log->logInfo(" payouts disabled via admin panel"); $monitoring->endCronjob($cron_name, 'E0009', 0, true, false); } @@ -37,6 +37,7 @@ if ($bitcoin->can_connect() !== true) { // Fetch outstanding payout requests $aPayouts = $oPayout->getUnprocessedPayouts(); +if (count($aPayouts > 0)) $log->logDebug(" found " . count($aPayouts) . " queued manual payout requests"); if (count($aPayouts) > 0) { $log->logInfo("\tAccount ID\tUsername\tBalance\t\tCoin Address"); @@ -96,5 +97,68 @@ if (count($aPayouts) > 0) { } } +// Fetch all users with setup AP +$users = $user->getAllAutoPayout(); +if (count($users) > 0) $log->logDebug(" found " . count($users) . " queued payout(s)"); + +// Go through users and run transactions +if (! empty($users)) { + $log->logInfo("\tUserID\tUsername\tBalance\tThreshold\tAddress"); + + foreach ($users as $aUserData) { + $aBalance = $transaction->getBalance($aUserData['id']); + $dBalance = $aBalance['confirmed']; + $log->logInfo("\t" . $aUserData['id'] . "\t" . $aUserData['username'] . "\t" . $dBalance . "\t" . $aUserData['ap_threshold'] . "\t\t" . $aUserData['coin_address']); + + // Only run if balance meets threshold and can pay the potential transaction fee + if ($dBalance > $aUserData['ap_threshold'] && $dBalance > $config['txfee']) { + // Validate address against RPC + try { + $aStatus = $bitcoin->validateaddress($aUserData['coin_address']); + if (!$aStatus['isvalid']) { + $log->logError('Failed to verify this users coin address, skipping payout'); + continue; + } + } catch (BitcoinClientException $e) { + $log->logError('Failed to verifu this users coin address, skipping payout'); + continue; + } + + // Send balance, fees are reduced later by RPC Server + try { + $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'], $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'); + // Notify user via mail + $aMailData['email'] = $user->getUserEmail($user->getUserName($aUserData['id'])); + $aMailData['subject'] = 'Auto Payout Completed'; + $aMailData['amount'] = $dBalance; + if (!$notification->sendNotification($aUserData['id'], 'auto_payout', $aMailData)) + $log->logError('Failed to send notification email to users address: ' . $aMailData['email']); + // Recheck the users balance to make sure it is now 0 + $aBalance = $transaction->getBalance($aUserData['id']); + if ($aBalance['confirmed'] > 0) { + $log->logFatal('User has a remaining balance of ' . $aBalance['confirmed'] . ' after a successful payout!'); + $monitoring->endCronjob($cron_name, 'E0065', 1, true); + } + } else { + $log->logFatal('Failed to add new Debit_AP transaction in database for user ' . $user->getUserName($aUserData['id'])); + $monitoring->endCronjob($cron_name, 'E0064', 1, true); + } + } + } +} else { + $log->logDebug(" no user has configured their AP > 0"); +} + +// Cron cleanup and monitoring require_once('cron_end.inc.php'); ?> diff --git a/public/include/config/admin_settings.inc.php b/public/include/config/admin_settings.inc.php index 731e4ac6..5bfc82c0 100644 --- a/public/include/config/admin_settings.inc.php +++ b/public/include/config/admin_settings.inc.php @@ -237,18 +237,11 @@ $aSettings['system'][] = array( 'tooltip' => 'Enable or Disable invitations. Users will not be able to invite new users via email if disabled.' ); $aSettings['system'][] = array( - 'display' => 'Disable Manual Payouts', 'type' => 'select', + 'display' => 'Disable Payouts', 'type' => 'select', 'options' => array( 0 => 'No', 1 => 'Yes' ), 'default' => 0, - 'name' => 'disable_mp', 'value' => $setting->getValue('disable_mp'), - 'tooltip' => 'Enable or Disable the manual payout processing. Users will not be able to withdraw any funds if disabled.' -); -$aSettings['system'][] = array( - 'display' => 'Disable Automatic Payouts', 'type' => 'select', - 'options' => array( 0 => 'No', 1 => 'Yes' ), - 'default' => 0, - 'name' => 'disable_ap', 'value' => $setting->getValue('disable_ap'), - 'tooltip' => 'Enable or Disable the automatic payout processing. Users exceeding their thresholds will not be paid out if disabled.' + 'name' => 'disable_payouts', 'value' => $setting->getValue('disable_payouts'), + 'tooltip' => 'Enable or Disable the payout processing. Users will not be able to withdraw any funds if disabled.' ); $aSettings['system'][] = array( 'display' => 'Disable notifications', 'type' => 'select', diff --git a/public/include/pages/account/edit.inc.php b/public/include/pages/account/edit.inc.php index b1755a40..3b575303 100644 --- a/public/include/pages/account/edit.inc.php +++ b/public/include/pages/account/edit.inc.php @@ -10,7 +10,7 @@ if ($user->isAuthenticated()) { } else { switch (@$_POST['do']) { case 'cashOut': - if ($setting->getValue('disable_mp') == 1) { + if ($setting->getValue('disable_payouts') == 1) { $_SESSION['POPUP'][] = array('CONTENT' => 'Manual payouts are disabled.', 'TYPE' => 'info'); } else { $aBalance = $transaction->getBalance($_SESSION['USERDATA']['id']); diff --git a/public/include/pages/admin/monitoring.inc.php b/public/include/pages/admin/monitoring.inc.php index c57acb2c..4fabe56e 100644 --- a/public/include/pages/admin/monitoring.inc.php +++ b/public/include/pages/admin/monitoring.inc.php @@ -10,7 +10,7 @@ if (!$user->isAuthenticated() || !$user->isAdmin($_SESSION['USERDATA']['id'])) { } // Default crons to monitor -$aCrons = array('statistics','auto_payout','manual_payout','archive_cleanup','blockupdate','findblock','notifications','tickerupdate'); +$aCrons = array('statistics','payouts','archive_cleanup','blockupdate','findblock','notifications','tickerupdate'); // Special cases, only add them if activated switch ($config['payout_system']) { diff --git a/public/include/smarty_globals.inc.php b/public/include/smarty_globals.inc.php index 8cf2ba9e..6bf3b9b7 100644 --- a/public/include/smarty_globals.inc.php +++ b/public/include/smarty_globals.inc.php @@ -63,7 +63,7 @@ $aGlobal = array( 'confirmations' => $config['confirmations'], 'reward' => $config['reward'], 'price' => $setting->getValue('price'), - 'disable_mp' => $setting->getValue('disable_mp'), + 'disable_payouts' => $setting->getValue('disable_payouts'), 'config' => array( 'algorithm' => $config['algorithm'], 'target_bits' => $config['target_bits'], diff --git a/public/templates/mpos/account/edit/default.tpl b/public/templates/mpos/account/edit/default.tpl index 3704cf67..ccb324a8 100644 --- a/public/templates/mpos/account/edit/default.tpl +++ b/public/templates/mpos/account/edit/default.tpl @@ -60,7 +60,7 @@ -{if !$GLOBAL.disable_mp} +{if !$GLOBAL.disable_payouts}