diff --git a/cronjobs/findblock.php b/cronjobs/findblock.php index 0538d94c..cb1e7dba 100755 --- a/cronjobs/findblock.php +++ b/cronjobs/findblock.php @@ -39,9 +39,8 @@ if ( $bitcoin->can_connect() === true ){ // Nothing to do so bail out if (empty($aTransactions['transactions'])) { - verbose("No new transactions since last block\n"); + verbose("No new RPC transactions since last block\n"); } else { - // Table header verbose("Blockhash\t\tHeight\tAmount\tConfirmations\tDiff\t\tTime\t\t\tStatus\n"); @@ -66,65 +65,65 @@ if (empty($aTransactions['transactions'])) { } } -verbose("\n\n"); +verbose("\n"); // Now with our blocks added we can scan for their upstream shares $aAllBlocks = $block->getAllUnaccounted('ASC'); if (empty($aAllBlocks)) { verbose("No new unaccounted blocks found\n"); -} +} else { + // Loop through our unaccounted blocks + verbose("\nBlock ID\tBlock Height\tShare ID\tShares\tFinder\t\t\tStatus\n"); + foreach ($aAllBlocks as $iIndex => $aBlock) { + if (empty($aBlock['share_id'])) { + // Fetch this blocks upstream ID + if ($share->setUpstream($block->getLastUpstreamId())) { + $iCurrentUpstreamId = $share->getUpstreamId(); + $iAccountId = $user->getUserId($share->getUpstreamFinder()); + } else { + verbose("\nUnable to fetch blocks upstream share. Aborting!\n"); + verbose($share->getError() . "\n"); + exit; + } + // Fetch share information + if (!$iPreviousShareId = $block->getLastShareId()) { + $iPreviousShareId = 0; + verbose("\nUnable to find highest share ID found so far\n"); + verbose("If this is your first block, this is normal\n\n"); + } + $iRoundShares = $share->getRoundShares($iPreviousShareId, $iCurrentUpstreamId); -// Loop through our unaccounted blocks -verbose("Block ID\tBlock Height\tShare ID\tShares\tFinder\t\t\tStatus\n"); -foreach ($aAllBlocks as $iIndex => $aBlock) { - if (empty($aBlock['share_id'])) { - // Fetch this blocks upstream ID - if ($share->setUpstream($block->getLastUpstreamId())) { - $iCurrentUpstreamId = $share->getUpstreamId(); - $iAccountId = $user->getUserId($share->getUpstreamFinder()); - } else { - verbose("Unable to fetch blocks upstream share\n"); - verbose($share->getError() . "\n"); - continue; - } - // Fetch share information - if (!$iPreviousShareId = $block->getLastShareId()) { - $iPreviousShareId = 0; - verbose("\nUnable to find highest share ID found so far\n"); - verbose("If this is your first block, this is normal\n\n"); - } - $iRoundShares = $share->getRoundShares($iPreviousShareId, $iCurrentUpstreamId); + // Store new information + $strStatus = "OK"; + if (!$block->setShareId($aBlock['id'], $iCurrentUpstreamId)) + $strStatus = "Share ID Failed"; + if (!$block->setFinder($aBlock['id'], $iAccountId)) + $strStatus = "Finder Failed"; + if (!$block->setShares($aBlock['id'], $iRoundShares)) + $strStatus = "Shares Failed"; + if ($config['block_bonus'] > 0 && !$transaction->addTransaction($iAccountId, $config['block_bonus'], 'Bonus', $aBlock['id'])) { + $strStatus = "Bonus Failed"; + } - // Store new information - $strStatus = "OK"; - if (!$block->setShareId($aBlock['id'], $iCurrentUpstreamId)) - $strStatus = "Share ID Failed"; - if (!$block->setFinder($aBlock['id'], $iAccountId)) - $strStatus = "Finder Failed"; - if (!$block->setShares($aBlock['id'], $iRoundShares)) - $strStatus = "Shares Failed"; - if ($config['block_bonus'] > 0 && !$transaction->addTransaction($iAccountId, $config['block_bonus'], 'Bonus', $aBlock['id'])) { - $strStatus = "Bonus Failed"; - } + verbose( + $aBlock['id'] . "\t\t" + . $aBlock['height'] . "\t\t" + . $iCurrentUpstreamId . "\t\t" + . $iRoundShares . "\t" + . "[$iAccountId] " . $user->getUserName($iAccountId) . "\t\t" + . $strStatus + . "\n" + ); - verbose( - $aBlock['id'] . "\t\t" - . $aBlock['height'] . "\t\t" - . $iCurrentUpstreamId . "\t\t" - . $iRoundShares . "\t" - . "[$iAccountId] " . $user->getUserName($iAccountId) . "\t\t" - . $strStatus - . "\n" - ); - - // Notify users - $aAccounts = $notification->getNotificationAccountIdByType('new_block'); - if (is_array($aAccounts)) { - foreach ($aAccounts as $account_id) { - $aMailData['height'] = $aBlock['height']; - $aMailData['subject'] = 'New Block'; - $aMailData['email'] = $user->getUserEmail($user->getUserName($account_id)); - $aMailData['shares'] = $iRoundShares; - $notification->sendNotification($account_id, 'new_block', $aMailData); + // Notify users + $aAccounts = $notification->getNotificationAccountIdByType('new_block'); + if (is_array($aAccounts)) { + foreach ($aAccounts as $account_id) { + $aMailData['height'] = $aBlock['height']; + $aMailData['subject'] = 'New Block'; + $aMailData['email'] = $user->getUserEmail($user->getUserName($account_id)); + $aMailData['shares'] = $iRoundShares; + $notification->sendNotification($account_id, 'new_block', $aMailData); + } } } } diff --git a/public/include/classes/share.class.php b/public/include/classes/share.class.php index 1033f92c..85935a2d 100644 --- a/public/include/classes/share.class.php +++ b/public/include/classes/share.class.php @@ -187,7 +187,8 @@ class Share { ORDER BY id ASC LIMIT 1"); if ($this->checkStmt($stmt) && $stmt->bind_param('i', $last) && $stmt->execute() && $result = $stmt->get_result()) { $this->oUpstream = $result->fetch_object(); - return true; + if (!empty($this->oUpstream->account) && is_int($this->oUpstream->id)) + return true; } // Catchall return false;