mirror of
				https://github.com/pandorafms/pandorafms.git
				synced 2025-11-04 13:34:27 +01:00 
			
		
		
		
	* extensions/resource_registration.php, extensions/system_info.php, extensions/update_manager/lib/libupdate_manager.php, godmode/agentes/modificar_agente.php, godmode/alerts/alert_actions.php, godmode/alerts/alert_list.list.php, godmode/massive/massive_add_profiles.php, godmode/massive/massive_edit_modules.php, godmode/servers/manage_recontask.php, godmode/setup/setup_visuals.php, include/functions_api.php, include/functions_graph.php, include/functions_messages.php, include/graphs/functions_flot.php, include/graphs/flot/pandora.flot.js, operation/tree.php, operation/agentes/status_events.php, operation/agentes/ver_agente.php, operation/events/events_list.php, operation/events/events_marquee.php, operation/events/events_rss.php: cleaned source code style. * godmode/reporting/reporting_builder.item_editor.php, include/functions_ui.php, include/ajax/agent.php: continue to change to the new function "ui_print_agent_autocomplete_input" to make more easy (and standar) the autocomplete agent input. git-svn-id: https://svn.code.sf.net/p/pandora/code/trunk@6988 c3f86ba8-e40f-0410-aaad-9ba5e7f4b01f
		
			
				
	
	
		
			329 lines
		
	
	
		
			8.5 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
			
		
		
	
	
			329 lines
		
	
	
		
			8.5 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
<?php
 | 
						|
 | 
						|
// 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 Lesser General Public License
 | 
						|
// as published by the Free Software Foundation; 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.
 | 
						|
 | 
						|
/**
 | 
						|
 * @package Include
 | 
						|
 * @subpackage Messages
 | 
						|
 */
 | 
						|
 | 
						|
require_once($config['homedir'] . "/include/functions_users.php");
 | 
						|
require_once ($config['homedir'].'/include/functions_groups.php');
 | 
						|
 | 
						|
/** 
 | 
						|
 * 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)
 | 
						|
 *
 | 
						|
 * @return bool true when delivered, false in case of error
 | 
						|
 */
 | 
						|
function messages_create_message ($usuario_origen, $usuario_destino, $subject, $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
 | 
						|
	}
 | 
						|
	
 | 
						|
	$values = array ();
 | 
						|
	$values["id_usuario_origen"] = $usuario_origen;
 | 
						|
	$values["id_usuario_destino"] = $usuario_destino;
 | 
						|
	$values["subject"] = $subject;
 | 
						|
	$values["mensaje"] = $mensaje;
 | 
						|
	$values["timestamp"] = get_system_time ();
 | 
						|
	
 | 
						|
	$return = db_process_sql_insert ("tmensajes", $values);
 | 
						|
	
 | 
						|
	if ($return === false) {
 | 
						|
		return false;
 | 
						|
	}
 | 
						|
	else {
 | 
						|
		return true;
 | 
						|
	}
 | 
						|
}
 | 
						|
 | 
						|
/** 
 | 
						|
 * Creates private messages to be forwarded to groups
 | 
						|
 * 
 | 
						|
 * @param string The sender of the message
 | 
						|
 * @param string The receivers (group) of the message
 | 
						|
 * @param string Subject of the message (much like E-Mail)
 | 
						|
 * @param string The actual message. This message will be cleaned by io_safe_input 
 | 
						|
 * (html is allowed but loose html chars will be translated)
 | 
						|
 *
 | 
						|
 * @return bool true when delivered, false in case of error
 | 
						|
 */
 | 
						|
function messages_create_group ($usuario_origen, $dest_group, $subject, $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;
 | 
						|
	}
 | 
						|
	elseif (empty ($group_users)) {
 | 
						|
		//There are no users in the group, so it hasn't failed although it hasn't done anything.
 | 
						|
		return true;
 | 
						|
	}
 | 
						|
	
 | 
						|
	//Start transaction so that if it fails somewhere along the way, we roll back
 | 
						|
	db_process_sql_begin ();
 | 
						|
	
 | 
						|
	// 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, rollback and return false
 | 
						|
			db_process_sql_rollback ();
 | 
						|
			return false;
 | 
						|
		}
 | 
						|
	}
 | 
						|
	
 | 
						|
	//We got here, so we can commit - if this function gets extended, make sure to do SQL above these lines
 | 
						|
	db_process_sql_commit ();
 | 
						|
	
 | 
						|
	return true;
 | 
						|
}
 | 
						|
 | 
						|
/** 
 | 
						|
 * Deletes a private message
 | 
						|
 * 
 | 
						|
 * @param int $id_message
 | 
						|
 *
 | 
						|
 * @return bool true when deleted, false in case of error
 | 
						|
 */
 | 
						|
