Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Dev Time for a Merge #1916

Merged
merged 100 commits into from
Jan 10, 2023
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
100 commits
Select commit Hold shift + click to select a range
0bdebe1
[OQRS] Added location name to OQRS dropdown
AndreasK79 Dec 22, 2022
7a78c74
[OQRS] Fixed SAT QSOs not showing up correctly in the result
AndreasK79 Dec 22, 2022
723070c
[OQRS] Fix identifying of SAT OQRS QSO
AndreasK79 Dec 22, 2022
5d2ca03
[OQRS] SAT fix for displaying QSOs around time/date/mode for OQRS
AndreasK79 Dec 22, 2022
f7c79eb
Add "Electronic" as QSL selection
m0urs Dec 23, 2022
50190eb
Add warning grace time notification for LotW certs
phl0 Dec 23, 2022
516d60c
fix date validation for adif export
mattmelling Dec 23, 2022
33ed614
Show warnings on dashboard and set deadline to 30 days
phl0 Dec 23, 2022
4c9e659
Check for user_id before using it
phl0 Dec 23, 2022
cc68183
[OQRS] Fixed QSO marking for bureau/direct
AndreasK79 Dec 23, 2022
db0acca
[OQRS] Stop enter from resetting form.
AndreasK79 Dec 23, 2022
a5bc66f
[OQRS] Make enter search for callsign
AndreasK79 Dec 23, 2022
db597b4
Merge pull request #1864 from m0urs/72-advanced-qso-view-add-possibil…
AndreasK79 Dec 24, 2022
3c4f50d
Merge pull request #1866 from mattmelling/adif-export-1863
AndreasK79 Dec 24, 2022
8346b69
[Distance worked] Fix for implisit float to integer conversion (PHP 8,1)
AndreasK79 Dec 24, 2022
54c31a6
[QSLPrint] Added the display of qsl sent via
AndreasK79 Dec 26, 2022
e16e7ed
[Advance Search] Remove duplicate modes
magicbug Dec 27, 2022
3ab8204
[Logbook Advanced] Fixed mode listing and search
AndreasK79 Dec 27, 2022
72cce19
[DXCC identification]
AndreasK79 Dec 27, 2022
6f597ff
[Widgets] /QSO/{public_slug} Error Message
magicbug Dec 28, 2022
9653232
Use QSO ID to delete QSL rather than QSL ID
phl0 Dec 28, 2022
1aabd44
Merge pull request #1874 from AndreasK79/dxcc_fix_when_dxcc_comes_last
magicbug Dec 28, 2022
c3ed044
Make search input field transform to upper case
phl0 Dec 28, 2022
bac26df
Show public OQRS link if at least one callsign has OQRS activated
phl0 Dec 28, 2022
54ad24d
Set qsoid to 0 for not-in-log requests
phl0 Dec 28, 2022
81b9c27
Correct text input id to be able to save it
phl0 Dec 28, 2022
b2a932b
Load eqsl and lotw lang to fix log warnings and display errors in check
phl0 Dec 28, 2022
3250127
Merge pull request #1880 from phl0/oqrsSearchUppercase
magicbug Dec 29, 2022
e76c7bc
Merge pull request #1881 from phl0/addPublicOqrsLink
magicbug Dec 29, 2022
d7ad2b4
Merge pull request #1879 from phl0/fixQslDelete
magicbug Dec 29, 2022
c77db67
[Menu] Removed OQRS Link
magicbug Dec 29, 2022
b186088
[Nav] Moved QSL Printing items around
magicbug Dec 29, 2022
b332dee
Merge branch 'dev' into fixOqrsFlaws
phl0 Dec 29, 2022
e1f3bcd
Revert "Merge pull request #1874 from AndreasK79/dxcc_fix_when_dxcc_c…
magicbug Dec 29, 2022
11df165
Merge pull request #1868 from phl0/lotwWarning
magicbug Dec 29, 2022
455b28a
Merge pull request #1882 from phl0/fixOqrsFlaws
magicbug Dec 29, 2022
d5842bb
[OQRS] Created new view for OQRS requests
AndreasK79 Dec 29, 2022
b31f52d
Add some toUpperCases
phl0 Dec 29, 2022
7a12ac2
Merge pull request #19 from phl0/someUpperCases
AndreasK79 Dec 29, 2022
da6bcaa
[OQRS] Delete and mark buttons work
AndreasK79 Dec 29, 2022
8695c52
Add user message to email
phl0 Dec 29, 2022
93b1f84
Add check for empty message
phl0 Dec 29, 2022
5ba33a0
Add reply to header
phl0 Dec 29, 2022
b1cbdf7
Merge pull request #20 from phl0/emailUserMessage
AndreasK79 Dec 29, 2022
5e5d8ec
Add badge with number of OQRS requests
phl0 Dec 29, 2022
c7e1f6a
Merge pull request #21 from phl0/oqrsNumberBadge
AndreasK79 Dec 29, 2022
49af108
Adjust SQL to exlude done requests
phl0 Dec 29, 2022
f31f38f
Merge pull request #22 from phl0/fixSqlNo
AndreasK79 Dec 29, 2022
6fb572e
[DXCC identification] Fix for prefix coming last
AndreasK79 Dec 30, 2022
83ae7f3
[OQRS] Fixed search not showing all QSOs
AndreasK79 Dec 30, 2022
f72d51c
Merge pull request #1883 from AndreasK79/new_oqrs_view
magicbug Dec 30, 2022
44869bf
[OQRS] Added Missing func
magicbug Dec 30, 2022
ff869ee
[OQRS] Time shortcuts
AndreasK79 Dec 30, 2022
457206f
Merge pull request #1885 from AndreasK79/timeshortcutoqrs
magicbug Dec 30, 2022
c6aaf97
[OQRS] Changed to visitor header
AndreasK79 Dec 30, 2022
690807c
Merge pull request #1886 from AndreasK79/oqrs_visitor_header
magicbug Dec 31, 2022
dd5df25
[Station logbooks] Fixed card header and misc layout
AndreasK79 Jan 1, 2023
aeaa523
Merge branch 'dev' of https://github.com/magicbug/Cloudlog into dev
AndreasK79 Jan 1, 2023
b56fcb2
[Station logbooks] Tweaked the view a little bit and corrected the wa…
AndreasK79 Jan 1, 2023
6ed50f4
[Station locations] Tweaked the table a little bit
AndreasK79 Jan 1, 2023
3b5c940
[Station locations] Added title on buttons
AndreasK79 Jan 1, 2023
fc669a0
[User view] Tweaked the edit layout a bit
AndreasK79 Jan 1, 2023
c1ec375
[User view] Tweaked add user view. Same design as edit.
AndreasK79 Jan 1, 2023
52a3780
Update README.md
AndreasK79 Jan 2, 2023
4863a46
Beautify table and add QRZ/HAMQTH links
phl0 Jan 2, 2023
31ee65a
Add check for null values to QSL timestamps
phl0 Jan 2, 2023
41d6da8
Also fix advanced search
phl0 Jan 2, 2023
c2dd384
Fix qslprint qsolist
phl0 Jan 2, 2023
b17b69a
Sort QSOs for QSLprint DESC as in other places
phl0 Jan 2, 2023
7ea1e8e
Merge pull request #1887 from AndreasK79/station_logbooks_view
magicbug Jan 2, 2023
c4cddf1
Merge pull request #1888 from AndreasK79/station_locations_view_tweak
magicbug Jan 2, 2023
500e5bc
Merge pull request #1889 from AndreasK79/user_edit_view_tweak
magicbug Jan 2, 2023
6947daa
Merge pull request #1892 from phl0/beautifyCallbookResults
magicbug Jan 2, 2023
14ded78
Merge pull request #1893 from phl0/fixOqrsQsosNullDatetime
magicbug Jan 2, 2023
34d9512
Merge pull request #1894 from phl0/sortQslPrintDesc
magicbug Jan 2, 2023
ba20622
Fix PHP8.1 error on LotW export
phl0 Jan 2, 2023
d08019e
Only free key if PHP version < 8
phl0 Jan 2, 2023
a2ae326
Fix syntax errors
phl0 Jan 2, 2023
7b142ea
Extend header to show last upload info
phl0 Jan 2, 2023
bfcf28d
[PHP 8.1] Fixed implicit conversion from float to int in QRA libariy.
AndreasK79 Jan 2, 2023
269c418
Merge pull request #1896 from phl0/addLotwLastUploadInfoHeader
AndreasK79 Jan 2, 2023
17674e7
Merge pull request #1895 from phl0/fixLotwPhp81
AndreasK79 Jan 3, 2023
bda9d3b
Merge pull request #1884 from AndreasK79/dxcc_identification
AndreasK79 Jan 3, 2023
d93b21f
Update README.md
AndreasK79 Jan 3, 2023
254ee19
[Satellites] Change CAS-10 to HO-119
magicbug Jan 3, 2023
622fa4d
Prevent passing null to htmlspecialchars
phl0 Jan 3, 2023
72891bb
Merge pull request #1901 from phl0/fixSearch
magicbug Jan 3, 2023
d37b9c4
[QSO Stats Year] Changed year sort to desc
AndreasK79 Jan 4, 2023
a56e243
[QSO Stats Year] Reversed array to that graph shows from oldest to ne…
AndreasK79 Jan 5, 2023
dbdb713
[PHP 8.1] Fix QSLSDATE/QSLRDATE null error
AndreasK79 Jan 5, 2023
325f2d0
Hide Login button on OQRS page
phl0 Jan 9, 2023
a47bef9
[PHP 8.1] Fixed another null into string error when saving QSO
AndreasK79 Jan 9, 2023
0ed3327
Merge pull request #1908 from phl0/hideLogin
magicbug Jan 9, 2023
7b072cd
Revert "Hide Login button on OQRS page"
phl0 Jan 9, 2023
3e9bbed
Only hide login in oqrs segment
phl0 Jan 9, 2023
cab8f01
Show link to eQSL image on import status page
phl0 Jan 9, 2023
9ed225e
Import county from LotW matches
phl0 Jan 9, 2023
f9c62d5
Merge pull request #1911 from phl0/fixHideLogin
AndreasK79 Jan 10, 2023
ab12eca
Merge pull request #1912 from phl0/showEqslOnImport
magicbug Jan 10, 2023
e251743
Merge pull request #1913 from phl0/lotwImportCnty
magicbug Jan 10, 2023
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion README.md
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@ Website: [http://www.cloudlog.co.uk](http://www.cloudlog.co.uk)
## Requirements
* Linux based Operating System
* Apache (Nginx should work)
* PHP Version 7 (PHP 8.0 is working)
* PHP Version 7.4 (PHP 8.0 is working, 8.1 might have some undetected issues, please report so we can fix)
* MySQL (MySQL 5.7 or higher)

Notes
Expand Down
8 changes: 7 additions & 1 deletion application/controllers/Dashboard.php
Original file line number Diff line number Diff line change
Expand Up @@ -8,11 +8,17 @@ public function index()
if(ENVIRONMENT == 'development') {
$this->output->enable_profiler(TRUE);
}


// Load language files
$this->lang->load('lotw');

// Database connections
$this->load->model('logbook_model');
$this->load->model('user_model');

// LotW infos
$this->load->model('LotwCert');

if($this->optionslib->get_option('version2_trigger') == "false") {
redirect('welcome');
}
Expand Down
17 changes: 1 addition & 16 deletions application/controllers/Logbookadvanced.php
Original file line number Diff line number Diff line change
Expand Up @@ -36,29 +36,14 @@ function index() {
ksort($deOptions);
$deOptions = array_keys($deOptions);

$modes = [];
if ($stationIds !== []) {
foreach ($this->logbookadvanced_model->get_worked_modes($stationIds) as $mode) {
$key = $mode['mode'];
if ($mode['submode'] !== null) {
$key .= "|" . $mode['submode'];
}
if ($mode['submode'] == null) {
$modes[$key] = $mode['mode'];
} else {
$modes[$key] = $mode['submode'];
}
}
}

$data = [];
$data['page_title'] = "Advanced logbook";
$data['hasDatePicker'] = true;

$pageData = [];
$pageData['datePlaceholder'] = 'DD/MM/YYYY';
$pageData['deOptions'] = $deOptions;
$pageData['modes'] = $modes;
$pageData['modes'] = $this->logbookadvanced_model->get_modes();
$pageData['dxccarray'] = $this->logbook_model->fetchDxcc();
$pageData['iotaarray'] = $this->logbook_model->fetchIota();

Expand Down
16 changes: 12 additions & 4 deletions application/controllers/Lotw.php
Original file line number Diff line number Diff line change
Expand Up @@ -513,7 +513,7 @@ private function loadFromFile($filepath, $display_view = "TRUE")
$status = $this->logbook_model->import_check($time_on, $record['call'], $record['band']);
$skipNewQso = $this->input->post('importMissing'); // If import missing was checked

if($status == "No Match" && $skipNewQso != NULL) {
if($status[0] == "No Match" && $skipNewQso != NULL) {

$station_id = $this->logbook_model->find_correct_station_id($record['station_callsign'], $record['my_gridsquare']);

Expand Down Expand Up @@ -545,7 +545,13 @@ private function loadFromFile($filepath, $display_view = "TRUE")
$iota = "";
}

$lotw_status = $this->logbook_model->lotw_update($time_on, $record['call'], $record['band'], $qsl_date, $record['qsl_rcvd'], $state, $qsl_gridsquare, $iota);
if (isset($record['cnty'])) {
$cnty = $record['cnty'];
} else {
$cnty = "";
}

$lotw_status = $this->logbook_model->lotw_update($time_on, $record['call'], $record['band'], $qsl_date, $record['qsl_rcvd'], $state, $qsl_gridsquare, $iota, $cnty);
}


Expand All @@ -559,7 +565,7 @@ private function loadFromFile($filepath, $display_view = "TRUE")
$table .= "<td>".$state."</td>";
$table .= "<td>".$qsl_gridsquare."</td>";
$table .= "<td>".$iota."</td>";
$table .= "<td>QSO Record: ".$status."</td>";
$table .= "<td>QSO Record: ".$status[0]."</td>";
$table .= "<td>LoTW Record: ".$lotw_status."</td>";
$table .= "</tr>";
}
Expand Down Expand Up @@ -910,7 +916,9 @@ function signlog($sign_key, $string) {


if(openssl_sign($qso_string, $signature, $pkeyid, OPENSSL_ALGO_SHA1)) {
openssl_free_key($pkeyid);
if (defined('PHP_MAJOR_VERSION') && PHP_MAJOR_VERSION < 8) {
openssl_free_key($pkeyid);
}
$signature_b64 = base64_encode($signature);
return $signature_b64;
}
Expand Down
24 changes: 23 additions & 1 deletion application/controllers/Oqrs.php
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,8 @@ class Oqrs extends CI_Controller {

function __construct() {
parent::__construct();
$this->lang->load('lotw');
$this->lang->load('eqsl');
// Commented out to get public access
// $this->load->model('user_model');
// if(!$this->user_model->authorize(2)) { $this->session->set_flashdata('notice', 'You\'re not allowed to do that!'); redirect('dashboard'); }
Expand All @@ -20,7 +22,7 @@ public function index() {
$data['stations'] = $this->oqrs_model->get_oqrs_stations();
$data['page_title'] = "Log Search & OQRS";

$this->load->view('interface_assets/header', $data);
$this->load->view('visitor/layout/header', $data);
$this->load->view('oqrs/index');
$this->load->view('interface_assets/footer');
}
Expand Down Expand Up @@ -89,6 +91,7 @@ public function requests() {

$this->load->model('oqrs_model');
$data['result'] = $this->oqrs_model->getOqrsRequests($location_list);
$data['stations'] = $this->oqrs_model->get_oqrs_stations();

$this->load->view('interface_assets/header', $data);
$this->load->view('oqrs/showrequests');
Expand Down Expand Up @@ -157,11 +160,13 @@ public function alert_oqrs_request($postdata) {
}

$data['callsign'] = $this->security->xss_clean($postdata['callsign']);
$data['usermessage'] = $this->security->xss_clean($postdata['message']);

$message = $this->load->view('email/oqrs_request', $data, TRUE);

$this->email->from('noreply@cloudlog.co.uk', 'Cloudlog');
$this->email->to($email);
$this->email->reply_to($this->security->xss_clean($postdata['email']), strtoupper($data['callsign']));

$this->email->subject('Cloudlog OQRS from ' . strtoupper($data['callsign']));
$this->email->message($message);
Expand All @@ -180,4 +185,21 @@ public function mark_oqrs_line_as_done() {

$this->oqrs_model->mark_oqrs_line_as_done($id);
}

public function search() {
$this->load->model('oqrs_model');

$searchCriteria = array(
'user_id' => (int)$this->session->userdata('user_id'),
'de' => xss_clean($this->input->post('de')),
'dx' => xss_clean($this->input->post('dx')),
'status' => xss_clean($this->input->post('status')),
'oqrsResults' => xss_clean($this->input->post('oqrsResults')),
);

$qsos = $this->oqrs_model->searchOqrs($searchCriteria);

header("Content-Type: application/json");
print json_encode($qsos);
}
}
14 changes: 12 additions & 2 deletions application/controllers/Visitor.php
Original file line number Diff line number Diff line change
Expand Up @@ -431,5 +431,15 @@ function js_array($array)
$this->load->view('gridsquares/index');
$this->load->view('visitor/layout/footer');
}

}

public function oqrs_enabled($slug) {
$this->load->model('oqrs_model');
$this->load->model('Logbooks_model');
$logbook_id = $this->Logbooks_model->public_slug_exists_logbook_id($slug);
if (!empty($this->oqrs_model->getOqrsStationsFromSlug($logbook_id))) {
return true;
} else {
return false;
}
}
}
6 changes: 5 additions & 1 deletion application/controllers/Widgets.php
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,11 @@ public function index()


// Can be used to embed last 11 QSOs in a iframe or javascript include.
public function qsos($logbook_slug) {
public function qsos($logbook_slug = null) {

if($logbook_slug == null) {
show_error('Unknown Public Page, please make sure the public slug is correct.');
}
$this->load->model('logbook_model');

$this->load->model('logbooks_model');
Expand Down
7 changes: 6 additions & 1 deletion application/language/english/lotw_lang.php
Original file line number Diff line number Diff line change
Expand Up @@ -18,10 +18,11 @@
$lang['lotw_date_expires'] = 'Date Expires';
$lang['lotw_qso_start_date'] = 'QSO Start Date';
$lang['lotw_qso_end_date'] = 'QSO End Date';
$lang['lotw_status'] = 'Status';
$lang['lotw_status'] = 'Status / Last upload';
$lang['lotw_options'] = 'Options';
$lang['lotw_valid'] = 'Valid';
$lang['lotw_expired'] = 'Expired';
$lang['lotw_expiring'] = 'Expiring';
$lang['lotw_not_synced'] = 'Not Synced';

$lang['lotw_certificate_dxcc'] = 'Certificate DXCC';
Expand Down Expand Up @@ -52,3 +53,7 @@
$lang['lotw_p12_export_step_four'] = 'Upload File below.';

$lang['lotw_confirmed'] = 'This QSO is confirmed on LoTW';

// LotW Expiry
$lang['lotw_cert_expiring'] = 'At least one of your LotW certificates is about to expire!';
$lang['lotw_cert_expired'] = 'At least one of your LotW certificates is expired!';
7 changes: 6 additions & 1 deletion application/language/german/lotw_lang.php
Original file line number Diff line number Diff line change
Expand Up @@ -18,10 +18,11 @@
$lang['lotw_date_expires'] = 'Ablaufdatum';
$lang['lotw_qso_start_date'] = 'QSO Startdatum';
$lang['lotw_qso_end_date'] = 'QSO Enddatum';
$lang['lotw_status'] = 'Status';
$lang['lotw_status'] = 'Status / Letzter Upload';
$lang['lotw_options'] = 'Optionen';
$lang['lotw_valid'] = 'Gültig';
$lang['lotw_expired'] = 'Abgelaufen';
$lang['lotw_expiring'] = 'Läuft ab';
$lang['lotw_not_synced'] = 'Nicht synchronisiert';

$lang['lotw_certificate_dxcc'] = 'Zertifikats-DXCC';
Expand Down Expand Up @@ -52,3 +53,7 @@
$lang['lotw_p12_export_step_four'] = 'Lade untenstehende Datei hoch.';

$lang['lotw_confirmed'] = 'Dieses QSO wurde via LotW bestätigt am';

// LotW Expiry
$lang['lotw_cert_expiring'] = 'Mindestens eines deiner LotW Zertifikate läuft bald ab!';
$lang['lotw_cert_expired'] = 'Mindestens eines deiner LotW Zertifikate ist abgelaufen!';
7 changes: 5 additions & 2 deletions application/libraries/EqslImporter.php
Original file line number Diff line number Diff line change
Expand Up @@ -154,7 +154,9 @@ public function import(): array {
}

$status = $this->CI->logbook_model->import_check($time_on, $record['call'], $record['band']);
if ($status == "Found") {
$qsoid = 0;
if ($status[0] == "Found") {
$qsoid = $status[1];
$dupe = $this->CI->logbook_model->eqsl_dupe_check($time_on, $record['call'], $record['band'], $config['eqsl_rcvd_mark']);
if ($dupe == false) {
$updated += 1;
Expand All @@ -173,8 +175,9 @@ public function import(): array {
'call' => str_replace("0", "&Oslash;", $record['call']),
'mode' => $record['mode'],
'submode' => $record['submode'] ?? null,
'status' => $status,
'status' => $status[0],
'eqsl_status' => $eqsl_status,
'qsoid' => $qsoid,
);
}

Expand Down
2 changes: 1 addition & 1 deletion application/libraries/Qra.php
Original file line number Diff line number Diff line change
Expand Up @@ -165,7 +165,7 @@ function bearing($lat1, $lon1, $lat2, $lon2, $unit = 'M') {
}

function get_bearing($lat1, $lon1, $lat2, $lon2) {
return (rad2deg(atan2(sin(deg2rad($lon2) - deg2rad($lon1)) * cos(deg2rad($lat2)), cos(deg2rad($lat1)) * sin(deg2rad($lat2)) - sin(deg2rad($lat1)) * cos(deg2rad($lat2)) * cos(deg2rad($lon2) - deg2rad($lon1)))) + 360) % 360;
return (int)(rad2deg(atan2(sin(deg2rad($lon2) - deg2rad($lon1)) * cos(deg2rad($lat2)), cos(deg2rad($lat1)) * sin(deg2rad($lat2)) - sin(deg2rad($lat1)) * cos(deg2rad($lat2)) * cos(deg2rad($lon2) - deg2rad($lon1)))) + 360) % 360;
}

function qra2latlong($strQRA) {
Expand Down
4 changes: 2 additions & 2 deletions application/models/Adif_data.php
Original file line number Diff line number Diff line change
Expand Up @@ -82,12 +82,12 @@ function export_custom($from, $to, $station_id, $exportLotw = false) {
$this->db->where($this->config->item('table_name').'.station_id', $station_id);

// If date is set, we format the date and add it to the where-statement
if ($from != 0) {
if ($from) {
$from = DateTime::createFromFormat('d/m/Y', $from);
$from = $from->format('Y-m-d');
$this->db->where("date(".$this->config->item('table_name').".COL_TIME_ON) >= '".$from."'");
}
if ($to != 0) {
if ($to) {
$to = DateTime::createFromFormat('d/m/Y', $to);
$to = $to->format('Y-m-d');
$this->db->where("date(".$this->config->item('table_name').".COL_TIME_ON) <= '".$to."'");
Expand Down
2 changes: 1 addition & 1 deletion application/models/Distances_model.php
Original file line number Diff line number Diff line change
Expand Up @@ -171,7 +171,7 @@ function plot($qsoArray, $gridsquare, $measurement_base) {
foreach ($qsoArray as $qso) {
$qrb['Qsos']++; // Counts up number of qsos
$bearingdistance = $this->bearing_dist($stationgrid, $qso['grid'], $measurement_base); // Calculates distance based on grids
$arrayplacement = $bearingdistance / 50; // Resolution is 50, calculates where to put result in array
$arrayplacement = (int)($bearingdistance / 50); // Resolution is 50, calculates where to put result in array
if ($bearingdistance > $qrb['Distance']) { // Saves the longest QSO
$qrb['Distance'] = $bearingdistance;
$qrb['Callsign'] = $qso['callsign'];
Expand Down
Loading