mirror of
				https://github.com/pandorafms/pandorafms.git
				synced 2025-11-01 12:04:02 +01:00 
			
		
		
		
	* godmode/servers/manage_recontask_form.php, godmode/alerts/configure_alert_compound.php, godmode/modules/manage_network_components.php, include/functions_ui.php, include/functions_incidents.php, include/functions_agents.php, include/functions_alerts.php, include/functions_messages.php, include/db/mysql.php, include/functions_reporting.php, include/functions_filemanager.php, include/auth/ldap.php, operation/events/events.php, operation/incidents/incident_detail.php, operation/tree.php, operation/agentes/estado_agente.php, operation/agentes/sla_view.php, operation/users/user_edit.php: cleaned source code style. git-svn-id: https://svn.code.sf.net/p/pandora/code/trunk@6798 c3f86ba8-e40f-0410-aaad-9ba5e7f4b01f
		
			
				
	
	
		
			453 lines
		
	
	
		
			12 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
			
		
		
	
	
			453 lines
		
	
	
		
			12 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 Incidents
 | |
|  */
 | |
| 
 | |
| /**
 | |
|  * Gets all the possible priorities for incidents in an array
 | |
|  *
 | |
|  * @return array The several priorities with their values
 | |
|  */
 | |
| function incidents_get_priorities () {
 | |
| 	$fields = array();
 | |
| 	$fields[0] = __('Informative');
 | |
| 	$fields[1] = __('Low');
 | |
| 	$fields[2] = __('Medium');
 | |
| 	$fields[3] = __('Serious');
 | |
| 	$fields[4] = __('Very serious');
 | |
| 	$fields[10] = __('Maintenance');
 | |
| 	
 | |
| 	return $fields;
 | |
| }
 | |
| 
 | |
| /**
 | |
|  * Prints the image tag for passed status
 | |
|  *
 | |
|  * @param int $id_status Which status to return the image to
 | |
|  *
 | |
|  * @return string The string with the image tag
 | |
|  */
 | |
| function incidents_print_priority_img ($id_priority, $return = false) {
 | |
| 	switch ($id_priority) {
 | |
| 	case 0:
 | |
| 		$img = html_print_image ("images/dot_green.png", true, array('title' => __('Informative'))).html_print_image ("images/dot_green.png", true, array('title' => __('Informative'))).html_print_image ("images/dot_yellow.png", true, array('title' => __('Informative')));
 | |
| 		break;
 | |
| 	case 1:
 | |
| 		$img = html_print_image ("images/dot_green.png", true, array('title' => __('Low'))).html_print_image ("images/dot_yellow.png", true, array('title' => __('Low'))).html_print_image ("images/dot_yellow.png", true, array('title' => __('Low')));
 | |
| 		break;
 | |
| 	case 2:
 | |
| 		$img = html_print_image ("images/dot_yellow.png", true, array('title' => __('Medium'))).html_print_image ("images/dot_yellow.png", true, array('title' => __('Medium'))).html_print_image ("images/dot_red.png", true, array('title' => __('Medium')));
 | |
| 		break;
 | |
| 	case 3:
 | |
| 		$img = html_print_image ("images/dot_yellow.png", true, array('title' => __('Serious'))).html_print_image ("images/dot_red.png", true, array('title' => __('Serious'))).html_print_image ("images/dot_red.png", true, array('title' => __('Serious')));
 | |
| 		break;
 | |
| 	case 4:
 | |
| 		$img = html_print_image ("images/dot_red.png", true, array('title' => __('Very serious'))).html_print_image ("images/dot_red.png", true, array('title' => __('Very serious'))).html_print_image ("images/dot_red.png", true, array('title' => __('Very serious')));
 | |
| 		break;
 | |
| 	case 10:
 | |
| 		$img = html_print_image ("images/dot_green.png", true, array('title' => __('Maintenance'))).html_print_image ("images/dot_green.png", true, array('title' => __('Maintenance'))).html_print_image ("images/dot_green.png", true, array('title' => __('Maintenance')));
 | |
| 		break;
 | |
| 	}
 | |
| 	
 | |
| 	if ($return === false) {
 | |
| 		echo $img;
 | |
| 	}
 | |
| 	return $img;
 | |
| }
 | |