function messages_delete_message ($id_message) {
 | 
						|
	global $config;
 | 
						|
	
 | 
						|
	$where = array(
 | 
						|
		//'id_usuario_destino' => $config["id_user"],
 | 
						|
		'id_mensaje' => $id_message);
 | 
						|
	return (bool)db_process_sql_delete('tmensajes', $where);
 | 
						|
}
 | 
						|
 | 
						|
/** 
 | 
						|
 * Marks a private message as read/unread
 | 
						|
 * 
 | 
						|
 * @param int $message_id The message to modify
 | 
						|
 * @param bool $read To set unread pass 0, false or empty value
 | 
						|
 *
 | 
						|
 * @return bool true when marked, false in case of error
 | 
						|
 */
 | 
						|
function messages_process_read ($message_id, $read = true) {
 | 
						|
	if (empty ($read)) {
 | 
						|
		$read = 0;
 | 
						|
	}
 | 
						|
	else {
 | 
						|
		$read = 1;
 | 
						|
	}
 | 
						|
	
 | 
						|
	return (bool) db_process_sql_update('tmensajes', array('estado' => $read), array('id_mensaje' => $message_id));
 | 
						|
}
 | 
						|
 | 
						|
/** 
 | 
						|
 * Gets a private message
 | 
						|
 *
 | 
						|
 * This function abstracts the database backend so it can simply be replaced with another system
 | 
						|
 * 
 | 
						|
 * @param int $message_id
 | 
						|
 *
 | 
						|
 * @return mixed False if it doesn't exist or a filled array otherwise
 | 
						|
 */
 | 
						|
