diff --git a/public/include/classes/statistics.class.php b/public/include/classes/statistics.class.php index 4b91b4dd..75d11ce6 100644 --- a/public/include/classes/statistics.class.php +++ b/public/include/classes/statistics.class.php @@ -350,10 +350,11 @@ class Statistics extends Base { /** * Get amount of shares for a specific user - * @param account_id int User ID + * @param username str username + * @param account_id int account id * @return data array invalid and valid share counts **/ - public function getUserShares($account_id) { + public function getUserShares($username, $account_id=NULL) { $this->debug->append("STA " . __METHOD__, 4); // Dual-caching, try statistics cron first, then fallback to local, then fallbock to SQL if ($data = $this->memcache->get(STATISTICS_ALL_USER_SHARES)) { @@ -365,15 +366,13 @@ class Statistics extends Base { if ($data = $this->memcache->get(__FUNCTION__ . $account_id)) return $data; $stmt = $this->mysqli->prepare(" SELECT - ROUND(IFNULL(SUM(IF(our_result='Y', IF(s.difficulty=0, POW(2, (" . $this->config['difficulty'] . " - 16)), s.difficulty), 0)), 0) / POW(2, (" . $this->config['difficulty'] . " - 16)), 0) AS valid, - ROUND(IFNULL(SUM(IF(our_result='N', IF(s.difficulty=0, POW(2, (" . $this->config['difficulty'] . " - 16)), s.difficulty), 0)), 0) / POW(2, (" . $this->config['difficulty'] . " - 16)), 0) AS invalid - FROM " . $this->share->getTableName() . " AS s, - " . $this->user->getTableName() . " AS u - WHERE - u.username = SUBSTRING_INDEX( s.username, '.', 1 ) - AND UNIX_TIMESTAMP(s.time) >IFNULL((SELECT MAX(b.time) FROM " . $this->block->getTableName() . " AS b),0) - AND u.id = ?"); - if ($stmt && $stmt->bind_param("i", $account_id) && $stmt->execute() && $result = $stmt->get_result()) + ROUND(IFNULL(SUM(IF(our_result='Y', IF(difficulty=0, POW(2, (" . $this->config['difficulty'] . " - 16)), difficulty), 0)), 0) / POW(2, (" . $this->config['difficulty'] . " - 16)), 0) AS valid, + ROUND(IFNULL(SUM(IF(our_result='N', IF(difficulty=0, POW(2, (" . $this->config['difficulty'] . " - 16)), difficulty), 0)), 0) / POW(2, (" . $this->config['difficulty'] . " - 16)), 0) AS invalid + FROM " . $this->share->getTableName() . " + WHERE username LIKE ? + AND UNIX_TIMESTAMP(time) >IFNULL((SELECT MAX(b.time) FROM " . $this->block->getTableName() . " AS b),0)"); + $username = $username . ".%"; + if ($stmt && $stmt->bind_param("s", $username) && $stmt->execute() && $result = $stmt->get_result()) return $this->memcache->setCache(__FUNCTION__ . $account_id, $result->fetch_assoc()); return $this->sqlError(); } @@ -495,10 +494,11 @@ class Statistics extends Base { /** * Fetch total user hashrate based on shares and archived shares - * @param account_id integer User ID + * @param $username string username + * @param $account_id int account id * @return data integer Current Hashrate in khash/s **/ - public function getUserHashrate($account_id, $interval=180) { + public function getUserHashrate($username, $account_id=NULL, $interval=180) { $this->debug->append("STA " . __METHOD__, 4); // Dual-caching, try statistics cron first, then fallback to local, then fallbock to SQL if ($this->getGetCache() && $data = $this->memcache->getStatic(STATISTICS_ALL_USER_HASHRATES)) { @@ -513,54 +513,50 @@ class Statistics extends Base { IFNULL(IF(our_result='Y', ROUND(SUM(IF(difficulty=0, POW(2, (" . $this->config['difficulty'] . " - 16)), difficulty)) * POW(2, " . $this->config['target_bits'] . ") / ? / 1000), 0), 0) AS hashrate FROM ( SELECT - s.id, s.our_result, IF(s.difficulty = 0, POW(2, (" . $this->config['difficulty'] . " - 16)), s.difficulty) AS difficulty + id, our_result, IF(difficulty = 0, POW(2, (" . $this->config['difficulty'] . " - 16)), difficulty) AS difficulty FROM - shares AS s, - accounts AS u - WHERE u.username = SUBSTRING_INDEX( s.username, '.', 1 ) - AND s.time > DATE_SUB(now(), INTERVAL ? SECOND) - AND s.our_result = 'Y' - AND u.id = ? + shares + WHERE username LIKE ? + AND time > DATE_SUB(now(), INTERVAL ? SECOND) + AND our_result = 'Y' UNION SELECT - s.share_id, s.our_result, IF(s.difficulty = 0, POW(2, (" . $this->config['difficulty'] . " - 16)), s.difficulty) AS difficulty + share_id, our_result, IF(difficulty = 0, POW(2, (" . $this->config['difficulty'] . " - 16)), difficulty) AS difficulty FROM - shares_archive AS s, - accounts AS u - WHERE u.username = SUBSTRING_INDEX( s.username, '.', 1 ) - AND s.time > DATE_SUB(now(), INTERVAL ? SECOND) - AND s.our_result = 'Y' - AND u.id = ? - ) AS temp"); - if ($this->checkStmt($stmt) && $stmt->bind_param("iiiii", $interval, $interval, $account_id, $interval, $account_id) && $stmt->execute() && $result = $stmt->get_result() ) + shares_archive + WHERE username LIKE ? + AND time > DATE_SUB(now(), INTERVAL ? SECOND) + AND our_result = 'Y') AS temp"); + $username = $username . ".%"; + if ($this->checkStmt($stmt) && $stmt->bind_param("isisi", $interval, $username, $interval, $username, $interval) && $stmt->execute() && $result = $stmt->get_result() ) return $this->memcache->setCache(__FUNCTION__ . $account_id, $result->fetch_object()->hashrate); return $this->sqlError(); } - public function getUserUnpaidPPSShares($account_id, $last_paid_pps_id) { + public function getUserUnpaidPPSShares($username, $account_id=NULL, $last_paid_pps_id) { $this->debug->append("STA " . __METHOD__, 4); if ($this->getGetCache() && $data = $this->memcache->get(__FUNCTION__ . $account_id)) return $data; $stmt = $this->mysqli->prepare(" SELECT - ROUND(IFNULL(SUM(IF(s.difficulty=0, POW(2, (" . $this->config['difficulty'] . " - 16)), s.difficulty)), 0) / POW(2, (" . $this->config['difficulty'] . " - 16)), 0) AS total - FROM " . $this->share->getTableName() . " AS s - JOIN " . $this->user->getTableName() . " AS a - ON a.username = SUBSTRING_INDEX( s.username, '.', 1 ) - AND a.id = ? - AND s.id > ? - WHERE our_result = 'Y'"); - if ($this->checkStmt($stmt) && $stmt->bind_param("ii", $account_id, $last_paid_pps_id) && $stmt->execute() && $result = $stmt->get_result() ) + ROUND(IFNULL(SUM(IF(difficulty=0, POW(2, (" . $this->config['difficulty'] . " - 16)), difficulty)), 0) / POW(2, (" . $this->config['difficulty'] . " - 16)), 0) AS total + FROM " . $this->share->getTableName() . " + WHERE username LIKE ? + AND id > ? + AND our_result = 'Y'"); + $username = $username . ".%"; + if ($this->checkStmt($stmt) && $stmt->bind_param("si", $username, $last_paid_pps_id) && $stmt->execute() && $result = $stmt->get_result() ) return $this->memcache->setCache(__FUNCTION__ . $account_id, $result->fetch_object()->total); return $this->sqlError(); } /** * Get average share difficulty across all workers for user - * @param account_id int Account ID + * @param username string username + * @param $account_id int account id * @param interval int Data interval in seconds * @return double Share difficulty or 0 **/ - public function getUserShareDifficulty($account_id, $interval=180) { + public function getUserShareDifficulty($username, $account_id=NULL, $interval=180) { $this->debug->append("STA " . __METHOD__, 4); // Dual-caching, try statistics cron first, then fallback to local, then fallbock to SQL if ($this->getGetCache() && $data = $this->memcache->getStatic(STATISTICS_ALL_USER_HASHRATES)) { @@ -574,22 +570,24 @@ class Statistics extends Base { SELECT IFNULL(AVG(IF(difficulty=0, pow(2, (" . $this->config['difficulty'] . " - 16)), difficulty)), 0) AS avgsharediff, COUNT(s.id) AS total - FROM " . $this->share->getTableName() . " AS s JOIN " . $this->user->getTableName() . " AS a - ON a.username = SUBSTRING_INDEX( s.username, '.', 1 ) - WHERE s.time > DATE_SUB(now(), INTERVAL ? SECOND) + FROM " . $this->share->getTableName() . " AS s + WHERE username LIKE ? + AND time > DATE_SUB(now(), INTERVAL ? SECOND) AND our_result = 'Y' - AND a.id = ?"); - if ($this->checkStmt($stmt) && $stmt->bind_param("ii", $interval, $account_id) && $stmt->execute() && $result = $stmt->get_result() ) + "); + $username = $username . ".%"; + if ($this->checkStmt($stmt) && $stmt->bind_param("si", $username, $interval) && $stmt->execute() && $result = $stmt->get_result() ) return $this->memcache->setCache(__FUNCTION__ . $account_id, $result->fetch_object()->avgsharediff); return $this->sqlError(); } /** - * Same as getUserHashrate for Sharerate - * @param account_id integer User ID + * Get Shares per x interval by user + * @param username string username + * @param $account_id int account id * @return data integer Current Sharerate in shares/s **/ - public function getUserSharerate($account_id, $interval=180) { + public function getUserSharerate($username, $account_id=NULL, $interval=180) { $this->debug->append("STA " . __METHOD__, 4); // Dual-caching, try statistics cron first, then fallback to local, then fallbock to SQL if ($data = $this->memcache->getStatic(STATISTICS_ALL_USER_HASHRATES)) { @@ -604,47 +602,42 @@ class Statistics extends Base { IFNULL(COUNT(*) / ?, 0) AS sharerate FROM ( SELECT - s.id + id FROM - shares AS s, - accounts AS u - WHERE u.username = SUBSTRING_INDEX( s.username, '.', 1 ) - AND s.time > DATE_SUB(now(), INTERVAL ? SECOND) - AND s.our_result = 'Y' - AND u.id = ? + shares + WHERE username LIKE ? + AND time > DATE_SUB(now(), INTERVAL ? SECOND) + AND our_result = 'Y' UNION SELECT - s.share_id + share_id FROM - shares_archive AS s, - accounts AS u - WHERE u.username = SUBSTRING_INDEX( s.username, '.', 1 ) - AND s.time > DATE_SUB(now(), INTERVAL ? SECOND) - AND s.our_result = 'Y' - AND u.id = ? + shares_archive + WHERE username LIKE ? + AND time > DATE_SUB(now(), INTERVAL ? SECOND) + AND our_result = 'Y' ) AS temp"); - if ($this->checkStmt($stmt) && $stmt->bind_param("iiiii", $interval, $interval, $account_id, $interval, $account_id) && $stmt->execute() && $result = $stmt->get_result() ) + $username = $username . ".%"; + if ($this->checkStmt($stmt) && $stmt->bind_param("isisi", $interval, $username, $interval, $username, $interval) && $stmt->execute() && $result = $stmt->get_result() ) return $this->memcache->setCache(__FUNCTION__ . $account_id, $result->fetch_object()->sharerate); return $this->sqlError(); } /** * Get hashrate for a specific worker - * @param worker_id int Worker ID to fetch hashrate for + * @param username string username * @return data int Current hashrate in khash/s **/ - public function getWorkerHashrate($worker_id,$interval=180) { + public function getWorkerHashrate($workername, $worker_id=NULL, $interval=180) { $this->debug->append("STA " . __METHOD__, 4); if ($data = $this->memcache->get(__FUNCTION__ . $worker_id)) return $data; $stmt = $this->mysqli->prepare(" SELECT IFNULL(ROUND(SUM(IF(difficulty=0, POW(2, (" . $this->config['difficulty'] . " - 16)), difficulty)) * POW(2, " . $this->config['target_bits'] . ") / 600 / 1000), 0) AS hashrate - FROM " . $this->share->getTableName() . " AS s, - " . $this->user->getTableName() . " AS u - WHERE u.username = SUBSTRING_INDEX( s.username, '.', 1 ) + FROM " . $this->share->getTableName() . " AS + WHERE username = '?' AND our_result = 'Y' - AND s.time > DATE_SUB(now(), INTERVAL ? SECOND) - AND u.id = ?"); - if ($this->checkStmt($stmt) && $stmt->bind_param("i", $account_id) && $stmt->execute() && $result = $stmt->get_result() ) + AND time > DATE_SUB(now(), INTERVAL ? SECOND)"); + if ($this->checkStmt($stmt) && $stmt->bind_param("si", $workername, $interval) && $stmt->execute() && $result = $stmt->get_result()) return $this->memcache->setCache(__FUNCTION__ . $worker_id, $result->fetch_object()->hashrate); return $this->sqlError(); } @@ -726,37 +719,36 @@ class Statistics extends Base { /** * get Hourly hashrate for a user - * @param account_id int User ID + * @param username string Username + * @param $account_id int account id * @return data array NOT FINISHED YET **/ - public function getHourlyHashrateByAccount($account_id) { + public function getHourlyHashrateByAccount($username, $account_id=NULL) { $this->debug->append("STA " . __METHOD__, 4); if ($data = $this->memcache->get(__FUNCTION__ . $account_id)) return $data; $stmt = $this->mysqli->prepare(" SELECT - a.id, - IFNULL(ROUND(SUM(IF(s.difficulty=0, pow(2, (" . $this->config['difficulty'] . " - 16)), s.difficulty)) * POW(2, " . $this->config['target_bits'] . ") / 3600 / 1000), 0) AS hashrate, - HOUR(s.time) AS hour - FROM " . $this->share->getTableName() . " AS s, accounts AS a + IFNULL(ROUND(SUM(IF(difficulty=0, pow(2, (" . $this->config['difficulty'] . " - 16)), difficulty)) * POW(2, " . $this->config['target_bits'] . ") / 3600 / 1000), 0) AS hashrate, + HOUR(time) AS hour + FROM " . $this->share->getTableName() . " WHERE time <= FROM_UNIXTIME(FLOOR(UNIX_TIMESTAMP(NOW())/(60*60))*(60*60)) AND time >= FROM_UNIXTIME(FLOOR(UNIX_TIMESTAMP(NOW())/(60*60))*(60*60)) - INTERVAL 24 HOUR AND our_result = 'Y' - AND a.username = SUBSTRING_INDEX( s.username, '.', 1 ) - AND a.id = ? + AND username LIKE ? GROUP BY HOUR(time) UNION SELECT share_id, - IFNULL(ROUND(SUM(IF(s.difficulty=0, pow(2, (" . $this->config['difficulty'] . " - 16)), s.difficulty)) * POW(2, " . $this->config['target_bits'] . ") / 3600 / 1000), 0) AS hashrate, - HOUR(s.time) AS hour - FROM " . $this->share->getArchiveTableName() . " AS s, accounts AS a + IFNULL(ROUND(SUM(IF(difficulty=0, pow(2, (" . $this->config['difficulty'] . " - 16)), difficulty)) * POW(2, " . $this->config['target_bits'] . ") / 3600 / 1000), 0) AS hashrate, + HOUR(time) AS hour + FROM " . $this->share->getArchiveTableName() . " WHERE time <= FROM_UNIXTIME(FLOOR(UNIX_TIMESTAMP(NOW())/(60*60))*(60*60)) AND time >= FROM_UNIXTIME(FLOOR(UNIX_TIMESTAMP(NOW())/(60*60))*(60*60)) - INTERVAL 24 HOUR AND our_result = 'Y' - AND a.username = SUBSTRING_INDEX( s.username, '.', 1 ) - AND a.id = ? + AND username LIKE ? GROUP BY HOUR(time)"); - if ($this->checkStmt($stmt) && $stmt->bind_param('ii', $account_id, $account_id) && $stmt->execute() && $result = $stmt->get_result()) { + $username = $username . ".%"; + if ($this->checkStmt($stmt) && $stmt->bind_param('ss', $username, $username) && $stmt->execute() && $result = $stmt->get_result()) { $iStartHour = date('G'); // Initilize array for ($i = 0; $i < 24; $i++) $aData[($iStartHour + $i) % 24] = 0; diff --git a/public/include/classes/worker.class.php b/public/include/classes/worker.class.php index ea5d68a1..9076cc3c 100644 --- a/public/include/classes/worker.class.php +++ b/public/include/classes/worker.class.php @@ -72,8 +72,8 @@ class Worker extends Base { $this->debug->append("STA " . __METHOD__, 4); $stmt = $this->mysqli->prepare(" SELECT id, username, password, monitor, - ( SELECT COUNT(id) FROM " . $this->share->getTableName() . " WHERE username = w.username AND time > DATE_SUB(now(), INTERVAL 10 MINUTE)) AS count_all, - ( SELECT COUNT(id) FROM " . $this->share->getArchiveTableName() . " WHERE username = w.username AND time > DATE_SUB(now(), INTERVAL 10 MINUTE)) AS count_all_archive, + ( SELECT COUNT(id) FROM " . $this->share->getTableName() . " WHERE username = w.username AND time > DATE_SUB(now(), INTERVAL ? SECOND)) AS count_all, + ( SELECT COUNT(id) FROM " . $this->share->getArchiveTableName() . " WHERE username = w.username AND time > DATE_SUB(now(), INTERVAL ? SECOND)) AS count_all_archive, ( SELECT IFNULL(IF(our_result='Y', ROUND(SUM(IF(difficulty=0, pow(2, (" . $this->config['difficulty'] . " - 16)), difficulty)) * POW(2, " . $this->config['target_bits'] . ") / ? / 1000), 0), 0) AS hashrate @@ -101,7 +101,7 @@ class Worker extends Base { FROM $this->table AS w WHERE id = ? "); - if ($this->checkStmt($stmt) && $stmt->bind_param('iiiiiii', $interval, $interval, $interval, $interval, $interval, $interval, $id) && $stmt->execute() && $result = $stmt->get_result()) + if ($this->checkStmt($stmt) && $stmt->bind_param('iiiiiiiii',$interval, $interval, $interval, $interval, $interval, $interval, $interval, $interval, $id) && $stmt->execute() && $result = $stmt->get_result()) return $result->fetch_assoc(); return $this->sqlError('E0055'); } diff --git a/public/include/pages/admin/user.inc.php b/public/include/pages/admin/user.inc.php index f3d28dbb..380c86c3 100644 --- a/public/include/pages/admin/user.inc.php +++ b/public/include/pages/admin/user.inc.php @@ -57,11 +57,11 @@ if (isset($_REQUEST['filter'])) { foreach ($aUsers as $iKey => $aUser) { $aBalance = $transaction->getBalance($aUser['id']); $aUser['balance'] = $aBalance['confirmed']; - $aUser['hashrate'] = $statistics->getUserHashrate($aUser['id']); + $aUser['hashrate'] = $statistics->getUserHashrate($aUser['username'], $aUser['id']); if ($config['payout_system'] == 'pps') { - $aUser['sharerate'] = $statistics->getUserSharerate($aUser['id']); - $aUser['difficulty'] = $statistics->getUserShareDifficulty($aUser['id']); + $aUser['sharerate'] = $statistics->getUserSharerate($aUser['username'], $aUser['id']); + $aUser['difficulty'] = $statistics->getUserShareDifficulty($aUser['username'], $aUser['id']); $aUser['estimates'] = $statistics->getUserEstimates($aUser['sharerate'], $aUser['difficulty'], $user->getUserDonatePercent($aUser['id']), $user->getUserNoFee($aUser['id']), $statistics->getPPSValue()); } else { $aUser['estimates'] = $statistics->getUserEstimates($aRoundShares, $aUser['shares'], $aUser['donate_percent'], $aUser['no_fees']); diff --git a/public/include/pages/api/getdashboarddata.inc.php b/public/include/pages/api/getdashboarddata.inc.php index b09a6fae..b5a73801 100644 --- a/public/include/pages/api/getdashboarddata.inc.php +++ b/public/include/pages/api/getdashboarddata.inc.php @@ -22,6 +22,7 @@ $supress_master = 1; // Check user token and access level permissions $user_id = $api->checkAccess($user->checkApiKey($_REQUEST['api_key']), @$_REQUEST['id']); +$username = $user->getUsername($user_id); // Fetch RPC information if ($bitcoin->can_connect() === true) { @@ -44,20 +45,20 @@ if ( ! $dNetworkHashrateModifier = $setting->getValue('statistics_network_hashra $statistics->setGetCache(false); $dPoolHashrate = $statistics->getCurrentHashrate($interval); if ($dPoolHashrate > $dNetworkHashrate) $dNetworkHashrate = $dPoolHashrate; -$dPersonalHashrate = $statistics->getUserHashrate($user_id, $interval); -$dPersonalSharerate = $statistics->getUserSharerate($user_id, $interval); -$dPersonalShareDifficulty = $statistics->getUserShareDifficulty($user_id, $interval); +$dPersonalHashrate = $statistics->getUserHashrate($username, $user_id, $interval); +$dPersonalSharerate = $statistics->getUserSharerate($username, $user_id, $interval); +$dPersonalShareDifficulty = $statistics->getUserShareDifficulty($username, $user_id, $interval); $statistics->setGetCache(true); // Use caches for this one -$aUserRoundShares = $statistics->getUserShares($user_id); +$aUserRoundShares = $statistics->getUserShares($username, $user_id); $aRoundShares = $statistics->getRoundShares(); if ($config['payout_system'] != 'pps') { $aEstimates = $statistics->getUserEstimates($aRoundShares, $aUserRoundShares, $user->getUserDonatePercent($user_id), $user->getUserNoFee($user_id)); $dUnpaidShares = 0; } else { - $dUnpaidShares = $statistics->getUserUnpaidPPSShares($user_id, $setting->getValue('pps_last_share_id')); + $dUnpaidShares = $statistics->getUserUnpaidPPSShares($username, $user_id, $setting->getValue('pps_last_share_id')); $aEstimates = $statistics->getUserEstimates($dPersonalSharerate, $dPersonalShareDifficulty, $user->getUserDonatePercent($user_id), $user->getUserNoFee($user_id), $statistics->getPPSValue()); } diff --git a/public/include/pages/api/gethourlyhashrates.inc.php b/public/include/pages/api/gethourlyhashrates.inc.php index 54112325..d9dfea0a 100644 --- a/public/include/pages/api/gethourlyhashrates.inc.php +++ b/public/include/pages/api/gethourlyhashrates.inc.php @@ -8,14 +8,15 @@ $api->isActive(); // Check user token $user_id = $api->checkAccess($user->checkApiKey($_REQUEST['api_key']), @$_REQUEST['id']); +$username = $user->getUsername($user_id); // Output JSON format $data = array( - 'mine' => $statistics->getHourlyHashrateByAccount($id), + 'mine' => $statistics->getHourlyHashrateByAccount($username, $user_id), 'pool' => $statistics->getHourlyHashrateByPool() ); -echo $api->json($data); +echo $api->get_json($data); // Supress master template $supress_master = 1; diff --git a/public/include/pages/api/getuserhashrate.inc.php b/public/include/pages/api/getuserhashrate.inc.php index 2edee628..1b1d5250 100644 --- a/public/include/pages/api/getuserhashrate.inc.php +++ b/public/include/pages/api/getuserhashrate.inc.php @@ -8,13 +8,14 @@ $api->isActive(); // Check user token $user_id = $api->checkAccess($user->checkApiKey($_REQUEST['api_key']), @$_REQUEST['id']); +$username = $user->getUsername($user_id); // Fetch some settings if ( ! $interval = $setting->getValue('statistics_ajax_data_interval')) $interval = 300; // Gather un-cached data $statistics->setGetCache(false); -$hashrate = $statistics->getUserHashrate($user_id, $interval); +$hashrate = $statistics->getUserHashrate($username, $user_id, $interval); $statistics->setGetCache(true); // Output JSON diff --git a/public/include/pages/api/getusersharerate.inc.php b/public/include/pages/api/getusersharerate.inc.php index 23a4562d..c1edb01e 100644 --- a/public/include/pages/api/getusersharerate.inc.php +++ b/public/include/pages/api/getusersharerate.inc.php @@ -8,13 +8,14 @@ $api->isActive(); // Check user token $user_id = $api->checkAccess($user->checkApiKey($_REQUEST['api_key']), @$_REQUEST['id']); +$username = $user->getUsername($user_id); // Fetch settings if ( ! $interval = $setting->getValue('statistics_ajax_data_interval')) $interval = 300; // Gather un-cached data $statistics->setGetCache(false); -$sharerate = $statistics->getUserSharerate($user_id, $interval); +$sharerate = $statistics->getUserSharerate($username, $user_id, $interval); $statistics->setGetCache(true); // Output JSON format diff --git a/public/include/pages/api/getuserstatus.inc.php b/public/include/pages/api/getuserstatus.inc.php index 983ad787..c17bb77f 100644 --- a/public/include/pages/api/getuserstatus.inc.php +++ b/public/include/pages/api/getuserstatus.inc.php @@ -8,16 +8,16 @@ $api->isActive(); // Check user token $user_id = $api->checkAccess($user->checkApiKey($_REQUEST['api_key']), @$_REQUEST['id']); - +$username = $user->getUsername($user_id); // Fetch transaction summary $aTransactionSummary = $transaction->getTransactionSummary($user_id); // Output JSON format $data = array( - 'username' => $user->getUsername($user_id), - 'shares' => $statistics->getUserShares($user_id), - 'hashrate' => $statistics->getUserHashrate($user_id), - 'sharerate' => $statistics->getUserSharerate($user_id) + 'username' => $username, + 'shares' => $statistics->getUserShares($username, $user_id), + 'hashrate' => $statistics->getUserHashrate($username, $user_id), + 'sharerate' => $statistics->getUserSharerate($username, $user_id) ); echo $api->get_json($data); diff --git a/public/include/smarty_globals.inc.php b/public/include/smarty_globals.inc.php index b858214c..60902514 100644 --- a/public/include/smarty_globals.inc.php +++ b/public/include/smarty_globals.inc.php @@ -129,10 +129,10 @@ if (@$_SESSION['USERDATA']['id']) { $aGlobal['userdata']['balance'] = $transaction->getBalance($_SESSION['USERDATA']['id']); // Other userdata that we can cache savely - $aGlobal['userdata']['shares'] = $statistics->getUserShares($_SESSION['USERDATA']['id']); - $aGlobal['userdata']['rawhashrate'] = $statistics->getUserHashrate($_SESSION['USERDATA']['id']); + $aGlobal['userdata']['shares'] = $statistics->getUserShares($_SESSION['USERDATA']['username'], $_SESSION['USERDATA']['id']); + $aGlobal['userdata']['rawhashrate'] = $statistics->getUserHashrate($_SESSION['USERDATA']['username'], $_SESSION['USERDATA']['id']); $aGlobal['userdata']['hashrate'] = $aGlobal['userdata']['rawhashrate'] * $dPersonalHashrateModifier; - $aGlobal['userdata']['sharerate'] = $statistics->getUserSharerate($_SESSION['USERDATA']['id']); + $aGlobal['userdata']['sharerate'] = $statistics->getUserSharerate($_SESSION['USERDATA']['username'], $_SESSION['USERDATA']['id']); switch ($config['payout_system']) { case 'prop': @@ -151,10 +151,10 @@ if (@$_SESSION['USERDATA']['id']) { $aGlobal['userdata']['estimates'] = $aEstimates; break; case 'pps': - $aGlobal['userdata']['pps']['unpaidshares'] = $statistics->getUserUnpaidPPSShares($_SESSION['USERDATA']['id'], $setting->getValue('pps_last_share_id')); + $aGlobal['userdata']['pps']['unpaidshares'] = $statistics->getUserUnpaidPPSShares($_SESSION['USERDATA']['username'], $_SESSION['USERDATA']['id'], $setting->getValue('pps_last_share_id')); $aGlobal['ppsvalue'] = number_format($statistics->getPPSValue(), 12); $aGlobal['poolppsvalue'] = $aGlobal['ppsvalue'] * pow(2, $config['difficulty'] - 16); - $aGlobal['userdata']['sharedifficulty'] = $statistics->getUserShareDifficulty($_SESSION['USERDATA']['id']); + $aGlobal['userdata']['sharedifficulty'] = $statistics->getUserShareDifficulty($_SESSION['USERDATA']['username'], $_SESSION['USERDATA']['id']); $aGlobal['userdata']['estimates'] = $statistics->getUserEstimates($aGlobal['userdata']['sharerate'], $aGlobal['userdata']['sharedifficulty'], $aGlobal['userdata']['donate_percent'], $aGlobal['userdata']['no_fees'], $aGlobal['ppsvalue']); break; }