diff --git a/include/classes/bitcoinwrapper.class.php b/include/classes/bitcoinwrapper.class.php index c399e52e4..4bd318ec2 100755 --- a/include/classes/bitcoinwrapper.class.php +++ b/include/classes/bitcoinwrapper.class.php @@ -40,7 +40,7 @@ public function is_testnet() { 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 @@ public function getblockcount() { // 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() { diff --git a/include/classes/coins/coin_c11.class.php b/include/classes/coins/coin_c11.class.php new file mode 100644 index 000000000..d2c6cc5fd --- /dev/null +++ b/include/classes/coins/coin_c11.class.php @@ -0,0 +1,12 @@ +url = $url; - $this->debug = $debug; + $this->debug = $debug; $this->debug_output = ''; $this->id = rand(1, 100); } @@ -97,7 +97,7 @@ public function __call($method, $params) { '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 @@ public function __call($method, $params) { // 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); diff --git a/include/pages/admin/checks/check_daemon.inc.php b/include/pages/admin/checks/check_daemon.inc.php index a4d445070..baa68b012 100644 --- a/include/pages/admin/checks/check_daemon.inc.php +++ b/include/pages/admin/checks/check_daemon.inc.php @@ -35,11 +35,17 @@ $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"; diff --git a/include/pages/admin/wallet.inc.php b/include/pages/admin/wallet.inc.php index 6aca3a693..16c75d4cd 100644 --- a/include/pages/admin/wallet.inc.php +++ b/include/pages/admin/wallet.inc.php @@ -11,14 +11,32 @@ $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 ($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 @@ $smarty->assign("PEERINFO", $aGetPeerInfo); $smarty->assign('PRECISION', $coin->getCoinValuePrevision()); $smarty->assign("TRANSACTIONS", $aGetTransactions); + $smarty->assign("LABELSCOMMAND", $labelsCommand); } else { $debug->append('Using cached page', 3); } diff --git a/templates/bootstrap/admin/wallet/accounts.tpl b/templates/bootstrap/admin/wallet/accounts.tpl index 7b7d22492..e66616b99 100644 --- a/templates/bootstrap/admin/wallet/accounts.tpl +++ b/templates/bootstrap/admin/wallet/accounts.tpl @@ -2,50 +2,75 @@
- Wallet Accounts + {if $LABELSCOMMAND} + Wallet Labels + {else} + Wallet Accounts + {/if}
{foreach key=NAME item=VALUE from=$ACCOUNTS}
- Account: {$NAME|default:"Default"} + {if $LABELSCOMMAND} + Label: {$VALUE|default:"Default"} + {else} + Account: {$NAME|default:"Default"} + {/if}
-
-
-
- Balance Info -
-
- - - - - -
Balance{$VALUE|number_format:"8"}
+ {if (not ($LABELSCOMMAND))} +
+
+
+ Balance Info +
+
+ + + + + +
Balance{$VALUE|number_format:"8"}
+
-
+ {/if} {foreach key=ACCOUNT item=ADDRESS from=$ACCOUNTADDRESSES} {if $ACCOUNT == $NAME} - + {if $LABELSCOMMAND} +
+ {else}
+ {/if}
- Addresses assigned to Account {$ACCOUNT|default:"Default"} + {if $LABELSCOMMAND} + Addresses assigned to Label {$VALUE|default:"Default"} + {else} + Addresses assigned to Account {$ACCOUNT|default:"Default"} + {/if}
{foreach from=$ACCOUNTADDRESSES[$ACCOUNT] key=ACCOUNT1 item=ADDRESS1} -{if $ADDRESS1@iteration is even by 1} - - +{if not $LABELSCOMMAND} + {if $ADDRESS1@iteration is even by 1} + + + {else} + + + {/if} {else} - - + {foreach from=$ACCOUNT1 key=ACCOUNT2 item=ADDRESS2} + + + + {/foreach} {/if} {/foreach} diff --git a/templates/bootstrap/admin/wallet/status.tpl b/templates/bootstrap/admin/wallet/status.tpl index c1d2f4773..a64be996c 100644 --- a/templates/bootstrap/admin/wallet/status.tpl +++ b/templates/bootstrap/admin/wallet/status.tpl @@ -14,7 +14,11 @@ - + {if $LABELSCOMMAND} + + {else} + + {/if} diff --git a/templates/bootstrap/admin/wallet/transactions.tpl b/templates/bootstrap/admin/wallet/transactions.tpl index 63f627ca4..9ffdaf4c1 100644 --- a/templates/bootstrap/admin/wallet/transactions.tpl +++ b/templates/bootstrap/admin/wallet/transactions.tpl @@ -9,7 +9,11 @@
{$ADDRESS1}
{$ADDRESS1}
{$ADDRESS1}
{$ADDRESS1}
{$ADDRESS2}
Peers Status BlocksAccountsLabelsAccounts
- + {if $LABELSCOMMAND} + + {else} + + {/if}
AccountLabelAccountAddress Category Amount