From d289b422f390d5e564db56aad13456057842d6d4 Mon Sep 17 00:00:00 2001 From: Sebastian Grewe Date: Mon, 10 Mar 2014 13:40:23 +0100 Subject: [PATCH 01/14] [ADDED] IDLE Worker Global Switch Fixes #1921 once merged. --- cronjobs/notifications.php | 70 ++++++++++--------- public/include/config/admin_settings.inc.php | 7 ++ .../pages/account/notifications.inc.php | 1 + .../mpos/account/notifications/default.tpl | 2 + 4 files changed, 46 insertions(+), 34 deletions(-) diff --git a/cronjobs/notifications.php b/cronjobs/notifications.php index 7baf5bf1d..ffbc69431 100755 --- a/cronjobs/notifications.php +++ b/cronjobs/notifications.php @@ -29,47 +29,49 @@ $monitoring->endCronjob($cron_name, 'E0009', 0, true, false); } -$log->logDebug(" IDLE Worker Notifications ..."); -// Find all IDLE workers -$aWorkers = $worker->getAllIdleWorkers(); -if (empty($aWorkers)) { - $log->logDebug(" no idle workers found"); -} else { - $log->logInfo(" found " . count($aWorkers) . " IDLE workers"); - foreach ($aWorkers as $aWorker) { - $aData = $aWorker; - $aData['username'] = $user->getUserName($aWorker['account_id']); - $aData['subject'] = 'IDLE Worker : ' . $aWorker['username']; - $aData['worker'] = $aWorker['username']; - $aData['email'] = $user->getUserEmail($aData['username']); - $log->logDebug(" " . $aWorker['username'] . "..."); - if (!$notification->sendNotification($aWorker['account_id'], 'idle_worker', $aData)) - $log->logDebug(" Failed sending notifications: " . $notification->getCronError()); +if ($setting->getValue('notifications_disable_idle_worker') != 1) { + $log->logDebug(" IDLE Worker Notifications ..."); + // Find all IDLE workers + $aWorkers = $worker->getAllIdleWorkers(); + if (empty($aWorkers)) { + $log->logDebug(" no idle workers found"); + } else { + $log->logInfo(" found " . count($aWorkers) . " IDLE workers"); + foreach ($aWorkers as $aWorker) { + $aData = $aWorker; + $aData['username'] = $user->getUserName($aWorker['account_id']); + $aData['subject'] = 'IDLE Worker : ' . $aWorker['username']; + $aData['worker'] = $aWorker['username']; + $aData['email'] = $user->getUserEmail($aData['username']); + $log->logDebug(" " . $aWorker['username'] . "..."); + if (!$notification->sendNotification($aWorker['account_id'], 'idle_worker', $aData)) + $log->logDebug(" Failed sending notifications: " . $notification->getCronError()); + } } -} -$log->logDebug(" Reset IDLE Worker Notifications ..."); -// We notified, lets check which recovered -$aNotifications = $notification->getAllActive('idle_worker'); -if (!empty($aNotifications)) { - $log->logInfo(" found " . count($aNotifications) . " active notification(s)"); - foreach ($aNotifications as $aNotification) { - $aData = json_decode($aNotification['data'], true); - $aWorker = $worker->getWorker($aData['id']); - $log->logDebug(" " . $aWorker['username'] . " ..."); - if ($aWorker['hashrate'] > 0) { - if ($notification->setInactive($aNotification['id'])) { - $log->logDebug(" updated #" . $aNotification['id'] . " for " . $aWorker['username'] . " as inactive"); + $log->logDebug(" Reset IDLE Worker Notifications ..."); + // We notified, lets check which recovered + $aNotifications = $notification->getAllActive('idle_worker'); + if (!empty($aNotifications)) { + $log->logInfo(" found " . count($aNotifications) . " active notification(s)"); + foreach ($aNotifications as $aNotification) { + $aData = json_decode($aNotification['data'], true); + $aWorker = $worker->getWorker($aData['id']); + $log->logDebug(" " . $aWorker['username'] . " ..."); + if ($aWorker['hashrate'] > 0) { + if ($notification->setInactive($aNotification['id'])) { + $log->logDebug(" updated #" . $aNotification['id'] . " for " . $aWorker['username'] . " as inactive"); + } else { + $log->logError(" failed to update #" . $aNotification['id'] . " for " . $aWorker['username']); + } } else { - $log->logError(" failed to update #" . $aNotification['id'] . " for " . $aWorker['username']); + $log->logDebug(" still inactive"); } - } else { - $log->logDebug(" still inactive"); } + } else { + $log->logDebug(" no active IDLE worker notifications"); } -} else { - $log->logDebug(" no active IDLE worker notifications"); } require_once('cron_end.inc.php'); diff --git a/public/include/config/admin_settings.inc.php b/public/include/config/admin_settings.inc.php index 593d03b8b..0a2284820 100644 --- a/public/include/config/admin_settings.inc.php +++ b/public/include/config/admin_settings.inc.php @@ -425,3 +425,10 @@ 'name' => 'notifications_disable_block', 'value' => $setting->getValue('notifications_disable_block'), 'tooltip' => 'Enable/Disable block notifications globally. Will remove the user option too.' ); +$aSettings['notifications'][] = array( + 'display' => 'Disable IDLE Worker Notifications', 'type' => 'select', + 'options' => array( 0 => 'No', 1 => 'Yes'), + 'default' => 0, + 'name' => 'notifications_disable_idle_worker', 'value' => $setting->getValue('notifications_disable_idle_worker'), + 'tooltip' => 'Enable/Disable IDLE worker notifications globally. Will remove the user option too.' +); diff --git a/public/include/pages/account/notifications.inc.php b/public/include/pages/account/notifications.inc.php index 5fbf03551..1411b804a 100644 --- a/public/include/pages/account/notifications.inc.php +++ b/public/include/pages/account/notifications.inc.php @@ -24,6 +24,7 @@ // Fetch global settings $smarty->assign('DISABLE_BLOCKNOTIFICATIONS', $setting->getValue('notifications_disable_block')); + $smarty->assign('DISABLE_IDLEWORKERNOTIFICATIONS', $setting->getValue('notifications_disable_idle_worker')); // Fetch user notification settings $aSettings = $notification->getNotificationSettings($_SESSION['USERDATA']['id']); diff --git a/public/templates/mpos/account/notifications/default.tpl b/public/templates/mpos/account/notifications/default.tpl index a112147d6..23e77667c 100644 --- a/public/templates/mpos/account/notifications/default.tpl +++ b/public/templates/mpos/account/notifications/default.tpl @@ -13,6 +13,7 @@ Type Active + {if $DISABLE_IDLEWORKERNOTIFICATIONS|default:"" != 1} IDLE Worker @@ -25,6 +26,7 @@ + {/if} {if $DISABLE_BLOCKNOTIFICATIONS|default:"" != 1} New Blocks From 4f01b277fb65099058a1ea97133e4220a3cb62af Mon Sep 17 00:00:00 2001 From: Sebastian Grewe Date: Mon, 10 Mar 2014 14:20:12 +0100 Subject: [PATCH 02/14] [FIX] Disable monitor option in workers page --- public/include/pages/account/workers.inc.php | 1 + public/templates/mpos/account/workers/default.tpl | 4 ++-- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/public/include/pages/account/workers.inc.php b/public/include/pages/account/workers.inc.php index e85623f15..5e5c7d08a 100644 --- a/public/include/pages/account/workers.inc.php +++ b/public/include/pages/account/workers.inc.php @@ -40,6 +40,7 @@ break; } + $smarty->assign('DISABLE_IDLEWORKERNOTIFICATIONS', $setting->getValue('notifications_disable_idle_worker')); $aWorkers = $worker->getWorkers($_SESSION['USERDATA']['id']); if (!$aWorkers) $_SESSION['POPUP'][] = array('CONTENT' => 'You have no workers configured', 'TYPE' => 'errormsg'); diff --git a/public/templates/mpos/account/workers/default.tpl b/public/templates/mpos/account/workers/default.tpl index e3514850c..fd9726d6e 100644 --- a/public/templates/mpos/account/workers/default.tpl +++ b/public/templates/mpos/account/workers/default.tpl @@ -37,7 +37,7 @@ Worker Login Worker Password Active - {if $GLOBAL.config.disable_notifications != 1}Monitor{/if} + {if $GLOBAL.config.disable_notifications != 1 && $DISABLE_IDLEWORKERNOTIFICATIONS != 1}Monitor{/if} Khash/s Difficulty Action @@ -51,7 +51,7 @@ 0} style="color: orange"{/if}>{$username.0|escape}. - {if $GLOBAL.config.disable_notifications != 1} + {if $GLOBAL.config.disable_notifications != 1 && $DISABLE_IDLEWORKERNOTIFICATIONS != 1}