diff --git a/pandora_console/include/functions_notifications.php b/pandora_console/include/functions_notifications.php index c65c475550..e59208f8ef 100644 --- a/pandora_console/include/functions_notifications.php +++ b/pandora_console/include/functions_notifications.php @@ -636,13 +636,15 @@ function notifications_get_user_label_status($source, $user, $label) ); // Clean default common groups error for mesagges. + $group_enable = true; if ($common_groups[0] === 0) { unset($common_groups[0]); + $group_enable = false; } // No group found, return no permissions. $value = empty($common_groups) ? false : $source[$label]; - return notifications_build_user_enable_return($value, false); + return notifications_build_user_enable_return($value, $group_enable); } @@ -674,14 +676,34 @@ function notifications_set_user_label_status($source, $user, $label, $value) return false; } - return (bool) db_process_sql_update( - 'tnotification_source_user', - [$label => $value], - [ - 'id_user' => $user, - 'id_source' => $source, - ] - ); + $exists = db_process_sql(sprintf('SELECT * FROM tnotification_source_user WHERE id_user = "%s" AND id_source = "%s"', $user, $source)); + if (empty($exists['enabled']) && empty($exists['also_mail'])) { + $sql = sprintf('DELETE FROM tnotification_source_user WHERE id_user = "%s" AND id_source = "%s"', $user, $source); + db_process_sql($sql); + $exists = false; + } + + if ($exists === false) { + db_process_sql_insert( + 'tnotification_source_user', + [ + 'id_user' => $user, + 'id_source' => $source, + 'enabled' => '1', + 'also_mail' => '1', + ] + ); + return true; + } else { + return (bool) db_process_sql_update( + 'tnotification_source_user', + [$label => $value], + [ + 'id_user' => $user, + 'id_source' => $source, + ] + ); + } }