| 	
 | |
| 
 | |
| /**
 | |
|  * Gets all the possible status for incidents in an array
 | |
|  *
 | |
|  * @return array The several status with their values
 | |
|  */
 | |
| function incidents_get_status () {
 | |
| 	$fields = array ();
 | |
| 	$fields[0] = __('Active incidents');
 | |
| 	$fields[1] = __('Active incidents, with comments');
 | |
| 	$fields[2] = __('Rejected incidents');
 | |
| 	$fields[3] = __('Expired incidents');
 | |
| 	$fields[13] = __('Closed incidents');
 | |
| 	
 | |
| 	return $fields;
 | |
| }
 | |
| 
 | |
| /**
 | |
|  * Prints the image tag for passed status
 | |
|  *
 | |
|  * @param int $id_status: Which status to return the image to
 | |
|  *
 | |
|  * @return string The string with the image tag
 | |
|  */
 | |
| function incidents_print_status_img ($id_status, $return = false) {
 | |
| 	switch ($id_status) {
 | |
| 		case 0:
 | |
| 			$img = html_print_image ("images/dot_red.png", true, array('title' => __('Active incidents')));
 | |
| 		break;
 | |
| 		case 1:
 | |
| 			$img = html_print_image ("images/dot_yellow.png", true, array('title' => __('Active incidents, with comments')));
 | |
| 		break;
 | |
| 		case 2:
 | |
| 			$img = html_print_image ("images/dot_blue.png", true, array('title' => __('Rejected incidents')));
 | |
| 		break;
 | |
| 		case 3:
 | |
| 			$img = html_print_image ("images/dot_green.png", true, array('title' => __('Expired incidents')));
 | |
| 		break;
 | |
| 		case 13:
 | |
| 			$img = html_print_image ("images/dot_white.png", true, array('title' => __('Closed incidents')));
 | |
| 		break;
 | |
| 	}
 | |
| 	
 | |
| 	if ($return === false) {
 | |
| 		echo $img;
 | |
| 	}
 | |
| 	return $img;
 | |
| }
 | |
| 
 | |
| /**
 | |
|  * Updates the last user (either by adding an attachment, note or the incident itself)
 | |
|  * Named after the UNIX touch utility
 | |
|  *
 | |
|  * @param int $id_incident: A single incident or an array of incidents
 | |
|  *
 | |
|  * @return bool True if it was done, false if it wasn't
 | |
|  */
 | |
| function incidents_process_touch ($id_incident) {
 | |
| 	global $config;
 | |
| 	
 | |
| 	$id_incident = (array) safe_int ($id_incident, 1); //Make sure we have all positive int's
 | |
| 	if (empty ($id_incident)) {
 | |
| 		return false;
 | |
| 	}
 | |
| 	
 | |
| 	if (empty ($id_incident)) {
 | |
| 		return false;
 | |
| 	}
 | |
| 	
 | |
| 	return db_process_sql_update('tincidencia', array('id_lastupdate' => $config["id_user"]), array('id_incidencia' => $id_incident));
 | |
| }
 | |
| 
 | |
| /**
 | |
|  * Updates the owner (named after the UNIX utility chown)
 | |
|  *
 | |
|  * @param int $id_incident: A single incident or an array of incidents
 | |
|  *
 | |
|  * @return bool True if it was done, false if it wasn't
 | |
|  */
 | |
