$titulo,
'origen' => $origen,
'estado' => $estado,
'id_grupo' => $grupo,
'id_usuario' => $usuario,
'prioridad' => $prioridad,
'descripcion' => $descripcion,
'id_lastupdate' => $config["id_user"]);
$result = process_sql ($sql);
$result = process_sql_update('tincidencia', $values, array('id_incidencia' => $id_inc));
if ($result !== false) {
pandora_audit("Incident updated","User ".$config['id_user']." updated incident #".$id_inc);
}
print_result_message ($result,
__('Successfully updated'),
__('Could not be updated'));
} elseif ($action == "insert") {
//Create incident
$grupo = get_parameter_post ("grupo_form", 1);
if (!check_acl ($config['id_user'], $grupo, "IW")) {
pandora_audit("ACL Forbidden", "User ".$config["id_user"]." tried to update incident");
require ("general/noaccess.php");
exit;
}
// Read input variables
$titulo = get_parameter_post ("titulo");
$descripcion = get_parameter_post ("descripcion");
$origen = get_parameter_post ("origen_form");
$prioridad = get_parameter_post ("prioridad_form");
$id_creator = $config['id_user'];
$estado = get_parameter_post ("estado_form");
$values = array(
'inicio' => 'NOW()',
'actualizacion' => 'NOW()',
'titulo' => $titulo,
'descripcion' => $descripcion,
'id_usuario' => $config["id_user"],
'origen' => $origen,
'estado' => $estado,
'prioridad' => $prioridad,
'id_grupo' => $grupo,
'id_creator' => $config["id_user"]);
$id_inc = process_sql_insert('tincidencia', $values);
if ($id_inc === false) {
echo '
'.__('Error creating incident').'
';
}
else {
pandora_audit("Incident created", "User ".$config["id_user"]." created incident #".$id_inc);
}
}
// Search
$filter = "";
$texto = (string) get_parameter ("texto", "");
if ($texto != "")
$filter .= sprintf (" AND (titulo LIKE '%%%s%%' OR descripcion LIKE '%%%s%%')", $texto, $texto);
$usuario = (string) get_parameter ("usuario", "");
if ($usuario != "")
$filter .= sprintf (" AND id_usuario = '%s'", $usuario);
$estado = (int) get_parameter ("estado", -1);
if ($estado >= 0) //-1 = All
$filter .= sprintf (" AND estado = %d", $estado);
$grupo = (int) get_parameter ("grupo", 0);
if ($grupo > 0) {
$filter .= sprintf (" AND id_grupo = %d", $grupo);
if (check_acl ($config['id_user'], $grupo, "IM") == 0) {
pandora_audit("ACL Forbidden","User tried to read incidents from group without access");
include ("general/noaccess.php");
exit;
}
}
$prioridad = (int) get_parameter ("prioridad", -1);
if ($prioridad != -1) //-1 = All
$filter .= sprintf (" AND prioridad = %d", $prioridad);
$offset = (int) get_parameter ("offset", 0);
$groups = get_user_groups ($config["id_user"], "IR");
//Select incidencts where the user has access to ($groups from
//get_user_groups), array_keys for the id, implode to pass to SQL
$sql = "SELECT * FROM tincidencia WHERE
id_grupo IN (".implode (",",array_keys ($groups)).")".$filter."
ORDER BY actualizacion DESC LIMIT ".$offset.",".$config["block_size"];
$result = get_db_all_rows_sql ($sql);
if (empty ($result)) {
$result = array ();
$count = 0;
} else {
$count = count ($result);
}
echo '';
if ($count < 1) {
echo ''.__('No incidents match your search filter').'
';
} else {
// TOTAL incidents
$url = "index.php?sec=incidencias&sec2=operation/incidents/incident";
$estado = -1;
// add form filter values for group, priority, state, and search fields: user and text
if ($grupo != -1)
$url .= "&grupo=".$grupo;
if ($prioridad != -1)
$url .= "&prioridad=".$prioridad;
if ($estado != -1)
$url .= "&estado=".$estado;
if ($usuario != '')
$url .= "&usuario=".$usuario;
if ($texto != '')
$url .= "&texto=".$texto;
// Show pagination
pagination ($count + $offset, $url, $offset, 15, false); //($count + $offset) it's real count of incidents because it's use LIMIT $offset in query.
echo '
';
// Show headers
$table->width = "100%";
$table->class = "databox";
$table->cellpadding = 4;
$table->cellspacing = 4;
$table->head = array ();
$table->data = array ();
$table->size = array ();
$table->align = array ();
$table->head[0] = __('ID');
$table->head[1] = __('Status');
$table->head[2] = __('Incident');
$table->head[3] = __('Priority');
$table->head[4] = __('Group');
$table->head[5] = __('Updated');
$table->head[6] = __('Source');
$table->head[7] = __('Owner');
$table->head[8] = __('Action');
$table->size[0] = 43;
$table->size[7] = 50;
$table->align[1] = "center";
$table->align[3] = "center";
$table->align[4] = "center";
$table->align[8] = "center";
$rowPair = true;
$iterator = 0;
foreach ($result as $row) {
if ($rowPair)
$table->rowclass[$iterator] = 'rowPair';
else
$table->rowclass[$iterator] = 'rowOdd';
$rowPair = !$rowPair;
$iterator++;
$data = array();
$data[0] = ''.$row["id_incidencia"].'';
$attach = get_incidents_attach ($row["id_incidencia"]);
if (!empty ($attach))
$data[0] .= ' '.print_image ("images/attachment.png", true, array ("style" => "align:middle;"));
$data[1] = print_incidents_status_img ($row["estado"], true);
$data[2] = ''.substr(safe_output($row["titulo"]),0,45).'';
$data[3] = print_incidents_priority_img ($row["prioridad"], true);
$data[4] = print_group_icon ($row["id_grupo"], true);
$data[5] = print_timestamp ($row["actualizacion"], true);
$data[6] = $row["origen"];
$data[7] = print_username ($row["id_usuario"], true);
if (check_acl ($config["id_user"], $row["id_grupo"], "IM") || $config["id_user"] == $row["id_usuario"] || $config["id_user"] == $row["id_creator"]) {
$data[8] = print_checkbox ("id_inc[]", $row["id_incidencia"], false, true);
} else {
$data[8] = '';
}
array_push ($table->data, $data);
}
echo '';
unset ($table);
}
echo '
';
if (check_acl ($config["id_user"], 0, "IW")) {
echo '';
echo '';
echo '
';
}
echo '
';
?>