This will allow pages to skip loading data from backends like the database or the wallet RPC server. If a cached page is detected and valid, all dynamic content generation will be skipped completely. Other pages that have not been adjusted in this commit will still fetch backend data all the time. This will ensure clients always see the most recent data, like worker information or account changes. This should fix #309 completely but needs some testing.
67 lines
2.4 KiB
PHP
67 lines
2.4 KiB
PHP
<?php
|
|
|
|
// Make sure we are called from index.php
|
|
if (!defined('SECURITY'))
|
|
die('Hacking attempt');
|
|
|
|
if (!$smarty->isCached('master.tpl', md5(serialize($_REQUEST)))) {
|
|
$debug->append('No cached version available, fetching from backend', 3);
|
|
// Fetch data from wallet
|
|
if ($bitcoin->can_connect() === true){
|
|
$dDifficulty = $bitcoin->getdifficulty();
|
|
if (is_array($dDifficulty) && array_key_exists('proof-of-work', $dDifficulty))
|
|
$dDifficulty = $dDifficulty['proof-of-work'];
|
|
$iBlock = $bitcoin->getblockcount();
|
|
} else {
|
|
$dDifficulty = 1;
|
|
$iBlock = 0;
|
|
$_SESSION['POPUP'][] = array('CONTENT' => 'Unable to connect to wallet RPC service: ' . $bitcoin->can_connect(), 'TYPE' => 'errormsg');
|
|
}
|
|
|
|
// Top share contributors
|
|
$aContributorsShares = $statistics->getTopContributors('shares', 15);
|
|
|
|
// Top hash contributors
|
|
$aContributorsHashes = $statistics->getTopContributors('hashes', 15);
|
|
|
|
// Grab the last 10 blocks found
|
|
$iLimit = 5;
|
|
$aBlocksFoundData = $statistics->getBlocksFound($iLimit);
|
|
count($aBlocksFoundData) > 0 ? $aBlockData = $aBlocksFoundData[0] : $aBlockData = array();
|
|
|
|
// Estimated time to find the next block
|
|
$iCurrentPoolHashrate = $statistics->getCurrentHashrate();
|
|
|
|
// Time in seconds, not hours, using modifier in smarty to translate
|
|
$iCurrentPoolHashrate > 0 ? $iEstTime = $dDifficulty * pow(2,32) / ($iCurrentPoolHashrate * 1000) : $iEstTime = 0;
|
|
|
|
// Time since last block
|
|
$now = new DateTime( "now" );
|
|
if (!empty($aBlockData)) {
|
|
$dTimeSinceLast = ($now->getTimestamp() - $aBlockData['time']);
|
|
} else {
|
|
$dTimeSinceLast = 0;
|
|
}
|
|
|
|
// Propagate content our template
|
|
$smarty->assign("ESTTIME", $iEstTime);
|
|
$smarty->assign("TIMESINCELAST", $dTimeSinceLast);
|
|
$smarty->assign("BLOCKSFOUND", $aBlocksFoundData);
|
|
$smarty->assign("BLOCKLIMIT", $iLimit);
|
|
$smarty->assign("CONTRIBSHARES", $aContributorsShares);
|
|
$smarty->assign("CONTRIBHASHES", $aContributorsHashes);
|
|
$smarty->assign("CURRENTBLOCK", $iBlock);
|
|
count($aBlockData) > 0 ? $smarty->assign("LASTBLOCK", $aBlockData['height']) : $smarty->assign("LASTBLOCK", 0);
|
|
$smarty->assign("DIFFICULTY", $dDifficulty);
|
|
$smarty->assign("REWARD", $config['reward']);
|
|
} else {
|
|
$debug->append('Using cached page', 3);
|
|
}
|
|
|
|
if ($user->isAuthenticated()) {
|
|
$smarty->assign("CONTENT", "authenticated.tpl");
|
|
} else {
|
|
$smarty->assign("CONTENT", "../default.tpl");
|
|
}
|
|
?>
|