Cloudlog/application/controllers/Clublog.php
Paul Beesley 5d23802e16 Further tweaks to text and text formatting
This commit has some further changes to text throughout the application. There are also some small fixes for text formatting. E.g. making sure that the small "helper" text under certain form fields is all consistent in terms of colour, font, etc.
2020-11-02 09:34:29 +00:00

222 行
6.6 KiB
PHP

<?php if ( ! defined('BASEPATH')) exit('No direct script access allowed');
/*
Controller to interact with the Clublog API
*/
class Clublog extends CI_Controller {
// Show frontend if there is one
public function index() {
$this->config->load('config');
}
// Upload ADIF to Clublog
public function upload($username) {
$clean_username = $this->security->xss_clean($username);
$this->config->load('config');
ini_set('memory_limit', '-1');
ini_set('display_errors', 1);
ini_set('display_startup_errors', 1);
error_reporting(E_ALL);
$this->load->helper('file');
$this->load->model('logbook_model');
$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->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);
if($data['qsos']->num_rows()){
$string = $this->load->view('adif/data/clublog', $data, TRUE);
$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
$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);
echo "Clublog upload for ".$station_row->station_callsign;
log_message('info', 'Clublog 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');
}
} 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);
}
}
}
}
}
function markqso($station_id) {
$clean_station_id = $this->security->xss_clean($station_id);
$this->load->model('clublog_model');
$this->clublog_model->mark_qsos_sent($clean_station_id);
}
function markallnotsent() {
$clean_station_id = $this->security->xss_clean($station_id);
$this->load->model('clublog_model');
$this->clublog_model->mark_all_qsos_notsent($clean_station_id);
}
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);
// Live lookup against Clublogs API
$url = "https://clublog.org/dxcc?call=".$clean_callsign."&api=a11c3235cd74b88212ce726857056939d52372bd&full=1";
$json = file_get_contents($url);
$data = json_decode($json, TRUE);
// echo ucfirst(strtolower($data['Name']));
return $data;
}
}