diff --git a/html/includes/forms/config-item.inc.php b/html/includes/forms/config-item.inc.php index 084c612316..12fd3c4368 100644 --- a/html/includes/forms/config-item.inc.php +++ b/html/includes/forms/config-item.inc.php @@ -30,10 +30,13 @@ $config_extra = mres($_POST['config_extra']); $config_room_id = mres($_POST['config_room_id']); $config_from = mres($_POST['config_from']); $config_userkey = mres($_POST['config_userkey']); +$config_user = mres($_POST['config_user']); +$config_to = mres($_POST['config_to']); +$config_token = mres($_POST['config_token']); $status = 'error'; $message = 'Error with config'; -if ($action == 'remove' || $action == 'remove-slack' || $action == 'remove-hipchat' || $action == 'remove-pushover' || $action == 'remove-boxcar') { +if ($action == 'remove' || $action == 'remove-slack' || $action == 'remove-hipchat' || $action == 'remove-pushover' || $action == 'remove-boxcar' || $action == 'remove-clickatell' || $action == 'remove-playsms') { $config_id = mres($_POST['config_id']); if (empty($config_id)) { $message = 'No config id passed'; @@ -52,6 +55,12 @@ if ($action == 'remove' || $action == 'remove-slack' || $action == 'remove-hipch elseif ($action == 'remove-boxcar') { dbDelete('config', "`config_name` LIKE 'alert.transports.boxcar.$config_id.%'"); } + elseif ($action == 'remove-clickatell') { + dbDelete('config', "`config_name` LIKE 'alert.transports.clickatell.$config_id.%'"); + } + elseif ($action == 'remove-playsms') { + dbDelete('config', "`config_name` LIKE 'alert.transports.playsms.$config_id.%'"); + } $status = 'ok'; $message = 'Config item removed'; @@ -156,6 +165,66 @@ else if ($action == 'add-boxcar') { } } } +else if ($action == 'add-clickatell') { + if (empty($config_value)) { + $message = 'No Clickatell token provided'; + } + elseif (empty($config_to)) { + $message = 'No mobile numbers provided'; + } + else { + $config_id = dbInsert(array('config_name' => 'alert.transports.clickatell.', 'config_value' => $config_value, 'config_group' => $config_group, 'config_sub_group' => $config_sub_group, 'config_default' => $config_value, 'config_descr' => 'Clickatell Transport'), 'config'); + if ($config_id > 0) { + dbUpdate(array('config_name' => 'alert.transports.clickatell.'.$config_id.'.token'), 'config', 'config_id=?', array($config_id)); + $status = 'ok'; + $message = 'Config item created'; + $mobiles = explode('\n', $config_to); + $x=0; + foreach ($mobiles as $mobile) { + if (!empty($mobile)) { + dbInsert(array('config_name' => 'alert.transports.clickatell.'.$config_id.'.to.'.$x, 'config_value' => $mobile, 'config_group' => $config_group, 'config_sub_group' => $config_sub_group, 'config_default' => $v, 'config_descr' => 'Clickatell mobile'), 'config'); + $x++; + } + } + } + else { + $message = 'Could not create config item'; + } + } +} +elseif ($action == 'add-playsms') { + if (empty($config_value)) { + $message = 'No PlaySMS URL provided'; + } + elseif (empty($config_user)) { + $message = 'No PlaySMS User provided'; + } + elseif (empty($config_to)) { + $message = 'No mobile numbers provided'; + } + else { + $config_id = dbInsert(array('config_name' => 'alert.transports.playsms.', 'config_value' => $config_value, 'config_group' => $config_group, 'config_sub_group' => $config_sub_group, 'config_default' => $config_value, 'config_descr' => 'PlaySMS Transport'), 'config'); + if ($config_id > 0) { + dbUpdate(array('config_name' => 'alert.transports.playsms.'.$config_id.'.url'), 'config', 'config_id=?', array($config_id)); + $additional_id['from'] = dbInsert(array('config_name' => 'alert.transports.playsms.'.$config_id.'.from', 'config_value' => $config_from, 'config_group' => $config_group, 'config_sub_group' => $config_sub_group, 'config_default' => $config_from, 'config_descr' => 'PlaySMS From'), 'config'); + $additional_id['user'] = dbInsert(array('config_name' => 'alert.transports.playsms.'.$config_id.'.user', 'config_value' => $config_user, 'config_group' => $config_group, 'config_sub_group' => $config_sub_group, 'config_default' => $config_user, 'config_descr' => 'PlaySMS User'), 'config'); + $additional_id['token'] = dbInsert(array('config_name' => 'alert.transports.playsms.'.$config_id.'.token', 'config_value' => $config_token, 'config_group' => $config_group, 'config_sub_group' => $config_sub_group, 'config_default' => $config_token, 'config_descr' => 'PlaySMS Token'), 'config'); + $status = 'ok'; + $message = 'Config item created'; + $mobiles = explode('\n', $config_to); + $x=0; + foreach ($mobiles as $mobile) { + if (!empty($mobile)) { + dbInsert(array('config_name' => 'alert.transports.playsms.'.$config_id.'.to.'.$x, 'config_value' => $mobile, 'config_group' => $config_group, 'config_sub_group' => $config_sub_group, 'config_default' => $v, 'config_descr' => 'PlaySMS mobile'), 'config'); + $x++; + } + } + } + else { + $message = 'Could not create config item'; + } + } +} else { if (empty($config_group) || empty($config_sub_group) || empty($config_name) || empty($config_value)) { $message = 'Missing config name or value'; diff --git a/html/includes/forms/update-config-item.inc.php b/html/includes/forms/update-config-item.inc.php index 4b9ffe75d7..dff681cebd 100644 --- a/html/includes/forms/update-config-item.inc.php +++ b/html/includes/forms/update-config-item.inc.php @@ -25,23 +25,32 @@ $status = 'error'; if (!is_numeric($config_id)) { $message = 'ERROR: No config item'; } -else if ($action == 'update-textarea') { +elseif ($action == 'update-textarea') { $extras = explode(PHP_EOL, $_POST['config_value']); + $x=0; foreach ($extras as $option) { list($k,$v) = explode('=', $option, 2); if (!empty($k) || !empty($v)) { if ($config_type == 'slack') { $db_id[] = dbInsert(array('config_name' => 'alert.transports.slack.'.$config_id.'.'.$k, 'config_value' => $v, 'config_group' => 'alerting', 'config_sub_group' => 'transports', 'config_default' => $v, 'config_descr' => 'Slack Transport'), 'config'); } - else if ($config_type == 'hipchat') { + elseif ($config_type == 'hipchat') { $db_id[] = dbInsert(array('config_name' => 'alert.transports.hipchat.'.$config_id.'.'.$k, 'config_value' => $v, 'config_group' => 'alerting', 'config_sub_group' => 'transports', 'config_default' => $v, 'config_descr' => 'Hipchat Transport'), 'config'); } - else if ($config_type == 'pushover') { + elseif ($config_type == 'pushover') { $db_id[] = dbInsert(array('config_name' => 'alert.transports.pushover.'.$config_id.'.'.$k, 'config_value' => $v, 'config_group' => 'alerting', 'config_sub_group' => 'transports', 'config_default' => $v, 'config_descr' => 'Pushover Transport'), 'config'); } elseif ($config_type == 'boxcar') { $db_id[] = dbInsert(array('config_name' => 'alert.transports.boxcar.'.$config_id.'.'.$k, 'config_value' => $v, 'config_group' => 'alerting', 'config_sub_group' => 'transports', 'config_default' => $v, 'config_descr' => 'Boxcar Transport'), 'config'); } + elseif ($config_type == 'clickatell') { + $db_id[] = dbInsert(array('config_name' => 'alert.transports.clickatell.to.'.$x, 'config_value' => $k, 'config_group' => 'alerting', 'config_sub_group' => 'transports', 'config_default' => $v, 'config_descr' => 'Clickatell Transport'), 'config'); + $x++; + } + elseif ($config_type == 'playsms') { + $db_id[] = dbInsert(array('config_name' => 'alert.transports.playsms.to.'.$x, 'config_value' => $k, 'config_group' => 'alerting', 'config_sub_group' => 'transports', 'config_default' => $v, 'config_descr' => 'PlaySMS Transport'), 'config'); + $x++; + } } } @@ -54,15 +63,21 @@ else if ($action == 'update-textarea') { if ($config_type == 'slack') { dbDelete('config', "(`config_name` LIKE 'alert.transports.slack.$config_id.%' AND `config_name` != 'alert.transports.slack.$config_id.url' AND `config_id` NOT IN ($db_inserts))"); } - else if ($config_type == 'hipchat') { + elseif ($config_type == 'hipchat') { dbDelete('config', "(`config_name` LIKE 'alert.transports.hipchat.$config_id.%' AND (`config_name` != 'alert.transports.hipchat.$config_id.url' AND `config_name` != 'alert.transports.hipchat.$config_id.room_id' AND `config_name` != 'alert.transports.hipchat.$config_id.from') AND `config_id` NOT IN ($db_inserts))"); } - else if ($config_type == 'pushover') { + elseif ($config_type == 'pushover') { dbDelete('config', "(`config_name` LIKE 'alert.transports.pushover.$config_id.%' AND (`config_name` != 'alert.transports.pushover.$config_id.appkey' AND `config_name` != 'alert.transports.pushover.$config_id.userkey') AND `config_id` NOT IN ($db_inserts))"); } - else if ($config_type == 'boxcar') { + elseif ($config_type == 'boxcar') { dbDelete('config', "(`config_name` LIKE 'alert.transports.boxcar.$config_id.%' AND (`config_name` != 'alert.transports.boxcar.$config_id.access_token' AND `config_name` != 'alert.transports.boxcar.$config_id.userkey') AND `config_id` NOT IN ($db_inserts))"); } + elseif ($config_type == 'clickatell') { + dbDelete('config', "(`config_name` LIKE 'alert.transports.clickatell.to.%' AND `config_id` NOT IN ($db_inserts))"); + } + elseif ($config_type == 'playsms') { + dbDelete('config', "(`config_name` LIKE 'alert.transports.playsms.to.%' AND `config_id` NOT IN ($db_inserts))"); + } } $message = 'Config item has been updated:'; diff --git a/html/includes/functions.inc.php b/html/includes/functions.inc.php index cfa49eb8f2..dc23186a9e 100644 --- a/html/includes/functions.inc.php +++ b/html/includes/functions.inc.php @@ -1097,7 +1097,7 @@ function get_config_like_name($name) { $name = array($name); $items = array(); foreach (dbFetchRows("SELECT * FROM `config` WHERE `config_name` LIKE '%?%'", array($name)) as $config_item) { - $items[$config_item['config_name']] = $config_item; + $items[$config_item['config_id']] = $config_item; } return $items; diff --git a/html/pages/settings/alerting.inc.php b/html/pages/settings/alerting.inc.php index 9c763811dd..df70e071e5 100644 --- a/html/pages/settings/alerting.inc.php +++ b/html/pages/settings/alerting.inc.php @@ -720,6 +720,116 @@ echo '