2012-11-13 17:02:43 +00:00
|
|
|
<?php if ( ! defined('BASEPATH')) exit('No direct script access allowed');
|
|
|
|
|
|
|
|
/*
|
|
|
|
Controls the interaction with the QRZ.com Subscription based XML API.
|
|
|
|
*/
|
|
|
|
|
|
|
|
|
|
|
|
class Qrz {
|
|
|
|
|
|
|
|
// Return session key
|
|
|
|
public function session($username, $password) {
|
|
|
|
// URL to the XML Source
|
2021-05-10 15:59:51 +00:00
|
|
|
$xml_feed_url = 'http://xmldata.qrz.com/xml/current/?username='.$username.';password='.urlencode($password).';agent=cloudlog';
|
2012-11-13 17:02:43 +00:00
|
|
|
|
|
|
|
// CURL Functions
|
|
|
|
$ch = curl_init();
|
|
|
|
curl_setopt($ch, CURLOPT_URL, $xml_feed_url);
|
|
|
|
curl_setopt($ch, CURLOPT_HEADER, false);
|
|
|
|
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
|
|
|
|
$xml = curl_exec($ch);
|
|
|
|
curl_close($ch);
|
|
|
|
|
|
|
|
// Create XML object
|
|
|
|
$xml = simplexml_load_string($xml);
|
|
|
|
|
|
|
|
// Return Session Key
|
|
|
|
return (string) $xml->Session->Key;
|
|
|
|
}
|
|
|
|
|
|
|
|
// Set Session Key session.
|
|
|
|
public function set_session($username, $password) {
|
|
|
|
|
2012-11-14 01:16:17 +00:00
|
|
|
$ci = & get_instance();
|
|
|
|
|
2012-11-13 17:02:43 +00:00
|
|
|
// URL to the XML Source
|
2021-05-10 15:59:51 +00:00
|
|
|
$xml_feed_url = 'http://xmldata.qrz.com/xml/current/?username='.$username.';password='.urlencode($password).';agent=cloudlog';
|
2012-11-13 17:02:43 +00:00
|
|
|
|
|
|
|
// CURL Functions
|
|
|
|
$ch = curl_init();
|
|
|
|
curl_setopt($ch, CURLOPT_URL, $xml_feed_url);
|
|
|
|
curl_setopt($ch, CURLOPT_HEADER, false);
|
|
|
|
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
|
|
|
|
$xml = curl_exec($ch);
|
|
|
|
curl_close($ch);
|
|
|
|
|
|
|
|
// Create XML object
|
|
|
|
$xml = simplexml_load_string($xml);
|
|
|
|
|
|
|
|
$key = (string) $xml->Session->Key;
|
2012-11-14 01:16:17 +00:00
|
|
|
|
|
|
|
$ci->session->set_userdata('qrz_session_key', $key);
|
2012-11-13 17:02:43 +00:00
|
|
|
|
|
|
|
return true;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
2022-04-10 15:23:38 +00:00
|
|
|
public function search($callsign, $key, $use_fullname = false)
|
2012-11-13 17:02:43 +00:00
|
|
|
{
|
2020-11-11 14:17:08 +00:00
|
|
|
$data = null;
|
|
|
|
try {
|
|
|
|
// URL to the XML Source
|
|
|
|
$xml_feed_url = 'http://xmldata.qrz.com/xml/current/?s=' . $key . ';callsign=' . $callsign . '';
|
2012-11-13 17:02:43 +00:00
|
|
|
|
2020-11-11 14:17:08 +00:00
|
|
|
// CURL Functions
|
|
|
|
$ch = curl_init();
|
|
|
|
curl_setopt($ch, CURLOPT_URL, $xml_feed_url);
|
|
|
|
curl_setopt($ch, CURLOPT_HEADER, false);
|
|
|
|
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
|
|
|
|
$xml = curl_exec($ch);
|
|
|
|
curl_close($ch);
|
2020-03-07 16:36:21 +00:00
|
|
|
|
2020-11-11 14:17:08 +00:00
|
|
|
// Create XML object
|
|
|
|
$xml = simplexml_load_string($xml);
|
2023-11-11 20:30:45 +00:00
|
|
|
if (!empty($xml->Session->Error)) return $data['error'] = $xml->Session->Error;
|
2020-03-07 16:36:21 +00:00
|
|
|
|
2020-11-11 14:17:08 +00:00
|
|
|
// Return Required Fields
|
|
|
|
$data['callsign'] = (string)$xml->Callsign->call;
|
2020-11-11 17:18:37 +00:00
|
|
|
|
2020-11-11 19:38:00 +00:00
|
|
|
if ($use_fullname === true) {
|
2020-11-13 18:30:37 +00:00
|
|
|
$data['name'] = (string)$xml->Callsign->fname. ' ' . (string)$xml->Callsign->name;
|
2020-11-11 17:18:37 +00:00
|
|
|
} else {
|
2020-11-13 18:30:37 +00:00
|
|
|
$data['name'] = (string)$xml->Callsign->fname;
|
2020-11-11 17:18:37 +00:00
|
|
|
}
|
2020-11-13 18:43:33 +00:00
|
|
|
$data['name'] = trim($data['name']);
|
2023-07-30 10:47:53 +00:00
|
|
|
|
|
|
|
// Sanitise gridsquare to only allow up to 8 characters
|
|
|
|
$unclean_gridsquare = (string)$xml->Callsign->grid; // Get the gridsquare from QRZ convert to string
|
|
|
|
$clean_gridsquare = strlen($unclean_gridsquare) > 8 ? substr($unclean_gridsquare,0,8) : $unclean_gridsquare; // Trim gridsquare to 8 characters max
|
|
|
|
$data['gridsquare'] = $clean_gridsquare;
|
|
|
|
|
2020-11-11 14:17:08 +00:00
|
|
|
$data['city'] = (string)$xml->Callsign->addr2;
|
|
|
|
$data['lat'] = (string)$xml->Callsign->lat;
|
|
|
|
$data['long'] = (string)$xml->Callsign->lon;
|
|
|
|
$data['iota'] = (string)$xml->Callsign->iota;
|
|
|
|
$data['qslmgr'] = (string)$xml->Callsign->qslmgr;
|
2022-04-03 08:28:36 +00:00
|
|
|
$data['image'] = (string)$xml->Callsign->image;
|
2020-11-11 14:17:08 +00:00
|
|
|
|
|
|
|
if ($xml->Callsign->country == "United States") {
|
|
|
|
$data['state'] = (string)$xml->Callsign->state;
|
|
|
|
$data['us_county'] = (string)$xml->Callsign->county;
|
|
|
|
} else {
|
|
|
|
$data['state'] = null;
|
|
|
|
$data['us_county'] = null;
|
|
|
|
}
|
|
|
|
} finally {
|
|
|
|
|
|
|
|
return $data;
|
|
|
|
}
|
2012-11-13 17:02:43 +00:00
|
|
|
}
|
|
|
|
}
|