Merge pull request #1922 from MPOS/disable-worker-notifications

[ADDED] IDLE Worker Global Switch
This commit is contained in:
Sebastian Grewe 2014-03-11 09:32:06 +01:00
commit 32ebfd851e
8 changed files with 57 additions and 43 deletions

View File

@ -29,47 +29,49 @@ if ($setting->getValue('disable_notifications') == 1) {
$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());
}
}
$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->logDebug(" still inactive");
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());
}
}
} else {
$log->logDebug(" no active IDLE worker notifications");
$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->logDebug(" still inactive");
}
}
} else {
$log->logDebug(" no active IDLE worker notifications");
}
}
require_once('cron_end.inc.php');

View File

@ -425,3 +425,10 @@ $aSettings['notifications'][] = array(
'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.'
);

View File

@ -24,6 +24,7 @@ if ($user->isAuthenticated()) {
// 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']);

View File

@ -40,6 +40,7 @@ if ($user->isAuthenticated()) {
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');

View File

@ -15,6 +15,7 @@ empty($_REQUEST['start']) ? $start = 0 : $start = $_REQUEST['start'];
$aWorkers = $worker->getAllWorkers($iLimit, $interval, $start);
$smarty->assign('DISABLE_IDLEWORKERNOTIFICATIONS', $setting->getValue('notifications_disable_idle_worker'));
$smarty->assign('LIMIT', $iLimit);
$smarty->assign('WORKERS', $aWorkers);
$smarty->assign('CONTENT', 'default.tpl');

View File

@ -13,6 +13,7 @@
<th align="left">Type</th>
<th align="center">Active</th>
</tr>
{if $DISABLE_IDLEWORKERNOTIFICATIONS|default:"" != 1}
<tr>
<td align="left">IDLE Worker</td>
<td>
@ -25,6 +26,7 @@
</span>
</td>
</tr>
{/if}
{if $DISABLE_BLOCKNOTIFICATIONS|default:"" != 1}
<tr>
<td align="left">New Blocks</td>

View File

@ -37,7 +37,7 @@
<th align="left">Worker Login</th>
<th align="left">Worker Password</th>
<th align="center">Active</th>
{if $GLOBAL.config.disable_notifications != 1}<th align="center">Monitor</th>{/if}
{if $GLOBAL.config.disable_notifications != 1 && $DISABLE_IDLEWORKERNOTIFICATIONS != 1}<th align="center">Monitor</th>{/if}
<th align="right">Khash/s</th>
<th align="right">Difficulty</th>
<th align="center" style="padding-right: 25px;">Action</th>
@ -51,7 +51,7 @@
<td align="left"{if $WORKERS[worker].hashrate > 0} style="color: orange"{/if}>{$username.0|escape}.<input name="data[{$WORKERS[worker].id}][username]" value="{$username.1|escape}" size="10" required/></td>
<td align="left"><input type="text" name="data[{$WORKERS[worker].id}][password]" value="{$WORKERS[worker].password|escape}" size="10" required></td>
<td align="center"><i class="icon-{if $WORKERS[worker].hashrate > 0}ok{else}cancel{/if}"></i></td>
{if $GLOBAL.config.disable_notifications != 1}
{if $GLOBAL.config.disable_notifications != 1 && $DISABLE_IDLEWORKERNOTIFICATIONS != 1}
<td>
<span class="toggle">
<label for="data[{$WORKERS[worker].id}][monitor]">

View File

@ -25,8 +25,8 @@
<th align="left">Worker Name</th>
<th align="left">Password</th>
<th align="center">Active</th>
{if $GLOBAL.config.disable_notifications != 1}<th align="center">Monitor</th>{/if}
<th align="right">Khash/s</th>
{if $GLOBAL.config.disable_notifications != 1 && $DISABLE_IDLEWORKERNOTIFICATIONS != 1}<th align="center">Monitor</th>{/if}
<th align="right">Difficulty</th>
<th align="right" style="padding-right: 25px;">Avg Difficulty</th>
</tr>
@ -38,7 +38,7 @@
<td align="left">{$WORKERS[worker].username|escape}</td>
<td align="left">{$WORKERS[worker].password|escape}</td>
<td align="center"><i class="icon-{if $WORKERS[worker].hashrate > 0}ok{else}cancel{/if}"></i></td>
{if $GLOBAL.config.disable_notifications != 1}
{if $GLOBAL.config.disable_notifications != 1 && $DISABLE_IDLEWORKERNOTIFICATIONS != 1}
<td align="center"><i class="icon-{if $WORKERS[worker].monitor}ok{else}cancel{/if}"></i></td>
{/if}
<td align="right">{$WORKERS[worker].hashrate|number_format|default:"0"}</td>