| function incidents_process_chown ($id_incident, $owner = false) {
 | |
| 	if ($owner === false) {
 | |
| 		global $config;
 | |
| 		$owner = $config["id_user"];
 | |
| 	}
 | |
| 		
 | |
| 	$id_incident = (array) safe_int ($id_incident, 1); //Make sure we have all positive int's
 | |
| 	if (empty ($id_incident)) {
 | |
| 		return false;
 | |
| 	}
 | |
| 	$id_incident = implode (",", $id_incident);
 | |
| 	$sql = sprintf ("UPDATE tincidencia SET id_usuario = '%s' WHERE id_incidencia IN (%s)", $owner, $id_incident);
 | |
| 	return db_process_sql ($sql);
 | |
| }
 | |
| 	
 | |
| 
 | |
| /** 
 | |
|  * Get the author of an incident.
 | |
|  * 
 | |
|  * @param int $id_incident Incident id.
 | |
|  * 
 | |
|  * @return string The author of an incident
 | |
|  */
 | |
| function incidents_get_author ($id_incident) {
 | |
| 	if ($id_incident < 1) {
 | |
| 		return "";
 | |
| 	}
 | |
| 	return (string) db_get_value ('id_creator', 'tincidencia', 'id_incidencia', (int) $id_incident);
 | |
| }
 | |
| 
 | |
| /** 
 | |
|  * Get the owner of an incident.
 | |
|  * 
 | |
|  * @param int $id_incident Incident id.
 | |
|  * 
 | |
|  * @return string The last updater of an incident
 | |
|  */
 | |
| function incidents_get_owner ($id_incident) {
 | |
| 	if ($id_incident < 1) {
 | |
| 		return "";
 | |
| 	}
 | |
| 	return (string) db_get_value ('id_usuario', 'tincidencia', 'id_incidencia', (int) $id_incident);
 | |
| }
 | |
| 
 | |
| /** 
 | |
|  * Get the last updater of an incident.
 | |
|  * 
 | |
|  * @param int $id_incident Incident id.
 | |
|  * 
 | |
|  * @return string The last updater of an incident
 | |
|  */
 | |
| function incidents_get_lastupdate ($id_incident) {
 | |
| 	if ($id_incident < 1) {
 | |
| 		return "";
 | |
| 	}
 | |
| 	return (string) db_get_value ('id_lastupdate', 'tincidencia', 'id_incidencia', (int) $id_incident);
 | |
| }
 | |
| 	
 | |
| 
 | |
| /** 
 | |
|  * Get the group id of an incident.
 | |
|  * 
 | |
|  * @param int $id_incident Incident id.
 | |
|  * 
 | |
|  * @return int The group id of an incident
 | |
|  */
 | |
| function incidents_get_group ($id_incident) {
 | |
| 	if ($id_incident < 1) {
 | |
| 		return 0;
 | |
| 	}
 | |
| 	return (int) db_get_value ('id_grupo', 'tincidencia', 'id_incidencia', (int) $id_incident);
 | |
| }
 | |
| 
 | |
| /** 
 | |
|  * Delete an incident out the database.
 | |
|  * 
 | |
|  * @param mixed $id_inc An int or an array of ints to be deleted
 | |
|  *
 | |
|  * @return bool True if incident was succesfully deleted, false if not
 | |
|  */
 | |
| function incidents_delete_incident ($id_incident) {
 | |
| 	global $config;
 | |
| 	$ids = (array) safe_int ($id_incident, 1); //Make the input an array
 | |
| 	$notes = array ();
 | |
| 	$attachments = array ();
 | |
| 	$errors = 0;
 | |
| 	
 | |
| 	//Start transaction
 | |
| 	db_process_sql_begin ();
 | |
| 		
 | |
| 	foreach ($ids as $id_inc) {
 | |
| 		//Delete incident
 | |
| 		$ret = db_process_sql_delete('tincidencia', array('id_incidencia' => $id_inc));
 | |
| 		if ($ret === false) {
 | |
| 			$errors++;
 | |
| 		}
 | |
| 		//We only need the ID's
 | |
| 		$notes = array_merge ($notes, array_keys (incidents_get_notes ($id_inc)));
 | |
| 		$attachments = array_merge ($attachments, array_keys (incidents_get_attach ($id_inc)));
 | |
| 		
 | |
| 		db_pandora_audit("Incident deleted", $config['id_user']." deleted incident #".$id_inc);
 | |
| 	}
 | |
| 	
 | |
| 	//Delete notes
 | |
| 	$note_err = incidents_delete_note ($notes, false);
 | |
| 	$attach_err = incidents_delete_attach ($attachments, false);
 | |
| 	
 | |
| 	if ($note_err === false || $attach_err === false) {
 | |
| 		$errors++;
 | |
| 	}
 | |
| 	
 | |
| 	if ($errors > 0) {
 | |
| 		//This will also rollback the audit log
 | |
| 		db_process_sql_rollback ();
 | |
| 		return false;
 | |
| 	}
 | |
| 	db_process_sql_commit ();
 | |
| 	
 | |
| 	return true;
 | |
| }
 | |
