#!/usr/bin/php can_connect() !== true) { $log->logFatal(" unable to connect to RPC server, exiting"); $monitoring->setStatus($cron_name . "_active", "yesno", 0); $monitoring->setStatus($cron_name . "_message", "message", "Unable to connect to RPC server"); $monitoring->setStatus($cron_name . "_status", "okerror", 1); exit(1); } // Fetch all users with setup AP $users = $user->getAllAutoPayout(); // Quick summary $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 { $bitcoin->validateaddress($aUserData['coin_address']); } 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 { $bitcoin->sendtoaddress($aUserData['coin_address'], $dBalance); } 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'])) { // 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']); } else { $log->logError('Failed to add new Debit_AP transaction in database for user ' . $user->getUserName($aUserData['id'])); } } } } else { $log->logDebug(" no user has configured their AP > 0"); } // Cron cleanup and monitoring require_once('cron_end.inc.php'); ?>