Adding support for the latest Bitcoin's changes
- Accounts was removed, instead, now, we have labels
This commit is contained in:
parent
ffa5bb326d
commit
fd0f0fd656
@ -40,7 +40,7 @@ class BitcoinWrapper extends BitcoinClient {
|
||||
else
|
||||
return $this->memcache->setCache(__FUNCTION__, parent::getblockchaininfo()['chain'] == 'test', 30);
|
||||
}
|
||||
|
||||
|
||||
public function getmininginfo() {
|
||||
$this->oDebug->append("STA " . __METHOD__, 4);
|
||||
if ($data = $this->memcache->get(__FUNCTION__)) return $data;
|
||||
@ -55,15 +55,21 @@ class BitcoinWrapper extends BitcoinClient {
|
||||
// Wrapper method to get the real main account balance
|
||||
public function getrealbalance() {
|
||||
$this->oDebug->append("STA " . __METHOD__, 4);
|
||||
$aAccounts = parent::listaccounts();
|
||||
$dBalance = parent::getbalance('');
|
||||
$aAccounts = [];
|
||||
|
||||
try {
|
||||
$aAccounts = parent::listaccounts();
|
||||
} catch (Exception $e) {
|
||||
if ($e->getCode() == 404)
|
||||
$aAccounts = array( '*' => parent::getbalance("*") );
|
||||
}
|
||||
|
||||
// Account checks
|
||||
if (count($aAccounts) == 1) {
|
||||
// We only have a single account so getbalance will be fine
|
||||
return $dBalance;
|
||||
return parent::getbalance("*");
|
||||
} else {
|
||||
$dMainBalance = $aAccounts[''];
|
||||
return $dMainBalance;
|
||||
return $aAccounts[0];
|
||||
}
|
||||
}
|
||||
public function getdifficulty() {
|
||||
|
||||
@ -58,7 +58,7 @@ class jsonRPCClient {
|
||||
*/
|
||||
public function __construct($url, $debug = false) {
|
||||
$this->url = $url;
|
||||
$this->debug = $debug;
|
||||
$this->debug = $debug;
|
||||
$this->debug_output = '';
|
||||
$this->id = rand(1, 100);
|
||||
}
|
||||
@ -97,7 +97,7 @@ class jsonRPCClient {
|
||||
'id' => $this->id
|
||||
);
|
||||
$request = json_encode($request);
|
||||
if ($this->debug) $this->debug_output[] = 'Request: '.$request;
|
||||
if ($this->debug) $this->debug_output = 'Request: '.$request[0];
|
||||
|
||||
// performs the HTTP POST
|
||||
// extract information from URL for proper authentication
|
||||
@ -112,12 +112,12 @@ class jsonRPCClient {
|
||||
// curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 0);
|
||||
$response = curl_exec($ch);
|
||||
if (curl_errno($ch)) throw new Exception('RPC call failed: ' . curl_error($ch));
|
||||
if ($this->debug) $this->debug_output[] = 'Response: ' . $response;
|
||||
if ($this->debug) $this->debug_output = 'Response: ' . $response[0];
|
||||
$response = json_decode($response, true);
|
||||
$resultStatus = curl_getinfo($ch);
|
||||
if ($resultStatus['http_code'] != '200') {
|
||||
if ($resultStatus['http_code'] == '401') throw new Exception('RPC call did not return 200: Authentication failed');
|
||||
throw new Exception('RPC call did not return 200: HTTP error: ' . $resultStatus['http_code'] . ' - JSON Response: [' . @$response['error']['code'] . '] ' . @$response['error']['message']);
|
||||
throw new Exception('RPC call did not return 200: HTTP error: ' . $resultStatus['http_code'] . ' - JSON Response: [' . @$response['error']['code'] . '] ' . @$response['error']['message'], $resultStatus['http_code']);
|
||||
}
|
||||
curl_close($ch);
|
||||
|
||||
|
||||
@ -35,11 +35,17 @@ try {
|
||||
$newerror['description'] = "Blockchain download progress is at an estimated $dDownloadPercentage%. It may take a while to complete.";
|
||||
$newerror['configvalue'] = "wallet.host";
|
||||
$newerror['helplink'] = "https://github.com/MPOS/php-mpos/wiki/Config-Setup#wiki-local-wallet-rpc";
|
||||
$error[] = $newerror;
|
||||
$error[] = $newerror;
|
||||
$newerror = null;
|
||||
}
|
||||
// check if there is more than one account set on wallet
|
||||
$accounts = $bitcoin->listaccounts();
|
||||
try {
|
||||
$accounts = $bitcoin->listaccounts();
|
||||
} catch (Exception $e) {
|
||||
if ($e->getCode() == 404)
|
||||
$accounts = $bitcoin->listwallets();
|
||||
}
|
||||
|
||||
if (count($accounts) > 1 && $accounts[''] <= 0) {
|
||||
$newerror = array();
|
||||
$newerror['name'] = "Coin daemon";
|
||||
|
||||
@ -11,14 +11,32 @@ if (!$smarty->isCached('master.tpl', $smarty_cache_key)) {
|
||||
$debug->append('No cached version available, fetching from backend', 3);
|
||||
if ($bitcoin->can_connect() === true) {
|
||||
$dBalance = $bitcoin->getrealbalance();
|
||||
$labelsCommand = false;
|
||||
|
||||
try {
|
||||
$dWalletAccounts = $bitcoin->listaccounts();
|
||||
} catch (Exception $e) {
|
||||
if ($e->getCode() == 404) {
|
||||
$dWalletAccounts = $bitcoin->listlabels();
|
||||
$labelsCommand = true;
|
||||
}
|
||||
}
|
||||
|
||||
$dWalletAccounts = $bitcoin->listaccounts();
|
||||
$dAddressCount = count($dWalletAccounts);
|
||||
|
||||
$dAccountAddresses = array();
|
||||
foreach($dWalletAccounts as $key => $value)
|
||||
{
|
||||
$dAccountAddresses[$key] = $bitcoin->getaddressesbyaccount((string)$key);
|
||||
if (!($labelsCommand))
|
||||
$dAccountAddresses[$key] = $bitcoin->getaddressesbyaccount((string)$key);
|
||||
else {
|
||||
if (strlen($value) == 0)
|
||||
$value = "";
|
||||
|
||||
foreach ($bitcoin->getaddressesbylabel((string)$value) as $key2 => $value2) {
|
||||
$dAccountAddresses[$key][$key2] = $value2;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
$aGetInfo = $bitcoin->getinfo();
|
||||
@ -26,7 +44,7 @@ if (!$smarty->isCached('master.tpl', $smarty_cache_key)) {
|
||||
if ($aGetInfo['connections'] == 0) $aGetInfo['errors'] = 'No peers';
|
||||
# Check if daemon is downloading the blockchain, estimated
|
||||
if ($dDownloadPercentage = $bitcoin->getblockchaindownload()) $aGetInfo['errors'] = "Downloading: $dDownloadPercentage%";
|
||||
$aGetTransactions = $bitcoin->listtransactions('', (int)$setting->getValue('wallet_transaction_limit', 25));
|
||||
$aGetTransactions = $bitcoin->listtransactions('*', (int)$setting->getValue('wallet_transaction_limit', 25));
|
||||
if (is_array($aGetInfo) && array_key_exists('newmint', $aGetInfo)) {
|
||||
$dNewmint = $aGetInfo['newmint'];
|
||||
} else {
|
||||
@ -69,6 +87,7 @@ if (!$smarty->isCached('master.tpl', $smarty_cache_key)) {
|
||||
$smarty->assign("PEERINFO", $aGetPeerInfo);
|
||||
$smarty->assign('PRECISION', $coin->getCoinValuePrevision());
|
||||
$smarty->assign("TRANSACTIONS", $aGetTransactions);
|
||||
$smarty->assign("LABELSCOMMAND", $labelsCommand);
|
||||
} else {
|
||||
$debug->append('Using cached page', 3);
|
||||
}
|
||||
|
||||
@ -2,50 +2,75 @@
|
||||
<div class="col-lg-12">
|
||||
<div class="panel panel-info">
|
||||
<div class="panel-heading">
|
||||
<i class="fa fa-users fa-fw"></i> Wallet Accounts
|
||||
{if $LABELSCOMMAND}
|
||||
<i class="fa fa-users fa-fw"></i> Wallet Labels
|
||||
{else}
|
||||
<i class="fa fa-users fa-fw"></i> Wallet Accounts
|
||||
{/if}
|
||||
</div>
|
||||
<div class="panel-body ">
|
||||
<div class="panel-group">
|
||||
{foreach key=NAME item=VALUE from=$ACCOUNTS}
|
||||
<div class="panel panel-default">
|
||||
<div class="panel-heading">
|
||||
<i class="fa fa-user fa-fw"></i> Account: {$NAME|default:"Default"}
|
||||
{if $LABELSCOMMAND}
|
||||
<i class="fa fa-user fa-fw"></i> Label: {$VALUE|default:"Default"}
|
||||
{else}
|
||||
<i class="fa fa-user fa-fw"></i> Account: {$NAME|default:"Default"}
|
||||
{/if}
|
||||
</div>
|
||||
<div class="panel-body">
|
||||
<div class="col-lg-4">
|
||||
<div class="panel panel-info">
|
||||
<div class="panel-heading">
|
||||
<i class="fa fa-money fa-fw"></i> Balance Info
|
||||
</div>
|
||||
<div class="table-responsive panel-body no-padding">
|
||||
<table class="table table-striped table-bordered table-hover">
|
||||
<tr>
|
||||
<td class="col-lg-4">Balance</td>
|
||||
<td class="col-lg-12">{$VALUE|number_format:"8"}</td>
|
||||
</tr>
|
||||
</table>
|
||||
{if (not ($LABELSCOMMAND))}
|
||||
<div class="col-lg-4">
|
||||
<div class="panel panel-info">
|
||||
<div class="panel-heading">
|
||||
<i class="fa fa-money fa-fw"></i> Balance Info
|
||||
</div>
|
||||
<div class="table-responsive panel-body no-padding">
|
||||
<table class="table table-striped table-bordered table-hover">
|
||||
<tr>
|
||||
<td class="col-lg-4">Balance</td>
|
||||
<td class="col-lg-12">{$VALUE|number_format:"8"}</td>
|
||||
</tr>
|
||||
</table>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
{/if}
|
||||
|
||||
{foreach key=ACCOUNT item=ADDRESS from=$ACCOUNTADDRESSES}
|
||||
{if $ACCOUNT == $NAME}
|
||||
|
||||
{if $LABELSCOMMAND}
|
||||
<div class="col-lg-12">
|
||||
{else}
|
||||
<div class="col-lg-8">
|
||||
{/if}
|
||||
<div class="panel panel-info">
|
||||
<div class="panel-heading">
|
||||
<i class="fa fa-book fa-fw"></i> Addresses assigned to Account {$ACCOUNT|default:"Default"}
|
||||
{if $LABELSCOMMAND}
|
||||
<i class="fa fa-book fa-fw"></i> Addresses assigned to Label {$VALUE|default:"Default"}
|
||||
{else}
|
||||
<i class="fa fa-book fa-fw"></i> Addresses assigned to Account {$ACCOUNT|default:"Default"}
|
||||
{/if}
|
||||
</div>
|
||||
<div class="table-responsive panel-body no-padding">
|
||||
<table class="table table-striped table-bordered table-hover">
|
||||
<tbody>
|
||||
{foreach from=$ACCOUNTADDRESSES[$ACCOUNT] key=ACCOUNT1 item=ADDRESS1}
|
||||
{if $ADDRESS1@iteration is even by 1}
|
||||
<td>{$ADDRESS1}</td>
|
||||
</tr>
|
||||
{if not $LABELSCOMMAND}
|
||||
{if $ADDRESS1@iteration is even by 1}
|
||||
<td>{$ADDRESS1}</td>
|
||||
</tr>
|
||||
{else}
|
||||
<tr>
|
||||
<td>{$ADDRESS1}</td>
|
||||
{/if}
|
||||
{else}
|
||||
<tr>
|
||||
<td>{$ADDRESS1}</td>
|
||||
{foreach from=$ACCOUNT1 key=ACCOUNT2 item=ADDRESS2}
|
||||
<tr>
|
||||
<td>{$ADDRESS2}</td>
|
||||
</tr>
|
||||
{/foreach}
|
||||
{/if}
|
||||
{/foreach}
|
||||
<tbody>
|
||||
|
||||
@ -14,7 +14,11 @@
|
||||
<th>Peers</th>
|
||||
<th>Status</th>
|
||||
<th>Blocks</th>
|
||||
<th>Accounts</th>
|
||||
{if $LABELSCOMMAND}
|
||||
<th>Labels</th>
|
||||
{else}
|
||||
<th>Accounts</th>
|
||||
{/if}
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
|
||||
@ -9,7 +9,11 @@
|
||||
<table class="table table-striped table-bordered table-hover">
|
||||
<thead>
|
||||
<tr>
|
||||
<th class="text-center">Account</th>
|
||||
{if $LABELSCOMMAND}
|
||||
<th class="text-center">Label</th>
|
||||
{else}
|
||||
<th class="text-center">Account</th>
|
||||
{/if}
|
||||
<th class="text-center">Address</th>
|
||||
<th class="text-center">Category</th>
|
||||
<th class="text-right">Amount</th>
|
||||
|
||||
Loading…
Reference in New Issue
Block a user