diff --git a/pandora_console/include/functions_messages.php b/pandora_console/include/functions_messages.php
index 675b9c2a38..3d163825c3 100644
--- a/pandora_console/include/functions_messages.php
+++ b/pandora_console/include/functions_messages.php
@@ -33,33 +33,88 @@ require_once $config['homedir'].'/include/functions_groups.php';
 require_once $config['homedir'].'/include/functions_notifications.php';
 
 
+/**
+ * Set targets for given messaje
+ *
+ * @param integer $message_id Message id.
+ * @param array   $users      An array with all target users.
+ * @param array   $groups     An array with all target groups.
+ *
+ * @return boolean Task status.
+ */
+function message_set_targets(
+    int $message_id,
+    array $users=null,
+    array $groups=null
+) {
+    if (empty($message_id)) {
+        return false;
+    }
+
+    if (is_array($users)) {
+        $values = [];
+        foreach ($users as $user) {
+            if (empty($user)) {
+                continue;
+            }
+
+            $values['id_mensaje'] = $message_id;
+            $values['id_user'] = $user;
+        }
+
+        if (!empty($values)) {
+            $ret = db_process_sql_insert('tnotification_user', $values);
+            if ($ret === false) {
+                return false;
+            }
+        }
+    }
+
+    if (is_array($groups)) {
+        $values = [];
+        foreach ($groups as $group) {
+            if (empty($group)) {
+                continue;
+            }
+
+            $values['id_mensaje'] = $message_id;
+            $values['id_group'] = $group;
+        }
+
+        if (!empty($values)) {
+            $ret = db_process_sql_insert('tnotification_group', $values);
+            if ($ret === false) {
+                return false;
+            }
+        }
+    }
+
+    return true;
+}
+
+
 /**
  * Creates a private message to be forwarded to other people
  *
- * @param string $usuario_origen  The sender of the message.
- * @param string $usuario_destino The receiver of the message.
- * @param string $subject         Subject of the message (much like E-Mail).
- * @param string $mensaje         The actual message. This message will be
- *                                cleaned by io_safe_input (html is allowed but
- *                                loose html chars will be translated).
+ * @param string $usuario_origen The sender of the message.
+ * @param array  $target_users   The receiver of the message.
+ * @param array  $target_groups  Target groups to be delivered.
+ * @param string $subject        Subject of the message (much like E-Mail).
+ * @param string $mensaje        The actual message. This message will be
+ *                               cleaned by io_safe_input (html is allowed but
+ *                               loose html chars will be translated).
  *
  * @return boolean true when delivered, false in case of error
  */
 function messages_create_message(
     string $usuario_origen,
-    string $usuario_destino,
+    array $target_users,
+    array $target_groups,
     string $subject,
     string $mensaje
 ) {
     $users = users_get_info();
 
-    if (!array_key_exists($usuario_origen, $users)
-        || !array_key_exists($usuario_destino, $users)
-    ) {
-        return false;
-        // Users don't exist so don't send to them.
-    }
-
     // Create message.
     $message_id = db_process_sql_insert(
         'tmensajes',
@@ -75,13 +130,19 @@ function messages_create_message(
     // Update URL
     // Update targets.
     if ($message_id !== false) {
-        $return = db_process_sql_insert(
-            'tnotification_user',
-            [
-                'id_mensaje' => $message_id,
-                'id_user'    => $usuario_destino,
-            ]
+        $ret = message_set_targets(
+            $message_id,
+            $target_users,
+            $target_groups
         );
+        if ($ret === false) {
+            // Failed to deliver messages. Erase message and show error.
+            db_process_sql_delete(
+                'tmensajes',
+                ['id_mensaje' => $message_id]
+            );
+            return false;
+        }
     }
 
     if ($return === false) {
@@ -92,65 +153,6 @@ function messages_create_message(
 }
 
 
-/**
- * Creates private messages to be forwarded to groups
- *
- * @param string $usuario_origen The sender of the message.
- * @param string $dest_group     The receivers (group) of the message.
- * @param string $subject        Subject of the message (much like E-Mail).
- * @param string $mensaje        The actual message. This message will be
- *                               cleaned by io_safe_input (html is allowed but
- *                               loose html chars will be translated).
- *
- * @return boolean true when delivered, false in case of error
- */
-function messages_create_group(
-    string $usuario_origen,
-    string $dest_group,
-    string $subject,
-    string $mensaje
-) {
-    $users = users_get_info();
-    $group_users = groups_get_users($dest_group);
-
-    if (! array_key_exists($usuario_origen, $users)) {
-        // Users don't exist in the system.
-        return false;
-    } else if (empty($group_users)) {
-        /*
-            There are no users in the group, so it hasn't failed
-            although it hasn't done anything.
-        */
-
-        return true;
-    }
-
-    // Array unique.
-    foreach ($group_users as $user) {
-        foreach ($user as $key => $us) {
-            if ($key == 'id_user') {
-                $group_user[$us] = $us;
-            }
-        }
-    }
-
-    foreach ($group_user as $user) {
-        $return = messages_create_message(
-            $usuario_origen,
-            get_user_id($user),
-            $subject,
-            $mensaje
-        );
-        if ($return === false) {
-            // Error sending message.
-            return false;
-        }
-    }
-
-    return true;
-}
-
-
 /**
  * Deletes a private message
  *
@@ -160,8 +162,6 @@ function messages_create_group(
  */
 function messages_delete_message(int $id_message)
 {
-    global $config;
-    // 'id_usuario_destino' => $config["id_user"],
     $where = ['id_mensaje' => $id_message];
     return (bool) db_process_sql_delete('tmensajes', $where);
 }
@@ -208,10 +208,9 @@ function messages_get_message(int $message_id)
     global $config;
 
     $sql = sprintf(
-        "SELECT id_usuario_origen, id_usuario_destino, subject, mensaje, timestamp
+        'SELECT *
         FROM tmensajes
-        WHERE id_usuario_destino='%s' AND id_mensaje=%d",
-        $config['id_user'],
+        WHERE id_mensaje=%d',
         $message_id
     );
     $row = db_get_row_sql($sql);
@@ -239,7 +238,7 @@ function messages_get_message_sent(int $message_id)
     global $config;
 
     $sql = sprintf(
-        "SELECT id_usuario_origen, id_usuario_destino, subject, mensaje, timestamp
+        "SELECT id_usuario_origen, subject, mensaje, timestamp
         FROM tmensajes
         WHERE id_usuario_origen='%s' AND id_mensaje=%d",
         $config['id_user'],
@@ -251,6 +250,16 @@ function messages_get_message_sent(int $message_id)
         return false;
     }
 
+    $targets = get_notification_targets($message_id);
+
+    $row['id_usuario_destino'] = implode(
+        ',',
+        $targets['users']
+    ).implode(
+        ',',
+        $targets['groups']
+    );
+
     return $row;
 }
 
@@ -281,15 +290,15 @@ function messages_get_count(
     }
 
     $sql = sprintf(
-        "SELECT count(*) FROM tmensajes tm 
+        "SELECT count(tm.id_mensaje) FROM tmensajes tm 
         left join tnotification_user nu
             ON tm.id_mensaje=nu.id_mensaje 
+            AND nu.id_user='%s'
         left join tnotification_group ng
             ON tm.id_mensaje=ng.id_mensaje 
         left join tusuario_perfil up
-            ON tm.id_mensaje=ng.id_mensaje
-            AND ng.id_group=up.id_grupo
-        WHERE (nu.id_user='%s' OR ng.id_group=0 OR up.id_grupo=ng.id_group)
+            ON ng.id_group=up.id_grupo
+            AND (ng.id_group=0 OR up.id_grupo=ng.id_group)
             %s",
         $config['id_user'],
         $filter
@@ -359,36 +368,21 @@ function messages_get_overview(
     }
 
     $sql = sprintf(
-        "SELECT * FROM tmensajes tm 
+        "SELECT tm.* FROM tmensajes tm 
         left join tnotification_user nu
             ON tm.id_mensaje=nu.id_mensaje 
+            AND nu.id_user='%s' 
         left join tnotification_group ng
             ON tm.id_mensaje=ng.id_mensaje 
         left join tusuario_perfil up
-            ON tm.id_mensaje=ng.id_mensaje
-            AND ng.id_group=up.id_grupo
-        WHERE (nu.id_user='%s' OR ng.id_group=0 OR up.id_grupo=ng.id_group)
+            ON ng.id_group=up.id_grupo
+            AND (ng.id_group=0 OR up.id_grupo=ng.id_group)
         ORDER BY %s",
         $config['id_user'],
         $order
     );
 
-    $result = [];
-    $return = db_get_all_rows_sql($sql);
-
-    if ($return === false) {
-        return $result;
-    }
-
-    foreach ($return as $message) {
-        $id_message = $message['id_mensaje'];
-        $result[$id_message]['sender'] = $message['id_usuario_origen'];
-        $result[$id_message]['subject'] = $message['subject'];
-        $result[$id_message]['timestamp'] = $message['timestamp'];
-        $result[$id_message]['status'] = $message['estado'];
-    }
-
-    return $result;
+    return db_get_all_rows_sql($sql);
 }
 
 
@@ -427,25 +421,10 @@ function messages_get_overview_sent(
         $order .= ' DESC';
     }
 
-    $result = [];
-    $return = db_get_all_rows_field_filter(
+    return db_get_all_rows_field_filter(
         'tmensajes',
         'id_usuario_origen',
         $config['id_user'],
         $order
     );
-
-    if ($return === false) {
-        return $result;
-    }
-
-    foreach ($return as $message) {
-        $id_message = $message['id_mensaje'];
-        $result[$id_message]['dest'] = $message['id_usuario_destino'];
-        $result[$id_message]['subject'] = $message['subject'];
-        $result[$id_message]['timestamp'] = $message['timestamp'];
-        $result[$id_message]['status'] = $message['estado'];
-    }
-
-    return $result;
 }
diff --git a/pandora_console/include/functions_notifications.php b/pandora_console/include/functions_notifications.php
index 8372f54bf0..03f0b07963 100644
--- a/pandora_console/include/functions_notifications.php
+++ b/pandora_console/include/functions_notifications.php
@@ -1,10 +1,9 @@
 <?php
 
 /**
- * Extension to manage a list of gateways and the node address where they should
- * point to.
+ * Library. Notification system auxiliary functions.
  *
- * @category   Extensions
+ * @category   Library
  * @package    Pandora FMS
  * @subpackage Community
  * @version    1.0.0
@@ -51,3 +50,55 @@ function get_notification_source_id(string $source)
         )
     );
 }
+
+
+/**
+ * Retrieve all targets for given message.
+ *
+ * @param integer $id_message Message id.
+ *
+ * @return array of users and groups target of this message.
+ */
+function get_notification_targets(int $id_message)
+{
+    $targets = [
+        'users'  => [],
+        'groups' => [],
+    ];
+
+    if (empty($id_message)) {
+        return $targets;
+    }
+
+    $ret = db_get_all_rows_sql(
+        sprintf(
+            'SELECT id_user
+                FROM tnotification_user nu
+                WHERE nu.id_mensaje = %d',
+            $id_message
+        )
+    );
+
+    if (is_array($ret)) {
+        foreach ($ret as $row) {
+            array_push($targets['users'], $row['id_user']);
+        }
+    }
+
+    $ret = $targets['groups'] = db_get_all_rows_sql(
+        sprintf(
+            'SELECT id_group
+                FROM tnotification_group ng
+                WHERE ng.id_mensaje = %d',
+            $id_message
+        )
+    );
+
+    if (is_array($ret)) {
+        foreach ($ret as $row) {
+            array_push($targets['groups'], $row['id_group']);
+        }
+    }
+
+    return $targets;
+}
diff --git a/pandora_console/operation/messages/message_edit.php b/pandora_console/operation/messages/message_edit.php
index 5df20ce9fe..a92abc19e8 100644
--- a/pandora_console/operation/messages/message_edit.php
+++ b/pandora_console/operation/messages/message_edit.php
@@ -1,26 +1,39 @@
 <?php
+/**
+ * Extension to manage a list of gateways and the node address where they should
+ * point to.
+ *
+ * @category   Extensions
+ * @package    Pandora FMS
+ * @subpackage Community
+ * @version    1.0.0
+ * @license    See below
+ *
+ *    ______                 ___                    _______ _______ ________
+ *   |   __ \.-----.--.--.--|  |.-----.----.-----. |    ___|   |   |     __|
+ *  |    __/|  _  |     |  _  ||  _  |   _|  _  | |    ___|       |__     |
+ * |___|   |___._|__|__|_____||_____|__| |___._| |___|   |__|_|__|_______|
+ *
+ * ============================================================================
+ * Copyright (c) 2005-2019 Artica Soluciones Tecnologicas
+ * Please see http://pandorafms.org for full contribution list
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation for version 2.
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ * ============================================================================
+ */
 
-// Pandora FMS - http://pandorafms.com
-// ==================================================
-// Copyright (c) 2005-2009 Artica Soluciones Tecnologicas
-// Please see http://pandorafms.org for full contribution list
-
-// This program is free software; you can redistribute it and/or
-// modify it under the terms of the GNU General Public License
-// as published by the Free Software Foundation for version 2.
-// This program is distributed in the hope that it will be useful,
-// but WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-// GNU General Public License for more details.
-
-// Load global vars
 global $config;
 
-require_once ('include/functions_users.php');
-require_once ('include/functions_groups.php');
-require_once ('include/functions_io.php');
+require_once 'include/functions_users.php';
+require_once 'include/functions_groups.php';
+require_once 'include/functions_io.php';
 
-//params
+// Parse parameters.
 $new_msg = get_parameter('new_msg', 0);
 $dst_user = get_parameter('dst_user');
 $dst_group = get_parameter('dst_group');
@@ -30,191 +43,320 @@ $read_message = get_parameter('read_message', 0);
 $reply = get_parameter('reply', 0);
 $show_sent = get_parameter('show_sent', 0);
 
-$buttons['message_list'] = array('active' => false,
-		'text' => '<a href="index.php?sec=message_list&sec2=operation/messages/message_list">' .
-		html_print_image("images/email_inbox.png", true, array ("title" => __('Received messages'))) .'</a>');
+$buttons['message_list'] = [
+    'active' => false,
+    'text'   => '<a href="index.php?sec=message_list&sec2=operation/messages/message_list">'.html_print_image(
+        'images/email_inbox.png',
+        true,
+        ['title' => __('Received messages')]
+    ).'</a>',
+];
 
-$buttons['sent_messages'] = array('active' => false,
-		'text' => '<a href="index.php?sec=message_list&sec2=operation/messages/message_list&amp;show_sent=1">' .
-		html_print_image("images/email_outbox.png", true, array ("title" => __('Sent messages'))) .'</a>');
+$buttons['sent_messages'] = [
+    'active' => false,
+    'text'   => '<a href="index.php?sec=message_list&sec2=operation/messages/message_list&amp;show_sent=1">'.html_print_image(
+        'images/email_outbox.png',
+        true,
+        ['title' => __('Sent messages')]
+    ).'</a>',
+];
 
-$buttons['create_message'] = array('active' => true,
-		'text' => '<a href="index.php?sec=message_list&sec2=operation/messages/message_edit">' .
-		html_print_image("images/new_message.png", true, array ("title" => __('Create message'))) .'</a>');
+$buttons['create_message'] = [
+    'active' => true,
+    'text'   => '<a href="index.php?sec=message_list&sec2=operation/messages/message_edit">'.html_print_image(
+        'images/new_message.png',
+        true,
+        ['title' => __('Create message')]
+    ).'</a>',
+];
 
-// Header
-ui_print_page_header (__('Messages'), "images/email_mc.png", false, "", false, $buttons);
+// Header.
+ui_print_page_header(
+    __('Messages'),
+    'images/email_mc.png',
+    false,
+    '',
+    false,
+    $buttons
+);
 
-//read a message
+// Read a message.
 if ($read_message) {
-	$message_id = (int) get_parameter ("id_message");
-	if ($show_sent) {
-		$message = messages_get_message_sent ($message_id);
-	}
-	else {
-		$message = messages_get_message ($message_id);
-		messages_process_read ($message_id);
-	}
-	
-	if ($message == false) {
-		echo '<div>'.__('This message does not exist in the system').'</div>';
-		return; //Move out of this page and go processing other pages
-	}
-	
-	$user_name = get_user_fullname ($message["id_usuario_origen"]);
-	if (!$user_name) {
-		$user_name = $message["id_usuario_origen"];
-	}
-	
-	$dst_name = get_user_fullname ($message["id_usuario_destino"]);
-	if (!$dst_name) {
-		$dst_name = $message["id_usuario_destino"];
-	}
-	
-	$table = new stdClass();
-	$table->width = '100%';
-	$table->class = 'databox filters';
-	$table->data = array();
-	
-	$table->data[0][0] = __('Sender');
-	$table->data[0][1] = $user_name.' '.__('at').' ' . ui_print_timestamp ($message["timestamp"], true, array ("prominent" => "timestamp"));
-	
-	$table->data[1][0] = __('Destination');
-	$table->data[1][1] = $dst_name;
-	
-	$table->data[2][0] = __('Subject');
-	$table->data[2][1] = html_print_input_text_extended ("subject", $message["subject"], 'text-subject', '', 50, 70, true, false, '', 'readonly');
-	
-	$order = array("\r\n", "\n", "\r");
-	$replace = '<br />';
-	$parsed_message = str_replace($order, $replace, $message["mensaje"]);
-	
-	$table->data[3][0] = __('Message');
-	$table->data[3][1] = html_print_textarea ("message", 15, 255, $message["mensaje"], 'readonly', true);
-	
-	//Prevent RE: RE: RE:
-	if (strstr ($message["subject"], "RE:")) {
-		$new_subj = $message["subject"];
-	}
-	else {
-		$new_subj = "RE: ".$message["subject"];
-	}
-	
-	//Start the message much like an e-mail reply 
-	$new_msg = "\n\n\nOn ".date ($config["date_format"], $message["timestamp"]).' '.$user_name.' '.__('wrote').":\n\n".$message["mensaje"];
-	
-	echo '<form id="delete_message" method="post" action="index.php?sec=message_list&amp;sec2=operation/messages/message_list&show_sent=1&amp;delete_message=1&amp;id='.$message_id.'">';
-		html_print_table($table);
-	echo "</form>";
-	
-	echo '<form id="reply_message" method="post" action="index.php?sec=message_list&sec2=operation/messages/message_edit&amp;new_msg=1&amp;reply=1">';
-		html_print_input_hidden ("dst_user", $message["id_usuario_origen"]);
-		html_print_input_hidden ("subject", $new_subj);
-		html_print_input_hidden ("message", $new_msg);
-		html_print_input_hidden ("orig_user", $message["id_usuario_destino"]);
-	echo '</form>';
+    $message_id = (int) get_parameter('id_message');
+    if ($show_sent) {
+        $message = messages_get_message_sent($message_id);
+    } else {
+        $message = messages_get_message($message_id);
+        messages_process_read($message_id);
+    }
 
-	echo "<div class= 'action-buttons' style=' width:" . $table->width . "'>";
-	html_print_submit_button(__('Delete'), 'delete_btn', false, 'form="delete_message" class="sub delete"');
-	echo "&nbsp";
-	html_print_submit_button (__('Reply'), 'reply', false, 'form="reply_message" class="sub next"');
-	echo "</div>";
-	
-	return;
+    if ($message == false) {
+        echo '<div>'.__('This message does not exist in the system').'</div>';
+        return;
+        // Move out of this page and go processing other pages.
+    }
+
+    $user_name = get_user_fullname($message['id_usuario_origen']);
+    if (!$user_name) {
+        $user_name = $message['id_usuario_origen'];
+    }
+
+    $dst_name = get_user_fullname($message['id_usuario_destino']);
+    if (!$dst_name) {
+        $dst_name = $message['id_usuario_destino'];
+    }
+
+    $table = new stdClass();
+    $table->width = '100%';
+    $table->class = 'databox filters';
+    $table->data = [];
+
+    $table->data[0][0] = __('Sender');
+    $table->data[0][1] = $user_name.' '.__('at').' '.ui_print_timestamp(
+        $message['timestamp'],
+        true,
+        ['prominent' => 'timestamp']
+    );
+
+    $table->data[1][0] = __('Destination');
+    $table->data[1][1] = $dst_name;
+
+    $table->data[2][0] = __('Subject');
+    $table->data[2][1] = html_print_input_text_extended(
+        'subject',
+        $message['subject'],
+        'text-subject',
+        '',
+        50,
+        70,
+        true,
+        false,
+        '',
+        'readonly'
+    );
+
+    $order = [
+        "\r\n",
+        "\n",
+        "\r",
+    ];
+    $replace = '<br />';
+    $parsed_message = str_replace($order, $replace, $message['mensaje']);
+
+    $table->data[3][0] = __('Message');
+    $table->data[3][1] = html_print_textarea(
+        'message',
+        15,
+        255,
+        $message['mensaje'],
+        'readonly',
+        true
+    );
+
+    // Prevent RE: RE: RE:.
+    if (strstr($message['subject'], 'RE:')) {
+        $new_subj = $message['subject'];
+    } else {
+        $new_subj = 'RE: '.$message['subject'];
+    }
+
+    // Start the message much like an e-mail reply.
+    $new_msg = "\n\n\nOn ".date(
+        $config['date_format'],
+        $message['timestamp']
+    ).' '.$user_name.' '.__('wrote').":\n\n".$message['mensaje'];
+
+    echo '<form id="delete_message" method="post" action="index.php?sec=message_list&amp;sec2=operation/messages/message_list&show_sent=1&amp;delete_message=1&amp;id='.$message_id.'">';
+        html_print_table($table);
+    echo '</form>';
+
+    echo '<form id="reply_message" method="post" action="index.php?sec=message_list&sec2=operation/messages/message_edit&amp;new_msg=1&amp;reply=1">';
+        html_print_input_hidden('dst_user', $message['id_usuario_origen']);
+        html_print_input_hidden('subject', $new_subj);
+        html_print_input_hidden('message', $new_msg);
+        html_print_input_hidden('orig_user', $message['id_usuario_destino']);
+    echo '</form>';
+
+    echo "<div class= 'action-buttons' style=' width:".$table->width."'>";
+    html_print_submit_button(
+        __('Delete'),
+        'delete_btn',
+        false,
+        'form="delete_message" class="sub delete"'
+    );
+    echo '&nbsp';
+    html_print_submit_button(
+        __('Reply'),
+        'reply',
+        false,
+        'form="reply_message" class="sub next"'
+    );
+    echo '</div>';
+
+    return;
 }
 
-// Create message (destination user)
-if (($new_msg) && (!empty ($dst_user)) && (!$reply)) {
-	$return = messages_create_message ($config["id_user"], $dst_user, $subject, $message);
-	
-	$user_name = get_user_fullname ($dst_user);
-	if (!$user_name) {
-		$user_name = $dst_user;
-	}
-	
-	ui_print_result_message ($return,
-		__('Message successfully sent to user %s', $user_name),
-		__('Error sending message to user %s', $user_name));
+// Create message (destination user).
+if (($new_msg) && (!empty($dst_user)) && (!$reply)) {
+    $return = messages_create_message(
+        $config['id_user'],
+        [$dst_user],
+        [],
+        $subject,
+        $message
+    );
+
+    $user_name = get_user_fullname($dst_user);
+    if (!$user_name) {
+        $user_name = $dst_user;
+    }
+
+    ui_print_result_message(
+        $return,
+        __('Message successfully sent to user %s', $user_name),
+        __('Error sending message to user %s', $user_name)
+    );
 }
 
-// Create message (destination group)
-if (($new_msg) && ($dst_group!='') && (!$reply)) {
-	$return = messages_create_group ($config["id_user"], $dst_group, $subject, $message);
-	
-	ui_print_result_message ($return,
-		__('Message successfully sent'),
-		__('Error sending message to group %s', groups_get_name ($dst_group)));
+// Create message (destination group).
+if (($new_msg) && ($dst_group != '') && (!$reply)) {
+    $return = messages_create_message(
+        $config['id_user'],
+        [],
+        [$dst_group],
+        $subject,
+        $message
+    );
+
+    ui_print_result_message(
+        $return,
+        __('Message successfully sent'),
+        __('Error sending message to group %s', groups_get_name($dst_group))
+    );
 }
 
-//message creation form
-
-//user info
-$own_info = get_user_info ($config['id_user']);
+// Message creation form.
+// User info.
+$own_info = get_user_info($config['id_user']);
 
 $table = new stdClass();
 $table->width = '100%';
 $table->class = 'databox filters';
 
-$table->data = array();
+$table->data = [];
 
 $table->data[0][0] = __('Sender');
 
 if (!empty($own_info['fullname'])) {
-	$table->data[0][1] = $own_info['fullname'];
-}
-else {
-	$table->data[0][1] = $config['id_user'];
+    $table->data[0][1] = $own_info['fullname'];
+} else {
+    $table->data[0][1] = $config['id_user'];
 }
 
 $table->data[1][0] = __('Destination');
 
-$is_admin = (bool)db_get_value('is_admin', 'tusuario', 'id_user', $config['id_user']);
+$is_admin = (bool) db_get_value(
+    'is_admin',
+    'tusuario',
+    'id_user',
+    $config['id_user']
+);
 
 if ($is_admin) {
-	$users_full = db_get_all_rows_filter('tusuario', array(), array('id_user', 'fullname'));
-}
-else {
-	$users_full = groups_get_users (array_keys(users_get_groups()), false, false);
+    $users_full = db_get_all_rows_filter(
+        'tusuario',
+        [],
+        [
+            'id_user',
+            'fullname',
+        ]
+    );
+} else {
+    $users_full = groups_get_users(
+        array_keys(users_get_groups()),
+        false,
+        false
+    );
 }
 
-$users = array();
+$users = [];
 foreach ($users_full as $user_id => $user_info) {
-	$users[$user_info['id_user']] = $user_info['fullname'];
+    $users[$user_info['id_user']] = $user_info['fullname'];
 }
 
-//Check if the user to reply is in the list, if not add reply user
+// Check if the user to reply is in the list, if not add reply user.
 if ($reply) {
-	if (!array_key_exists($dst_user, $users)) {
-		//Add the user to reply
-		$user_reply = db_get_row('tusuario', 'id_user', $dst_user);
-		$users[$user_reply['id_user']] = $user_reply['fullname'];
-	}
+    if (!array_key_exists($dst_user, $users)) {
+        // Add the user to reply.
+        $user_reply = db_get_row('tusuario', 'id_user', $dst_user);
+        $users[$user_reply['id_user']] = $user_reply['fullname'];
+    }
 }
 
 
 
-if ($own_info['is_admin'] || check_acl ($config['id_user'], 0, "PM"))
-	$return_all_groups = true;
-else
-	$return_all_groups = false;
+if ($own_info['is_admin'] || check_acl($config['id_user'], 0, 'PM')) {
+    $return_all_groups = true;
+} else {
+    $return_all_groups = false;
+}
 
-$groups = users_get_groups ($config["id_user"], "AR"); //Get a list of all groups
-
-$table->data[1][1] = html_print_select ($users, "dst_user", $dst_user, '', __('Select user'), false, true, false, '', false);
+$groups = users_get_groups($config['id_user'], 'AR');
+// Get a list of all groups.
+$table->data[1][1] = html_print_select(
+    $users,
+    'dst_user',
+    $dst_user,
+    '',
+    __('Select user'),
+    false,
+    true,
+    false,
+    '',
+    false
+);
 $table->data[1][1] .= '&nbsp;&nbsp;'.__('OR').'&nbsp;&nbsp;';
-$table->data[1][1] .= html_print_select_groups($config['id_user'], "AR", $return_all_groups, 'dst_group', $dst_group, '', __('Select group'), '', true);
+$table->data[1][1] .= html_print_select_groups(
+    $config['id_user'],
+    'AR',
+    $return_all_groups,
+    'dst_group',
+    $dst_group,
+    '',
+    __('Select group'),
+    '',
+    true
+);
 
 $table->data[2][0] = __('Subject');
-$table->data[2][1] = html_print_input_text ("subject", $subject, '', 50, 70, true);
+$table->data[2][1] = html_print_input_text(
+    'subject',
+    $subject,
+    '',
+    50,
+    70,
+    true
+);
 
 $table->data[3][0] = __('Message');
-$table->data[3][1] = html_print_textarea ("message", 15, 255, $message, '', true);
+$table->data[3][1] = html_print_textarea(
+    'message',
+    15,
+    255,
+    $message,
+    '',
+    true
+);
 
 echo '<form method="post" action="index.php?sec=message_list&amp;sec2=operation/messages/message_edit&amp;new_msg=1">';
 html_print_table($table);
 
 echo '<div class="action-buttons" style="width: '.$table->width.'">';
-	html_print_submit_button (__('Send message'), 'send_mes', false, 'class="sub wand"');
-echo '</form>';
-echo '</div>';
-?>
+    html_print_submit_button(
+        __('Send message'),
+        'send_mes',
+        false,
+        'class="sub wand"'
+    );
+    echo '</form>';
+    echo '</div>';
diff --git a/pandora_console/operation/messages/message_list.php b/pandora_console/operation/messages/message_list.php
index d0ebb09cb3..49ecfe14dd 100644
--- a/pandora_console/operation/messages/message_list.php
+++ b/pandora_console/operation/messages/message_list.php
@@ -88,13 +88,10 @@ if ($delete_msg) {
 }
 
 if ($multiple_delete) {
-    $ids = (array) get_parameter('delete_multiple', []);
+    $ids = (array) get_parameter('delete_multiple_messages', []);
 
     foreach ($ids as $id) {
-        $result = db_process_sql_delete(
-            'tmensajes',
-            ['id_mensaje' => $id]
-        );
+        $result = messages_delete_message($id);
 
         if ($result === false) {
             break;
@@ -166,7 +163,9 @@ if (empty($messages)) {
     $table->head[3] = __('Timestamp');
     $table->head[4] = __('Delete').html_print_checkbox('all_delete_messages', 0, false, true, false);
 
-    foreach ($messages as $message_id => $message) {
+
+    foreach ($messages as $message) {
+        $message_id = $message['id_mensaje'];
         $data = [];
         $data[0] = '';
         if ($message['status'] == 1) {