diff --git a/cronjobs/findblock.php b/cronjobs/findblock.php old mode 100755 new mode 100644 index 782ed92a..2ce27efd --- a/cronjobs/findblock.php +++ b/cronjobs/findblock.php @@ -75,13 +75,12 @@ if (empty($aAllBlocks)) { $log->logDebug('No new blocks without share_id found in database'); } else { // Loop through our unaccounted blocks - $log->logInfo("Block ID\tHeight\t\tAmount\tShare ID\tShares\tFinder\t\tType"); + $log->logInfo("Block ID\tHeight\t\tAmount\tShare ID\tShares\tFinder\tWorker\t\tType"); foreach ($aAllBlocks as $iIndex => $aBlock) { if (empty($aBlock['share_id'])) { // Fetch share information if ( !$iPreviousShareId = $block->getLastShareId()) $iPreviousShareId = 0; - // Fetch this blocks upstream ID $aBlockRPCInfo = $bitcoin->query('getblock', $aBlock['blockhash']); if ($share->findUpstreamShare($aBlockRPCInfo, $iPreviousShareId)) { @@ -117,6 +116,7 @@ if (empty($aAllBlocks)) { } else { $iRoundShares = $share->getRoundShares($iPreviousShareId, $iCurrentUpstreamId); $iAccountId = $user->getUserId($share->getUpstreamFinder()); + $iWorker = $share->getUpstreamWorker(); } } else { $log->logFatal('E0005: Unable to fetch blocks upstream share, aborted:' . $share->getCronError()); @@ -130,6 +130,7 @@ if (empty($aAllBlocks)) { . $iCurrentUpstreamId . "\t\t" . $iRoundShares . "\t" . "[$iAccountId] " . $user->getUserName($iAccountId) . "\t" + . $iWorker . "\t" . $share->share_type ); @@ -138,6 +139,8 @@ if (empty($aAllBlocks)) { $log->logError('Failed to update share ID in database for block ' . $aBlock['height'] . ': ' . $block->getCronError()); if (!$block->setFinder($aBlock['id'], $iAccountId)) $log->logError('Failed to update finder account ID in database for block ' . $aBlock['height'] . ': ' . $block->getCronError()); + if (!$block->setFindingWorker($aBlock['id'], $iWorker)) + $log->logError('Failed to update worker ID in database for block ' . $aBlock['height'] . ': ' . $block->getCronError()); if (!$block->setShares($aBlock['id'], $iRoundShares)) $log->logError('Failed to update share count in database for block ' . $aBlock['height'] . ': ' . $block->getCronError()); if ($config['block_bonus'] > 0 && !$transaction->addTransaction($iAccountId, $config['block_bonus'], 'Bonus', $aBlock['id'])) { diff --git a/public/include/classes/block.class.php b/public/include/classes/block.class.php index 1edfb3b4..3ed11d1f 100644 --- a/public/include/classes/block.class.php +++ b/public/include/classes/block.class.php @@ -197,6 +197,17 @@ class Block extends Base { $field = array( 'name' => 'account_id', 'value' => $account_id, 'type' => 'i' ); return $this->updateSingle($block_id, $field); } + + /** + * Set finding worker of a block + * @param block_id int Block ID + * @param worker_id int Worker ID of finder + * @return bool + **/ + public function setFindingWorker($block_id, $worker=NULL) { + $field = array( 'name' => 'worker_name', 'value' => $worker, 'type' => 's' ); + return $this->updateSingle($block_id, $field); + } /** * Set finding share for a block diff --git a/public/include/classes/share.class.php b/public/include/classes/share.class.php index bbf378cf..30ab344c 100644 --- a/public/include/classes/share.class.php +++ b/public/include/classes/share.class.php @@ -231,6 +231,9 @@ class Share Extends Base { public function getUpstreamFinder() { return @$this->oUpstream->account; } + public function getUpstreamWorker() { + return @$this->oUpstream->worker; + } public function getUpstreamShareId() { return @$this->oUpstream->id; } @@ -254,39 +257,39 @@ class Share Extends Base { $header_hex = implode(unpack("H*", $header_bin)); // Stratum supported blockhash solution entry - $stmt = $this->mysqli->prepare("SELECT SUBSTRING_INDEX( `username` , '.', 1 ) AS account, id FROM $this->table WHERE solution = ? LIMIT 1"); + $stmt = $this->mysqli->prepare("SELECT SUBSTRING_INDEX( `username` , '.', 1 ) AS account, username as worker, id FROM $this->table WHERE solution = ? LIMIT 1"); if ($this->checkStmt($stmt) && $stmt->bind_param('s', $aBlock['hash']) && $stmt->execute() && $result = $stmt->get_result()) { $this->oUpstream = $result->fetch_object(); $this->share_type = 'stratum_blockhash'; - if (!empty($this->oUpstream->account) && is_int($this->oUpstream->id)) + if (!empty($this->oUpstream->account) && !empty($this->oUpstream->worker) && is_int($this->oUpstream->id)) return true; } // Stratum scrypt hash check $scrypt_hash = swapEndian(bin2hex(Scrypt::calc($header_bin, $header_bin, 1024, 1, 1, 32))); - $stmt = $this->mysqli->prepare("SELECT SUBSTRING_INDEX( `username` , '.', 1 ) AS account, id FROM $this->table WHERE solution = ? LIMIT 1"); + $stmt = $this->mysqli->prepare("SELECT SUBSTRING_INDEX( `username` , '.', 1 ) AS account, username as worker, id FROM $this->table WHERE solution = ? LIMIT 1"); if ($this->checkStmt($stmt) && $stmt->bind_param('s', $scrypt_hash) && $stmt->execute() && $result = $stmt->get_result()) { $this->oUpstream = $result->fetch_object(); $this->share_type = 'stratum_solution'; - if (!empty($this->oUpstream->account) && is_int($this->oUpstream->id)) + if (!empty($this->oUpstream->account) && !empty($this->oUpstream->worker) && is_int($this->oUpstream->id)) return true; } // Failed to fetch via startum solution, try pushpoold // Fallback to pushpoold solution type $ppheader = sprintf('%08d', $aBlock['version']) . word_reverse($aBlock['previousblockhash']) . word_reverse($aBlock['merkleroot']) . dechex($aBlock['time']) . $aBlock['bits'] . dechex($aBlock['nonce']); - $stmt = $this->mysqli->prepare("SELECT SUBSTRING_INDEX( `username` , '.', 1 ) AS account, id FROM $this->table WHERE solution LIKE CONCAT(?, '%') LIMIT 1"); + $stmt = $this->mysqli->prepare("SELECT SUBSTRING_INDEX( `username` , '.', 1 ) AS account, username as worker, id FROM $this->table WHERE solution LIKE CONCAT(?, '%') LIMIT 1"); if ($this->checkStmt($stmt) && $stmt->bind_param('s', $ppheader) && $stmt->execute() && $result = $stmt->get_result()) { $this->oUpstream = $result->fetch_object(); $this->share_type = 'pp_solution'; - if (!empty($this->oUpstream->account) && is_int($this->oUpstream->id)) + if (!empty($this->oUpstream->account) && !empty($this->oUpstream->worker) && is_int($this->oUpstream->id)) return true; } // Still no match, try upstream result with timerange $stmt = $this->mysqli->prepare(" SELECT - SUBSTRING_INDEX( `username` , '.', 1 ) AS account, id + SUBSTRING_INDEX( `username` , '.', 1 ) AS account, username as worker, id FROM $this->table WHERE upstream_result = 'Y' AND id > ? @@ -296,14 +299,14 @@ class Share Extends Base { if ($this->checkStmt($stmt) && $stmt->bind_param('iii', $last, $aBlock['time'], $aBlock['time']) && $stmt->execute() && $result = $stmt->get_result()) { $this->oUpstream = $result->fetch_object(); $this->share_type = 'upstream_share'; - if (!empty($this->oUpstream->account) && is_int($this->oUpstream->id)) + if (!empty($this->oUpstream->account) && !empty($this->oUpstream->worker) && is_int($this->oUpstream->id)) return true; } // We failed again, now we take ANY result matching the timestamp $stmt = $this->mysqli->prepare(" SELECT - SUBSTRING_INDEX( `username` , '.', 1 ) AS account, id + SUBSTRING_INDEX( `username` , '.', 1 ) AS account, username as worker, id FROM $this->table WHERE our_result = 'Y' AND id > ? @@ -312,7 +315,7 @@ class Share Extends Base { if ($this->checkStmt($stmt) && $stmt->bind_param('ii', $last, $aBlock['time']) && $stmt->execute() && $result = $stmt->get_result()) { $this->oUpstream = $result->fetch_object(); $this->share_type = 'any_share'; - if (!empty($this->oUpstream->account) && is_int($this->oUpstream->id)) + if (!empty($this->oUpstream->account) && !empty($this->oUpstream->worker) && is_int($this->oUpstream->id)) return true; } $this->setErrorMessage($this->getErrorMsg('E0052', $aBlock['height'])); diff --git a/public/include/classes/statistics.class.php b/public/include/classes/statistics.class.php index 4f9e0278..8d4803eb 100644 --- a/public/include/classes/statistics.class.php +++ b/public/include/classes/statistics.class.php @@ -122,7 +122,7 @@ class Statistics extends Base { **/ public function getBlocksFoundHeight($iHeight=0, $limit=10) { $this->debug->append("STA " . __METHOD__, 4); - if ($data = $this->memcache->get(__FUNCTION__ . $iHeight . $limit)) return $data; + if ($data = $this->memcache->get(__FUNCTION__ . $iHeight . $limit)) return $data; $stmt = $this->mysqli->prepare(" SELECT b.*, @@ -139,6 +139,54 @@ class Statistics extends Base { return $this->sqlError(); } + /** + * Get SUM of blocks found and generated Coins for each Account + * @param limit int Last limit blocks + * @return array + **/ + public function getBlocksSolvedbyAccount($limit=25) { + $this->debug->append("STA " . __METHOD__, 4); + if ($data = $this->memcache->get(__FUNCTION__ . $limit)) return $data; + $stmt = $this->mysqli->prepare(" + SELECT + b.*, + a.username AS finder, + a.is_anonymous AS is_anonymous, + COUNT(b.id) AS solvedblocks, + SUM(b.amount) AS generatedcoins + FROM " . $this->block->getTableName() . " AS b + LEFT JOIN " . $this->user->getTableName() . " AS a + ON b.account_id = a.id + WHERE confirmations > 0 + GROUP BY finder + ORDER BY solvedblocks DESC LIMIT ?"); + if ($this->checkStmt($stmt) && $stmt->bind_param("i", $limit) && $stmt->execute() && $result = $stmt->get_result()) + return $this->memcache->setCache(__FUNCTION__ . $limit, $result->fetch_all(MYSQLI_ASSOC), 5); + return $this->sqlError(); + } + + /** + * Get SUM of blocks found and generated Coins for each worker + * @param limit int Last limit blocks + * @return array + **/ + public function getBlocksSolvedbyWorker($account_id, $limit=25) { + $this->debug->append("STA " . __METHOD__, 4); + if ($data = $this->memcache->get(__FUNCTION__ . $account_id . $limit)) return $data; + $stmt = $this->mysqli->prepare(" + SELECT + worker_name AS finder, + COUNT(id) AS solvedblocks, + SUM(amount) AS generatedcoins + FROM " . $this->block->getTableName() . " + WHERE account_id = ? AND worker_name != 'unknown' + GROUP BY finder + ORDER BY solvedblocks DESC LIMIT ?"); + if ($this->checkStmt($stmt) && $stmt->bind_param("ii", $account_id, $limit) && $stmt->execute() && $result = $stmt->get_result()) + return $this->memcache->setCache(__FUNCTION__ . $account_id . $limit, $result->fetch_all(MYSQLI_ASSOC), 5); + return $this->sqlError(); + } + /** * Currently the only function writing to the database * Stored per block user statistics of valid and invalid shares diff --git a/public/include/config/admin_settings.inc.php b/public/include/config/admin_settings.inc.php index f9c96b91..37769bd5 100644 --- a/public/include/config/admin_settings.inc.php +++ b/public/include/config/admin_settings.inc.php @@ -187,6 +187,13 @@ $aSettings['acl'][] = array( 'name' => 'acl_round_statistics', 'value' => $setting->getValue('acl_round_statistics'), 'tooltip' => 'Make the round statistics page private (users only) or public.' ); +$aSettings['acl'][] = array( + 'display' => 'Block Finder Statistics', 'type' => 'select', + 'options' => array( 0 => 'Private', 1 => 'Public'), + 'default' => 1, + 'name' => 'acl_blockfinder_statistics', 'value' => $setting->getValue('acl_blockfinder_statistics'), + 'tooltip' => 'Make the Block Finder Statistics page private (users only) or public.' +); $aSettings['acl'][] = array( 'display' => 'Uptime Statistics', 'type' => 'select', 'options' => array( 0 => 'Private', 1 => 'Public'), diff --git a/public/include/pages/statistics/blockfinder.inc.php b/public/include/pages/statistics/blockfinder.inc.php new file mode 100644 index 00000000..dcf75226 --- /dev/null +++ b/public/include/pages/statistics/blockfinder.inc.php @@ -0,0 +1,26 @@ +isCached('master.tpl', $smarty_cache_key)) { + $debug->append('No cached version available, fetching from backend', 3); + + $getBlocksSolvedbyAccount = $statistics->getBlocksSolvedbyAccount(); + $smarty->assign("BLOCKSSOLVEDBYACCOUNT", $getBlocksSolvedbyAccount); +} else { + $debug->append('Using cached page', 3); +} + +if ($setting->getValue('acl_blockfinder_statistics')) { + $smarty->assign("CONTENT", "finder.tpl"); +} else if ($user->isAuthenticated()) { + $getBlocksSolvedbyWorker = $statistics->getBlocksSolvedbyWorker($_SESSION['USERDATA']['id']); + $smarty->assign("BLOCKSSOLVEDBYWORKER", $getBlocksSolvedbyWorker); + $smarty->assign("CONTENT", "finder.tpl"); +} else { + $_SESSION['POPUP'][] = array('CONTENT' => 'Block Finders are currently disabled. Please try again later.', 'TYPE' => 'errormsg'); + $smarty->assign("CONTENT", "default.tpl"); +} +?> diff --git a/public/include/smarty_globals.inc.php b/public/include/smarty_globals.inc.php index 93987c4c..806349dd 100644 --- a/public/include/smarty_globals.inc.php +++ b/public/include/smarty_globals.inc.php @@ -104,6 +104,7 @@ $aGlobal['statistics']['analytics']['code'] = $setting->getValue('statistics_ana $aGlobal['acl']['pool']['statistics'] = $setting->getValue('acl_pool_statistics'); $aGlobal['acl']['block']['statistics'] = $setting->getValue('acl_block_statistics'); $aGlobal['acl']['round']['statistics'] = $setting->getValue('acl_round_statistics'); +$aGlobal['acl']['blockfinder']['statistics'] = $setting->getValue('acl_blockfinder_statistics'); $aGlobal['acl']['uptime']['statistics'] = $setting->getValue('acl_uptime_statistics'); // We don't want these session infos cached diff --git a/public/site_assets/mpos/css/fontello-codes.css b/public/site_assets/mpos/css/fontello-codes.css index 5e87a41e..a39c72df 100644 --- a/public/site_assets/mpos/css/fontello-codes.css +++ b/public/site_assets/mpos/css/fontello-codes.css @@ -1,6 +1,7 @@ .icon-dollar:before { content: '\e818'; } /* '' */ .icon-doc:before { content: '\e81b'; } /* '' */ +.icon-login:before { content: '\e81c'; } /* '' */ .icon-exchange:before { content: '\e81a'; } /* '' */ .icon-money:before { content: '\e819'; } /* '' */ .icon-mail:before { content: '\e814'; } /* '' */ @@ -18,7 +19,7 @@ .icon-bell:before { content: '\e817'; } /* '' */ .icon-trash:before { content: '\e812'; } /* '' */ .icon-cog:before { content: '\e810'; } /* '' */ -.icon-login:before { content: '\e81c'; } /* '' */ +.icon-search:before { content: '\e827'; } /* '' */ .icon-resize-full-alt:before { content: '\e824'; } /* '' */ .icon-down-open:before { content: '\e825'; } /* '' */ .icon-left-open:before { content: '\e801'; } /* '' */ diff --git a/public/site_assets/mpos/css/fontello-config.json b/public/site_assets/mpos/css/fontello-config.json index d0fdae41..b8fb0a0b 100644 --- a/public/site_assets/mpos/css/fontello-config.json +++ b/public/site_assets/mpos/css/fontello-config.json @@ -12,6 +12,12 @@ "code": 59416, "src": "fontawesome" }, + { + "uid": "7222571caa5c15f83dcfd447c58d68d9", + "css": "search", + "code": 59431, + "src": "entypo" + }, { "uid": "a204f0fa972408eaae5a363c444991b2", "css": "login", diff --git a/public/site_assets/mpos/css/fontello-embedded.css b/public/site_assets/mpos/css/fontello-embedded.css index 054bb98f..c3967c2f 100644 --- a/public/site_assets/mpos/css/fontello-embedded.css +++ b/public/site_assets/mpos/css/fontello-embedded.css @@ -1,15 +1,15 @@ @font-face { font-family: 'fontello'; - src: url('../font/fontello.eot?67777040'); - src: url('../font/fontello.eot?67777040#iefix') format('embedded-opentype'), - url('../font/fontello.svg?67777040#fontello') format('svg'); + src: url('../font/fontello.eot?18499504'); + src: url('../font/fontello.eot?18499504#iefix') format('embedded-opentype'), + url('../font/fontello.svg?18499504#fontello') format('svg'); font-weight: normal; font-style: normal; } @font-face { font-family: 'fontello'; - src: url('data:application/octet-stream;base64,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') format('woff'), - url('data:application/octet-stream;base64,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') format('truetype'); + src: url('data:application/octet-stream;base64,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') format('woff'), + url('data:application/octet-stream;base64,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sAIlRyNHI2EgsAUlsAQlRyNHI2GwBiWwBSVJsAIlYbABRWMjIFhiGyFZY7ABRWJgIy4jICA8ijgjIVktsDUssAAWILAIQyAuRyNHI2EgYLAgYGawgGIjICA8ijgtsDYsIyAuRrACJUZSWCA8WS6xJgEUKy2wNywjIC5GsAIlRlBYIDxZLrEmARQrLbA4LCMgLkawAiVGUlggPFkjIC5GsAIlRlBYIDxZLrEmARQrLbA5LLAwKyMgLkawAiVGUlggPFkusSYBFCstsDossDEriiAgPLAEI0KKOCMgLkawAiVGUlggPFkusSYBFCuwBEMusCYrLbA7LLAAFrAEJbAEJiAuRyNHI2GwBkUrIyA8IC4jOLEmARQrLbA8LLEIBCVCsAAWsAQlsAQlIC5HI0cjYSCwBCNCsAZFKyCwYFBYILBAUVizAiADIBuzAiYDGllCQiMgR7AEQ7CAYmAgsAArIIqKYSCwAkNgZCOwA0NhZFBYsAJDYRuwA0NgWbADJbCAYmGwAiVGYTgjIDwjOBshICBGI0ewACsjYTghWbEmARQrLbA9LLAwKy6xJgEUKy2wPiywMSshIyAgPLAEI0IjOLEmARQrsARDLrAmKy2wPyywABUgR7AAI0KyAAEBFRQTLrAsKi2wQCywABUgR7AAI0KyAAEBFRQTLrAsKi2wQSyxAAEUE7AtKi2wQiywLyotsEMssAAWRSMgLiBGiiNhOLEmARQrLbBELLAII0KwQystsEUssgAAPCstsEYssgABPCstsEcssgEAPCstsEgssgEBPCstsEkssgAAPSstsEossgABPSstsEsssgEAPSstsEwssgEBPSstsE0ssgAAOSstsE4ssgABOSstsE8ssgEAOSstsFAssgEBOSstsFEssgAAOystsFIssgABOystsFMssgEAOystsFQssgEBOystsFUssgAAPistsFYssgABPistsFcssgEAPistsFgssgEBPistsFkssgAAOistsFossgABOistsFsssgEAOistsFwssgEBOistsF0ssDIrLrEmARQrLbBeLLAyK7A2Ky2wXyywMiuwNystsGAssAAWsDIrsDgrLbBhLLAzKy6xJgEUKy2wYiywMyuwNistsGMssDMrsDcrLbBkLLAzK7A4Ky2wZSywNCsusSYBFCstsGYssDQrsDYrLbBnLLA0K7A3Ky2waCywNCuwOCstsGkssDUrLrEmARQrLbBqLLA1K7A2Ky2wayywNSuwNystsGwssDUrsDgrLbBtLCuwCGWwAyRQeLABFTAtAAAAS7gAyFJYsQEBjlm5CAAIAGMgsAEjRLADI3CyBCgJRVJEsgoCByqxBgFEsSQBiFFYsECIWLEGA0SxJgGIUVi4BACIWLEGAURZWVlZuAH/hbAEjbEFAEQAAA==') format('truetype'); } /* Chrome hack: SVG is rendered more smooth in Windozze. 100% magic, uncomment if you need it. */ /* Note, that will break hinting! In other OS-es font will be not as sharp as it could be */ @@ -17,7 +17,7 @@ @media screen and (-webkit-min-device-pixel-ratio:0) { @font-face { font-family: 'fontello'; - src: url('../font/fontello.svg?67777040#fontello') format('svg'); + src: url('../font/fontello.svg?18499504#fontello') format('svg'); } } */ @@ -54,6 +54,7 @@ } .icon-dollar:before { content: '\e818'; } /* '' */ .icon-doc:before { content: '\e81b'; } /* '' */ +.icon-login:before { content: '\e81c'; } /* '' */ .icon-exchange:before { content: '\e81a'; } /* '' */ .icon-money:before { content: '\e819'; } /* '' */ .icon-mail:before { content: '\e814'; } /* '' */ @@ -71,7 +72,7 @@ .icon-bell:before { content: '\e817'; } /* '' */ .icon-trash:before { content: '\e812'; } /* '' */ .icon-cog:before { content: '\e810'; } /* '' */ -.icon-login:before { content: '\e81c'; } /* '' */ +.icon-search:before { content: '\e827'; } /* '' */ .icon-resize-full-alt:before { content: '\e824'; } /* '' */ .icon-down-open:before { content: '\e825'; } /* '' */ .icon-left-open:before { content: '\e801'; } /* '' */ diff --git a/public/site_assets/mpos/css/fontello-ie7-codes.css b/public/site_assets/mpos/css/fontello-ie7-codes.css index 405779c6..d1bfdab6 100644 --- a/public/site_assets/mpos/css/fontello-ie7-codes.css +++ b/public/site_assets/mpos/css/fontello-ie7-codes.css @@ -1,6 +1,7 @@ .icon-dollar { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ' '); } .icon-doc { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ' '); } +.icon-login { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ' '); } .icon-exchange { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ' '); } .icon-money { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ' '); } .icon-mail { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ' '); } @@ -18,7 +19,7 @@ .icon-bell { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ' '); } .icon-trash { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ' '); } .icon-cog { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ' '); } -.icon-login { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ' '); } +.icon-search { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ' '); } .icon-resize-full-alt { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ' '); } .icon-down-open { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ' '); } .icon-left-open { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ' '); } diff --git a/public/site_assets/mpos/css/fontello-ie7.css b/public/site_assets/mpos/css/fontello-ie7.css index ba85b7e6..a7ac0b2d 100644 --- a/public/site_assets/mpos/css/fontello-ie7.css +++ b/public/site_assets/mpos/css/fontello-ie7.css @@ -12,6 +12,7 @@ .icon-dollar { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ' '); } .icon-doc { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ' '); } +.icon-login { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ' '); } .icon-exchange { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ' '); } .icon-money { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ' '); } .icon-mail { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ' '); } @@ -29,7 +30,7 @@ .icon-bell { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ' '); } .icon-trash { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ' '); } .icon-cog { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ' '); } -.icon-login { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ' '); } +.icon-search { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ' '); } .icon-resize-full-alt { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ' '); } .icon-down-open { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ' '); } .icon-left-open { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ' '); } diff --git a/public/site_assets/mpos/css/fontello.css b/public/site_assets/mpos/css/fontello.css index 39e90a43..13fb6ec4 100644 --- a/public/site_assets/mpos/css/fontello.css +++ b/public/site_assets/mpos/css/fontello.css @@ -1,10 +1,10 @@ @font-face { font-family: 'fontello'; - src: url('../font/fontello.eot?25380644'); - src: url('../font/fontello.eot?25380644#iefix') format('embedded-opentype'), - url('../font/fontello.woff?25380644') format('woff'), - url('../font/fontello.ttf?25380644') format('truetype'), - url('../font/fontello.svg?25380644#fontello') format('svg'); + src: url('../font/fontello.eot?43056661'); + src: url('../font/fontello.eot?43056661#iefix') format('embedded-opentype'), + url('../font/fontello.woff?43056661') format('woff'), + url('../font/fontello.ttf?43056661') format('truetype'), + url('../font/fontello.svg?43056661#fontello') format('svg'); font-weight: normal; font-style: normal; } @@ -14,7 +14,7 @@ @media screen and (-webkit-min-device-pixel-ratio:0) { @font-face { font-family: 'fontello'; - src: url('../font/fontello.svg?25380644#fontello') format('svg'); + src: url('../font/fontello.svg?43056661#fontello') format('svg'); } } */ @@ -52,6 +52,7 @@ .icon-dollar:before { content: '\e818'; } /* '' */ .icon-doc:before { content: '\e81b'; } /* '' */ +.icon-login:before { content: '\e81c'; } /* '' */ .icon-exchange:before { content: '\e81a'; } /* '' */ .icon-money:before { content: '\e819'; } /* '' */ .icon-mail:before { content: '\e814'; } /* '' */ @@ -69,7 +70,7 @@ .icon-bell:before { content: '\e817'; } /* '' */ .icon-trash:before { content: '\e812'; } /* '' */ .icon-cog:before { content: '\e810'; } /* '' */ -.icon-login:before { content: '\e81c'; } /* '' */ +.icon-search:before { content: '\e827'; } /* '' */ .icon-resize-full-alt:before { content: '\e824'; } /* '' */ .icon-down-open:before { content: '\e825'; } /* '' */ .icon-left-open:before { content: '\e801'; } /* '' */ diff --git a/public/site_assets/mpos/font/fontello.eot b/public/site_assets/mpos/font/fontello.eot index f5a0206b..77946028 100644 Binary files a/public/site_assets/mpos/font/fontello.eot and b/public/site_assets/mpos/font/fontello.eot differ diff --git a/public/site_assets/mpos/font/fontello.svg b/public/site_assets/mpos/font/fontello.svg index 547cd55b..8ce0855d 100644 --- a/public/site_assets/mpos/font/fontello.svg +++ b/public/site_assets/mpos/font/fontello.svg @@ -8,6 +8,7 @@ + @@ -25,7 +26,7 @@ - + diff --git a/public/site_assets/mpos/font/fontello.ttf b/public/site_assets/mpos/font/fontello.ttf index 1b026cab..a5417e26 100644 Binary files a/public/site_assets/mpos/font/fontello.ttf and b/public/site_assets/mpos/font/fontello.ttf differ diff --git a/public/site_assets/mpos/font/fontello.woff b/public/site_assets/mpos/font/fontello.woff index 2b52bb46..706ce384 100644 Binary files a/public/site_assets/mpos/font/fontello.woff and b/public/site_assets/mpos/font/fontello.woff differ diff --git a/public/templates/mmcFE/global/navigation.tpl b/public/templates/mmcFE/global/navigation.tpl index 8736f5e1..490e15f5 100644 --- a/public/templates/mmcFE/global/navigation.tpl +++ b/public/templates/mmcFE/global/navigation.tpl @@ -33,6 +33,7 @@
  • Block Stats
  • Hashrate Graphs
  • Round Stats
  • +
  • Block Finder Stats
  • {if $GLOBAL.config.monitoring_uptimerobot_api_keys|default:"0"}
  • Uptime Stats
  • {/if} @@ -48,6 +49,9 @@ {if $GLOBAL.acl.round.statistics}
  • Round Stats
  • {/if} + {if $GLOBAL.acl.blockfinder.statistics} +
  • Block Finder Stats
  • + {/if} {if $GLOBAL.acl.uptime.statistics} {if $GLOBAL.config.monitoring_uptimerobot_api_keys|default:"0"}
  • Uptime Stats
  • {/if} {/if} diff --git a/public/templates/mmcFE/statistics/blockfinder/default.tpl b/public/templates/mmcFE/statistics/blockfinder/default.tpl new file mode 100644 index 00000000..e69de29b diff --git a/public/templates/mmcFE/statistics/blockfinder/finder.tpl b/public/templates/mmcFE/statistics/blockfinder/finder.tpl new file mode 100644 index 00000000..5be66452 --- /dev/null +++ b/public/templates/mmcFE/statistics/blockfinder/finder.tpl @@ -0,0 +1,4 @@ +{include file="statistics/blockfinder/finder_top.tpl"} +{if $smarty.session.AUTHENTICATED|default} +{include file="statistics/blockfinder/finder_own.tpl" ALIGN="right" SHORT=true} +{/if} \ No newline at end of file diff --git a/public/templates/mmcFE/statistics/blockfinder/finder_own.tpl b/public/templates/mmcFE/statistics/blockfinder/finder_own.tpl new file mode 100644 index 00000000..37ee988d --- /dev/null +++ b/public/templates/mmcFE/statistics/blockfinder/finder_own.tpl @@ -0,0 +1,25 @@ +{include file="global/block_header.tpl" ALIGN="right" BLOCK_HEADER="Blocks found by own Workers"} +
    + + + + + + + + + + +{assign var=rank value=1} +{section block $BLOCKSSOLVEDBYWORKER} + + + + + + +{/section} + +
    RankWorkerBlocksCoins Generated
    {$rank++}{$BLOCKSSOLVEDBYWORKER[block].finder|default:"unknown/deleted"|escape}{$BLOCKSSOLVEDBYWORKER[block].solvedblocks}{$BLOCKSSOLVEDBYWORKER[block].generatedcoins|number_format}
    +
    +{include file="global/block_footer.tpl"} diff --git a/public/templates/mmcFE/statistics/blockfinder/finder_top.tpl b/public/templates/mmcFE/statistics/blockfinder/finder_top.tpl new file mode 100644 index 00000000..aed95351 --- /dev/null +++ b/public/templates/mmcFE/statistics/blockfinder/finder_top.tpl @@ -0,0 +1,25 @@ +{include file="global/block_header.tpl" ALIGN="left" BLOCK_HEADER="Top 25 Blockfinder"} +
    + + + + + + + + + + +{assign var=rank value=1} +{section block $BLOCKSSOLVEDBYACCOUNT} + + + + + + +{/section} + +
    RankUsernameBlocksCoins Generated
    {$rank++}{if $BLOCKSSOLVEDBYACCOUNT[block].is_anonymous|default:"0" == 1 && $GLOBAL.userdata.is_admin|default:"0" == 0}anonymous{else}{$BLOCKSSOLVEDBYACCOUNT[block].finder|default:"unknown"|escape}{/if}{$BLOCKSSOLVEDBYACCOUNT[block].solvedblocks}{$BLOCKSSOLVEDBYACCOUNT[block].generatedcoins|number_format}
    +
    +{include file="global/block_footer.tpl"} diff --git a/public/templates/mpos/global/navigation.tpl b/public/templates/mpos/global/navigation.tpl index 88129a87..9e8b0b08 100644 --- a/public/templates/mpos/global/navigation.tpl +++ b/public/templates/mpos/global/navigation.tpl @@ -33,6 +33,7 @@
  • Blocks
  • Graphs
  • Round
  • + {if $GLOBAL.config.monitoring_uptimerobot_api_keys|default:"0"}
  • Uptime
  • {/if} {else} @@ -49,6 +50,9 @@ {if $GLOBAL.acl.round.statistics}
  • Round
  • {/if} + {if $GLOBAL.acl.blockfinder.statistics} + + {/if} {if $GLOBAL.acl.uptime.statistics} {if $GLOBAL.config.monitoring_uptimerobot_api_keys|default:"0"}
  • Uptime
  • {/if} {/if} diff --git a/public/templates/mpos/statistics/blockfinder/default.tpl b/public/templates/mpos/statistics/blockfinder/default.tpl new file mode 100644 index 00000000..e69de29b diff --git a/public/templates/mpos/statistics/blockfinder/finder.tpl b/public/templates/mpos/statistics/blockfinder/finder.tpl new file mode 100644 index 00000000..5be66452 --- /dev/null +++ b/public/templates/mpos/statistics/blockfinder/finder.tpl @@ -0,0 +1,4 @@ +{include file="statistics/blockfinder/finder_top.tpl"} +{if $smarty.session.AUTHENTICATED|default} +{include file="statistics/blockfinder/finder_own.tpl" ALIGN="right" SHORT=true} +{/if} \ No newline at end of file diff --git a/public/templates/mpos/statistics/blockfinder/finder_own.tpl b/public/templates/mpos/statistics/blockfinder/finder_own.tpl new file mode 100644 index 00000000..891ab3ed --- /dev/null +++ b/public/templates/mpos/statistics/blockfinder/finder_own.tpl @@ -0,0 +1,25 @@ +
    +

    Blocks found by own Workers

    +
    + + + + + + + + + + +{assign var=rank value=1} +{section block $BLOCKSSOLVEDBYWORKER} + + + + + + +{/section} + +
    RankWorkerBlocksCoins Generated
    {$rank++}{$BLOCKSSOLVEDBYWORKER[block].finder|default:"unknown/deleted"|escape}{$BLOCKSSOLVEDBYWORKER[block].solvedblocks}{$BLOCKSSOLVEDBYWORKER[block].generatedcoins|number_format}
    +
    diff --git a/public/templates/mpos/statistics/blockfinder/finder_top.tpl b/public/templates/mpos/statistics/blockfinder/finder_top.tpl new file mode 100644 index 00000000..853a3dc2 --- /dev/null +++ b/public/templates/mpos/statistics/blockfinder/finder_top.tpl @@ -0,0 +1,25 @@ +
    +

    Top 25 Blockfinder

    +
    + + + + + + + + + + +{assign var=rank value=1} +{section block $BLOCKSSOLVEDBYACCOUNT} + + + + + + +{/section} + +
    RankUsernameBlocksCoins Generated
    {$rank++}{if $BLOCKSSOLVEDBYACCOUNT[block].is_anonymous|default:"0" == 1 && $GLOBAL.userdata.is_admin|default:"0" == 0}anonymous{else}{$BLOCKSSOLVEDBYACCOUNT[block].finder|default:"unknown"|escape}{/if}{$BLOCKSSOLVEDBYACCOUNT[block].solvedblocks}{$BLOCKSSOLVEDBYACCOUNT[block].generatedcoins|number_format}
    +
    diff --git a/sql/000_base_structure.sql b/sql/000_base_structure.sql index 8dee379b..220b55c9 100644 --- a/sql/000_base_structure.sql +++ b/sql/000_base_structure.sql @@ -40,6 +40,7 @@ CREATE TABLE IF NOT EXISTS `blocks` ( `time` int(11) NOT NULL, `accounted` tinyint(1) NOT NULL DEFAULT '0', `account_id` int(255) unsigned DEFAULT NULL, + `worker_name` varchar(50) DEFAULT 'unknown', `shares` int(255) unsigned DEFAULT NULL, `share_id` int(255) DEFAULT NULL, PRIMARY KEY (`id`), diff --git a/sql/004_blocks_worker.sql b/sql/004_blocks_worker.sql new file mode 100644 index 00000000..bc1e147c --- /dev/null +++ b/sql/004_blocks_worker.sql @@ -0,0 +1 @@ +ALTER TABLE `blocks` ADD `worker_name` varchar(50) DEFAULT 'unknown' AFTER `account_id`; \ No newline at end of file