diff --git a/cronjobs/findblock.php b/cronjobs/findblock.php
index daa91030..aaeeaf69 100755
--- a/cronjobs/findblock.php
+++ b/cronjobs/findblock.php
@@ -137,13 +137,13 @@ if (empty($aAllBlocks)) {
// Store new information
if (!$block->setShareId($aBlock['id'], $iCurrentUpstreamId))
$log->logError('Failed to update share ID in database for block ' . $aBlock['height'] . ': ' . $block->getCronError());
- if (!$block->setFinder($aBlock['id'], $iAccountId))
+ if (!empty($iAccountId) && !$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'])) {
+ if ($config['block_bonus'] > 0 && !empty($iAccountId) && !$transaction->addTransaction($iAccountId, $config['block_bonus'], 'Bonus', $aBlock['id'])) {
$log->logError('Failed to create Bonus transaction in database for user ' . $user->getUserName($iAccountId) . ' for block ' . $aBlock['height'] . ': ' . $transaction->getCronError());
}
diff --git a/cronjobs/pplns_payout.php b/cronjobs/pplns_payout.php
index 8d60ae2e..87a02ac5 100755
--- a/cronjobs/pplns_payout.php
+++ b/cronjobs/pplns_payout.php
@@ -158,6 +158,12 @@ foreach ($aAllBlocks as $iIndex => $aBlock) {
// Loop through all accounts that have found shares for this round
foreach ($aAccountShares as $key => $aData) {
+ // Skip entries that have no account ID, user deleted?
+ if (empty($aData['id'])) {
+ $log->logInfo('User ' . $aData['username'] . ' does not have an associated account, skipping');
+ continue;
+ }
+
// Payout based on PPLNS target shares, proportional payout for all users
$aData['percentage'] = round(( 100 / $iRoundShares) * $aData['valid'], 8);
$aData['payout'] = round(( $aData['percentage'] / 100 ) * $dReward, 8);
diff --git a/cronjobs/pps_payout.php b/cronjobs/pps_payout.php
index 434d3074..1c79e411 100755
--- a/cronjobs/pps_payout.php
+++ b/cronjobs/pps_payout.php
@@ -80,6 +80,12 @@ if (!empty($aAccountShares)) {
}
foreach ($aAccountShares as $aData) {
+ // Skip entries that have no account ID, user deleted?
+ if (empty($aData['id'])) {
+ $log->logInfo('User ' . $aData['username'] . ' does not have an associated account, skipping');
+ continue;
+ }
+
// MPOS uses a base difficulty setting to avoid showing weightened shares
// Since we need weightened shares here, we go back to the proper value for payouts
$aData['payout'] = round($aData['valid'] * pow(2, ($config['difficulty'] - 16)) * $pps_value, 8);
diff --git a/cronjobs/proportional_payout.php b/cronjobs/proportional_payout.php
index 59819b29..0fbc80cd 100755
--- a/cronjobs/proportional_payout.php
+++ b/cronjobs/proportional_payout.php
@@ -72,12 +72,17 @@ foreach ($aAllBlocks as $iIndex => $aBlock) {
// Loop through all accounts that have found shares for this round
foreach ($aAccountShares as $key => $aData) {
- // Payout based on shares, PPS system
- $aData['percentage'] = round(( 100 / $iRoundShares ) * $aData['valid'], 8);
- $aData['payout'] = round(( $aData['percentage'] / 100 ) * $dReward, 8);
+ // Skip entries that have no account ID, user deleted?
+ if (empty($aData['id'])) {
+ $log->logInfo('User ' . $aData['username'] . ' does not have an associated account, skipping');
+ continue;
+ }
+
// Defaults
$aData['fee' ] = 0;
$aData['donation'] = 0;
+ $aData['percentage'] = round(( 100 / $iRoundShares ) * $aData['valid'], 8);
+ $aData['payout'] = round(( $aData['percentage'] / 100 ) * $dReward, 8);
if ($config['fees'] > 0 && $aData['no_fees'] == 0)
$aData['fee'] = round($config['fees'] / 100 * $aData['payout'], 8);
diff --git a/public/templates/mpos/statistics/round/block_stats.tpl b/public/templates/mpos/statistics/round/block_stats.tpl
index aafcb856..b0f84475 100644
--- a/public/templates/mpos/statistics/round/block_stats.tpl
+++ b/public/templates/mpos/statistics/round/block_stats.tpl
@@ -37,7 +37,7 @@
Shares |
{$BLOCKDETAILS.shares|number_format:"0"|default:"0"} |
Finder |
- {$BLOCKDETAILS.finder|default:"0"} |
+ {$BLOCKDETAILS.finder|default:"unknown"} |
diff --git a/public/templates/mpos/statistics/round/pplns_block_stats.tpl b/public/templates/mpos/statistics/round/pplns_block_stats.tpl
index 5e99fcc1..af7577bb 100644
--- a/public/templates/mpos/statistics/round/pplns_block_stats.tpl
+++ b/public/templates/mpos/statistics/round/pplns_block_stats.tpl
@@ -76,7 +76,7 @@
| Finder |
- {$BLOCKDETAILS.finder|default:"0"} |
+ {$BLOCKDETAILS.finder|default:"unknown"} |
Round Variance |
{if $PPLNSSHARES > 0}{math assign="percentage1" equation=(($BLOCKDETAILS.shares / $PPLNSSHARES) * 100)}{/if}{$percentage1|number_format:"2"} % |
diff --git a/public/templates/mpos/statistics/round/pplns_block_stats_small.tpl b/public/templates/mpos/statistics/round/pplns_block_stats_small.tpl
index 06a70bba..f7049e31 100644
--- a/public/templates/mpos/statistics/round/pplns_block_stats_small.tpl
+++ b/public/templates/mpos/statistics/round/pplns_block_stats_small.tpl
@@ -63,7 +63,7 @@
Shares |
{$BLOCKDETAILS.shares|number_format:"0"|default:"0"} |
Finder |
- {$BLOCKDETAILS.finder|default:"0"} |
+ {$BLOCKDETAILS.finder|default:"unknown"} |
Seconds This Round |
{$BLOCKDETAILS.round_time|number_format:"0"|default:"0"} |
Round Variance |
diff --git a/public/templates/mpos/statistics/round/pplns_round_shares.tpl b/public/templates/mpos/statistics/round/pplns_round_shares.tpl
index 68436b42..9272a07a 100644
--- a/public/templates/mpos/statistics/round/pplns_round_shares.tpl
+++ b/public/templates/mpos/statistics/round/pplns_round_shares.tpl
@@ -15,7 +15,7 @@
{section contrib $PPLNSROUNDSHARES}
| {$rank++} |
- {if $PPLNSROUNDSHARES[contrib].is_anonymous|default:"0" == 1 && $GLOBAL.userdata.is_admin|default:"0" == 0}anonymous{else}{$PPLNSROUNDSHARES[contrib].username|escape}{/if} |
+ {if $PPLNSROUNDSHARES[contrib].is_anonymous|default:"0" == 1 && $GLOBAL.userdata.is_admin|default:"0" == 0}anonymous{else}{$PPLNSROUNDSHARES[contrib].username|default:"unknown"|escape}{/if} |
{$PPLNSROUNDSHARES[contrib].pplns_valid|number_format} |
{$PPLNSROUNDSHARES[contrib].pplns_invalid|number_format} |
{if $PPLNSROUNDSHARES[contrib].pplns_invalid > 0 && $PPLNSROUNDSHARES[contrib].pplns_valid > 0}{($PPLNSROUNDSHARES[contrib].pplns_invalid / $PPLNSROUNDSHARES[contrib].pplns_valid * 100)|number_format:"2"|default:"0"}{else}0.00{/if} |
diff --git a/public/templates/mpos/statistics/round/pplns_transactions.tpl b/public/templates/mpos/statistics/round/pplns_transactions.tpl
index 3487bc15..ef4628fa 100644
--- a/public/templates/mpos/statistics/round/pplns_transactions.tpl
+++ b/public/templates/mpos/statistics/round/pplns_transactions.tpl
@@ -16,7 +16,7 @@
{assign var=percentage1 value=0}
{section txs $ROUNDTRANSACTIONS}
- | {if $ROUNDTRANSACTIONS[txs].is_anonymous|default:"0" == 1 && $GLOBAL.userdata.is_admin|default:"0" == 0}anonymous{else}{$ROUNDTRANSACTIONS[txs].username|escape}{/if} |
+ {if $ROUNDTRANSACTIONS[txs].is_anonymous|default:"0" == 1 && $GLOBAL.userdata.is_admin|default:"0" == 0}anonymous{else}{$ROUNDTRANSACTIONS[txs].username|default:"unknown"|escape}{/if} |
{$ROUNDSHARES[$ROUNDTRANSACTIONS[txs].uid].valid|number_format} |
{if $ROUNDSHARES[$ROUNDTRANSACTIONS[txs].uid].valid > 0 }{(( 100 / $BLOCKDETAILS.shares) * $ROUNDSHARES[$ROUNDTRANSACTIONS[txs].uid].valid)|number_format:"2"}{else}0.00{/if} |
{$PPLNSROUNDSHARES[txs].pplns_valid|number_format|default:"0"} |
diff --git a/public/templates/mpos/statistics/round/pplns_transactions_small.tpl b/public/templates/mpos/statistics/round/pplns_transactions_small.tpl
index b50c416d..74e45bf5 100644
--- a/public/templates/mpos/statistics/round/pplns_transactions_small.tpl
+++ b/public/templates/mpos/statistics/round/pplns_transactions_small.tpl
@@ -19,7 +19,7 @@
{section txs $ROUNDTRANSACTIONS}
- | {if $ROUNDTRANSACTIONS[txs].is_anonymous|default:"0" == 1 && $GLOBAL.userdata.is_admin|default:"0" == 0}anonymous{else}{$ROUNDTRANSACTIONS[txs].username|escape}{/if} |
+ {if $ROUNDTRANSACTIONS[txs].is_anonymous|default:"0" == 1 && $GLOBAL.userdata.is_admin|default:"0" == 0}anonymous{else}{$ROUNDTRANSACTIONS[txs].username|default:"unknown"|escape}{/if} |
{$SHARESDATA[$ROUNDTRANSACTIONS[txs].username].valid|number_format} |
{$SHARESDATA[$ROUNDTRANSACTIONS[txs].username].invalid|number_format} |
{if $SHARESDATA[$ROUNDTRANSACTIONS[txs].username].invalid > 0 }{($SHARESDATA[$ROUNDTRANSACTIONS[txs].username].invalid / $SHARESDATA[$ROUNDTRANSACTIONS[txs].username].valid * 100)|number_format:"2"|default:"0"}{else}0.00{/if} |
diff --git a/public/templates/mpos/statistics/round/round_shares.tpl b/public/templates/mpos/statistics/round/round_shares.tpl
index 3a58e846..a941f917 100644
--- a/public/templates/mpos/statistics/round/round_shares.tpl
+++ b/public/templates/mpos/statistics/round/round_shares.tpl
@@ -16,7 +16,7 @@
{foreach key=id item=data from=$ROUNDSHARES}
| {$rank++} |
- {if $data.is_anonymous|default:"0" == 1 && $GLOBAL.userdata.is_admin|default:"0" == 0}anonymous{else}{$data.username|escape}{/if} |
+ {if $data.is_anonymous|default:"0" == 1 && $GLOBAL.userdata.is_admin|default:"0" == 0}anonymous{else}{$data.username|default:"unknown"|escape}{/if} |
{$data.valid|number_format} |
{$data.invalid|number_format} |
{if $data.invalid > 0 }{($data.invalid / $data.valid * 100)|number_format:"2"|default:"0"}{else}0.00{/if} |
diff --git a/public/templates/mpos/statistics/round/round_transactions.tpl b/public/templates/mpos/statistics/round/round_transactions.tpl
index 1ab76f97..ddca39c8 100644
--- a/public/templates/mpos/statistics/round/round_transactions.tpl
+++ b/public/templates/mpos/statistics/round/round_transactions.tpl
@@ -13,7 +13,7 @@
{section txs $ROUNDTRANSACTIONS}
- | {if $ROUNDTRANSACTIONS[txs].is_anonymous|default:"0" == 1 && $GLOBAL.userdata.is_admin|default:"0" == 0}anonymous{else}{$ROUNDTRANSACTIONS[txs].username|escape}{/if} |
+ {if $ROUNDTRANSACTIONS[txs].is_anonymous|default:"0" == 1 && $GLOBAL.userdata.is_admin|default:"0" == 0}anonymous{else}{$ROUNDTRANSACTIONS[txs].username|default:"unknown"|escape}{/if} |
{$ROUNDTRANSACTIONS[txs].type|default:""} |
{$ROUNDSHARES[$ROUNDTRANSACTIONS[txs].uid].valid|number_format} |
{(( 100 / $BLOCKDETAILS.shares) * $ROUNDSHARES[$ROUNDTRANSACTIONS[txs].uid].valid)|default:"0"|number_format:"2"} |