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 @@
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 @@
- +
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);