Clublog-RT-Upload

pull/2739/head
int2001 2023-11-27 12:55:16 +00:00
rodzic fd6559fb8a
commit 032e77957f
Nie znaleziono w bazie danych klucza dla tego podpisu
ID klucza GPG: DFB1C13CD2DB037B
2 zmienionych plików z 98 dodań i 79 usunięć

Wyświetl plik

@ -137,73 +137,6 @@ class Clublog extends CI_Controller {
}
public function realtime($username) {
$clean_username = $this->security->xss_clean($username);
$this->load->model('stations');
$this->load->model('clublog_model');
$clublog_info = $this->clublog_model->get_clublog_auth_info($clean_username);
if(!isset($clublog_info['user_name'])) {
echo "Username unknown";
exit;
}
$station_profiles = $this->stations->all_with_count();
// if station profiles exist
if($station_profiles->num_rows()){
// Loop through station profiles
foreach ($station_profiles->result() as $station_row)
{
// if the station profile has more than 1 qso
if($station_row->qso_total > 0) {
$myqsos = $this->clublog_model->get_last_five($station_row->station_id);
foreach ($myqsos->result() as $qso)
{
$data['qso'] = $qso;
$adif_string = $this->load->view('adif/data/clublog_realtime', $data, true);
// initialise the curl request
$request = curl_init('https://clublog.org/realtime.php');
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,
'adif' => $adif_string,
'api' => "a11c3235cd74b88212ce726857056939d52372bd",
));
// output the response
curl_setopt($request, CURLOPT_RETURNTRANSFER, true);
$response = curl_exec($request);
$info = curl_getinfo($request);
// If Clublog Accepts mark the QSOs
if (preg_match('/\bOK\b/', $response)) {
echo "QSOs uploaded and Logbook QSOs marked as sent to Clublog<br>";
$this->clublog_model->mark_qso_sent($qso->COL_PRIMARY_KEY);
echo "Clublog upload for ".$station_row->station_callsign."<br>";
} else {
echo "Error ".$response."<br>";
}
curl_close ($request);
}
} else {
echo "No QSOs to upload";
}
}
}
}
// Find DXCC
function find_dxcc($callsign) {
$clean_callsign = $this->security->xss_clean($callsign);

Wyświetl plik

@ -565,6 +565,20 @@ class Logbook_model extends CI_Model {
if (!$skipexport) {
$result = $this->exists_clublog_credentials($data['station_id']);
if (isset($result->user_clublog_password) && isset($result->user_clublog_name)) { // && $result->hrdlogrealtime == 1) {
$CI =& get_instance();
$CI->load->library('AdifHelper');
$qso = $this->get_qso($last_id,true)->result();
$adif = $CI->adifhelper->getAdifLine($qso[0]);
$result = $this->push_qso_to_clublog($result->user_clublog_name, $result->user_clublog_password, $data['COL_STATION_CALLSIGN'], $adif);
if ( ($result['status'] == 'OK') || ( ($result['status'] == 'error') || ($result['status'] == 'duplicate') || ($result['status'] == 'auth_error') )){
$this->mark_clublog_qso_sent($last_id);
}
}
$result = '';
$result = $this->exists_hrdlog_code($data['station_id']);
// Push qso to hrdlog if code is set, and realtime upload is enabled, and we're not importing an adif-file
if (isset($result->hrdlog_code) && $result->hrdlogrealtime == 1) {
@ -632,6 +646,26 @@ class Logbook_model extends CI_Model {
}
}
/*
* Function checks if a Cloudlog Credebtials exists in the table with the given station id
*/
function exists_clublog_credentials($station_id) {
$sql = 'select auth.user_clublog_name, auth.user_clublog_password from '.$this->config->item('auth_table').' auth inner join station_profile prof on (auth.user_id=prof.user_id) where prof.station_id = ' . $station_id;
log_message("Error",$sql);
$query = $this->db->query($sql);
$result = $query->row();
if ($result) {
return $result;
}
else {
return false;
}
}
/*
* Function checks if a QRZ API Key exists in the table with the given station id
*/
@ -654,21 +688,55 @@ class Logbook_model extends CI_Model {
/*
* Function checks if a WebADIF API Key exists in the table with the given station id
*/
function exists_webadif_api_key($station_id) {
$sql = 'select webadifapikey, webadifapiurl, webadifrealtime from station_profile
where station_id = ' . $station_id;
function exists_webadif_api_key($station_id) {
$sql = 'select webadifapikey, webadifapiurl, webadifrealtime from station_profile
where station_id = ' . $station_id;
$query = $this->db->query($sql);
$query = $this->db->query($sql);
$result = $query->row();
$result = $query->row();
if ($result) {
return $result;
}
else {
return false;
}
}
if ($result) {
return $result;
}
else {
return false;
}
}
function push_qso_to_clublog($cl_username, $cl_password, $station_callsign, $adif) {
// initialise the curl request
$returner=[];
$request = curl_init('https://clublog.org/realtime.php');
curl_setopt($request, CURLOPT_POST, true);
curl_setopt(
$request,
CURLOPT_POSTFIELDS,
array(
'email' => $cl_username,
'password' => $cl_password,
'callsign' => $station_callsign,
'adif' => $adif,
'api' => "a11c3235cd74b88212ce726857056939d52372bd",
));
// output the response
curl_setopt($request, CURLOPT_RETURNTRANSFER, true);
$response = curl_exec($request);
$info = curl_getinfo($request);
// If Clublog Accepts mark the QSOs
if (preg_match('/\bOK\b/', $response)) {
$returner['status']='OK';
} else {
$returner['status']=$response;
}
curl_close ($request);
log_message("Error","Req: ".$adif." /// Resp: ".$response);
return ($returner);
}
/*
* Function uploads a QSO to HRDLog with the API given.
@ -795,6 +863,24 @@ class Logbook_model extends CI_Model {
return $response === 200;
}
/*
* Function marks QSOs as uploaded to Clublog
* $primarykey is the unique id for that QSO in the logbook
*/
function mark_clublog_qsos_sent($primarykey) {
$data = array(
'COL_CLUBLOG_QSO_UPLOAD_DATE' => date("Y-m-d H:i:s", strtotime("now")),
'COL_CLUBLOG_QSO_UPLOAD_STATUS' => 'Y',
);
$this->db->where('COL_PRIMARY_KEY', $primarykey);
$this->db->update($this->config->item('table_name'), $data);
return true;
}
/*
* Function marks QSOs as uploaded to HRDLog.
* $primarykey is the unique id for that QSO in the logbook