diff --git a/public/include/classes/statistics.class.php b/public/include/classes/statistics.class.php index b8fa232c..c6687ee5 100644 --- a/public/include/classes/statistics.class.php +++ b/public/include/classes/statistics.class.php @@ -54,7 +54,7 @@ class Statistics { $stmt = $this->mysqli->prepare(" SELECT b.*, a.username as finder FROM " . $this->block->getTableName() . " AS b - LEFT JOIN accounts AS a + LEFT JOIN " . $this->user->getTableName() . " AS a ON b.account_id = a.id ORDER BY height DESC LIMIT ?"); if ($this->checkStmt($stmt) && $stmt->bind_param("i", $limit) && $stmt->execute() && $result = $stmt->get_result()) @@ -175,6 +175,34 @@ class Statistics { return false; } + /** + * Admin panel specific query + * @return data array invlid and valid shares for all accounts + **/ + public function getAllUserStats($filter='%') { + $this->debug->append("STA " . __METHOD__, 4); + if ($data = $this->memcache->get(__FUNCTION__ . $filter)) return $data; + $stmt = $this->mysqli->prepare(" + SELECT + a.id AS id, + a.username AS username, + a.donate_percent AS donate_percent, + a.email AS email, + COUNT(s.id) AS shares, + ROUND(COUNT(s.id) * POW(2," . $this->config['difficulty'] . ") / 600 / 1000,2) AS hashrate + FROM " . $this->user->getTableName() . " AS a + LEFT JOIN " . $this->share->getTableName() . " AS s + ON a.username = SUBSTRING_INDEX( s.username, '.', 1 ) + WHERE + a.username LIKE ? + GROUP BY username + ORDER BY username + "); + if ($this->checkStmt($stmt) && $stmt->bind_param('s', $filter) && $stmt->execute() && $result = $stmt->get_result()) { + return $this->memcache->setCache(__FUNCTION__ . $filter, $result->fetch_all(MYSQLI_ASSOC)); + } + } + /** * Same as getUserShares for Hashrate * @param account_id integer User ID diff --git a/public/include/pages/admin/user.inc.php b/public/include/pages/admin/user.inc.php index 17766283..cc961f44 100644 --- a/public/include/pages/admin/user.inc.php +++ b/public/include/pages/admin/user.inc.php @@ -14,16 +14,14 @@ $aRoundShares = $statistics->getRoundShares(); if ($_POST['query']) { // Fetch requested users - $aUsers = $user->getUsers($_POST['query']); + $aUsers = $statistics->getAllUserStats($_POST['query']); // Add additional stats to each user // This is not optimized yet, best is a proper SQL // Query against the stats table? Currently cached though. foreach ($aUsers as $iKey => $aUser) { $aUser['balance'] = $transaction->getBalance($aUser['id']); - $aUser['hashrate'] = $statistics->getUserHashrate($aUser['id']); - $aUser['shares'] = $statistics->getUserShares($aUser['id']); - $aUser['payout']['est_block'] = round(( (int)$aUser['shares']['valid'] / (int)$aRoundShares['valid'] ) * (int)$config['reward'], 3); + $aUser['payout']['est_block'] = round(( (int)$aUser['shares'] / (int)$aRoundShares['valid'] ) * (int)$config['reward'], 3); $aUser['payout']['est_fee'] = round(($config['fees'] / 100) * $aUser['payout']['est_block'], 3); $aUser['payout']['est_donation'] = round((( $aUser['donate_percent'] / 100) * ($aUser['payout']['est_block'] - $aUser['payout']['est_fee'])), 3); $aUser['payout']['est_payout'] = round($aUser['payout']['est_block'] - $aUser['payout']['est_donation'] - $aUser['payout']['est_fee'], 3); diff --git a/public/templates/mmcFE/admin/user/default.tpl b/public/templates/mmcFE/admin/user/default.tpl index 07b6e5f1..6cd3e4fb 100644 --- a/public/templates/mmcFE/admin/user/default.tpl +++ b/public/templates/mmcFE/admin/user/default.tpl @@ -26,29 +26,16 @@
| ID | Username | Hashrate | -Valid | -Invalid | -Balance | +Shares | Est. Donation | Est. Payout | +Balance | Admin | {$USERS[user].username} | {$USERS[user].email} | {$USERS[user].hashrate|number_format} | -{$USERS[user].shares.valid|number_format} | -{$USERS[user].shares.invalid|number_format} | -{$USERS[user].balance|number_format:"8"} | +{$USERS[user].shares|number_format} | {$USERS[user].payout.est_donation|number_format:"8"} | {$USERS[user].payout.est_payout|number_format:"8"} | +{$USERS[user].balance|number_format:"8"} |
|
{sectionelse}
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| + | Username | Hashrate | -Shares | -Balance | +Shares | Est. Donation | Est. Payout | +Balance | Admin | |||||||||