kopia lustrzana https://github.com/magicbug/Cloudlog
Clublog-RT-Upload
rodzic
fd6559fb8a
commit
032e77957f
|
@ -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);
|
||||
|
|
|
@ -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
|
||||
|
|
Ładowanie…
Reference in New Issue