From b45cfda3eb3e6bf134bb61a14f16ec2f9bd31ecd Mon Sep 17 00:00:00 2001 From: Andreas <6977712+AndreasK79@users.noreply.github.com> Date: Mon, 1 May 2023 15:25:30 +0200 Subject: [PATCH] [ADIF Backup] Added so that ADIF can be backed up with cron and api key --- application/controllers/Backup.php | 4 ++-- application/models/Adif_data.php | 20 ++++++++++++++++---- 2 files changed, 18 insertions(+), 6 deletions(-) diff --git a/application/controllers/Backup.php b/application/controllers/Backup.php index 9859c6ab..00d01193 100644 --- a/application/controllers/Backup.php +++ b/application/controllers/Backup.php @@ -20,14 +20,14 @@ class Backup extends CI_Controller { } /* Gets all QSOs and Dumps them to logbook.adi */ - public function adif(){ + public function adif($key){ $this->load->helper('file'); // Set memory limit to unlimited to allow heavy usage ini_set('memory_limit', '-1'); $this->load->model('adif_data'); - $data['qsos'] = $this->adif_data->export_all(); + $data['qsos'] = $this->adif_data->export_all($key); if ( ! write_file('backup/logbook.adi', $this->load->view('backup/exportall', $data, true))) { diff --git a/application/models/Adif_data.php b/application/models/Adif_data.php index 294bdcf3..4043bc2c 100644 --- a/application/models/Adif_data.php +++ b/application/models/Adif_data.php @@ -2,13 +2,25 @@ class adif_data extends CI_Model { - function export_all() { - $this->load->model('stations'); - $active_station_id = $this->stations->find_active(); + function export_all($api_key = null) { + if ($api_key != null) { + $CI =& get_instance(); + $CI->load->model('api_model'); + if (strpos($this->api_model->access($api_key), 'r') !== false) { + $CI->load->model('logbooks_model'); + $this->api_model->update_last_used($api_key); + $user_id = $this->api_model->key_userid($api_key); + $active_station_logbook = $CI->logbooks_model->find_active_station_logbook_from_userid($user_id); + $logbooks_locations_array = $CI->logbooks_model->list_logbook_relationships($active_station_logbook); + } + } else { + $logbooks_locations_array = $CI->logbooks_model->list_logbook_relationships($this->session->userdata('active_station_logbook')); + } + $this->db->select($this->config->item('table_name').'.*, station_profile.*, dxcc_entities.name as station_country'); - $this->db->where($this->config->item('table_name').'.station_id', $active_station_id); $this->db->order_by("COL_TIME_ON", "ASC"); $this->db->join('station_profile', 'station_profile.station_id = '.$this->config->item('table_name').'.station_id'); + $this->db->where_in('station_profile.station_id', $logbooks_locations_array); $this->db->join('dxcc_entities', 'station_profile.station_dxcc = dxcc_entities.adif'); $query = $this->db->get($this->config->item('table_name'));