diff --git a/application/libraries/AdifHelper.php b/application/libraries/AdifHelper.php index e4d630a5..44066378 100644 --- a/application/libraries/AdifHelper.php +++ b/application/libraries/AdifHelper.php @@ -82,8 +82,6 @@ class AdifHelper { 'SAT_MODE', 'SAT_NAME', 'SFI', - 'SIG', - 'SIG_INFO', 'SILENT_KEY', 'SKCC', 'SOTA_REF', @@ -206,9 +204,25 @@ class AdifHelper { $line .= $this->getAdifFieldLine("MY_CNTY", $county); - $line .= $this->getAdifFieldLine("MY_SIG", $qso->station_sig); + $stationsSig = $qso->station_sig; + // If MY_SIG is WWFF or "" and there's a station_wwff set, use data from station_wwff + if ((empty($stationsSig) || $stationsSig === "WWFF") && !empty($qso->station_wwff)) { + $line .= $this->getAdifFieldLine("MY_SIG", "WWFF"); + $line .= $this->getAdifFieldLine("MY_SIG_INFO", $qso->station_wwff); + } else { + $line .= $this->getAdifFieldLine("MY_SIG", $stationsSig); + $line .= $this->getAdifFieldLine("MY_SIG_INFO", $qso->station_sig_info); + } - $line .= $this->getAdifFieldLine("MY_SIG_INFO", $qso->station_sig_info); + $sig = $qso->{'COL_SIG'}; + // If SIG is WWFF or "" and there's a WWFF_REF set, use data from COL_WWFF_REF + if ((empty($sig) || $sig === "WWFF") && !empty($qso->{'COL_WWFF_REF'})) { + $line .= $this->getAdifFieldLine("SIG", "WWFF"); + $line .= $this->getAdifFieldLine("SIG_INFO", $qso->{'COL_WWFF_REF'}); + } else { + $line .= $this->getAdifFieldLine("SIG", $sig); + $line .= $this->getAdifFieldLine("SIG_INFO", $qso->{'COL_SIG_INFO'}); + } /* Missing: diff --git a/src/QSLManager/QSO.php b/src/QSLManager/QSO.php index 19648c38..5296a9d5 100644 --- a/src/QSLManager/QSO.php +++ b/src/QSLManager/QSO.php @@ -31,6 +31,7 @@ class QSO private string $deSigInfo; private string $deIOTAIslandID; private string $deSOTAReference; + private string $deWWFFReference; /** Awards */ private string $cqzone; private string $state; @@ -163,6 +164,7 @@ class QSO $this->deSigInfo = $data['station_sig_info'] ?? ''; $this->deIOTAIslandID = $data['COL_MY_IOTA_ISLAND_ID'] ?? ''; $this->deSOTAReference = $data['station_sota'] ?? ''; + $this->deWWFFReference = $data['station_wwff'] ?? ''; $this->deVUCCGridsquares = $data['COL_MY_VUCC_GRIDS'] ?? ''; @@ -841,6 +843,7 @@ class QSO private function getFormattedDeRefs(): string { + $includedInRefs=[]; $refs = []; if ($this->deVUCCGridsquares !== '') { $refs[] = $this->deVUCCGridsquares; @@ -859,14 +862,21 @@ class QSO if ($this->deSOTAReference !== '') { $refs[] = "SOTA:" . $this->deSOTAReference; } + if ($this->deWWFFReference !== '') { + $includedInRefs[] = "WWFF"; + $refs[] = "WWFF:" . $this->deWWFFReference; + } if ($this->deSig !== '') { - $refs[] = $this->deSig . ":" . $this->deSigInfo; + if (!in_array($this->deSig, $includedInRefs)) { + $refs[] = $this->deSig . ":" . $this->deSigInfo; + } } return trim(implode(" ", $refs)); } private function getFormattedDxRefs(): string { + $includedInRefs=[]; $refs = []; if ($this->dxVUCCGridsquares !== '') { $refs[] = '' . $this->dxVUCCGridsquares . ' ' .$this->getQrbLink($this->deGridsquare, $this->dxVUCCGridsquares, $this->dxGridsquare); @@ -880,10 +890,13 @@ class QSO $refs[] = "POTA: " . '' . $this->dxPOTAReference. ''; } if ($this->dxWWFFReference !== '') { + $includedInRefs[] = "WWFF"; $refs[] = "WWFF: " . '' . $this->dxWWFFReference. ''; } if ($this->dxSig !== '') { - $refs[] = $this->dxSig . ":" . $this->dxSigInfo; + if (!in_array($this->dxSig, $includedInRefs)) { + $refs[] = $this->dxSig . ":" . $this->dxSigInfo; + } } if ($this->dxDARCDOK !== '') { $refs[] = "DOK:" . $this->dxDARCDOK;