$idConection));
$returnJSON['content'] = $row;
echo json_encode($returnJSON);
break;
case 'get_new_positions':
$id_features = get_parameter('id_features', '');
$last_time_of_data = get_parameter('last_time_of_data');
$layerId = get_parameter('layer_id');
$agentView = get_parameter('agent_view');
$returnJSON = array();
$returnJSON['correct'] = 1;
$idAgentsWithGIS = array();
if ($agentView == 0) {
$flagGroupAll = db_get_all_rows_sql('SELECT tgrupo_id_grupo
FROM tgis_map_layer
WHERE id_tmap_layer = ' . $layerId . ' AND tgrupo_id_grupo = 0;'); //group 0 = all groups
$defaultCoords = db_get_row_sql('SELECT default_longitude, default_latitude
FROM tgis_map
WHERE id_tgis_map IN (SELECT tgis_map_id_tgis_map FROM tgis_map_layer WHERE id_tmap_layer = ' . $layerId . ')');
if ($flagGroupAll === false) {
$idAgentsWithGISTemp = db_get_all_rows_sql('SELECT id_agente
FROM tagente
WHERE id_grupo IN
(SELECT tgrupo_id_grupo
FROM tgis_map_layer
WHERE id_tmap_layer = ' . $layerId . ')
OR id_agente IN
(SELECT tagente_id_agente
FROM tgis_map_layer_has_tagente
WHERE tgis_map_layer_id_tmap_layer = ' . $layerId . ');');
}
else {
//All groups, all agents
$idAgentsWithGISTemp = db_get_all_rows_sql('SELECT
tagente_id_agente AS id_agente
FROM tgis_data_status
WHERE tagente_id_agente');
}
if (empty($idAgentsWithGISTemp)) {
$idAgentsWithGISTemp = array();
}
foreach ($idAgentsWithGISTemp as $idAgent) {
$idAgentsWithGIS[] = $idAgent['id_agente'];
}
}
else {
//Extract the agent GIS status for one agent.
$idAgentsWithGIS[] = $id_features;
}
switch ($config["dbtype"]) {
case "mysql":
if (empty($idAgentsWithGIS)) {
$agentsGISStatus = db_get_all_rows_sql('SELECT t1.nombre, id_parent, t1.id_agente AS tagente_id_agente,
IFNULL(t2.stored_longitude, ' . $defaultCoords['default_longitude'] . ') AS stored_longitude,
IFNULL(t2.stored_latitude, ' . $defaultCoords['default_latitude'] . ') AS stored_latitude
FROM tagente t1
LEFT JOIN tgis_data_status t2 ON t1.id_agente = t2.tagente_id_agente
WHERE 1 = 0');
}
else {
$agentsGISStatus = db_get_all_rows_sql('SELECT t1.nombre, id_parent, t1.id_agente AS tagente_id_agente,
IFNULL(t2.stored_longitude, ' . $defaultCoords['default_longitude'] . ') AS stored_longitude,
IFNULL(t2.stored_latitude, ' . $defaultCoords['default_latitude'] . ') AS stored_latitude
FROM tagente t1
LEFT JOIN tgis_data_status t2 ON t1.id_agente = t2.tagente_id_agente
WHERE id_agente IN (' . implode(',', $idAgentsWithGIS) . ')');
}
break;
case "postgresql":
if (empty($idAgentsWithGIS)) {
$agentsGISStatus = db_get_all_rows_sql('SELECT t1.nombre, id_parent, t1.id_agente AS tagente_id_agente,
COALESCE(t2.stored_longitude, ' . $defaultCoords['default_longitude'] . ') AS stored_longitude,
COALESCE(t2.stored_latitude, ' . $defaultCoords['default_latitude'] . ') AS stored_latitude
FROM tagente t1
LEFT JOIN tgis_data_status t2 ON t1.id_agente = t2.tagente_id_agente
WHERE 1 = 0');
}
else {
$agentsGISStatus = db_get_all_rows_sql('SELECT t1.nombre, id_parent, t1.id_agente AS tagente_id_agente,
COALESCE(t2.stored_longitude, ' . $defaultCoords['default_longitude'] . ') AS stored_longitude,
COALESCE(t2.stored_latitude, ' . $defaultCoords['default_latitude'] . ') AS stored_latitude
FROM tagente t1
LEFT JOIN tgis_data_status t2 ON t1.id_agente = t2.tagente_id_agente
WHERE id_agente IN (' . implode(',', $idAgentsWithGIS) . ')');
}
break;
case "oracle":
if (empty($idAgentsWithGIS)) {
$agentsGISStatus = db_get_all_rows_sql('SELECT t1.nombre, id_parent, t1.id_agente AS tagente_id_agente,
COALESCE(t2.stored_longitude, ' . $defaultCoords['default_longitude'] . ') AS stored_longitude,
COALESCE(t2.stored_latitude, ' . $defaultCoords['default_latitude'] . ') AS stored_latitude
FROM tagente t1
LEFT JOIN tgis_data_status t2 ON t1.id_agente = t2.tagente_id_agente
WHERE 1 = 0');
}
else {
$agentsGISStatus = db_get_all_rows_sql('SELECT t1.nombre, id_parent, t1.id_agente AS tagente_id_agente,
COALESCE(t2.stored_longitude, ' . $defaultCoords['default_longitude'] . ') AS stored_longitude,
COALESCE(t2.stored_latitude, ' . $defaultCoords['default_latitude'] . ') AS stored_latitude
FROM tagente t1
LEFT JOIN tgis_data_status t2 ON t1.id_agente = t2.tagente_id_agente
WHERE id_agente IN (' . implode(',', $idAgentsWithGIS) . ')');
}
break;
}
if ($agentsGISStatus === false) {
$agentsGISStatus = array();
}
$agents = null;
foreach ($agentsGISStatus as $row) {
$status = agents_get_status($row['tagente_id_agente']);
if (!$config['gis_label'])
$row['nombre'] = '';
$icon = gis_get_agent_icon_map($row['tagente_id_agente'], true, $status);
if ($icon[0] !== '/') {
$icon_size = getimagesize($config['homedir'] . "/" . $icon);
}
else {
$icon_size = getimagesize($config['homedir'] . $icon);
}
$icon_width = $icon_size[0];
$icon_height = $icon_size[1];
$agents[$row['tagente_id_agente']] = array(
'icon_path' => $config["homeurl"] . '/' . $icon,
'icon_width' => $icon_width,
'icon_height' => $icon_height,
'name' => $row['nombre'],
'status' => $status,
'stored_longitude' => $row['stored_longitude'],
'stored_latitude' => $row['stored_latitude'],
'id_parent' => $row['id_parent']
);
}
$returnJSON['content'] = json_encode($agents);
echo json_encode($returnJSON);
break;
case 'point_path_info':
$id = get_parameter('id');
$row = db_get_row_sql('SELECT * FROM tgis_data_history WHERE id_tgis_data = ' . $id);
$returnJSON = array();
$returnJSON['correct'] = 1;
$returnJSON['content'] = __('Agent') . ': '.agents_get_name($row['tagente_id_agente']).'
';
$returnJSON['content'] .= __('Position (Lat, Long, Alt)') . ': (' . $row['latitude'] . ', ' . $row['longitude'] . ', ' . $row['altitude'] . ')
';
$returnJSON['content'] .= __('Start contact') . ': ' . $row['start_timestamp'] . '
';
$returnJSON['content'] .= __('Last contact') . ': ' . $row['end_timestamp'] . '
';
$returnJSON['content'] .= __('Num reports') . ': '.$row['number_of_packages'].'
';
if ($row['manual_placemen'])
$returnJSON['content'] .= '
' . __('Manual placement') . '
';
echo json_encode($returnJSON);
break;
case 'point_agent_info':
$id = get_parameter('id');
$agent = db_get_row_sql('SELECT * FROM tagente WHERE id_agente = ' . $id);
$agentDataGIS = gis_get_data_last_position_agent($agent['id_agente']);
$returnJSON = array();
$returnJSON['correct'] = 1;
$returnJSON['content'] = '';
$content = '';
$table = new StdClass();
$table->class = 'blank';
$table->style = array();
$table->style[0] = 'font-weight: bold';
$table->rowstyle = array();
$table->data = array();
// Agent name
$row = array();
$row[] = __('Agent');
$row[] = ''.$agent['nombre'].'';
$table->data[] = $row;
// Position
$row = array();
$row[] = __('Position (Lat, Long, Alt)');
//it's positioned in default position of map.
if ($agentDataGIS === false) {
$row[] = __("Default position of map.");
}
else {
$row[] = '(' . $agentDataGIS['stored_latitude'] . ', ' . $agentDataGIS['stored_longitude'] . ', ' . $agentDataGIS['stored_altitude'] . ')';
}
$table->data[] = $row;
// IP
$agent_ip_address = agents_get_address ($id);
if ($agent_ip_address || $agent_ip_address != '') {
$row = array();
$row[] = __('IP Address');
$row[] = agents_get_address($id);
$table->data[] = $row;
}
// OS
$row = array();
$row[] = __('OS');
$osversion_offset = strlen($agent["os_version"]);
if ($osversion_offset > 15) {
$osversion_offset = $osversion_offset - 15;
}
else {
$osversion_offset = 0;
}
$row[] = ui_print_os_icon($agent['id_os'], true, true)
. ' ('
. substr($agent["os_version"],$osversion_offset,15).')';
$table->data[] = $row;
// URL
$agent_url = $agent['url_address'];
if (!empty($agent_url)) {
$row = array();
$row[] = __('URL');
$row[] = "" . ui_print_truncate_text($agent_url, 20) . "";
$table->data[] = $row;
}
// Description
$agent_description = $agent['comentarios'];
if ($agent_description || $agent_description != '') {
$row = array();
$row[] = __('Description');
$row[] = $agent_description;
$table->data[] = $row;
}
// Group
$row = array();
$row[] = __('Group');
$row[] = groups_get_name($agent["id_grupo"]);
$table->data[] = $row;
// Agent version
$row = array();
$row[] = __('Agent Version');
$row[] = $agent["agent_version"];
$table->data[] = $row;
// Last contact
$row = array();
$row[] = __('Last contact');
if ($agent["ultimo_contacto"] == "01-01-1970 00:00:00") {
$row[] = __('Never');
}
else {
$row[] = $agent["ultimo_contacto"];
}
$table->data[] = $row;
// Last remote contact
$row = array();
$row[] = __('Remote');
if ($agent["ultimo_contacto_remoto"] == "01-01-1970 00:00:00") {
$row[] = __('Never');
}
else {
$row[] = $agent["ultimo_contacto_remoto"];
}
$table->data[] = $row;
// To remove the grey background color of the classes datos and datos2
for ($i = 0; $i < count($table->data); $i++)
$table->rowstyle[] = 'background-color: inherit;';
// Save table
$returnJSON['content'] = html_print_table($table, true);
echo json_encode($returnJSON);
break;
case 'get_map_connection_data':
$idConnection = get_parameter('id_connection');
$returnJSON = array();
$returnJSON['correct'] = 1;
$returnJSON['content'] = db_get_row_sql('SELECT * FROM tgis_map_connection WHERE id_tmap_connection = ' . $idConnection);
echo json_encode($returnJSON);
break;
}
?>