diff --git a/application/config/migration.php b/application/config/migration.php
index aebf9841..ce5a1727 100644
--- a/application/config/migration.php
+++ b/application/config/migration.php
@@ -22,7 +22,7 @@ $config['migration_enabled'] = TRUE;
|
*/
-$config['migration_version'] = 195;
+$config['migration_version'] = 196;
/*
|--------------------------------------------------------------------------
diff --git a/application/controllers/Logbook.php b/application/controllers/Logbook.php
index 4f8546f2..2ed4684b 100644
--- a/application/controllers/Logbook.php
+++ b/application/controllers/Logbook.php
@@ -1,7 +1,8 @@
-load->model('user_model');
- if($this->user_model->validate_session() == 0) {
+ if ($this->user_model->validate_session() == 0) {
// user is not logged in
redirect('user/login');
}
$this->load->model('stations');
// If environment is set to development then show the debug toolbar
- if(ENVIRONMENT == 'development') {
- $this->output->enable_profiler(TRUE);
- }
+ if (ENVIRONMENT == 'development') {
+ $this->output->enable_profiler(TRUE);
+ }
$this->load->model('logbook_model');
$this->load->library('pagination');
- $config['base_url'] = base_url().'index.php/logbook/index/';
+ $config['base_url'] = base_url() . 'index.php/logbook/index/';
$config['total_rows'] = $this->logbook_model->total_qsos();
$config['per_page'] = '25';
$config['num_links'] = 6;
@@ -48,25 +49,25 @@ class Logbook extends CI_Controller {
$this->pagination->initialize($config);
//load the model and get results
- $data['results'] = $this->logbook_model->get_qsos($config['per_page'],$this->uri->segment(3));
+ $data['results'] = $this->logbook_model->get_qsos($config['per_page'], $this->uri->segment(3));
- if(!$data['results']) {
+ if (!$data['results']) {
$this->session->set_flashdata('notice', lang('error_no_logbook_found') . ' Station Logbooks');
}
// Calculate Lat/Lng from Locator to use on Maps
- if($this->session->userdata('user_locator')) {
- $this->load->library('qra');
- $qra_position = $this->qra->qra2latlong($this->session->userdata('user_locator'));
- if (isset($qra_position[0]) and isset($qra_position[1])) {
- $data['qra'] = "set";
- $data['qra_lat'] = $qra_position[0];
- $data['qra_lng'] = $qra_position[1];
- } else {
- $data['qra'] = "none";
- }
- } else {
+ if ($this->session->userdata('user_locator')) {
+ $this->load->library('qra');
+ $qra_position = $this->qra->qra2latlong($this->session->userdata('user_locator'));
+ if (isset($qra_position[0]) and isset($qra_position[1])) {
+ $data['qra'] = "set";
+ $data['qra_lat'] = $qra_position[0];
+ $data['qra_lng'] = $qra_position[1];
+ } else {
$data['qra'] = "none";
+ }
+ } else {
+ $data['qra'] = "none";
}
@@ -77,17 +78,19 @@ class Logbook extends CI_Controller {
$this->load->view('interface_assets/header', $data);
$this->load->view('view_log/index');
$this->load->view('interface_assets/footer');
-
}
- function jsonentity($adif) {
- $this->load->model('user_model');
- if(!$this->user_model->authorize($this->config->item('auth_mode'))) { return; }
+ function jsonentity($adif)
+ {
+ $this->load->model('user_model');
+ if (!$this->user_model->authorize($this->config->item('auth_mode'))) {
+ return;
+ }
- $return['dxcc'] = $this->getentity($adif);
- header('Content-Type: application/json');
- echo json_encode($return, JSON_PRETTY_PRINT);
- }
+ $return['dxcc'] = $this->getentity($adif);
+ header('Content-Type: application/json');
+ echo json_encode($return, JSON_PRETTY_PRINT);
+ }
function json($tempcallsign, $temptype, $tempband, $tempmode, $tempstation_id = null)
{
@@ -99,21 +102,23 @@ class Logbook extends CI_Controller {
$station_id = $this->security->xss_clean($tempstation_id);
$this->load->model('user_model');
- if(!$this->user_model->authorize($this->config->item('auth_mode'))) { return; }
+ if (!$this->user_model->authorize($this->config->item('auth_mode'))) {
+ return;
+ }
// Convert - in Callsign to / Used for URL processing
- $callsign = str_replace("-","/",$callsign);
- $callsign = str_replace("Ø","0",$callsign);
+ $callsign = str_replace("-", "/", $callsign);
+ $callsign = str_replace("Ø", "0", $callsign);
// Check if callsign is an LoTW User
// Check Database for all other data
$this->load->model('logbook_model');
- $lotw_days=$this->logbook_model->check_last_lotw($callsign);
+ $lotw_days = $this->logbook_model->check_last_lotw($callsign);
if ($lotw_days != null) {
- $lotw_member="active";
+ $lotw_member = "active";
} else {
- $lotw_member="not found";
+ $lotw_member = "not found";
}
$return = [
@@ -137,8 +142,8 @@ class Logbook extends CI_Controller {
$return['dxcc'] = $this->dxcheck($callsign);
- $lookupcall=$this->get_plaincall($callsign);
-
+ $lookupcall = $this->get_plaincall($callsign);
+
$return['partial'] = $this->partial($lookupcall);
$callbook = $this->logbook_model->loadCallBook($callsign, $this->config->item('use_fullname'));
@@ -183,16 +188,17 @@ class Logbook extends CI_Controller {
return;
}
- function get_plaincall($callsign) {
- $split_callsign=explode('/',$callsign);
- if (count($split_callsign)==1) { // case F0ABC --> return cel 0 //
+ function get_plaincall($callsign)
+ {
+ $split_callsign = explode('/', $callsign);
+ if (count($split_callsign) == 1) { // case F0ABC --> return cel 0 //
$lookupcall = $split_callsign[0];
- } else if (count($split_callsign)==3) { // case EA/F0ABC/P --> return cel 1 //
+ } else if (count($split_callsign) == 3) { // case EA/F0ABC/P --> return cel 1 //
$lookupcall = $split_callsign[1];
} else { // case F0ABC/P --> return cel 0 OR case EA/FOABC --> retunr 1 (normaly not exist) //
- if (in_array(strtoupper($split_callsign[1]), array('P','M','MM','QRP','0','1','2','3','4','5','6','7','8','9'))) {
+ if (in_array(strtoupper($split_callsign[1]), array('P', 'M', 'MM', 'QRP', '0', '1', '2', '3', '4', '5', '6', '7', '8', '9'))) {
$lookupcall = $split_callsign[0];
- } else if (strlen($split_callsign[1])>3) { // Last Element longer than 3 chars? Take that as call
+ } else if (strlen($split_callsign[1]) > 3) { // Last Element longer than 3 chars? Take that as call
$lookupcall = $split_callsign[1];
} else { // Last Element up to 3 Chars? Take first element as Call
$lookupcall = $split_callsign[0];
@@ -202,11 +208,13 @@ class Logbook extends CI_Controller {
}
// Returns $val2 first if it has value, even if it is null or empty string, if not return $val1.
- function nval($val1, $val2) {
+ function nval($val1, $val2)
+ {
return (($val2 ?? "") === "" ? ($val1 ?? "") : ($val2 ?? ""));
}
- function confirmed_grid_before($gridsquare, $type, $band, $mode) {
+ function confirmed_grid_before($gridsquare, $type, $band, $mode)
+ {
if (strlen($gridsquare) < 4)
return false;
@@ -214,36 +222,36 @@ class Logbook extends CI_Controller {
$logbooks_locations_array = $this->logbooks_model->list_logbook_relationships($this->session->userdata('active_station_logbook'));
$user_default_confirmation = $this->session->userdata('user_default_confirmation');
- if(!empty($logbooks_locations_array)) {
- $extrawhere='';
+ if (!empty($logbooks_locations_array)) {
+ $extrawhere = '';
if (isset($user_default_confirmation) && strpos($user_default_confirmation, 'Q') !== false) {
- $extrawhere="COL_QSL_RCVD='Y'";
+ $extrawhere = "COL_QSL_RCVD='Y'";
}
if (isset($user_default_confirmation) && strpos($user_default_confirmation, 'L') !== false) {
- if ($extrawhere!='') {
- $extrawhere.=" OR";
+ if ($extrawhere != '') {
+ $extrawhere .= " OR";
}
- $extrawhere.=" COL_LOTW_QSL_RCVD='Y'";
+ $extrawhere .= " COL_LOTW_QSL_RCVD='Y'";
}
if (isset($user_default_confirmation) && strpos($user_default_confirmation, 'E') !== false) {
- if ($extrawhere!='') {
- $extrawhere.=" OR";
+ if ($extrawhere != '') {
+ $extrawhere .= " OR";
}
- $extrawhere.=" COL_EQSL_QSL_RCVD='Y'";
+ $extrawhere .= " COL_EQSL_QSL_RCVD='Y'";
}
if (isset($user_default_confirmation) && strpos($user_default_confirmation, 'Z') !== false) {
- if ($extrawhere!='') {
- $extrawhere.=" OR";
+ if ($extrawhere != '') {
+ $extrawhere .= " OR";
}
- $extrawhere.=" COL_QRZCOM_QSO_DOWNLOAD_STATUS='Y'";
+ $extrawhere .= " COL_QRZCOM_QSO_DOWNLOAD_STATUS='Y'";
}
- if($type == "SAT") {
+ if ($type == "SAT") {
$this->db->where('COL_PROP_MODE', 'SAT');
if ($extrawhere != '') {
- $this->db->where('('.$extrawhere.')');
+ $this->db->where('(' . $extrawhere . ')');
} else {
$this->db->where("1=0");
}
@@ -251,9 +259,9 @@ class Logbook extends CI_Controller {
$this->load->model('logbook_model');
$this->db->where('COL_MODE', $this->logbook_model->get_main_mode_from_mode($mode));
$this->db->where('COL_BAND', $band);
- $this->db->where('COL_PROP_MODE !=','SAT');
+ $this->db->where('COL_PROP_MODE !=', 'SAT');
if ($extrawhere != '') {
- $this->db->where('('.$extrawhere.')');
+ $this->db->where('(' . $extrawhere . ')');
} else {
$this->db->where("1=0");
}
@@ -261,7 +269,7 @@ class Logbook extends CI_Controller {
$this->db->where_in('station_id', $logbooks_locations_array);
$this->db->like('SUBSTRING(COL_GRIDSQUARE, 1, 4)', substr($gridsquare, 0, 4));
- $this->db->order_by($this->config->item('table_name').".COL_TIME_ON", "desc");
+ $this->db->order_by($this->config->item('table_name') . ".COL_TIME_ON", "desc");
$this->db->limit(1);
@@ -283,26 +291,24 @@ class Logbook extends CI_Controller {
$this->load->model('logbooks_model');
$logbooks_locations_array = $this->logbooks_model->list_logbook_relationships($this->session->userdata('active_station_logbook'));
- if(!empty($logbooks_locations_array)) {
- if($type == "SAT") {
+ if (!empty($logbooks_locations_array)) {
+ if ($type == "SAT") {
$this->db->where('COL_PROP_MODE', 'SAT');
} else {
$this->db->where('COL_MODE', $this->logbook_model->get_main_mode_from_mode($mode));
$this->db->where('COL_BAND', $band);
- $this->db->where('COL_PROP_MODE !=','SAT');
-
+ $this->db->where('COL_PROP_MODE !=', 'SAT');
}
$this->db->where_in('station_id', $logbooks_locations_array);
$this->db->like('SUBSTRING(COL_GRIDSQUARE, 1, 4)', substr($gridsquare, 0, 4));
- $this->db->order_by($this->config->item('table_name').".COL_TIME_ON", "desc");
+ $this->db->order_by($this->config->item('table_name') . ".COL_TIME_ON", "desc");
$this->db->limit(1);
$query = $this->db->get($this->config->item('table_name'));
- foreach ($query->result() as $workedBeforeRow)
- {
+ foreach ($query->result() as $workedBeforeRow) {
return true;
}
}
@@ -316,63 +322,62 @@ class Logbook extends CI_Controller {
* the $type variable is only used for satellites, set this to SAT.
*
*/
- function jsonlookupgrid($gridsquare, $type, $band, $mode) {
+ function jsonlookupgrid($gridsquare, $type, $band, $mode)
+ {
$return = [
"workedBefore" => false,
"confirmed" => false,
];
$user_default_confirmation = $this->session->userdata('user_default_confirmation');
- $this->load->model('logbooks_model');
- $logbooks_locations_array = $this->logbooks_model->list_logbook_relationships($this->session->userdata('active_station_logbook'));
+ $this->load->model('logbooks_model');
+ $logbooks_locations_array = $this->logbooks_model->list_logbook_relationships($this->session->userdata('active_station_logbook'));
- if($type == "SAT") {
+ if ($type == "SAT") {
$this->db->where('COL_PROP_MODE', 'SAT');
} else {
$this->load->model('logbook_model');
$this->db->where('COL_MODE', $this->logbook_model->get_main_mode_from_mode($mode));
$this->db->where('COL_BAND', $band);
- $this->db->where('COL_PROP_MODE !=','SAT');
-
+ $this->db->where('COL_PROP_MODE !=', 'SAT');
}
$this->db->where_in('station_id', $logbooks_locations_array);
$this->db->like('SUBSTRING(COL_GRIDSQUARE, 1, 4)', substr($gridsquare, 0, 4));
$query = $this->db->get($this->config->item('table_name'), 1, 0);
- foreach ($query->result() as $workedBeforeRow)
- {
+ foreach ($query->result() as $workedBeforeRow) {
$return['workedBefore'] = true;
}
- $extrawhere='';
+ $extrawhere = '';
if (isset($user_default_confirmation) && strpos($user_default_confirmation, 'Q') !== false) {
- $extrawhere="COL_QSL_RCVD='Y'";
+ $extrawhere = "COL_QSL_RCVD='Y'";
}
if (isset($user_default_confirmation) && strpos($user_default_confirmation, 'L') !== false) {
- if ($extrawhere!='') {
- $extrawhere.=" OR";
+ if ($extrawhere != '') {
+ $extrawhere .= " OR";
}
- $extrawhere.=" COL_LOTW_QSL_RCVD='Y'";
+ $extrawhere .= " COL_LOTW_QSL_RCVD='Y'";
}
if (isset($user_default_confirmation) && strpos($user_default_confirmation, 'E') !== false) {
- if ($extrawhere!='') {
- $extrawhere.=" OR";
+ if ($extrawhere != '') {
+ $extrawhere .= " OR";
}
- $extrawhere.=" COL_EQSL_QSL_RCVD='Y'";
+ $extrawhere .= " COL_EQSL_QSL_RCVD='Y'";
}
if (isset($user_default_confirmation) && strpos($user_default_confirmation, 'Z') !== false) {
- if ($extrawhere!='') {
- $extrawhere.=" OR";
+ if ($extrawhere != '') {
+ $extrawhere .= " OR";
}
- $extrawhere.=" COL_QRZCOM_QSO_DOWNLOAD_STATUS='Y'";
+ $extrawhere .= " COL_QRZCOM_QSO_DOWNLOAD_STATUS='Y'";
}
- if($type == "SAT") {
+ if ($type == "SAT") {
$this->db->where('COL_PROP_MODE', 'SAT');
if ($extrawhere != '') {
- $this->db->where('('.$extrawhere.')');
+ $this->db->where('(' . $extrawhere . ')');
} else {
$this->db->where("1=0");
}
@@ -380,9 +385,9 @@ class Logbook extends CI_Controller {
$this->load->model('logbook_model');
$this->db->where('COL_MODE', $this->logbook_model->get_main_mode_from_mode($mode));
$this->db->where('COL_BAND', $band);
- $this->db->where('COL_PROP_MODE !=','SAT');
+ $this->db->where('COL_PROP_MODE !=', 'SAT');
if ($extrawhere != '') {
- $this->db->where('('.$extrawhere.')');
+ $this->db->where('(' . $extrawhere . ')');
} else {
$this->db->where("1=0");
}
@@ -393,7 +398,7 @@ class Logbook extends CI_Controller {
$this->db->like('SUBSTRING(COL_GRIDSQUARE, 1, 4)', substr($gridsquare, 0, 4));
$query = $this->db->get($this->config->item('table_name'), 1, 0);
foreach ($query->result() as $workedBeforeRow) {
- $return['confirmed']=true;
+ $return['confirmed'] = true;
}
header('Content-Type: application/json');
@@ -402,7 +407,8 @@ class Logbook extends CI_Controller {
return;
}
- function jsonlookupdxcc($country, $type, $band, $mode) {
+ function jsonlookupdxcc($country, $type, $band, $mode)
+ {
$return = [
"workedBefore" => false,
@@ -414,54 +420,52 @@ class Logbook extends CI_Controller {
$logbooks_locations_array = $this->logbooks_model->list_logbook_relationships($this->session->userdata('active_station_logbook'));
$this->load->model('logbook_model');
- if(!empty($logbooks_locations_array)) {
- if($type == "SAT") {
+ if (!empty($logbooks_locations_array)) {
+ if ($type == "SAT") {
$this->db->where('COL_PROP_MODE', 'SAT');
} else {
$this->db->where('COL_MODE', $this->logbook_model->get_main_mode_from_mode($mode));
$this->db->where('COL_BAND', $band);
- $this->db->where('COL_PROP_MODE !=','SAT');
-
+ $this->db->where('COL_PROP_MODE !=', 'SAT');
}
$this->db->where_in('station_id', $logbooks_locations_array);
$this->db->where('COL_COUNTRY', urldecode($country));
$query = $this->db->get($this->config->item('table_name'), 1, 0);
- foreach ($query->result() as $workedBeforeRow)
- {
+ foreach ($query->result() as $workedBeforeRow) {
$return['workedBefore'] = true;
}
- $extrawhere='';
+ $extrawhere = '';
if (isset($user_default_confirmation) && strpos($user_default_confirmation, 'Q') !== false) {
- $extrawhere="COL_QSL_RCVD='Y'";
+ $extrawhere = "COL_QSL_RCVD='Y'";
}
if (isset($user_default_confirmation) && strpos($user_default_confirmation, 'L') !== false) {
- if ($extrawhere!='') {
- $extrawhere.=" OR";
+ if ($extrawhere != '') {
+ $extrawhere .= " OR";
}
- $extrawhere.=" COL_LOTW_QSL_RCVD='Y'";
+ $extrawhere .= " COL_LOTW_QSL_RCVD='Y'";
}
if (isset($user_default_confirmation) && strpos($user_default_confirmation, 'E') !== false) {
- if ($extrawhere!='') {
- $extrawhere.=" OR";
+ if ($extrawhere != '') {
+ $extrawhere .= " OR";
}
- $extrawhere.=" COL_EQSL_QSL_RCVD='Y'";
+ $extrawhere .= " COL_EQSL_QSL_RCVD='Y'";
}
if (isset($user_default_confirmation) && strpos($user_default_confirmation, 'Z') !== false) {
- if ($extrawhere!='') {
- $extrawhere.=" OR";
+ if ($extrawhere != '') {
+ $extrawhere .= " OR";
}
- $extrawhere.=" COL_QRZCOM_QSO_DOWNLOAD_STATUS='Y'";
+ $extrawhere .= " COL_QRZCOM_QSO_DOWNLOAD_STATUS='Y'";
}
- if($type == "SAT") {
+ if ($type == "SAT") {
$this->db->where('COL_PROP_MODE', 'SAT');
if ($extrawhere != '') {
- $this->db->where('('.$extrawhere.')');
+ $this->db->where('(' . $extrawhere . ')');
} else {
$this->db->where("1=0");
}
@@ -469,9 +473,9 @@ class Logbook extends CI_Controller {
$this->load->model('logbook_model');
$this->db->where('COL_MODE', $this->logbook_model->get_main_mode_from_mode($mode));
$this->db->where('COL_BAND', $band);
- $this->db->where('COL_PROP_MODE !=','SAT');
+ $this->db->where('COL_PROP_MODE !=', 'SAT');
if ($extrawhere != '') {
- $this->db->where('('.$extrawhere.')');
+ $this->db->where('(' . $extrawhere . ')');
} else {
$this->db->where("1=0");
}
@@ -482,7 +486,7 @@ class Logbook extends CI_Controller {
$query = $this->db->get($this->config->item('table_name'), 1, 0);
foreach ($query->result() as $workedBeforeRow) {
- $return['confirmed']=true;
+ $return['confirmed'] = true;
}
@@ -500,10 +504,11 @@ class Logbook extends CI_Controller {
}
}
- function jsonlookupcallsign($callsign, $type, $band, $mode) {
+ function jsonlookupcallsign($callsign, $type, $band, $mode)
+ {
// Convert - in Callsign to / Used for URL processing
- $callsign = str_replace("-","/",$callsign);
+ $callsign = str_replace("-", "/", $callsign);
$return = [
"workedBefore" => false,
@@ -515,54 +520,52 @@ class Logbook extends CI_Controller {
$logbooks_locations_array = $this->logbooks_model->list_logbook_relationships($this->session->userdata('active_station_logbook'));
$this->load->model('logbook_model');
- if(!empty($logbooks_locations_array)) {
- if($type == "SAT") {
+ if (!empty($logbooks_locations_array)) {
+ if ($type == "SAT") {
$this->db->where('COL_PROP_MODE', 'SAT');
} else {
$this->db->where('COL_MODE', $this->logbook_model->get_main_mode_from_mode($mode));
$this->db->where('COL_BAND', $band);
- $this->db->where('COL_PROP_MODE !=','SAT');
-
+ $this->db->where('COL_PROP_MODE !=', 'SAT');
}
$this->db->where_in('station_id', $logbooks_locations_array);
$this->db->where('COL_CALL', strtoupper($callsign));
$query = $this->db->get($this->config->item('table_name'), 1, 0);
- foreach ($query->result() as $workedBeforeRow)
- {
+ foreach ($query->result() as $workedBeforeRow) {
$return['workedBefore'] = true;
}
- $extrawhere='';
+ $extrawhere = '';
if (isset($user_default_confirmation) && strpos($user_default_confirmation, 'Q') !== false) {
- $extrawhere="COL_QSL_RCVD='Y'";
+ $extrawhere = "COL_QSL_RCVD='Y'";
}
if (isset($user_default_confirmation) && strpos($user_default_confirmation, 'L') !== false) {
- if ($extrawhere!='') {
- $extrawhere.=" OR";
+ if ($extrawhere != '') {
+ $extrawhere .= " OR";
}
- $extrawhere.=" COL_LOTW_QSL_RCVD='Y'";
+ $extrawhere .= " COL_LOTW_QSL_RCVD='Y'";
}
if (isset($user_default_confirmation) && strpos($user_default_confirmation, 'E') !== false) {
- if ($extrawhere!='') {
- $extrawhere.=" OR";
+ if ($extrawhere != '') {
+ $extrawhere .= " OR";
}
- $extrawhere.=" COL_EQSL_QSL_RCVD='Y'";
+ $extrawhere .= " COL_EQSL_QSL_RCVD='Y'";
}
if (isset($user_default_confirmation) && strpos($user_default_confirmation, 'Z') !== false) {
- if ($extrawhere!='') {
- $extrawhere.=" OR";
+ if ($extrawhere != '') {
+ $extrawhere .= " OR";
}
- $extrawhere.=" COL_QRZCOM_QSO_DOWNLOAD_STATUS='Y'";
+ $extrawhere .= " COL_QRZCOM_QSO_DOWNLOAD_STATUS='Y'";
}
- if($type == "SAT") {
+ if ($type == "SAT") {
$this->db->where('COL_PROP_MODE', 'SAT');
if ($extrawhere != '') {
- $this->db->where('('.$extrawhere.')');
+ $this->db->where('(' . $extrawhere . ')');
} else {
$this->db->where("1=0");
}
@@ -570,9 +573,9 @@ class Logbook extends CI_Controller {
$this->load->model('logbook_model');
$this->db->where('COL_MODE', $this->logbook_model->get_main_mode_from_mode($mode));
$this->db->where('COL_BAND', $band);
- $this->db->where('COL_PROP_MODE !=','SAT');
+ $this->db->where('COL_PROP_MODE !=', 'SAT');
if ($extrawhere != '') {
- $this->db->where('('.$extrawhere.')');
+ $this->db->where('(' . $extrawhere . ')');
} else {
$this->db->where("1=0");
}
@@ -597,11 +600,14 @@ class Logbook extends CI_Controller {
}
}
- function view($id) {
+ function view($id)
+ {
$this->load->library('DxccFlag');
$this->load->model('user_model');
- if(!$this->user_model->authorize($this->config->item('auth_mode'))) { return; }
+ if (!$this->user_model->authorize($this->config->item('auth_mode'))) {
+ return;
+ }
$this->load->library('qra');
$this->load->library('subdivisions');
@@ -609,88 +615,89 @@ class Logbook extends CI_Controller {
$this->load->model('logbook_model');
$data['query'] = $this->logbook_model->get_qso($id);
$data['dxccFlag'] = $this->dxccflag->get($data['query']->result()[0]->COL_DXCC);
-
- if ($this->session->userdata('user_measurement_base') == NULL) {
- $data['measurement_base'] = $this->config->item('measurement_base');
- }
- else {
- $data['measurement_base'] = $this->session->userdata('user_measurement_base');
- }
- $this->load->model('Qsl_model');
- $this->load->model('Sstv_model');
- $data['qslimages'] = $this->Qsl_model->getQslForQsoId($id);
- $data['sstvimages'] = $this->Sstv_model->getSstvForQsoId($id);
- $data['primary_subdivision'] = $this->subdivisions->get_primary_subdivision_name($data['query']->result()[0]->COL_DXCC);
- $data['secondary_subdivision'] = $this->subdivisions->get_secondary_subdivision_name($data['query']->result()[0]->COL_DXCC);
+ if ($this->session->userdata('user_measurement_base') == NULL) {
+ $data['measurement_base'] = $this->config->item('measurement_base');
+ } else {
+ $data['measurement_base'] = $this->session->userdata('user_measurement_base');
+ }
+
+ $this->load->model('Qsl_model');
+ $this->load->model('Sstv_model');
+ $data['qslimages'] = $this->Qsl_model->getQslForQsoId($id);
+ $data['sstvimages'] = $this->Sstv_model->getSstvForQsoId($id);
+ $data['primary_subdivision'] = $this->subdivisions->get_primary_subdivision_name($data['query']->result()[0]->COL_DXCC);
+ $data['secondary_subdivision'] = $this->subdivisions->get_secondary_subdivision_name($data['query']->result()[0]->COL_DXCC);
$data['max_upload'] = ini_get('upload_max_filesize');
$this->load->view('interface_assets/mini_header', $data);
$this->load->view('view_log/qso');
$this->load->view('interface_assets/footer');
}
- function partial($id) {
+ function partial($id)
+ {
$this->load->model('user_model');
- if(!$this->user_model->authorize($this->config->item('auth_mode'))) { return; }
+ if (!$this->user_model->authorize($this->config->item('auth_mode'))) {
+ return;
+ }
$this->load->model('logbooks_model');
$logbooks_locations_array = $this->logbooks_model->list_logbook_relationships($this->session->userdata('active_station_logbook'));
$html = "";
- if(!empty($logbooks_locations_array)) {
- $this->db->select(''.$this->config->item('table_name').'.COL_CALL, '.$this->config->item('table_name').'.COL_BAND, '.$this->config->item('table_name').'.COL_FREQ, '.$this->config->item('table_name').'.COL_TIME_ON, '.$this->config->item('table_name').'.COL_RST_RCVD, '.$this->config->item('table_name').'.COL_RST_SENT, '.$this->config->item('table_name').'.COL_MODE, '.$this->config->item('table_name').'.COL_SUBMODE, '.$this->config->item('table_name').'.COL_PRIMARY_KEY, '.$this->config->item('table_name').'.COL_SAT_NAME, '.$this->config->item('table_name').'.COL_GRIDSQUARE, '.$this->config->item('table_name').'.COL_QSL_RCVD, '.$this->config->item('table_name').'.COL_EQSL_QSL_RCVD, '.$this->config->item('table_name').'.COL_EQSL_QSL_SENT, '.$this->config->item('table_name').'.COL_QSL_SENT, '.$this->config->item('table_name').'.COL_STX, '.$this->config->item('table_name').'.COL_STX_STRING, '.$this->config->item('table_name').'.COL_SRX, '.$this->config->item('table_name').'.COL_SRX_STRING, '.$this->config->item('table_name').'.COL_LOTW_QSL_SENT, '.$this->config->item('table_name').'.COL_LOTW_QSL_RCVD, '.$this->config->item('table_name').'.COL_VUCC_GRIDS, '.$this->config->item('table_name').'.COL_MY_GRIDSQUARE, '.$this->config->item('table_name').'.COL_CONTEST_ID, '.$this->config->item('table_name').'.COL_STATE, '.$this->config->item('table_name').'.COL_QRZCOM_QSO_UPLOAD_STATUS, '.$this->config->item('table_name').'.COL_QRZCOM_QSO_DOWNLOAD_STATUS, station_profile.*');
+ if (!empty($logbooks_locations_array)) {
+ $this->db->select('' . $this->config->item('table_name') . '.COL_CALL, ' . $this->config->item('table_name') . '.COL_BAND, ' . $this->config->item('table_name') . '.COL_FREQ, ' . $this->config->item('table_name') . '.COL_TIME_ON, ' . $this->config->item('table_name') . '.COL_RST_RCVD, ' . $this->config->item('table_name') . '.COL_RST_SENT, ' . $this->config->item('table_name') . '.COL_MODE, ' . $this->config->item('table_name') . '.COL_SUBMODE, ' . $this->config->item('table_name') . '.COL_PRIMARY_KEY, ' . $this->config->item('table_name') . '.COL_SAT_NAME, ' . $this->config->item('table_name') . '.COL_GRIDSQUARE, ' . $this->config->item('table_name') . '.COL_QSL_RCVD, ' . $this->config->item('table_name') . '.COL_EQSL_QSL_RCVD, ' . $this->config->item('table_name') . '.COL_EQSL_QSL_SENT, ' . $this->config->item('table_name') . '.COL_QSL_SENT, ' . $this->config->item('table_name') . '.COL_STX, ' . $this->config->item('table_name') . '.COL_STX_STRING, ' . $this->config->item('table_name') . '.COL_SRX, ' . $this->config->item('table_name') . '.COL_SRX_STRING, ' . $this->config->item('table_name') . '.COL_LOTW_QSL_SENT, ' . $this->config->item('table_name') . '.COL_LOTW_QSL_RCVD, ' . $this->config->item('table_name') . '.COL_VUCC_GRIDS, ' . $this->config->item('table_name') . '.COL_MY_GRIDSQUARE, ' . $this->config->item('table_name') . '.COL_CONTEST_ID, ' . $this->config->item('table_name') . '.COL_STATE, ' . $this->config->item('table_name') . '.COL_QRZCOM_QSO_UPLOAD_STATUS, ' . $this->config->item('table_name') . '.COL_QRZCOM_QSO_DOWNLOAD_STATUS, station_profile.*');
$this->db->from($this->config->item('table_name'));
- $this->db->join('station_profile', 'station_profile.station_id = '.$this->config->item('table_name').'.station_id');
+ $this->db->join('station_profile', 'station_profile.station_id = ' . $this->config->item('table_name') . '.station_id');
$this->db->where_in('station_profile.station_id', $logbooks_locations_array);
$this->db->group_start();
- $this->db->where($this->config->item('table_name').'.COL_CALL', $id);
- $this->db->or_like($this->config->item('table_name').'.COL_CALL', '/'.$id,'before');
- $this->db->or_like($this->config->item('table_name').'.COL_CALL', $id.'/','after');
- $this->db->or_like($this->config->item('table_name').'.COL_CALL', '/'.$id.'/');
+ $this->db->where($this->config->item('table_name') . '.COL_CALL', $id);
+ $this->db->or_like($this->config->item('table_name') . '.COL_CALL', '/' . $id, 'before');
+ $this->db->or_like($this->config->item('table_name') . '.COL_CALL', $id . '/', 'after');
+ $this->db->or_like($this->config->item('table_name') . '.COL_CALL', '/' . $id . '/');
$this->db->group_end();
- $this->db->order_by($this->config->item('table_name').".COL_TIME_ON", "desc");
+ $this->db->order_by($this->config->item('table_name') . ".COL_TIME_ON", "desc");
$this->db->limit(5);
$query = $this->db->get();
}
- if (!empty($logbooks_locations_array) && $query->num_rows() > 0)
- {
+ if (!empty($logbooks_locations_array) && $query->num_rows() > 0) {
$html .= "
";
$html .= "
";
- $html .= "";
- $html .= "| Date | ";
- $html .= "Callsign | ";
- $html .= $this->part_table_header_col($this, $this->session->userdata('user_column1')==""?'Mode':$this->session->userdata('user_column1'));
- $html .= $this->part_table_header_col($this, $this->session->userdata('user_column2')==""?'RSTS':$this->session->userdata('user_column2'));
- $html .= $this->part_table_header_col($this, $this->session->userdata('user_column3')==""?'RSTR':$this->session->userdata('user_column3'));
- $html .= $this->part_table_header_col($this, $this->session->userdata('user_column4')==""?'Band':$this->session->userdata('user_column4'));
- switch($this->session->userdata('user_previous_qsl_type')) {
- case 0:
- $html .= "".lang('gen_hamradio_qsl')." | ";
- break;
- case 1:
- $html .= "".lang('lotw_short')." | ";
- break;
- case 2:
- $html .= "".lang('eqsl_short')." | ";
- break;
- case 4:
- $html .= "QRZ | ";
- break;
- default:
- $html .= "".lang('gen_hamradio_qsl')." | ";
- break;
- }
- $html .= " | ";
- $html .= "
";
+ $html .= "";
+ $html .= "| Date | ";
+ $html .= "Callsign | ";
+ $html .= $this->part_table_header_col($this, $this->session->userdata('user_column1') == "" ? 'Mode' : $this->session->userdata('user_column1'));
+ $html .= $this->part_table_header_col($this, $this->session->userdata('user_column2') == "" ? 'RSTS' : $this->session->userdata('user_column2'));
+ $html .= $this->part_table_header_col($this, $this->session->userdata('user_column3') == "" ? 'RSTR' : $this->session->userdata('user_column3'));
+ $html .= $this->part_table_header_col($this, $this->session->userdata('user_column4') == "" ? 'Band' : $this->session->userdata('user_column4'));
+ switch ($this->session->userdata('user_previous_qsl_type')) {
+ case 0:
+ $html .= "" . lang('gen_hamradio_qsl') . " | ";
+ break;
+ case 1:
+ $html .= "" . lang('lotw_short') . " | ";
+ break;
+ case 2:
+ $html .= "" . lang('eqsl_short') . " | ";
+ break;
+ case 4:
+ $html .= "QRZ | ";
+ break;
+ default:
+ $html .= "" . lang('gen_hamradio_qsl') . " | ";
+ break;
+ }
+ $html .= " | ";
+ $html .= "
";
// Get Date format
- if($this->session->userdata('user_date_format')) {
+ if ($this->session->userdata('user_date_format')) {
// If Logged in and session exists
$custom_date_format = $this->session->userdata('user_date_format');
} else {
@@ -698,218 +705,220 @@ class Logbook extends CI_Controller {
$custom_date_format = $this->config->item('qso_date_format');
}
- foreach ($query->result() as $row)
- {
+ foreach ($query->result() as $row) {
$timestamp = strtotime($row->COL_TIME_ON);
$html .= "";
- $html .= "| ".date($custom_date_format, $timestamp). date(' H:i',strtotime($row->COL_TIME_ON)) . " | ";
- $html .= "" . str_replace('0','Ø',strtoupper($row->COL_CALL)) . " | ";
- $html .= $this->part_table_col($row, $this->session->userdata('user_column1')==""?'Mode':$this->session->userdata('user_column1'));
- $html .= $this->part_table_col($row, $this->session->userdata('user_column2')==""?'RSTS':$this->session->userdata('user_column2'));
- $html .= $this->part_table_col($row, $this->session->userdata('user_column3')==""?'RSTR':$this->session->userdata('user_column3'));
- $html .= $this->part_table_col($row, $this->session->userdata('user_column4')==""?'Band':$this->session->userdata('user_column4'));
- if ($this->session->userdata('user_previous_qsl_type') == 1) {
- $html .= "";
- $html .= "COL_LOTW_QSL_SENT) {
- case "Y":
- $html .= "green";
- break;
- default:
- $html .= "red";
- }
- $html .= "\">▲";
- $html .= "COL_LOTW_QSL_RCVD) {
- case "Y":
- $html .= "green";
- break;
- default:
- $html .= "red";
- }
- $html .= "\">▼";
- $html .= " | ";
- } else if ($this->session->userdata('user_previous_qsl_type') == 2) {
- $html .= "";
- $html .= "COL_EQSL_QSL_SENT) {
- case "Y":
- $html .= "green";
- break;
- default:
- $html .= "red";
- }
- $html .= "\">▲";
- $html .= "COL_EQSL_QSL_RCVD) {
- case "Y":
- $html .= "green";
- break;
- default:
- $html .= "red";
- }
- $html .= "\">▼";
- $html .= " | ";
- } else if ($this->session->userdata('user_previous_qsl_type') == 4) {
- $html .= "";
- $html .= "COL_QRZCOM_QSO_UPLOAD_STATUS) {
- case "Y":
- $html .= "green";
- break;
- default:
- $html .= "red";
- }
- $html .= "\">▲";
- $html .= "COL_QRZCOM_QSO_DOWNLOAD_STATUS) {
- case "Y":
- $html .= "green";
- break;
- default:
- $html .= "red";
- }
- $html .= "\">▼";
- $html .= " | ";
- } else {
- $html .= "";
- $html .= "COL_QSL_SENT) {
- case "Y":
- $html .= "green";
- break;
- case "Q":
- $html .= "yellow";
- break;
- case "R":
- $html .= "yellow";
- break;
- case "I":
- $html .= "grey";
- break;
- default:
- $html .= "red";
- }
- $html .= "\">▲";
- $html .= "COL_QSL_RCVD) {
- case "Y":
- $html .= "green";
- break;
- case "Q":
- $html .= "yellow";
- break;
- case "R":
- $html .= "yellow";
- break;
- case "I":
- $html .= "grey";
- break;
- default:
- $html .= "red";
- }
- $html .= "\">▼";
- $html .= " | ";
+ $html .= "" . date($custom_date_format, $timestamp) . date(' H:i', strtotime($row->COL_TIME_ON)) . " | ";
+ $html .= "" . str_replace('0', 'Ø', strtoupper($row->COL_CALL)) . " | ";
+ $html .= $this->part_table_col($row, $this->session->userdata('user_column1') == "" ? 'Mode' : $this->session->userdata('user_column1'));
+ $html .= $this->part_table_col($row, $this->session->userdata('user_column2') == "" ? 'RSTS' : $this->session->userdata('user_column2'));
+ $html .= $this->part_table_col($row, $this->session->userdata('user_column3') == "" ? 'RSTR' : $this->session->userdata('user_column3'));
+ $html .= $this->part_table_col($row, $this->session->userdata('user_column4') == "" ? 'Band' : $this->session->userdata('user_column4'));
+ if ($this->session->userdata('user_previous_qsl_type') == 1) {
+ $html .= "";
+ $html .= "COL_LOTW_QSL_SENT) {
+ case "Y":
+ $html .= "green";
+ break;
+ default:
+ $html .= "red";
}
- $html .= " | ".$row->station_callsign." | ";
+ $html .= "\">▲";
+ $html .= "COL_LOTW_QSL_RCVD) {
+ case "Y":
+ $html .= "green";
+ break;
+ default:
+ $html .= "red";
+ }
+ $html .= "\">▼";
+ $html .= "";
+ } else if ($this->session->userdata('user_previous_qsl_type') == 2) {
+ $html .= "";
+ $html .= "COL_EQSL_QSL_SENT) {
+ case "Y":
+ $html .= "green";
+ break;
+ default:
+ $html .= "red";
+ }
+ $html .= "\">▲";
+ $html .= "COL_EQSL_QSL_RCVD) {
+ case "Y":
+ $html .= "green";
+ break;
+ default:
+ $html .= "red";
+ }
+ $html .= "\">▼";
+ $html .= " | ";
+ } else if ($this->session->userdata('user_previous_qsl_type') == 4) {
+ $html .= "";
+ $html .= "COL_QRZCOM_QSO_UPLOAD_STATUS) {
+ case "Y":
+ $html .= "green";
+ break;
+ default:
+ $html .= "red";
+ }
+ $html .= "\">▲";
+ $html .= "COL_QRZCOM_QSO_DOWNLOAD_STATUS) {
+ case "Y":
+ $html .= "green";
+ break;
+ default:
+ $html .= "red";
+ }
+ $html .= "\">▼";
+ $html .= " | ";
+ } else {
+ $html .= "";
+ $html .= "COL_QSL_SENT) {
+ case "Y":
+ $html .= "green";
+ break;
+ case "Q":
+ $html .= "yellow";
+ break;
+ case "R":
+ $html .= "yellow";
+ break;
+ case "I":
+ $html .= "grey";
+ break;
+ default:
+ $html .= "red";
+ }
+ $html .= "\">▲";
+ $html .= "COL_QSL_RCVD) {
+ case "Y":
+ $html .= "green";
+ break;
+ case "Q":
+ $html .= "yellow";
+ break;
+ case "R":
+ $html .= "yellow";
+ break;
+ case "I":
+ $html .= "grey";
+ break;
+ default:
+ $html .= "red";
+ }
+ $html .= "\">▼";
+ $html .= " | ";
+ }
+ $html .= "" . $row->station_callsign . " | ";
$html .= "
";
}
$html .= "
";
$html .= "
";
return $html;
} else {
- // if session data callbook_type is qrz
- if ($this->session->userdata('callbook_type') == "QRZ") {
- // Lookup using QRZ
- $this->load->library('qrz');
+ // if session data callbook_type is qrz
+ if ($this->session->userdata('callbook_type') == "QRZ") {
+ // Lookup using QRZ
+ $this->load->library('qrz');
- // Load the encryption library
- $this->load->library('encryption');
+ // Load the encryption library
+ $this->load->library('encryption');
- // Decrypt the password
- $decrypted_password = $this->encryption->decrypt($this->session->userdata('callbook_password'));
+ // Decrypt the password
+ $decrypted_password = $this->encryption->decrypt($this->session->userdata('callbook_password'));
- if(!$this->session->userdata('qrz_session_key')) {
- $qrz_session_key = $this->qrz->session($this->session->userdata('callbook_username'), $decrypted_password);
- $this->session->set_userdata('qrz_session_key', $qrz_session_key);
- }
+ if (!$this->session->userdata('qrz_session_key')) {
+ $qrz_session_key = $this->qrz->session($this->session->userdata('callbook_username'), $decrypted_password);
+ $this->session->set_userdata('qrz_session_key', $qrz_session_key);
+ }
+ $callsign['callsign'] = $this->qrz->search($id, $this->session->userdata('qrz_session_key'), $this->config->item('use_fullname'));
+
+ if (empty($callsign['callsign']['callsign'])) {
+ $qrz_session_key = $this->qrz->session($this->session->userdata('callbook_username'), $decrypted_password);
+ $this->session->set_userdata('qrz_session_key', $qrz_session_key);
$callsign['callsign'] = $this->qrz->search($id, $this->session->userdata('qrz_session_key'), $this->config->item('use_fullname'));
+ }
+ if (isset($callsign['callsign']['dxcc'])) {
+ $this->load->model('logbook_model');
+ $entity = $this->logbook_model->get_entity($callsign['callsign']['dxcc']);
+ $callsign['callsign']['dxcc_name'] = $entity['name'];
+ }
+ } elseif ($this->session->userdata('callbook_type') == "HamQTH") {
+ // Load the HamQTH library
+ $this->load->library('hamqth');
- if (empty($callsign['callsign']['callsign'])) {
- $qrz_session_key = $this->qrz->session($this->session->userdata('callbook_username'), $decrypted_password);
- $this->session->set_userdata('qrz_session_key', $qrz_session_key);
- $callsign['callsign'] = $this->qrz->search($id, $this->session->userdata('qrz_session_key'), $this->config->item('use_fullname'));
- }
- if (isset($callsign['callsign']['dxcc'])) {
- $this->load->model('logbook_model');
- $entity = $this->logbook_model->get_entity($callsign['callsign']['dxcc']);
- $callsign['callsign']['dxcc_name'] = $entity['name'];
- }
- } elseif ($this->session->userdata('callbook_type') == "HamQTH") {
- // Load the HamQTH library
- $this->load->library('hamqth');
+ // Load the encryption library
+ $this->load->library('encryption');
- // Load the encryption library
- $this->load->library('encryption');
+ // Decrypt the password
+ $decrypted_password = $this->encryption->decrypt($this->session->userdata('callbook_password'));
- // Decrypt the password
- $decrypted_password = $this->encryption->decrypt($this->session->userdata('callbook_password'));
-
- if(!$this->session->userdata('hamqth_session_key')) {
- $hamqth_session_key = $this->hamqth->session($this->session->userdata('callbook_username'), $decrypted_password);
- $this->session->set_userdata('hamqth_session_key', $hamqth_session_key);
- }
-
- $callsign['callsign'] = $this->hamqth->search($id, $this->session->userdata('hamqth_session_key'));
-
- // If HamQTH session has expired, start a new session and retry the search.
- if($callsign['callsign']['error'] == "Session does not exist or expired") {
- $hamqth_session_key = $this->hamqth->session($this->session->userdata('callbook_username'), $decrypted_password);
- $this->session->set_userdata('hamqth_session_key', $hamqth_session_key);
- $callsign['callsign'] = $this->hamqth->search($callsign, $this->session->userdata('hamqth_session_key'));
- }
- if (isset($data['callsign']['gridsquare'])) {
- $this->load->model('logbook_model');
- $callsign['grid_worked'] = $this->logbook_model->check_if_grid_worked_in_logbook(strtoupper(substr($data['callsign']['gridsquare'],0,4)), 0, $this->session->userdata('user_default_band'));
- }
- if (isset($callsign['callsign']['dxcc'])) {
- $this->load->model('logbook_model');
- $entity = $this->logbook_model->get_entity($callsign['callsign']['dxcc']);
- $callsign['callsign']['dxcc_name'] = $entity['name'];
- }
- if (isset($callsign['callsign']['error'])) {
- $callsign['error'] = $callsign['callsign']['error'];
- }
- } else {
- $callsign['error'] = 'Lookup not configured. Please review configuration.';
+ if (!$this->session->userdata('hamqth_session_key')) {
+ $hamqth_session_key = $this->hamqth->session($this->session->userdata('callbook_username'), $decrypted_password);
+ $this->session->set_userdata('hamqth_session_key', $hamqth_session_key);
}
+ $callsign['callsign'] = $this->hamqth->search($id, $this->session->userdata('hamqth_session_key'));
- if (isset($callsign['callsign']['gridsquare'])) {
+ // If HamQTH session has expired, start a new session and retry the search.
+ if ($callsign['callsign']['error'] == "Session does not exist or expired") {
+ $hamqth_session_key = $this->hamqth->session($this->session->userdata('callbook_username'), $decrypted_password);
+ $this->session->set_userdata('hamqth_session_key', $hamqth_session_key);
+ $callsign['callsign'] = $this->hamqth->search($callsign, $this->session->userdata('hamqth_session_key'));
+ }
+ if (isset($data['callsign']['gridsquare'])) {
$this->load->model('logbook_model');
- $callsign['grid_worked'] = $this->logbook_model->check_if_grid_worked_in_logbook(strtoupper(substr($callsign['callsign']['gridsquare'],0,4)), 0, $this->session->userdata('user_default_band'));
+ $callsign['grid_worked'] = $this->logbook_model->check_if_grid_worked_in_logbook(strtoupper(substr($data['callsign']['gridsquare'], 0, 4)), 0, $this->session->userdata('user_default_band'));
+ }
+ if (isset($callsign['callsign']['dxcc'])) {
+ $this->load->model('logbook_model');
+ $entity = $this->logbook_model->get_entity($callsign['callsign']['dxcc']);
+ $callsign['callsign']['dxcc_name'] = $entity['name'];
}
if (isset($callsign['callsign']['error'])) {
$callsign['error'] = $callsign['callsign']['error'];
}
+ } else {
+ // No callbook type set, return error message
+ $callsign['error'] = 'Online callbook not configured. Go to Account Settings and select either QRZ or HamQTH in the "Callbook" section.';
+ }
- $callsign['id'] = strtoupper($id);
- return $this->load->view('search/result', $callsign, true);
+ if (isset($callsign['callsign']['gridsquare'])) {
+ $this->load->model('logbook_model');
+ $callsign['grid_worked'] = $this->logbook_model->check_if_grid_worked_in_logbook(strtoupper(substr($callsign['callsign']['gridsquare'], 0, 4)), 0, $this->session->userdata('user_default_band'));
+ }
+ if (isset($callsign['callsign']['error'])) {
+ $callsign['error'] = $callsign['callsign']['error'];
+ }
+
+ $callsign['id'] = strtoupper($id);
+ return $this->load->view('search/result', $callsign, true);
}
}
- function search_result($id="", $id2="") {
+ function search_result($id = "", $id2 = "")
+ {
$this->load->model('user_model');
-
- if(!$this->user_model->authorize($this->config->item('auth_mode'))) { return; }
+
+ if (!$this->user_model->authorize($this->config->item('auth_mode'))) {
+ return;
+ }
$fixedid = $id;
if ($id2 != "") {
- if (strlen($id2)>3) { // Last Element longer than 3 chars? Take that as call
+ if (strlen($id2) > 3) { // Last Element longer than 3 chars? Take that as call
$fixedid = $id2;
} else { // Last Element up to 3 Chars? Take first element as Call
$fixedid = $id;
@@ -924,14 +933,12 @@ class Logbook extends CI_Controller {
if ($query->num_rows() > 0) {
$data['results'] = $query;
$this->load->view('view_log/partial/log_ajax.php', $data);
- }
- else {
+ } else {
$this->load->model('search');
$iota_search = $this->search->callsign_iota($id);
- if ($iota_search->num_rows() > 0)
- {
+ if ($iota_search->num_rows() > 0) {
$data['results'] = $iota_search;
$this->load->view('view_log/partial/log_ajax.php', $data);
@@ -947,7 +954,7 @@ class Logbook extends CI_Controller {
// Decrypt the password
$decrypted_password = $this->encryption->decrypt($this->session->userdata('callbook_password'));
- if(!$this->session->userdata('qrz_session_key')) {
+ if (!$this->session->userdata('qrz_session_key')) {
$qrz_session_key = $this->qrz->session($this->session->userdata('callbook_username'), $decrypted_password);
$this->session->set_userdata('qrz_session_key', $qrz_session_key);
}
@@ -965,7 +972,7 @@ class Logbook extends CI_Controller {
}
if (isset($data['callsign']['gridsquare'])) {
$this->load->model('logbook_model');
- $data['grid_worked'] = $this->logbook_model->check_if_grid_worked_in_logbook(strtoupper(substr($data['callsign']['gridsquare'],0,4)), 0, $this->session->userdata('user_default_band'));
+ $data['grid_worked'] = $this->logbook_model->check_if_grid_worked_in_logbook(strtoupper(substr($data['callsign']['gridsquare'], 0, 4)), 0, $this->session->userdata('user_default_band'));
}
} elseif ($this->session->userdata('callbook_type') == "HamQTH") {
// Load the HamQTH library
@@ -976,9 +983,9 @@ class Logbook extends CI_Controller {
// Decrypt the password
$decrypted_password = $this->encryption->decrypt($this->session->userdata('callbook_password'));
-
- if(!$this->session->userdata('hamqth_session_key')) {
+
+ if (!$this->session->userdata('hamqth_session_key')) {
$hamqth_session_key = $this->hamqth->session($this->session->userdata('callbook_username'), $decrypted_password);
$this->session->set_userdata('hamqth_session_key', $hamqth_session_key);
}
@@ -986,14 +993,14 @@ class Logbook extends CI_Controller {
$data['callsign'] = $this->hamqth->search($fixedid, $this->session->userdata('hamqth_session_key'));
// If HamQTH session has expired, start a new session and retry the search.
- if($data['callsign']['error'] == "Session does not exist or expired") {
+ if ($data['callsign']['error'] == "Session does not exist or expired") {
$hamqth_session_key = $this->hamqth->session($this->session->userdata('callbook_username'), $decrypted_password);
$this->session->set_userdata('hamqth_session_key', $hamqth_session_key);
$data['callsign'] = $this->hamqth->search($fixedid, $this->session->userdata('hamqth_session_key'));
}
if (isset($data['callsign']['gridsquare'])) {
$this->load->model('logbook_model');
- $data['grid_worked'] = $this->logbook_model->check_if_grid_worked_in_logbook(strtoupper(substr($data['callsign']['gridsquare'],0,4)), 0, $this->session->userdata('user_default_band'));
+ $data['grid_worked'] = $this->logbook_model->check_if_grid_worked_in_logbook(strtoupper(substr($data['callsign']['gridsquare'], 0, 4)), 0, $this->session->userdata('user_default_band'));
}
if (isset($data['callsign']['dxcc'])) {
$this->load->model('logbook_model');
@@ -1007,39 +1014,43 @@ class Logbook extends CI_Controller {
$data['error'] = 'Lookup not configured. Please review configuration.';
}
- $data['id'] = strtoupper($id);
+ $data['id'] = strtoupper($id);
$this->load->view('search/result', $data);
}
}
} else {
$data['results'] = $query;
-
+
$this->load->view('view_log/partial/log_ajax.php', $data);
}
}
- function querydb($id) {
+ function querydb($id)
+ {
$this->db->from($this->config->item('table_name'));
- $this->db->join('station_profile', 'station_profile.station_id = '.$this->config->item('table_name').'.station_id');
- $this->db->join('dxcc_entities', 'dxcc_entities.adif = '.$this->config->item('table_name').'.COL_DXCC', 'left outer');
- $this->db->join('lotw_users', 'lotw_users.callsign = '.$this->config->item('table_name').'.col_call', 'left outer');
+ $this->db->join('station_profile', 'station_profile.station_id = ' . $this->config->item('table_name') . '.station_id');
+ $this->db->join('dxcc_entities', 'dxcc_entities.adif = ' . $this->config->item('table_name') . '.COL_DXCC', 'left outer');
+ $this->db->join('lotw_users', 'lotw_users.callsign = ' . $this->config->item('table_name') . '.col_call', 'left outer');
$this->db->group_start();
- $this->db->like(''.$this->config->item('table_name').'.COL_CALL', $id);
- $this->db->or_like(''.$this->config->item('table_name').'.COL_GRIDSQUARE', $id);
- $this->db->or_like(''.$this->config->item('table_name').'.COL_VUCC_GRIDS', $id);
+ $this->db->like('' . $this->config->item('table_name') . '.COL_CALL', $id);
+ $this->db->or_like('' . $this->config->item('table_name') . '.COL_GRIDSQUARE', $id);
+ $this->db->or_like('' . $this->config->item('table_name') . '.COL_VUCC_GRIDS', $id);
$this->db->group_end();
$this->db->where('station_profile.user_id', $this->session->userdata('user_id'));
- $this->db->order_by(''.$this->config->item('table_name').'.COL_TIME_ON', 'desc');
+ $this->db->order_by('' . $this->config->item('table_name') . '.COL_TIME_ON', 'desc');
return $this->db->get();
- }
+ }
- function search_duplicates($station_id) {
+ function search_duplicates($station_id)
+ {
$station_id = $this->security->xss_clean($station_id);
$this->load->model('user_model');
- if(!$this->user_model->authorize($this->config->item('auth_mode'))) { return; }
+ if (!$this->user_model->authorize($this->config->item('auth_mode'))) {
+ return;
+ }
$this->load->model('logbooks_model');
$logbooks_locations_array = $this->logbooks_model->list_logbook_relationships($this->session->userdata('active_station_logbook'));
@@ -1048,10 +1059,10 @@ class Logbook extends CI_Controller {
return null;
}
- $location_list = "'".implode("','",$logbooks_locations_array)."'";
+ $location_list = "'" . implode("','", $logbooks_locations_array) . "'";
$sql = 'select count(*) as occurence, COL_CALL, COL_MODE, COL_SUBMODE, station_callsign, COL_SAT_NAME, COL_BAND, min(col_time_on) Mintime, max(col_time_on) Maxtime from ' . $this->config->item('table_name') .
- ' join station_profile on ' . $this->config->item('table_name') . '.station_id = station_profile.station_id where ' . $this->config->item('table_name') .'.station_id in ('. $location_list . ')';
+ ' join station_profile on ' . $this->config->item('table_name') . '.station_id = station_profile.station_id where ' . $this->config->item('table_name') . '.station_id in (' . $location_list . ')';
if ($station_id != 'All') {
$sql .= ' and station_profile.station_id = ' . $station_id;
@@ -1064,15 +1075,17 @@ class Logbook extends CI_Controller {
$data['qsos'] = $query;
$this->load->view('search/duplicates_result.php', $data);
-
}
- function search_lotw_unconfirmed($station_id) {
+ function search_lotw_unconfirmed($station_id)
+ {
$station_id = $this->security->xss_clean($station_id);
$this->load->model('user_model');
- if(!$this->user_model->authorize($this->config->item('auth_mode'))) { return; }
+ if (!$this->user_model->authorize($this->config->item('auth_mode'))) {
+ return;
+ }
$this->load->model('logbooks_model');
$logbooks_locations_array = $this->logbooks_model->list_logbook_relationships($this->session->userdata('active_station_logbook'));
@@ -1081,12 +1094,12 @@ class Logbook extends CI_Controller {
return null;
}
- $location_list = "'".implode("','",$logbooks_locations_array)."'";
+ $location_list = "'" . implode("','", $logbooks_locations_array) . "'";
$sql = 'select COL_CALL, COL_MODE, COL_SUBMODE, station_callsign, COL_SAT_NAME, COL_BAND, COL_TIME_ON, lotw_users.lastupload from ' . $this->config->item('table_name') .
- ' join station_profile on ' . $this->config->item('table_name') . '.station_id = station_profile.station_id
+ ' join station_profile on ' . $this->config->item('table_name') . '.station_id = station_profile.station_id
join lotw_users on ' . $this->config->item('table_name') . '.col_call = lotw_users.callsign
- where ' . $this->config->item('table_name') .'.station_id in ('. $location_list . ')';
+ where ' . $this->config->item('table_name') . '.station_id in (' . $location_list . ')';
if ($station_id != 'All') {
$sql .= ' and station_profile.station_id = ' . $station_id;
@@ -1099,15 +1112,17 @@ class Logbook extends CI_Controller {
$data['qsos'] = $query;
$this->load->view('search/lotw_unconfirmed_result.php', $data);
-
}
- function search_incorrect_cq_zones($station_id) {
+ function search_incorrect_cq_zones($station_id)
+ {
$station_id = $this->security->xss_clean($station_id);
$this->load->model('user_model');
- if(!$this->user_model->authorize($this->config->item('auth_mode'))) { return; }
+ if (!$this->user_model->authorize($this->config->item('auth_mode'))) {
+ return;
+ }
$this->load->model('logbooks_model');
$logbooks_locations_array = $this->logbooks_model->list_logbook_relationships($this->session->userdata('active_station_logbook'));
@@ -1116,10 +1131,10 @@ class Logbook extends CI_Controller {
return null;
}
- $location_list = "'".implode("','",$logbooks_locations_array)."'";
+ $location_list = "'" . implode("','", $logbooks_locations_array) . "'";
$sql = 'select *, (select group_concat(distinct cqzone order by cqzone) from dxcc_master where countrycode = thcv.col_dxcc and cqzone <> \'\' order by cqzone asc) as correctcqzone from ' . $this->config->item('table_name') .
- ' thcv join station_profile on thcv.station_id = station_profile.station_id where thcv.station_id in ('. $location_list . ')
+ ' thcv join station_profile on thcv.station_id = station_profile.station_id where thcv.station_id in (' . $location_list . ')
and not exists (select 1 from dxcc_master where countrycode = thcv.col_dxcc and cqzone = col_cqz) and col_dxcc > 0
';
@@ -1137,238 +1152,341 @@ class Logbook extends CI_Controller {
/*
* Provide a dxcc search, returning results json encoded
*/
- function local_find_dxcc($call = "", $date = "") {
+ function local_find_dxcc($call = "", $date = "")
+ {
$this->load->model("logbook_model");
- if ($date == ''){
+ if ($date == '') {
$date = date("Y-m-d");
}
$ans = $this->logbook_model->check_dxcc_stored_proc($call, $date);
print json_encode($ans);
}
- function dxcheck($call = "", $date = "") {
+ function dxcheck($call = "", $date = "")
+ {
$this->load->model("logbook_model");
- if ($date == ''){
+ if ($date == '') {
$date = date("Y-m-d");
}
$ans = $this->logbook_model->dxcc_lookup($call, $date);
return $ans;
}
- function getentity($adif) {
- $this->load->model("logbook_model");
+ function getentity($adif)
+ {
+ $this->load->model("logbook_model");
- $entity = $this->logbook_model->get_entity($adif);
- return $entity;
- }
+ $entity = $this->logbook_model->get_entity($adif);
+ return $entity;
+ }
/* return station bearing */
- function searchbearing() {
- $locator = xss_clean($this->input->post('grid'));
- $station_id = xss_clean($this->input->post('stationProfile'));
- $this->load->library('Qra');
+ function searchbearing()
+ {
+ $locator = xss_clean($this->input->post('grid'));
+ $station_id = xss_clean($this->input->post('stationProfile'));
+ $this->load->library('Qra');
- if($locator != null) {
- if (isset($station_id)) {
- // be sure that station belongs to user
- $this->load->model('Stations');
- if (!$this->Stations->check_station_is_accessible($station_id)) {
- return "";
- }
-
- // get station profile
- $station_profile = $this->Stations->profile_clean($station_id);
-
- // get locator
- $mylocator = $station_profile->station_gridsquare;
- } else if($this->session->userdata('user_locator') != null){
- $mylocator = $this->session->userdata('user_locator');
- } else {
- $mylocator = $this->config->item('locator');
+ if ($locator != null) {
+ if (isset($station_id)) {
+ // be sure that station belongs to user
+ $this->load->model('Stations');
+ if (!$this->Stations->check_station_is_accessible($station_id)) {
+ return "";
}
- if ($this->session->userdata('user_measurement_base') == NULL) {
- $measurement_base = $this->config->item('measurement_base');
- }
- else {
- $measurement_base = $this->session->userdata('user_measurement_base');
- }
+ // get station profile
+ $station_profile = $this->Stations->profile_clean($station_id);
- $bearing = $this->qra->bearing($mylocator, $locator, $measurement_base);
-
- echo $bearing;
+ // get locator
+ $mylocator = $station_profile->station_gridsquare;
+ } else if ($this->session->userdata('user_locator') != null) {
+ $mylocator = $this->session->userdata('user_locator');
+ } else {
+ $mylocator = $this->config->item('locator');
}
- return "";
+
+ if ($this->session->userdata('user_measurement_base') == NULL) {
+ $measurement_base = $this->config->item('measurement_base');
+ } else {
+ $measurement_base = $this->session->userdata('user_measurement_base');
+ }
+
+ $bearing = $this->qra->bearing($mylocator, $locator, $measurement_base);
+
+ echo $bearing;
+ }
+ return "";
}
/* return distance */
- function searchdistance() {
- $locator = xss_clean($this->input->post('grid'));
- $station_id = xss_clean($this->input->post('stationProfile'));
- $this->load->library('Qra');
+ function searchdistance()
+ {
+ $locator = xss_clean($this->input->post('grid'));
+ $station_id = xss_clean($this->input->post('stationProfile'));
+ $this->load->library('Qra');
- if($locator != null) {
- if (isset($station_id)) {
- // be sure that station belongs to user
- $this->load->model('Stations');
- if (!$this->Stations->check_station_is_accessible($station_id)) {
- return 0;
- }
-
- // get station profile
- $station_profile = $this->Stations->profile_clean($station_id);
-
- // get locator
- $mylocator = $station_profile->station_gridsquare;
- } else if($this->session->userdata('user_locator') != null){
- $mylocator = $this->session->userdata('user_locator');
- } else {
- $mylocator = $this->config->item('locator');
+ if ($locator != null) {
+ if (isset($station_id)) {
+ // be sure that station belongs to user
+ $this->load->model('Stations');
+ if (!$this->Stations->check_station_is_accessible($station_id)) {
+ return 0;
}
- $distance = $this->qra->distance($mylocator, $locator, 'K');
+ // get station profile
+ $station_profile = $this->Stations->profile_clean($station_id);
- echo $distance;
+ // get locator
+ $mylocator = $station_profile->station_gridsquare;
+ } else if ($this->session->userdata('user_locator') != null) {
+ $mylocator = $this->session->userdata('user_locator');
+ } else {
+ $mylocator = $this->config->item('locator');
}
- return 0;
+
+ $distance = $this->qra->distance($mylocator, $locator, 'K');
+
+ echo $distance;
+ }
+ return 0;
}
/* return station bearing */
- function bearing($locator, $unit = 'M', $station_id = null) {
- $this->load->library('Qra');
+ function bearing($locator, $unit = 'M', $station_id = null)
+ {
+ $this->load->library('Qra');
- if($locator != null) {
- if (isset($station_id)) {
- // be sure that station belongs to user
- $this->load->model('Stations');
- if (!$this->Stations->check_station_is_accessible($station_id)) {
- return "";
- }
-
- // get station profile
- $station_profile = $this->Stations->profile_clean($station_id);
-
- // get locator
- $mylocator = $station_profile->station_gridsquare;
- } else if($this->session->userdata('user_locator') != null){
- $mylocator = $this->session->userdata('user_locator');
- } else {
- $mylocator = $this->config->item('locator');
+ if ($locator != null) {
+ if (isset($station_id)) {
+ // be sure that station belongs to user
+ $this->load->model('Stations');
+ if (!$this->Stations->check_station_is_accessible($station_id)) {
+ return "";
}
- $bearing = $this->qra->bearing($mylocator, $locator, $unit);
+ // get station profile
+ $station_profile = $this->Stations->profile_clean($station_id);
- return $bearing;
+ // get locator
+ $mylocator = $station_profile->station_gridsquare;
+ } else if ($this->session->userdata('user_locator') != null) {
+ $mylocator = $this->session->userdata('user_locator');
+ } else {
+ $mylocator = $this->config->item('locator');
}
- return "";
+
+ $bearing = $this->qra->bearing($mylocator, $locator, $unit);
+
+ return $bearing;
+ }
+ return "";
}
/* return distance */
- function distance($locator, $station_id = null) {
- $distance = 0;
- $this->load->library('Qra');
+ function distance($locator, $station_id = null)
+ {
+ $distance = 0;
+ $this->load->library('Qra');
- if($locator != null) {
- if (isset($station_id)) {
- // be sure that station belongs to user
- $this->load->model('Stations');
- if (!$this->Stations->check_station_is_accessible($station_id)) {
- return 0;
- }
-
- // get station profile
- $station_profile = $this->Stations->profile_clean($station_id);
-
- // get locator
- $mylocator = $station_profile->station_gridsquare;
- } else if($this->session->userdata('user_locator') != null){
- $mylocator = $this->session->userdata('user_locator');
- } else {
- $mylocator = $this->config->item('locator');
+ if ($locator != null) {
+ if (isset($station_id)) {
+ // be sure that station belongs to user
+ $this->load->model('Stations');
+ if (!$this->Stations->check_station_is_accessible($station_id)) {
+ return 0;
}
- $distance = $this->qra->distance($mylocator, $locator, 'K');
+ // get station profile
+ $station_profile = $this->Stations->profile_clean($station_id);
+ // get locator
+ $mylocator = $station_profile->station_gridsquare;
+ } else if ($this->session->userdata('user_locator') != null) {
+ $mylocator = $this->session->userdata('user_locator');
+ } else {
+ $mylocator = $this->config->item('locator');
}
- return $distance;
+
+ $distance = $this->qra->distance($mylocator, $locator, 'K');
+ }
+ return $distance;
}
- function qralatlng($qra) {
+ function qralatlng($qra)
+ {
$this->load->library('Qra');
$latlng = $this->qra->qra2latlong($qra);
return $latlng;
}
- function qralatlngjson() {
+ function qralatlngjson()
+ {
$qra = xss_clean($this->input->post('qra'));
$this->load->library('Qra');
$latlng = $this->qra->qra2latlong($qra);
print json_encode($latlng);
}
- function get_qsos($num, $offset) {
- $this->db->select(''.$this->config->item('table_name').'.COL_CALL, '.$this->config->item('table_name').'.COL_BAND, '.$this->config->item('table_name').'.COL_TIME_ON, '.$this->config->item('table_name').'.COL_RST_RCVD, '.$this->config->item('table_name').'.COL_RST_SENT, '.$this->config->item('table_name').'.COL_MODE, '.$this->config->item('table_name').'.COL_SUBMODE, '.$this->config->item('table_name').'.COL_NAME, '.$this->config->item('table_name').'.COL_COUNTRY, '.$this->config->item('table_name').'.COL_PRIMARY_KEY, '.$this->config->item('table_name').'.COL_SAT_NAME, '.$this->config->item('table_name').'.COL_GRIDSQUARE, '.$this->config->item('table_name').'.COL_QSL_RCVD, '.$this->config->item('table_name').'.COL_EQSL_QSL_RCVD, '.$this->config->item('table_name').'.COL_EQSL_QSL_SENT, '.$this->config->item('table_name').'.COL_QSL_SENT, '.$this->config->item('table_name').'.COL_STX, '.$this->config->item('table_name').'.COL_STX_STRING, '.$this->config->item('table_name').'.COL_SRX, '.$this->config->item('table_name').'.COL_SRX_STRING, '.$this->config->item('table_name').'.COL_LOTW_QSL_SENT, '.$this->config->item('table_name').'.COL_LOTW_QSL_RCVD, '.$this->config->item('table_name').'.COL_VUCC_GRIDS, station_profile.*');
- $this->db->from($this->config->item('table_name'));
+ function get_qsos($num, $offset)
+ {
+ $this->db->select('' . $this->config->item('table_name') . '.COL_CALL, ' . $this->config->item('table_name') . '.COL_BAND, ' . $this->config->item('table_name') . '.COL_TIME_ON, ' . $this->config->item('table_name') . '.COL_RST_RCVD, ' . $this->config->item('table_name') . '.COL_RST_SENT, ' . $this->config->item('table_name') . '.COL_MODE, ' . $this->config->item('table_name') . '.COL_SUBMODE, ' . $this->config->item('table_name') . '.COL_NAME, ' . $this->config->item('table_name') . '.COL_COUNTRY, ' . $this->config->item('table_name') . '.COL_PRIMARY_KEY, ' . $this->config->item('table_name') . '.COL_SAT_NAME, ' . $this->config->item('table_name') . '.COL_GRIDSQUARE, ' . $this->config->item('table_name') . '.COL_QSL_RCVD, ' . $this->config->item('table_name') . '.COL_EQSL_QSL_RCVD, ' . $this->config->item('table_name') . '.COL_EQSL_QSL_SENT, ' . $this->config->item('table_name') . '.COL_QSL_SENT, ' . $this->config->item('table_name') . '.COL_STX, ' . $this->config->item('table_name') . '.COL_STX_STRING, ' . $this->config->item('table_name') . '.COL_SRX, ' . $this->config->item('table_name') . '.COL_SRX_STRING, ' . $this->config->item('table_name') . '.COL_LOTW_QSL_SENT, ' . $this->config->item('table_name') . '.COL_LOTW_QSL_RCVD, ' . $this->config->item('table_name') . '.COL_VUCC_GRIDS, station_profile.*');
+ $this->db->from($this->config->item('table_name'));
- $this->db->join('station_profile', 'station_profile.station_id = '.$this->config->item('table_name').'.station_id');
- $this->db->order_by(''.$this->config->item('table_name').'.COL_TIME_ON', "desc");
+ $this->db->join('station_profile', 'station_profile.station_id = ' . $this->config->item('table_name') . '.station_id');
+ $this->db->order_by('' . $this->config->item('table_name') . '.COL_TIME_ON', "desc");
- $this->db->limit($num);
- $this->db->offset($offset);
+ $this->db->limit($num);
+ $this->db->offset($offset);
- return $this->db->get();
- }
+ return $this->db->get();
+ }
- function part_table_header_col($ctx, $name) {
- $ret='';
- switch($name) {
- case 'Mode': $ret.= ''.$ctx->lang->line('gen_hamradio_mode').' | '; break;
- case 'RSTS': $ret.= ''.$ctx->lang->line('gen_hamradio_rsts').' | '; break;
- case 'RSTR': $ret.= ''.$ctx->lang->line('gen_hamradio_rstr').' | '; break;
- case 'Country': $ret.= ''.$ctx->lang->line('general_word_country').' | '; break;
- case 'IOTA': $ret.= ''.$ctx->lang->line('gen_hamradio_iota').' | '; break;
- case 'SOTA': $ret.= ''.$ctx->lang->line('gen_hamradio_sota').' | '; break;
- case 'WWFF': $ret.= ''.$ctx->lang->line('gen_hamradio_wwff').' | '; break;
- case 'POTA': $ret.= ''.$ctx->lang->line('gen_hamradio_pota').' | '; break;
- case 'State': $ret.= ''.$ctx->lang->line('gen_hamradio_state').' | '; break;
- case 'Grid': $ret.= ''.$ctx->lang->line('gen_hamradio_gridsquare').' | '; break;
- case 'Distance': $ret.= ''.$ctx->lang->line('gen_hamradio_distance').' | '; break;
- case 'Band': $ret.= ''.$ctx->lang->line('gen_hamradio_band').' | '; break;
- case 'Frequency': $ret.= ''.$ctx->lang->line('gen_hamradio_frequency').' | '; break;
- case 'Operator': $ret.= ''.$ctx->lang->line('gen_hamradio_operator').' | '; break;
+ function part_table_header_col($ctx, $name)
+ {
+ $ret = '';
+ switch ($name) {
+ case 'Mode':
+ $ret .= '' . $ctx->lang->line('gen_hamradio_mode') . ' | ';
+ break;
+ case 'RSTS':
+ $ret .= '' . $ctx->lang->line('gen_hamradio_rsts') . ' | ';
+ break;
+ case 'RSTR':
+ $ret .= '' . $ctx->lang->line('gen_hamradio_rstr') . ' | ';
+ break;
+ case 'Country':
+ $ret .= '' . $ctx->lang->line('general_word_country') . ' | ';
+ break;
+ case 'IOTA':
+ $ret .= '' . $ctx->lang->line('gen_hamradio_iota') . ' | ';
+ break;
+ case 'SOTA':
+ $ret .= '' . $ctx->lang->line('gen_hamradio_sota') . ' | ';
+ break;
+ case 'WWFF':
+ $ret .= '' . $ctx->lang->line('gen_hamradio_wwff') . ' | ';
+ break;
+ case 'POTA':
+ $ret .= '' . $ctx->lang->line('gen_hamradio_pota') . ' | ';
+ break;
+ case 'State':
+ $ret .= '' . $ctx->lang->line('gen_hamradio_state') . ' | ';
+ break;
+ case 'Grid':
+ $ret .= '' . $ctx->lang->line('gen_hamradio_gridsquare') . ' | ';
+ break;
+ case 'Distance':
+ $ret .= '' . $ctx->lang->line('gen_hamradio_distance') . ' | ';
+ break;
+ case 'Band':
+ $ret .= '' . $ctx->lang->line('gen_hamradio_band') . ' | ';
+ break;
+ case 'Frequency':
+ $ret .= '' . $ctx->lang->line('gen_hamradio_frequency') . ' | ';
+ break;
+ case 'Operator':
+ $ret .= '' . $ctx->lang->line('gen_hamradio_operator') . ' | ';
+ break;
}
return $ret;
}
- function part_QrbCalcLink($mygrid, $grid, $vucc) {
- $ret='';
+ function part_QrbCalcLink($mygrid, $grid, $vucc)
+ {
+ $ret = '';
if (!empty($grid)) {
- $ret.= $grid . ' ';
+ $ret .= $grid . ' ';
} else if (!empty($vucc)) {
- $ret.= $vucc .' ';
+ $ret .= $vucc . ' ';
}
return $ret;
}
- function part_table_col($row, $name) {
- $ret='';
- $ci =& get_instance();
- switch($name) {
- case 'Mode': $ret.= ''; $ret.= $row->COL_SUBMODE==null?$row->COL_MODE:$row->COL_SUBMODE . ' | '; break;
- case 'RSTS': $ret.= '' . $row->COL_RST_SENT; if ($row->COL_STX) { $ret.= ' COL_CONTEST_ID:"n/a").'" class="badge text-bg-light">'; $ret.=sprintf("%03d", $row->COL_STX); $ret.= '';} if ($row->COL_STX_STRING) { $ret.= ' COL_CONTEST_ID:"n/a").'" class="badge text-bg-light">' . $row->COL_STX_STRING . '';} $ret.= ' | '; break;
- case 'RSTR': $ret.= '' . $row->COL_RST_RCVD; if ($row->COL_SRX) { $ret.= ' COL_CONTEST_ID:"n/a").'" class="badge text-bg-light">'; $ret.=sprintf("%03d", $row->COL_SRX); $ret.= '';} if ($row->COL_SRX_STRING) { $ret.= ' COL_CONTEST_ID:"n/a").'" class="badge text-bg-light">' . $row->COL_SRX_STRING . '';} $ret.= ' | '; break;
- case 'Country': $ret.= '' . ucwords(strtolower(($row->COL_COUNTRY))); if ($row->end != NULL) $ret.= ' '.$ci->lang->line('gen_hamradio_deleted_dxcc').'' . ' | '; break;
- case 'IOTA': $ret.= '' . ($row->COL_IOTA) . ' | '; break;
- case 'SOTA': $ret.= '' . ($row->COL_SOTA_REF) . ' | '; break;
- case 'WWFF': $ret.= '' . ($row->COL_WWFF_REF) . ' | '; break;
- case 'POTA': $ret.= '' . ($row->COL_POTA_REF) . ' | '; break;
- case 'Grid': $ret.= '' . $this->part_QrbCalcLink($row->COL_MY_GRIDSQUARE, $row->COL_VUCC_GRIDS, $row->COL_GRIDSQUARE) . ' | '; break;
- case 'Distance': $ret .= '' . (property_exists($row, 'COL_DISTANCE') && $row->COL_DISTANCE ? $row->COL_DISTANCE . ' km' : '') . ' | '; break;
- case 'Band': $ret.= ''; if($row->COL_SAT_NAME != null) { $ret.= ''.$row->COL_SAT_NAME.' | '; } else { $ret.= strtolower($row->COL_BAND); } $ret.= ''; break;
- case 'Frequency': $ret.= ''; if($row->COL_SAT_NAME != null) { $ret.= ''.$row->COL_SAT_NAME.' | '; } else { if($row->COL_FREQ != null) { $ret.= $ci->frequency->hz_to_mhz($row->COL_FREQ); } else { $ret.= strtolower($row->COL_BAND); } } $ret.= ''; break;
- case 'State': $ret.= '' . ($row->COL_STATE) . ' | '; break;
- case 'Operator': $ret.= '' . ($row->COL_OPERATOR) . ' | '; break;
+ function part_table_col($row, $name)
+ {
+ $ret = '';
+ $ci = &get_instance();
+ switch ($name) {
+ case 'Mode':
+ $ret .= '';
+ $ret .= $row->COL_SUBMODE == null ? $row->COL_MODE : $row->COL_SUBMODE . ' | ';
+ break;
+ case 'RSTS':
+ $ret .= '' . $row->COL_RST_SENT;
+ if ($row->COL_STX) {
+ $ret .= ' COL_CONTEST_ID : "n/a") . '" class="badge text-bg-light">';
+ $ret .= sprintf("%03d", $row->COL_STX);
+ $ret .= '';
+ }
+ if ($row->COL_STX_STRING) {
+ $ret .= ' COL_CONTEST_ID : "n/a") . '" class="badge text-bg-light">' . $row->COL_STX_STRING . '';
+ }
+ $ret .= ' | ';
+ break;
+ case 'RSTR':
+ $ret .= '' . $row->COL_RST_RCVD;
+ if ($row->COL_SRX) {
+ $ret .= ' COL_CONTEST_ID : "n/a") . '" class="badge text-bg-light">';
+ $ret .= sprintf("%03d", $row->COL_SRX);
+ $ret .= '';
+ }
+ if ($row->COL_SRX_STRING) {
+ $ret .= ' COL_CONTEST_ID : "n/a") . '" class="badge text-bg-light">' . $row->COL_SRX_STRING . '';
+ }
+ $ret .= ' | ';
+ break;
+ case 'Country':
+ $ret .= '' . ucwords(strtolower(($row->COL_COUNTRY)));
+ if ($row->end != NULL) $ret .= ' ' . $ci->lang->line('gen_hamradio_deleted_dxcc') . '' . ' | ';
+ break;
+ case 'IOTA':
+ $ret .= '' . ($row->COL_IOTA) . ' | ';
+ break;
+ case 'SOTA':
+ $ret .= '' . ($row->COL_SOTA_REF) . ' | ';
+ break;
+ case 'WWFF':
+ $ret .= '' . ($row->COL_WWFF_REF) . ' | ';
+ break;
+ case 'POTA':
+ $ret .= '' . ($row->COL_POTA_REF) . ' | ';
+ break;
+ case 'Grid':
+ $ret .= '' . $this->part_QrbCalcLink($row->COL_MY_GRIDSQUARE, $row->COL_VUCC_GRIDS, $row->COL_GRIDSQUARE) . ' | ';
+ break;
+ case 'Distance':
+ $ret .= '' . (property_exists($row, 'COL_DISTANCE') && $row->COL_DISTANCE ? $row->COL_DISTANCE . ' km' : '') . ' | ';
+ break;
+ case 'Band':
+ $ret .= '';
+ if ($row->COL_SAT_NAME != null) {
+ $ret .= '' . $row->COL_SAT_NAME . ' | ';
+ } else {
+ $ret .= strtolower($row->COL_BAND);
+ }
+ $ret .= '';
+ break;
+ case 'Frequency':
+ $ret .= '';
+ if ($row->COL_SAT_NAME != null) {
+ $ret .= '' . $row->COL_SAT_NAME . ' | ';
+ } else {
+ if ($row->COL_FREQ != null) {
+ $ret .= $ci->frequency->hz_to_mhz($row->COL_FREQ);
+ } else {
+ $ret .= strtolower($row->COL_BAND);
+ }
+ }
+ $ret .= '';
+ break;
+ case 'State':
+ $ret .= '' . ($row->COL_STATE) . ' | ';
+ break;
+ case 'Operator':
+ $ret .= '' . ($row->COL_OPERATOR) . ' | ';
+ break;
}
return $ret;
}
diff --git a/application/controllers/Qrz.php b/application/controllers/Qrz.php
index 9ecfb72b..4190f79b 100644
--- a/application/controllers/Qrz.php
+++ b/application/controllers/Qrz.php
@@ -195,89 +195,237 @@ class Qrz extends CI_Controller {
// Query the logbook to determine when the last LoTW confirmation was
$qrz_last_date = null;
}
- $this->download($this->session->userdata('user_id'),$qrz_last_date,true);
+ $this->download($this->session->userdata('user_id'),true);
} // end function
- function download($user_id_to_load = null, $lastqrz = null, $show_views = false) {
+ function download($user_id_to_load = null, $show_views = false) { // Remove $lastqrz parameter
$this->load->model('user_model');
$this->load->model('logbook_model');
$api_keys = $this->logbook_model->get_qrz_apikeys();
+ $total_processed_count = 0; // Initialize total count here
+ $data = []; // Initialize data array
if ($api_keys) {
foreach ($api_keys as $station) {
if ((($user_id_to_load != null) && ($user_id_to_load != $station->user_id))) { // Skip User if we're called with a specific user_id
continue;
- }
- if ($lastqrz == null) {
- $lastqrz = $this->logbook_model->qrz_last_qsl_date($station->user_id);
}
+
+ // Remove the block checking for $lastqrz == null and fetching the date
$qrz_api_key = $station->qrzapikey;
- $result=($this->mass_download_qsos($qrz_api_key, $lastqrz));
- if (isset($result['tableheaders'])) {
- $data['tableheaders']=$result['tableheaders'];
- if (isset($data['table'])) {
- $data['table'].=$result['table'];
- } else {
- $data['table']=$result['table'];
+ $result = $this->mass_download_qsos($qrz_api_key); // mass_download_qsos returns ['table_data' => ..., 'processed_count' => ...] or ['status' => 'error', 'message' => ...]
+
+
+ if ($result !== false && isset($result['processed_count'])) {
+ $total_processed_count += $result['processed_count']; // Accumulate count
+ $table_data = $result['table_data'];
+
+ if (isset($table_data['tableheaders'])) {
+ // Ensure headers are set only once
+ if (!isset($data['tableheaders'])) {
+ $data['tableheaders'] = $table_data['tableheaders'];
+ }
+ if (isset($table_data['table']) && $table_data['table'] != '') {
+ if (isset($data['table'])) {
+ $data['table'] .= $table_data['table'];
+ } else {
+ $data['table'] = $table_data['table'];
+ }
+ }
+ }
+ } else if (is_array($result) && isset($result['status']) && $result['status'] === 'error') {
+ // Handle specific error structure returned by mass_download_qsos
+ log_message('error', "Error during QRZ download for user_id: " . $station->user_id . ". Message: " . $result['message']);
+ // Optionally echo error to user if $show_views is true, or add to $data['error']
+ if ($show_views) {
+ $data['errors'][] = "Error for user ID " . $station->user_id . ": " . $result['message'];
+ }
+ } else {
+ // Catch-all for unexpected return values (like the old boolean false or other issues)
+ log_message('error', "Unexpected error or empty result returned from mass_download_qsos for API key associated with user_id: " . $station->user_id);
+ if ($show_views) {
+ $data['errors'][] = "Unexpected error during download for user ID " . $station->user_id . ". Check system logs.";
}
}
}
} else {
echo "No station profiles with a QRZ API Key found.";
log_message('error', "No station profiles with a QRZ API Key found.");
+ // If no keys, we can exit early if showing views, or just let it fall through if not.
+ if ($show_views) {
+ $data['page_title'] = "QRZ ADIF Information";
+ $data['error'] = "No station profiles with a QRZ API Key found.";
+ $this->load->view('interface_assets/header', $data);
+ $this->load->view('qrz/analysis', $data); // Assuming view can show $error
+ $this->load->view('interface_assets/footer');
+ return; // Stop further processing
+ } else {
+ return ''; // Return empty if not showing views and no keys found
+ }
}
$this->load->model('user_model');
if ($this->user_model->authorize(2)) { // Only Output results if authorized User
- if(isset($data['tableheaders'])) {
- if ($data['table'] != '') {
- $data['table'].='';
- }
- if($show_views == TRUE) {
- $data['page_title'] = "QRZ ADIF Information";
- $this->load->view('interface_assets/header', $data);
- $this->load->view('qrz/analysis');
+ // Pass potential errors to the view
+ if (isset($data['errors'])) {
+ $view_data['errors'] = $data['errors'];
+ }
+
+ $has_matches_to_display = (isset($data['tableheaders']) && isset($data['table']) && $data['table'] != '');
+ $message = "Downloaded and processed " . $total_processed_count . " QSOs from QRZ.";
+
+ if ($has_matches_to_display) {
+ $message .= " Matching QSOs found and updated.";
+ if ($show_views == TRUE) {
+ $view_data['tableheaders'] = $data['tableheaders'];
+ $view_data['table'] = $data['table'] . '';
+ $view_data['page_title'] = "QRZ ADIF Information";
+ $this->load->view('interface_assets/header', $view_data);
+ $this->load->view('qrz/analysis', $view_data); // Pass $view_data containing table headers, rows, and errors
$this->load->view('interface_assets/footer');
} else {
+ echo $message; // Echo message when not showing views but matches were found
+ // Optionally echo errors if any occurred
+ if (isset($data['errors'])) {
+ echo " Errors encountered: " . implode("; ", $data['errors']);
+ }
return '';
}
} else {
- echo "Downloaded QRZ report contains no matches.";
+ // No matches found in the logbook
+ $message .= " No matching QSOs found in your logbook to update.";
+ if ($show_views == TRUE) {
+ $view_data['page_title'] = "QRZ ADIF Information";
+ $view_data['info_message'] = $message; // Pass the info message to the view
+ // Errors are already in $view_data if they exist
+ $this->load->view('interface_assets/header', $view_data);
+ $this->load->view('qrz/analysis', $view_data); // Load view, assuming it checks for $info_message and $errors
+ $this->load->view('interface_assets/footer');
+ } else {
+ echo $message; // Echo message when not showing views and no matches found
+ // Optionally echo errors if any occurred
+ if (isset($data['errors'])) {
+ echo " Errors encountered: " . implode("; ", $data['errors']);
+ }
+ return '';
+ }
}
- }
+ } // End authorize check
}
- function mass_download_qsos($qrz_api_key = '', $lastqrz = '1900-01-01', $trusted = false) {
+ function mass_download_qsos($qrz_api_key = '', $trusted = false) { // Remove $lastqrz parameter
$config['upload_path'] = './uploads/';
$file = $config['upload_path'] . 'qrzcom_download_report.adi';
if (file_exists($file) && ! is_writable($file)) {
- $result = "Temporary download file ".$file." is not writable. Aborting!";
- return false;
+ // This part is fine - checks local file writability
+ $error_message = "Temporary download file ".$file." is not writable. Aborting!";
+ // Return the structured error array here too for consistency
+ return ['status' => 'error', 'message' => $error_message];
}
- $url = 'http://logbook.qrz.com/api';
+ $url = 'http://logbook.qrz.com/api'; // Correct URL
- $post_data['KEY'] = $qrz_api_key;
- $post_data['ACTION'] = 'FETCH';
- $post_data['OPTION'] = 'MODSINCE:'.$lastqrz.';STATUS:CONFIRMED;TYPE:ADIF';
+ $post_data['KEY'] = $qrz_api_key; // Correct parameter
+ $post_data['ACTION'] = 'FETCH'; // Correct parameter
+ $post_data['OPTION'] = 'TYPE:ADIF'; // Correct parameter for fetching all confirmed in ADIF
$ch = curl_init( $url );
- curl_setopt( $ch, CURLOPT_POST, true);
- curl_setopt( $ch, CURLOPT_POSTFIELDS, $post_data);
- curl_setopt( $ch, CURLOPT_FOLLOWLOCATION, 1);
- curl_setopt( $ch, CURLOPT_HEADER, 0);
- curl_setopt( $ch, CURLOPT_RETURNTRANSFER, true);
+ curl_setopt( $ch, CURLOPT_POST, true); // Correct method
+ curl_setopt( $ch, CURLOPT_POSTFIELDS, $post_data); // Correct data
+ curl_setopt( $ch, CURLOPT_FOLLOWLOCATION, 1); // Okay
+ curl_setopt( $ch, CURLOPT_HEADER, 0); // Correct - don't need response headers
+ curl_setopt( $ch, CURLOPT_RETURNTRANSFER, true); // Correct - get response as string
- $content = htmlspecialchars_decode(curl_exec($ch));
- file_put_contents($file, $content);
- if (strlen(file_get_contents($file, false, null, 0, 100))!=100) {
- $result = "QRZ downloading failed, either due to it being down or incorrect logins.";
- return "false";
+ $content = curl_exec($ch); // Get raw content
+ $curl_error = curl_error($ch); // Check for cURL errors
+ curl_close($ch);
+
+ // Find the start of the ADIF data after "ADIF="
+ $adif_start_pos = strpos($content, 'ADIF=');
+ if ($adif_start_pos !== false) {
+ // Extract the content starting after "ADIF="
+ $content = substr($content, $adif_start_pos + 5);
+ } else {
+ // If "ADIF=" is not found, check for potential errors before assuming it's just ADIF
+ if (strpos($content, 'STATUS=FAIL') !== false || strpos($content, 'STATUS=AUTH') !== false) {
+ // Handle API errors even if ADIF= is missing
+ $reason = $content;
+ if (preg_match('/REASON=([^&]+)/', $content, $matches)) {
+ $reason = urldecode($matches[1]); // Decode URL encoded reason
+ }
+ $error_message = "QRZ API Error: " . $reason;
+ log_message('error', $error_message . ' API Key used: ' . $qrz_api_key . ' Raw Response: ' . $content);
+ return ['status' => 'error', 'message' => $error_message];
+ }
+ // If no error status and no ADIF=, maybe it's just ADIF? Or an unknown error.
+ // Log a warning if content seems unusual but doesn't match known error patterns.
+ if (trim($content) === '' || strlen(trim($content)) < 10) { // Arbitrary small length check
+ log_message('error', 'QRZ download: Received unexpected content without ADIF= prefix or known error status. Content: ' . $content);
+ // Decide if this should be treated as an error or empty ADIF
+ // For now, let's treat it as potentially empty/invalid ADIF and let loadFromFile handle it.
+ }
}
+ // Also remove the trailing metadata like &RESULT=OK&COUNT=... or just &COUNT=...
+ $result_pos = strpos($content, '&RESULT=');
+ $count_pos = strpos($content, '&COUNT=');
+
+ $truncate_pos = false;
+
+ if ($result_pos !== false && $count_pos !== false) {
+ // Both found, take the earlier one
+ $truncate_pos = min($result_pos, $count_pos);
+ } elseif ($result_pos !== false) {
+ // Only RESULT found
+ $truncate_pos = $result_pos;
+ } elseif ($count_pos !== false) {
+ // Only COUNT found
+ $truncate_pos = $count_pos;
+ }
+
+ if ($truncate_pos !== false) {
+ $content = substr($content, 0, $truncate_pos);
+ }
+
+ if ($curl_error) { // Check for cURL level errors first
+ $error_message = "QRZ download cURL error: " . $curl_error;
+ log_message('error', $error_message . ' API Key used: ' . $qrz_api_key);
+ return ['status' => 'error', 'message' => $error_message];
+ }
+
+ if ($content === false || $content === '') { // Check if curl_exec failed or returned empty
+ $error_message = "QRZ download failed: No content received from QRZ.com.";
+ log_message('error', $error_message . ' API Key used: ' . $qrz_api_key);
+ return ['status' => 'error', 'message' => $error_message];
+ }
+
+ // Check for QRZ API specific error messages
+ if (strpos($content, 'STATUS=FAIL') !== false || strpos($content, 'STATUS=AUTH') !== false) {
+ // Extract reason if possible, otherwise use full content
+ $reason = $content;
+ if (preg_match('/REASON=([^&]+)/', $content, $matches)) {
+ $reason = urldecode($matches[1]); // Decode URL encoded reason
+ }
+ $error_message = "QRZ API Error: " . $reason;
+ log_message('error', $error_message . ' API Key used: ' . $qrz_api_key . ' Raw Response: ' . $content);
+ return ['status' => 'error', 'message' => $error_message];
+ }
+
+ $content = html_entity_decode($content, ENT_QUOTES | ENT_HTML5, 'UTF-8');
+
+ // Save the potentially valid content
+ if (file_put_contents($file, $content) === false) {
+ $error_message = "Failed to write downloaded QRZ data to temporary file: " . $file;
+ log_message('error', $error_message);
+ return ['status' => 'error', 'message' => $error_message];
+ } else {
+ // echo "Downloaded QRZ data to temporary file: " . $file;
+ }
+
+ // Proceed to load from the file
ini_set('memory_limit', '-1');
- $result = $this->loadFromFile($file);
+ $result = $this->loadFromFile($file); // loadFromFile returns ['table_data' => ..., 'processed_count' => ...]
return $result;
}
@@ -302,9 +450,17 @@ class Qrz extends CI_Controller {
$this->load->library('adif_parser');
- $this->adif_parser->load_from_file($filepath);
+ // Load the data from the file into the parser object
+ $this->adif_parser->load_from_file($filepath); // <-- ADD THIS LINE
+
+ // Now initialize the parser with the loaded data
+ if (!$this->adif_parser->initialize()) { // Check return value of initialize
+ // Handle initialization error (e.g., log it, return error structure)
+ log_message('error', 'ADIF Parser initialization failed for file: ' . $filepath);
+ // Return an error structure consistent with mass_download_qsos
+ return ['status' => 'error', 'message' => 'ADIF Parser initialization failed. Check logs.'];
+ }
- $this->adif_parser->initialize();
$tableheaders = "";
$tableheaders .= "";
$tableheaders .= "| Station Callsign | ";
@@ -313,57 +469,54 @@ class Qrz extends CI_Controller {
$tableheaders .= "Mode | ";
$tableheaders .= "QRZ QSL Received | ";
$tableheaders .= "QRZ Confirmed | ";
- $tableheaders .= "Log Status | ";
$tableheaders .= "
";
$table = "";
- while($record = $this->adif_parser->get_record()) {
+ $batch_data = [];
+ $batch_size = 500; // Process 500 records at a time
+ $record_count = 0; // Initialize record counter
+ while ($record = $this->adif_parser->get_record()) {
+ $record_count++; // Increment counter for each record read
if ((!(isset($record['app_qrzlog_qsldate']))) || (!(isset($record['qso_date'])))) {
continue;
}
$time_on = date('Y-m-d', strtotime($record['qso_date'])) ." ".date('H:i', strtotime($record['time_on']));
-
$qsl_date = date('Y-m-d', strtotime($record['app_qrzlog_qsldate']));
- if (isset($record['time_off'])) {
- $time_off = date('Y-m-d', strtotime($record['qso_date'])) ." ".date('H:i', strtotime($record['time_off']));
- } else {
- $time_off = date('Y-m-d', strtotime($record['qso_date'])) ." ".date('H:i', strtotime($record['time_on']));
- }
-
// If we have a positive match from LoTW, record it in the DB according to the user's preferences
- if ($record['app_qrzlog_status'] == "C") {
- $record['qsl_rcvd'] = $config['qrz_rcvd_mark'];
+ $qsl_rcvd = ''; // Default empty
+ if (isset($record['app_qrzlog_status']) && $record['app_qrzlog_status'] == "C") {
+ $qsl_rcvd = $config['qrz_rcvd_mark'];
}
- $record['call']=str_replace("_","/",$record['call']);
- $record['station_callsign']=str_replace("_","/",$record['station_callsign']);
- $status = $this->logbook_model->import_check($time_on, $record['call'], $record['band'], $record['mode'], $record['station_callsign']);
+ $call = str_replace("_","/",$record['call']);
+ $station_callsign = str_replace("_","/",$record['station_callsign']);
+ $band = $record['band'] ?? ''; // Ensure band exists
+ $mode = $record['mode'] ?? ''; // Ensure mode exists
- if($status[0] == "Found") {
- $qrz_status = $this->logbook_model->qrz_update($time_on, $record['call'], $record['band'], $qsl_date, $record['qsl_rcvd'],$record['station_callsign']);
+ // Add record data to batch
+ $batch_data[] = [
+ 'time_on' => $time_on,
+ 'call' => $call,
+ 'band' => $band,
+ 'mode' => $mode,
+ 'station_callsign' => $station_callsign,
+ 'qsl_date' => $qsl_date,
+ 'qsl_rcvd' => $qsl_rcvd
+ ];
- $table .= "";
- $table .= "| ".$record['station_callsign']." | ";
- $table .= "".$time_on." | ";
- $table .= "".$record['call']." | ";
- $table .= "".$record['mode']." | ";
- $table .= "".$record['qsl_rcvd']." | ";
- $table .= "".$qsl_date." | ";
- $table .= "QSO Record: ".$status[0]." | ";
- $table .= "
";
- } else {
- $table .= "";
- $table .= "| ".$record['station_callsign']." | ";
- $table .= "".$time_on." | ";
- $table .= "".$record['call']." | ";
- $table .= "".$record['mode']." | ";
- $table .= "".$record['qsl_rcvd']." | ";
- $table .= "QSO Record: ".$status[0]." | ";
- $table .= "
";
+ // If batch size reached, process it
+ if (count($batch_data) >= $batch_size) {
+ $table .= $this->logbook_model->process_qrz_batch($batch_data);
+ $batch_data = []; // Reset batch
}
}
+ // Process any remaining records in the last batch
+ if (!empty($batch_data)) {
+ $table .= $this->logbook_model->process_qrz_batch($batch_data);
+ }
+
if ($table != "") {
$data['tableheaders'] = $tableheaders;
$data['table'] = $table;
@@ -372,8 +525,7 @@ class Qrz extends CI_Controller {
}
unlink($filepath);
- return $data;
-
+ // Return both table data and the count of processed records
+ return ['table_data' => $data, 'processed_count' => $record_count];
}
-
}
diff --git a/application/language/polish/account_lang.php b/application/language/polish/account_lang.php
index 2c4f0d48..3086d969 100644
--- a/application/language/polish/account_lang.php
+++ b/application/language/polish/account_lang.php
@@ -1,6 +1,6 @@
https://radiosocial.de";
+$lang['account_user_mastodon'] = 'Adres URL Mastodonserver';
+$lang['account_user_mastodon_hint'] = "Główny adres URL serwera Mastodon, np. https://radiosocial.de";
-$lang['account_default_band_settings'] = 'Settings for Default Band and Confirmation';
-$lang['account_gridmap_default_band'] = 'Default Band';
-$lang['account_qsl_settings'] = 'Default QSL-Methods';
+$lang['account_default_band_settings'] = 'Ustawienia domyślnego pasma i potwierdzenia';
+$lang['account_gridmap_default_band'] = 'Domyślne pasmo';
+$lang['account_qsl_settings'] = 'Domyślne metody QSL';
$lang['account_winkeyer'] = 'Winkeyer';
-$lang['account_winkeyer_hint'] = "Winkeyer support in Cloudlog is very experimental read the wiki first at https://github.com/magicbug/Cloudlog/wiki/Winkey before enabling.";
-$lang['account_winkeyer_enabled'] = "Winkeyer Features Enabled";
+$lang['account_winkeyer_hint'] = "Obsługa Winkeyer w Cloudlog jest bardzo eksperymentalna. Przeczytaj najpierw wiki na https://github.com/magicbug/Cloudlog/wiki/Winkey przed włączeniem.";
+$lang['account_winkeyer_enabled'] = "Funkcje Winkeyer włączone";
-$lang['account_map_params'] = "Map Settings";
-$lang['account_map_qso_by_default'] = "QSO (by default)";
-$lang['account_map_qso_confirm'] = "QSO (confirmed)";
-$lang['account_map_qso_confirm_same_qso'] = "(If 'No', displayed as ".$lang['account_map_qso_by_default'].")";
+$lang['account_map_params'] = "Ustawienia mapy";
+$lang['account_map_qso_by_default'] = "QSO (domyślnie)";
+$lang['account_map_qso_confirm'] = "QSO (potwierdzone)";
+$lang['account_map_qso_confirm_same_qso'] = "(Jeśli 'Nie', wyświetlane jako ".$lang['account_map_qso_by_default'].")";
-$lang['account_general_information'] = "General Information";
-$lang['account_qso_logging_options'] = "QSO Logging Options";
-$lang['account_third_party_services'] = "Third Party Services";
-$lang['account_default_values'] = "Default Values";
-$lang['account_miscellaneous'] = "Miscellaneous";
+$lang['account_general_information'] = "Informacje ogólne";
+$lang['account_qso_logging_options'] = "Opcje rejestrowania QSO";
+$lang['account_third_party_services'] = "Usługi stron trzecich";
+$lang['account_default_values'] = "Wartości domyślne";
+$lang['account_miscellaneous'] = "Różne";
$lang['account_hamsat'] = "Hams.at";
-$lang['account_hamsat_private_feed_key'] = "Private Feed Key";
-$lang['account_hamsat_hint'] = "See your profile at https://hams.at/users/settings.";
-$lang['account_hamsat_workable_only'] = "Show Workable Passes Only";
+$lang['account_hamsat_private_feed_key'] = "Klucz prywatnego kanału";
+$lang['account_hamsat_hint'] = "Zobacz swój profil na https://hams.at/users/settings.";
+
+$lang['account_hamsat_workable_only'] = "Pokaż tylko działające przepustki";
\ No newline at end of file
diff --git a/application/language/polish/adif_lang.php b/application/language/polish/adif_lang.php
index 4000ec25..e0db6918 100644
--- a/application/language/polish/adif_lang.php
+++ b/application/language/polish/adif_lang.php
@@ -1,7 +1,6 @@
application/language/english/lotw_lang.php
+// $lang['lotw_title'] --> application/language/english/lotw_lang.php
$lang['darc_dcl'] = "DARC DCL";
-
/*
-___________________________________________________________________________________________
+______________________________________________________________________________________________________
ADIF Import
___________________________________________________________________________________________
*/
-// $lang['general_word_important'] --> application/language/english/general_words_lang.php
-$lang['adif_alert_log_files_type'] = "Log Files must have the file type *.adi";
-// $lang['general_word_warning'] --> application/language/english/general_words_lang.php "PHP Upload Warning"
-// $lang['gen_max_file_upload_size'] --> application/language/english/general_words_lang.php "PHP Upload Warning"
+// $lang['general_word_important'] --> application/language/english/general_words_lang.php
+$lang['adif_alert_log_files_type'] = "Pliki dziennika muszą mieć typ pliku *.adi";
+// $lang['general_word_warning'] --> application/language/english/general_words_lang.php "Ostrzeżenie przed przesyłaniem PHP"
+// $lang['gen_max_file_upload_size'] --> application/language/english/general_words_lang.php "Ostrzeżenie przed przesyłaniem PHP"
-$lang['adif_select_stationlocation'] = "Select Station Location";
-// $lang['gen_hamradio_callsign'] --> application/language/english/general_words_lang.php
+$lang['adif_select_stationlocation'] = "Wybierz lokalizację stacji";
+// $lang['gen_hamradio_callsign'] --> application/language/english/general_words_lang.php
-// The File Input is translated by the Browser
-$lang['adif_file_label'] = "ADIF File";
+// Dane wejściowe pliku są tłumaczone przez przeglądarkę
+$lang['adif_file_label'] = "Plik ADIF";
-$lang['adif_hint_no_info_in_file'] = "Select if ADIF being imported does not contain this information.";
+$lang['adif_hint_no_info_in_file'] = "Wybierz, jeśli importowany plik ADIF nie zawiera tych informacji.";
-$lang['adif_import_dup'] = "Import duplicate QSOs";
-$lang['adif_mark_imported_lotw'] = "Mark imported QSOs as uploaded to LoTW";
-$lang['adif_mark_imported_hrdlog'] = "Mark imported QSOs as uploaded to HRDLog.net Logbook";
-$lang['adif_mark_imported_qrz'] = "Mark imported QSOs as uploaded to QRZ Logbook";
-$lang['adif_mark_imported_clublog'] = "Mark imported QSOs as uploaded to Clublog Logbook";
+$lang['adif_import_dup'] = "Importuj zduplikowane QSO";
+$lang['adif_mark_imported_lotw'] = "Oznacz importowane QSO jako przesłane do LoTW";
+$lang['adif_mark_imported_hrdlog'] = "Oznacz importowane QSO jako przesłane do HRDLog.net Logbook";
+$lang['adif_mark_imported_qrz'] = "Oznacz importowane QSO jako przesłane do dziennika QRZ";
-$lang['adif_dxcc_from_adif'] = "Use DXCC information from ADIF";
-$lang['adif_dxcc_from_adif_hint'] = "If not selected, Cloudlog will attempt to determine DXCC information automatically.";
+$lang['adif_mark_imported_clublog'] = "Oznacz importowane QSO jako przesłane do dziennika Clublog";
-$lang['adif_always_use_login_call_as_op'] = "Always use login-callsign as operator-name on import";
+$lang['adif_dxcc_from_adif'] = "Użyj informacji DXCC z ADIF";
-$lang['adif_ignore_station_call'] = "Ignore Stationcallsign on import";
-$lang['adif_ignore_station_call_hint'] = "If selected, Cloudlog will try to import all QSO's of the ADIF, regardless if they match to the chosen station-location.";
+$lang['adif_dxcc_from_adif_hint'] = "Jeśli nie zaznaczono, Cloudlog spróbuje automatycznie ustalić informacje DXCC.";
-$lang['adif_upload'] = "Upload";
+$lang['adif_always_use_login_call_as_op'] = "Zawsze używaj login-znaku wywoławczego jako nazwy operatora podczas importu";
+
+$lang['adif_ignore_station_call'] = "Ignoruj znak wywoławczy stacji podczas importu";
+$lang['adif_ignore_station_call_hint'] = "Jeśli zaznaczone, Cloudlog spróbuje zaimportować wszystkie QSO ADIF, niezależnie od tego, czy pasują do wybranej lokalizacji stacji.";
+
+$lang['adif_upload'] = "Prześlij";
/*
___________________________________________________________________________________________
-ADIF Export
+Eksport ADIF
___________________________________________________________________________________________
*/
-$lang['adif_export_take_it_anywhere'] = "Take your logbook file anywhere!";
-$lang['adif_export_take_it_anywhere_hint'] = "Exporting ADIFs allows you to import contacts into third party applications like LoTW, Awards or just for keeping a backup.";
+$lang['adif_export_take_it_anywhere'] = "Zabierz swój plik dziennika wszędzie!";
+$lang['adif_export_take_it_anywhere_hint'] = "Eksportowanie ADIF pozwala na importowanie kontaktów do aplikacji innych firm, takich jak LoTW, Awards lub po prostu w celu utworzenia kopii zapasowej.";
-$lang['adif_mark_exported_lotw'] = "Mark exported QSOs as uploaded to LoTW";
-$lang['adif_mark_exported_no_lotw'] = "Export QSOs not uploaded to LoTW";
+$lang['adif_mark_exported_lotw'] = "Oznacz wyeksportowane QSO jako przesłane do LoTW";
+$lang['adif_mark_exported_no_lotw'] = "Eksportuj QSO, które nie zostały przesłane do LoTW";
-$lang['adif_export_qso'] = "Export QSO's";
+$lang['adif_export_qso'] = "Eksportuj QSO";
-$lang['adif_export_sat_only_qso'] = "Export Satellite-Only QSOs";
-$lang['adif_export_sat_only_qso_all'] = "Export All Satellite QSOs";
-$lang['adif_export_sat_only_qso_lotw'] = "Export All Satellite QSOs Confirmed on LoTW";
+$lang['adif_export_sat_only_qso'] = "Eksportuj QSO tylko z satelity";
+$lang['adif_export_sat_only_qso_all'] = "Eksportuj wszystkie QSO z satelity";
+$lang['adif_export_sat_only_qso_lotw'] = "Eksportuj wszystkie QSO z satelity potwierdzone w LoTW";
/*
-___________________________________________________________________________________________
+______________________________________________________________________________________________________
Logbook of the World
___________________________________________________________________________________________
*/
-$lang['adif_lotw_export_if_selected'] = "If a date range is not selected then all QSOs will be marked!";
-$lang['adif_mark_qso_as_exported_to_lotw'] = "Mark QSOs as exported to LoTW";
+$lang['adif_lotw_export_if_selected'] = "Jeśli zakres dat nie zostanie wybrany, wszystkie QSO zostaną oznaczone!";
-$lang['adif_qso_marked'] = "QSOs marked";
-$lang['adif_yay_its_done'] = "Yay, its done!";
-$lang['adif_qso_lotw_marked_confirm'] = "The QSOs are marked as exported to LoTW.";
+$lang['adif_mark_qso_as_exported_to_lotw'] = "Oznacz QSO jako wyeksportowane do LoTW";
+
+$lang['adif_qso_marked'] = "Oznaczone QSO";
+
+$lang['adif_yay_its_done'] = "Yay, gotowe!";
+
+$lang['adif_qso_lotw_marked_confirm'] = "QSO zostały oznaczone jako wyeksportowane do LoTW.";
/*
___________________________________________________________________________________________
DARC DCL
-___________________________________________________________________________________________
+________________________________________________________________________________________________
*/
-$lang['adif_dcl_text_pre'] = "Go to";
-$lang['adif_dcl_text_post'] = "and export your logbook with confirmed DOKs. To speed up the process you can select only DL QSOs to download (i.e. put \"DL\" into Prefix List). The downloaded ADIF file can be uploaded here in order to update QSOs with DOK info.";
+$lang['adif_dcl_text_pre'] = "Przejdź do";
+$lang['adif_dcl_text_post'] = "i wyeksportuj swój dziennik z potwierdzonymi DOK. Aby przyspieszyć ten proces, możesz wybrać do pobrania tylko QSO DL (tj. umieścić „DL” na liście prefiksów). Pobrany plik ADIF można przesłać tutaj, aby zaktualizować QSO o informacje DOK.";
-$lang['only_confirmed_qsos'] = "Only import DOK data from QSOs confirmed on DCL.";
-$lang['only_confirmed_qsos_hint'] = "Uncheck if you also want to update DOK with data from unconfirmed QSOs in DCL.";
+$lang['only_confirmed_qsos'] = "Importuj tylko dane DOK z QSO potwierdzonych na DCL.";
+$lang['only_confirmed_qsos_hint'] = "Odznacz, jeśli chcesz również zaktualizować DOK o dane z niepotwierdzonych QSO w DCL.";
-$lang['overwrite_by_dcl'] = "Overwrite exisiting DOK in log by DCL (if different)";
-$lang['overwrite_by_dcl_hint'] = "If checked Cloudlog will forcibly overwrite existing DOK with DOK from DCL log.";
+$lang['overwrite_by_dcl'] = "Nadpisz istniejący DOK w logu przez DCL (jeśli jest inny)";
-$lang['ignore_ambiguous'] = "Ignore QSOs that cannot be matched";
-$lang['ignore_ambiguous_hint'] = "If unchecked information about QSO which could not be found in Cloudlog will be displayed.";
+$lang['overwrite_by_dcl_hint'] = "Jeśli zaznaczone, Cloudlog wymusi nadpisanie istniejącego DOK przez DOK z logu DCL.";
+
+$lang['ignore_ambiguous'] = "Ignoruj QSO, których nie można dopasować";
+
+$lang['ignore_ambiguous_hint'] = "Jeśli niezaznaczone, zostaną wyświetlone informacje o QSO, których nie można znaleźć w Cloudlog.";
/*
-___________________________________________________________________________________________
-Import Success
+___________________________________________________________________________________________________________
+Import zakończony sukcesem
___________________________________________________________________________________________
*/
-$lang['adif_imported'] = "ADIF Imported";
-$lang['adif_yay_its_imported'] = "Yay, its imported!";
-$lang['adif_import_confirm'] = "The ADIF File has been imported.";
+$lang['adif_imported'] = "ADIF zaimportowany";
-$lang['adif_import_dupes_inserted'] = " Dupes were inserted!";
-$lang['adif_import_dupes_skipped'] = " Dupes were skipped.";
+$lang['adif_yay_its_imported'] = "Hurra, zaimportowano!";
+$lang['adif_import_confirm'] = "Plik ADIF został zaimportowany.";
-$lang['adif_import_errors'] = "ADIF Errors";
-$lang['adif_import_errors_hint'] = "You have ADIF errors, the QSOs have still been added but these fields have not been populated.";
+$lang['adif_import_dupes_inserted'] = " Dupy zostały wstawione!";
+$lang['adif_import_dupes_skipped'] = "Dupy zostały pominięte.";
+
+$lang['adif_import_errors'] = "Błędy ADIF";
+$lang['adif_import_errors_hint'] = "Masz błędy ADIF, QSO zostały dodane, ale te pola nie zostały wypełnione.";
/*
-___________________________________________________________________________________________
-DCL Success
+___________________________________________________________________________________________________________
+Sukces DCL
___________________________________________________________________________________________
*/
-$lang['dcl_results'] = "Results of DCL DOK Update";
-$lang['dcl_info_updated'] = "DCL information for DOKs has been updated.";
-$lang['dcl_qsos_updated'] = "QSOs updated";
-$lang['dcl_qsos_ignored'] = "QSOs ignored";
-$lang['dcl_qsos_unmatched'] = "QSOs unmatched";
-$lang['dcl_no_qsos_updated'] = "No QSOs found which could be updated.";
-$lang['dcl_dok_errors'] = "DOK Errors";
-$lang['dcl_dok_errors_details'] = "There is different data for DOK in your log compared to DCL";
-$lang['dcl_qsl_status'] = "DCL QSL Status";
-$lang['dcl_qsl_status_c'] = "confirmed by LoTW/Clublog/eQSL/Contest";
-$lang['dcl_qsl_status_mno'] = "confirmed by award manager";
-$lang['dcl_qsl_status_i'] = "confirmed by cross-check of DCL data";
-$lang['dcl_qsl_status_w'] = "confirmation pending";
-$lang['dcl_qsl_status_x'] = "unconfirmed";
-$lang['dcl_qsl_status_unknown'] = "unknown";
-$lang['dcl_no_match'] = "QSO could not be matched";
+$lang['dcl_results'] = "Wyniki aktualizacji DCL DOK";
+$lang['dcl_info_updated'] = "Informacje DCL dla DOK zostały zaktualizowane.";
+$lang['dcl_qsos_updated'] = "Zaktualizowano QSO";
+$lang['dcl_qsos_ignored'] = "Zignorowano QSO";
+$lang['dcl_qsos_unmatched'] = "Niezgodne QSO";
+$lang['dcl_no_qsos_updated'] = "Nie znaleziono QSO, które można by zaktualizować.";
+$lang['dcl_dok_errors'] = "Błędy DOK";
+$lang['dcl_dok_errors_details'] = "W Twoim logu znajdują się inne dane dla DOK niż dla DCL";
+$lang['dcl_qsl_status'] = "Status QSL DCL";
+$lang['dcl_qsl_status_c'] = "potwierdzone przez LoTW/Clublog/eQSL/Contest";
+$lang['dcl_qsl_status_mno'] = "potwierdzone przez kierownika nagrody";
+$lang['dcl_qsl_status_i'] = "potwierdzone przez krzyżową kontrolę danych DCL";
+$lang['dcl_qsl_status_w'] = "oczekiwanie na potwierdzenie";
+$lang['dcl_qsl_status_x'] = "niepotwierdzone";
+$lang['dcl_qsl_status_unknown'] = "nieznane";
+$lang['dcl_no_match'] = "Nie można dopasować QSO";
diff --git a/application/language/polish/admin_lang.php b/application/language/polish/admin_lang.php
index 2560697f..555042a6 100644
--- a/application/language/polish/admin_lang.php
+++ b/application/language/polish/admin_lang.php
@@ -1,60 +1,59 @@
CQ Magazine.";
+$lang['awards_cq_description_ln1'] = "Nagroda CQ Magazine WAZ";
+$lang['awards_cq_description_ln2'] = "CQ Magazine znajduje się w USA i jest jednym z najpopularniejszych magazynów dla amatorów radiowych na świecie. Magazyn ukazał się po raz pierwszy w styczniu 1945 r. i koncentruje się na nagrodach i praktycznych aspektach amatorskiego radia.";
+$lang['awards_cq_description_ln3'] = "Nagroda WAZ oznacza 'Worked All Zones' i wymaga kontaktów radiowych ze wszystkimi 40 strefami CQ wraz z odpowiednim potwierdzeniem.";
+$lang['awards_cq_description_ln4'] = "Wszystkie informacje i zasady znajdziesz na stronie internetowej CQ Magazine.";
+/*
+___________________________________________________________________________________________________________
+DOK -- Użyj wszystkich 4 wierszy tekstu
+___________________________________________________________________________________________
+*/
+
+$lang['awards_dok_description_ln1'] = "Nagroda DOK";
+$lang['awards_dok_description_ln2'] = "Niemcy rozciągają się na ponad 630 km ze wschodu na zachód i prawie 900 km z północy na południe. Około 70 000 z 82 milionów mieszkańców Niemiec to licencjonowani krótkofalowcy, z czego ponad 40 000 jest członkami DARC. DOK to system, który zapewnia poszczególnym lokalnym oddziałom identyfikator i oznacza 'Deutscher Ortsverband Kenner' (po angielsku: 'Identyfikator niemieckiego lokalnego stowarzyszenia').";
+$lang['awards_dok_description_ln3'] = "DOK składa się z litery oznaczającej okręg i dwucyfrowego numeru oznaczającego lokalny oddział, np. P03 Friedrichshafen (miasto 'wystawy radioamatorskiej') lub F41 Baunatal (miejsce siedziby DARC). Uwaga: zero w DOK to częsty błąd, często zapisywany jako litera O.";
+$lang['awards_dok_description_ln4'] = "Informacje te są udostępniane przez stronę internetową DARC. Informacje o nagrodach DOK i ich zasadach można znaleźć tutaj.";
+
+/*
+___________________________________________________________________________________________________________
+DXCC -- Użyj wszystkich 4 wierszy tekstu
+___________________________________________________________________________________________
+*/
+
+$lang['awards_dxcc_description_ln1'] = "Nagroda DXCC";
+$lang['awards_dxcc_description_ln2'] = "DXCC to skrót od 'DX Century Club', nagrody przyznawanej na podstawie krajów, w których pracowano. Lista DXCC powstała na podstawie artykułu stworzonego w 1935 roku przez Clintona B. DeSoto, W1CBD, zatytułowanego 'How to Count Countries Worked, A New DX Scoring System'.";
+$lang['awards_dxcc_description_ln3'] = "Wszystkie informacje o nagrodzie DXCC można znaleźć na stronie internetowej ARRL.";
+$lang['awards_dxcc_description_ln4'] = "Ważna uwaga: Z biegiem czasu kryteria listy DXCC uległy zmianie. Lista pozostaje niezmieniona, dopóki jednostka nie spełnia kryteriów, na podstawie których została dodana, w którym to momencie zostaje przeniesiona na listę usuniętych. Usunięte jednostki DXCC znajdują się również na listach w Cloudlog. Należy pamiętać, że te jednostki DXCC są nieaktualne i nie są już ważne.";
+
+/*
+___________________________________________________________________________________________________________
+FFMA — Użyj wszystkich 4 wierszy tekstu
+___________________________________________________________________________________________
+*/
+
+$lang['awards_ffma_description_ln1'] = "Nagroda im. Freda Fisha";
+$lang['awards_ffma_description_ln2'] = "Nagroda Freda Fisha została ustanowiona na cześć Freda Fisha, W5FF (SK), który był pierwszym amatorem, który pracował i potwierdził wszystkie 488 kwadratów siatki Maidenhead w 48 sąsiadujących ze sobą Stanach Zjednoczonych na 6 metrach.";
+$lang['awards_ffma_description_ln3'] = "Nagroda zostanie przyznana każdemu amatorowi, który powtórzy osiągnięcie W5FF.";
+$lang['awards_ffma_description_ln4'] = "Więcej informacji można znaleźć pod tym linkiem: https://www.arrl.org/ffma.";
/*
___________________________________________________________________________________________
-DOK -- Use all 4 Lines of Text
+IOTA -- Użyj wszystkich 4 wierszy tekstu
___________________________________________________________________________________________
*/
-$lang['awards_dok_description_ln1'] = "DOK Award";
-$lang['awards_dok_description_ln2'] = "Germany extends over 630 km from East to West and nearly 900 km from North to South. Around 70,000 of Germany's 82 million inhabitants are licensed hams, with more than 40,000 of them being members of DARC. DOK is a system that provides individual local chapters with an identifier and means 'Deutscher Ortsverband Kenner' (English: 'German Local Association Identifier').";
-$lang['awards_dok_description_ln3'] = "The DOK consists of a letter for the district and a two-digit number for the local chapter, like P03 Friedrichshafen (city of the 'Hamradio exhibition') or F41 Baunatal (location of the DARC headquarters). Note: A zero in a DOK is a common mistake, often being logged as the letter O.";
-$lang['awards_dok_description_ln4'] = "This information is provided by the DARC website. Information about the DOK Awards and its rules can be found here.";
-
+$lang['awards_iota_description_ln1'] = "Nagrody IOTA";
+$lang['awards_iota_description_ln2'] = "IOTA to ekscytujący i innowacyjny program aktywności, który przyciągnął uwagę tysięcy radioamatorów na całym świecie. Założony w 1964 roku, promuje kontakty radiowe ze stacjami zlokalizowanymi na wyspach na całym świecie, aby wzbogacić doświadczenia wszystkich osób aktywnych na pasmach amatorskich. Aby to osiągnąć, czerpie z powszechnej mistyki otaczającej wyspy.";
+$lang['awards_iota_description_ln3'] = "Jest on administrowany przez Islands On The Air (IOTA) Ltd (zwaną IOTA Management) we współpracy z Radio Society of Great Britain (RSGB). IOTA Management pogrupowało wyspy świata w około 1200 „grup IOTA”, z których każda ma różną liczbę „liczników”, które są wyspami kwalifikującymi. Listy te są publikowane w katalogu IOTA i na stronie internetowej IOTA. Celem IOTA Island Chaser jest nawiązanie kontaktu radiowego z co najmniej jednym licznikiem w jak największej liczbie tych grup. Program ma ściśle zdefiniowany zestaw zasad i zachęca do przyjaznej rywalizacji między łowcami poprzez publikowanie wyników uczestników w Honor Roll i rocznych listach, a także uznawanie ich certyfikatami i prestiżowymi nagrodami.";
+$lang['awards_iota_description_ln4'] = "Informacje te można znaleźć również na stronie internetowej IOTA WORLD.";
/*
___________________________________________________________________________________________
-DXCC -- Use all 4 Lines of Text
+POTA — użyj wszystkich 4 wierszy tekstu
___________________________________________________________________________________________
*/
-$lang['awards_dxcc_description_ln1'] = "DXCC Award";
-$lang['awards_dxcc_description_ln2'] = "DXCC stands for 'DX Century Club,' an award based on worked countries. The DXCC List is based on an article created in 1935 by Clinton B. DeSoto, W1CBD, titled 'How to Count Countries Worked, A New DX Scoring System'.";
-$lang['awards_dxcc_description_ln3'] = "You can find all information about the DXCC Award on the ARRL website.";
-$lang['awards_dxcc_description_ln4'] = "Important Note: Over time, the criteria for the DXCC List have changed. The List remains unchanged until an entity no longer satisfies the criteria under which it was added, at which time it is moved to the Deleted List. You will find Deleted DXCC entities also in the lists on Cloudlog. Be aware that these DXCC entities are outdated and no longer valid.";
+$lang['awards_pota_description_ln1'] = "Nagrody POTA";
+$lang['awards_pota_description_ln2'] = "Parks on the Air® (POTA) rozpoczęło się na początku 2017 r., gdy zakończyło się specjalne wydarzenie ARRL National Parks on the Air. Grupa wolontariuszy chciała kontynuować zabawę po zakończeniu wydarzenia trwającego rok, i tak narodziło się POTA.";
+$lang['awards_pota_description_ln3'] = "POTA działa podobnie do SOTA, z Activators i Hunters. W przypadku nagród istnieje kilka kategorii opartych na liczbie parków, obszarów geograficznych i nie tylko.";
+$lang['awards_pota_description_ln4'] = "Aby uzyskać więcej informacji o dostępnych nagrodach i kategoriach, odwiedź stronę internetową Parks on the Air®.";
+/*
+___________________________________________________________________________________________________________
+SIG — Użyj wszystkich 4 wierszy tekstu
+___________________________________________________________________________________________________________
+*/
+
+$lang['awards_sig_description_ln1'] = "Informacje o SIG";
+$lang['awards_sig_description_ln2'] = "Kategoria SIG lub Signature umożliwia użycie dowolnego rodzaju 'Award Signature' dla nagród, które nie są zaimplementowane w Cloudlog.";
+$lang['awards_sig_description_ln3'] = "Powodem tego jest to, że powszechny format ADIF zapewnia tylko kilka dedykowanych pól dla niektórych nagród. SIG nadal umożliwia używanie i ocenę wszystkich innych typów znaczników podpisu.";
+$lang['awards_sig_description_ln4'] = "W przetwarzaniu QSO znajdziesz dwa pola: 'SIG' zawiera rzeczywisty znacznik, który jest również widoczny w ocenie nagrody, oraz 'SIG INFO', które zawiera opis podpisu. Oba pola są dowolnie dostosowywalne.";
+
+/*
+______________________________________________________________________________________________________
+SOTA — Użyj wszystkich 4 wierszy tekstu
+___________________________________________________________________________________________
+*/
+
+$lang['awards_sota_description_ln1'] = "Nagrody SOTA";
+$lang['awards_sota_description_ln2'] = "SOTA (Summits On The Air) to program nagród dla radioamatorów, który zachęca do mobilnej pracy w obszarach górskich.";
+$lang['awards_sota_description_ln3'] = "Jest w pełni operacyjny w prawie stu krajach na całym świecie. Każdy kraj ma własne stowarzyszenie, które definiuje uznane szczyty SOTA w ramach tego stowarzyszenia. Każdy szczyt zapewnia aktywistom i ścigającym wynik związany z wysokością szczytu. Certyfikaty są dostępne za różne wyniki, co prowadzi do prestiżowych trofeów „Mountain Goat” i „Shack Sloth”. Lista Honorowa dla aktywatorów i ścigających jest prowadzona w internetowej bazie danych SOTA.";
+$lang['awards_sota_description_ln4'] = "Aby uzyskać więcej informacji, odwiedź stronę: https://www.sota.org.uk/.";
+
+/*
+___________________________________________________________________________________________________________
+Hrabstwa USA — użyj wszystkich 4 wierszy tekstu
+___________________________________________________________________________________________________________
+*/
+
+$lang['awards_counties_description_ln1'] = "Nagroda hrabstwa USA";
+$lang['awards_counties_description_ln2'] = "Nagroda hrabstwa Stanów Zjednoczonych Ameryki (USA-CA), sponsorowana przez magazyn CQ, przyznawana jest za potwierdzone dwukierunkowe kontakty radiowe z określoną liczbą hrabstw USA zgodnie z zasadami i warunkami, które można znaleźć tutaj.";
+$lang['awards_counties_description_ln3'] = "USA-CA jest dostępna dla wszystkich licencjonowanych amatorów na całym świecie i przyznawana jest osobom fizycznym za wszystkie nawiązane kontakty hrabstw, niezależnie od używanych znaków wywoławczych, lokalizacji działania lub dat.";
+$lang['awards_counties_description_ln4'] = "Specjalne nagrody USA-CA są również dostępne dla SWL na zasadzie heared.";
/*
___________________________________________________________________________________________
-FFMA -- Use all 4 Lines of Text
+US Gridmaster -- Użyj wszystkich 4 wierszy tekstu
___________________________________________________________________________________________
*/
-$lang['awards_ffma_description_ln1'] = "Fred Fish Memorial Award";
-$lang['awards_ffma_description_ln2'] = "The Fred Fish Memorial Award was created in honor of Fred Fish, W5FF (SK), who was the first amateur to have worked and confirmed all 488 Maidenhead grid squares in the 48 contiguous United States on 6 Meters.";
-$lang['awards_ffma_description_ln3'] = "The award will be given to any amateur who can duplicate W5FF's accomplishment.";
-$lang['awards_ffma_description_ln4'] = "For more information, you can visit this link: https://www.arrl.org/ffma.";
-
+$lang['awards_us_gridmaster_description_ln1'] = "Nagroda US Gridmaster";
+$lang['awards_us_gridmaster_description_ln2'] = "Nagroda GridMaster jest najbardziej prestiżową nagrodą AMSAT, wprowadzoną po raz pierwszy w 2014 roku przez Star Comm Group. Jest dostępna dla wszystkich operatorów radiowych na całym świecie, którzy są w stanie obsłużyć wszystkie 488 kwadratów siatki w USA za pośrednictwem satelity i mogą zapewnić potwierdzenia QSL dla każdego kontaktu.";
+$lang['awards_us_gridmaster_description_ln3'] = "Oficjalne informacje ze strony internetowej: Dwukierunkowa komunikacja musi być nawiązana za pośrednictwem satelity amatorskiego z każdą siatką. Nie jest wymagany minimalny raport sygnału. Kontakty muszą być nawiązywane z tej samej lokalizacji lub z lokalizacji, z których żadna nie jest oddalona o więcej niż 200 kilometrów. Poświadczenie wnioskodawcy w aplikacji o nagrodę służy jako potwierdzenie przestrzegania zasady odległości. Osoby mogą ubiegać się o wiele nagród GridMaster i je otrzymać, jeśli zostaną uzyskane z innej lokalizacji, która znajduje się w innym okręgu 200 kilometrów.";
+$lang['awards_us_gridmaster_description_ln4'] = "Ta mapa pokazuje tylko QSO nawiązane na SAT.";
/*
-___________________________________________________________________________________________
-IOTA -- Use all 4 Lines of Text
+______________________________________________________________________________________________________
+JA Gridmaster — Użyj wszystkich 4 wierszy tekstu
___________________________________________________________________________________________
*/
-$lang['awards_iota_description_ln1'] = "IOTA Awards";
-$lang['awards_iota_description_ln2'] = "IOTA is an exciting and innovative activity program that has captured the interest of thousands of radio amateurs worldwide. Established in 1964, it promotes radio contacts with stations located on islands around the world to enhance the experience of all those active on the amateur bands. To achieve this, it draws on the widespread mystique surrounding islands.";
-$lang['awards_iota_description_ln3'] = "It is administered by Islands On The Air (IOTA) Ltd (referred to as IOTA Management) in partnership with the Radio Society of Great Britain (RSGB). IOTA Management has grouped the world's islands into approximately 1200 'IOTA groups,' each having varying numbers of 'counters,' which are qualifying islands. These listings are published in the IOTA Directory and on the IOTA website. The objective for the IOTA Island Chaser is to make radio contact with at least one counter in as many of these groups as possible. The program has a well-defined set of rules and encourages friendly competition among chasers by publishing participant performance in an Honor Roll and annual listings, as well as recognizing it with certificates and prestigious awards.";
-$lang['awards_iota_description_ln4'] = "You can also find this information on the IOTA WORLD website.";
-
-
-/*
-___________________________________________________________________________________________
-POTA -- Use all 4 Lines of Text
-___________________________________________________________________________________________
-*/
-
-$lang['awards_pota_description_ln1'] = "POTA Awards";
-$lang['awards_pota_description_ln2'] = "Parks on the Air® (POTA) started in early 2017 when the ARRL's National Parks on the Air special event ended. A group of volunteers wanted to continue the fun beyond the one-year event, and thus, POTA was born.";
-$lang['awards_pota_description_ln3'] = "POTA works similarly to SOTA, with Activators and Hunters. For the awards, there are several categories based on the number of parks, geographic areas, and more.";
-$lang['awards_pota_description_ln4'] = "For more information about the available awards and categories, please visit the Parks on the Air® website.";
-
-
-/*
-___________________________________________________________________________________________
-SIG -- Use all 4 Lines of Text
-___________________________________________________________________________________________
-*/
-
-$lang['awards_sig_description_ln1'] = "SIG Information";
-$lang['awards_sig_description_ln2'] = "The SIG or Signature Category provides the possibility to use any kind of 'Award Signature' for awards that are not implemented in Cloudlog.";
-$lang['awards_sig_description_ln3'] = "The reason for this is that the common ADIF format provides only a few dedicated fields for certain awards. SIG still makes it possible to use and evaluate all other types of signature markers.";
-$lang['awards_sig_description_ln4'] = "In the QSO processing, you will find two fields: 'SIG' contains the actual marker, which is also visible in the award evaluation, and 'SIG INFO,' which contains a description of the signature. Both fields are freely customizable.";
-
-
-/*
-___________________________________________________________________________________________
-SOTA -- Use all 4 Lines of Text
-___________________________________________________________________________________________
-*/
-
-$lang['awards_sota_description_ln1'] = "SOTA Awards";
-$lang['awards_sota_description_ln2'] = "SOTA (Summits On The Air) is an award scheme for radio amateurs that encourages portable operation in mountainous areas.";
-$lang['awards_sota_description_ln3'] = "It is fully operational in nearly a hundred countries worldwide. Each country has its own Association that defines the recognized SOTA summits within that Association. Each summit earns the activators and chasers a score related to the height of the summit. Certificates are available for various scores, leading to the prestigious 'Mountain Goat' and 'Shack Sloth' trophies. An Honor Roll for Activators and Chasers is maintained in the SOTA online database.";
-$lang['awards_sota_description_ln4'] = "For more information, please visit: https://www.sota.org.uk/.";
-
-
-/*
-___________________________________________________________________________________________
-US Counties -- Use all 4 Lines of Text
-___________________________________________________________________________________________
-*/
-
-$lang['awards_counties_description_ln1'] = "US County Award";
-$lang['awards_counties_description_ln2'] = "The United States of America Counties Award (USA-CA), sponsored by CQ magazine, is issued for confirmed two-way radio contacts with specified numbers of U.S. counties under rules and conditions you can find here.";
-$lang['awards_counties_description_ln3'] = "USA-CA is available to all licensed amateurs worldwide and is issued to individuals for all county contacts made, regardless of callsigns used, operating locations, or dates.";
-$lang['awards_counties_description_ln4'] = "Special USA-CA awards are also available to SWLs on a heard basis.";
-
-
-/*
-___________________________________________________________________________________________
-US Gridmaster -- Use all 4 Lines of Text
-___________________________________________________________________________________________
-*/
-
-$lang['awards_us_gridmaster_description_ln1'] = "US Gridmaster Award";
-$lang['awards_us_gridmaster_description_ln2'] = "The GridMaster Award is the most prestigious AMSAT award, first introduced in 2014 by the Star Comm Group. It is available to all amateur radio operators worldwide who manage to work all 488 grid squares in the USA via satellite and can provide QSL confirmations for each contact.";
-$lang['awards_us_gridmaster_description_ln3'] = "Official information from the website: Two-way communication must be established via amateur satellite with each grid. There is no minimum signal report required. Contacts must be made from the same location or from locations no two of which are more than 200 kilometers apart. The applicant's attestation in the award application serves as affirmation of abidance by the distance rule. Individuals may apply for and be granted multiple GridMaster awards when achieved from another location, which is in a different 200-kilometer circle.";
-$lang['awards_us_gridmaster_description_ln4'] = "This map shows only QSOs worked on SAT.";
-
-
-/*
-___________________________________________________________________________________________
-JA Gridmaster -- Use all 4 Lines of Text
-___________________________________________________________________________________________
-*/
-
-$lang['awards_ja_gridmaster_description_ln1'] = "JA Gridmaster Award";
-$lang['awards_ja_gridmaster_description_ln2'] = "Just as the US Gridmaster this Award is based on working all gridsquares of Japan.";
-$lang['awards_ja_gridmaster_description_ln3'] = "Additional Information and the rules about this award are still pending.";
+$lang['awards_ja_gridmaster_description_ln1'] = "Nagroda JA Gridmaster";
+$lang['awards_ja_gridmaster_description_ln2'] = "Tak jak US Gridmaster, ta nagroda jest przyznawana za pracę na wszystkich polach siatki w Japonii.";
+$lang['awards_ja_gridmaster_description_ln3'] = "Dodatkowe informacje i zasady dotyczące tej nagrody są nadal w toku.";
$lang['awards_ja_gridmaster_description_ln4'] = "";
-
/*
-___________________________________________________________________________________________
-VUCC -- Use all 4 Lines of Text
+______________________________________________________________________________________________________
+VUCC -- Użyj wszystkich 4 wierszy tekstu
___________________________________________________________________________________________
*/
$lang['awards_vucc_description_ln1'] = "VUCC - VHF/UHF Century Club Award";
-$lang['awards_vucc_description_ln2'] = "The VHF/UHF Century Club Award is given for a minimum number of worked and confirmed gridsquares on a desired band.";
-$lang['awards_vucc_description_ln3'] = "Official information and the rules can be found in this document: Click here.";
-$lang['awards_vucc_description_ln4'] = "Only VHF/UHF bands are relevant.";
-
+$lang['awards_vucc_description_ln2'] = "Nagroda VHF/UHF Century Club przyznawana jest za minimalną liczbę przepracowanych i potwierdzonych kwadratów siatki na wybranym paśmie.";
+$lang['awards_vucc_description_ln3'] = "Oficjalne informacje i zasady można znaleźć w tym dokumencie: Kliknij tutaj.";
+$lang['awards_vucc_description_ln4'] = "Dotyczy tylko pasm VHF/UHF.";
/*
-___________________________________________________________________________________________
-WAS -- Use all 4 Lines of Text
+______________________________________________________________________________________________________
+WAS -- Użyj wszystkich 4 wierszy tekstu
___________________________________________________________________________________________
*/
-$lang['awards_was_description_ln1'] = "WAS Award";
-$lang['awards_was_description_ln2'] = "ARRL's most popular award is the Worked All States Award. Thousands upon thousands of awards have been issued to hams around the world. In ARRL's 101st year, they have redesigned the certificates and the program in hopes of streamlining and improving the award program.";
-$lang['awards_was_description_ln3'] = "The WAS (Worked All States) Award is available to all amateurs worldwide who submit proof with written confirmation of contacts with each of the 50 states of the United States of America. Amateurs in the U.S. and its possessions must be members of ARRL to apply for a WAS. Applicants from outside the U.S. are exempt from this requirement.";
-$lang['awards_was_description_ln4'] = "All information and rules for the ARRL WAS Award can be found here.";
-
+$lang['awards_was_description_ln1'] = "Nagroda WAS";
+$lang['awards_was_description_ln2'] = "Najpopularniejszą nagrodą ARRL jest nagroda Worked All States Award. Tysiące nagród przyznano radioamatorom na całym świecie. W 101. roku istnienia ARRL przeprojektowano certyfikaty i program w nadziei na usprawnienie i ulepszenie programu nagród.";
+$lang['awards_was_description_ln3'] = "Nagroda WAS (Worked All States) jest dostępna dla wszystkich amatorów na całym świecie, którzy przedstawią dowód z pisemnym potwierdzeniem kontaktów z każdym z 50 stanów Stanów Zjednoczonych Ameryki. Amatorzy w Stanach Zjednoczonych i ich posiadłościach muszą być członkami ARRL, aby ubiegać się o WAS. Kandydaci spoza Stanów Zjednoczonych są zwolnieni z tego wymogu.";
+$lang['awards_was_description_ln4'] = "Wszystkie informacje i zasady dotyczące nagrody ARRL WAS można znaleźć tutaj.";
/*
___________________________________________________________________________________________
-WWFF -- Use all 4 Lines of Text
+WWFF -- Użyj wszystkich 4 wierszy tekstu
___________________________________________________________________________________________
*/
$lang['awards_wwff_description_ln1'] = "WWFF - World Wide Flora and Fauna Award";
-$lang['awards_wwff_description_ln2'] = "WWFF, World Wide Flora and Fauna in Amateur Radio, encourages licensed ham radio operators to leave their shacks and operate portable in Protected Flora & Fauna areas (PFF) worldwide.";
-$lang['awards_wwff_description_ln3'] = "More than 26,000 Protected Flora & Fauna (PFF) areas worldwide are already registered in the WWFF Directory. Hunters and Activators can apply for colorful awards, both globally and nationally.";
-$lang['awards_wwff_description_ln4'] = "For more information, please visit: https://wwff.co/awards/.";
+$lang['awards_wwff_description_ln2'] = "WWFF, World Wide Flora and Fauna in Amateur Radio, zachęca licencjonowanych operatorów radioamatorów do opuszczania swoich baraków i obsługiwania urządzeń przenośnych w obszarach chronionej flory i fauny (PFF) na całym świecie.";
+$lang['awards_wwff_description_ln3'] = "Ponad 26 000 obszarów chronionej flory i fauny (PFF) na całym świecie jest już zarejestrowanych w katalogu WWFF. Myśliwi i aktywiści mogą ubiegać się o kolorowe nagrody, zarówno globalnie, jak i krajowo.";
+$lang['awards_wwff_description_ln4'] = "Aby uzyskać więcej informacji, odwiedź stronę: https://wwff.co/awards/.";
/*
___________________________________________________________________________________________
-WAJA -- Use all 4 Lines of Text
+WAJA — Użyj wszystkich 4 wierszy tekstu
___________________________________________________________________________________________
*/
-$lang['awards_waja_description_ln1'] = "WAJA - Worked All Japan prefectures Award";
-$lang['awards_waja_description_ln2'] = "WAJA, Worked All Japan prefectures in Amateur Radio, encourages licensed ham radio operators to work all the prefectures in Japan.";
-$lang['awards_waja_description_ln3'] = "May be claimed for having contacted (heard) and received a QSL card from an amateur station located in each of the 47 prefectures of Japan. A list of QSL cards should be arranged in order of WAJA (HAJA) reference number, however names of prefectures may be omitted.";
-$lang['awards_waja_description_ln4'] = "For more information, please visit: https://www.jarl.org/English/4_Library/A-4-2_Awards/Award_Main.htm.";
+$lang['awards_waja_description_ln1'] = "WAJA — Nagroda za pracę we wszystkich prefekturach Japonii";
+$lang['awards_waja_description_ln2'] = "WAJA, Praca we wszystkich prefekturach Japonii w zakresie radia amatorskiego, zachęca licencjonowanych operatorów radiowych do pracy we wszystkich prefekturach w Japonii.";
+$lang['awards_waja_description_ln3'] = "Można ubiegać się o nawiązanie kontaktu (usłyszenie) i otrzymanie karty QSL ze stacji amatorskiej znajdującej się w każdej z 47 prefektur Japonii. Lista kart QSL powinna być ułożona według numeru referencyjnego WAJA (HAJA), jednak nazwy prefektur mogą zostać pominięte.";
- /*
-___________________________________________________________________________________________
-WAB -- Use all 4 Lines of Text
+/*
+______________________________________________________________________________________________________
+WAB -- Użyj wszystkich 4 wierszy tekstu
___________________________________________________________________________________________
*/
-$lang['awards_wab_description_ln1'] = "WAB - Worked All Britain Award";
-$lang['awards_wab_description_ln2'] = "The Amateur Radio Worked All Britain (WAB) Award is a prestigious recognition program within the amateur radio community that celebrates communication achievements across the United Kingdom. The WAB Award scheme encourages radio operators to establish contact with stations located in different regions of Britain, fostering camaraderie and promoting radio communication skills. To earn the WAB Award, participants must make successful radio contacts with stations located in specific WAB areas, which are defined by Ordnance Survey grid squares. These grid squares cover the entirety of Great Britain, including England, Scotland, Wales, and some offshore islands.";
-$lang['awards_wab_description_ln3'] = "Participants in the WAB Award program exchange information such as their location, signal strength, and WAB square reference during radio contacts. Points are awarded based on the location of the contacted station, with different point values assigned to contacts made within different WAB areas. By accumulating points from successful contacts, radio operators can progress through various award levels, each representing a significant milestone in their amateur radio journey. The WAB Award not only recognizes the dedication and skill of radio operators but also promotes geographic diversity and encourages exploration of the rich tapestry of locations across Britain through the medium of amateur radio.";
-$lang['awards_wab_description_ln4'] = "For more information, please visit: https://wab.intermip.net/default.php.";
+$lang['awards_wab_description_ln1'] = "WAB - Nagroda Worked All Britain";
+$lang['awards_wab_description_ln2'] = "Nagroda Amateur Radio Worked All Britain (WAB) to prestiżowy program uznawania osiągnięć w dziedzinie komunikacji w społeczności radioamatorów w Zjednoczonym Królestwie. Program WAB Award zachęca operatorów radiowych do nawiązywania kontaktów ze stacjami zlokalizowanymi w różnych regionach Wielkiej Brytanii, co sprzyja koleżeństwu i promuje umiejętności komunikacji radiowej. Aby zdobyć nagrodę WAB Award, uczestnicy muszą nawiązać udane kontakty radiowe ze stacjami zlokalizowanymi w określonych obszarach WAB, które są definiowane przez kwadraty siatki Ordnance Survey. Te kwadraty siatki obejmują całą Wielką Brytanię, w tym Anglię, Szkocję, Walię i niektóre wyspy przybrzeżne.";
+$lang['awards_wab_description_ln3'] = "Uczestnicy programu WAB Award wymieniają się informacjami, takimi jak ich lokalizacja, siła sygnału i kwadrat odniesienia WAB podczas kontaktów radiowych. Punkty są przyznawane na podstawie lokalizacji nawiązanej stacji, przy czym różne wartości punktowe są przypisywane kontaktom nawiązanym w różnych obszarach WAB. Gromadząc punkty za udane kontakty, operatorzy radiowi mogą przechodzić przez różne poziomy nagród, z których każdy stanowi znaczący kamień milowy w ich amatorskiej podróży radiowej. Nagroda WAB nie tylko docenia poświęcenie i umiejętności operatorów radiowych, ale także promuje różnorodność geograficzną i zachęca do eksploracji bogatego gobelinu lokalizacji w Wielkiej Brytanii za pośrednictwem amatorskiego radia.";
+$lang['awards_wab_description_ln4'] = "Aby uzyskać więcej informacji, odwiedź stronę: https://wab.intermip.net/default.php.";
diff --git a/application/language/polish/contesting_lang.php b/application/language/polish/contesting_lang.php
index f089b32e..23f93d4e 100644
--- a/application/language/polish/contesting_lang.php
+++ b/application/language/polish/contesting_lang.php
@@ -1,38 +1,38 @@
application/language/english/general_words_lang.php
-// $lang['general_word_yes'] --> application/language/english/general_words_lang.php
-// $lang['general_word_no'] --> application/language/english/general_words_lang.php
-// $lang['general_word_requested'] --> application/language/english/general_words_lang.php
-// $lang['general_word_queued'] --> application/language/english/general_words_lang.php
-// $lang['general_word_invalid_ignore'] --> application/language/english/general_words_lang.php
-$lang['filter_qsl_verified'] = 'Verified';
+// $lang['general_word_all'] --> aplikacja/język/angielski/general_words_lang.php
+// $lang['general_word_yes'] --> aplikacja/język/angielski/general_words_lang.php
+// $lang['general_word_no'] --> aplikacja/język/angielski/general_words_lang.php
+// $lang['general_word_requested'] --> aplikacja/język/angielski/general_words_lang.php
+// $lang['general_word_queued'] --> aplikacja/język/angielski/general_words_lang.php
+// $lang['general_word_invalid_ignore'] --> aplikacja/język/angielski/general_words_lang.php
+$lang['filter_qsl_verified'] = 'Zweryfikowano';
-// $lang['general_word_qslcard_bureau'] --> application/language/english/general_words_lang.php
-// $lang['general_word_qslcard_direct'] --> application/language/english/general_words_lang.php
-// $lang['general_word_qslcard_electronic'] --> application/language/english/general_words_lang.php
-// $lang['general_word_qslcard_manager'] --> application/language/english/general_words_lang.php
+// $lang['general_word_qslcard_bureau'] --> aplikacja/język/angielski/general_words_lang.php
+// $lang['general_word_qslcard_direct'] --> aplikacja/język/angielski/general_words_lang.php
+// $lang['general_word_qslcard_electronic'] --> aplikacja/język/angielski/general_words_lang.php
+// $lang['general_word_qslcard_manager'] --> aplikacja/język/angielski/general_words_lang.php
/*
___________________________________________________________________________________________
-General Filters
+Filtry ogólne
___________________________________________________________________________________________
*/
-$lang['filter_general_from'] = 'From';
-$lang['filter_general_to'] = 'to';
-// $lang['gen_hamradio_de'] --> application/language/english/general_words_lang.php
-// $lang['gen_hamradio_dx'] --> application/language/english/general_words_lang.php
-// $lang['gen_hamradio_dxcc'] --> application/language/english/general_words_lang.php
-$lang['filter_general_none'] = '- NONE - (e.g. /MM, /AM)';
-// $lang['gen_hamradio_state'] --> application/language/english/general_words_lang.php
-// $lang['gen_hamradio_gridsquare'] --> application/language/english/general_words_lang.php
-// $lang['gen_hamradio_mode'] --> application/language/english/general_words_lang.php
-// $lang['gen_hamradio_band'] --> application/language/english/general_words_lang.php
+$lang['filter_general_from'] = 'Od';
+$lang['filter_general_to'] = 'do';
+// $lang['gen_hamradio_de'] --> aplikacja/język/english/general_words_lang.php
+// $lang['gen_hamradio_dx'] --> aplikacja/język/english/general_words_lang.php
+// $lang['gen_hamradio_dxcc'] --> aplikacja/język/angielski/general_words_lang.php
+$lang['filter_general_none'] = '- BRAK - (np. /MM, /AM)';
+// $lang['gen_hamradio_state'] --> aplikacja/język/angielski/general_words_lang.php
+// $lang['gen_hamradio_gridsquare'] --> aplikacja/język/angielski/general_words_lang.php
+// $lang['gen_hamradio_mode'] --> aplikacja/język/angielski/general_words_lang.php
+// $lang['gen_hamradio_band'] --> aplikacja/język/angielski/general_words_lang.php
-$lang['filter_general_propagation'] = 'Propagation';
-// $lang['gen_hamradio_cq_zone'] --> application/language/english/general_words_lang.php
-// $lang['gen_hamradio_iota'] --> application/language/english/general_words_lang.php
-// $lang['gen_hamradio_sota'] --> application/language/english/general_words_lang.php
-// $lang['gen_hamradio_wwff'] --> application/language/english/general_words_lang.php
-// $lang['gen_hamradio_pota'] --> application/language/english/general_words_lang.php
+$lang['filter_general_propagation'] = 'Propagacja';
+// $lang['gen_hamradio_cq_zone'] --> aplikacja/język/angielski/general_words_lang.php
+// $lang['gen_hamradio_iota'] --> aplikacja/język/english/general_words_lang.php
+// $lang['gen_hamradio_sota'] --> aplikacja/język/english/general_words_lang.php
+// $lang['gen_hamradio_wwff'] --> aplikacja/język/angielski/general_words_lang.php
+// $lang['gen_hamradio_pota'] --> aplikacja/język/english/general_words_lang.php
/*
___________________________________________________________________________________________
-Actions
+Działania
___________________________________________________________________________________________
*/
-
-$lang['filter_actions_w_selected'] = 'With selected: ';
-$lang['filter_actions_update_f_callbook'] = 'Update from Callbook';
-$lang['filter_actions_queue_bureau'] = 'Queue Bureau';
-$lang['filter_actions_queue_direct'] = 'Queue Direct';
-$lang['filter_actions_queue_electronic'] = 'Queue Electronic';
-$lang['filter_actions_sent_bureau'] = 'Sent (Bureau)';
-$lang['filter_actions_sent_direct'] = 'Sent (Direct)';
-$lang['filter_actions_sent_electronic'] = 'Sent (Electronic)';
-$lang['filter_actions_not_sent'] = 'Not Sent';
-$lang['filter_actions_qsl_n_required'] = 'QSL Not Required';
-$lang['filter_actions_recv_bureau'] = 'Received (Bureau)';
-$lang['filter_actions_recv_direct'] = 'Received (Direct)';
-$lang['filter_actions_recv_electronic'] = 'Received (Electronic)';
-$lang['filter_actions_create_adif'] = 'Create ADIF';
-$lang['filter_actions_print_label'] = 'Print Label';
-$lang['filter_actions_start_print_title'] = 'Print Labels';
-$lang['filter_actions_print_include_via'] = "Include Via";
-$lang['filter_actions_print_include_grid'] = 'Include Grid?';
-$lang['filter_actions_start_print'] = 'Start printing at?';
-$lang['filter_actions_print'] = 'Print';
-$lang['filter_actions_qsl_slideshow'] = 'QSL Slideshow';
-$lang['filter_actions_delete'] = 'Delete';
-$lang['filter_actions_delete_warning'] = "Warning! Are you sure you want to delete the marked QSO(s)?";
-
+$lang['filter_actions_w_selected'] = 'Z wybranymi: ';
+$lang['filter_actions_update_f_callbook'] = 'Aktualizacja z książki telefonicznej';
+$lang['filter_actions_queue_bureau'] = 'Biuro kolejek';
+$lang['filter_actions_queue_direct'] = 'Kolejka bezpośrednia';
+$lang['filter_actions_queue_electronic'] = 'Kolejka elektroniczna';
+$lang['filter_actions_sent_bureau'] = 'Wysłano (Biuro)';
+$lang['filter_actions_sent_direct'] = 'Wysłano (Bezpośrednio)';
+$lang['filter_actions_sent_electronic'] = 'Wysłano (elektronicznie)';
+$lang['filter_actions_not_sent'] = 'Nie wysłano';
+$lang['filter_actions_qsl_n_required'] = 'Karta QSL nie jest wymagana';
+$lang['filter_actions_recv_bureau'] = 'Otrzymano (biuro)';
+$lang['filter_actions_recv_direct'] = 'Otrzymano (bezpośrednio)';
+$lang['filter_actions_recv_electronic'] = 'Otrzymano (elektronicznie)';
+$lang['filter_actions_create_adif'] = 'Utwórz ADIF';
+$lang['filter_actions_print_label'] = 'Drukuj etykietę';
+$lang['filter_actions_start_print_title'] = 'Drukuj etykiety';
+$lang['filter_actions_print_include_via'] = "Dołącz przez";
+$lang['filter_actions_print_include_grid'] = 'Dołącz siatkę?';
+$lang['filter_actions_start_print'] = 'Rozpocznij drukowanie o?';
+$lang['filter_actions_print'] = 'Drukuj';
+$lang['filter_actions_qsl_slideshow'] = 'Pokaz slajdów QSL';
+$lang['filter_actions_delete'] = 'Usuń';
+$lang['filter_actions_delete_warning'] = "Ostrzeżenie! Czy na pewno chcesz usunąć zaznaczone QSO?";
/*
___________________________________________________________________________________________
-Options
+Opcje
___________________________________________________________________________________________
*/
-$lang['filter_options_title'] = 'Options for the Advanced Logbook';
-$lang['filter_options_column'] = 'Column';
-$lang['filter_options_show'] = 'Show';
-// $lang['general_word_datetime'] --> application/language/english/general_words_lang.php
-// $lang['gen_hamradio_de'] --> application/language/english/general_words_lang.php
-// $lang['gen_hamradio_dx'] --> application/language/english/general_words_lang.php
-// $lang['gen_hamradio_mode'] --> application/language/english/general_words_lang.php
-// $lang['gen_hamradio_rsts'] --> application/language/english/general_words_lang.php
-// $lang['gen_hamradio_rstr'] --> application/language/english/general_words_lang.php
-// $lang['gen_hamradio_band'] --> application/language/english/general_words_lang.php
-// $lang['gen_hamradio_myrefs'] --> application/language/english/general_words_lang.php
-// $lang['gen_hamradio_refs'] --> application/language/english/general_words_lang.php
-// $lang['general_word_name'] --> application/language/english/general_words_lang.php
-// $lang['filter_qsl_via'] --> application/language/english/general_words_lang.php
-// $lang['gen_hamradio_qsl'] --> application/language/english/general_words_lang.php
-// $lang['lotw_short'] --> application/language/english/lotw_lang.php
-// $lang['eqsl_short'] --> application/language/english/eqsl_lang.php
-// $lang['gen_hamradio_qslmsg'] --> application/language/english/general_words_lang.php
-// $lang['gen_hamradio_dxcc'] --> application/language/english/general_words_lang.php
-// $lang['gen_hamradio_state'] --> application/language/english/general_words_lang.php
-// $lang['gen_hamradio_cq_zone'] --> application/language/english/general_words_lang.php
-// $lang['gen_hamradio_iota'] --> application/language/english/general_words_lang.php
-// $lang['gen_hamradio_sota'] --> application/language/english/general_words_lang.php
-// $lang['gen_hamradio_wwff'] --> application/language/english/general_words_lang.php
-// $lang['gen_hamradio_pota'] --> application/language/english/general_words_lang.php
-// $lang['options_save'] --> application/language/english/options_lang.php
-$lang['filter_search_operator']='Search Operator';
-$lang['filter_options_close'] = 'Close';
\ No newline at end of file
+$lang['filter_options_title'] = 'Opcje zaawansowanego dziennika';
+$lang['filter_options_column'] = 'Kolumna';
+$lang['filter_options_show'] = 'Pokaż';
+// $lang['general_word_datetime'] --> aplikacja/język/angielski/general_words_lang.php
+// $lang['gen_hamradio_de'] --> aplikacja/język/angielski/general_words_lang.php
+// $lang['gen_hamradio_dx'] --> aplikacja/język/angielski/general_words_lang.php
+// $lang['gen_hamradio_mode'] --> aplikacja/język/angielski/general_words_lang.php
+// $lang['gen_hamradio_rsts'] --> aplikacja/język/angielski/general_words_lang.php
+// $lang['gen_hamradio_rstr'] --> aplikacja/język/angielski/general_words_lang.php
+// $lang['gen_hamradio_band'] --> aplikacja/język/angielski/język_ogólny_słow.php
+// $lang['gen_hamradio_myrefs'] --> aplikacja/język/angielski/język_ogólny_słow.php
+// $lang['gen_hamradio_refs'] --> aplikacja/język/angielski/język_ogólny_słow.php
+// $lang['nazwa_słowna_ogólna'] --> aplikacja/język/angielski/język_ogólny_słow.php
+// $lang['filter_qsl_via'] --> aplikacja/język/angielski/język_ogólny_słow.php
+// $lang['gen_hamradio_qsl'] --> aplikacja/język/angielski/język_ogólny_słow.php
+// $lang['lotw_short'] --> aplikacja/język/angielski/lotw_lang.php
+// $lang['eqsl_short'] --> aplikacja/język/angielski/eqsl_lang.php
+// $lang['gen_hamradio_qslmsg'] --> aplikacja/język/angielski/general_words_lang.php
+// $lang['gen_hamradio_dxcc'] --> aplikacja/język/angielski/general_words_lang.php
+// $lang['gen_hamradio_state'] --> aplikacja/język/angielski/general_words_lang.php
+// $lang['gen_hamradio_cq_zone'] --> aplikacja/język/angielski/general_words_lang.php
+// $lang['gen_hamradio_iota'] --> aplikacja/język/angielski/język_ogólny.php
+// $lang['gen_hamradio_sota'] --> aplikacja/język/angielski/język_ogólny.php
+// $lang['gen_hamradio_wwff'] --> aplikacja/język/angielski/język_ogólny.php
+// $lang['gen_hamradio_pota'] --> aplikacja/język/angielski/język_ogólny.php
+// $lang['options_save'] --> aplikacja/język/angielski/język_ogólny.php
+$lang['filter_search_operator']='Operator wyszukiwania';
+$lang['filter_options_close'] = 'Zamknij';
\ No newline at end of file
diff --git a/application/language/polish/general_words_lang.php b/application/language/polish/general_words_lang.php
index 7588ebc8..f23d2637 100644
--- a/application/language/polish/general_words_lang.php
+++ b/application/language/polish/general_words_lang.php
@@ -2,16 +2,16 @@
defined('BASEPATH') OR exit('No direct script access allowed');
-$lang['error_no_active_station_profile'] = 'Uwaga: musisz ustawić aktywną lokalizacje stacji.';
+$lang['error_no_active_station_profile'] = 'Attention: you need to set an active station location.';
-$lang['notice_turn_the_radio_on'] = 'Nie zrobiłeś dziś łączności; czas włączyć radio!';
+$lang['notice_turn_the_radio_on'] = 'You have made no QSOs today; time to turn on the radio!';
-$lang['general_word_important'] = 'Ważne';
+$lang['general_word_important'] = 'Important';
$lang['general_word_warning'] = 'Warning';
$lang['general_word_danger'] = 'DANGER';
$lang['general_word_maintenance'] = 'Maintenance';
-$lang['general_word_info'] = 'Informacja';
-$lang['general_word_choose_file'] = 'Wybież plik';
+$lang['general_word_info'] = 'Info';
+$lang['general_word_choose_file'] = 'Choose file';
$lang['general_word_next'] = 'Next';
$lang['general_word_previous'] = 'Previous';
$lang['general_word_cancel'] = "Cancel";
@@ -23,136 +23,136 @@ $lang['general_word_export'] = "Export";
$lang['general_word_import'] = "Import";
$lang['general_word_count'] = "Count";
$lang['general_word_filtering_on'] = "Filtering on";
-$lang['general_word_not_display'] = "Not display";
+$lang['general_word_not_display'] = "Not displayed";
$lang['general_word_icon'] = "Icon";
$lang['general_word_never'] = "Never";
$lang['general_word_undefined'] = "Undefined";
-$lang['general_word_date'] = 'Data';
+$lang['general_word_date'] = 'Date';
$lang['general_word_startdate'] = "Start Date";
$lang['general_word_enddate'] = "End Date";
-$lang['general_word_time'] = 'Godzina';
+$lang['general_word_time'] = 'Time';
$lang['general_word_time_on'] = 'Time on';
$lang['general_word_time_off'] = 'Time off';
-$lang['general_word_datetime'] = 'Data/Godzina';
-$lang['general_word_none'] = 'Nic';
-$lang['general_word_name'] = 'Imie';
-$lang['general_word_flag'] = 'Flaga';
-$lang['general_word_location'] = 'Lokalizacja';
-$lang['general_word_comment'] = 'Komentarz';
-$lang['general_word_general'] = 'Główne';
-$lang['general_word_satellite'] = 'Satelita';
+$lang['general_word_datetime'] = 'Date/Time';
+$lang['general_word_none'] = 'None';
+$lang['general_word_name'] = 'Name';
+$lang['general_word_flag'] = 'Flag';
+$lang['general_word_location'] = 'Location';
+$lang['general_word_comment'] = 'Comment';
+$lang['general_word_general'] = 'General';
+$lang['general_word_satellite'] = 'Satellite';
$lang['general_word_satellite_short'] = 'Sat';
-$lang['general_word_notes'] = 'Notatki';
-$lang['general_word_country'] = 'Kraj';
+$lang['general_word_notes'] = 'Notes';
+$lang['general_word_country'] = 'Country';
$lang['general_word_city'] = 'City';
-$lang['general_word_total'] = 'Suma';
-$lang['general_word_year'] = 'Rok';
-$lang['general_word_month'] = 'Miesiąc';
+$lang['general_word_total'] = 'Total';
+$lang['general_word_year'] = 'Year';
+$lang['general_word_month'] = 'Month';
$lang['general_word_day'] = "Day";
$lang['general_word_days'] = "Days";
$lang['general_word_colors'] = "Colors";
$lang['general_word_light'] = "Light/Laser";
-$lang['general_word_worked'] = 'Pracowane';
+$lang['general_word_worked'] = 'Worked';
$lang['general_word_worked_not_confirmed'] = "Worked not confirmed";
$lang['general_word_not_worked'] = "Not worked";
-$lang['general_word_confirmed'] = 'Potwierdzone';
+$lang['general_word_confirmed'] = 'Confirmed';
$lang['general_word_confirmation'] = "Confirmation";
-$lang['general_word_needed'] = 'Wymagane';
+$lang['general_word_needed'] = 'Needed';
$lang['general_word_all'] = 'All';
-$lang['general_word_no'] = 'Nie';
-$lang['general_word_yes'] = 'Tak';
-$lang['general_word_method'] = 'Sposób';
+$lang['general_word_no'] = 'No';
+$lang['general_word_yes'] = 'Yes';
+$lang['general_word_method'] = 'Method';
-$lang['general_word_sent'] = 'Wysłane';
-$lang['general_word_received'] = 'Odebrane';
-$lang['general_word_requested'] = 'Poproszone';
+$lang['general_word_sent'] = 'Sent';
+$lang['general_word_received'] = 'Received';
+$lang['general_word_requested'] = 'Requested';
$lang['general_word_queued'] = 'Queued';
$lang['general_word_table'] = "Table";
$lang['general_word_invalid_ignore'] = 'Invalid (Ignore)';
-$lang['general_word_qslcard'] = 'Karta QSL';
-$lang['general_word_qslcard_management'] = 'Zarządzanie kartami';
-$lang['general_word_qslcards'] = 'Karty QSL';
+$lang['general_word_qslcard'] = 'QSL Card';
+$lang['general_word_qslcard_management'] = 'QSL Management';
+$lang['general_word_qslcards'] = 'QSL Cards';
+$lang['general_word_sstv_management'] = 'SSTV Management';
+$lang['general_word_sstvimages'] = 'SSTV Images';
+$lang['general_sstv_upload'] = 'Uploaded SSTV images';
+$lang['general_sstv_upload_button'] = 'Upload SSTV image(s)';
$lang['general_word_qslcard_direct'] = 'Direct';
-$lang['general_word_qslcard_bureau'] = 'Biuro';
+$lang['general_word_qslcard_bureau'] = 'Bureau';
$lang['general_word_qslcard_electronic'] = 'Electronic';
$lang['general_word_qslcard_manager'] = 'Manager';
$lang['general_word_qslcard_via'] = 'Via';
$lang['general_word_eqslcard'] = 'eQSL Card';
$lang['general_word_eqslcards'] = 'eQSL Cards';
-$lang['general_word_sstv_management'] = 'SSTV Management';
-$lang['general_word_sstvimages'] = 'SSTV Images';
-$lang['general_sstv_upload'] = 'Uploaded SSTV images';
-$lang['general_sstv_upload_button'] = 'Upload SSTV image(s)';
$lang['general_word_lotw'] = 'Logbook of the World';
$lang['general_word_lotw_short'] = 'LoTW';
$lang['general_word_details'] = 'Details';
$lang['general_word_qso_data'] = 'QSO Data';
-$lang['general_edit_qso'] = 'Edytuj QSO';
-$lang['general_mark_qsl_rx_bureau'] = 'Zaznacz QSL jako odebraną przez (Biuro)';
-$lang['general_mark_qsl_rx_direct'] = 'Zaznacz QSL jako odebraną przez (Bezpośredni)';
-$lang['general_mark_qsl_rx_electronic'] = 'Zaznacz QSL jako odebraną przez (Elektroniczny)';
-$lang['general_mark_qsl_tx_bureau'] = 'Zaznacz QSL jako wysłaną przez (Biuro)';
-$lang['general_mark_qsl_tx_direct'] = 'Zaznacz QSL jako wysłaną przez (Bezpośredni)';
-$lang['general_mark_qsl_requested'] = 'Zaznacz QSL zgodnie z żądaniem';
-$lang['general_mark_qsl_requested_bureau'] = 'Zaznacz QSL zgodnie z żądaniem (Biuro)';
-$lang['general_mark_qsl_requested_direct'] = 'Zaznacz QSL zgodnie z żądaniem (Bezpośredni)';
-$lang['general_mark_qsl_not_required'] = 'Zaznacz QSLjako niewymagane';
+$lang['general_edit_qso'] = 'Edit QSO';
+$lang['general_mark_qsl_rx_bureau'] = 'Mark QSL Received (Bureau)';
+$lang['general_mark_qsl_rx_direct'] = 'Mark QSL Received (Direct)';
+$lang['general_mark_qsl_rx_electronic'] = 'Mark QSL Received (Electronic)';
+$lang['general_mark_qsl_tx_bureau'] = 'Mark QSL Sent (Bureau)';
+$lang['general_mark_qsl_tx_direct'] = 'Mark QSL Sent (Direct)';
+$lang['general_mark_qsl_requested'] = 'Mark QSL Card Requested';
+$lang['general_mark_qsl_requested_bureau'] = 'Mark QSL Card Requested (Bureau)';
+$lang['general_mark_qsl_requested_direct'] = 'Mark QSL Card Requested (Direct)';
+$lang['general_mark_qsl_not_required'] = 'Mark QSL Card Not Required';
-$lang['general_delete_qso'] = 'Usuń QSO';
+$lang['general_delete_qso'] = 'Delete QSO';
$lang['general_more_qso'] = 'More QSOs';
$lang['general_lookup_qrz'] = 'Lookup on QRZ.com';
$lang['general_lookup_hamqth'] = 'Lookup on HamQTH';
-$lang['general_total_distance'] = 'Suma odległości';
+$lang['general_total_distance'] = 'Total Distance';
// PHP Upload Warning
$lang['gen_max_file_upload_size'] = 'Maximum file upload size is ';
// Cloudlog Terms
-$lang['cloudlog_station_profile'] = 'Lokalizacja stacji';
+$lang['cloudlog_station_profile'] = 'Station Location';
// ham radio terms
$lang['gen_hamradio_cq'] = "CQ";
$lang['gen_hamradio_qso'] = 'QSO';
-$lang['gen_hamradio_station'] = 'Stacja';
+$lang['gen_hamradio_station'] = 'Station';
-$lang['gen_hamradio_call'] = 'Znak';
-$lang['gen_hamradio_callsign'] = 'Znak';
+$lang['gen_hamradio_call'] = 'Call';
+$lang['gen_hamradio_callsign'] = 'Callsign';
$lang['gen_hamradio_prefix'] = "Prefix";
$lang['gen_hamradio_suffix'] = "Suffix";
$lang['gen_hamradio_de'] = 'De';
$lang['gen_hamradio_dx'] = 'Dx';
-$lang['gen_hamradio_mode'] = 'Modulacja';
+$lang['gen_hamradio_mode'] = 'Mode';
$lang['gen_hamradio_ant_az'] = 'Antenna Azimuth';
$lang['gen_hamradio_ant_el'] = 'Antenna Elevation';
-$lang['gen_hamradio_rst_sent'] = 'Wysłany';
-$lang['gen_hamradio_rst_rcvd'] = 'Odebrany\'d';
-$lang['gen_hamradio_band'] = 'Pasmo';
+$lang['gen_hamradio_rst_sent'] = 'Sent';
+$lang['gen_hamradio_rst_rcvd'] = 'Recv\'d';
+$lang['gen_hamradio_band'] = 'Band';
$lang['gen_hamradio_bandgroup'] = "Bandgroup";
-$lang['gen_hamradio_band_rx'] = 'Pasmo (RX)';
-$lang['gen_hamradio_frequency'] = 'Częstotliwość';
-$lang['gen_hamradio_frequency_rx'] = 'Częstotliwość (RX)';
+$lang['gen_hamradio_band_rx'] = 'Band (RX)';
+$lang['gen_hamradio_frequency'] = 'Frequency';
+$lang['gen_hamradio_frequency_rx'] = 'Frequency (RX)';
$lang['gen_hamradio_radio'] = 'Radio';
$lang['gen_hamradio_rsts'] = 'RST (S)';
$lang['gen_hamradio_rstr'] = 'RST (R)';
$lang['gen_hamradio_refs'] = 'Refs';
$lang['gen_hamradio_myrefs'] = 'My Refs';
-$lang['gen_hamradio_exchange_sent_short'] = 'Wymiana (S)';
-$lang['gen_hamradio_exchange_rcvd_short'] = 'Wymiana (R)';
+$lang['gen_hamradio_exchange_sent_short'] = 'Exch (S)';
+$lang['gen_hamradio_exchange_rcvd_short'] = 'Exch (R)';
$lang['gen_hamradio_qsl'] = 'QSL';
$lang['gen_hamradio_qsltype'] = "QSL Type";
$lang['gen_hamradio_qslvia'] = 'QSL via';
$lang['gen_hamradio_qslmsg'] = 'QSL Msg';
-$lang['gen_hamradio_locator'] = 'Lokator';
-$lang['gen_hamradio_transmit_power'] = 'Moc nadajnika (W)';
-$lang['gen_hamradio_propagation_mode'] = 'Typ propagacji';
+$lang['gen_hamradio_locator'] = 'Locator';
+$lang['gen_hamradio_transmit_power'] = 'Transmit Power (W)';
+$lang['gen_hamradio_propagation_mode'] = 'Propagation Mode';
$lang['gen_hamradio_propagation_AS'] = "Aircraft Scatter";
$lang['gen_hamradio_propagation_AUR'] = "Aurora";
$lang['gen_hamradio_propagation_AUE'] = "Aurora-E";
@@ -172,31 +172,31 @@ $lang['gen_hamradio_propagation_SAT'] = "Satellite";
$lang['gen_hamradio_propagation_TEP'] = "Trans-equatorial";
$lang['gen_hamradio_propagation_TR'] = "Tropospheric ducting";
-$lang['gen_hamradio_satellite_name'] = 'Nazwa satelity';
-$lang['gen_hamradio_satellite_mode'] = 'modulacja satelity';
+$lang['gen_hamradio_satellite_name'] = 'Satellite Name';
+$lang['gen_hamradio_satellite_mode'] = 'Satellite Mode';
-$lang['gen_hamradio_logbook'] = 'Log';
+$lang['gen_hamradio_logbook'] = 'Logbook';
$lang['gen_hamradio_award'] = "Award";
$lang['gen_hamradio_zones'] = 'Zones';
-$lang['gen_hamradio_cq_zone'] = 'Strefa CQ';
-$lang['gen_hamradio_itu_zone'] = 'Strefa ITU';
+$lang['gen_hamradio_cq_zone'] = 'CQ Zone';
+$lang['gen_hamradio_itu_zone'] = 'ITU Zone';
$lang['gen_hamradio_dxcc'] = 'DXCC';
$lang['gen_hamradio_deleted_dxcc'] = 'Deleted DXCC';
$lang['gen_hamradio_continent'] = 'Continent';
-$lang['gen_hamradio_usa_state'] = 'Stan USA';
-$lang['gen_hamradio_county_reference'] = 'Hrabstwo USA';
-$lang['gen_hamradio_iota_reference'] = 'Podmiot IOTA';
-$lang['gen_hamradio_sota_reference'] = 'Podmiot SOTA';
-$lang['gen_hamradio_wwff_reference'] = 'Podmiot WWFF';
+$lang['gen_hamradio_usa_state'] = 'USA State';
+$lang['gen_hamradio_county_reference'] = 'USA County';
+$lang['gen_hamradio_iota_reference'] = 'IOTA Reference';
+$lang['gen_hamradio_sota_reference'] = 'SOTA Reference';
+$lang['gen_hamradio_wwff_reference'] = 'WWFF Reference';
$lang['gen_hamradio_pota_reference'] = 'POTA Reference';
$lang['gen_hamradio_dok'] = 'DOK';
-$lang['gen_hamradio_state'] = 'Stan';
+$lang['gen_hamradio_state'] = 'State';
$lang['gen_hamradio_iota'] = 'IOTA';
$lang['gen_hamradio_sota'] = 'SOTA';
$lang['gen_hamradio_wwff'] = 'WWFF';
$lang['gen_hamradio_pota'] = 'POTA';
-$lang['gen_hamradio_gridsquare'] = 'Lokator';
+$lang['gen_hamradio_gridsquare'] = 'Gridsquare';
$lang['gen_hamradio_get_gridsquare'] = 'Get Gridsquare';
$lang['gen_hamradio_gridsquare_show'] = "Show Locator";
$lang['gen_hamradio_latitude'] = "Latitude";
@@ -215,15 +215,15 @@ $lang['gen_find_zone_part2'] = "click here";
$lang['gen_find_zone_part3'] = "to find it!";
// Dashboard Words
-$lang['dashboard_you_have_had'] = 'Już miałeś';
+$lang['dashboard_you_have_had'] = 'You have had';
$lang['dashboard_qsos_today'] = 'QSOs Today!';
-$lang['dashboard_qso_breakdown'] = 'Rozkład QSO';
-$lang['dashboard_countries_breakdown'] = 'Rozkład na kraje';
+$lang['dashboard_qso_breakdown'] = 'QSOs Breakdown';
+$lang['dashboard_countries_breakdown'] = 'Countries Breakdown';
+
+$lang['gen_from_date'] = 'From date';
$lang['gen_to_date'] = 'To date';
-$lang['gen_from_date'] = 'Od daty';
-
-$lang['gen_this_qso_was_confirmed_on'] = 'Ta łączność została potwierdzona';
+$lang['gen_this_qso_was_confirmed_on'] = 'This QSO was confirmed on';
$lang['error_no_logbook_found'] = 'No logbooks were found. You need to define a logbook under Station Logbooks! Do it here:';
@@ -240,6 +240,11 @@ $lang['southamerica'] = 'South America';
$lang['gen_band_selection'] = 'Band selection';
$lang['general_word_today'] = 'Today';
+$lang['dashboard_php_version_warning'] = 'You need to upgrade your PHP version. Minimum version is 7.4. Your version is';
+$lang['dashboard_country_files_warning'] = 'You need to update country files! Go here to do it!';
+$lang['dashboard_locations_warning'] = 'You have no station locations. Go here to create it!';
+$lang['dashboard_logbooks_warning'] = 'You have no station logbook. Go here to create it!';
+
$lang['hams_at_no_activations_found'] = 'No upcoming activations found. Please check back later.';
$lang['datatables_language'] = "en-GB";
diff --git a/application/language/polish/gridsquares_lang.php b/application/language/polish/gridsquares_lang.php
index 07bc32c9..6786a037 100644
--- a/application/language/polish/gridsquares_lang.php
+++ b/application/language/polish/gridsquares_lang.php
@@ -1,36 +1,36 @@
Linku, aby oznaczyć łączności jako potwierdzone przez LoTW.';
-$lang['lotw_upload_type_must_be_adi'] = 'Pliki logu muszą mieć rozszerzenie .adi';
+$lang['lotw_upload_exported_adif_file_from_lotw'] = 'Wyślij pobrany plik ADIF z LoTW z Linku, aby otrzymać wiadomość jako przekazaną przez LoTW.';
+$lang['lotw_upload_type_must_be_adi'] = 'Pliki logu muszą mieć ustawienie .adi';
$lang['lotw_pull_lotw_data_for_me'] = 'Pobierz dane z LoTW za mnie';
-$lang['lotw_select_callsign'] = 'Select callsign to pull LoTW confirmations for';
+$lang['lotw_select_callsign'] = 'Wybierz znak wywoławczy, dla którego będą pobierane potwierdzenia LoTW';
-$lang['lotw_report_download_overview_helptext'] ='Cloudlog będzie używał loginu i hasła podanego w profilu, aby pobierać raporty z LoTW.Raport będzie zawierał wszystkie potwierdzenia od wybranej daty, lub ostatniej potwierdzonej łączności z LoTW (wybranej z logiu), do teraz.';
+$lang['lotw_report_download_overview_helptext'] ='Cloudlog będzie używany do logowania i hasła podanego w profilu, aby pobrać raporty z LoTW.Raport będzie zawierał wszystkie potwierdzenia danych z LoTW (wybranej z logu), do teraz.';
-// Buttons
-$lang['lotw_btn_lotw_import'] = 'LoTW Import';
+// Przyciski
+$lang['lotw_btn_lotw_import'] = 'Import LoTW';
$lang['lotw_btn_upload_certificate'] = 'Wyślij certyfikat';
$lang['lotw_btn_delete'] = 'Usuń';
$lang['lotw_btn_manual_sync'] = 'Ręczna synchronizacja';
$lang['lotw_btn_upload_file'] = 'Wyślij plik';
-$lang['lotw_btn_import_matches'] = 'Import LoTW Matches';
+$lang['lotw_btn_import_matches'] = 'Importuj mecze LoTW';
-// P12 Export Text
-$lang['lotw_p12_export_step_one'] = 'Otwórz aplikacje TQSL & przejdź dp zakładki Callsign Certificates';
-$lang['lotw_p12_export_step_two'] = 'Naciśnij prawym klawiszem myszny na żądany znak';
-$lang['lotw_p12_export_step_three'] = 'wybierz "Save Callsign Certificate File"i nie podawaj hasła';
+// P12 Eksportuj tekst
+$lang['lotw_p12_export_step_one'] = 'Otwórz aplikacje TQSL & przejdź dp zakładki Certyfikaty znaków wywoławczych';
+$lang['lotw_p12_export_step_two'] = 'Naciśnij klawiszem myszny na pokładzie znaku';
+$lang['lotw_p12_export_step_three'] = 'wybierz "Zapisz plik certyfikatu znaku wywoławczego" i nie podawaj haseł';
$lang['lotw_p12_export_step_four'] = 'Wyślij plik poniżej.';
-$lang['lotw_confirmed'] = 'Ta łączność jest potwierdzona przez LoTW';
+$lang['lotw_confirmed'] = 'Ta sprawdzona jest potwierdzona przez 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!';
+// Wygaśnięcie LoTW
+$lang['lotw_cert_expiring'] = 'Co najmniej jeden z Twoich certyfikatów LoTW wkrótce wygaśnie!';
+$lang['lotw_cert_expired'] = 'Co najmniej jeden z Twoich certyfikatów LoTW wygasł!';
-// Lotw User
-$lang['lotw_user'] = 'This station uses LoTW.';
-$lang['lotw_last_upload'] = 'Last upload';
+// Użytkownik Lotw
+$lang['lotw_user'] = 'Ta stacja używa LoTW.';
+$lang['lotw_last_upload'] = 'Ostatnie przesłanie';
diff --git a/application/language/polish/menu_lang.php b/application/language/polish/menu_lang.php
index f4f56874..ff22cb36 100644
--- a/application/language/polish/menu_lang.php
+++ b/application/language/polish/menu_lang.php
@@ -1,41 +1,41 @@
'587', if SSL is used -> '465'";
-$lang['options_smtp_username_hint'] = "The username to log in to the mail server, usually this is the email address that is used.";
-$lang['options_smtp_password_hint'] = "The password to log in to the mail server.";
-$lang['options_send_testmail'] = "Send Test-Mail";
-$lang['options_send_testmail_hint'] = "The email will be sent to the address defined in your account settings.";
-$lang['options_send_testmail_failed'] = "Testmail failed. Something went wrong.";
-$lang['options_send_testmail_success'] = "Testmail sent. Email settings seem to be correct.";
+$lang['options_email'] = 'E-mail';
+$lang['options_outgoing_protocol'] = 'Protokół wychodzący';
+$lang['options_smtp_encryption'] = 'Szyfrowanie SMTP';
+$lang['options_email_address'] = 'Adres e-mail';
+$lang['options_email_sender_name'] = 'Nazwa nadawcy e-mail';
+$lang['options_smtp_host'] = 'Host SMTP';
+$lang['options_smtp_port'] = 'Port SMTP';
+$lang['options_smtp_username'] = 'Nazwa użytkownika SMTP';
+$lang['options_smtp_password'] = 'Hasło SMTP';
+$lang['options_mail_settings_saved'] = "Ustawienia zostały pomyślnie zapisane.";
+$lang['options_mail_settings_failed'] = "Wystąpił błąd podczas zapisywania ustawień. Spróbuj ponownie.";
+$lang['options_outgoing_protocol_hint'] = "Protokół, który będzie używany do wysyłania wiadomości e-mail.";
+$lang['options_smtp_encryption_hint'] = "Wybierz, czy wiadomości e-mail mają być wysyłane przy użyciu protokołu TLS czy SSL.";
+$lang['options_email_address_hint'] = "Adres e-mail, z którego wiadomości e-mail są wysyłane, np. 'cloudlog@example.com'";
+$lang['options_email_sender_name_hint'] = "Nazwa nadawcy wiadomości e-mail, np. 'Cloudlog'";
+$lang['options_smtp_host_hint'] = "Nazwa hosta serwera pocztowego, np. 'mail.example.com' (bez 'ssl://' lub 'tls://')";
+$lang['options_smtp_port_hint'] = "Port SMTP serwera pocztowego, np. jeśli używany jest TLS -> '587', jeśli używany jest SSL -> '465'";
+$lang['options_smtp_username_hint'] = "Nazwa użytkownika do logowania się na serwerze pocztowym, zwykle jest to używany adres e-mail.";
+$lang['options_smtp_password_hint'] = "Hasło do logowania się na serwerze pocztowym.";
+$lang['options_send_testmail'] = "Wyślij wiadomość testową";
+$lang['options_send_testmail_hint'] = "E-mail zostanie wysłany na adres zdefiniowany w ustawieniach konta.";
-$lang['options_oqrs'] = 'OQRS Options';
-$lang['options_global_text'] = 'Global text';
-$lang['options_this_text_is_an_optional_text_that_can_be_displayed_on_top_of_the_oqrs_page'] = 'This text is an optional text that can be displayed on top of the OQRS page.';
-$lang['options_grouped_search'] = 'Grouped search';
-$lang['options_when_this_is_on_all_station_locations_with_oqrs_active_will_be_searched_at_once'] = 'When this is on, all station locations with OQRS active, will be searched at once.';
-$lang['options_grouped_search_show_station_name'] = "Show station location name in grouped search results";
-$lang['options_grouped_search_show_station_name_hint'] = "If grouped search is ON, you can decide if the name of the station location shall be shown in the results table.";
-$lang['options_oqrs_options_have_been_saved'] = 'OQRS options have been saved.';
+$lang['options_send_testmail_failed'] = "Testmail nie powiódł się. Coś poszło nie tak.";
+$lang['options_send_testmail_success'] = "Testmail został wysłany. Ustawienia e-maila wydają się być poprawne.";
+
+$lang['options_oqrs'] = 'Opcje OQRS';
+
+$lang['options_global_text'] = 'Tekst globalny';
+
+$lang['options_this_text_is_an_optional_text_that_can_be_displayed_on_top_of_the_oqrs_page'] = 'Ten tekst jest opcjonalnym tekstem, który można wyświetlić na górze strony OQRS.';
+
+$lang['options_grouped_search'] = 'Wyszukiwanie grupowe';
+$lang['options_when_this_is_on_all_station_locations_with_oqrs_active_will_be_searched_at_once'] = 'Gdy ta opcja jest włączona, wszystkie lokalizacje stacji z aktywnym OQRS zostaną przeszukane jednocześnie.';
+$lang['options_grouped_search_show_station_name'] = "Pokaż nazwę lokalizacji stacji w wynikach wyszukiwania grupowego";
+$lang['options_grouped_search_show_station_name_hint'] = "Jeśli wyszukiwanie grupowe jest włączone, możesz zdecydować, czy nazwa lokalizacji stacji ma być wyświetlana w tabeli wyników.";
+$lang['options_oqrs_options_have_been_saved'] = 'Opcje OQRS zostały zapisane.';
$lang['options_dxcluster'] = 'DXCluster';
-$lang['options_dxcluster_provider'] = 'Provider of DXClusterCache';
-$lang['options_dxcluster_longtext'] = 'The Provider of the DXCluster-Cache. You can set up your own Cache with DXClusterAPI or use a public one';
-$lang['options_dxcluster_hint'] = 'URL of the DXCluster-Cache. e.g. https://dxc.jo30.de/dxcache';
+$lang['options_dxcluster_provider'] = 'Dostawca DXClusterCache';
+$lang['options_dxcluster_longtext'] = 'Dostawca DXCluster-Cache. Możesz skonfigurować własną pamięć podręczną za pomocą DXClusterAPI lub użyć publicznej';
+$lang['options_dxcluster_hint'] = 'Adres URL pamięci podręcznej DXCluster. np. https://dxc.jo30.de/dxcache';
$lang['options_dxcluster_settings'] = 'DXCluster';
-$lang['options_dxcache_url_changed_to'] = 'DXCluster Cache URL changed to ';
-$lang['options_dxcluster_maxage'] = 'Maximum Age of spots taken care of';
-$lang['options_dxcluster_maxage_hint'] = 'The Age in Minutes of spots, that will be taken care at bandplan/lookup';
-$lang['options_dxcluster_decont'] = 'Show spots which are spotted from following continent';
-$lang['options_dxcluster_maxage_changed_to']='Maximum age of spots changed to ';
-$lang['options_dxcluster_decont_changed_to']='de continent changed to ';
-$lang['options_dxcluster_decont_hint']='Only spots by spotters from this continent are shown';
+$lang['options_dxcache_url_changed_to'] = 'Adres URL pamięci podręcznej DXCluster zmieniono na ';
+$lang['options_dxcluster_maxage'] = 'Maksymalny wiek obsługiwanych spotów';
+$lang['options_dxcluster_maxage_hint'] = 'Wiek w minutach spotów, które zostaną uwzględnione w bandplanie/wyszukiwaniu';
+$lang['options_dxcluster_decont'] = 'Pokaż spoty, które zostały oznaczone z następującego kontynentu';
+$lang['options_dxcluster_maxage_changed_to']='Maksymalny wiek spotów zmieniono na ';
+$lang['options_dxcluster_decont_changed_to']='kontynent zmieniono na ';
+$lang['options_dxcluster_decont_hint']='Pokazywane są tylko spoty spotterów z tego kontynentu';
-$lang['options_version_dialog'] = "Version Info";
-$lang['options_version_dialog_close'] = "Close";
-$lang['options_version_dialog_dismiss'] = "Don't show again";
-$lang['options_version_dialog_settings'] = "Version Info Settings";
-$lang['options_version_dialog_header'] = "Version Info Header";
-$lang['options_version_dialog_header_hint'] = "You can change the header of the version info dialog.";
-$lang['options_version_dialog_header_changed_to'] = "Version Info Header changed to";
-$lang['options_version_dialog_mode'] = "Version Info Mode";
-$lang['options_version_dialog_mode_release_notes'] = "Only Release Notes";
-$lang['options_version_dialog_mode_custom_text'] = "Only Custom Text";
-$lang['options_version_dialog_mode_both'] = "Release Notes and Custom Text";
-$lang['options_version_dialog_mode_disabled'] = "Disabled";
-$lang['options_version_dialog_mode_hint'] = "The Version Info is shown to every user. The user has the option to dismiss the dialog after they read it. Select if you want to show only release notes (fetched from github), only custom text or both.";
-$lang['options_version_dialog_custom_text'] = "Version Info Custom Text";
-$lang['options_version_dialog_custom_text_hint'] = "This is the custom text which is shown in the dialog.";
-$lang['options_version_dialog_mode_changed_to'] = "Version Info Mode changed to";
-$lang['options_version_dialog_custom_text_saved'] = "Version Info Custom Text saved!";
-$lang['options_version_dialog_success_show_all'] = "Version Info will be shown to all users again";
-$lang['options_version_dialog_success_hide_all'] = "Version Info will not be shown to any user";
-$lang['options_version_dialog_show_hide'] = "Show/Hide Version Info Dialog for all Users";
-$lang['options_version_dialog_show_all'] = "Show for all Users";
-$lang['options_version_dialog_hide_all'] = "Hide for all Users";
-$lang['options_version_dialog_show_all_hint'] = "This will show the version dialog automatically to all users on their next page reload.";
-$lang['options_version_dialog_hide_all_hint'] = "This will deactivate the automatic popup of the version dialog for all users.";
+$lang['options_version_dialog'] = "Informacje o wersji";
+$lang['options_version_dialog_close'] = "Zamknij";
+$lang['options_version_dialog_dismiss'] = "Nie pokazuj ponownie";
+$lang['options_version_dialog_settings'] = "Ustawienia informacji o wersji";
+$lang['options_version_dialog_header'] = "Nagłówek informacji o wersji";
+$lang['options_version_dialog_header_hint'] = "Możesz zmienić nagłówek okna dialogowego informacji o wersji.";
+$lang['options_version_dialog_header_changed_to'] = "Nagłówek informacji o wersji został zmieniony na";
+$lang['options_version_dialog_mode'] = "Tryb informacji o wersji";
+$lang['options_version_dialog_mode_release_notes'] = "Tylko informacje o wydaniu";
+$lang['options_version_dialog_mode_custom_text'] = "Tylko tekst niestandardowy";
+$lang['options_version_dialog_mode_both'] = "Informacje o wydaniu i tekst niestandardowy";
+$lang['options_version_dialog_mode_disabled'] = "Wyłączone";
+$lang['options_version_dialog_mode_hint'] = "Informacje o wersji są wyświetlane każdemu użytkownikowi. Użytkownik ma możliwość zamknięcia okna dialogowego po jego przeczytaniu. Wybierz, czy chcesz wyświetlić tylko informacje o wydaniu (pobrane z github), tylko tekst niestandardowy czy oba.";
+$lang['options_version_dialog_custom_text'] = "Niestandardowy tekst informacji o wersji";
+$lang['options_version_dialog_custom_text_hint'] = "To jest niestandardowy tekst wyświetlany w oknie dialogowym.";
+$lang['options_version_dialog_mode_changed_to'] = "Zmieniono tryb informacji o wersji na";
+$lang['options_version_dialog_custom_text_saved'] = "Niestandardowy tekst informacji o wersji zapisano!";
+$lang['options_version_dialog_success_show_all'] = "Informacje o wersji zostaną ponownie wyświetlone wszystkim użytkownikom";
+$lang['options_version_dialog_success_hide_all'] = "Informacje o wersji nie zostaną wyświetlone żadnemu użytkownikowi";
+$lang['options_version_dialog_show_hide'] = "Pokaż/ukryj okno dialogowe informacji o wersji dla wszystkich użytkowników";
+$lang['options_version_dialog_show_all'] = "Pokaż dla wszystkich użytkowników";
+$lang['options_version_dialog_hide_all'] = "Ukryj dla wszystkich użytkowników";
+$lang['options_version_dialog_show_all_hint'] = "Spowoduje to automatyczne wyświetlenie okna dialogowego wersji wszystkim użytkownikom przy następnym przeładowaniu strony.";
+$lang['options_version_dialog_hide_all_hint'] = "Spowoduje to wyłączenie automatycznego wyświetlania okna dialogowego wersji dla wszystkich użytkowników.";
-$lang['options_save'] = 'Save';
+$lang['options_save'] = 'Zapisz';
-// Bands
+// Pasma
+
+$lang['options_bands'] = "Pasma";
+$lang['options_bands_text_ln1'] = "Używając listy pasm możesz kontrolować, które pasma są wyświetlane podczas tworzenia nowego QSO.";
+$lang['options_bands_text_ln2'] = "Aktywne pasma będą wyświetlane w rozwijanym menu QSO 'Pasmo', natomiast nieaktywne pasma będą ukryte i nie będzie można ich wybrać.";
+$lang['options_bands_create'] = "Utwórz pasmo";
+$lang['options_bands_edit'] = "Edytuj pasmo";
+$lang['options_bands_activate_all'] = "Aktywuj wszystkie";
+$lang['options_bands_activateall_warning'] = "Ostrzeżenie! Czy na pewno chcesz aktywować wszystkie pasma?";
+$lang['options_bands_deactivate_all'] = "Dezaktywuj wszystkie";
+$lang['options_bands_deactivateall_warning'] = "Ostrzeżenie! Czy na pewno chcesz dezaktywować wszystkie pasma?";
-$lang['options_bands'] = "Bands";
-$lang['options_bands_text_ln1'] = "Using the band list you can control which bands are shown when creating a new QSO.";
-$lang['options_bands_text_ln2'] = "Active bands will be shown in the QSO 'Band' drop-down, while inactive bands will be hidden and cannot be selected.";
-$lang['options_bands_create'] = "Create a band";
-$lang['options_bands_edit'] = "Edit Band";
-$lang['options_bands_activate_all'] = "Activate All";
-$lang['options_bands_activateall_warning'] = "Warning! Are you sure you want to activate all bands?";
-$lang['options_bands_deactivate_all'] = "Deactivate All";
-$lang['options_bands_deactivateall_warning'] = "Warning! Are you sure you want to deactivate all bands?";
$lang['options_bands_ssb_qrg'] = "SSB QRG";
-$lang['options_bands_ssb_qrg_hint'] = "Frequency for SSB QRG in band (must be in Hz)";
+
+$lang['options_bands_ssb_qrg_hint'] = "Częstotliwość dla SSB QRG w paśmie (musi być w Hz)";
+
$lang['options_bands_data_qrg'] = "DATA QRG";
-$lang['options_bands_data_qrg_hint'] = "Frequency for DATA QRG in band (must be in Hz)";
+
+$lang['options_bands_data_qrg_hint'] = "Częstotliwość dla DATA QRG w paśmie (musi być w Hz)";
+
$lang['options_bands_cw_qrg'] = "CW QRG";
-$lang['options_bands_cw_qrg_hint'] = "Frequency for CW QRG in band (must be in Hz)";
-$lang['options_bands_name_band'] = "Name of Band (E.g. 20m)";
-$lang['options_bands_name_bandgroup'] = "Name of bandgroup (E.g. hf, vhf, uhf, shf)";
-$lang['options_bands_delete_warning'] = "Warning! Are you sure you want to delete the following band: ";
+$lang['options_bands_cw_qrg_hint'] = "Częstotliwość dla CW QRG w paśmie (musi być w Hz)";
+
+$lang['options_bands_name_band'] = "Nazwa pasma (np. 20m)";
+$lang['options_bands_name_bandgroup'] = "Nazwa grupy pasm (np. hf, vhf, uhf, shf)";
+$lang['options_bands_delete_warning'] = "Ostrzeżenie! Czy na pewno chcesz usunąć następujące pasmo: ";
diff --git a/application/language/polish/qslcard_lang.php b/application/language/polish/qslcard_lang.php
index faaae1d8..4a1113a9 100644
--- a/application/language/polish/qslcard_lang.php
+++ b/application/language/polish/qslcard_lang.php
@@ -1,39 +1,39 @@
here.";
-$lang['qso_simplefle_qso_data'] = "QSO Data";
-$lang['qso_simplefle_qso_date_hint'] = "If you don't choose a date, today's date will be used.";
-$lang['qso_simplefle_qso_list'] = "QSO List";
-$lang['qso_simplefle_qso_list_total'] = "Total";
-$lang['qso_simplefle_qso_date'] = "QSO Date";
+$lang['qso_simplefle_info'] = "Co to jest?";
+$lang['qso_simplefle_info_ln1'] = "Prosty szybki wpis do dziennika (FLE)";
+$lang['qso_simplefle_info_ln2'] = "'Szybki wpis do dziennika' lub po prostu 'FLE' to system do bardzo szybkiego i wydajnego rejestrowania QSO. Ze względu na składnię, do rejestrowania wielu QSO przy jak najmniejszym wysiłku wymagane jest tylko minimalne wprowadzanie danych.";
+$lang['qso_simplefle_info_ln3'] = "FLE został pierwotnie napisany przez DF3CB. Oferuje on program dla systemu Windows na swojej stronie internetowej. Simple FLE został napisany przez OK2CQR na podstawie FLE DF3CB i zapewnia interfejs sieciowy do rejestrowania QSO.";
+$lang['qso_simplefle_info_ln4'] = "Powszechnym przypadkiem użycia jest importowanie dzienników papierowych z sesji na świeżym powietrzu, a teraz SimpleFLE jest również dostępny w Cloudlog. Informacje o składni i sposobie działania FLE można znaleźć tutaj.";
+$lang['qso_simplefle_qso_data'] = "Dane QSO";
+$lang['qso_simplefle_qso_date_hint'] = "Jeśli nie wybierzesz daty, zostanie użyta dzisiejsza data.";
+$lang['qso_simplefle_qso_list'] = "Lista QSO";
+$lang['qso_simplefle_qso_list_total'] = "Suma";
+$lang['qso_simplefle_qso_date'] = "Data QSO";
$lang['qso_simplefle_operator'] = "Operator";
-$lang['qso_simplefle_operator_hint'] = "e.g. OK2CQR";
-$lang['qso_simplefle_station_call_location'] = "Station Call/Location";
-$lang['qso_simplefle_station_call_location_hint'] = "If you did operate from a new location, first create a new Station Location";
-$lang['qso_simplefle_utc_time'] = "Current UTC Time";
-$lang['qso_simplefle_enter_the_data'] = "Enter the Data";
-$lang['qso_simplefle_syntax_help_close_w_sample'] = "Close and Load Sample Data";
-$lang['qso_simplefle_reload'] = "Reload QSO List";
-$lang['qso_simplefle_save'] = "Save in Cloudlog";
-$lang['qso_simplefle_clear'] = "Clear Logging Session";
-$lang['qso_simplefle_refs_hint'] = "The Refs can be either SOTA, IOTA, POTA or WWFF";
+$lang['qso_simplefle_operator_hint'] = "np. OK2CQR";
+$lang['qso_simplefle_station_call_location'] = "Wywołanie stacji/Lokalizacja";
+$lang['qso_simplefle_station_call_location_hint'] = "Jeśli operujesz z nowej lokalizacji, najpierw utwórz nową Lokalizację stacji";
+$lang['qso_simplefle_utc_time'] = "Bieżący czas UTC";
+$lang['qso_simplefle_enter_the_data'] = "Wprowadź dane";
+$lang['qso_simplefle_syntax_help_close_w_sample'] = "Zamknij i wczytaj przykładowe dane";
+$lang['qso_simplefle_reload'] = "Ponownie wczytaj listę QSO";
+$lang['qso_simplefle_save'] = "Zapisz w Cloudlog";
+$lang['qso_simplefle_clear'] = "Wyczyść sesję rejestrowania";
+$lang['qso_simplefle_refs_hint'] = "Referencje mogą być SOTA, IOTA, POTA lub WWFF";
-$lang['qso_simplefle_error_band'] = "Band is missing!";
-$lang['qso_simplefle_error_mode'] = "Mode is missing!";
-$lang['qso_simplefle_error_time'] = "Time is not set!";
-$lang['qso_simplefle_error_stationcall'] = "Station Call is not selected";
-$lang['qso_simplefle_error_operator'] = "'Operator' Field is empty";
-$lang['qso_simplefle_warning_reset'] = "Warning! Do you really want to reset everything?";
-$lang['qso_simplefle_warning_missing_band_mode'] = "Warning! You can't log the QSO List, because some QSO don't have band and/or mode defined!";
-$lang['qso_simplefle_warning_missing_time'] = "Warning! You can't log the QSO List, because some QSO don't have a time defined!";
-$lang['qso_simplefle_warning_example_data'] = "Attention! The Data Field containes example data. First Clear Logging Session!";
-$lang['qso_simplefle_confirm_save_to_log'] = "Are you sure that you want to add these QSO to the Log and clear the session?";
-$lang['qso_simplefle_success_save_to_log_header'] = "QSO Logged!";
-$lang['qso_simplefle_success_save_to_log'] = "The QSO were successfully logged in the logbook!";
-$lang['qso_simplefle_error_date'] = "Invalid date";
+$lang['qso_simplefle_error_band'] = "Brakuje pasma!";
+$lang['qso_simplefle_error_mode'] = "Brakuje trybu!";
+$lang['qso_simplefle_error_time'] = "Czas nie jest ustawiony!";
+$lang['qso_simplefle_error_stationcall'] = "Wywołanie stacji nie jest wybrane";
+$lang['qso_simplefle_error_operator'] = "Pole 'Operator' jest puste";
+$lang['qso_simplefle_warning_reset'] = "Ostrzeżenie! Czy na pewno chcesz zresetować wszystko?";
+$lang['qso_simplefle_warning_missing_band_mode'] = "Ostrzeżenie! Nie możesz zalogować listy QSO, ponieważ niektóre QSO nie mają zdefiniowanego pasma i/lub trybu!";
+$lang['qso_simplefle_warning_missing_time'] = "Ostrzeżenie! Nie możesz zalogować listy QSO, ponieważ niektóre QSO nie mają zdefiniowanego czasu!";$lang['qso_simplefle_warning_example_data'] = "Uwaga! Pole danych zawiera przykładowe dane. Najpierw wyczyść sesję rejestrowania!";
+$lang['qso_simplefle_confirm_save_to_log'] = "Czy na pewno chcesz dodać te QSO do dziennika i wyczyścić sesję?";
+$lang['qso_simplefle_success_save_to_log_header'] = "QSO zarejestrowane!";
+$lang['qso_simplefle_success_save_to_log'] = "QSO zostały pomyślnie zarejestrowane w dzienniku!";
+$lang['qso_simplefle_error_date'] = "Nieprawidłowa data";
-$lang['qso_simplefle_syntax_help_button'] = "Syntax Help";
-$lang['qso_simplefle_syntax_help_title'] = "Syntax for FLE";
-$lang['qso_simplefle_syntax_help_ln1'] = "Before starting to log a QSO, please note the basic rules.";
-$lang['qso_simplefle_syntax_help_ln2'] = "- Each new QSO should be on a new line.";
-$lang['qso_simplefle_syntax_help_ln3'] = "- On each new line, only write data that has changed from the previous QSO.";
-$lang['qso_simplefle_syntax_help_ln4'] = "To begin, ensure you have already filled in the form on the left with the date, station call, and operator's call. The main data includes the band (or QRG in MHz, e.g., '7.145'), mode, and time. After the time, you provide the first QSO, which is essentially the callsign.";
-$lang['qso_simplefle_syntax_help_ln5'] = "For example, a QSO that started at 21:34 (UTC) with 2M0SQL on 20m SSB.";
-$lang['qso_simplefle_syntax_help_ln6'] = "If you don't provide any RST information, the syntax will use 59 (599 for data). Our next QSO wasn't 59 on both sides, so we provide the information with the sent RST first. It was 2 minutes later than the first QSO.";
-$lang['qso_simplefle_syntax_help_ln7'] = "The first QSO was at 21:34, and the second one 2 minutes later at 21:36. We write down 6 because this is the only data that changed here. The information about band and mode didn't change, so this data is omitted.";
-$lang['qso_simplefle_syntax_help_ln8'] = "For our next QSO at 21:40 on 14th May, 2021, we changed the band to 40m but still on SSB. If no RST information is given, the syntax will use 59 for every new QSO. Therefore we can add another QSO which took place at the exact same time two days later. The date must be in format YYYY-MM-DD.";
-$lang['qso_simplefle_syntax_help_ln9'] = "For further information about the syntax, please check the website of DF3CB here.";
-
+$lang['qso_simplefle_syntax_help_button'] = "Pomoc dotycząca składni";
+$lang['qso_simplefle_syntax_help_title'] = "Składnia dla FLE";
+$lang['qso_simplefle_syntax_help_ln1'] = "Przed rozpoczęciem rejestrowania QSO zapoznaj się z podstawowymi zasadami.";
+$lang['qso_simplefle_syntax_help_ln2'] = "- Każde nowe QSO powinno znajdować się w nowym wierszu.";
+$lang['qso_simplefle_syntax_help_ln3'] = "- W każdym nowym wierszu zapisuj tylko dane, które uległy zmianie od poprzedniego QSO.";
+$lang['qso_simplefle_syntax_help_ln4'] = "Na początek upewnij się, że wypełniłeś formularz po lewej stronie, podając datę, wywołanie stacji i wywołanie operatora. Główne dane obejmują pasmo (lub QRG w MHz, np. '7.145'), tryb i czas. Po czasie podajesz pierwsze QSO, które jest zasadniczo znakiem wywoławczym.";
+$lang['qso_simplefle_syntax_help_ln5'] = "Na przykład QSO, które rozpoczęło się o 21:34 (UTC) z 2M0SQL na 20m SSB.";
+$lang['qso_simplefle_syntax_help_ln6'] = "Jeśli nie podasz żadnych informacji RST, składnia użyje 59 (599 dla danych). Nasze następne QSO nie było 59 po obu stronach, więc najpierw podajemy informacje z wysłanym RST. Było to 2 minuty później niż pierwsze QSO.";
+$lang['qso_simplefle_syntax_help_ln7'] = "Pierwsze QSO było o 21:34, a drugie 2 minuty później o 21:36. Zapisujemy 6, ponieważ są to jedyne dane, które się tutaj zmieniły. Informacje o paśmie i trybie nie uległy zmianie, więc te dane są pomijane.";
+$lang['qso_simplefle_syntax_help_ln8'] = "W przypadku naszego następnego QSO o 21:40 14 maja 2021 r. zmieniliśmy pasmo na 40 m, ale nadal na SSB. Jeśli nie podano informacji RST, składnia będzie używać 59 dla każdego nowego QSO. Dlatego możemy dodać kolejne QSO, które miało miejsce dokładnie o tej samej porze dwa dni później. Data musi być w formacie RRRR-MM-DD.";
+$lang['qso_simplefle_syntax_help_ln9'] = "Aby uzyskać więcej informacji na temat składni, sprawdź stronę internetową DF3CB tutaj.";
\ No newline at end of file
diff --git a/application/language/polish/sstv_lang.php b/application/language/polish/sstv_lang.php
index 72c4c7d0..695a3ecd 100644
--- a/application/language/polish/sstv_lang.php
+++ b/application/language/polish/sstv_lang.php
@@ -1,5 +1,5 @@
Station Location to select one.';
-$lang['station_location_reassign_at'] = 'Please reassign them at ';
-$lang['station_location_warning_reassign'] = 'Due to recent changes within Cloudlog you need to reassign QSOs to your station profiles.';
-$lang['station_location_name'] = 'Profile Name';
-$lang['station_location_name_hint'] = 'Shortname for the station location. For example: Home (IO87IP)';
-$lang['station_location_callsign'] = 'Station Callsign';
-$lang['station_location_callsign_hint'] = 'Station callsign. For example: 2M0SQL/P';
-$lang['station_location_power'] = 'Station Power (W)';
-$lang['station_location_power_hint'] = 'Default station power in Watt. Overwritten by CAT.';
-$lang['station_location_emptylog'] = 'Empty Log';
-$lang['station_location_confirm_active'] = 'Are you sure you want to make the following station the active station: ';
-$lang['station_location_set_active'] = 'Set Active';
-$lang['station_location_active'] = 'Active Station';
-$lang['station_location_claim_ownership'] = 'Claim Ownership';
-$lang['station_location_confirm_del_qso'] = 'Are you sure you want to delete all QSOs within this station profile?';
-$lang['station_location_confirm_del_stationlocation'] = 'Are you sure you want delete station profile ';
-$lang['station_location_confirm_del_stationlocation_qso'] = 'This will delete all QSOs within this station profile?';
-$lang['station_location_dxcc'] = 'Station DXCC';
-$lang['station_location_dxcc_hint'] = 'Station DXCC entity. For example: Scotland';
-$lang['station_location_dxcc_warning'] = "Stop here for a Moment. Your chosen DXCC is outdated and not valid anymore. Check which DXCC for this particular location is the correct one. If you are sure, ignore this warning.";
-$lang['station_location_city'] = 'Station City';
-$lang['station_location_city_hint'] = 'Station city. For example: Inverness';
-$lang['station_location_state'] = 'Station State';
-$lang['station_location_state_hint'] = 'Station state. Applies to certain countries only. Leave blank if not applicable.';
-$lang['station_location_county'] = 'Station County';
-$lang['station_location_county_hint'] = 'Station County (Only used for USA/Alaska/Hawaii).';
+$lang['station_location'] = 'Lokalizacja stacji';
+$lang['station_location_plural'] = "Lokalizacje stacji";
+$lang['station_location_header_ln1'] = 'Lokalizacje stacji definiują lokalizacje operacyjne, takie jak Twoje QTH, QTH znajomego lub stacja przenośna.';
+$lang['station_location_header_ln2'] = 'Podobnie jak dzienniki pokładowe, profil stacji przechowuje zestaw QSO razem.';
+$lang['station_location_header_ln3'] = 'Tylko jedna stacja może być aktywna w danym momencie. W poniższej tabeli jest to pokazane za pomocą odznaki -Aktywna stacja-.';
+$lang['station_location_create_header'] = 'Utwórz lokalizację stacji';
+$lang['station_location_create'] = 'Utwórz lokalizację stacji';
+$lang['station_location_edit'] = 'Edytuj lokalizację stacji: ';
+$lang['station_location_updated_suff'] = 'Zaktualizowano.';
+$lang['station_location_warning'] = 'Uwaga: Musisz ustawić aktywną lokalizację stacji. Przejdź do Callsign->Station Location, aby wybrać jedną.';$lang['station_location_reassign_at'] = 'Przypisz je ponownie w ';
+$lang['station_location_warning_reassign'] = 'Ze względu na ostatnie zmiany w Cloudlog musisz ponownie przypisać QSO do swoich profili stacji.';
+$lang['station_location_name'] = 'Nazwa profilu';
+$lang['station_location_name_hint'] = 'Skrócona nazwa lokalizacji stacji. Na przykład: Home (IO87IP)';
+$lang['station_location_callsign'] = 'Znak wywoławczy stacji';
+$lang['station_location_callsign_hint'] = 'Znak wywoławczy stacji. Na przykład: 2M0SQL/P';
+$lang['station_location_power'] = 'Moc stacji (W)';
+$lang['station_location_power_hint'] = 'Domyślna moc stacji w watach. Nadpisane przez CAT.';
+$lang['station_location_emptylog'] = 'Pusty dziennik';
+$lang['station_location_confirm_active'] = 'Czy na pewno chcesz ustawić następującą stację jako aktywną: ';
+$lang['station_location_set_active'] = 'Ustaw jako aktywną';
+$lang['station_location_active'] = 'Aktywna stacja';
+$lang['station_location_claim_ownership'] = 'Zgłoś własność';
+$lang['station_location_confirm_del_qso'] = 'Czy na pewno chcesz usunąć wszystkie QSO w tym profilu stacji?';
+$lang['station_location_confirm_del_stationlocation'] = 'Czy na pewno chcesz usunąć profil stacji ';
+$lang['station_location_confirm_del_stationlocation_qso'] = 'Czy to spowoduje usunięcie wszystkich QSO w tym profilu stacji?';
+$lang['station_location_dxcc'] = 'Stacja DXCC';
+$lang['station_location_dxcc_hint'] = 'Jednostka stacji DXCC. Na przykład: Szkocja';
+$lang['station_location_dxcc_warning'] = "Zatrzymaj się na chwilę. Wybrany przez Ciebie DXCC jest nieaktualny i nieważny. Sprawdź, który DXCC dla tej konkretnej lokalizacji jest poprawny. Jeśli masz pewność, zignoruj to ostrzeżenie.";$lang['station_location_city'] = 'Miasto stacji';
+$lang['station_location_city_hint'] = 'Miasto stacji. Na przykład: Inverness';
+$lang['station_location_state'] = 'Stan stacji';
+$lang['station_location_state_hint'] = 'Stan stacji. Dotyczy tylko niektórych krajów. Pozostaw puste, jeśli nie dotyczy.';
+$lang['station_location_county'] = 'Hrabstwo stacji';
+$lang['station_location_county_hint'] = 'Hrabstwo stacji (używane tylko dla USA/Alaski/Hawajów).';
$lang['station_location_gridsquare'] = 'Station Gridsquare';
-$lang['station_location_gridsquare_hint_ln1'] = "Station gridsquare. For example: IO87IP. If you don't know your grid square then click here!";
-$lang['station_location_gridsquare_hint_ln2'] = "If you are located on a grid line, enter multiple grid squares separated with commas. For example: IO77,IO78,IO87,IO88.";
-$lang['station_location_iota_hint_ln1'] = "Station IOTA reference. For example: EU-005";
-$lang['station_location_iota_hint_ln2'] = "You can look up IOTA references at the IOTA World website.";
-$lang['station_location_sota_hint_ln1'] = "Station SOTA reference. You can look up SOTA references at the SOTA Maps website.";
-$lang['station_location_wwff_hint_ln1'] = "Station WWFF reference. You can look up WWFF references at the GMA Map website.";
-$lang['station_location_pota_hint_ln1'] = "Station POTA reference. You can look up POTA references at the POTA Map website.";
-$lang['station_location_signature'] = "Signature";
-$lang['station_location_signature_name'] = "Signature Name";
-$lang['station_location_signature_name_hint'] = "Station Signature (e.g. GMA)..";
-$lang['station_location_signature_info'] = "Signature Information";
-$lang['station_location_signature_info_hint'] = "Station Signature Info (e.g. DA/NW-357).";
-$lang['station_location_eqsl_hint'] = 'The QTH Nickname which is configured in your eQSL Profile';
-$lang['station_location_eqsl_defaultqslmsg'] = "Default QSLMSG";
-$lang['station_location_eqsl_defaultqslmsg_hint'] = "Define a default message that will be populated and sent for each QSO for this station location.";
-$lang['station_location_qrz_subscription'] = 'Subscription Required';
-$lang['station_location_qrz_hint'] = "Find your API key on the QRZ.com Logbook settings page";
-$lang['station_location_qrz_realtime_upload'] = 'QRZ.com Logbook Realtime Upload';
-$lang['station_location_hrdlog_username'] = "HRDLog.net Username";
-$lang['station_location_hrdlog_username_hint'] = "The username you are registered with at HRDlog.net (usually your callsign).";
-$lang['station_location_hrdlog_code'] = "HRDLog.net API Key";
-$lang['station_location_hrdlog_realtime_upload'] = "HRDLog.net Logbook Realtime Upload";
-$lang['station_location_hrdlog_code_hint'] = "Create your API Code on HRDLog.net Userprofile page";
-$lang['station_location_qo100_hint'] = "Create your API key on your QO-100 Dx Club's profile page";
-$lang['station_location_qo100_realtime_upload'] = "QO-100 Dx Club Realtime Upload";
-$lang['station_location_oqrs_enabled'] = "OQRS Enabled";
-$lang['station_location_oqrs_email_alert'] = "OQRS Email alert";
-$lang['station_location_oqrs_email_hint'] = "Make sure email is set up under admin and global options.";
-$lang['station_location_oqrs_text'] = "OQRS Text";
-$lang['station_location_oqrs_text_hint'] = "Some info you want to add regarding QSL'ing.";
-$lang['station_location_clublog_realtime_upload']='ClubLog Realtime Upload';
+$lang['station_location_gridsquare_hint_ln1'] = "Siatka stacji. Na przykład: IO87IP. Jeśli nie znasz swojego kwadratu siatki, kliknij tutaj!";
+$lang['station_location_gridsquare_hint_ln2'] = "Jeśli znajdujesz się na linii siatki, wprowadź wiele kwadratów siatki oddzielonych przecinkami. Na przykład: IO77,IO78,IO87,IO88.";
+$lang['station_location_iota_hint_ln1'] = "Odniesienie do stacji IOTA. Na przykład: EU-005";
+$lang['station_location_iota_hint_ln2'] = "Możesz sprawdzić odniesienia IOTA na stronie IOTA World.";
+$lang['station_location_sota_hint_ln1'] = "Odniesienia do SOTA stacji. Możesz sprawdzić odniesienia SOTA na stronie SOTA Maps.";
+$lang['station_location_wwff_hint_ln1'] = "Odniesienie do stacji WWFF. Odniesienia do WWFF można sprawdzić na stronie GMA Map.";
+$lang['station_location_pota_hint_ln1'] = "Odniesienie do stacji POTA. Odniesienia do POTA można sprawdzić na stronie POTA Map.";
+$lang['station_location_signature'] = "Podpis";
+$lang['station_location_signature_name'] = "Nazwa podpisu";
+$lang['station_location_signature_name_hint'] = "Podpis stacji (np. GMA).";
+$lang['station_location_signature_info'] = "Informacje o podpisie";
+$lang['station_location_signature_info_hint'] = "Informacje o podpisie stacji (np. DA/NW-357).";
+$lang['station_location_eqsl_hint'] = 'Pseudonim QTH skonfigurowany w profilu eQSL';
+$lang['station_location_eqsl_defaultqslmsg'] = "Domyślny QSLMSG";
+$lang['station_location_eqsl_defaultqslmsg_hint'] = "Zdefiniuj domyślną wiadomość, która zostanie wypełniona i wysłana dla każdego QSO dla tej lokalizacji stacji.";
+$lang['station_location_qrz_subscription'] = 'Wymagana subskrypcja';
+$lang['station_location_qrz_hint'] = "Znajdź swój klucz API na stronie ustawień dziennika QRZ.com";
+$lang['station_location_qrz_realtime_upload'] = 'Przesyłanie dziennika QRZ.com w czasie rzeczywistym';
+$lang['station_location_hrdlog_username'] = "Nazwa użytkownika HRDLog.net";
+$lang['station_location_hrdlog_username_hint'] = "Nazwa użytkownika, pod którą jesteś zarejestrowany w HRDlog.net (zwykle jest to Twój znak wywoławczy).";
+$lang['station_location_hrdlog_code'] = "Klucz API HRDLog.net";
+$lang['station_location_hrdlog_realtime_upload'] = "Przesyłanie dziennika HRDLog.net w czasie rzeczywistym";
+$lang['station_location_hrdlog_code_hint'] = "Utwórz swój kod API na stronie profilu użytkownika HRDLog.net";
+$lang['station_location_qo100_hint'] = "Utwórz swój klucz API na stronie profilu QO-100 Dx Club";
+$lang['station_location_qo100_realtime_upload'] = "Przesyłanie danych w czasie rzeczywistym QO-100 Dx Club";
+$lang['station_location_oqrs_enabled'] = "Włączono OQRS";
+$lang['station_location_oqrs_email_alert'] = "Alert e-mail OQRS";
+$lang['station_location_oqrs_email_hint'] = "Upewnij się, że e-mail jest skonfigurowany w opcjach administratora i globalnych.";
+$lang['station_location_oqrs_text'] = "Tekst OQRS";
+$lang['station_location_oqrs_text_hint'] = "Kilka informacji, które chcesz dodać odnośnie QSL'ing.";
+$lang['station_location_clublog_realtime_upload']='Przesyłanie w czasie rzeczywistym ClubLog';
diff --git a/application/language/polish/statistics_lang.php b/application/language/polish/statistics_lang.php
index 3cb9c280..2f719928 100644
--- a/application/language/polish/statistics_lang.php
+++ b/application/language/polish/statistics_lang.php
@@ -1,74 +1,78 @@
Your furthest contact was with";
-$lang['statistics_distances_part2_contacts_were_plotted_furthest'] = "in gridsquare";
-$lang['statistics_distances_part3_contacts_were_plotted_furthest'] = "The distance was";
-$lang['statistics_distances_part4_contacts_were_plotted_furthest'] = "The average distance is";
-$lang['statistics_distances_number_of_qsos'] = "Number of QSOs";
-$lang['statistics_distances_callsigns_worked'] = "Callsign(s) worked (max 5 shown)";
-$lang['statistics_distances_qsos_with'] = "QSOs with distance : ";
-$lang['statistics_distances_and_band'] = ", band : ";
-$lang['statistics_distances_and_mode'] = ", mode : ";
-$lang['statistics_distances_and_power'] = ", power : ";
-$lang['statistics_distances_and_propagation'] = ", propagation : ";
-$lang['statistics_distances_no_qsos_to_plot'] = "No QSOs found to plot.";
+$lang['statistics_distances_bands_all'] = "Wszystkie";
+$lang['statistics_distances_modes_all'] = "Wszystkie";
+$lang['statistics_distances_worked'] = "Przepracowane odległości";
+$lang['statistics_distances_part1_contacts_were_plotted_furthest'] = "Kontakty zostały naniesione.
Twój najdalszy kontakt był z";
+$lang['statistics_distances_part2_contacts_were_plotted_furthest'] = "w siatce kwadratowej";
+$lang['statistics_distances_part3_contacts_were_plotted_furthest'] = "Odległość wynosiła";
+$lang['statistics_distances_part4_contacts_were_plotted_furthest'] = "Średnia odległość wynosi";
+$lang['statistics_distances_number_of_qsos'] = "Liczba QSO";
+$lang['statistics_distances_callsigns_worked'] = "Znak(i) wywoławczy(e) uzyskany(e) (pokazano maks. 5)";
+$lang['statistics_distances_qsos_with'] = "QSO z odległością: ";
+$lang['statistics_distances_and_band'] = ", pasmo : ";
+$lang['statistics_distances_and_mode'] = ", tryb : ";
+$lang['statistics_distances_and_power'] = ", moc : ";
+$lang['statistics_distances_and_propagation'] = ", propagacja : ";
+$lang['statistics_distances_no_qsos_to_plot'] = "Nie znaleziono QSO do naniesienia.";
/*
*
-* Timeline
+* Oś czasu
*
*/
-$lang['statistics_timeline'] = "Timeline";
+$lang['statistics_timeline'] = "Oś czasu";
/*
*
-* Days with QSO
+* Dni z QSO
*
*/
-$lang['statistics_tab_yearly'] = "Yearly";
-$lang['statistics_tab_streaks'] = "Streaks";
-$lang['statistics_tab_weekdays'] = "Days of the week";
-$lang['statistics_tab_daily'] = "Daily";
-$lang['statistics_days_yearly'] = "Number of days with QSOs each year";
-$lang['statistics_days_with_qso'] = "Days with QSOs";
-$lang['statistics_qsos_each_day'] = "Number of QSOs each day";
-$lang['statistics_weekdays_with_qso'] = "QSOs breakdown by day of the week";
-$lang['statistics_number_of_qsos_this_day'] = "Number of QSOs this day";
-$lang['statistics_number_of_qsos_this_weekday'] = "Number of QSOs for this day of the week";
-$lang['statistics_dwq_longest_streak_in_log'] = "Longest streak with QSOs in the log";
-$lang['statistics_dwq_longest_streak_in_log_hint'] = "A maximum of the 10 longest streaks are shown!";
-$lang['statistics_dwq_streak_continuous_days'] = "Streak (continuous days with QSOs)";
-$lang['statistics_dwq_current_streak_in_log'] = "Current streak with QSOs in the log";
-$lang['statistics_dwq_current_streak_continuous_days'] = "Current streak (continuous days with QSOs)";
-$lang['statistics_dwq_make_qso_to_extend_streak'] = "If you make a QSO today, you can continue to extend your streak... or else your current streak will be broken!";
-$lang['statistics_dwq_no_current_streak'] = "No current streak found!";
+$lang['statistics_tab_yearly'] = "Rocznie";
+$lang['statistics_tab_streaks'] = "Seria";
+$lang['statistics_tab_weekdays'] = "Dni tygodnia";
+$lang['statistics_tab_daily'] = "Codziennie";
+$lang['statistics_days_yearly'] = "Liczba dni z QSO w każdym roku";
+$lang['statistics_days_with_qso'] = "Dni z QSO";
+$lang['statistics_qsos_each_day'] = "Liczba QSO każdego dnia";
+$lang['statistics_weekdays_with_qso'] = "Podział QSO według dnia tygodnia";
+$lang['statistics_number_of_qsos_this_day'] = "Liczba QSO tego dnia";
+$lang['statistics_number_of_qsos_this_weekday'] = "Liczba QSO dla tego dnia tygodnia";
+$lang['statistics_dwq_longest_streak_in_log'] = "Najdłuższa seria QSO w logu";
+$lang['statistics_dwq_longest_streak_in_log_hint'] = "Pokazano maksymalnie 10 najdłuższych serii!";
+$lang['statistics_dwq_streak_continuous_days'] = "Seria (ciągłe dni z QSO)";
+$lang['statistics_dwq_current_streak_in_log'] = "Bieżąca seria QSO w logu";
+$lang['statistics_dwq_current_streak_continuous_days'] = "Bieżąca seria (ciągłe dni z QSO)";
+$lang['statistics_dwq_make_qso_to_extend_streak'] = "Jeśli dzisiaj przeprowadzisz QSO, możesz kontynuować przedłużanie swojej serii... w przeciwnym razie Twoja bieżąca seria zostanie przerwana!";
+$lang['statistics_dwq_no_current_streak'] = "Nie znaleziono bieżącej serii!";
diff --git a/application/migrations/196_tag_2_6_18.php b/application/migrations/196_tag_2_6_18.php
new file mode 100644
index 00000000..031dd8ec
--- /dev/null
+++ b/application/migrations/196_tag_2_6_18.php
@@ -0,0 +1,30 @@
+db->where('option_name', 'version');
+ $this->db->update('options', array('option_value' => '2.6.18'));
+
+ // Trigger Version Info Dialog
+ $this->db->where('option_type', 'version_dialog');
+ $this->db->where('option_name', 'confirmed');
+ $this->db->update('user_options', array('option_value' => 'false'));
+
+ }
+
+ public function down()
+ {
+ $this->db->where('option_name', 'version');
+ $this->db->update('options', array('option_value' => '2.6.17'));
+ }
+}
\ No newline at end of file
diff --git a/application/models/Logbook_model.php b/application/models/Logbook_model.php
index e3ea4a3b..49a7d9ce 100755
--- a/application/models/Logbook_model.php
+++ b/application/models/Logbook_model.php
@@ -4244,6 +4244,7 @@ class Logbook_model extends CI_Model
# try: $a looks like a call (.\d[A-Z]) and $b doesn't (.\d), they are
# swapped. This still does not properly handle calls like DJ1YFK/KH7K where
# only the OP's experience says that it's DJ1YFK on KH7K.
+
if (!$c && $a && $b) { # $a and $b exist, no $c
if (preg_match($lidadditions, $b)) { # check if $b is a lid-addition
$b = $a;
@@ -4864,10 +4865,91 @@ class Logbook_model extends CI_Model
return $row->oldest_qso_date;
}
}
+
+ /**
+ * Processes a batch of QRZ ADIF records for efficient database updates.
+ *
+ * @param array $batch_data Array of records from the ADIF file.
+ * @return string HTML table rows for the processed batch.
+ */
+ public function process_qrz_batch($batch_data) {
+ $table = "";
+ $update_batch_data = [];
+ $this->load->model('Stations');
+
+ if (empty($batch_data)) {
+ return '';
+ }
+
+ // Step 1: Build WHERE clause for fetching potential matches
+ $this->db->select($this->config->item('table_name').'.COL_PRIMARY_KEY, '.$this->config->item('table_name').'.COL_CALL, '.$this->config->item('table_name').'.COL_TIME_ON, '.$this->config->item('table_name').'.COL_BAND, '.$this->config->item('table_name').'.COL_MODE, ');
+ $this->db->from($this->config->item('table_name'));
+ $this->db->group_start(); // Start grouping OR conditions
+ foreach ($batch_data as $record) {
+ $this->db->or_group_start(); // Start group for this record's AND conditions
+ $this->db->where($this->config->item('table_name').'.COL_CALL', $record['call']);
+ $this->db->where($this->config->item('table_name').'.COL_TIME_ON', $record['time_on']);
+ $this->db->where($this->config->item('table_name').'.COL_BAND', $record['band']);
+ $this->db->group_end(); // End group for this record's AND conditions
+ }
+ $this->db->group_end(); // End grouping OR conditions
+
+ // Step 2: Fetch Matches
+ $query = $this->db->get();
+ $db_results = $query->result_array();
+
+ // Index DB results for faster lookup
+ $indexed_results = [];
+ foreach ($db_results as $row) {
+ $key = $row['COL_CALL'] . '|' . $row['COL_TIME_ON'] . '|' . $row['COL_BAND'];
+ $indexed_results[$key] = $row['COL_PRIMARY_KEY'];
+ }
+
+ // Step 3 & 4: Prepare Batch Update and Build Table Rows
+ foreach ($batch_data as $record) {
+ $match_key = $record['call'] . '|' . $record['time_on'] . '|' . $record['band'];
+ $log_status = 'Not Found';
+ $primary_key = null;
+
+ if (isset($indexed_results[$match_key])) {
+ $primary_key = $indexed_results[$match_key];
+ $log_status = 'Confirmed';
+
+ // Prepare data for batch update
+ $update_batch_data[] = [
+ 'COL_PRIMARY_KEY' => $primary_key,
+ 'COL_QRZCOM_QSO_DOWNLOAD_DATE' => $record['qsl_date'],
+ 'COL_QRZCOM_QSO_UPLOAD_STATUS' => $record['qsl_rcvd'] // Should be 'Y' if confirmed
+ ];
+ }
+
+ // Build table row
+ $table .= "";
+ $table .= "| " . $record['station_callsign'] . " | ";
+ $table .= "" . $record['time_on'] . " | ";
+ $table .= "" . $record['call'] . " | ";
+ $table .= "" . $record['mode'] . " | ";
+ $table .= "" . $record['qsl_date'] . " | ";
+ $table .= "" . ($record['qsl_rcvd'] == 'Y' ? 'Yes' : 'No') . " | ";
+ $table .= "
";
+ }
+
+ // Step 5: Execute Batch Update
+ if (!empty($update_batch_data)) {
+ $this->db->update_batch($this->config->item('table_name'), $update_batch_data, 'COL_PRIMARY_KEY');
+ }
+
+ // Step 6: Return Table HTML
+ return $table;
+ }
}
+// Function to validate ADIF date format
+// This function checks if the date is in the correct format (YYYYMMDD) and is a valid date.
+// It uses the DateTime class to create a date object from the given date string and format. If the date is valid, it returns true; otherwise, it returns false.
+// The function also allows specifying a different format if needed, defaulting to 'Ymd' (YYYYMMDD).
function validateADIFDate($date, $format = 'Ymd')
{
$d = DateTime::createFromFormat($format, $date);
return $d && $d->format($format) == $date;
-}
+}
\ No newline at end of file
diff --git a/application/views/contesting/index.php b/application/views/contesting/index.php
index e1e3cc5f..1ca451bd 100644
--- a/application/views/contesting/index.php
+++ b/application/views/contesting/index.php
@@ -102,7 +102,7 @@
';
+ } else {
+ echo 'Nothing found!
';
+ }
+ ?>
- }
- else {
- echo 'Nothing found!
';
- }
- ?>
+
+
-
-
+
+
-