diff --git a/application/controllers/Satellite.php b/application/controllers/Satellite.php
index 7c2f6579f..0cee3b32f 100644
--- a/application/controllers/Satellite.php
+++ b/application/controllers/Satellite.php
@@ -176,10 +176,13 @@ class Satellite extends CI_Controller {
public function pass() {
$this->load->model('satellite_model');
$this->load->model('stations');
+ $this->load->model('user_model');
+
$active_station_id = $this->stations->find_active();
$pageData['activegrid'] = $this->stations->gridsquare_from_station($active_station_id);
$pageData['satellites'] = $this->satellite_model->get_all_satellites_with_tle();
+ $pageData['timezones'] = $this->user_model->timezones();
$footerData = [];
$footerData['scripts'] = [
@@ -261,7 +264,7 @@ class Satellite extends CI_Controller {
$results = $predict->get_passes($sat, $qth, $now, 1);
$filtered = $predict->filterVisiblePasses($results);
- $zone = $this->security->xss_clean($this->input->post('timezone'));
+ $offset = $this->security->xss_clean($this->input->post('timezone'));
// Get Date format
if ($this->session->userdata('user_date_format')) {
@@ -275,7 +278,7 @@ class Satellite extends CI_Controller {
$format = $custom_date_format . ' H:i:s';
$data['filtered'] = $filtered;
- $data['zone'] = $zone;
+ $data['offset'] = $offset;
$data['format'] = $format;
$this->load->view('satellite/passtable', $data);
}
diff --git a/application/models/User_model.php b/application/models/User_model.php
index 033d0e857..c4c056a83 100644
--- a/application/models/User_model.php
+++ b/application/models/User_model.php
@@ -590,12 +590,8 @@ class User_Model extends CI_Model {
// FUNCTION: array timezones()
// Returns a list of timezones
function timezones() {
- $r = $this->db->query('SELECT id, name FROM timezones ORDER BY `offset`');
- $ts = array();
- foreach ($r->result_array() as $t) {
- $ts[$t['id']] = $t['name'];
- }
- return $ts;
+ $r = $this->db->query('SELECT * FROM timezones ORDER BY `offset`');
+ return $r->result();
}
// FUNCTION: array getThemes()
diff --git a/application/views/satellite/pass.php b/application/views/satellite/pass.php
index 1ea45f05c..3d8dae4a6 100644
--- a/application/views/satellite/pass.php
+++ b/application/views/satellite/pass.php
@@ -35,438 +35,9 @@
= __("Timezone"); ?>
- Africa/Abidjan
- Africa/Accra
- Africa/Addis_Ababa
- Africa/Algiers
- Africa/Asmara
- Africa/Bamako
- Africa/Bangui
- Africa/Banjul
- Africa/Bissau
- Africa/Blantyre
- Africa/Brazzaville
- Africa/Bujumbura
- Africa/Cairo
- Africa/Casablanca
- Africa/Ceuta
- Africa/Conakry
- Africa/Dakar
- Africa/Dar_es_Salaam
- Africa/Djibouti
- Africa/Douala
- Africa/El_Aaiun
- Africa/Freetown
- Africa/Gaborone
- Africa/Harare
- Africa/Johannesburg
- Africa/Juba
- Africa/Kampala
- Africa/Khartoum
- Africa/Kigali
- Africa/Kinshasa
- Africa/Lagos
- Africa/Libreville
- Africa/Lome
- Africa/Luanda
- Africa/Lubumbashi
- Africa/Lusaka
- Africa/Malabo
- Africa/Maputo
- Africa/Maseru
- Africa/Mbabane
- Africa/Mogadishu
- Africa/Monrovia
- Africa/Nairobi
- Africa/Ndjamena
- Africa/Niamey
- Africa/Nouakchott
- Africa/Ouagadougou
- Africa/Porto-Novo
- Africa/Sao_Tome
- Africa/Tripoli
- Africa/Tunis
- Africa/Windhoek
- America/Adak
- America/Anchorage
- America/Anguilla
- America/Antigua
- America/Araguaina
- America/Argentina/Buenos_Aires
- America/Argentina/Catamarca
- America/Argentina/Cordoba
- America/Argentina/Jujuy
- America/Argentina/La_Rioja
- America/Argentina/Mendoza
- America/Argentina/Rio_Gallegos
- America/Argentina/Salta
- America/Argentina/San_Juan
- America/Argentina/San_Luis
- America/Argentina/Tucuman
- America/Argentina/Ushuaia
- America/Aruba
- America/Asuncion
- America/Atikokan
- America/Bahia
- America/Bahia_Banderas
- America/Barbados
- America/Belem
- America/Belize
- America/Blanc-Sablon
- America/Boa_Vista
- America/Bogota
- America/Boise
- America/Cambridge_Bay
- America/Campo_Grande
- America/Cancun
- America/Caracas
- America/Cayenne
- America/Cayman
- America/Chicago
- America/Chihuahua
- America/Ciudad_Juarez
- America/Costa_Rica
- America/Creston
- America/Cuiaba
- America/Curacao
- America/Danmarkshavn
- America/Dawson
- America/Dawson_Creek
- America/Denver
- America/Detroit
- America/Dominica
- America/Edmonton
- America/Eirunepe
- America/El_Salvador
- America/Fort_Nelson
- America/Fortaleza
- America/Glace_Bay
- America/Goose_Bay
- America/Grand_Turk
- America/Grenada
- America/Guadeloupe
- America/Guatemala
- America/Guayaquil
- America/Guyana
- America/Halifax
- America/Havana
- America/Hermosillo
- America/Indiana/Indianapolis
- America/Indiana/Knox
- America/Indiana/Marengo
- America/Indiana/Petersburg
- America/Indiana/Tell_City
- America/Indiana/Vevay
- America/Indiana/Vincennes
- America/Indiana/Winamac
- America/Inuvik
- America/Iqaluit
- America/Jamaica
- America/Juneau
- America/Kentucky/Louisville
- America/Kentucky/Monticello
- America/Kralendijk
- America/La_Paz
- America/Lima
- America/Los_Angeles
- America/Lower_Princes
- America/Maceio
- America/Managua
- America/Manaus
- America/Marigot
- America/Martinique
- America/Matamoros
- America/Mazatlan
- America/Menominee
- America/Merida
- America/Metlakatla
- America/Mexico_City
- America/Miquelon
- America/Moncton
- America/Monterrey
- America/Montevideo
- America/Montserrat
- America/Nassau
- America/New_York
- America/Nome
- America/Noronha
- America/North_Dakota/Beulah
- America/North_Dakota/Center
- America/North_Dakota/New_Salem
- America/Nuuk
- America/Ojinaga
- America/Panama
- America/Paramaribo
- America/Phoenix
- America/Port-au-Prince
- America/Port_of_Spain
- America/Porto_Velho
- America/Puerto_Rico
- America/Punta_Arenas
- America/Rankin_Inlet
- America/Recife
- America/Regina
- America/Resolute
- America/Rio_Branco
- America/Santarem
- America/Santiago
- America/Santo_Domingo
- America/Sao_Paulo
- America/Scoresbysund
- America/Sitka
- America/St_Barthelemy
- America/St_Johns
- America/St_Kitts
- America/St_Lucia
- America/St_Thomas
- America/St_Vincent
- America/Swift_Current
- America/Tegucigalpa
- America/Thule
- America/Tijuana
- America/Toronto
- America/Tortola
- America/Vancouver
- America/Whitehorse
- America/Winnipeg
- America/Yakutat
- Antarctica/Casey
- Antarctica/Davis
- Antarctica/DumontDUrville
- Antarctica/Macquarie
- Antarctica/Mawson
- Antarctica/McMurdo
- Antarctica/Palmer
- Antarctica/Rothera
- Antarctica/Syowa
- Antarctica/Troll
- Antarctica/Vostok
- Arctic/Longyearbyen
- Asia/Aden
- Asia/Almaty
- Asia/Amman
- Asia/Anadyr
- Asia/Aqtau
- Asia/Aqtobe
- Asia/Ashgabat
- Asia/Atyrau
- Asia/Baghdad
- Asia/Bahrain
- Asia/Baku
- Asia/Bangkok
- Asia/Barnaul
- Asia/Beirut
- Asia/Bishkek
- Asia/Brunei
- Asia/Chita
- Asia/Choibalsan
- Asia/Colombo
- Asia/Damascus
- Asia/Dhaka
- Asia/Dili
- Asia/Dubai
- Asia/Dushanbe
- Asia/Famagusta
- Asia/Gaza
- Asia/Hebron
- Asia/Ho_Chi_Minh
- Asia/Hong_Kong
- Asia/Hovd
- Asia/Irkutsk
- Asia/Jakarta
- Asia/Jayapura
- Asia/Jerusalem
- Asia/Kabul
- Asia/Kamchatka
- Asia/Karachi
- Asia/Kathmandu
- Asia/Khandyga
- Asia/Kolkata
- Asia/Krasnoyarsk
- Asia/Kuala_Lumpur
- Asia/Kuching
- Asia/Kuwait
- Asia/Macau
- Asia/Magadan
- Asia/Makassar
- Asia/Manila
- Asia/Muscat
- Asia/Nicosia
- Asia/Novokuznetsk
- Asia/Novosibirsk
- Asia/Omsk
- Asia/Oral
- Asia/Phnom_Penh
- Asia/Pontianak
- Asia/Pyongyang
- Asia/Qatar
- Asia/Qostanay
- Asia/Qyzylorda
- Asia/Riyadh
- Asia/Sakhalin
- Asia/Samarkand
- Asia/Seoul
- Asia/Shanghai
- Asia/Singapore
- Asia/Srednekolymsk
- Asia/Taipei
- Asia/Tashkent
- Asia/Tbilisi
- Asia/Tehran
- Asia/Thimphu
- Asia/Tokyo
- Asia/Tomsk
- Asia/Ulaanbaatar
- Asia/Urumqi
- Asia/Ust-Nera
- Asia/Vientiane
- Asia/Vladivostok
- Asia/Yakutsk
- Asia/Yangon
- Asia/Yekaterinburg
- Asia/Yerevan
- Atlantic/Azores
- Atlantic/Bermuda
- Atlantic/Canary
- Atlantic/Cape_Verde
- Atlantic/Faroe
- Atlantic/Madeira
- Atlantic/Reykjavik
- Atlantic/South_Georgia
- Atlantic/St_Helena
- Atlantic/Stanley
- Australia/Adelaide
- Australia/Brisbane
- Australia/Broken_Hill
- Australia/Darwin
- Australia/Eucla
- Australia/Hobart
- Australia/Lindeman
- Australia/Lord_Howe
- Australia/Melbourne
- Australia/Perth
- Australia/Sydney
- Europe/Amsterdam
- Europe/Andorra
- Europe/Astrakhan
- Europe/Athens
- Europe/Belgrade
- Europe/Berlin
- Europe/Bratislava
- Europe/Brussels
- Europe/Bucharest
- Europe/Budapest
- Europe/Busingen
- Europe/Chisinau
- Europe/Copenhagen
- Europe/Dublin
- Europe/Gibraltar
- Europe/Guernsey
- Europe/Helsinki
- Europe/Isle_of_Man
- Europe/Istanbul
- Europe/Jersey
- Europe/Kaliningrad
- Europe/Kirov
- Europe/Kyiv
- Europe/Lisbon
- Europe/Ljubljana
- Europe/London
- Europe/Luxembourg
- Europe/Madrid
- Europe/Malta
- Europe/Mariehamn
- Europe/Minsk
- Europe/Monaco
- Europe/Moscow
- Europe/Oslo
- Europe/Paris
- Europe/Podgorica
- Europe/Prague
- Europe/Riga
- Europe/Rome
- Europe/Samara
- Europe/San_Marino
- Europe/Sarajevo
- Europe/Saratov
- Europe/Simferopol
- Europe/Skopje
- Europe/Sofia
- Europe/Stockholm
- Europe/Tallinn
- Europe/Tirane
- Europe/Ulyanovsk
- Europe/Vaduz
- Europe/Vatican
- Europe/Vienna
- Europe/Vilnius
- Europe/Volgograd
- Europe/Warsaw
- Europe/Zagreb
- Europe/Zurich
- Indian/Antananarivo
- Indian/Chagos
- Indian/Christmas
- Indian/Cocos
- Indian/Comoro
- Indian/Kerguelen
- Indian/Mahe
- Indian/Maldives
- Indian/Mauritius
- Indian/Mayotte
- Indian/Reunion
- Pacific/Apia
- Pacific/Auckland
- Pacific/Bougainville
- Pacific/Chatham
- Pacific/Chuuk
- Pacific/Easter
- Pacific/Efate
- Pacific/Fakaofo
- Pacific/Fiji
- Pacific/Funafuti
- Pacific/Galapagos
- Pacific/Gambier
- Pacific/Guadalcanal
- Pacific/Guam
- Pacific/Honolulu
- Pacific/Kanton
- Pacific/Kiritimati
- Pacific/Kosrae
- Pacific/Kwajalein
- Pacific/Majuro
- Pacific/Marquesas
- Pacific/Midway
- Pacific/Nauru
- Pacific/Niue
- Pacific/Norfolk
- Pacific/Noumea
- Pacific/Pago_Pago
- Pacific/Palau
- Pacific/Pitcairn
- Pacific/Pohnpei
- Pacific/Port_Moresby
- Pacific/Rarotonga
- Pacific/Saipan
- Pacific/Tahiti
- Pacific/Tarawa
- Pacific/Tongatapu
- Pacific/Wake
- Pacific/Wallis
- UTC
- Etc/GMT-12 Etc/GMT-11
- Etc/GMT-10 Etc/GMT-9
- Etc/GMT-8 Etc/GMT-7
- Etc/GMT-6 Etc/GMT-5
- Etc/GMT-4 Etc/GMT-3
- Etc/GMT-2 Etc/GMT-1
- Etc/GMT+0 Etc/GMT+1
- Etc/GMT+2 Etc/GMT+3
- Etc/GMT+4 Etc/GMT+5
- Etc/GMT+6 Etc/GMT+7
- Etc/GMT+8 Etc/GMT+9
- Etc/GMT+10 Etc/GMT+11
- Etc/GMT+12
+ offset . '"' . ($timezone->id == 24 ? ' selected' : '') . '>' . $timezone->name . ''."\n";
+ } ?>
diff --git a/application/views/satellite/passtable.php b/application/views/satellite/passtable.php
index 78b9a916a..ce567aa34 100644
--- a/application/views/satellite/passtable.php
+++ b/application/views/satellite/passtable.php
@@ -15,12 +15,12 @@ if ($filtered) {
foreach ($filtered as $pass) {
echo '
';
echo '' . $pass->satname . ' ';
- echo '' . Predict_Time::daynum2readable($pass->visible_aos, $zone, $format) . ' ';
- echo '' . returntimediff(Predict_Time::daynum2readable($pass->visible_aos, $zone, $format), Predict_Time::daynum2readable($pass->visible_los, $zone, $format), $format) . ' ';
+ echo '' . Predict_Time::daynum2readable($pass->visible_aos, $offset, $format) . ' ';
+ echo '' . returntimediff(Predict_Time::daynum2readable($pass->visible_aos, $offset, $format), Predict_Time::daynum2readable($pass->visible_los, $offset, $format), $format) . ' ';
echo '' . round($pass->visible_aos_az) . ' (' . azDegreesToDirection($pass->visible_aos_az) . ') ';
echo '' . round($pass->visible_aos_el) . ' ';
echo '' . round($pass->max_el) . ' ';
- echo '' . Predict_Time::daynum2readable($pass->visible_los, $zone, $format) . ' ';
+ echo '' . Predict_Time::daynum2readable($pass->visible_los, $offset, $format) . ' ';
echo '' . round($pass->visible_los_az) . ' (' . azDegreesToDirection($pass->visible_los_az) . ') ';
echo '' . round($pass->visible_los_el) . ' ';
echo ' ';
diff --git a/application/views/user/edit.php b/application/views/user/edit.php
index d1b929691..0f5d7f3c6 100644
--- a/application/views/user/edit.php
+++ b/application/views/user/edit.php
@@ -177,10 +177,14 @@
= __("Timezone"); ?>
-
+
+ id . '"' . ($timezone->id === $user_timezone ? ' selected' : '') . '>' . $timezone->name . ''."\n";
+ }
+ ?>
+
diff --git a/predict/Predict/Time.php b/predict/Predict/Time.php
index bfb515850..d382d500d 100644
--- a/predict/Predict/Time.php
+++ b/predict/Predict/Time.php
@@ -184,17 +184,24 @@ class Predict_Time
* Converts a daynum to a readable time format.
*
* @param float $dn The julian date
- * @param string $zone The zone string, defaults to America/Los_Angeles
+ * @param float $offset Offset in hours compared to UTC
* @param string $format The date() function's format string. Defaults to m-d-Y H:i:s
*
* @return string
*/
- public static function daynum2readable($dn, $zone = 'America/Los_Angeles', $format = 'm-d-Y H:i:s')
+ public static function daynum2readable($dn, $offset = 0.0, $format = 'm-d-Y H:i:s')
{
+ // Calc the unix timestamp
$unix = self::daynum2unix($dn);
+
+ // Create a DateTime object based on the unix timestamp
$date = new DateTime("@" . round($unix));
- $dateTimezone = new DateTimezone($zone);
- $date->setTimezone($dateTimezone);
+
+ // Use the offset to adjust the time
+ $secondsOffset = $offset * 3600;
+ $date->modify("$secondsOffset seconds");
+
+ // Format and return the date
return $date->format($format);
}
@@ -211,7 +218,7 @@ class Predict_Time
$day = $tle->epoch_day;
$sec = round(86400 * $tle->epoch_fod);
- $zone = new DateTimeZone('GMT');
+ $zone = new DateTimeZone('UTC');
$date = new DateTime();
$date->setTimezone($zone);
$date->setDate($year, 1, 1);