mirror of
https://github.com/LBRYFoundation/pool.git
synced 2025-09-30 15:20:36 +00:00
LYB wallet sometimes hangs during a send operation, This can lock the payment process for all users. The yiimp payout command can fix them and show them in their user Wallet (txs)
328 lines
10 KiB
PHP
328 lines
10 KiB
PHP
<?php
|
|
|
|
function WriteBoxHeader($title)
|
|
{
|
|
echo "<div class='main-left-box'>";
|
|
echo "<div class='main-left-title'>$title</div>";
|
|
echo "<div class='main-left-inner'>";
|
|
}
|
|
|
|
$mining = getdbosql('db_mining');
|
|
$defaultalgo = user()->getState('yaamp-algo');
|
|
|
|
$show_details = getparam('showdetails');
|
|
|
|
$user = getuserparam(getparam('address'));
|
|
if(!$user) return;
|
|
|
|
WriteBoxHeader("Wallet: $user->username");
|
|
|
|
$refcoin = getdbo('db_coins', $user->coinid);
|
|
if(!$refcoin)
|
|
{
|
|
if($user->coinid != null)
|
|
echo "<div style='color: red; padding: 10px; '>This wallet address is not valid.
|
|
You will not receive payments using this address.</div>";
|
|
|
|
$refcoin = getdbosql('db_coins', "symbol='BTC'");
|
|
|
|
} elseif (!YAAMP_ALLOW_EXCHANGE && $user->coinid == 6 && $defaultalgo != 'sha256') {
|
|
|
|
echo "<div style='color: red; padding: 10px; '>This pool does not convert/trade currencies.
|
|
You will not receive payments using this BTC address.</div>";
|
|
return;
|
|
}
|
|
|
|
echo "<table class='dataGrid2'>";
|
|
|
|
echo "<thead>";
|
|
echo "<tr>";
|
|
echo "<th></th>";
|
|
echo "<th>Name</th>";
|
|
echo "<th align=right>Immature</th>";
|
|
echo "<th align=right>Confirmed</th>";
|
|
echo "<th align=right>Total</th>";
|
|
echo "<th align=right>Value*</th>";
|
|
echo "</tr>";
|
|
echo "</thead>";
|
|
|
|
$total_pending = 0;
|
|
|
|
if($show_details)
|
|
{
|
|
$t1 = microtime(true);
|
|
|
|
$list = dbolist("select coinid from earnings where userid=$user->id group by coinid");
|
|
if(!count($list))
|
|
echo "<tr><td></td><td colspan=5><i>-none-</i></td></tr>";
|
|
|
|
else
|
|
{
|
|
// sort by value
|
|
foreach($list as $item)
|
|
{
|
|
$coin = getdbo('db_coins', $item['coinid']);
|
|
if(!$coin) continue;
|
|
|
|
$name = substr($coin->name, 0, 12);
|
|
|
|
$confirmed = controller()->memcache->get_database_scalar("wallet_confirmed-$user->id-$coin->id",
|
|
"select sum(amount) from earnings where status=1 and userid=$user->id and coinid=$coin->id");
|
|
|
|
$unconfirmed = controller()->memcache->get_database_scalar("wallet_unconfirmed-$user->id-$coin->id",
|
|
"select sum(amount) from earnings where status=0 and userid=$user->id and coinid=$coin->id");
|
|
|
|
$total = $confirmed + $unconfirmed;
|
|
// $value = bitcoinvaluetoa($total * $coin->price / $refcoin->price);
|
|
$value = bitcoinvaluetoa(yaamp_convert_amount_user($coin, $total, $user));
|
|
|
|
$confirmed = altcoinvaluetoa($confirmed);
|
|
$unconfirmed = altcoinvaluetoa($unconfirmed);
|
|
$total = altcoinvaluetoa($total);
|
|
|
|
echo "<tr class='ssrow'>";
|
|
echo "<td width=18><img width=16 src='$coin->image'></td>";
|
|
echo "<td><b><a href='/site/block?id=$coin->id' title='$coin->version'>$name</a></b><span style='font-size: .8em'> ($coin->algo)</span></td>";
|
|
|
|
echo "<td align=right style='font-size: .8em;'>$unconfirmed</td>";
|
|
echo "<td align=right style='font-size: .8em;'>$confirmed</td>";
|
|
echo "<td align=right style='font-size: .8em;'>$total</td>";
|
|
echo "<td align=right style='font-size: .8em;'>$value $refcoin->symbol</td>";
|
|
|
|
echo "</tr>";
|
|
}
|
|
}
|
|
|
|
$d1 = microtime(true) - $t1;
|
|
controller()->memcache->add_monitoring_function('wallet_results-1', $d1);
|
|
}
|
|
|
|
//////////////////////////////////////////////////////////////////////////////
|
|
|
|
// $confirmed = bitcoinvaluetoa(controller()->memcache->get_database_scalar("wallet_confirmed-$user->id",
|
|
// "select sum(amount*price) from earnings where status=1 and userid=$user->id"))/$refcoin->price;
|
|
|
|
// $unconfirmed = bitcoinvaluetoa(controller()->memcache->get_database_scalar("wallet_unconfirmed-$user->id",
|
|
// "select sum(amount*price) from earnings where status=0 and userid=$user->id"))/$refcoin->price;
|
|
|
|
$confirmed = yaamp_convert_earnings_user($user, "status=1");
|
|
$unconfirmed = yaamp_convert_earnings_user($user, "status=0");
|
|
|
|
$total_unsold = bitcoinvaluetoa($confirmed + $unconfirmed);
|
|
$confirmed = $confirmed? bitcoinvaluetoa($confirmed): '';
|
|
$unconfirmed = $unconfirmed? bitcoinvaluetoa($unconfirmed): '';
|
|
//$total_usd = number_format($total_unsold*$mining->usdbtc*$refcoin->price, 3, '.', ' ');
|
|
$total_pending = bitcoinvaluetoa($total_pending);
|
|
|
|
if(!$show_details && $total_unsold > 0)
|
|
{
|
|
echo "<tr><td colspan=6 align=right>
|
|
<label style='font-size: .8em;'>
|
|
<input type='checkbox' onclick='javascript:main_wallet_refresh_details()'>
|
|
Show Details
|
|
</label>
|
|
</td></tr>";
|
|
}
|
|
|
|
echo "<tr class='ssrow' style='border-top: 3px solid #eee;'>";
|
|
|
|
echo "<td valign=top><img width=16 src='$refcoin->image'></td>";
|
|
echo "<td valign=top><b>";
|
|
|
|
if($refcoin->symbol == 'BTC')
|
|
echo "$refcoin->name";
|
|
else
|
|
echo "<a href='/site/block?id=$refcoin->id'>$refcoin->name</a>";
|
|
|
|
echo "<br><span style='font-size: .8em;'>(total pending)</span></b></td>";
|
|
|
|
echo "<td valign=top align=right style='font-size: .8em;'>$unconfirmed</td>";
|
|
echo "<td valign=top align=right style='font-size: .8em;'>$confirmed</td>";
|
|
echo "<td valign=top align=right style='font-size: .8em;'></td>";
|
|
echo "<td valign=top align=right style='font-size: .8em;'>$total_unsold $refcoin->symbol</td>";
|
|
|
|
echo "</tr>";
|
|
|
|
echo "<tr><td style='font-size: .7em;'> </td></tr>";
|
|
|
|
// ////////////////////////////////////////////////////////////////////////////
|
|
|
|
$balance = bitcoinvaluetoa($user->balance);
|
|
//$balance_usd = number_format($user->balance*$mining->usdbtc*$refcoin->price, 3, '.', ' ');
|
|
|
|
echo "<tr class='ssrow' style='border-top: 1px solid #eee;'>";
|
|
echo "<td><img width=16 src='$refcoin->image'></td>";
|
|
echo "<td colspan=3><b>Balance</b></td>";
|
|
echo "<td align=right style='font-size: .8em;'><b></b></td>";
|
|
echo "<td align=right style='font-size: .9em;'><b>$balance $refcoin->symbol</b></td>";
|
|
echo "</tr>";
|
|
|
|
////////////////////////////////////////////////////////////////////////////
|
|
|
|
$total_unpaid = bitcoinvaluetoa($balance + $total_unsold);
|
|
//$total_unpaid_usd = number_format($total_unpaid*$mining->usdbtc*$refcoin->price, 3, '.', ' ');
|
|
|
|
echo "<tr class='ssrow' style='border-top: 3px solid #eee;'>";
|
|
echo "<td><img width=16 src='$refcoin->image'></td>";
|
|
echo "<td colspan=3><b>Total Unpaid</b></td>";
|
|
echo "<td align=right style='font-size: .8em;'></td>";
|
|
echo "<td align=right style='font-size: .9em;'>$total_unpaid $refcoin->symbol</td>";
|
|
echo "</tr>";
|
|
|
|
////////////////////////////////////////////////////////////////////////////
|
|
|
|
$total_paid = controller()->memcache->get_database_scalar("wallet_total_paid-$user->id",
|
|
"select sum(amount) from payouts where account_id=$user->id");
|
|
|
|
$total_paid = bitcoinvaluetoa($total_paid);
|
|
//$total_paid_usd = number_format($total_paid*$mining->usdbtc*$refcoin->price, 3, '.', ' ');
|
|
|
|
echo "<tr class='ssrow' style='border-top: 1px solid #eee;'>";
|
|
echo "<td><img width=16 src='$refcoin->image'></td>";
|
|
echo "<td colspan=3><b>Total Paid</b></td>";
|
|
echo "<td align=right style='font-size: .8em;'></td>";
|
|
echo "<td align=right style='font-size: .9em;'><a href='javascript:main_wallet_tx()'>$total_paid $refcoin->symbol</a></td>";
|
|
echo "</tr>";
|
|
|
|
////////////////////////////////////////////////////////////////////////////
|
|
|
|
//$delay = 7*24*60*60;
|
|
|
|
$total_earned = bitcoinvaluetoa($total_unsold + $balance + $total_paid);
|
|
//$total_earned_usd = number_format($total_earned*$mining->usdbtc*$refcoin->price, 3, '.', ' ');
|
|
|
|
echo "<tr class='ssrow' style='border-top: 3px solid #eee;'>";
|
|
echo "<td><img width=16 src='$refcoin->image'></td>";
|
|
echo "<td colspan=3><b>Total Earned</b></td>";
|
|
echo "<td align=right style='font-size: .8em;'></td>";
|
|
echo "<td align=right style='font-size: .9em;'>$total_earned $refcoin->symbol</td>";
|
|
echo "</tr>";
|
|
|
|
echo "</table>";
|
|
|
|
echo "</div>";
|
|
|
|
$usd = number_format($mining->usdbtc, 2, '.', ' ');
|
|
echo "<p style='font-size: .8em'>
|
|
* approximate from current exchange rates<br>
|
|
** bitstamp <b>$usd</b> USD/BTC
|
|
</p>";
|
|
|
|
echo "</div><br>";
|
|
|
|
WriteBoxHeader("Last 24 Hours Payouts: $user->username");
|
|
|
|
$t = time()-24*60*60;
|
|
$list = getdbolist('db_payouts', "account_id={$user->id} AND time>$t ORDER BY time DESC");
|
|
|
|
echo "<table class='dataGrid2'>";
|
|
|
|
echo "<thead>";
|
|
echo "<tr>";
|
|
echo "<th align=right>Time</th>";
|
|
echo "<th align=right>Amount</th>";
|
|
echo "<th>Tx</th>";
|
|
echo "</tr>";
|
|
echo "</thead>";
|
|
|
|
$total = 0; $firstid = 999999999;
|
|
foreach($list as $payout)
|
|
{
|
|
$d = datetoa2($payout->time);
|
|
$amount = bitcoinvaluetoa($payout->amount);
|
|
$firstid = min($firstid, (int) $payout->id);
|
|
|
|
$payout_tx = substr($payout->tx, 0, 36).'...';
|
|
|
|
echo "<tr class='ssrow'>";
|
|
|
|
echo "<td align=right><b>$d ago</b></td>";
|
|
echo "<td align=right><b>$amount</b></td>";
|
|
|
|
if($user->coinid == 6)
|
|
$txurl = "https://blockchain.info/tx/$payout->tx";
|
|
else
|
|
$txurl = "/explorer?id=$user->coinid&txid=$payout->tx";
|
|
|
|
echo "<td style='font-family: monospace;'><a href='$txurl' target=_blank>$payout_tx</a></td>";
|
|
echo "</tr>";
|
|
|
|
$total += $payout->amount;
|
|
}
|
|
|
|
$amount = bitcoinvaluetoa($total);
|
|
|
|
echo <<<end
|
|
<tr class="ssrow">
|
|
<td align="right">Total:</td>
|
|
<td align="right"><b>{$amount}</b></td>
|
|
<td></td>
|
|
</tr>
|
|
end;
|
|
|
|
// Search extra Payouts which were not in the db (yiimp payout check command)
|
|
// In this case, the id are greater than last 24h ones and the fee column is filled
|
|
$list_extra = getdbolist('db_payouts', "account_id={$user->id} AND id>$firstid AND fee > 0.0 ORDER BY time DESC");
|
|
|
|
if (!empty($list_extra)) {
|
|
|
|
echo <<<end
|
|
<tr class="ssrow" style="color: darkred;">
|
|
<th colspan="3"><b>Extra payouts detected in the last 24H to explain negative balances (buggy Wallets)</b></th>
|
|
</tr>
|
|
<tr class="ssrow">
|
|
<td colspan="3" style="font-size: .9em; padding-bottom: 8px;">
|
|
Some wallets (LYB) have a problem and don't confirm a transaction in the requested time.<br/>
|
|
Please be honest and continue mining to handle these extra transactions sent to you.<br/>
|
|
</th>
|
|
</tr>
|
|
<tr class="ssrow">
|
|
<th align="right">Time</th> <th align="right">Amount</th> <th>Tx</th>
|
|
</tr>
|
|
end;
|
|
|
|
$total = 0.0;
|
|
foreach($list_extra as $payout)
|
|
{
|
|
$d = datetoa2($payout->time);
|
|
$amount = bitcoinvaluetoa($payout->amount);
|
|
|
|
$payout_tx = substr($payout->tx, 0, 36).'...';
|
|
|
|
echo "<tr class='ssrow'>";
|
|
|
|
echo "<td align=right><b>$d ago</b></td>";
|
|
echo "<td align=right><b>$amount</b></td>";
|
|
|
|
if($user->coinid == 6)
|
|
$txurl = "https://blockchain.info/tx/$payout->tx";
|
|
else
|
|
$txurl = "/explorer?id=$user->coinid&txid=$payout->tx";
|
|
echo "<td style='font-family: monospace;'><a href='$txurl' target=_blank>$payout_tx</a></td>";
|
|
echo "</tr>";
|
|
|
|
$total += $payout->amount;
|
|
}
|
|
|
|
$amount = bitcoinvaluetoa($total);
|
|
|
|
echo <<<end
|
|
<tr class="ssrow" style="color: darkred;">
|
|
<td align="right">Total:</td>
|
|
<td align="right"><b>{$amount}</b></td>
|
|
<td></td>
|
|
</tr>
|
|
end;
|
|
}
|
|
|
|
|
|
echo "</table><br>";
|
|
echo "</div>";
|
|
|
|
echo "</div><br>";
|
|
|
|
|
|
|
|
|
|
|
|
|