diff --git a/cronjobs/pplns_payout.php b/cronjobs/pplns_payout.php index a2fefa9f..f5d6f24c 100755 --- a/cronjobs/pplns_payout.php +++ b/cronjobs/pplns_payout.php @@ -46,7 +46,7 @@ foreach ($aAllBlocks as $iIndex => $aBlock) { // We support some dynamic share targets but fall back to our fixed value // Re-calculate after each run due to re-targets in this loop if ($config['pplns']['shares']['type'] == 'blockavg' && $block->getBlockCount() > 0) { - $pplns_target = round($block->getAvgBlockShares($config['pplns']['blockavg']['blockcount'])); + $pplns_target = round($block->getAvgBlockShares($aBlock['height'], $config['pplns']['blockavg']['blockcount'])); } else { $pplns_target = $config['pplns']['shares']['default']; } diff --git a/public/include/classes/block.class.php b/public/include/classes/block.class.php index 3f88887d..027d06c5 100644 --- a/public/include/classes/block.class.php +++ b/public/include/classes/block.class.php @@ -109,9 +109,9 @@ class Block { * @param limit int Maximum blocks to check * @return data float Float value of average shares **/ - public function getAvgBlockShares($limit=1) { - $stmt = $this->mysqli->prepare("SELECT AVG(x.shares) AS average FROM (SELECT shares FROM $this->table ORDER BY height DESC LIMIT ?) AS x"); - if ($this->checkStmt($stmt) && $stmt->bind_param('i', $limit) && $stmt->execute() && $result = $stmt->get_result()) + public function getAvgBlockShares($height, $limit=1) { + $stmt = $this->mysqli->prepare("SELECT AVG(x.shares) AS average FROM (SELECT shares FROM $this->table WHERE height <= ? ORDER BY height DESC LIMIT ?) AS x"); + if ($this->checkStmt($stmt) && $stmt->bind_param('ii', $height, $limit) && $stmt->execute() && $result = $stmt->get_result()) return (float)$result->fetch_object()->average; return false; } diff --git a/public/include/smarty_globals.inc.php b/public/include/smarty_globals.inc.php index 8bc9549b..7941d31a 100644 --- a/public/include/smarty_globals.inc.php +++ b/public/include/smarty_globals.inc.php @@ -136,7 +136,7 @@ if (@$_SESSION['USERDATA']['id']) { $aGlobal['userdata']['est_payout'] = 0; } case 'pplns': - if ($iAvgBlockShares = round($block->getAvgBlockShares($config['pplns']['blockavg']['blockcount']))) { + if ($aLastBlock = $block->getLast() && $iAvgBlockShares = round($block->getAvgBlockShares($aLastBlock['height'], $config['pplns']['blockavg']['blockcount']))) { $aGlobal['pplns']['target'] = $iAvgBlockShares; } else { $aGlobal['pplns']['target'] = $config['pplns']['shares']['default'];