From 715cc5c20da7ece0d5567313c49150ea97d1792c Mon Sep 17 00:00:00 2001 From: larsec Date: Fri, 11 Jun 2021 22:13:46 +0200 Subject: [PATCH] Added enable/disable telegram,pushover --- src/lang/en_US.lang.php | 1 + src/lang/sv_SE.lang.php | 2 ++ .../Config/Controller/ConfigController.php | 1 + .../Install/Controller/InstallController.php | 2 ++ .../User/Controller/ProfileController.php | 19 +++++++++++++++++++ .../Module/User/Controller/UserController.php | 7 ++++++- src/psm/Util/Install/Installer.php | 2 ++ .../Util/Server/Updater/StatusNotifier.php | 8 +++++++- .../default/module/user/profile.tpl.html | 4 ++++ 9 files changed, 44 insertions(+), 2 deletions(-) diff --git a/src/lang/en_US.lang.php b/src/lang/en_US.lang.php index 856fd14c..7ff8faa7 100644 --- a/src/lang/en_US.lang.php +++ b/src/lang/en_US.lang.php @@ -112,6 +112,7 @@ $sm_lang = array( servers that have been assigned to them.', 'mobile' => 'Mobile', 'email' => 'Email', + 'pushover_active' => 'Activate Pushover?', 'pushover' => 'Pushover', 'pushover_description' => 'Pushover is a service that makes it easy to get real-time notifications. See their website for more info.', 'pushover_key' => 'Pushover Key', diff --git a/src/lang/sv_SE.lang.php b/src/lang/sv_SE.lang.php index ca8ae553..bc6d1baa 100644 --- a/src/lang/sv_SE.lang.php +++ b/src/lang/sv_SE.lang.php @@ -97,10 +97,12 @@ $sm_lang = array( 'pushover_description' => 'Pushover är en tjänst som skickar meddelande i realtid. Se deras webbsida för mer information.', + 'pushover_active' => 'Aktivera Pushover', 'pushover_key' => 'Pushover Key', 'pushover_device' => 'Pushover Device', 'pushover_device_description' => 'Enhetsnman att skicka meddelande till. Lämna tomt för att skicka till alla enheter.', + 'telegram_active' => 'Aktivera Telegram', 'delete_title' => 'Radera användare', 'delete_message' => 'Är du säker att du vill radera användare \'%1\'?', 'deleted' => 'Användare raderad.', diff --git a/src/psm/Module/Config/Controller/ConfigController.php b/src/psm/Module/Config/Controller/ConfigController.php index 5285ea70..c82fc87c 100644 --- a/src/psm/Module/Config/Controller/ConfigController.php +++ b/src/psm/Module/Config/Controller/ConfigController.php @@ -229,6 +229,7 @@ class ConfigController extends AbstractController ? 'checked="checked"' : ''; } + foreach ($this->fields as $input_key) { $tpl_data[$input_key] = (isset($config[$input_key])) ? $config[$input_key] : ''; } diff --git a/src/psm/Module/Install/Controller/InstallController.php b/src/psm/Module/Install/Controller/InstallController.php index 7afd97f1..02075942 100644 --- a/src/psm/Module/Install/Controller/InstallController.php +++ b/src/psm/Module/Install/Controller/InstallController.php @@ -301,10 +301,12 @@ class InstallController extends AbstractController 'email' => psm_POST('email', ''), 'mobile' => '', 'level' => PSM_USER_ADMIN, + 'pushover_active' => '1', 'pushover_key' => '', 'pushover_device' => '', 'webhook_url' => '', 'webhook_json' => '', + 'telegram_active' => '1', 'telegram_id' => '', 'discord' => '', 'jabber' => '' diff --git a/src/psm/Module/User/Controller/ProfileController.php b/src/psm/Module/User/Controller/ProfileController.php index 6b9b0cf1..37228f39 100644 --- a/src/psm/Module/User/Controller/ProfileController.php +++ b/src/psm/Module/User/Controller/ProfileController.php @@ -41,6 +41,9 @@ class ProfileController extends AbstractController protected $profile_fields = array('name', 'user_name', 'email', 'mobile', 'pushover_key', 'pushover_device', 'discord', 'webhook_url', 'webhook_json', 'telegram_id', 'jabber'); + protected $checkboxes = + array('pushover_active', 'telegram_active'); + public function __construct(Database $db, \Twig_Environment $twig) { parent::__construct($db, $twig); @@ -85,6 +88,7 @@ class ProfileController extends AbstractController 'label_webhook_json' => psm_get_lang('users', 'webhook_json'), 'label_webhook_json_description' => psm_get_lang('users', 'webhook_json_description'), 'label_pushover' => psm_get_lang('users', 'pushover'), + 'label_pushover_active' => psm_get_lang('users', 'pushover_active'), 'label_pushover_description' => psm_get_lang('users', 'pushover_description'), 'label_pushover_key' => psm_get_lang('users', 'pushover_key'), 'label_pushover_device' => psm_get_lang('users', 'pushover_device'), @@ -94,6 +98,7 @@ class ProfileController extends AbstractController 'label_discord_description' => psm_get_lang('users', 'discord_description'), 'label_telegram' => psm_get_lang('users', 'telegram'), + 'label_telegram_active' => psm_get_lang('users', 'telegram_active'), 'label_telegram_description' => psm_get_lang('users', 'telegram_description'), 'label_telegram_chat_id' => psm_get_lang('users', 'telegram_chat_id'), 'label_telegram_chat_id_description' => psm_get_lang('users', 'telegram_chat_id_description'), @@ -111,9 +116,19 @@ class ProfileController extends AbstractController 'level' => psm_get_lang('users', 'level_' . $user->level), 'placeholder_password' => psm_get_lang('users', 'password_leave_blank'), ); + foreach ($this->profile_fields as $field) { $tpl_data[$field] = (isset($user->$field)) ? $user->$field : ''; } + + foreach ($this->checkboxes as $input_key) { + $tpl_data[$input_key . '_checked'] = + (isset($user->$input_key) && (int) $user->$input_key == 1) + ? 'checked="checked"' + : ''; + } + + return $this->twig->render('module/user/profile.tpl.html', $tpl_data); } @@ -160,6 +175,10 @@ class ProfileController extends AbstractController unset($clean['password']); unset($clean['password_repeat']); + foreach ($this->checkboxes as $input_key) { + $clean[$input_key] = (isset($_POST[$input_key])) ? '1' : '0'; + } + $this->db->save(PSM_DB_PREFIX . 'users', $clean, array('user_id' => $this->getUser()->getUserId())); $this->container->get('event')->dispatch( \psm\Module\User\UserEvents::USER_EDIT, diff --git a/src/psm/Module/User/Controller/UserController.php b/src/psm/Module/User/Controller/UserController.php index ba55a0e2..e46c6ccf 100644 --- a/src/psm/Module/User/Controller/UserController.php +++ b/src/psm/Module/User/Controller/UserController.php @@ -50,6 +50,8 @@ class UserController extends AbstractController 'index', 'edit', 'delete', 'save', ), 'index'); $this->twig->addGlobal('subtitle', psm_get_lang('menu', 'user')); + + } public function run($action = null) @@ -161,13 +163,16 @@ class UserController extends AbstractController 'discord', 'webhook_url', 'webhook_json', + 'pushover_active', 'pushover_key', 'pushover_device', + 'telegram_active', 'telegram_id', 'jabber', 'email' ); - + + if ($user_id == 0) { // insert mode $title = psm_get_lang('system', 'insert'); diff --git a/src/psm/Util/Install/Installer.php b/src/psm/Util/Install/Installer.php index c15b0322..3258709e 100644 --- a/src/psm/Util/Install/Installer.php +++ b/src/psm/Util/Install/Installer.php @@ -219,10 +219,12 @@ class Installer `name` varchar(255) NOT NULL, `mobile` varchar(15) NOT NULL, `discord` varchar(255) NOT NULL, + `pushover_active` varchar(1) NULL, `pushover_key` varchar(255) NOT NULL, `pushover_device` varchar(255) NOT NULL, `webhook_url` varchar(255) NOT NULL, `webhook_json` varchar(255) NOT NULL DEFAULT '{\"text\":\"servermon: #message\"}', + `telegram_active` varchar(1) NULL, `telegram_id` varchar(255) NOT NULL , `jabber` varchar(255) NOT NULL, `email` varchar(255) NOT NULL, diff --git a/src/psm/Util/Server/Updater/StatusNotifier.php b/src/psm/Util/Server/Updater/StatusNotifier.php index 6951efea..5531f056 100644 --- a/src/psm/Util/Server/Updater/StatusNotifier.php +++ b/src/psm/Util/Server/Updater/StatusNotifier.php @@ -542,6 +542,9 @@ class StatusNotifier if (trim($user['pushover_key']) == '') { unset($users[$k]); } + if (!isset($user['pushover_active']) || $user['pushover_active'] != '1') { + unset($users[$k]); + } } // Validation @@ -692,6 +695,9 @@ class StatusNotifier if (trim($user['telegram_id']) == '') { unset($users[$k]); } + if (!isset($user['telegram_active']) || $user['telegram_active'] != '1') { + unset($users[$k]); + } } // Validation @@ -781,7 +787,7 @@ class StatusNotifier $users = $this->db->query(' SELECT `u`.`user_id`, `u`.`name`,`u`.`email`, `u`.`mobile`, `u`.`pushover_key`, `u`.`discord`, `u`.`webhook_url`,`u`.`webhook_json`, `u`.`pushover_device`, `u`.`telegram_id`, - `u`.`jabber` + `u`.`jabber`, `u`.`telegram_active`, `u`.`pushover_active` FROM `' . PSM_DB_PREFIX . 'users` AS `u` JOIN `' . PSM_DB_PREFIX . "users_servers` AS `us` ON ( `us`.`user_id`=`u`.`user_id` diff --git a/src/templates/default/module/user/profile.tpl.html b/src/templates/default/module/user/profile.tpl.html index 57051839..97708821 100644 --- a/src/templates/default/module/user/profile.tpl.html +++ b/src/templates/default/module/user/profile.tpl.html @@ -23,6 +23,8 @@
{{ label_pushover }}

{{ label_pushover_description|raw }}

+ + {{ macro.input_checkbox("pushover_active", "pushover_active", label_pushover_active, pushover_active_checked) }} {{ macro.input_field("text", "pushover_key", null, "pushover_key", label_pushover_key, pushover_key, label_pushover_key, "255", "pushover_key_help", label_pushover_key_description) }} @@ -32,6 +34,8 @@
{{ label_telegram }}

{{ label_telegram_description|raw }}

+ + {{ macro.input_checkbox("telegram_active", "telegram_active", label_telegram_active, telegram_active_checked) }}