$value) { $url .= '&'.safe_url_extraclean($key).'='.safe_url_extraclean($value); } echo "
"; // Map with the current position echo '
'; if (!gis_get_agent_map($id_agente, '500px', '100%', true, true, $period)) { ui_print_error_message(__('There is no default map. Please go to the setup for to set a default map.')); echo ""; } switch ($config['dbtype']) { case 'mysql': $timestampLastOperation = db_get_value_sql( 'SELECT UNIX_TIMESTAMP()' ); break; case 'postgresql': $timestampLastOperation = db_get_value_sql( "SELECT ceil(date_part('epoch', CURRENT_TIMESTAMP))" ); break; case 'oracle': $timestampLastOperation = db_get_value_sql( "SELECT ceil((sysdate - to_date('19700101000000','YYYYMMDDHH24MISS')) * (".SECONDS_1DAY.')) from dual' ); break; } gis_activate_ajax_refresh(null, $timestampLastOperation); gis_activate_select_control(); echo '
'; echo "
"; echo ""; echo '
'.__('Period to show data as path'); echo ''; html_print_extended_select_for_time('period', $period, '', '', '0', 10); echo ''; html_print_submit_button(__('Refresh path'), 'refresh', false, 'class = "sub upd" style="margin-top:0px"'); echo '
'; // Get the total number of Elements for the pagination $sqlCount = sprintf( 'SELECT COUNT(*) FROM tgis_data_history WHERE tagente_id_agente = %d AND end_timestamp > FROM_UNIXTIME(%d) ORDER BY end_timestamp DESC', $agentId, (get_system_time() - $period) ); $countData = (int) db_get_value_sql($sqlCount); // Get the elements to present in this page switch ($config['dbtype']) { case 'mysql': $sql = sprintf( ' SELECT longitude, latitude, altitude, start_timestamp, end_timestamp, description, number_of_packages, manual_placement FROM tgis_data_history WHERE tagente_id_agente = %d AND end_timestamp > FROM_UNIXTIME(%d) ORDER BY end_timestamp DESC LIMIT %d OFFSET %d', $agentId, (get_system_time() - $period), $config['block_size'], (int) get_parameter('offset') ); break; case 'postgresql': case 'oracle': $set = []; $set['limit'] = $config['block_size']; $set['offset'] = (int) get_parameter('offset'); $sql = sprintf( ' SELECT longitude, latitude, altitude, start_timestamp, end_timestamp, description, number_of_packages, manual_placement FROM tgis_data_history WHERE tagente_id_agente = %d AND end_timestamp > FROM_UNIXTIME(%d) ORDER BY end_timestamp DESC', $agentId, (get_system_time() - $period) ); $sql = oracle_recode_query($sql, $set); break; } $result = db_get_all_rows_sql($sql, true); if ($result === false) { $sql2 = sprintf( ' SELECT current_longitude AS longitude, current_latitude AS latitude, current_altitude AS altitude, start_timestamp, description, number_of_packages, manual_placement FROM tgis_data_status WHERE tagente_id_agente = %d ORDER BY start_timestamp DESC LIMIT %d OFFSET %d', $agentId, $config['block_size'], (int) get_parameter('offset') ); $result2 = db_get_all_rows_sql($sql2, true); if ($result2 === false) { ui_print_empty_data(__('This agent doesn\'t have any GIS data.')); } else { $result2[0]['end_timestamp'] = date('Y-m-d H:i:s'); $result = $result2; } } if ($result !== false) { echo '

'.__('Positional data from the last').' '.human_time_description_raw($period).'

'; if ($countData > 0) { ui_pagination($countData, false); } $table = new StdClass(); $table->data = []; foreach ($result as $key => $row) { $distance = 0; if (isset($result[($key - 1)])) { $distance = gis_calculate_distance( $row['latitude'], $row['longitude'], $result[($key - 1)]['latitude'], $result[($key - 1)]['longitude'] ); } else { $dataLastPosition = gis_get_data_last_position_agent($agentId); if ($dataLastPosition !== false) { $distance = gis_calculate_distance( $row['latitude'], $row['longitude'], $dataLastPosition['stored_latitude'], $dataLastPosition['stored_longitude'] ); } } $rowdata = [ $row['longitude'], $row['latitude'], (int) $row['altitude'].' m', is_numeric($row['start_timestamp']) ? date($config['date_format'], $row['start_timestamp']) : date_w_fixed_tz($row['start_timestamp']), is_numeric($row['end_timestamp']) ? date($config['date_format'], $row['end_timestamp']) : date_w_fixed_tz($row['end_timestamp']), $row['description'], sprintf(__('%s Km'), $distance), $row['number_of_packages'], $row['manual_placement'], ]; array_push($table->data, $rowdata); } $table->head = [ __('Longitude'), __('Latitude'), __('Altitude'), __('From'), __('To'), __('Description'), __('Distance'), __('# of Packages'), __('Manual placement'), ]; $table->class = 'databox data'; $table->id = $agent_name.'_position_data_table'; $table->width = '100%'; html_print_table($table); unset($table); if ($countData > 0) { ui_pagination($countData, false); } }