#!/usr/bin/php can_connect() !== true) { verbose("Unable to connect to RPC server, exiting"); exit(1); } // Mark this job as active $setting->setValue('auto_payout_active', 1); // Fetch all users with setup AP $users = $user->getAllAutoPayout(); // Go through users and run transactions if (! empty($users)) { verbose("UserID\tUsername\tBalance\tThreshold\tAddress\t\t\t\t\tStatus\n\n"); foreach ($users as $aUserData) { $aBalance = $transaction->getBalance($aUserData['id']); $dBalance = $aBalance['confirmed']; verbose($aUserData['id'] . "\t" . $aUserData['username'] . "\t" . $dBalance . "\t" . $aUserData['ap_threshold'] . "\t\t" . $aUserData['coin_address'] . "\t"); // 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) { verbose("VERIFY FAILED\n"); continue; } // Send balance, fees are reduced later by RPC Server try { $bitcoin->sendtoaddress($aUserData['coin_address'], $dBalance); } catch (BitcoinClientException $e) { verbose("SEND FAILED\n"); continue; } // Create transaction record if ($transaction->addTransaction($aUserData['id'], $dBalance, 'Debit_AP', 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)) { verbose("NOTIFY FAILED\n"); } else { verbose("OK\n"); } } else { verbose("FAILED\n"); } } else { verbose("INSUFF_TXFEE\n"); } } } else { verbose("No user has configured their AP > 0\n"); } // Mark this job as inactive $setting->setValue('auto_payout_active', 0); ?>