| 
 | |
| /** 
 | |
|  * Delete notes out the database.
 | |
|  * 
 | |
|  * @param mixed $id_note An int or an array of ints to be deleted
 | |
|  * @param bool $transact true if a transaction should be started, false if not
 | |
|  *
 | |
|  * @return bool True if note was succesfully deleted, false if not
 | |
|  */
 | |
| function incidents_delete_note ($id_note, $transact = true) {
 | |
| 	$id_note = (array) safe_int ($id_note, 1); //cast as array
 | |
| 	$errors = 0;
 | |
| 	
 | |
| 	//Start transaction
 | |
| 	if ($transact == true){
 | |
| 		db_process_sql_begin ();
 | |
| 		db_process_sql_commit ();
 | |
| 	}
 | |
| 	
 | |
| 	//Delete notes
 | |
| 	foreach ($id_note as $id) {
 | |
| 		$ret = db_process_sql_delete ('tnota', array ('id_nota' => $id));
 | |
| 		if ($ret === false) {
 | |
| 			$errors++;
 | |
| 		}
 | |
| 	}
 | |
| 	
 | |
| 	if ($transact == true && $errors > 0) {
 | |
| 		db_process_sql_rollback ();
 | |
| 		return false;
 | |
| 	}
 | |
| 	elseif ($transact == true) {
 | |
| 		db_process_sql_commit ();
 | |
| 		return true;
 | |
| 	}
 | |
| 	elseif ($errors > 0) {
 | |
| 		return false;
 | |
| 	}
 | |
| 	else {
 | |
| 		return true;
 | |
| 	}
 | |
| }
 | |
| 
 | |
| /** 
 | |
|  * Delete attachments out the database and from the machine.
 | |
|  * 
 | |
|  * @param mixed $id_attach An int or an array of ints to be deleted
 | |
|  * @param bool $transact true if a transaction should be started, false if not
 | |
|  *
 | |
|  * @return bool True if attachment was succesfully deleted, false if not
 | |
|  */
 | |
| function incidents_delete_attach ($id_attach, $transact = true) {
 | |
| 	global $config;
 | |
| 	
 | |
| 	$id_attach = (array) safe_int ($id_attach, 1); //cast as array
 | |
| 	$errors = 0;
 | |
| 	
 | |
| 	//Start transaction
 | |
| 	if ($transact == true) {
 | |
| 		db_process_sql_begin ();
 | |
| 	}
 | |
| 	
 | |
| 	//Delete attachment
 | |
| 	foreach ($id_attach as $id) {
 | |
| 		$filename = db_get_value ("filename", "tattachment", "id_attachment", $id);
 | |
| 		
 | |
| 		$ret = db_process_sql_delete('tattachment', array('id_attachment' => $id));
 | |
| 		if ($ret === false) {
 | |
| 			$errors++;
 | |
| 		}
 | |
| 		unlink ($config["attachment_store"]."/pand".$id."_".$filename);
 | |
| 	}
 | |
| 	
 | |
| 	if ($transact == true && $errors > 0) {
 | |
| 		db_process_sql_rollback ();
 | |
| 		return false;
 | |
| 	}
 | |
| 	elseif ($transact == true) {
 | |
| 		db_process_sql_commit ();
 | |
| 		return true;
 | |
| 	}
 | |
| 	elseif ($errors > 0) {
 | |
| 		return false;
 | |
| 	}
 | |
| 	else {
 | |
| 		return true;
 | |
| 	}
 | |
| }
 | |
