From eff165f28e51ba6516b44fe769240c9f8ffa0b72 Mon Sep 17 00:00:00 2001 From: Peter Goodhall Date: Thu, 26 Sep 2019 13:05:28 +0100 Subject: [PATCH] Clublog will upload to logbook based on the station callsign of the station profile --- application/controllers/Clublog.php | 143 ++++++++++++++------------- application/models/Clublog_model.php | 6 +- application/models/Logbook_model.php | 3 +- 3 files changed, 82 insertions(+), 70 deletions(-) diff --git a/application/controllers/Clublog.php b/application/controllers/Clublog.php index b390107b..34ea128b 100644 --- a/application/controllers/Clublog.php +++ b/application/controllers/Clublog.php @@ -23,6 +23,8 @@ class Clublog extends CI_Controller { $this->load->model('logbook_model'); + $this->load->model('stations'); + $this->load->model('clublog_model'); $clublog_info = $this->clublog_model->get_clublog_auth_info($username); @@ -32,84 +34,91 @@ class Clublog extends CI_Controller { exit; } - $data['qsos'] = $this->logbook_model->get_clublog_qsos(); - if($data['qsos']->num_rows()){ - // Create ADIF File of contacts not uploaded to Clublog - $string = $this->load->view('adif/data/clublog', $data, TRUE); + $station_profiles = $this->stations->all_with_count(); - $ranid = uniqid(); - if ( ! write_file('uploads/clublog'.$ranid.'.adi', $string)) { - echo 'Unable to write the file - Make the folder Upload folder has write permissions.'; + if($station_profiles->num_rows()){ + foreach ($station_profiles->result() as $station_row) + { + if($station_row->qso_total > 0) { + $data['qsos'] = $this->logbook_model->get_clublog_qsos($station_row->station_id); + + $string = $this->load->view('adif/data/clublog', $data, TRUE); + + $ranid = uniqid(); + + if ( ! write_file('uploads/clublog'.$ranid.'.adi', $string)) { + echo 'Unable to write the file - Make the folder Upload folder has write permissions.'; + } + else { + + $file_info = get_file_info('uploads/clublog'.$ranid.'.adi'); + + // initialise the curl request + $request = curl_init('https://clublog.org/putlogs.php'); + + if($this->config->item('directory') != "") { + $filepath = $_SERVER['DOCUMENT_ROOT']."/".$this->config->item('directory')."/".$file_info['server_path']; + } else { + $filepath = $_SERVER['DOCUMENT_ROOT']."/".$file_info['server_path']; + } + + if (function_exists('curl_file_create')) { // php 5.5+ + $cFile = curl_file_create($filepath); + } else { // + $cFile = '@' . realpath($filepath); + } + + // send a file + curl_setopt($request, CURLOPT_POST, true); + curl_setopt( + $request, + CURLOPT_POSTFIELDS, + array( + 'email' => $clublog_info['user_clublog_name'], + 'password' => $clublog_info['user_clublog_password'], + 'callsign' => $station_row->station_callsign, + 'api' => "a11c3235cd74b88212ce726857056939d52372bd", + 'file' => $cFile + )); + + // output the response + curl_setopt($request, CURLOPT_RETURNTRANSFER, true); + $response = curl_exec($request); + $info = curl_getinfo($request); + + if(curl_errno($request)) { + echo curl_error($request); + } + curl_close ($request); + + + // If Clublog Accepts mark the QSOs + if (preg_match('/\baccepted\b/', $response)) { + echo "QSOs uploaded and Logbook QSOs marked as sent to Clublog"; + + $this->load->model('clublog_model'); + $this->clublog_model->mark_qsos_sent($station_row->station_id); + } else { + echo "Error ".$response; + } + + } + } + } else { + echo "Nothing awaiting upload to clublog"; } - else { - - $file_info = get_file_info('uploads/clublog'.$ranid.'.adi'); - - // initialise the curl request - $request = curl_init('https://clublog.org/putlogs.php'); - - if($this->config->item('directory') != "") { - $filepath = $_SERVER['DOCUMENT_ROOT']."/".$this->config->item('directory')."/".$file_info['server_path']; - } else { - $filepath = $_SERVER['DOCUMENT_ROOT']."/".$file_info['server_path']; - } - - if (function_exists('curl_file_create')) { // php 5.5+ - $cFile = curl_file_create($filepath); - } else { // - $cFile = '@' . realpath($filepath); - } - - // send a file - curl_setopt($request, CURLOPT_POST, true); - curl_setopt( - $request, - CURLOPT_POSTFIELDS, - array( - 'email' => $clublog_info['user_clublog_name'], - 'password' => $clublog_info['user_clublog_password'], - 'callsign' => $clublog_info['user_clublog_callsign'], - 'api' => "a11c3235cd74b88212ce726857056939d52372bd", - 'file' => $cFile - )); - - // output the response - curl_setopt($request, CURLOPT_RETURNTRANSFER, true); - $response = curl_exec($request); - $info = curl_getinfo($request); - - if(curl_errno($request)) { - echo curl_error($request); - } - curl_close ($request); - - - // If Clublog Accepts mark the QSOs - if (preg_match('/\baccepted\b/', $response)) { - echo "QSOs uploaded and Logbook QSOs marked as sent to Clublog"; - - $this->load->model('clublog_model'); - $this->clublog_model->mark_qsos_sent(); - } else { - echo "Error ".$response; - } - - } - } else { - echo "Nothing awaiting upload to clublog"; } - } - function markqso() { + function markqso($station_id) { $this->load->model('clublog_model'); - $this->clublog_model->mark_qsos_sent(); + $this->clublog_model->mark_qsos_sent($station_id); } function markallnotsent() { $this->load->model('clublog_model'); - $this->clublog_model->mark_all_qsos_notsent(); + $this->clublog_model->mark_all_qsos_notsent($station_id); } // Find DXCC diff --git a/application/models/Clublog_model.php b/application/models/Clublog_model.php index 737bc408..e8469919 100644 --- a/application/models/Clublog_model.php +++ b/application/models/Clublog_model.php @@ -14,24 +14,26 @@ class Clublog_model extends CI_Model { return $row = $query->row_array(); } - function mark_qsos_sent() { + function mark_qsos_sent($station_id) { $data = array( 'COL_CLUBLOG_QSO_UPLOAD_DATE' => date('Y-m-d'), 'COL_CLUBLOG_QSO_UPLOAD_STATUS' => "Y", ); + $this->db->where("station_id", $station_id); $this->db->where("COL_CLUBLOG_QSO_UPLOAD_STATUS", null); $this->db->or_where("COL_CLUBLOG_QSO_UPLOAD_STATUS", ""); $this->db->or_where("COL_CLUBLOG_QSO_UPLOAD_STATUS", "N"); $this->db->update($this->config->item('table_name'), $data); } - function mark_all_qsos_notsent() { + function mark_all_qsos_notsent($station_id) { $data = array( 'COL_CLUBLOG_QSO_UPLOAD_DATE' => null, 'COL_CLUBLOG_QSO_UPLOAD_STATUS' => "N", ); + $this->db->where("station_id", $station_id); $this->db->where("COL_CLUBLOG_QSO_UPLOAD_STATUS", "Y"); $this->db->update($this->config->item('table_name'), $data); } diff --git a/application/models/Logbook_model.php b/application/models/Logbook_model.php index 38455aae..1b80ac30 100755 --- a/application/models/Logbook_model.php +++ b/application/models/Logbook_model.php @@ -444,7 +444,8 @@ class Logbook_model extends CI_Model { return $this->db->get(); } - function get_clublog_qsos(){ + function get_clublog_qsos($station_id){ + $this->db->where('station_id', $station_id); $this->db->where("COL_CLUBLOG_QSO_UPLOAD_STATUS", null); $this->db->or_where("COL_CLUBLOG_QSO_UPLOAD_STATUS", ""); $this->db->or_where("COL_CLUBLOG_QSO_UPLOAD_STATUS", "N");