diff --git a/cronjobs/payouts.php b/cronjobs/payouts.php index 0edb9b3c..5b9caa73 100755 --- a/cronjobs/payouts.php +++ b/cronjobs/payouts.php @@ -46,10 +46,10 @@ if (!$dWalletBalance = $bitcoin->getrealbalance()) // Fetch unconfirmed amount from blocks table empty($config['network_confirmations']) ? $confirmations = 120 : $confirmations = $config['network_confirmations']; +$aBlocksUnconfirmed = $block->getAllUnconfirmed($confirmations); +$dBlocksUnconfirmedBalance = 0; +if (!empty($aBlocksUnconfirmed))foreach ($aBlocksUnconfirmed as $aData) $dBlocksUnconfirmedBalance += $aData['amount']; if ($config['getbalancewithunconfirmed']) { - $aBlocksUnconfirmed = $block->getAllUnconfirmed($confirmations); - $dBlocksUnconfirmedBalance = 0; - if (!empty($aBlocksUnconfirmed))foreach ($aBlocksUnconfirmed as $aData) $dBlocksUnconfirmedBalance += $aData['amount']; $dWalletBalance -= $dBlocksUnconfirmedBalance; } // Fetch Newmint @@ -133,10 +133,10 @@ if (!$dWalletBalance = $bitcoin->getrealbalance()) // Fetch unconfirmed amount from blocks table empty($config['network_confirmations']) ? $confirmations = 120 : $confirmations = $config['network_confirmations']; +$aBlocksUnconfirmed = $block->getAllUnconfirmed($confirmations); +$dBlocksUnconfirmedBalance = 0; +if (!empty($aBlocksUnconfirmed))foreach ($aBlocksUnconfirmed as $aData) $dBlocksUnconfirmedBalance += $aData['amount']; if ($config['getbalancewithunconfirmed']) { - $aBlocksUnconfirmed = $block->getAllUnconfirmed($confirmations); - $dBlocksUnconfirmedBalance = 0; - if (!empty($aBlocksUnconfirmed))foreach ($aBlocksUnconfirmed as $aData) $dBlocksUnconfirmedBalance += $aData['amount']; $dWalletBalance -= $dBlocksUnconfirmedBalance; } // Fetch Newmint diff --git a/public/include/classes/coins/coin_base.class.php b/public/include/classes/coins/coin_base.class.php index 1eb5470c..7eeb3ee1 100644 --- a/public/include/classes/coins/coin_base.class.php +++ b/public/include/classes/coins/coin_base.class.php @@ -47,13 +47,22 @@ class CoinBase extends Base { * Calculate our networks expected time per block **/ public function calcNetworkExpectedTimePerBlock($dDifficulty, $dNetworkHashrate) { - return pow(2, 32) * $dDifficulty / $dNetworkHashrate; + if ($dNetworkHashrate > 0) { + return pow(2, 32) * $dDifficulty / $dNetworkHashrate; + } else { + return 0; + } } /** * Calculate next expected difficulty based on current difficulty **/ public function calcExpectedNextDifficulty($dDifficulty, $dNetworkHashrate) { - return round($dDifficulty * $this->config['cointarget'] / $this->calcNetworkExpectedTimePerBlock($dDifficulty, $dNetworkHashrate), 8); + $iExpectedTimePerBlock = $this->calcNetworkExpectedTimePerBlock($dDifficulty, $dNetworkHashrate); + if (!empty($iExpectedTimePerBlock) && $iExpectedTimePerBlock > 0) { + return round($dDifficulty * $this->config['cointarget'] / $iExpectedTimePerBlock, 8); + } else { + return 0; + } } } diff --git a/public/include/classes/mail.class.php b/public/include/classes/mail.class.php index 51a228ba..3a26b089 100644 --- a/public/include/classes/mail.class.php +++ b/public/include/classes/mail.class.php @@ -34,7 +34,7 @@ class Mail extends Base { $aData['senderEmail'] = $senderEmail; $aData['senderSubject'] = $senderSubject; $aData['senderMessage'] = $senderMessage; - $aData['email'] = $this->setting->getValue('website_email'); + $aData['email'] = $this->setting->getValue('website_email', 'test@example.com'); $aData['subject'] = 'Contact Form'; if ($this->sendMail('contactform/body', $aData)) { return true; @@ -52,7 +52,7 @@ class Mail extends Base { * subject : Mail Subject * email : Destination address **/ - public function sendMail($template, $aData) { + public function sendMail($template, $aData, $throttle=false) { // Prepare SMTP transport and mailer $transport_type = $this->config['swiftmailer']['type']; if ($transport_type == 'sendmail') { @@ -65,6 +65,14 @@ class Mail extends Base { } } $mailer = Swift_Mailer::newInstance($transport); + + // Throttle mails to x per minute, used for newsletter for example + if ($this->config['swiftmailer']['type'] == 'smtp' && $throttle) { + $mailer->registerPlugin(new Swift_Plugins_ThrottlerPlugin( + $this->config['switfmailer']['smtp']['throttle'], Swift_Plugins_ThrottlerPlugin::MESSAGES_PER_MINUTE + )); + } + // Prepare the smarty templates used $this->smarty->clearCache(BASEPATH . 'templates/mail/' . $template . '.tpl'); $this->smarty->clearCache(BASEPATH . 'templates/mail/subject.tpl'); @@ -73,14 +81,20 @@ class Mail extends Base { $this->smarty->assign('DATA', $aData); // Create new message for Swiftmailer + $senderEmail = $this->setting->getValue('website_email', 'test@example.com'); + $senderName = $this->setting->getValue('website_name', 'test@example.com'); $message = Swift_Message::newInstance() ->setSubject($this->smarty->fetch(BASEPATH . 'templates/mail/subject.tpl')) - ->setFrom(array( $this->setting->getValue('website_email') => $this->setting->getValue('website_name'))) + ->setFrom(array( $senderEmail => $senderName)) ->setTo($aData['email']) - ->setSender($this->setting->getValue('website_email')) - ->setReturnPath($this->setting->getValue('website_email')) + ->setSender($senderEmail) + ->setReturnPath($senderEmail) ->setBody($this->smarty->fetch(BASEPATH . 'templates/mail/' . $template . '.tpl'), 'text/html'); - if (strlen(@$aData['senderName']) > 0 && @strlen($aData['senderEmail']) > 0 ) + if (isset($aData['senderName']) && + isset($aData['senderEmail']) && + strlen($aData['senderName']) > 0 && + strlen($aData['senderEmail']) > 0 && + filter_var($aData['senderEmail'], FILTER_VALIDATE_EMAIL)) $message->setReplyTo(array($aData['senderEmail'] => $aData['senderName'])); // Send message out with configured transport diff --git a/public/include/classes/notification.class.php b/public/include/classes/notification.class.php index cc586ce1..44860281 100644 --- a/public/include/classes/notification.class.php +++ b/public/include/classes/notification.class.php @@ -72,13 +72,26 @@ class Notification extends Mail { * @return array Notification settings **/ public function getNotificationSettings($account_id) { + // Some defaults, we cover them here so we can avoid adding default settings on user creation + $aDefaults = array( 'newsletter' => 1 ); $this->debug->append("STA " . __METHOD__, 4); $stmt = $this->mysqli->prepare("SELECT * FROM $this->tableSettings WHERE account_id = ?"); if ($stmt && $stmt->bind_param('i', $account_id) && $stmt->execute() && $result = $stmt->get_result()) { if ($result->num_rows > 0) { + $aFound = array(); while ($row = $result->fetch_assoc()) { + if (array_key_exists($row['type'], $aDefaults)) $aFound[] = $row['type']; $aData[$row['type']] = $row['active']; } + // Check found types against our defaults, set if required + foreach ($aDefaults as $type => $value) { + if (!in_array($type, $aFound)) { + $aData[$type] = $value; + } + } + return $aData; + } else { + foreach ($aDefaults as $type => $value) $aData[$type] = $value; return $aData; } } diff --git a/public/include/classes/transaction.class.php b/public/include/classes/transaction.class.php index 60d178b5..1999fd4b 100644 --- a/public/include/classes/transaction.class.php +++ b/public/include/classes/transaction.class.php @@ -150,8 +150,8 @@ class Transaction extends Base { IFNULL(SUM(IF(t.type = 'TXFee' AND timestamp >= DATE_SUB(now(), INTERVAL 31536000 SECOND), t.amount, 0)), 0) AS 1YearTXFee, IFNULL(SUM(IF(t.type = 'Fee' AND timestamp >= DATE_SUB(now(), INTERVAL 31536000 SECOND), t.amount, 0)), 0) AS 1YearFee, IFNULL(SUM(IF(t.type = 'Donation' AND timestamp >= DATE_SUB(now(), INTERVAL 31536000 SECOND), t.amount, 0)), 0) AS 1YearDonation - FROM transactions AS t - LEFT OUTER JOIN blocks AS b ON b.id = t.block_id + FROM $this->table AS t + LEFT OUTER JOIN " . $this->block->getTableName() . " AS b ON b.id = t.block_id WHERE t.account_id = ? AND (b.confirmations > 0 OR b.id IS NULL)"); if ($this->checkStmt($stmt) && $stmt->bind_param("i", $account_id) && $stmt->execute() && $result = $stmt->get_result()) diff --git a/public/include/classes/user.class.php b/public/include/classes/user.class.php index e5d078aa..68e77d3a 100644 --- a/public/include/classes/user.class.php +++ b/public/include/classes/user.class.php @@ -192,6 +192,11 @@ class User extends Base { return false; } if ($this->checkUserPassword($username, $password)) { + // delete notification cookies + setcookie("motd-box", "", time()-3600); + setcookie("lastlogin-box", "", time()-3600); + setcookie("backend-box", "", time()-3600); + // rest of login process $uid = $this->getUserId($username); $lastLoginTime = $this->getLastLogin($uid); $this->updateLoginTimestamp($uid); diff --git a/public/include/config/admin_settings.inc.php b/public/include/config/admin_settings.inc.php index b48a6be6..e0adf7cb 100644 --- a/public/include/config/admin_settings.inc.php +++ b/public/include/config/admin_settings.inc.php @@ -272,6 +272,20 @@ $aSettings['acl'][] = array( 'name' => 'acl_chat_page', 'value' => $setting->getValue('acl_chat_page'), 'tooltip' => 'Make the chat page private (users only) or public.' ); +$aSettings['acl'][] = array( + 'display' => 'MOOT Forum Page', 'type' => 'select', + 'options' => array( 0 => 'Private', 1 => 'Public', 2 => 'Disabled' ), + 'default' => 2, + 'name' => 'acl_moot_forum', 'value' => $setting->getValue('acl_moot_forum'), + 'tooltip' => 'Make the forum page private (users only) or public.' +); +$aSettings['acl'][] = array( + 'display' => 'QRCode', 'type' => 'select', + 'options' => array( 0 => 'Enabled', 1 => 'Disabled' ), + 'default' => 0, + 'name' => 'acl_qrcode', 'value' => $setting->getValue('acl_qrcode'), + 'tooltip' => 'Hide or Show the QRCode Page.' +); $aSettings['system'][] = array( 'display' => 'E-mail address for system error notifications', 'type' => 'text', 'size' => 25, @@ -370,6 +384,13 @@ $aSettings['system'][] = array( 'name' => 'system_irc_chat', 'value' => $setting->getValue('system_irc_chat'), 'tooltip' => 'Your IRC support channel name.' ); +$aSettings['system'][] = array( + 'display' => 'Moot Forum Channel', 'type' => 'text', + 'size' => 25, + 'default' => 'lazypoolop', + 'name' => 'system_moot_forum', 'value' => $setting->getValue('system_moot_forum'), + 'tooltip' => 'Your MOOT support forum name.' +); $aSettings['recaptcha'][] = array( 'display' => 'Enable re-Captcha', 'type' => 'select', 'options' => array( 0 => 'No', 1 => 'Yes' ), @@ -447,6 +468,13 @@ $aSettings['notifications'][] = array( '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.' ); +$aSettings['notifications'][] = array( + 'display' => 'Disable Pool Newsletter', 'type' => 'select', + 'options' => array( 0 => 'No', 1 => 'Yes'), + 'default' => 0, + 'name' => 'notifications_disable_pool_newsletter', 'value' => $setting->getValue('notifications_disable_pool_newsletter'), + 'tooltip' => 'Enable/Disable pool newsletter globally. Will remove the user option too.' +); $aSettings['pools'][] = array( 'display' => 'Enable Pool Navigation', 'type' => 'select', 'options' => array( 0 => 'No', 1 => 'Yes' ), diff --git a/public/include/config/global.inc.dist.php b/public/include/config/global.inc.dist.php index 548db7b6..c5fd9d74 100644 --- a/public/include/config/global.inc.dist.php +++ b/public/include/config/global.inc.dist.php @@ -70,6 +70,7 @@ $config['switfmailer']['smtp']['port'] = '587'; $config['switfmailer']['smtp']['encryption'] = 'tls'; $config['switfmailer']['smtp']['username'] = ''; $config['switfmailer']['smtp']['password'] = ''; +$config['switfmailer']['smtp']['throttle'] = 100; /** * Getting Started Config diff --git a/public/include/pages/about/moot.inc.php b/public/include/pages/about/moot.inc.php new file mode 100644 index 00000000..595c8f5e --- /dev/null +++ b/public/include/pages/about/moot.inc.php @@ -0,0 +1,20 @@ +getValue('acl_moot_forum', 2)) { +case '0': + if ($user->isAuthenticated()) { + $smarty->assign('CHATROOM', $setting->getValue('system_moot_forum', 'lazypoolop')); + $smarty->assign("CONTENT", "default.tpl"); + } + break; +case '1': + $smarty->assign('CHATROOM', $setting->getValue('system_moot_forum', 'lazypoolop')); + $smarty->assign("CONTENT", "default.tpl"); + break; +case '2': + $_SESSION['POPUP'][] = array('CONTENT' => 'Page currently disabled. Please try again later.', 'TYPE' => 'alert alert-danger'); + $smarty->assign("CONTENT", "disabled.tpl"); + break; +} diff --git a/public/include/pages/account/edit.inc.php b/public/include/pages/account/edit.inc.php index 0c50dafd..951face4 100644 --- a/public/include/pages/account/edit.inc.php +++ b/public/include/pages/account/edit.inc.php @@ -12,52 +12,54 @@ $updating = (@$_POST['do']) ? 1 : 0; if ($user->isAuthenticated()) { if ($config['twofactor']['enabled']) { - $popupmsg = 'E-mail confirmations are required for '; - $popuptypes = array(); - if ($config['twofactor']['options']['details'] && $oldtoken_ea !== "") { - $popuptypes[] = 'editing your details'; - $ea_editable = $user->token->isTokenValid($_SESSION['USERDATA']['id'], $oldtoken_ea, 5); - $ea_sent = $user->token->doesTokenExist('account_edit', $_SESSION['USERDATA']['id']); - } - if ($config['twofactor']['options']['changepw'] && $oldtoken_cp !== "") { - $popuptypes[] = 'changing your password'; - $cp_editable = $user->token->isTokenValid($_SESSION['USERDATA']['id'], $oldtoken_cp, 6); - $cp_sent = $user->token->doesTokenExist('change_pw', $_SESSION['USERDATA']['id']); - } - if ($config['twofactor']['options']['withdraw'] && $oldtoken_wf !== "") { - $popuptypes[] = 'withdrawals'; - $wf_editable = $user->token->isTokenValid($_SESSION['USERDATA']['id'], $oldtoken_wf, 7); - $wf_sent = $user->token->doesTokenExist('withdraw_funds', $_SESSION['USERDATA']['id']); - } - - // get the status of a token if set - $message_tokensent_invalid = 'A token was sent to your e-mail that will allow you to '; - $message_tokensent_valid = 'You can currently '; - $messages_tokensent_status = array( - 'ea' => 'edit your account details', - 'wf' => 'withdraw funds', - 'cp' => 'change your password' - ); - // build the message we're going to show them for their token(s) - $eaprep_sent = ($ea_sent) ? $message_tokensent_valid.$messages_tokensent_status['ea'] : ""; - $eaprep_edit = ($ea_editable) ? $message_tokensent_invalid.$messages_tokensent_status['ea'] : ""; - $wfprep_sent = ($wf_sent) ? $message_tokensent_valid.$messages_tokensent_status['wf'] : ""; - $wfprep_edit = ($wf_editable) ? $message_tokensent_invalid.$messages_tokensent_status['wf'] : ""; - $cpprep_sent = ($cp_sent) ? $message_tokensent_valid.$messages_tokensent_status['cp'] : ""; - $cpprep_edit = ($cp_editable) ? $message_tokensent_invalid.$messages_tokensent_status['cp'] : ""; - $ptc = 0; - $ptcn = count($popuptypes); - foreach ($popuptypes as $pt) { - if ($ptcn == 1) { $popupmsg.= $popuptypes[$ptc]; continue; } - if ($ptc !== ($ptcn-1)) { - $popupmsg.= $popuptypes[$ptc].', '; - } else { - $popupmsg.= 'and '.$popuptypes[$ptc]; + if ($config['twofactor']['options']['details'] OR $config['twofactor']['options']['changepw'] OR $config['twofactor']['options']['withdraw']) { + $popupmsg = 'E-mail confirmations are required for '; + $popuptypes = array(); + if ($config['twofactor']['options']['details'] && $oldtoken_ea !== "") { + $popuptypes[] = 'editing your details'; + $ea_editable = $user->token->isTokenValid($_SESSION['USERDATA']['id'], $oldtoken_ea, 5); + $ea_sent = $user->token->doesTokenExist('account_edit', $_SESSION['USERDATA']['id']); } - $ptc++; + if ($config['twofactor']['options']['changepw'] && $oldtoken_cp !== "") { + $popuptypes[] = 'changing your password'; + $cp_editable = $user->token->isTokenValid($_SESSION['USERDATA']['id'], $oldtoken_cp, 6); + $cp_sent = $user->token->doesTokenExist('change_pw', $_SESSION['USERDATA']['id']); + } + if ($config['twofactor']['options']['withdraw'] && $oldtoken_wf !== "") { + $popuptypes[] = 'withdrawals'; + $wf_editable = $user->token->isTokenValid($_SESSION['USERDATA']['id'], $oldtoken_wf, 7); + $wf_sent = $user->token->doesTokenExist('withdraw_funds', $_SESSION['USERDATA']['id']); + } + + // get the status of a token if set + $message_tokensent_invalid = 'A token was sent to your e-mail that will allow you to '; + $message_tokensent_valid = 'You can currently '; + $messages_tokensent_status = array( + 'ea' => 'edit your account details', + 'wf' => 'withdraw funds', + 'cp' => 'change your password' + ); + // build the message we're going to show them for their token(s) + $eaprep_sent = ($ea_sent) ? $message_tokensent_valid.$messages_tokensent_status['ea'] : ""; + $eaprep_edit = ($ea_editable) ? $message_tokensent_invalid.$messages_tokensent_status['ea'] : ""; + $wfprep_sent = ($wf_sent) ? $message_tokensent_valid.$messages_tokensent_status['wf'] : ""; + $wfprep_edit = ($wf_editable) ? $message_tokensent_invalid.$messages_tokensent_status['wf'] : ""; + $cpprep_sent = ($cp_sent) ? $message_tokensent_valid.$messages_tokensent_status['cp'] : ""; + $cpprep_edit = ($cp_editable) ? $message_tokensent_invalid.$messages_tokensent_status['cp'] : ""; + $ptc = 0; + $ptcn = count($popuptypes); + foreach ($popuptypes as $pt) { + if ($ptcn == 1) { $popupmsg.= $popuptypes[$ptc]; continue; } + if ($ptc !== ($ptcn-1)) { + $popupmsg.= $popuptypes[$ptc].', '; + } else { + $popupmsg.= 'and '.$popuptypes[$ptc]; + } + $ptc++; + } + // display global notice about tokens being in use and for which bits they're active + $_SESSION['POPUP'][] = array('CONTENT' => $popupmsg, 'TYPE' => 'alert alert-warning'); } - // display global notice about tokens being in use and for which bits they're active - $_SESSION['POPUP'][] = array('CONTENT' => $popupmsg, 'TYPE' => 'alert alert-warning'); } if (isset($_POST['do']) && $_POST['do'] == 'genPin') { @@ -174,12 +176,12 @@ if ($config['twofactor']['enabled'] && $user->isAuthenticated()) { } // display token info per each - only when sent and editable or just sent, not by default - (!empty($eaprep_sent) && !empty($eaprep_edit)) ? $_SESSION['POPUP'][] = array('CONTENT' => $eaprep_sent, 'TYPE' => 'success'):""; - (!empty($eaprep_sent) && empty($eaprep_edit)) ? $_SESSION['POPUP'][] = array('CONTENT' => $message_tokensent_invalid.$messages_tokensent_status['ea'], 'TYPE' => 'success'):""; - (!empty($wfprep_sent) && !empty($wfprep_edit)) ? $_SESSION['POPUP'][] = array('CONTENT' => $wfprep_sent, 'TYPE' => 'success'):""; - (!empty($wfprep_sent) && empty($wfprep_edit)) ? $_SESSION['POPUP'][] = array('CONTENT' => $message_tokensent_invalid.$messages_tokensent_status['wf'], 'TYPE' => 'success'):""; - (!empty($cpprep_sent) && !empty($cpprep_edit)) ? $_SESSION['POPUP'][] = array('CONTENT' => $cpprep_sent, 'TYPE' => 'success'):""; - (!empty($cpprep_sent) && empty($cpprep_edit)) ? $_SESSION['POPUP'][] = array('CONTENT' => $message_tokensent_invalid.$messages_tokensent_status['cp'], 'TYPE' => 'success'):""; + (!empty($eaprep_sent) && !empty($eaprep_edit)) ? $_SESSION['POPUP'][] = array('CONTENT' => $eaprep_sent, 'TYPE' => 'alert alert-success'):""; + (!empty($eaprep_sent) && empty($eaprep_edit)) ? $_SESSION['POPUP'][] = array('CONTENT' => $message_tokensent_invalid.$messages_tokensent_status['ea'], 'TYPE' => 'alert alert-success'):""; + (!empty($wfprep_sent) && !empty($wfprep_edit)) ? $_SESSION['POPUP'][] = array('CONTENT' => $wfprep_sent, 'TYPE' => 'alert alert-success'):""; + (!empty($wfprep_sent) && empty($wfprep_edit)) ? $_SESSION['POPUP'][] = array('CONTENT' => $message_tokensent_invalid.$messages_tokensent_status['wf'], 'TYPE' => 'alert alert-success'):""; + (!empty($cpprep_sent) && !empty($cpprep_edit)) ? $_SESSION['POPUP'][] = array('CONTENT' => $cpprep_sent, 'TYPE' => 'alert alert-success'):""; + (!empty($cpprep_sent) && empty($cpprep_edit)) ? $_SESSION['POPUP'][] = array('CONTENT' => $message_tokensent_invalid.$messages_tokensent_status['cp'], 'TYPE' => 'alert alert-success'):""; // two-factor stuff $smarty->assign("CHANGEPASSUNLOCKED", $cp_editable); $smarty->assign("WITHDRAWUNLOCKED", $wf_editable); diff --git a/public/include/pages/account/notifications.inc.php b/public/include/pages/account/notifications.inc.php index ef26761c..f06c796a 100644 --- a/public/include/pages/account/notifications.inc.php +++ b/public/include/pages/account/notifications.inc.php @@ -25,6 +25,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')); + $smarty->assign('DISABLE_POOLNEWSLETTER', $setting->getValue('notifications_disable_pool_newsletter')); // Fetch user notification settings $aSettings = $notification->getNotificationSettings($_SESSION['USERDATA']['id']); diff --git a/public/include/pages/account/qrcode.inc.php b/public/include/pages/account/qrcode.inc.php index 3171ded7..6e30b898 100644 --- a/public/include/pages/account/qrcode.inc.php +++ b/public/include/pages/account/qrcode.inc.php @@ -1,5 +1,15 @@ isAuthenticated()) $smarty->assign("CONTENT", "default.tpl"); +switch($setting->getValue('acl_qrcode')) { +case '0': + if ($user->isAuthenticated()) { + $smarty->assign("CONTENT", "default.tpl"); + } + break; +case '1': + $_SESSION['POPUP'][] = array('CONTENT' => 'Page currently disabled. Please try again later.', 'TYPE' => 'alert alert-danger'); + $smarty->assign("CONTENT", ""); + break; +} ?> diff --git a/public/include/pages/admin/newsletter.inc.php b/public/include/pages/admin/newsletter.inc.php new file mode 100644 index 00000000..69204b01 --- /dev/null +++ b/public/include/pages/admin/newsletter.inc.php @@ -0,0 +1,41 @@ +isAuthenticated() || !$user->isAdmin($_SESSION['USERDATA']['id'])) { + header("HTTP/1.1 404 Page not found"); + die("404 Page not found"); +} + +// Include markdown library +use \Michelf\Markdown; + +if ($setting->getValue('notifications_disable_pool_newsletter', 0) == 1) { + $_SESSION['POPUP'][] = array('CONTENT' => 'Pool newsletters are disabled.', 'TYPE' => 'alert alert-info'); + $smarty->assign("CONTENT", ""); +} else { + if (@$_REQUEST['do'] == 'send') { + if (!$config['csrf']['enabled'] || $config['csrf']['enabled'] && $csrftoken->valid) { + $iFailed = 0; + $iSuccess = 0; + foreach ($user->getAllAssoc() as $aData) { + $aUserNotificationSettings = $notification->getNotificationSettings($aData['id']); + if ($aData['is_locked'] != 0 || $aUserNotificationSettings['newsletter'] != 1) continue; + $aData['subject'] = $_REQUEST['data']['subject']; + $aData['CONTENT'] = $_REQUEST['data']['content']; + if (!$mail->sendMail('newsletter/body', $aData, true)) { + $iFailed++; + } else { + $iSuccess++; + } + } + $_SESSION['POPUP'][] = array('CONTENT' => 'Newsletter sent to ' . $iSuccess . ' users.', 'TYPE' => 'alert alert-success'); + if ($iFailed > 0) + $_SESSION['POPUP'][] = array('CONTENT' => 'Failed to send e-mail to ' . $iFailed . ' users. ', 'TYPE' => 'alert alert-info'); + } else { + $_SESSION['POPUP'][] = array('CONTENT' => $csrftoken->getErrorWithDescriptionHTML(), 'TYPE' => 'alert alert-warning'); + } + } + $smarty->assign("CONTENT", "default.tpl"); +} +?> diff --git a/public/include/pages/api/getpoolstatus.inc.php b/public/include/pages/api/getpoolstatus.inc.php index 27512426..26abc851 100644 --- a/public/include/pages/api/getpoolstatus.inc.php +++ b/public/include/pages/api/getpoolstatus.inc.php @@ -34,6 +34,8 @@ if ($iCurrentPoolHashrate > $dNetworkHashrate) $dNetworkHashrate = $iCurrentPool // Time in seconds, not hours, using modifier in smarty to translate $iCurrentPoolHashrate > 0 ? $iEstTime = $dDifficulty * pow(2,32) / ($iCurrentPoolHashrate * 1000) : $iEstTime = 0; $iEstShares = $statistics->getEstimatedShares($dDifficulty); +// For mpos-bot PoolLuck +$iEstShares > 0 && $aShares['valid'] > 0 ? $dEstPercent = round(100 / $iEstShares * $aShares['valid'], 2) : $dEstPercent = 0; // Time since last $now = new DateTime( "now" ); @@ -48,6 +50,7 @@ $data = array( 'pool_name' => $setting->getValue('website_name'), 'hashrate' => $iCurrentPoolHashrate, 'efficiency' => $dEfficiency, + 'progress' => $dEstPercent, 'workers' => $worker->getCountAllActiveWorkers(), 'currentnetworkblock' => $iBlock, 'nextnetworkblock' => $iBlock + 1, diff --git a/public/include/pages/about/donors.inc.php b/public/include/pages/statistics/donors.inc.php similarity index 100% rename from public/include/pages/about/donors.inc.php rename to public/include/pages/statistics/donors.inc.php diff --git a/public/include/smarty_globals.inc.php b/public/include/smarty_globals.inc.php index bd5df5db..d19fd00b 100644 --- a/public/include/smarty_globals.inc.php +++ b/public/include/smarty_globals.inc.php @@ -133,6 +133,8 @@ $aGlobal['acl']['donors']['page'] = $setting->getValue('acl_donors_page'); $aGlobal['acl']['about']['page'] = $setting->getValue('acl_about_page'); $aGlobal['acl']['contactform'] = $setting->getValue('acl_contactform'); $aGlobal['acl']['chat']['page'] = $setting->getValue('acl_chat_page', 2); +$aGlobal['acl']['moot']['forum'] = $setting->getValue('acl_moot_forum', 2); +$aGlobal['acl']['qrcode'] = $setting->getValue('acl_qrcode'); // We don't want these session infos cached if (@$_SESSION['USERDATA']['id']) { diff --git a/public/site_assets/bootstrap/css/design/blue.css b/public/site_assets/bootstrap/css/design/blue.css index ea0c2532..284b7617 100644 --- a/public/site_assets/bootstrap/css/design/blue.css +++ b/public/site_assets/bootstrap/css/design/blue.css @@ -43,6 +43,10 @@ a:focus { border-color: #A2BCF5; } +.panel .panel-default { + background-color: #3E6CCF; +} + .lightblue { background-color: #3065D9; } diff --git a/public/site_assets/bootstrap/css/design/dark.css b/public/site_assets/bootstrap/css/design/dark.css index e7202765..7cf1e85b 100644 --- a/public/site_assets/bootstrap/css/design/dark.css +++ b/public/site_assets/bootstrap/css/design/dark.css @@ -43,6 +43,10 @@ a:focus { border-color: #222222; } +.panel .panel-default { + background-color: #D3D3D3; +} + .lightblue { background-color: #222222; } @@ -134,3 +138,7 @@ a:focus { .dropdown-menu { background-color: #D3D3D3; } + +.confirmations { + color: #F3FF12; +} diff --git a/public/site_assets/bootstrap/css/design/green.css b/public/site_assets/bootstrap/css/design/green.css index b79905b4..c9f5230f 100644 --- a/public/site_assets/bootstrap/css/design/green.css +++ b/public/site_assets/bootstrap/css/design/green.css @@ -43,6 +43,10 @@ a:focus { border-color: #167A1D; } +.panel .panel-default { + background-color: #65B058; +} + .lightblue { background-color: #167A1D; } diff --git a/public/site_assets/bootstrap/css/mpos.css b/public/site_assets/bootstrap/css/mpos.css index 6bec5713..d8cd9220 100644 --- a/public/site_assets/bootstrap/css/mpos.css +++ b/public/site_assets/bootstrap/css/mpos.css @@ -1,587 +1,623 @@ -/* Global Styles */ - -/* ------------------------------- */ - -body { - background-color: #f8f8f8; - min-width: 350px; - font-size: 12px; - /* Design constraint */ -} - -p { - font-size: 12px; -} - -/* Wrappers */ - -/* ------------------------------- */ - - #wrapper { - width: 100%; -} - -#page-wrapper { - padding: 0 15px; - min-height: 568px; - background-color: #fff; - font-size: 12px; -} - -@media(min-width:768px) { - #page-wrapper { - position: inherit; - margin: 0 0 0 250px; - padding: 0 30px; - min-height: 900px; - border-left: 1px solid #e7e7e7; - font-size: 12px; - } -} - -.navbar-static-side ul li { - border-bottom: 1px solid #e7e7e7; -} - - -/* Input fields */ - -/* ------------------------------- */ - -select, -textarea, -input[type="text"], -input[type="password"], -input[type="datetime"], -input[type="datetime-local"], -input[type="date"], -input[type="month"], -input[type="time"], -input[type="week"], -input[type="number"], -input[type="email"], -input[type="url"], -input[type="search"], -input[type="tel"], -input[type="color"], -.uneditable-input { - background-color: #ffffff; - padding: 4px 4px 4px 4px; - font-size: 11px; - color: #555555; - border: 1px solid #ccc; - height: 25px; - line-height: 25px; -} - -.input-group-sm > .form-control, -.input-group-sm > .input-group-addon, -.input-group-sm > .input-group-btn > .btn { - height: 25px; - font-size: 12px; -} - -.form-control { - font-size: 12px; -} - -.input-group .input-group-addon { - line-height: 1!important; - } - -.glyphicon{ - line-height: 1em; -} - -.select-mini, .input-group { - font-size: 11px; - height: 25px; -} - -/* Navigation */ - -/* ------------------------------- */ - -/* Top Right Navigation Dropdown Styles */ - -.navbar-top-links li { - display: inline-block; -} - -.navbar-top-links li:last-child { - margin-right: 15px; -} - -.navbar-top-links li a { - padding: 15px; - min-height: 50px; -} - -.dropdown-user { - min-width:100px; -} - -.navbar-top-links .dropdown-menu li { - display: block; -} - -.navbar-top-links .dropdown-menu li:last-child { - margin-right: 0; -} - -.navbar-top-links .dropdown-menu li a { - padding: 3px 20px; - min-height: 0; -} - -.navbar-top-links .dropdown-menu li a div { - white-space: normal; -} - -.navbar-top-links .dropdown-messages, -.navbar-top-links .dropdown-tasks, -.navbar-top-links .dropdown-alerts { - width: 310px; - min-width: 0; -} - -.navbar-top-links .dropdown-messages { - margin-left: 5px; -} - -.navbar-top-links .dropdown-tasks { - margin-left: -59px; -} - -.navbar-top-links .dropdown-alerts { - /*#margin-left: -123px; */ -} - -.navbar-top-links .dropdown-user { - right: 0; - left: auto; -} - -/* Sidebar Menu Styles */ - - .sidebar-search { - padding: 15px; -} - -.arrow { - float: right; -} - -.fa.arrow:before { - content: "\f104"; -} - -.active > a > .fa.arrow:before { - content: "\f107"; -} - -.nav-second-level li, -.nav-third-level li { - border-bottom: none !important; -} - -.nav-second-level li a { - padding-left: 37px; -} - -.nav-third-level li a { - padding-left: 52px; -} - -@media(min-width:768px) { - .navbar-static-side { - z-index: 1; - position: absolute; - width: 250px; - } - - .navbar-top-links .dropdown-messages, - .navbar-top-links .dropdown-tasks, - .navbar-top-links .dropdown-alerts { - margin-left: auto; - } -} - -.navbar-default .navbar-nav .open .dropdown-menu > li > a, -.navbar-default .navbar-nav .open .dropdown-menu { - font-size: 12px; -} - -.navbar-default .navbar-nav .open .dropdown-menu > li a:hover { - font-size: 12px; -} - -/* Buttons */ - -/* ------------------------------- */ - - .btn-outline { - color: inherit; - background-color: transparent; - transition: all .5s; -} - -.btn-primary.btn-outline { - color: #428bca; -} - -.btn-success.btn-outline { - color: #5cb85c; -} - -.btn-info.btn-outline { - color: #5bc0de; -} - -.btn-warning.btn-outline { - color: #f0ad4e; -} - -.btn-danger.btn-outline { - color: #d9534f; -} - -.btn-primary.btn-outline:hover, -.btn-success.btn-outline:hover, -.btn-info.btn-outline:hover, -.btn-warning.btn-outline:hover, -.btn-danger.btn-outline:hover { - color: #fff; -} - -/* Pages */ - -/* ------------------------------- */ - -/* Dashboard Chat */ - - .chat { - margin: 0; - padding: 0; - list-style: none; -} - -.chat li { - margin-bottom: 10px; - padding-bottom: 5px; - border-bottom: 1px dotted #B3A9A9; -} - -.chat li.left .chat-body { - margin-left: 60px; -} - -.chat li.right .chat-body { - margin-right: 60px; -} - -.chat li .chat-body p { - margin: 0; - color: #777777; -} - -.panel .slidedown .glyphicon, -.chat .glyphicon { - margin-right: 5px; -} - -.chat-panel .panel-body { - height: 350px; - overflow-y: scroll; -} - -/* Login Page */ - -.login-panel { - margin-top: 25%; -} - -/* Flot Chart Containers */ - -.flot-chart { - display: block; - height: 400px; -} - -.flot-chart-content { - width: 100%; - height: 100%; -} - -/* DataTables Overrides */ - -table.dataTable thead .sorting, -table.dataTable thead .sorting_asc:after, -table.dataTable thead .sorting_desc, -table.dataTable thead .sorting_asc_disabled, -table.dataTable thead .sorting_desc_disabled { - background: transparent; -} - -table.dataTable thead .sorting_asc:after { - content: "\f0de"; - float: right; - font-family: fontawesome; -} - -table.dataTable thead .sorting_desc:after { - content: "\f0dd"; - float: right; - font-family: fontawesome; -} - -table.dataTable thead .sorting:after { - content: "\f0dc"; - float: right; - font-family: fontawesome; - color: rgba(50,50,50,.5); -} - -.table { - width: 100%; - margin-bottom: 20px; - table-layout: fixed; - word-wrap: break-word; -} - -div.dataTables_length select { - font-size: 11px; - height: 25px; -} - -div.dataTables_filter input { - font-size: 11px; - height: 25px; -} - -div.dataTables_paginate { - font-size: 11px; -} - -div.dataTables_paginate ul.pagination { - font-size: 11px; +/* Global Styles */ -} - -/* Circle Buttons */ - - .btn-circle { - width: 30px; - height: 30px; - padding: 6px 0; - border-radius: 15px; - text-align: center; - font-size: 12px; - line-height: 1.428571429; -} - -.btn-circle.btn-lg { - width: 50px; - height: 50px; - padding: 10px 16px; - border-radius: 25px; - font-size: 18px; - line-height: 1.33; -} - -.btn-circle.btn-xl { - width: 70px; - height: 70px; - padding: 10px 16px; - border-radius: 35px; - font-size: 24px; - line-height: 1.33; -} - -.show-grid [class^="col-"] { - padding-top: 10px; - padding-bottom: 10px; - border: 1px solid #ddd; - background-color: #eee !important; -} - -.show-grid { - margin: 15px 0; -} - -/* No Padding for Tables */ - -.no-padding { - padding:0 -} - -.no-padding table { - margin: 0 -} - -.no-padding .table-bordered { - border: 0; -} - -.borderless > tbody > tr > td { - border: none; -} - -.borderless > thead > tr > th { - border: none; -} - -.footer { - clear: both; - text-align: center; - padding: 4px 0px 0px; - font-size: 11px; - width: 100%; -} - -.margin-bottom-sm { - margin-bottom: 5px !important; -} - -p.overview { - font-family: 'Open Sans',sans-serif; - font-weight: 600; - font-size: 11px; - text-transform: uppercase; - display: block; - margin-bottom: 4px; -} - -span.overview { - font-size: 14px; - font-weight: bold; -} - -div.overview { - margin: 20px 0px 0px; -} - -span.bigfont { - font-size: 100%; -} - -th.smallwidth { - width: 250px; -} - -.col-md-spark, .col-md-spark-2 { - position:relative; - min-height:1px; - padding-left:15px; - padding-right:15px -} - -@media (min-width:992px) { - .col-md-spark, .col-md-spark-2 { - float: left; - } - .col-md-spark { - width:16.65% - } - .col-md-spark-2 { - width:20% - } -} - -span.overview-mhs { - font-size: 11px; - font-weight: bold; -} - -div.black { - color: black; -} - -div.progress-fix { - margin: 0px 0px 5px 0px; -} - -span.spark-18 { - margin: -20%; -} - -span.spark-25 { - margin: -25%; -} - -/* Test Edit */ - -.circle-tile { - margin-bottom: 30px; -} - -.circle-tile { - margin-bottom: 15px; - text-align: center; -} - -.circle-tile-content { - padding-top: 50px; - border-radius: 8px; - border: 3px solid rgba(255, 255, 255, 0.3); -} - -.circle-tile-description { - font-weight: bold; - font-size: 16px; -} - -.circle-tile-number { - padding: 0px 1px 4px; -} - -.circle-tile-heading { - position: relative; - width: 80px; - height: 80px; - margin: 0px auto -40px; - border: 3px solid rgba(255, 255, 255, 0.3); - border-radius: 100%; - color: #FFF; - transition: all 0.3s ease-in-out 0s; -} - -.circle-tile-heading .fa { - line-height: 80px; -} - -.lightblue { - background-color: #2FAACE; -} - -.text-faded { - color: rgba(255, 255, 255, 0.7); -} - -.text-link { - color: #FFFFFF; -} - -p.up { - margin: -5px 0px -8px; - font-weight: 600; -} - -div.up { - margin: -10px 0px 6px 0px; -} - -p.up-more { - margin: -6px 0px 10px; - font-weight: 600; -} - -p.up-more2 { - margin: -6px 0px 0px; -} - -div.fade { - opacity: 0.8; -} - -/* End Test */ +/* ------------------------------- */ + +body { + background-color: #f8f8f8; + min-width: 350px; + font-size: 12px; + /* Design constraint */ +} + +p { + font-size: 12px; +} + +/* Wrappers */ + +/* ------------------------------- */ + + #wrapper { + width: 100%; +} + +#page-wrapper { + padding: 0 15px; + min-height: 568px; + background-color: #fff; + font-size: 12px; +} + +@media(min-width:768px) { + #page-wrapper { + position: inherit; + margin: 0 0 0 250px; + padding: 0 30px; + min-height: 900px; + border-left: 1px solid #e7e7e7; + font-size: 12px; + } +} + +.navbar-static-side ul li { + border-bottom: 1px solid #e7e7e7; +} + + +/* Input fields */ + +/* ------------------------------- */ + +select, +textarea, +input[type="text"], +input[type="password"], +input[type="datetime"], +input[type="datetime-local"], +input[type="date"], +input[type="month"], +input[type="time"], +input[type="week"], +input[type="number"], +input[type="email"], +input[type="url"], +input[type="search"], +input[type="tel"], +input[type="color"], +.uneditable-input { + background-color: #ffffff; + padding: 4px 4px 4px 4px; + font-size: 11px; + color: #555555; + border: 1px solid #ccc; + height: 25px; + line-height: 25px; +} + +.input-group-sm > .form-control, +.input-group-sm > .input-group-addon, +.input-group-sm > .input-group-btn > .btn { + height: 25px; + font-size: 12px; +} + +.form-control { + font-size: 12px; +} + +.input-group .input-group-addon { + line-height: 1!important; + } + +.glyphicon{ + line-height: 1em; +} + +.select-mini, .input-group { + font-size: 11px; + height: 25px; + padding: 3px; +} + +/* Navigation */ + +/* ------------------------------- */ + +/* Top Right Navigation Dropdown Styles */ + +.navbar-top-links li { + display: inline-block; +} + +.navbar-top-links li:last-child { + margin-right: 15px; +} + +.navbar-top-links li a { + padding: 15px; + min-height: 50px; +} + +.dropdown-user { + min-width:100px; +} + +.navbar-top-links .dropdown-menu li { + display: block; +} + +.navbar-top-links .dropdown-menu li:last-child { + margin-right: 0; +} + +.navbar-top-links .dropdown-menu li a { + padding: 3px 20px; + min-height: 0; +} + +.navbar-top-links .dropdown-menu li a div { + white-space: normal; +} + +.navbar-top-links .dropdown-messages, +.navbar-top-links .dropdown-tasks, +.navbar-top-links .dropdown-alerts { + width: 310px; + min-width: 0; +} + +.navbar-top-links .dropdown-messages { + margin-left: 5px; +} + +.navbar-top-links .dropdown-tasks { + margin-left: -59px; +} + +.navbar-top-links .dropdown-alerts { + /*#margin-left: -123px; */ +} + +.navbar-top-links .dropdown-user { + right: 0; + left: auto; +} + +/* Sidebar Menu Styles */ + +.sidebar-search { + padding: 15px; +} + +.arrow { + float: right; +} + +.fa.arrow:before { + content: "\f104"; +} + +.active > a > .fa.arrow:before { + content: "\f107"; +} + +.nav-second-level li, +.nav-third-level li { + border-bottom: none !important; +} + +.nav-second-level li a { + padding-left: 37px; +} + +.nav-third-level li a { + padding-left: 52px; +} + +@media(min-width:768px) { + .navbar-static-side { + z-index: 1; + position: absolute; + width: 250px; + } + + .navbar-top-links .dropdown-messages, + .navbar-top-links .dropdown-tasks, + .navbar-top-links .dropdown-alerts { + margin-left: auto; + } + .col-md-spark, .col-md-spark-2 { + float: left; + } + .col-md-spark { + width:16.65% + } + .col-md-spark-2 { + width:20% + } +} + +.navbar-default .navbar-nav .open .dropdown-menu > li > a, +.navbar-default .navbar-nav .open .dropdown-menu { + font-size: 12px; +} + +.navbar-default .navbar-nav .open .dropdown-menu > li a:hover { + font-size: 12px; +} + +/* Buttons */ + +/* ------------------------------- */ + +.btn-outline { + color: inherit; + background-color: transparent; + transition: all .5s; +} + +.btn-primary.btn-outline { + color: #428bca; +} + +.btn-success.btn-outline { + color: #5cb85c; +} + +.btn-info.btn-outline { + color: #5bc0de; +} + +.btn-warning.btn-outline { + color: #f0ad4e; +} + +.btn-danger.btn-outline { + color: #d9534f; +} + +.btn-primary.btn-outline:hover, +.btn-success.btn-outline:hover, +.btn-info.btn-outline:hover, +.btn-warning.btn-outline:hover, +.btn-danger.btn-outline:hover { + color: #fff; +} + +/* Pages */ + +/* ------------------------------- */ + +/* Dashboard Chat */ + +.chat { + margin: 0; + padding: 0; + list-style: none; +} + +.chat li { + margin-bottom: 10px; + padding-bottom: 5px; + border-bottom: 1px dotted #B3A9A9; +} + +.chat li.left .chat-body { + margin-left: 60px; +} + +.chat li.right .chat-body { + margin-right: 60px; +} + +.chat li .chat-body p { + margin: 0; + color: #777777; +} + +.panel .slidedown .glyphicon, +.chat .glyphicon { + margin-right: 5px; +} + +.chat-panel .panel-body { + height: 350px; + overflow-y: scroll; +} + +/* Login Page */ + +.login-panel { + margin-top: 25%; +} + +/* Flot Chart Containers */ + +.flot-chart { + display: block; + height: 400px; +} + +.flot-chart-content { + width: 100%; + height: 100%; +} + +/* DataTables Overrides */ + +table.dataTable thead .sorting, +table.dataTable thead .sorting_asc:after, +table.dataTable thead .sorting_desc, +table.dataTable thead .sorting_asc_disabled, +table.dataTable thead .sorting_desc_disabled { + background: transparent; +} + +table.dataTable thead .sorting_asc:after { + content: "\f0de"; + float: right; + font-family: fontawesome; +} + +table.dataTable thead .sorting_desc:after { + content: "\f0dd"; + float: right; + font-family: fontawesome; +} + +table.dataTable thead .sorting:after { + content: "\f0dc"; + float: right; + font-family: fontawesome; + color: rgba(50,50,50,.5); +} + +div.dataTables_length select { + font-size: 11px; + height: 25px; +} + +div.dataTables_filter input { + font-size: 11px; + height: 25px; +} + +div.dataTables_paginate { + font-size: 11px; +} + +div.dataTables_paginate ul.pagination { + font-size: 11px; + +} + +/* Circle Buttons */ + + .btn-circle { + width: 30px; + height: 30px; + padding: 6px 0; + border-radius: 15px; + text-align: center; + font-size: 12px; + line-height: 1.428571429; +} + +.btn-circle.btn-lg { + width: 50px; + height: 50px; + padding: 10px 16px; + border-radius: 25px; + font-size: 18px; + line-height: 1.33; +} + +.btn-circle.btn-xl { + width: 70px; + height: 70px; + padding: 10px 16px; + border-radius: 35px; + font-size: 24px; + line-height: 1.33; +} + +.show-grid [class^="col-"] { + padding-top: 10px; + padding-bottom: 10px; + border: 1px solid #ddd; + background-color: #eee !important; +} + +.show-grid { + margin: 15px 0; +} + +/* No Padding for Tables */ + +.no-padding { + padding:0 +} + +.no-padding table { + margin: 0 +} + +.no-padding .table-bordered { + border: 0; +} + +.borderless > tbody > tr > td { + border: none; + padding: 5px; +} + +.borderless > thead > tr > th { + border: none; +} + +.margin-bottom-sm { + margin-bottom: 5px !important; +} + +p.overview { + font-family: 'Open Sans',sans-serif; + font-weight: 600; + font-size: 11px; + text-transform: uppercase; + display: block; + margin-bottom: 4px; +} + +span.overview { + font-size: 14px; + font-weight: bold; +} + +div.overview { + margin: 20px 0px 0px; +} + +span.bigfont { + font-size: 100%; +} + +th.smallwidth { + width: 250px; +} + +.col-md-spark, .col-md-spark-2 { + position:relative; + min-height:1px; + padding-left:15px; + padding-right:15px +} + +span.overview-mhs { + font-size: 11px; + font-weight: bold; +} + +div.black { + color: black; +} + +div.progress-fix { + margin: 0px 0px 5px 0px; +} + +span.spark-18 { + margin: -20%; +} + +span.spark-25 { + margin: -25%; +} + +/* Test Edit */ + +.circle-tile { + margin-bottom: 30px; +} + +.circle-tile { + margin-bottom: 15px; + text-align: center; +} + +.circle-tile-content { + padding-top: 50px; + border-radius: 8px; + border: 3px solid rgba(255, 255, 255, 0.3); +} + +.circle-tile-description { + font-weight: bold; + font-size: 16px; +} + +.circle-tile-number { + padding: 0px 1px 4px; +} + +.circle-tile-heading { + position: relative; + width: 80px; + height: 80px; + margin: 0px auto -40px; + border: 3px solid rgba(255, 255, 255, 0.3); + border-radius: 100%; + color: #FFF; + transition: all 0.3s ease-in-out 0s; +} + +.circle-tile-heading .fa { + line-height: 80px; +} + +.lightblue { + background-color: #2FAACE; +} + +.text-faded { + color: rgba(255, 255, 255, 0.7); +} + +.text-link { + color: #FFFFFF; +} + +p.up { + margin: -5px 0px -8px; + font-weight: 600; +} + +div.up { + margin: -10px 0px 6px 0px; +} + +p.up-more { + margin: -6px 0px 10px; + font-weight: 600; +} + +p.up-more2 { + margin: -6px 0px 0px; +} + +div.fade { + opacity: 0.8; +} + +/* End Test */ + +/* Tables */ + +.table>tbody>tr>th +{ + padding-left:3px; + padding-bottom:3px; + border: 1px solid #ddd; + background-color: #f9f9f9; + padding-right:1px; +} + +.table > tbody > tr > td +{ + padding:4px; +} + +.panel > .table, +.panel > .table-responsive > .table { + margin-bottom: 0; +} + +.table-responsive +{ + white-space: nowrap; + width: 100%; + margin-bottom: 15px; + overflow-x: scroll; + overflow-y: hidden; + -webkit-overflow-scrolling: touch; + -ms-overflow-style: -ms-autohiding-scrollbar; +} + +/* End Tables */ + +/* Footer */ + + +.footer { + clear: both; + text-align: center; + padding: 4px 0px 0px; + font-size: 11px; + width: 100%; + margin-bottom: 5px !important; +} + +.confirmations { + color: #F79D00; +} + +/* End Footer */ diff --git a/public/site_assets/bootstrap/js/jquery.md5.js b/public/site_assets/bootstrap/js/jquery.md5.js new file mode 100644 index 00000000..bf9bbe97 --- /dev/null +++ b/public/site_assets/bootstrap/js/jquery.md5.js @@ -0,0 +1,269 @@ +/* + * jQuery MD5 Plugin 1.2.1 + * https://github.com/blueimp/jQuery-MD5 + * + * Copyright 2010, Sebastian Tschan + * https://blueimp.net + * + * Licensed under the MIT license: + * http://creativecommons.org/licenses/MIT/ + * + * Based on + * A JavaScript implementation of the RSA Data Security, Inc. MD5 Message + * Digest Algorithm, as defined in RFC 1321. + * Version 2.2 Copyright (C) Paul Johnston 1999 - 2009 + * Other contributors: Greg Holt, Andrew Kepert, Ydnar, Lostinet + * Distributed under the BSD License + * See http://pajhome.org.uk/crypt/md5 for more info. + */ + +/*jslint bitwise: true */ +/*global unescape, jQuery */ + +(function ($) { + 'use strict'; + + /* + * Add integers, wrapping at 2^32. This uses 16-bit operations internally + * to work around bugs in some JS interpreters. + */ + function safe_add(x, y) { + var lsw = (x & 0xFFFF) + (y & 0xFFFF), + msw = (x >> 16) + (y >> 16) + (lsw >> 16); + return (msw << 16) | (lsw & 0xFFFF); + } + + /* + * Bitwise rotate a 32-bit number to the left. + */ + function bit_rol(num, cnt) { + return (num << cnt) | (num >>> (32 - cnt)); + } + + /* + * These functions implement the four basic operations the algorithm uses. + */ + function md5_cmn(q, a, b, x, s, t) { + return safe_add(bit_rol(safe_add(safe_add(a, q), safe_add(x, t)), s), b); + } + function md5_ff(a, b, c, d, x, s, t) { + return md5_cmn((b & c) | ((~b) & d), a, b, x, s, t); + } + function md5_gg(a, b, c, d, x, s, t) { + return md5_cmn((b & d) | (c & (~d)), a, b, x, s, t); + } + function md5_hh(a, b, c, d, x, s, t) { + return md5_cmn(b ^ c ^ d, a, b, x, s, t); + } + function md5_ii(a, b, c, d, x, s, t) { + return md5_cmn(c ^ (b | (~d)), a, b, x, s, t); + } + + /* + * Calculate the MD5 of an array of little-endian words, and a bit length. + */ + function binl_md5(x, len) { + /* append padding */ + x[len >> 5] |= 0x80 << ((len) % 32); + x[(((len + 64) >>> 9) << 4) + 14] = len; + + var i, olda, oldb, oldc, oldd, + a = 1732584193, + b = -271733879, + c = -1732584194, + d = 271733878; + + for (i = 0; i < x.length; i += 16) { + olda = a; + oldb = b; + oldc = c; + oldd = d; + + a = md5_ff(a, b, c, d, x[i], 7, -680876936); + d = md5_ff(d, a, b, c, x[i + 1], 12, -389564586); + c = md5_ff(c, d, a, b, x[i + 2], 17, 606105819); + b = md5_ff(b, c, d, a, x[i + 3], 22, -1044525330); + a = md5_ff(a, b, c, d, x[i + 4], 7, -176418897); + d = md5_ff(d, a, b, c, x[i + 5], 12, 1200080426); + c = md5_ff(c, d, a, b, x[i + 6], 17, -1473231341); + b = md5_ff(b, c, d, a, x[i + 7], 22, -45705983); + a = md5_ff(a, b, c, d, x[i + 8], 7, 1770035416); + d = md5_ff(d, a, b, c, x[i + 9], 12, -1958414417); + c = md5_ff(c, d, a, b, x[i + 10], 17, -42063); + b = md5_ff(b, c, d, a, x[i + 11], 22, -1990404162); + a = md5_ff(a, b, c, d, x[i + 12], 7, 1804603682); + d = md5_ff(d, a, b, c, x[i + 13], 12, -40341101); + c = md5_ff(c, d, a, b, x[i + 14], 17, -1502002290); + b = md5_ff(b, c, d, a, x[i + 15], 22, 1236535329); + + a = md5_gg(a, b, c, d, x[i + 1], 5, -165796510); + d = md5_gg(d, a, b, c, x[i + 6], 9, -1069501632); + c = md5_gg(c, d, a, b, x[i + 11], 14, 643717713); + b = md5_gg(b, c, d, a, x[i], 20, -373897302); + a = md5_gg(a, b, c, d, x[i + 5], 5, -701558691); + d = md5_gg(d, a, b, c, x[i + 10], 9, 38016083); + c = md5_gg(c, d, a, b, x[i + 15], 14, -660478335); + b = md5_gg(b, c, d, a, x[i + 4], 20, -405537848); + a = md5_gg(a, b, c, d, x[i + 9], 5, 568446438); + d = md5_gg(d, a, b, c, x[i + 14], 9, -1019803690); + c = md5_gg(c, d, a, b, x[i + 3], 14, -187363961); + b = md5_gg(b, c, d, a, x[i + 8], 20, 1163531501); + a = md5_gg(a, b, c, d, x[i + 13], 5, -1444681467); + d = md5_gg(d, a, b, c, x[i + 2], 9, -51403784); + c = md5_gg(c, d, a, b, x[i + 7], 14, 1735328473); + b = md5_gg(b, c, d, a, x[i + 12], 20, -1926607734); + + a = md5_hh(a, b, c, d, x[i + 5], 4, -378558); + d = md5_hh(d, a, b, c, x[i + 8], 11, -2022574463); + c = md5_hh(c, d, a, b, x[i + 11], 16, 1839030562); + b = md5_hh(b, c, d, a, x[i + 14], 23, -35309556); + a = md5_hh(a, b, c, d, x[i + 1], 4, -1530992060); + d = md5_hh(d, a, b, c, x[i + 4], 11, 1272893353); + c = md5_hh(c, d, a, b, x[i + 7], 16, -155497632); + b = md5_hh(b, c, d, a, x[i + 10], 23, -1094730640); + a = md5_hh(a, b, c, d, x[i + 13], 4, 681279174); + d = md5_hh(d, a, b, c, x[i], 11, -358537222); + c = md5_hh(c, d, a, b, x[i + 3], 16, -722521979); + b = md5_hh(b, c, d, a, x[i + 6], 23, 76029189); + a = md5_hh(a, b, c, d, x[i + 9], 4, -640364487); + d = md5_hh(d, a, b, c, x[i + 12], 11, -421815835); + c = md5_hh(c, d, a, b, x[i + 15], 16, 530742520); + b = md5_hh(b, c, d, a, x[i + 2], 23, -995338651); + + a = md5_ii(a, b, c, d, x[i], 6, -198630844); + d = md5_ii(d, a, b, c, x[i + 7], 10, 1126891415); + c = md5_ii(c, d, a, b, x[i + 14], 15, -1416354905); + b = md5_ii(b, c, d, a, x[i + 5], 21, -57434055); + a = md5_ii(a, b, c, d, x[i + 12], 6, 1700485571); + d = md5_ii(d, a, b, c, x[i + 3], 10, -1894986606); + c = md5_ii(c, d, a, b, x[i + 10], 15, -1051523); + b = md5_ii(b, c, d, a, x[i + 1], 21, -2054922799); + a = md5_ii(a, b, c, d, x[i + 8], 6, 1873313359); + d = md5_ii(d, a, b, c, x[i + 15], 10, -30611744); + c = md5_ii(c, d, a, b, x[i + 6], 15, -1560198380); + b = md5_ii(b, c, d, a, x[i + 13], 21, 1309151649); + a = md5_ii(a, b, c, d, x[i + 4], 6, -145523070); + d = md5_ii(d, a, b, c, x[i + 11], 10, -1120210379); + c = md5_ii(c, d, a, b, x[i + 2], 15, 718787259); + b = md5_ii(b, c, d, a, x[i + 9], 21, -343485551); + + a = safe_add(a, olda); + b = safe_add(b, oldb); + c = safe_add(c, oldc); + d = safe_add(d, oldd); + } + return [a, b, c, d]; + } + + /* + * Convert an array of little-endian words to a string + */ + function binl2rstr(input) { + var i, + output = ''; + for (i = 0; i < input.length * 32; i += 8) { + output += String.fromCharCode((input[i >> 5] >>> (i % 32)) & 0xFF); + } + return output; + } + + /* + * Convert a raw string to an array of little-endian words + * Characters >255 have their high-byte silently ignored. + */ + function rstr2binl(input) { + var i, + output = []; + output[(input.length >> 2) - 1] = undefined; + for (i = 0; i < output.length; i += 1) { + output[i] = 0; + } + for (i = 0; i < input.length * 8; i += 8) { + output[i >> 5] |= (input.charCodeAt(i / 8) & 0xFF) << (i % 32); + } + return output; + } + + /* + * Calculate the MD5 of a raw string + */ + function rstr_md5(s) { + return binl2rstr(binl_md5(rstr2binl(s), s.length * 8)); + } + + /* + * Calculate the HMAC-MD5, of a key and some data (raw strings) + */ + function rstr_hmac_md5(key, data) { + var i, + bkey = rstr2binl(key), + ipad = [], + opad = [], + hash; + ipad[15] = opad[15] = undefined; + if (bkey.length > 16) { + bkey = binl_md5(bkey, key.length * 8); + } + for (i = 0; i < 16; i += 1) { + ipad[i] = bkey[i] ^ 0x36363636; + opad[i] = bkey[i] ^ 0x5C5C5C5C; + } + hash = binl_md5(ipad.concat(rstr2binl(data)), 512 + data.length * 8); + return binl2rstr(binl_md5(opad.concat(hash), 512 + 128)); + } + + /* + * Convert a raw string to a hex string + */ + function rstr2hex(input) { + var hex_tab = '0123456789abcdef', + output = '', + x, + i; + for (i = 0; i < input.length; i += 1) { + x = input.charCodeAt(i); + output += hex_tab.charAt((x >>> 4) & 0x0F) + + hex_tab.charAt(x & 0x0F); + } + return output; + } + + /* + * Encode a string as utf-8 + */ + function str2rstr_utf8(input) { + return unescape(encodeURIComponent(input)); + } + + /* + * Take string arguments and return either raw or hex encoded strings + */ + function raw_md5(s) { + return rstr_md5(str2rstr_utf8(s)); + } + function hex_md5(s) { + return rstr2hex(raw_md5(s)); + } + function raw_hmac_md5(k, d) { + return rstr_hmac_md5(str2rstr_utf8(k), str2rstr_utf8(d)); + } + function hex_hmac_md5(k, d) { + return rstr2hex(raw_hmac_md5(k, d)); + } + + $.md5 = function (string, key, raw) { + if (!key) { + if (!raw) { + return hex_md5(string); + } else { + return raw_md5(string); + } + } + if (!raw) { + return hex_hmac_md5(key, string); + } else { + return raw_hmac_md5(key, string); + } + }; + +}(typeof jQuery === 'function' ? jQuery : this)); \ No newline at end of file diff --git a/public/site_assets/bootstrap/js/mpos.js b/public/site_assets/bootstrap/js/mpos.js index 36ac5f54..830319f4 100644 --- a/public/site_assets/bootstrap/js/mpos.js +++ b/public/site_assets/bootstrap/js/mpos.js @@ -22,7 +22,38 @@ $(document).ready(function() { // Bootstrap iOS style switches for checkboxes with switch class $('.switch').bootstrapSwitch(); + + if (document.getElementById("motd")) { + var md5motd = $.md5(document.getElementById('motd').innerHTML); + // Check if MOTD alert has been closed + //alert(md5motd); + if( $.cookie('motd-box') === md5motd ){ + $('#motd').hide(); + //alert('hidden'); + } + } + + if (document.getElementById("lastlogin")) { + var md5lastlogin = $.md5(document.getElementById('lastlogin').innerHTML); + // Check if lastlogin alert has been closed + //alert(md5lastlogin); + if( $.cookie('lastlogin-box') === md5lastlogin ){ + $('#lastlogin').hide(); + //alert('hidden'); + } + + } + if (document.getElementById("backend")) { + var md5backend = $.md5(document.getElementById('backend').innerHTML); + // Check if Backend Issues alert has been closed + //alert(md5backend); + if( $.cookie('backend-box') === md5backend ){ + $('#backend').hide(); + //alert('hidden'); + } + } + }); $(function() { @@ -38,29 +69,19 @@ $(function() { }, hide_delay + hide_next*index); }); - // Check if lastlogin alert has been closed - if( $.cookie('lastlogin-box') === 'closed' ){ - $('#lastlogin').hide(); - } - // Check if MOTD alert has been closed - if( $.cookie('motd-box') === 'closed' ){ - $('#motd').hide(); - } - // Check if Backend Issues alert has been closed - if( $.cookie('backend-box') === 'closed' ){ - $('#backend').hide(); - } - // Grab your button (based on your posted html) $('.close').click(function( e ){ e.preventDefault(); //alert($(this).attr("id")); if ($(this).attr("id") === 'motd') { - $.cookie('motd-box', 'closed', { path: '/' }); + var md5motd = $.md5(document.getElementById('motd').innerHTML); + $.cookie('motd-box', md5motd, { path: '/' }); } else if ($(this).attr("id") === 'lastlogin') { - $.cookie('lastlogin-box', 'closed', { path: '/' }); + var md5lastlogin = $.md5(document.getElementById('lastlogin').innerHTML); + $.cookie('lastlogin-box', md5lastlogin, { path: '/' }); } else if ($(this).attr("id") === 'backend') { - $.cookie('backend-box', 'closed', { path: '/' }); + var md5backend = $.md5(document.getElementById('backend').innerHTML); + $.cookie('backend-box', md5backend, { path: '/' }); } else { //alert($(this).attr("id")); } diff --git a/public/site_assets/bootstrap/js/plugins/metisMenu/jquery.metisMenu.js b/public/site_assets/bootstrap/js/plugins/metisMenu/jquery.metisMenu.js index 36a8098d..69db8208 100644 --- a/public/site_assets/bootstrap/js/plugins/metisMenu/jquery.metisMenu.js +++ b/public/site_assets/bootstrap/js/plugins/metisMenu/jquery.metisMenu.js @@ -1,3 +1,10 @@ +/** +* metisMenu v1.0.1 +* Author : Osman Nuri Okumuş +* Copyright 2014 +* Licensed under MIT +*/ + ;(function ($, window, document, undefined) { var pluginName = "metisMenu", @@ -42,4 +49,4 @@ }); }; -})(jQuery, window, document); +})(jQuery, window, document); \ No newline at end of file diff --git a/public/templates/bootstrap/about/moot/default.tpl b/public/templates/bootstrap/about/moot/default.tpl new file mode 100644 index 00000000..c066cdcd --- /dev/null +++ b/public/templates/bootstrap/about/moot/default.tpl @@ -0,0 +1,15 @@ +
+
+
+
+ Moot Forum +
+ +
+
+
diff --git a/public/templates/bootstrap/about/moot/disabled.tpl b/public/templates/bootstrap/about/moot/disabled.tpl new file mode 100644 index 00000000..573541ac --- /dev/null +++ b/public/templates/bootstrap/about/moot/disabled.tpl @@ -0,0 +1 @@ +0 diff --git a/public/templates/bootstrap/about/pool/default.tpl b/public/templates/bootstrap/about/pool/default.tpl index a3a94c5d..92559fc1 100644 --- a/public/templates/bootstrap/about/pool/default.tpl +++ b/public/templates/bootstrap/about/pool/default.tpl @@ -18,7 +18,7 @@
  • Q: What is a Orphan Block?
  •  A: Coins generated by a block will not be available to you right away. They will take some time to be confirmed by the entire network before you are allowed to transfer them out of the pool. Usually coins have a confirmation set to 120. What that actually means: the network (not the pool) has to discover 120 additional blocks on top of the one found by the pool to confirm it.

    -
  • Q: What is estimated paypout?
  • +
  • Q: What is estimated payout?
  •  A: Estimated Payout is your Estimated payout if a block is found at that time. This is an estimate according to your amount of shares submitted for the round(s).

  • Q: What is Pool-variance?
  • diff --git a/public/templates/bootstrap/account/earnings/default.tpl b/public/templates/bootstrap/account/earnings/default.tpl index f783d452..dab7af0e 100644 --- a/public/templates/bootstrap/account/earnings/default.tpl +++ b/public/templates/bootstrap/account/earnings/default.tpl @@ -10,12 +10,13 @@
    - All Time + Summary
    + {foreach $SUMMARY as $type=>$total} {/foreach} @@ -23,6 +24,7 @@ + {foreach $SUMMARY as $type=>$total} {/foreach} @@ -44,7 +46,7 @@
    {$type}
    All Time{$total|number_format:"8"}
    - + @@ -58,7 +60,7 @@ - @@ -70,7 +72,7 @@ - @@ -82,7 +84,7 @@ - @@ -94,7 +96,7 @@ - @@ -106,7 +108,7 @@ - @@ -123,7 +125,6 @@ - diff --git a/public/templates/bootstrap/account/edit/cashout.tpl b/public/templates/bootstrap/account/edit/cashout.tpl index 8a853351..1008fda9 100644 --- a/public/templates/bootstrap/account/edit/cashout.tpl +++ b/public/templates/bootstrap/account/edit/cashout.tpl @@ -28,7 +28,7 @@ {nocache}{/nocache}
    - +
    diff --git a/public/templates/bootstrap/account/edit/detail.tpl b/public/templates/bootstrap/account/edit/detail.tpl index 35049d54..6ca4d131 100644 --- a/public/templates/bootstrap/account/edit/detail.tpl +++ b/public/templates/bootstrap/account/edit/detail.tpl @@ -54,7 +54,7 @@ Hide username on website from others. Admins can still get your user information.
    - + The 4 digit PIN you chose when registering
    diff --git a/public/templates/bootstrap/account/edit/password.tpl b/public/templates/bootstrap/account/edit/password.tpl index fa3d23e6..6110a543 100644 --- a/public/templates/bootstrap/account/edit/password.tpl +++ b/public/templates/bootstrap/account/edit/password.tpl @@ -31,7 +31,7 @@ {nocache}{/nocache}
    - +
    diff --git a/public/templates/bootstrap/account/notifications/default.tpl b/public/templates/bootstrap/account/notifications/default.tpl index ab2fedea..f1fa1a0d 100644 --- a/public/templates/bootstrap/account/notifications/default.tpl +++ b/public/templates/bootstrap/account/notifications/default.tpl @@ -50,6 +50,17 @@ + {if $DISABLE_POOLNEWSLETTER|default:"" != 1} + + + + + {/if}
    Credit Bonus Debit AP
    Last Hour + Last Hour {$BYTIME.1HourCredit|number_format:"8"} {$BYTIME.1HourBonus|number_format:"8"} {$BYTIME.1HourDebitAP|number_format:"8"}{$BYTIME.1HourTXFee|number_format:"8"}
    Last Day + Last Day {$BYTIME.24HourCredit|number_format:"8"} {$BYTIME.24HourBonus|number_format:"8"} {$BYTIME.24HourDebitAP|number_format:"8"}{$BYTIME.24HourTXFee|number_format:"8"}
    Last Week + Last Week {$BYTIME.1WeekCredit|number_format:"8"} {$BYTIME.1WeekBonus|number_format:"8"} {$BYTIME.1WeekDebitAP|number_format:"8"}{$BYTIME.1WeekTXFee|number_format:"8"}
    Last Month + Last Month {$BYTIME.1MonthCredit|number_format:"8"} {$BYTIME.1MonthBonus|number_format:"8"} {$BYTIME.1MonthDebitAP|number_format:"8"}{$BYTIME.1MonthTXFee|number_format:"8"}
    Last Year + Last Year {$BYTIME.1YearCredit|number_format:"8"} {$BYTIME.1YearBonus|number_format:"8"} {$BYTIME.1YearDebitAP|number_format:"8"}
    + + + + +
    - \ No newline at end of file + diff --git a/public/templates/bootstrap/about/donors/disabled.tpl b/public/templates/bootstrap/account/qrcode/disabled.tpl old mode 100644 new mode 100755 similarity index 100% rename from public/templates/bootstrap/about/donors/disabled.tpl rename to public/templates/bootstrap/account/qrcode/disabled.tpl diff --git a/public/templates/bootstrap/account/transactions/default.tpl b/public/templates/bootstrap/account/transactions/default.tpl index 9cfdff13..5ba392b4 100644 --- a/public/templates/bootstrap/account/transactions/default.tpl +++ b/public/templates/bootstrap/account/transactions/default.tpl @@ -1,5 +1,5 @@
    -
    + @@ -31,14 +31,14 @@
    -
    +
    Transaction History
    - +
    @@ -54,10 +54,10 @@ {section transaction $TRANSACTIONS} - - - - + + + - + {if ! $GLOBAL.website.transactionexplorer.disabled} - + {else} - + {/if} - - + + {/section} diff --git a/public/templates/bootstrap/account/workers/default.tpl b/public/templates/bootstrap/account/workers/default.tpl index 8ca7e40a..6a6dbc8b 100644 --- a/public/templates/bootstrap/account/workers/default.tpl +++ b/public/templates/bootstrap/account/workers/default.tpl @@ -42,7 +42,7 @@ - {if $GLOBAL.config.disable_notifications != 1 && $DISABLE_IDLEWORKERNOTIFICATIONS != 1}{/if} + {if $GLOBAL.config.disable_notifications != 1 && $DISABLE_IDLEWORKERNOTIFICATIONS != 1}{/if} @@ -62,7 +62,7 @@ {if $GLOBAL.config.disable_notifications != 1 && $DISABLE_IDLEWORKERNOTIFICATIONS != 1} - diff --git a/public/templates/bootstrap/admin/invitations/default.tpl b/public/templates/bootstrap/admin/invitations/default.tpl index e31c44b5..a49afeb6 100644 --- a/public/templates/bootstrap/admin/invitations/default.tpl +++ b/public/templates/bootstrap/admin/invitations/default.tpl @@ -31,8 +31,8 @@ - + @@ -25,7 +25,7 @@ - + {/section} @@ -35,8 +35,8 @@ -{/nocache} \ No newline at end of file +{/nocache} diff --git a/public/templates/bootstrap/admin/transactions/default.tpl b/public/templates/bootstrap/admin/transactions/default.tpl index cf2cf547..27a159ae 100644 --- a/public/templates/bootstrap/admin/transactions/default.tpl +++ b/public/templates/bootstrap/admin/transactions/default.tpl @@ -7,7 +7,7 @@
    -
    ID
    {$TRANSACTIONS[transaction].id}{$TRANSACTIONS[transaction].timestamp}{$TRANSACTIONS[transaction].type} + {$TRANSACTIONS[transaction].id}{$TRANSACTIONS[transaction].timestamp}{$TRANSACTIONS[transaction].type} {if $TRANSACTIONS[transaction].type == 'Credit_PPS' OR $TRANSACTIONS[transaction].type == 'Fee_PPS' OR $TRANSACTIONS[transaction].type == 'Donation_PPS' OR @@ -73,14 +73,14 @@ Unconfirmed {/if} {$TRANSACTIONS[transaction].coin_address|truncate:20:"...":true:true}{$TRANSACTIONS[transaction].coin_address|truncate:20:"...":true:true}{$TRANSACTIONS[transaction].txid|truncate:20:"...":true:true}{$TRANSACTIONS[transaction].txid|truncate:20:"...":true:true}{$TRANSACTIONS[transaction].txid|truncate:20:"...":true:true}{$TRANSACTIONS[transaction].txid|truncate:20:"...":true:true}{if $TRANSACTIONS[transaction].height == 0}n/a{else}{$TRANSACTIONS[transaction].height}{/if}{$TRANSACTIONS[transaction].amount|number_format:"8"}{if $TRANSACTIONS[transaction].height == 0}n/a{else}{$TRANSACTIONS[transaction].height}{/if}{$TRANSACTIONS[transaction].amount|number_format:"8"}
    Worker Login Worker Password ActiveMonitorMonitorKhash/s Difficulty Action + eMail Reg. Date InviteInvited fromInvited From
    {$LASTREGISTEREDUSERS[user].mposuser} {$LASTREGISTEREDUSERS[user].email} {$LASTREGISTEREDUSERS[user].signup_timestamp|date_format:"%d/%m %H:%M:%S"}{if !$LASTREGISTEREDUSERS[user].inviter}{else}{/if}{if !$LASTREGISTEREDUSERS[user].inviter}{else}{/if} {$LASTREGISTEREDUSERS[user].inviter}
    +
    {foreach $SUMMARY as $type=>$total} @@ -31,7 +31,7 @@ {/if}
    -
    + @@ -73,14 +73,14 @@ -
    +
    Transaction History
    -
    +
    @@ -97,11 +97,11 @@ {section transaction $TRANSACTIONS} - - - - - + + + + - + {if ! $GLOBAL.website.transactionexplorer.disabled} - + {else} - + {/if} - - + + {/section} diff --git a/public/templates/bootstrap/admin/user/default.tpl b/public/templates/bootstrap/admin/user/default.tpl index 1abd3eae..8853efc5 100644 --- a/public/templates/bootstrap/admin/user/default.tpl +++ b/public/templates/bootstrap/admin/user/default.tpl @@ -88,7 +88,7 @@ - + {if $GLOBAL.config.payout_system != 'pps'} @@ -109,31 +109,31 @@ {nocache} {section name=user loop=$USERS|default} - - - - - + + + + + {if $GLOBAL.config.payout_system != 'pps'} - - + + {else} - + {/if} - - - - + + + - - - + - - + + - + - + @@ -45,11 +45,11 @@ 0.00% {/if} - + - + @@ -70,11 +70,11 @@ 0.00% {/if} - + - + @@ -95,11 +95,11 @@ 0.00% {/if} - + - + @@ -120,11 +120,11 @@ 0.00% {/if} - + - + @@ -145,11 +145,11 @@ 0.00% {/if} - + - + @@ -170,7 +170,7 @@ 0.00% {/if} - + @@ -178,7 +178,7 @@ diff --git a/public/templates/bootstrap/statistics/blocks/blocks_found_details.tpl b/public/templates/bootstrap/statistics/blocks/blocks_found_details.tpl index d223ee68..53c0cf72 100644 --- a/public/templates/bootstrap/statistics/blocks/blocks_found_details.tpl +++ b/public/templates/bootstrap/statistics/blocks/blocks_found_details.tpl @@ -9,7 +9,7 @@
    ID
    {$TRANSACTIONS[transaction].id}{$TRANSACTIONS[transaction].username}{$TRANSACTIONS[transaction].timestamp}{$TRANSACTIONS[transaction].type} + {$TRANSACTIONS[transaction].id}{$TRANSACTIONS[transaction].username}{$TRANSACTIONS[transaction].timestamp}{$TRANSACTIONS[transaction].type} {if $TRANSACTIONS[transaction].type == 'Credit_PPS' OR $TRANSACTIONS[transaction].type == 'Fee_PPS' OR $TRANSACTIONS[transaction].type == 'Donation_PPS' OR @@ -113,14 +113,14 @@ {else if $TRANSACTIONS[transaction].confirmations == -1}Orphaned {else}Unconfirmed{/if} {$TRANSACTIONS[transaction].coin_address|truncate:20:"...":true:true}{$TRANSACTIONS[transaction].coin_address|truncate:20:"...":true:true}{$TRANSACTIONS[transaction].txid|truncate:20:"...":true:true}{$TRANSACTIONS[transaction].txid|truncate:20:"...":true:true}{$TRANSACTIONS[transaction].txid|truncate:20:"...":true:true}{$TRANSACTIONS[transaction].txid|truncate:20:"...":true:true}{if $TRANSACTIONS[transaction].height == 0}n/a{else}{/if}{$TRANSACTIONS[transaction].height}{$TRANSACTIONS[transaction].amount|number_format:"8"}{if $TRANSACTIONS[transaction].height == 0}n/a{else}{/if}{$TRANSACTIONS[transaction].height}{$TRANSACTIONS[transaction].amount|number_format:"8"}
    ID UsernameE-MaileMail Shares Hashrate
    {$USERS[user].id}{$USERS[user].username|escape}{$USERS[user].email|escape}{$USERS[user].shares.valid}{$USERS[user].hashrate}{$USERS[user].id}{$USERS[user].username|escape}{$USERS[user].email|escape}{$USERS[user].shares.valid}{$USERS[user].hashrate}{$USERS[user].estimates.donation|number_format:"8"}{$USERS[user].estimates.payout|number_format:"8"}{$USERS[user].estimates.donation|number_format:"8"}{$USERS[user].estimates.payout|number_format:"8"}{$USERS[user].estimates.hours24|number_format:"8"}{$USERS[user].estimates.hours24|number_format:"8"}{$USERS[user].balance|number_format:"8"}{$USERS[user].signup_timestamp|date_format:"%d/%m %H:%M:%S"}{$USERS[user].last_login|date_format:"%d/%m %H:%M:%S"} + {$USERS[user].balance|number_format:"8"}{$USERS[user].signup_timestamp|date_format:"%d/%m %H:%M:%S"}{$USERS[user].last_login|date_format:"%d/%m %H:%M:%S"} + + diff --git a/public/templates/bootstrap/dashboard/js/api.tpl b/public/templates/bootstrap/dashboard/js/api.tpl index d030403c..980d3d21 100644 --- a/public/templates/bootstrap/dashboard/js/api.tpl +++ b/public/templates/bootstrap/dashboard/js/api.tpl @@ -83,7 +83,11 @@ $(document).ready(function(){ $('#b-poolworkers').html(number_format(data.getdashboarddata.data.pool.workers)); $('#b-hashrate').html((number_format(data.getdashboarddata.data.personal.hashrate, 2))); $('#b-poolhashrate').html(number_format(data.getdashboarddata.data.pool.hashrate, 2)); - $('#b-nethashrate').html(number_format(data.getdashboarddata.data.network.hashrate, 2)); + if (data.getdashboarddata.data.network.hashrate > 0) { + $('#b-nethashrate').html(number_format(data.getdashboarddata.data.network.hashrate, 2)); + } else { + $('#b-nethashrate').html('n/a'); + } $('#b-sharerate').html((parseFloat(data.getdashboarddata.data.personal.sharerate).toFixed(2))); $('#b-yvalid').html(number_format(data.getdashboarddata.data.personal.shares.valid)); $('#b-yivalid').html(number_format(data.getdashboarddata.data.personal.shares.invalid)); @@ -100,8 +104,13 @@ $(document).ready(function(){ $('#b-pefficiency').html(number_format(0, 2) + "%"); } $('#b-diff').html(number_format(data.getdashboarddata.data.network.difficulty, 8)); - $('#b-nextdiff').html(number_format(data.getdashboarddata.data.network.nextdifficulty, 8)); - $('#b-nextdiffc').html(" Change in " + data.getdashboarddata.data.network.blocksuntildiffchange + " Blocks"); + if (data.getdashboarddata.data.network.hashrate > 0) { + $('#b-nextdiff').html(number_format(data.getdashboarddata.data.network.nextdifficulty, 8)); + $('#b-nextdiffc').html(" Change in " + data.getdashboarddata.data.network.blocksuntildiffchange + " Blocks"); + } else { + $('#b-nextdiff').html('n/a'); + $('#b-nextdiffc').html(' No Estimates'); + } var minutes = Math.floor(data.getdashboarddata.data.network.esttimeperblock / 60); var seconds = Math.floor(data.getdashboarddata.data.network.esttimeperblock - minutes * 60); $('#b-esttimeperblock').html(minutes + " minutes " + seconds + " seconds"); // <- this needs some nicer format diff --git a/public/templates/bootstrap/dashboard/overview/_with_price_graph.tpl b/public/templates/bootstrap/dashboard/overview/_with_price_graph.tpl index da9e95aa..7f2a6e44 100644 --- a/public/templates/bootstrap/dashboard/overview/_with_price_graph.tpl +++ b/public/templates/bootstrap/dashboard/overview/_with_price_graph.tpl @@ -78,7 +78,7 @@

    Net Hashrate

    - {$GLOBAL.nethashrate|number_format:"2"} + {if $GLOBAL.nethashrate > 0}{$GLOBAL.nethashrate|number_format:"2"}{else}n/a{/if} {$GLOBAL.hashunits.network}
    diff --git a/public/templates/bootstrap/dashboard/overview/_without_price_graph.tpl b/public/templates/bootstrap/dashboard/overview/_without_price_graph.tpl index de8fbe6d..5ccbe0f5 100644 --- a/public/templates/bootstrap/dashboard/overview/_without_price_graph.tpl +++ b/public/templates/bootstrap/dashboard/overview/_without_price_graph.tpl @@ -78,7 +78,7 @@

    Net Hashrate

    - {$GLOBAL.nethashrate|number_format:"2"} + {if $GLOBAL.nethashrate > 0}{$GLOBAL.nethashrate|number_format:"2"}{else}n/a{/if} {$GLOBAL.hashunits.network}
    diff --git a/public/templates/bootstrap/dashboard/round_statistics/pplns/round.tpl b/public/templates/bootstrap/dashboard/round_statistics/pplns/round.tpl index 983d3e30..c07623bd 100644 --- a/public/templates/bootstrap/dashboard/round_statistics/pplns/round.tpl +++ b/public/templates/bootstrap/dashboard/round_statistics/pplns/round.tpl @@ -67,8 +67,8 @@
    -

    {$NETWORK.EstNextDifficulty|number_format:"8"}

    -

    Change in {$NETWORK.BlocksUntilDiffChange} Blocks

    +

    {if $GLOBAL.nethashrate > 0}{$NETWORK.EstNextDifficulty|number_format:"8"}{else}n/a{/if}

    +

    {if $GLOBAL.nethashrate > 0}Change in {$NETWORK.BlocksUntilDiffChange} Blocks{else}No Estimates{/if}

    Est Next Difficulty

    diff --git a/public/templates/bootstrap/dashboard/round_statistics/pps/round.tpl b/public/templates/bootstrap/dashboard/round_statistics/pps/round.tpl index e9cc80a9..4aa1f226 100644 --- a/public/templates/bootstrap/dashboard/round_statistics/pps/round.tpl +++ b/public/templates/bootstrap/dashboard/round_statistics/pps/round.tpl @@ -27,12 +27,12 @@
    -

    {$GLOBAL.ppsvalue}

    +

    {$GLOBAL.ppsvalue}

    PPS Value

    -

    {$GLOBAL.userdata.pps.unpaidshares}

    +

    {$GLOBAL.userdata.pps.unpaidshares}

    Unpaid Shares

    @@ -42,8 +42,8 @@
    -

    {$NETWORK.EstNextDifficulty|number_format:"8"}

    -

    Change in {$NETWORK.BlocksUntilDiffChange} Blocks

    +

    {if $GLOBAL.nethashrate > 0}{$NETWORK.EstNextDifficulty|number_format:"8"}{else}n/a{/if}

    +

    {if $GLOBAL.nethashrate > 0}Change in {$NETWORK.BlocksUntilDiffChange} Blocks{else}No Estimates{/if}

    Est Next Difficulty

    diff --git a/public/templates/bootstrap/dashboard/round_statistics/prop/round.tpl b/public/templates/bootstrap/dashboard/round_statistics/prop/round.tpl index 8ea15710..e38a55a8 100644 --- a/public/templates/bootstrap/dashboard/round_statistics/prop/round.tpl +++ b/public/templates/bootstrap/dashboard/round_statistics/prop/round.tpl @@ -67,8 +67,8 @@
    -

    {$NETWORK.EstNextDifficulty|number_format:"8"}

    -

    Change in {$NETWORK.BlocksUntilDiffChange} Blocks

    +

    {if $GLOBAL.nethashrate > 0}{$NETWORK.EstNextDifficulty|number_format:"8"}{else}n/a{/if}

    +

    {if $GLOBAL.nethashrate > 0}Change in {$NETWORK.BlocksUntilDiffChange} Blocks{else}No Estimates{/if}

    Est Next Difficulty

    diff --git a/public/templates/bootstrap/gettingstarted/default.tpl b/public/templates/bootstrap/gettingstarted/default.tpl index b7945e81..c9e533c8 100644 --- a/public/templates/bootstrap/gettingstarted/default.tpl +++ b/public/templates/bootstrap/gettingstarted/default.tpl @@ -14,11 +14,13 @@

    2. Download a miner.

    @@ -30,7 +32,7 @@
  • BFGMiner
  • ./bfgminer {if $GLOBAL.config.algorithm == 'scrypt'}--scrypt{/if} -o stratum+tcp://{$SITESTRATUMURL|default:$smarty.server.SERVER_NAME}:{$SITESTRATUMPORT|default:"3333"} -u Weblogin.WorkerName -p WorkerPassword

    -

    If you want to mine on a Windows Operating System , Then you'll need to create a Batch File to start your miner.

    You can download pre-configured one from MEGA Here or you can make your own by opening notepad and then copy and pasting the following:

    +

    If you want to mine on a Windows Operating System , Then you'll need to create a Batch File to start your miner.

    You can download pre-configured one from MEGA Here or you can make your own by opening notepad and then copy and pasting the following:

  • MinerD
  • minerd -a {if $GLOBAL.config.algorithm == 'scrypt'}--scrypt{/if} -t 6 -s 4 -o stratum+tcp://{$SITESTRATUMURL|default:$smarty.server.SERVER_NAME}:{$SITESTRATUMPORT|default:"3333"} -u Weblogin.WorkerName -p WorkerPassword
  • CGMiner
  • @@ -42,7 +44,7 @@

    You then need to change "-u Weblogin.Worker -p Worker password" to reflect your own account. Eg, "-u Steve.StevesWorker -p StevesWorkerPassword" Then go to "File => Save as" and save the file as "RunMe.bat" in the same folder as minerd. You are now ready to mine, double click on "RunMe.bat" to start mining. If you want, you can create additional workers with usernames and passwords of your choice here

    -

    4. Create a {$SITECOINNAME|default:"Litecoin"} address to recieve payments.

    +

    4. Create a {$SITECOINNAME|default:"Litecoin"} address to receive payments.

    • Downloading the client & block chain: Download the {$SITECOINNAME|default:"Litecoin"} client from here.

      Generate a new address and input it on your account page to receive payments.

      @@ -53,7 +55,7 @@
      • Scrypt readme
      • Don't set intensity too high, I=11 is standard and safest. Higher intensity takes more GPU RAM. Check for hardware errors in cgminer (HW). HW=0 is good, otherwise lower intensity :)
      • -
      • Set shaders according to the readme (or look at your graphic cards specifications). Cgminer uses this value at first run to calculate thread-concurrency. Easiest way to get this optimized is to use same settings as others have used here: here.
      • +
      • Set shaders according to the readme (or look at your graphic cards specifications). Cgminer uses this value at first run to calculate thread-concurrency. Easiest way to get this optimized is to use same settings as others have used here: here.
      • There's also an interesting project which gives you a GUI for cgminer. Windows only it seems.
      • Here's a great guide how to get up and running with Xubuntu.
      diff --git a/public/templates/bootstrap/global/navigation.tpl b/public/templates/bootstrap/global/navigation.tpl index f2fc7929..6982f8d2 100644 --- a/public/templates/bootstrap/global/navigation.tpl +++ b/public/templates/bootstrap/global/navigation.tpl @@ -18,7 +18,7 @@
    • Earnings
    • {if !$GLOBAL.config.disable_notifications}
    • Notifications
    • {/if} {if !$GLOBAL.config.disable_invitations}
    • Invitations
    • {/if} -
    • QR Codes
    • + {if !$GLOBAL.acl.qrcode}
    • QR Codes
    • {/if}
    @@ -34,6 +34,7 @@
  • Transactions
  • Settings
  • News
  • +
  • Newsletter
  • Reports
  • Registrations
  • Invitations
  • @@ -52,6 +53,7 @@ {acl_check page='statistics' action='blockfinder' name=' Blockfinder' acl=$GLOBAL.acl.blockfinder.statistics} {acl_check page='statistics' action='uptime' name=' Uptime' acl=$GLOBAL.acl.uptime.statistics} {acl_check page='statistics' action='graphs' name=' Graphs' acl=$GLOBAL.acl.graphs.statistics} + {acl_check page='statistics' action='donors' name=' Donors' acl=$GLOBAL.acl.donors.page} @@ -60,8 +62,8 @@ diff --git a/public/templates/bootstrap/master.tpl b/public/templates/bootstrap/master.tpl index 5ab67b4d..7474f805 100644 --- a/public/templates/bootstrap/master.tpl +++ b/public/templates/bootstrap/master.tpl @@ -28,6 +28,7 @@ + diff --git a/public/templates/bootstrap/statistics/blocks/block_overview_time.tpl b/public/templates/bootstrap/statistics/blocks/block_overview_time.tpl index 2ac6687f..ea93b47f 100644 --- a/public/templates/bootstrap/statistics/blocks/block_overview_time.tpl +++ b/public/templates/bootstrap/statistics/blocks/block_overview_time.tpl @@ -10,21 +10,21 @@
    Gen est.Gen. Est. Found Valid OrphanAvg DiffShares est.Avg. DiffShares Est. Shares Percentage AmountRate est.Rate Est.
    all timeAll Time {($FIRSTBLOCKFOUND / $COINGENTIME)|number_format} {$LASTBLOCKSBYTIME.Total|number_format} {$LASTBLOCKSBYTIME.TotalValid|number_format}{$LASTBLOCKSBYTIME.TotalAmount|number_format}{$LASTBLOCKSBYTIME.TotalAmount|number_format:"2"} {($LASTBLOCKSBYTIME.Total|default:"0.00" / ($FIRSTBLOCKFOUND / $COINGENTIME) * 100)|number_format:"2"}%
    last hourLast Hour {(3600 / $COINGENTIME)|number_format} {$LASTBLOCKSBYTIME.1HourTotal|number_format} {$LASTBLOCKSBYTIME.1HourValid|number_format}{$LASTBLOCKSBYTIME.1HourAmount|number_format}{$LASTBLOCKSBYTIME.1HourAmount|number_format:"2"} {($LASTBLOCKSBYTIME.1HourTotal|default:"0.00" / (3600 / $COINGENTIME) * 100)|number_format:"2"}%
    last 24 hoursLast 24 Hours {(86400 / $COINGENTIME)|number_format} {$LASTBLOCKSBYTIME.24HourTotal|number_format} {$LASTBLOCKSBYTIME.24HourValid|number_format}{$LASTBLOCKSBYTIME.24HourAmount|number_format}{$LASTBLOCKSBYTIME.24HourAmount|number_format:"2"} {($LASTBLOCKSBYTIME.24HourTotal|default:"0.00" / (86400 / $COINGENTIME) * 100)|number_format:"2"}%
    last 7 daysLast 7 Days {(604800 / $COINGENTIME)|number_format} {$LASTBLOCKSBYTIME.7DaysTotal|number_format} {$LASTBLOCKSBYTIME.7DaysValid|number_format}{$LASTBLOCKSBYTIME.7DaysAmount}{$LASTBLOCKSBYTIME.7DaysAmount|number_format:"2"} {($LASTBLOCKSBYTIME.7DaysTotal|default:"0.00" / (604800 / $COINGENTIME) * 100)|number_format:"2"}%
    last 4 WeeksLast 4 Weeks {(2419200 / $COINGENTIME)|number_format} {$LASTBLOCKSBYTIME.4WeeksTotal|number_format} {$LASTBLOCKSBYTIME.4WeeksValid|number_format}{$LASTBLOCKSBYTIME.4WeeksAmount|number_format}{$LASTBLOCKSBYTIME.4WeeksAmount|number_format:"2"} {($LASTBLOCKSBYTIME.4WeeksTotal|default:"0.00" / (2419200 / $COINGENTIME) * 100)|number_format:"2"}%
    last 12 MonthThe Past 12 Months {(29030400 / $COINGENTIME)|number_format} {$LASTBLOCKSBYTIME.12MonthTotal|number_format} {$LASTBLOCKSBYTIME.12MonthValid|number_format}{$LASTBLOCKSBYTIME.12MonthAmount|number_format}{$LASTBLOCKSBYTIME.12MonthAmount|number_format:"2"} {($LASTBLOCKSBYTIME.12MonthTotal|default:"0.00" / (29030400 / $COINGENTIME) * 100)|number_format:"2"}%
    - + @@ -32,7 +32,7 @@ {assign var="count" value=$count+1} {if $GLOBAL.config.payout_system == 'pplns'}{assign var="pplnsshares" value=$pplnsshares+$BLOCKSFOUND[block].pplns_shares}{/if} {if ! $GLOBAL.website.blockexplorer.disabled} - + {else} {/if} @@ -46,7 +46,7 @@ {/if} - + {else}{/if}> + {if $GLOBAL.userdata.username|default:""|lower == $CONTRIBHASHES[contrib].account|lower}{assign var=listed value=1}{else}{/if} diff --git a/public/templates/bootstrap/statistics/pool/contributors_shares.tpl b/public/templates/bootstrap/statistics/pool/contributors_shares.tpl index 374ea223..f0d4018a 100644 --- a/public/templates/bootstrap/statistics/pool/contributors_shares.tpl +++ b/public/templates/bootstrap/statistics/pool/contributors_shares.tpl @@ -25,7 +25,7 @@ {/section} {if $listed != 1 && $GLOBAL.userdata.username|default:"" && $GLOBAL.userdata.shares.valid|default:"0" > 0} - {if $GLOBAL.userdata.username|default:""|lower == $CONTRIBHASHES[contrib].account|lower}{assign var=listed value=1}{else}{/if}> + {if $GLOBAL.userdata.username|default:""|lower == $CONTRIBHASHES[contrib].account|lower}{assign var=listed value=1}{else}{/if} diff --git a/public/templates/bootstrap/tac/content.tpl b/public/templates/bootstrap/tac/content.tpl index 447b0c49..869b0115 100644 --- a/public/templates/bootstrap/tac/content.tpl +++ b/public/templates/bootstrap/tac/content.tpl @@ -6,5 +6,5 @@
  • The Pool is not an e-wallet or a bank for your coins. The Pool and it's operators are not responsible for any loss of coins which are stored on the Pool. It is your responsibility to configure your account so that the coins you mine are regularly transferred to your own secured offline wallet.
  • The uptime of the pool or website is not guaranteed, maintenance and downtime may be required at times. Users are responsible for configuring their miners so that they will automatically reconnect, switch to all the pools we offer or a backup pool in the case of downtime.
  • Botnets are not welcome. Accounts with a large amount of miners connecting from different IPs may be suspended without prior notice. If we are uncertian then an investigation will be opened and the user will be notified via their configured e-mail address. If we do not receive a response your account may be suspended.
  • -
  • Multiple accounts controlled by one person may be considered as a botnet and a investigation will be opened, see 6.
  • +
  • Multiple accounts controlled by one person may be considered as a botnet and an investigation will be opened, see above point.
  • \ No newline at end of file diff --git a/public/templates/mail/newsletter/body.tpl b/public/templates/mail/newsletter/body.tpl new file mode 100644 index 00000000..f7860adc --- /dev/null +++ b/public/templates/mail/newsletter/body.tpl @@ -0,0 +1,9 @@ + + +

    Dear {nocache}{$DATA.username}{/nocache},

    +
    +{$DATA.CONTENT} +
    +

    + + diff --git a/public/templates/mpos/about/pool/default.tpl b/public/templates/mpos/about/pool/default.tpl index e0aedaff..bef761eb 100644 --- a/public/templates/mpos/about/pool/default.tpl +++ b/public/templates/mpos/about/pool/default.tpl @@ -18,7 +18,7 @@ Below is a standard FAQ.
  • Q: What is a Orphan Block?
  •  A: Coins generated by a block will not be available to you right away. They will take some time to be confirmed by the entire network before you are allowed to transfer them out of the pool. Usually coins have a confirmation set to 120. What that actually means: the network (not the pool) has to discover 120 additional blocks on top of the one found by the pool to confirm it.

    -
  • Q: What is estimated paypout?
  • +
  • Q: What is estimated payout?
  •  A: Estimated Payout is your Estimated payout if a block is found at that time. This is an estimate according to your amount of shares submitted for the round(s).

  • Q: What is Pool-variance?
  • BlockBlock Validity Finder Time{$BLOCKSFOUND[block].height}{$BLOCKSFOUND[block].height}{$BLOCKSFOUND[block].height} {if $BLOCKSFOUND[block].is_anonymous|default:"0" == 1 && $GLOBAL.userdata.is_admin|default:"0" == 0}anonymous{else}{$BLOCKSFOUND[block].finder|default:"unknown"|escape}{/if}{$BLOCKSFOUND[block].time|date_format:"%d/%m %H:%M:%S"}{$BLOCKSFOUND[block].time|date_format:"%d/%m/%Y %H:%M:%S"} {$BLOCKSFOUND[block].difficulty|number_format:"4"} {$BLOCKSFOUND[block].amount|number_format:"2"} @@ -77,7 +77,7 @@ diff --git a/public/templates/bootstrap/statistics/blocks/small_table.tpl b/public/templates/bootstrap/statistics/blocks/small_table.tpl index 8c7c5919..2c1c4303 100644 --- a/public/templates/bootstrap/statistics/blocks/small_table.tpl +++ b/public/templates/bootstrap/statistics/blocks/small_table.tpl @@ -32,7 +32,7 @@ {if $GLOBAL.config.payout_system != 'pps'} {/if} diff --git a/public/templates/bootstrap/about/donors/default.tpl b/public/templates/bootstrap/statistics/donors/default.tpl similarity index 100% rename from public/templates/bootstrap/about/donors/default.tpl rename to public/templates/bootstrap/statistics/donors/default.tpl diff --git a/public/templates/bootstrap/statistics/donors/disabled.tpl b/public/templates/bootstrap/statistics/donors/disabled.tpl new file mode 100644 index 00000000..e69de29b diff --git a/public/templates/bootstrap/statistics/pool/contributors_hashrate.tpl b/public/templates/bootstrap/statistics/pool/contributors_hashrate.tpl index fdbb0565..3b7fa0dd 100644 --- a/public/templates/bootstrap/statistics/pool/contributors_hashrate.tpl +++ b/public/templates/bootstrap/statistics/pool/contributors_hashrate.tpl @@ -35,7 +35,7 @@ {/section} {if $listed != 1 && $GLOBAL.userdata.username|default:"" && $GLOBAL.userdata.rawhashrate|default:"0" > 0} {math assign="myestday" equation="round(reward / ( diff * pow(2,32) / ( hashrate * 1000 ) / 3600 / 24), 3)" diff=$DIFFICULTY reward=$REWARD hashrate=$GLOBAL.userdata.rawhashrate} - {if $GLOBAL.userdata.username|default:""|lower == $CONTRIBHASHES[contrib].account|lower}{assign var=listed value=1}
    n/a {if $GLOBAL.userdata.donate_percent|default:"0" >= 2}{elseif $GLOBAL.userdata.donate_percent|default:"0" < 2 AND $GLOBAL.userdata.donate_percent|default:"0" > 0}{else}{/if} {$GLOBAL.userdata.username|escape}
    n/a {if $GLOBAL.userdata.donate_percent|default:"0" >= 2}{elseif $GLOBAL.userdata.donate_percent|default:"0" < 2 AND $GLOBAL.userdata.donate_percent|default:"0" > 0}{else}{/if} {$GLOBAL.userdata.username|escape}