function messages_get_message ($message_id) {
 | 
						|
	global $config;
 | 
						|
	
 | 
						|
	$sql = sprintf("SELECT id_usuario_origen, id_usuario_destino, subject, mensaje, timestamp
 | 
						|
		FROM tmensajes
 | 
						|
		WHERE id_usuario_destino='%s' AND id_mensaje=%d" , $config["id_user"], $message_id);
 | 
						|
	$row = db_get_row_sql ($sql);
 | 
						|
	
 | 
						|
	if (empty ($row)) {
 | 
						|
		return false;
 | 
						|
	}
 | 
						|
	
 | 
						|
	return $row;
 | 
						|
}
 | 
						|
 | 
						|
/** 
 | 
						|
 * Gets a sent message
 | 
						|
 *
 | 
						|
 * This function abstracts the database backend so it can simply be replaced with another system
 | 
						|
 * 
 | 
						|
 * @param int $message_id
 | 
						|
 *
 | 
						|
 * @return mixed False if it doesn't exist or a filled array otherwise
 | 
						|
 */
 | 
						|
function messages_get_message_sent ($message_id) {
 | 
						|
	global $config;
 | 
						|
	
 | 
						|
	$sql = sprintf("SELECT id_usuario_origen, id_usuario_destino, subject, mensaje, timestamp
 | 
						|
		FROM tmensajes
 | 
						|
		WHERE id_usuario_origen='%s' AND id_mensaje=%d" , $config["id_user"], $message_id);
 | 
						|
	$row = db_get_row_sql ($sql);
 | 
						|
	
 | 
						|
	if (empty ($row)) {
 | 
						|
		return false;
 | 
						|
	}
 | 
						|
	
 | 
						|
	return $row;
 | 
						|
}
 | 
						|
 | 
						|
 | 
						|
/** 
 | 
						|
 * Counts private messages
 | 
						|
 *
 | 
						|
 * @param string $user
 | 
						|
 * @param bool $incl_read Whether or not to include read messages
 | 
						|
 *
 | 
						|
 * @return int The number of messages this user has
 | 
						|
 */
 | 
						|
function messages_get_count ($user = false, $incl_read = false) {
 | 
						|
	if (empty ($user)) {
 | 
						|
		global $config;
 | 
						|
		$user = $config["id_user"];
 | 
						|
	}
 | 
						|
	
 | 
						|
	if (empty ($incl_read)) {
 | 
						|
		$filter = "AND estado = 0";
 | 
						|
	}
 | 
						|
	else {
 | 
						|
		$filter = "";
 | 
						|
	}
 | 
						|
	$sql = sprintf("SELECT COUNT(*)
 | 
						|
		FROM tmensajes WHERE id_usuario_destino='%s' %s", $user, $filter);
 | 
						|
	
 | 
						|
	return (int) db_get_sql ($sql);
 | 
						|
}
 | 
						|
 | 
						|
/** 
 | 
						|
 * Counts sended messages
 | 
						|
 *
 | 
						|
 * @param string $user
 | 
						|
 *
 | 
						|
 * @return int The number of messages this user has sent
 | 
						|
 */
 | 
						|
function messages_get_count_sent ($user = false) {
 | 
						|
	if (empty ($user)) {
 | 
						|
		global $config;
 | 
						|
		$user = $config["id_user"];
 | 
						|
	}
 | 
						|
	$sql = sprintf("SELECT COUNT(*)
 | 
						|
		FROM tmensajes WHERE id_usuario_origen='%s'", $user);
 | 
						|
	
 | 
						|
	return (int) db_get_sql ($sql);
 | 
						|
}
 | 
						|
 | 
						|
 | 
						|
/** 
 | 
						|
 * Get message overview in array
 | 
						|
 *
 | 
						|
 * @param string $order How to order them valid: 
 | 
						|
 * (status (default), subject, timestamp, sender)
 | 
						|
 * @param string $order_dir Direction of order (ASC = Ascending, DESC = Descending)
 | 
						|
 *
 | 
						|
 * @return int The number of messages this user has
 | 
						|
 */
 | 
						|
function messages_get_overview ($order = "status", $order_dir = "ASC") {
 | 
						|
	global $config;
 | 
						|
	
 | 
						|
	switch ($order) {
 | 
						|
		case "timestamp":
 | 
						|
		case "sender":
 | 
						|
		case "subject":
 | 
						|
			break;
 | 
						|
		case "status":
 | 
						|
		default:
 | 
						|
			$order = "estado, timestamp";
 | 
						|
			break;
 | 
						|
	}
 | 
						|
	
 | 
						|
	if ($order_dir != "ASC") {
 | 
						|
		$order .= " DESC";
 | 
						|
	}
 | 
						|
	
 | 
						|
	$result = array ();
 | 
						|
	$return = db_get_all_rows_field_filter ('tmensajes', 'id_usuario_destino', $config["id_user"], $order);
 | 
						|
	
 | 
						|
	if ($return === false) {
 | 
						|
		return $result;
 | 
						|
	}
 | 
						|
	
 | 
						|
	foreach ($return as $message) {
 | 
						|
		$result[$message["id_mensaje"]]["sender"] = $message["id_usuario_origen"];
 | 
						|
		$result[$message["id_mensaje"]]["subject"] = $message["subject"];
 | 
						|
		$result[$message["id_mensaje"]]["timestamp"] = $message["timestamp"];
 | 
						|
		$result[$message["id_mensaje"]]["status"] = $message["estado"];
 | 
						|
	}
 | 
						|
	
 | 
						|
	return $result;
 | 
						|
}
 | 
						|
 | 
						|
/** 
 | 
						|
 * Get sent message overview in array
 | 
						|
 *
 | 
						|
 * @param string $order How to order them valid: 
 | 
						|
 * (status (default), subject, timestamp, sender)
 | 
						|
 * @param string $order_dir Direction of order (ASC = Ascending, DESC = Descending)
 | 
						|
 *
 | 
						|
 * @return int The number of messages this user has
 | 
						|
 */
 | 
						|
function messages_get_overview_sent ($order = "timestamp", $order_dir = "ASC") {
 | 
						|
	global $config;
 | 
						|
	
 | 
						|
	switch ($order) {
 | 
						|
		case "timestamp":
 | 
						|
		case "sender":
 | 
						|
		case "subject":
 | 
						|
			break;
 | 
						|
		case "status":
 | 
						|
		default:
 | 
						|
			$order = "estado, timestamp";
 | 
						|
			break;
 | 
						|
	}
 | 
						|
	
 | 
						|
	if ($order_dir != "ASC") {
 | 
						|
		$order .= " DESC";
 | 
						|
	}
 | 
						|
	
 | 
						|
	$result = array ();
 | 
						|
	$return = db_get_all_rows_field_filter ('tmensajes', 'id_usuario_origen', $config["id_user"], $order);
 | 
						|
	
 | 
						|
	if ($return === false) {
 | 
						|
		return $result;
 | 
						|
	}
 | 
						|
	
 | 
						|
	foreach ($return as $message) {
 | 
						|
		$result[$message["id_mensaje"]]["dest"] = $message["id_usuario_destino"];
 | 
						|
		$result[$message["id_mensaje"]]["subject"] = $message["subject"];
 | 
						|
		$result[$message["id_mensaje"]]["timestamp"] = $message["timestamp"];
 | 
						|
		$result[$message["id_mensaje"]]["status"] = $message["estado"];
 | 
						|
	}
 | 
						|
	
 | 
						|
	return $result;
 | 
						|
}
 | 
						|
 | 
						|
?>
 |