public static function checkTranslation($ident, $web = true) { global $globalTranslationSources, $globalTranslationFetch; if (!isset($globalTranslationSources)) { $globalTranslationSources = array('planefinder'); } if (!isset($globalTranslationFetch)) { $globalTranslationFetch = TRUE; } //echo "Check Translation for ".$ident."..."; $correct = Translation::getOperator($ident); if ($correct != '' && $correct != $ident) { //echo "Found in DB !\n"; return $correct; } elseif ($web && $globalTranslationFetch) { if (!is_numeric(substr($ident, -4))) { if (count($globalTranslationSources) > 0) { $correct = Translation::fromPlanefinder($ident); if ($correct != '') { $correct = Translation::ident2icao($correct); if ($correct != $ident) { Translation::addOperator($ident, $correct, 'planefinder'); //echo "Add to DB ! (".$correct.") \n"; return $correct; } } } } } return Translation::ident2icao($ident); }
/** * Add ModeS data to DB * * @param String $ident ident * @param String $registration Registration of the aircraft * @param String $icao * @param String $ICAOTypeCode */ public function addModeSData($ident, $registration, $icao = '', $ICAOTypeCode = '') { global $globalDebug, $globalDBdriver; $ident = trim($ident); $Translation = new Translation(); $Spotter = new Spotter(); if ($globalDebug) { echo "Test if we add ModeS data..."; } //if ($icao == '') $icao = ACARS->ident2icao($ident); if ($icao == '') { $icao = $Translation->checkTranslation($ident); } if ($globalDebug) { echo '- Ident : ' . $icao . ' - '; } if ($ident == '' || $registration == '') { if ($globalDebug) { echo "Ident or registration null, exit\n"; } return ''; } $registration = str_replace('.', '', $registration); $ident = $Translation->ident2icao($ident); // Check if a flight with same registration is flying now, if ok check if callsign = name in ACARS, else add it to translation if ($globalDebug) { echo "Check if needed to add translation " . $ident . '... '; } $querysi = "SELECT ident FROM spotter_live s,aircraft_modes a WHERE a.ModeS = s.ModeS AND a.Registration = :registration LIMIT 1"; $querysi_values = array(':registration' => $registration); try { $sthsi = $this->db->prepare($querysi); $sthsi->execute($querysi_values); } catch (PDOException $e) { if ($globalDebug) { echo $e->getMessage(); } return "error : " . $e->getMessage(); } $resultsi = $sthsi->fetch(PDO::FETCH_ASSOC); //print_r($resultsi); if (count($resultsi) > 0 && $resultsi['ident'] != $ident && $resultsi['ident'] != '') { $Translation = new Translation(); $trans_ident = $Translation->getOperator($resultsi['ident']); if ($globalDebug) { echo 'Add translation to table : ' . $ident . ' -> ' . $resultsi['ident'] . ' '; } if ($ident != $trans_ident) { $Translation->addOperator($resultsi['ident'], $ident, 'ACARS'); } elseif ($trans_ident == $ident) { $Translation->updateOperator($resultsi['ident'], $ident, 'ACARS'); } } if ($globalDebug) { echo 'Done' . "\n"; } $query = "SELECT flightaware_id, ModeS FROM spotter_output WHERE ident = :ident ORDER BY spotter_id DESC LIMIT 1"; $query_values = array(':ident' => $icao); try { $sth = $this->db->prepare($query); $sth->execute($query_values); } catch (PDOException $e) { if ($globalDebug) { echo $e->getMessage(); } return "error : " . $e->getMessage(); } $result = $sth->fetch(PDO::FETCH_ASSOC); //print_r($result); if (isset($result['flightaware_id'])) { if (isset($result['ModeS'])) { $ModeS = $result['ModeS']; } else { $ModeS = ''; } if ($ModeS == '') { $id = explode('-', $result['flightaware_id']); $ModeS = $id[0]; } if ($ModeS != '') { $country = $Spotter->countryFromAircraftRegistration($registration); $queryc = "SELECT * FROM aircraft_modes WHERE ModeS = :modes LIMIT 1"; $queryc_values = array(':modes' => $ModeS); try { $sthc = $this->db->prepare($queryc); $sthc->execute($queryc_values); } catch (PDOException $e) { if ($globalDebug) { echo $e->getMessage(); } return "error : " . $e->getMessage(); } $row = $sthc->fetch(PDO::FETCH_ASSOC); if (count($row) == 0) { if ($globalDebug) { echo " Add to ModeS table - "; } $queryi = "INSERT INTO aircraft_modes (ModeS,ModeSCountry,Registration,ICAOTypeCode,Source) VALUES (:ModeS,:ModeSCountry,:Registration, :ICAOTypeCode,'ACARS')"; $queryi_values = array(':ModeS' => $ModeS, ':ModeSCountry' => $country, ':Registration' => $registration, ':ICAOTypeCode' => $ICAOTypeCode); try { $sthi = $this->db->prepare($queryi); $sthi->execute($queryi_values); } catch (PDOException $e) { if ($globalDebug) { echo $e->getMessage(); } return "error : " . $e->getMessage(); } } else { if ($globalDebug) { echo " Update ModeS table - "; } if ($ICAOTypeCode != '') { $queryi = "UPDATE aircraft_modes SET ModeSCountry = :ModeSCountry,Registration = :Registration,ICAOTypeCode = :ICAOTypeCode,Source = 'ACARS',LastModified = NOW() WHERE ModeS = :ModeS"; $queryi_values = array(':ModeS' => $ModeS, ':ModeSCountry' => $country, ':Registration' => $registration, ':ICAOTypeCode' => $ICAOTypeCode); } else { $queryi = "UPDATE aircraft_modes SET ModeSCountry = :ModeSCountry,Registration = :Registration,Source = 'ACARS',LastModified = NOW() WHERE ModeS = :ModeS"; $queryi_values = array(':ModeS' => $ModeS, ':ModeSCountry' => $country, ':Registration' => $registration); } try { $sthi = $this->db->prepare($queryi); $sthi->execute($queryi_values); } catch (PDOException $e) { if ($globalDebug) { echo $e->getMessage(); } return "error : " . $e->getMessage(); } } /* if ($globalDebug) echo " Update Spotter_live table - "; if ($ICAOTypeCode != '') { $queryi = "UPDATE spotter_live SET registration = :Registration,aircraft_icao = :ICAOTypeCode WHERE ident = :ident"; $queryi_values = array(':Registration' => $registration, ':ICAOTypeCode' => $ICAOTypeCode, ':ident' => $icao); } else { $queryi = "UPDATE spotter_live SET registration = :Registration WHERE ident = :ident"; $queryi_values = array(':Registration' => $registration,':ident' => $icao); } try { $sthi = $this->db->prepare($queryi); $sthi->execute($queryi_values); } catch(PDOException $e) { if ($globalDebug) echo $e->getMessage(); return "error : ".$e->getMessage(); } */ if ($globalDebug) { echo " Update Spotter_output table - "; } if ($ICAOTypeCode != '') { if ($globalDBdriver == 'mysql') { $queryi = "UPDATE spotter_output SET registration = :Registration,aircraft_icao = :ICAOTypeCode WHERE ident = :ident AND date >= date_sub(UTC_TIMESTAMP(), INTERVAL 1 HOUR)"; } else { if ($globalDBdriver == 'pgsql') { $queryi = "UPDATE spotter_output SET registration = :Registration,aircraft_icao = :ICAOTypeCode WHERE ident = :ident AND date >= NOW() AT TIME ZONE 'UTC' - '1 HOUR'->INTERVAL"; } } $queryi_values = array(':Registration' => $registration, ':ICAOTypeCode' => $ICAOTypeCode, ':ident' => $icao); } else { if ($globalDBdriver == 'mysql') { $queryi = "UPDATE spotter_output SET registration = :Registration WHERE ident = :ident AND date >= date_sub(UTC_TIMESTAMP(), INTERVAL 1 HOUR)"; } elseif ($globalDBdriver == 'pgsql') { $queryi = "UPDATE spotter_output SET registration = :Registration WHERE ident = :ident AND date >= NOW() AT TIME ZONE 'UTC' - '1 HOUR'->INTERVAL"; } $queryi_values = array(':Registration' => $registration, ':ident' => $icao); } try { $sthi = $this->db->prepare($queryi); $sthi->execute($queryi_values); } catch (PDOException $e) { if ($globalDebug) { echo $e->getMessage(); } return "error : " . $e->getMessage(); } } } else { if ($globalDebug) { echo " Can't find ModeS in spotter_output - "; } } if ($globalDebug) { echo "Done\n"; } }