| 
 | |
| /** 
 | |
|  * Get notes based on the incident id.
 | |
|  * 
 | |
|  * @param int $id_incident An int with the incident id
 | |
|  *
 | |
|  * @return array An array of all the notes for that incident
 | |
|  */
 | |
| function incidents_get_notes ($id_incident) {
 | |
| 	$return = db_get_all_rows_field_filter ("tnota", "id_incident", (int) $id_incident);
 | |
| 	
 | |
| 	if ($return === false) {
 | |
| 		$return = array ();
 | |
| 	}
 | |
| 	
 | |
| 	$notes = array ();
 | |
| 	foreach ($return as $row) {
 | |
| 		$notes[$row["id_nota"]] = $row;
 | |
| 	}
 | |
| 	
 | |
| 	return $notes;
 | |
| }
 | |
| 
 | |
| /** 
 | |
|  * Get attachments based on the incident id.
 | |
|  * 
 | |
|  * @param int $id_incident An int with the incident id
 | |
|  *
 | |
|  * @return array An array of all the notes for that incident
 | |
|  */
 | |
| function incidents_get_attach ($id_incident) {
 | |
| 	$return = db_get_all_rows_field_filter ("tattachment", "id_incidencia", (int) $id_incident);
 | |
| 	
 | |
| 	if ($return === false) {
 | |
| 		$return = array ();
 | |
| 	}
 | |
| 	
 | |
| 	$attach = array ();
 | |
| 	foreach ($return as $row) {
 | |
| 		$attach[$row["id_attachment"]] = $row;
 | |
| 	}
 | |
| 	
 | |
| 	return $attach;
 | |
| }
 | |
| 
 | |
| 	
 | |
| /** 
 | |
|  * Get user id of a note.
 | |
|  * 
 | |
|  * @param int $id_note Note id.
 | |
|  * 
 | |
|  * @return string User id of the given note.
 | |
|  */
 | |
| function incidents_get_notes_author ($id_note) {
 | |
| 	return (string) db_get_value ('id_usuario', 'tnota', 'id_nota', (int) $id_note);
 | |
| }
 | |
| 
 | |
| /** 
 | |
|  * Interface to Integria API functionality.
 | |
|  * 
 | |
|  * @param string $url Url to Integria API with user, password and option (function to use).
 | |
|  * @param string $postparameters Additional parameters to pass.
 | |
|  *
 | |
|  * @return variant The function result called in the API.
 | |
|  */
 | |
| function incidents_call_api($url, $postparameters = false) {
 | |
| 
 | |
| 	$curlObj = curl_init();
 | |
| 	curl_setopt($curlObj, CURLOPT_URL, $url);
 | |
| 	curl_setopt($curlObj, CURLOPT_RETURNTRANSFER, 1);
 | |
| 	if($postparameters !== false) {
 | |
| 		curl_setopt($curlObj, CURLOPT_POSTFIELDS, $postparameters);
 | |
| 	}
 | |
| 	$result = curl_exec($curlObj);
 | |
| 	curl_close($curlObj);
 | |
| 
 | |
| 	return $result;
 | |
| }
 | |
| 
 | |
| /** 
 | |
|  * Converts Xml format file to an array datatype.
 | |
|  * 
 | |
|  * @param string $xml Xml file to convert.
 | |
|  * 
 | |
|  * @return array A Json encoded array with xml content.
 | |
|  */
 | |
| function incidents_xml_to_array($xml) {
 | |
| 	$xmlObj = simplexml_load_string($xml,'SimpleXMLElement',LIBXML_NOCDATA);
 | |
| 	return json_decode(json_encode($xmlObj), true);
 | |
| }
 | |
| 
 | |
| ?>
 |