diff --git a/application/controllers/Clublog.php b/application/controllers/Clublog.php
index 394b6610a..cacabfc49 100644
--- a/application/controllers/Clublog.php
+++ b/application/controllers/Clublog.php
@@ -36,9 +36,24 @@ class Clublog extends CI_Controller {
}
}
+ // Download ADIF to Clublog
+ public function download() {
+ $this->load->model('clublog_model');
+
+ // set the last run in cron table for the correct cron id
+ $this->load->model('cron_model');
+ $this->cron_model->set_last_run($this->router->class.'_'.$this->router->method);
+
+ $users = $this->clublog_model->get_clublog_users();
+
+ foreach ($users as $user) {
+ $this->downloadUser($user->user_id, $user->user_clublog_name, $user->user_clublog_password);
+ }
+ }
+
function downloadUser($userid, $username, $password) {
$clean_username = $this->security->xss_clean($username);
- $clean_passord = $this->security->xss_clean($password);
+ $clean_password = $this->security->xss_clean($password);
$clean_userid = $this->security->xss_clean($userid);
$this->config->load('config');
@@ -51,94 +66,29 @@ class Clublog extends CI_Controller {
$this->load->model('clublog_model');
- $station_profiles = $this->clublog_model->all_with_count($clean_userid);
+ $station_profiles = $this->clublog_model->all_enabled($clean_userid);
if($station_profiles->num_rows()){
- foreach ($station_profiles->result() as $station_row)
- {
+ foreach ($station_profiles->result() as $station_row) {
if($station_row->qso_total > 0) {
- $data['qsos'] = $this->clublog_model->get_clublog_qsos($station_row->station_id);
+ $lastrec=$this->clublog_model->clublog_last_qsl_rcvd_date($station_row->station_callsign);
+ // $string = $this->load->view('adif/data/clublog_down', $data, TRUE);
- if($data['qsos']->num_rows()){
- $string = $this->load->view('adif/data/clublog', $data, TRUE);
+ $url='https://clublog.org/getmatches.php?api=608df94896cb9c5421ae748235492b43815610c9&email='.$clean_username.'&password='.$clean_password.'&callsign='.$station_row->station_callsign.'&startyear='.substr($lastrec,0,4).'&startmonth='.substr($lastrec,4,2).'&startday='.substr($lastrec,6,2);
+ $request = curl_init($url);
- $ranid = uniqid();
-
- if ( ! write_file('uploads/clublog'.$ranid.$station_row->station_id.'.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.$station_row->station_id.'.adi');
-
- // initialise the curl request
- // New: https://clublog.org/getmatches.php?api=[key]&email=$clean_username&password=$clean_password&callsign=$station_row->station_callsign&startyear=2024&startmonth=4&startday=17
- $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' => $clean_username,
- 'password' => $clean_passord,
- 'callsign' => $station_row->station_callsign,
- 'api' => "608df94896cb9c5421ae748235492b43815610c9",
- '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);
- echo "Clublog upload for ".$station_row->station_callsign."
";
- log_message('info', 'Clublog upload for '.$station_row->station_callsign.' successfully sent.');
- } else if (preg_match('/checksum duplicate/',$response)) {
- echo "QSOs uploaded (asduplicate!) and Logbook QSOs marked as sent to Clublog"."
";
- $this->load->model('clublog_model');
- $this->clublog_model->mark_qsos_sent($station_row->station_id);
- echo "Clublog upload for ".$station_row->station_callsign."
";
- log_message('info', 'Clublog DUPLICATE upload for '.$station_row->station_callsign.' successfully sent.');
- } else {
- echo "Error ".$response."
";
- log_message('error', 'Clublog upload for '.$station_row->station_callsign.' failed reason '.$response);
- }
-
- // Delete the ADIF file used for clublog
- unlink('uploads/clublog'.$ranid.$station_row->station_id.'.adi');
-
- }
+ // recieve a file
+ curl_setopt($request, CURLOPT_RETURNTRANSFER, true);
+ $response = curl_exec($request);
+ $info = curl_getinfo($request);
+ curl_close ($request);
+ if(curl_errno($request)) {
+ echo curl_error($request);
} else {
- echo "Nothing awaiting upload to clublog for ".$station_row->station_callsign."
";
-
- log_message('info', 'Nothing awaiting upload to clublog for '.$station_row->station_callsign);
+ log_message("Error",$response);
}
+
}
}
}
diff --git a/application/models/Clublog_model.php b/application/models/Clublog_model.php
index be33b8519..73713ca5f 100644
--- a/application/models/Clublog_model.php
+++ b/application/models/Clublog_model.php
@@ -10,13 +10,6 @@ class Clublog_model extends CI_Model {
return $query->result();
}
- function get_clublog_auth_info($username) {
- $this->db->select('user_name, user_clublog_name, user_clublog_password');
- $this->db->where('user_name', $username);
- $query = $this->db->get($this->config->item('auth_table'));
- return $row = $query->row_array();
- }
-
function mark_qsos_sent($station_id) {
$data = array(
'COL_CLUBLOG_QSO_UPLOAD_DATE' => date('Y-m-d'),
@@ -86,11 +79,46 @@ class Clublog_model extends CI_Model {
return $query;
}
- function all_with_count($userid) {
+ function clublog_last_qsl_rcvd_date($callsign) {
+ $qso_table_name = $this->config->item('table_name');
+ $this->db->from($qso_table_name);
+
+ $this->db->join('station_profile', 'station_profile.station_id = '.$qso_table_name.'.station_id');
+ $this->db->where('station_profile.station_callsign', $callsign);
+
+ $this->db->select("DATE_FORMAT(COL_CLUBLOG_QSO_DOWNLOAD_DATE,'%Y%m%d') AS COL_CLUBLOG_QSO_DOWNLOAD_DATE", FALSE);
+ $this->db->where('COL_CLUBLOG_QSO_DOWNLOAD_DATE IS NOT NULL');
+ $this->db->where('station_profile.clublogignore', 0);
+ $this->db->order_by("COL_CLUBLOG_QSO_DOWNLOAD_DATE", "desc");
+ $this->db->limit(1);
+
+ $query = $this->db->get();
+ $row = $query->row();
+
+ if (isset($row->COL_CLUBLOG_QSO_DOWNLOAD_DATE)){
+ return $row->COL_CLUBLOG_QSO_DOWNLOAD_DATE;
+ } else {
+ // No previous date (first time import has run?), so choose UNIX EPOCH!
+ // Note: date is yyyy/mm/dd format
+ return '19700101';
+ }
+ }
+
+ function all_enabled($userid) {
$this->db->select('station_profile.station_id, station_profile.station_callsign, count('.$this->config->item('table_name').'.station_id) as qso_total');
- $this->db->from('station_profile');
- $this->db->join($this->config->item('table_name'),'station_profile.station_id = '.$this->config->item('table_name').'.station_id','left');
- $this->db->group_by('station_profile.station_id');
+ $this->db->from('station_profile');
+ $this->db->join($this->config->item('table_name'),'station_profile.station_id = '.$this->config->item('table_name').'.station_id','left');
+ $this->db->group_by('station_profile.station_id');
+ $this->db->where('station_profile.user_id', $userid);
+ $this->db->where('station_profile.clublogignore', 0);
+ return $this->db->get();
+ }
+
+ function all_with_count($userid) {
+ $this->db->select('station_profile.station_id, station_profile.station_callsign, count('.$this->config->item('table_name').'.station_id) as qso_total');
+ $this->db->from('station_profile');
+ $this->db->join($this->config->item('table_name'),'station_profile.station_id = '.$this->config->item('table_name').'.station_id','left');
+ $this->db->group_by('station_profile.station_id');
$this->db->where('station_profile.user_id', $userid);
$this->db->where('station_profile.clublogignore', 0);
$this->db->group_start();
@@ -99,8 +127,8 @@ class Clublog_model extends CI_Model {
$this->db->or_where("COL_CLUBLOG_QSO_UPLOAD_STATUS", "M");
$this->db->or_where("COL_CLUBLOG_QSO_UPLOAD_STATUS", "N");
$this->db->group_end();
-
- return $this->db->get();
+
+ return $this->db->get();
}
}