diff --git a/application/config/autoload.php b/application/config/autoload.php index 4b04f39e3..3b47ec9d3 100644 --- a/application/config/autoload.php +++ b/application/config/autoload.php @@ -64,7 +64,7 @@ $autoload['libraries'] = array('database', 'session', 'curl', 'OptionsLib', 'Fre | $autoload['helper'] = array('url', 'file'); */ -$autoload['helper'] = array('url', 'security'); +$autoload['helper'] = array('url', 'security', 'language'); /* @@ -96,8 +96,17 @@ $autoload['config'] = array('cloudlog', 'bands', 'lotw'); | */ -$autoload['language'] = array('general_words'); - +$autoload['language'] = array( + 'account', + 'contesting', + 'eqsl', + 'general_words', + 'lotw', + 'menu', + 'notes', + 'qslcard', + 'qso', + ); /* | ------------------------------------------------------------------- diff --git a/application/config/migration.php b/application/config/migration.php index 36e3840a4..c4ac89623 100644 --- a/application/config/migration.php +++ b/application/config/migration.php @@ -21,7 +21,7 @@ $config['migration_enabled'] = TRUE; | be upgraded / downgraded to. | */ -$config['migration_version'] = 121; +$config['migration_version'] = 123; /* |-------------------------------------------------------------------------- diff --git a/application/controllers/Activated_grids.php b/application/controllers/Activated_grids.php index 2bbbaf844..3800fe207 100644 --- a/application/controllers/Activated_grids.php +++ b/application/controllers/Activated_grids.php @@ -1,9 +1,9 @@ lang->load(array( + 'gridsquares', + )); + } public function index() { @@ -77,21 +86,19 @@ class Activated_grids extends CI_Controller { if ($this->config->item('map_6digit_grids')) { $grid_six = strtoupper(substr($subsquare,0,6)); } - + // Check if 2 Char is in array - if(!in_array($grid_two, $array_grid_2char)){ - array_push($array_grid_2char, $grid_two); + if(!in_array($grid_two, $array_confirmed_grid_2char)){ + array_push($array_confirmed_grid_2char, $grid_two); } - - - if(!in_array($grid_four, $array_grid_4char)){ - array_push($array_grid_4char, $grid_four); + + if(!in_array($grid_four, $array_confirmed_grid_4char)){ + array_push($array_confirmed_grid_4char, $grid_four); } - - + if ($this->config->item('map_6digit_grids')) { - if(!in_array($grid_six, $array_grid_6char)){ - array_push($array_grid_6char, $grid_six); + if(!in_array($grid_six, $array_confirmed_grid_6char)){ + array_push($array_confirmed_grid_6char, $grid_six); } } } @@ -103,21 +110,19 @@ class Activated_grids extends CI_Controller { if ($this->config->item('map_6digit_grids')) { $grid_6char_confirmed = strtoupper(substr($row->SAT_SQUARE,0,6)); } - + // Check if 2 Char is in array if(!in_array($grid_2char_confirmed, $array_confirmed_grid_2char)){ - array_push($array_confirmed_grid_2char, $grid_2char_confirmed); + array_push($array_confirmed_grid_2char, $grid_2char_confirmed); } - - + if(!in_array($grid_4char_confirmed, $array_confirmed_grid_4char)){ - array_push($array_confirmed_grid_4char, $grid_4char_confirmed); + array_push($array_confirmed_grid_4char, $grid_4char_confirmed); } - - + if ($this->config->item('map_6digit_grids')) { if(!in_array($grid_6char_confirmed, $array_confirmed_grid_6char)){ - array_push($array_confirmed_grid_6char, $grid_6char_confirmed); + array_push($array_confirmed_grid_6char, $grid_6char_confirmed); } } @@ -144,21 +149,19 @@ class Activated_grids extends CI_Controller { if ($this->config->item('map_6digit_grids')) { $grid_six = strtoupper(substr($subsquare,0,6)); } - + // Check if 2 Char is in array if(!in_array($grid_two, $array_grid_2char)){ - array_push($array_grid_2char, $grid_two); + array_push($array_grid_2char, $grid_two); } - - + if(!in_array($grid_four, $array_grid_4char)){ - array_push($array_grid_4char, $grid_four); + array_push($array_grid_4char, $grid_four); } - - + if ($this->config->item('map_6digit_grids')) { if(!in_array($grid_six, $array_grid_6char)){ - array_push($array_grid_6char, $grid_six); + array_push($array_grid_6char, $grid_six); } } } @@ -170,21 +173,19 @@ class Activated_grids extends CI_Controller { if ($this->config->item('map_6digit_grids')) { $grid_six = strtoupper(substr($row->SAT_SQUARE,0,6)); } - + // Check if 2 Char is in array if(!in_array($grid_two, $array_grid_2char)){ - array_push($array_grid_2char, $grid_two); + array_push($array_grid_2char, $grid_two); } - - + if(!in_array($grid_four, $array_grid_4char)){ - array_push($array_grid_4char, $grid_four); + array_push($array_grid_4char, $grid_four); } - - + if ($this->config->item('map_6digit_grids')) { if(!in_array($grid_six, $array_grid_6char)){ - array_push($array_grid_6char, $grid_six); + array_push($array_grid_6char, $grid_six); } } @@ -205,7 +206,6 @@ class Activated_grids extends CI_Controller { return '[' . implode(',', $temp) . ']'; } - $data['grid_2char_confirmed'] = js_array($array_confirmed_grid_2char); $data['grid_4char_confirmed'] = js_array($array_confirmed_grid_4char); $data['grid_6char_confirmed'] = js_array($array_confirmed_grid_6char); @@ -219,7 +219,6 @@ class Activated_grids extends CI_Controller { $this->load->view('activated_grids/index.php'); $this->load->view('interface_assets/footer'); } - public function band($band) { @@ -257,16 +256,16 @@ class Activated_grids extends CI_Controller { // Check if 2 Char is in array if(!in_array($grid_2char_confirmed, $array_grid_2char_confirmed)){ - array_push($array_grid_2char_confirmed, $grid_2char_confirmed); + array_push($array_grid_2char_confirmed, $grid_2char_confirmed); } if(!in_array($grid_4char_confirmed, $array_grid_4char_confirmed)){ - array_push($array_grid_4char_confirmed, $grid_4char_confirmed); + array_push($array_grid_4char_confirmed, $grid_4char_confirmed); } if ($this->config->item('map_6digit_grids')) { if(!in_array($grid_6char_confirmed, $array_grid_6char_confirmed)){ - array_push($array_grid_6char_confirmed, $grid_6char_confirmed); + array_push($array_grid_6char_confirmed, $grid_6char_confirmed); } } } @@ -287,18 +286,18 @@ class Activated_grids extends CI_Controller { // Check if 2 Char is in array if(!in_array($grid_two, $array_grid_2char)){ - array_push($array_grid_2char, $grid_two); + array_push($array_grid_2char, $grid_two); } if(!in_array($grid_four, $array_grid_4char)){ - array_push($array_grid_4char, $grid_four); + array_push($array_grid_4char, $grid_four); } if ($this->config->item('map_6digit_grids')) { if(!in_array($grid_six, $array_grid_6char)){ - array_push($array_grid_6char, $grid_six); + array_push($array_grid_6char, $grid_six); } } diff --git a/application/controllers/Dashboard.php b/application/controllers/Dashboard.php index 8a4973436..afc0132d7 100644 --- a/application/controllers/Dashboard.php +++ b/application/controllers/Dashboard.php @@ -114,6 +114,13 @@ class Dashboard extends CI_Controller { } + function radio_display_component() { + $this->load->model('cat'); + + $data['radio_status'] = $this->cat->recent_status(); + $this->load->view('components/radio_display_table', $data); + } + function map() { $this->load->model('logbook_model'); diff --git a/application/controllers/Eqsl.php b/application/controllers/Eqsl.php index 2268d5535..05d70fbf9 100644 --- a/application/controllers/Eqsl.php +++ b/application/controllers/Eqsl.php @@ -8,6 +8,23 @@ class eqsl extends CI_Controller { $this->load->helper(array('form', 'url')); } + // Default view when loading controller. + public function index() { + + $this->lang->load('qslcard'); + $folder_name = "assets/qslcard"; + $data['storage_used'] = $this->sizeFormat($this->folderSize($folder_name)); + + // Render Page + $data['page_title'] = "eQSL Cards"; + + $this->load->model('eqsl_images'); + $data['qslarray'] = $this->eqsl_images->eqsl_qso_list(); + + $this->load->view('interface_assets/header', $data); + $this->load->view('eqslcard/index'); + $this->load->view('interface_assets/footer'); + } public function import() { $this->load->model('user_model'); if(!$this->user_model->authorize(2)) { $this->session->set_flashdata('notice', 'You\'re not allowed to do that!'); redirect('dashboard'); } @@ -165,16 +182,16 @@ class eqsl extends CI_Controller { $status = ""; // begin script - $ch = curl_init(); + $ch = curl_init(); // basic curl options for all requests - curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); + curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); curl_setopt($ch, CURLOPT_HEADER, 1); // use the URL we built curl_setopt($ch, CURLOPT_URL, $adif); - $result = curl_exec($ch); + $result = curl_exec($ch); $chi = curl_getinfo($ch); curl_close($ch); @@ -490,8 +507,8 @@ class eqsl extends CI_Controller { $image_url = $this->electronicqsl->card_image($username, urlencode($password), $callsign, $band, $mode, $year, $month, $day, $hour, $minute); $file = file_get_contents($image_url, true); - $dom = new domDocument; - $dom->loadHTML($file); + $dom = new domDocument; + $dom->loadHTML($file); $dom->preserveWhiteSpace = false; $images = $dom->getElementsByTagName('img'); @@ -500,7 +517,7 @@ class eqsl extends CI_Controller { exit; } - foreach ($images as $image) + foreach ($images as $image) { header('Content-Type: image/jpg'); $content = file_get_contents("https://www.eqsl.cc".$image->getAttribute('src')); @@ -522,6 +539,63 @@ class eqsl extends CI_Controller { } + function bulk_download_image($id) { + $this->load->library('electronicqsl'); + $this->load->model('Eqsl_images'); + + $this->load->model('logbook_model'); + $this->load->model('user_model'); + $qso_query = $this->logbook_model->get_qso($id); + $qso = $qso_query->row(); + $qso_timestamp = strtotime($qso->COL_TIME_ON); + $callsign = $qso->COL_CALL; + $band = $qso->COL_BAND; + $mode = $qso->COL_MODE; + $year = date('Y', $qso_timestamp); + $month = date('m', $qso_timestamp); + $day = date('d', $qso_timestamp); + $hour = date('H', $qso_timestamp); + $minute = date('i', $qso_timestamp); + + $query = $this->user_model->get_by_id($this->session->userdata('user_id')); + $q = $query->row(); + $username = $q->user_eqsl_name; + $password = $q->user_eqsl_password; + $error = ''; + + $image_url = $this->electronicqsl->card_image($username, urlencode($password), $callsign, $band, $mode, $year, $month, $day, $hour, $minute); + $file = file_get_contents($image_url, true); + if (strpos($file, 'Error') !== false) { + $error = rtrim(preg_replace('/^\s*Error: /', '', $file)); + return $error; + } + + $dom = new domDocument; + $dom->loadHTML($file); + $dom->preserveWhiteSpace = false; + $images = $dom->getElementsByTagName('img'); + + if(!isset($images) || count($images) == 0) { + $error = "Rate Limited"; + return $error; + } + + foreach ($images as $image) + { + $content = file_get_contents("https://www.eqsl.cc".$image->getAttribute('src')); + if ($content === false) { + $error = "No response"; + return $error; + } + $filename = uniqid().'.jpg'; + if (file_put_contents('images/eqsl_card_images/' . '/'.$filename, $content) !== false) { + $this->Eqsl_images->save_image($id, $filename); + } + } + return $error; + + } + public function tools() { // Check logged in $this->load->model('user_model'); @@ -535,6 +609,61 @@ class eqsl extends CI_Controller { $this->load->view('interface_assets/footer'); } + public function download() { + // Check logged in + $this->load->model('user_model'); + if(!$this->user_model->authorize(2)) { $this->session->set_flashdata('notice', 'You\'re not allowed to do that!'); redirect('dashboard'); } + + if ($this->input->post('eqsldownload') == 'download') { + $i = 0; + $this->load->model('eqslmethods_model'); + $qslsnotdownloaded = $this->eqslmethods_model->eqsl_not_yet_downloaded(); + $eqsl_results = array(); + foreach ($qslsnotdownloaded->result_array() as $qsl) { + $result = $this->bulk_download_image($qsl['COL_PRIMARY_KEY']); + if ($result != '') { + $errors++; + if ($result == 'Rate Limited') { + break; + } else { + $eqsl_results[] = array( + 'date' => $qsl['COL_TIME_ON'], + 'call' => $qsl['COL_CALL'], + 'mode' => $qsl['COL_MODE'], + 'submode' => $qsl['COL_SUBMODE'], + 'status' => $result, + 'qsoid' => $qsl['COL_PRIMARY_KEY'] + ); + continue; + } + } else { + $i++; + } + if ($i > 0) { + sleep(15); + } + } + $data['eqsl_results'] = $eqsl_results; + $data['eqsl_stats'] = "Successfully downloaded: ".$i." / Errors: ".count($eqsl_results); + $data['page_title'] = "eQSL Download Information"; + + $this->load->view('interface_assets/header', $data); + $this->load->view('eqsl/result'); + $this->load->view('interface_assets/footer'); + } else { + + $data['page_title'] = "eQSL Card Image Download"; + $this->load->model('eqslmethods_model'); + + $data['custom_date_format'] = $this->session->userdata('user_date_format'); + $data['qslsnotdownloaded'] = $this->eqslmethods_model->eqsl_not_yet_downloaded(); + + $this->load->view('interface_assets/header', $data); + $this->load->view('eqsl/download'); + $this->load->view('interface_assets/footer'); + } + } + public function mark_all_sent() { // Check logged in $this->load->model('user_model'); @@ -599,5 +728,49 @@ class eqsl extends CI_Controller { $status = $this->uploadQso($adif, $qsl); } } - + +// Functions for storage, these need shifted to a libary to use across Cloudlog + function folderSize($dir){ + $count_size = 0; + $count = 0; + $dir_array = scandir($dir); + foreach($dir_array as $key=>$filename){ + if($filename!=".." && $filename!="."){ + if(is_dir($dir."/".$filename)){ + $new_foldersize = foldersize($dir."/".$filename); + $count_size = $count_size+ $new_foldersize; + }else if(is_file($dir."/".$filename)){ + $count_size = $count_size + filesize($dir."/".$filename); + $count++; + } + } + } + return $count_size; + } + + function sizeFormat($bytes){ + $kb = 1024; + $mb = $kb * 1024; + $gb = $mb * 1024; + $tb = $gb * 1024; + + if (($bytes >= 0) && ($bytes < $kb)) { + return $bytes . ' B'; + + } elseif (($bytes >= $kb) && ($bytes < $mb)) { + return ceil($bytes / $kb) . ' KB'; + + } elseif (($bytes >= $mb) && ($bytes < $gb)) { + return ceil($bytes / $mb) . ' MB'; + + } elseif (($bytes >= $gb) && ($bytes < $tb)) { + return ceil($bytes / $gb) . ' GB'; + + } elseif ($bytes >= $tb) { + return ceil($bytes / $tb) . ' TB'; + } else { + return $bytes . ' B'; + } + } + } // end class diff --git a/application/controllers/Gridsquares.php b/application/controllers/Gridsquares.php index 3defd4baa..02e67a28c 100644 --- a/application/controllers/Gridsquares.php +++ b/application/controllers/Gridsquares.php @@ -14,6 +14,15 @@ class Gridsquares extends CI_Controller { * - Band page provide a band dropdown list * - Find somewhere in the main menu to add a button to it */ + function __construct() + { + parent::__construct(); + + // Load language files + $this->lang->load(array( + 'gridsquares', + )); + } public function index() { diff --git a/application/controllers/Kmlexport.php b/application/controllers/Kmlexport.php index b106900e8..711ebc688 100644 --- a/application/controllers/Kmlexport.php +++ b/application/controllers/Kmlexport.php @@ -90,17 +90,8 @@ class Kmlexport extends CI_Controller { $output .= ""; $output .= ""; - if (!file_exists('kml')) { - mkdir('kml', 0755, true); - } - - if ( ! write_file('kml/qsos.kml', $output)) { - echo 'Unable to write the file. Make sure the folder KML has write permissions.'; - } - else { - header("Content-Disposition: attachment; filename=\"qsos.kml\""); - echo $output; - } + header("Content-Disposition: attachment; filename=\"qsos.kml\""); + echo $output; } -} \ No newline at end of file +} diff --git a/application/controllers/Logbook.php b/application/controllers/Logbook.php index 74d6fe90e..66ae7b816 100644 --- a/application/controllers/Logbook.php +++ b/application/controllers/Logbook.php @@ -51,7 +51,7 @@ class Logbook extends CI_Controller { $data['results'] = $this->logbook_model->get_qsos($config['per_page'],$this->uri->segment(3)); if(!$data['results']) { - $this->session->set_flashdata('notice', $this->lang->line('error_no_logbook_found') . ' Station Logbooks'); + $this->session->set_flashdata('notice', lang('error_no_logbook_found') . ' Station Logbooks'); } // Calculate Lat/Lng from Locator to use on Maps @@ -540,16 +540,16 @@ class Logbook extends CI_Controller { } switch($this->session->userdata('user_previous_qsl_type')) { case 0: - $html .= "".$this->lang->line('gen_hamradio_qsl').""; + $html .= "".lang('gen_hamradio_qsl').""; break; case 1: - $html .= "".$this->lang->line('lotw_short').""; + $html .= "".lang('lotw_short').""; break; case 2: - $html .= "".$this->lang->line('eqsl_short').""; + $html .= "".lang('eqsl_short').""; break; default: - $html .= "".$this->lang->line('gen_hamradio_qsl').""; + $html .= "".lang('gen_hamradio_qsl').""; break; } $html .= ""; @@ -814,6 +814,42 @@ class Logbook extends CI_Controller { } + 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; } + + $CI =& get_instance(); + $CI->load->model('logbooks_model'); + $logbooks_locations_array = $CI->logbooks_model->list_logbook_relationships($this->session->userdata('active_station_logbook')); + + if (!$logbooks_locations_array) { + return null; + } + + $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 lotw_users on ' . $this->config->item('table_name') . '.col_call = lotw_users.callsign + where ' . $this->config->item('table_name') .'.station_id in ('. $location_list . ')'; + + if ($station_id != 'All') { + $sql .= ' and station_profile.station_id = ' . $station_id; + } + + $sql .= " and COL_LOTW_QSL_RCVD <> 'Y' and " . $this->config->item('table_name') . ".COL_TIME_ON < lotw_users.lastupload"; + + $query = $this->db->query($sql); + + $data['qsos'] = $query; + + $this->load->view('search/lotw_unconfirmed_result.php', $data); + + } + function search_incorrect_cq_zones($station_id) { $station_id = $this->security->xss_clean($station_id); diff --git a/application/controllers/Logbookadvanced.php b/application/controllers/Logbookadvanced.php index 6f0544790..19daff37a 100644 --- a/application/controllers/Logbookadvanced.php +++ b/application/controllers/Logbookadvanced.php @@ -49,11 +49,35 @@ class Logbookadvanced extends CI_Controller { $pageData['sats'] = $this->bands->get_worked_sats(); $pageData['bands'] = $this->bands->get_worked_bands(); - + + $CI =& get_instance(); + // Get Date format + if($CI->session->userdata('user_date_format')) { + // If Logged in and session exists + $pageData['custom_date_format'] = $CI->session->userdata('user_date_format'); + } else { + // Get Default date format from /config/cloudlog.php + $pageData['custom_date_format'] = $CI->config->item('qso_date_format'); + } + + switch ($pageData['custom_date_format']) { + case "d/m/y": $pageData['custom_date_format'] = 'DD/MM/YY'; break; + case "d/m/Y": $pageData['custom_date_format'] = 'DD/MM/YYYY'; break; + case "m/d/y": $pageData['custom_date_format'] = 'MM/DD/YY'; break; + case "m/d/Y": $pageData['custom_date_format'] = 'MM/DD/YYYY'; break; + case "d.m.Y": $pageData['custom_date_format'] = 'DD.MM.YYYY'; break; + case "y/m/d": $pageData['custom_date_format'] = 'YY/MM/DD'; break; + case "Y-m-d": $pageData['custom_date_format'] = 'YYYY-MM-DD'; break; + case "M d, Y": $pageData['custom_date_format'] = 'MMM DD, YYYY'; break; + case "M d, y": $pageData['custom_date_format'] = 'MMM DD, YY'; break; + default: $pageData['custom_date_format'] = 'DD/MM/YYYY'; + } + $footerData = []; $footerData['scripts'] = [ 'assets/js/moment.min.js', 'assets/js/tempusdominus-bootstrap-4.min.js', + 'assets/js/datetime-moment.js', 'assets/js/sections/logbookadvanced.js?' . filemtime(realpath(__DIR__ . "/../../assets/js/sections/logbookadvanced.js")) ]; diff --git a/application/controllers/Lotw.php b/application/controllers/Lotw.php index db40eb350..01cb8f7dd 100644 --- a/application/controllers/Lotw.php +++ b/application/controllers/Lotw.php @@ -156,7 +156,7 @@ class Lotw extends CI_Controller { } else { // Certificate is in the system time to update - $this->LotwCert->update_certificate($this->session->userdata('user_id'), $info['issued_callsign'], $info['dxcc-id'], $info['validFrom'], $info['validTo_Date'], $info['pem_key'], $info['general_cert']); + $this->LotwCert->update_certificate($this->session->userdata('user_id'), $info['issued_callsign'], $info['dxcc-id'], $info['validFrom'], $info['validTo_Date'], $info['qso-first-date'], $info['qso-end-date'], $info['pem_key'], $info['general_cert']); // Cert success flash message $this->session->set_flashdata('Success', $info['issued_callsign'].' Certificate Updated.'); @@ -941,6 +941,14 @@ class Lotw extends CI_Controller { 'UVSQ' => "UVSQ-SAT", 'CAS-3H' => "LILACSAT-2", 'IO-117' => "GREENCUBE", + "TEVEL1" => "TEVEL-1", + "TEVEL2" => "TEVEL-2", + "TEVEL3" => "TEVEL-3", + "TEVEL4" => "TEVEL-4", + "TEVEL5" => "TEVEL-5", + "TEVEL6" => "TEVEL-6", + "TEVEL7" => "TEVEL-7", + "TEVEL8" => "TEVEL-8", ); return array_search(strtoupper($satname),$arr,true); diff --git a/application/controllers/Options.php b/application/controllers/Options.php index 091c790c4..849f8d8ae 100644 --- a/application/controllers/Options.php +++ b/application/controllers/Options.php @@ -13,9 +13,18 @@ class Options extends CI_Controller { $this->load->model('user_model'); if(!$this->user_model->authorize(99)) { $this->session->set_flashdata('notice', 'You\'re not allowed to do that!'); redirect('dashboard'); } + + // Load language files + $this->lang->load(array( + 'options', + )); + + } + + // Default /options view just gives some text to explain the options area function index() { @@ -24,7 +33,7 @@ class Options extends CI_Controller { //echo $this->optionslib->get_option('theme'); - $data['page_title'] = "Cloudlog Options"; + $data['page_title'] = $this->lang->line('options_cloudlog_options'); $this->load->view('interface_assets/header', $data); $this->load->view('options/index'); @@ -38,8 +47,8 @@ class Options extends CI_Controller { $directory = 'application/language'; $data['language_options'] = array_diff(scandir($directory), array('..', '.')); - $data['page_title'] = "Cloudlog Options"; - $data['sub_heading'] = "Appearance"; + $data['page_title'] = $this->lang->line('options_cloudlog_options'); + $data['sub_heading'] = $this->lang->line('options_appearance'); $this->load->model('Themes_model'); @@ -57,8 +66,8 @@ class Options extends CI_Controller { $directory = 'application/language'; $data['language_options'] = array_diff(scandir($directory), array('..', '.')); - $data['page_title'] = "Cloudlog Options"; - $data['sub_heading'] = "Appearance"; + $data['page_title'] = $this->lang->line('options_cloudlog_options'); + $data['sub_heading'] = $this->lang->line('options_appearance'); $this->load->helper(array('form', 'url')); @@ -79,7 +88,7 @@ class Options extends CI_Controller { // If theme update is complete set a flashsession with a success note if($theme_update_status == TRUE) { - $this->session->set_flashdata('success', 'Theme changed to '.$this->input->post('theme')); + $this->session->set_flashdata('success', $this->lang->line('options_theme_changed_to').$this->input->post('theme')); } // Update theme choice within the options system @@ -87,7 +96,7 @@ class Options extends CI_Controller { // If theme update is complete set a flashsession with a success note if($search_update_status == TRUE) { - $this->session->set_flashdata('success', 'Global Search changed to '.$this->input->post('globalSearch')); + $this->session->set_flashdata('success', $this->lang->line('options_global_search_changed_to').$this->input->post('globalSearch')); } // Update dashboard banner within the options system @@ -95,7 +104,7 @@ class Options extends CI_Controller { // If dashboard banner update is complete set a flashsession with a success note if($dasboard_banner_update_status == TRUE) { - $this->session->set_flashdata('success', 'Dashboard banner changed to '.$this->input->post('dashboardBanner')); + $this->session->set_flashdata('success', $this->lang->line('options_dashboard_banner_changed_to').$this->input->post('dashboardBanner')); } // Update dashboard map within the options system @@ -103,7 +112,7 @@ class Options extends CI_Controller { // If dashboard map update is complete set a flashsession with a success note if($ldashboard_map_update_status == TRUE) { - $this->session->set_flashdata('success', 'Dashboard map changed to '.$this->input->post('dashboardMap')); + $this->session->set_flashdata('success', $this->lang->line('options_dashboard_map_changed_to').$this->input->post('dashboardMap')); } // Update logbook map within the options system @@ -111,7 +120,7 @@ class Options extends CI_Controller { // If logbook map update is complete set a flashsession with a success note if($logbook_map_update_status == TRUE) { - $this->session->set_flashdata('success', 'Logbook map changed to '.$this->input->post('logbookMap')); + $this->session->set_flashdata('success', $this->lang->line('options_logbook_map_changed_to').$this->input->post('logbookMap')); } // Update Lang choice within the options system @@ -130,8 +139,8 @@ class Options extends CI_Controller { // function used to display the /radio url function radio() { - $data['page_title'] = "Cloudlog Options"; - $data['sub_heading'] = "Radio Settings"; + $data['page_title'] = $this->lang->line('options_cloudlog_options'); + $data['sub_heading'] = $this->lang->line('options_radio_settings'); $this->load->view('interface_assets/header', $data); $this->load->view('options/radios'); @@ -143,8 +152,8 @@ class Options extends CI_Controller { // Get Language Options - $data['page_title'] = "Cloudlog Options"; - $data['sub_heading'] = "Radio Settings"; + $data['page_title'] = $this->lang->line('options_cloudlog_options'); + $data['sub_heading'] = $this->lang->line('options_radio_settings'); $this->load->helper(array('form', 'url')); @@ -165,7 +174,7 @@ class Options extends CI_Controller { // If theme update is complete set a flashsession with a success note if($radioTimeout_update == TRUE) { - $this->session->set_flashdata('success', 'Radio Timeout Warning changed to '.$this->input->post('radioTimeout').' seconds'); + $this->session->set_flashdata('success', $this->lang->line('options_radio_timeout_warning_changed_to').$this->input->post('radioTimeout').' seconds'); } // Redirect back to /appearance @@ -176,8 +185,8 @@ class Options extends CI_Controller { // function used to display the /appearance url function email() { - $data['page_title'] = "Cloudlog Options"; - $data['sub_heading'] = "Email"; + $data['page_title'] = $this->lang->line('options_cloudlog_options'); + $data['sub_heading'] = $this->lang->line('options_email'); $this->load->view('interface_assets/header', $data); $this->load->view('options/email'); @@ -189,8 +198,8 @@ class Options extends CI_Controller { // Get Language Options - $data['page_title'] = "Cloudlog Options"; - $data['sub_heading'] = "Email"; + $data['page_title'] = $this->lang->line('options_cloudlog_options'); + $data['sub_heading'] = $this->lang->line('options_email'); $this->load->helper(array('form', 'url')); @@ -212,7 +221,7 @@ class Options extends CI_Controller { // If emailProtocolupdate update is complete set a flashsession with a success note if($emailProtocolupdate == TRUE) { - $this->session->set_flashdata('success', 'Outgoing Email Protocol changed to '.$this->input->post('emailProtocol')); + $this->session->set_flashdata('success', $this->lang->line('options_outgoing_email_protocol_changed_to').$this->input->post('emailProtocol')); } // Update smtpEncryption choice within the options system @@ -220,7 +229,7 @@ class Options extends CI_Controller { // If smtpEncryption update is complete set a flashsession with a success note if($smtpEncryptionupdate == TRUE) { - $this->session->set_flashdata('success', 'SMTP Encryption changed to '.$this->input->post('smtpEncryption')); + $this->session->set_flashdata('success', $this->lang->line('options_smtp_encryption_changed_to').$this->input->post('smtpEncryption')); } // Update smtpHost choice within the options system @@ -228,7 +237,7 @@ class Options extends CI_Controller { // If smtpHost update is complete set a flashsession with a success note if($smtpHostupdate == TRUE) { - $this->session->set_flashdata('success', 'SMTP Host changed to '.$this->input->post('smtpHost')); + $this->session->set_flashdata('success', $this->lang->line('options_smtp_host_changed_to').$this->input->post('smtpHost')); } // Update smtpPort choice within the options system @@ -236,7 +245,7 @@ class Options extends CI_Controller { // If smtpPort update is complete set a flashsession with a success note if($smtpPortupdate == TRUE) { - $this->session->set_flashdata('success', 'SMTP Port changed to '.$this->input->post('smtpPort')); + $this->session->set_flashdata('success', $this->lang->line('options_smtp_port_changed_to').$this->input->post('smtpPort')); } // Update smtpUsername choice within the options system @@ -244,7 +253,7 @@ class Options extends CI_Controller { // If smtpUsername update is complete set a flashsession with a success note if($smtpUsernameupdate == TRUE) { - $this->session->set_flashdata('success', 'SMTP Username changed to '.$this->input->post('smtpUsername')); + $this->session->set_flashdata('success', $this->lang->line('options_smtp_username_changed_to').$this->input->post('smtpUsername')); } // Update smtpPassword choice within the options system @@ -252,7 +261,7 @@ class Options extends CI_Controller { // If smtpPassword update is complete set a flashsession with a success note if($smtpPasswordupdate == TRUE) { - $this->session->set_flashdata('success', 'SMTP Password changed to '.$this->input->post('smtpPassword')); + $this->session->set_flashdata('success', $this->lang->line('options_smtp_password_changed_to').$this->input->post('smtpPassword')); } // Update emailcrlf choice within the options system @@ -260,7 +269,7 @@ class Options extends CI_Controller { // If emailcrlf update is complete set a flashsession with a success note if($emailcrlfupdate == TRUE) { - $this->session->set_flashdata('success', 'Email CRLF changed to '.$this->input->post('emailcrlf')); + $this->session->set_flashdata('success', $this->lang->line('options_email_crlf_changed_to').$this->input->post('emailcrlf')); } // Update emailnewline choice within the options system @@ -268,7 +277,7 @@ class Options extends CI_Controller { // If emailnewline update is complete set a flashsession with a success note if($emailnewlineupdate == TRUE) { - $this->session->set_flashdata('success', 'Email Newline changed to '.$this->input->post('emailnewline')); + $this->session->set_flashdata('success', $this->lang->line('options_email_newline_changed_to').$this->input->post('emailnewline')); } // Redirect back to /appearance @@ -278,8 +287,8 @@ class Options extends CI_Controller { function oqrs() { - $data['page_title'] = "Cloudlog Options"; - $data['sub_heading'] = "OQRS Options"; + $data['page_title'] = $this->lang->line('options_cloudlog_options'); + $data['sub_heading'] = $this->lang->line('options_oqrs'); $this->load->view('interface_assets/header', $data); $this->load->view('options/oqrs'); @@ -288,8 +297,8 @@ class Options extends CI_Controller { function oqrs_save() { - $data['page_title'] = "Cloudlog Options"; - $data['sub_heading'] = "OQRS Options"; + $data['page_title'] = $this->lang->line('options_cloudlog_options'); + $data['sub_heading'] = $this->lang->line('options_oqrs'); $this->load->helper(array('form', 'url')); @@ -300,7 +309,7 @@ class Options extends CI_Controller { $global_oqrs_text = $this->optionslib->update('groupedSearch', $this->input->post('groupedSearch'), null); if($global_oqrs_text == TRUE) { - $this->session->set_flashdata('success', 'OQRS options have been saved.'); + $this->session->set_flashdata('success', $this->lang->line('options_oqrs_options_have_been_saved')); } redirect('/options/oqrs'); diff --git a/application/controllers/Search.php b/application/controllers/Search.php index af43c5118..f503d059f 100644 --- a/application/controllers/Search.php +++ b/application/controllers/Search.php @@ -80,6 +80,18 @@ class Search extends CI_Controller { $this->load->view('interface_assets/footer'); } + // Searches for unconfirmed Lotw QSOs where QSO partner has uploaded to LoTW after the QSO date + public function lotw_unconfirmed() { + $this->load->model('stations'); + + $data['station_profile'] = $this->stations->all_of_user(); + $data['page_title'] = "QSOs unconfirmed on LoTW, but the callsign has uploaded to LoTW after QSO date"; + + $this->load->view('interface_assets/header', $data); + $this->load->view('search/lotw_unconfirmed'); + $this->load->view('interface_assets/footer'); + } + function json_result() { if(isset($_POST['search'])) { $result = $this->fetchQueryResult($_POST['search'], false); diff --git a/application/controllers/Statistics.php b/application/controllers/Statistics.php index e34801efe..2647c8fcf 100644 --- a/application/controllers/Statistics.php +++ b/application/controllers/Statistics.php @@ -2,10 +2,22 @@ class Statistics extends CI_Controller { + function __construct() + { + parent::__construct(); + + // Load language files + $this->lang->load(array( + 'statistics', + )); + } + + public function index() { $this->load->model('user_model'); $this->load->model('bands'); + if(!$this->user_model->authorize($this->config->item('auth_mode'))) { if($this->user_model->validate_session()) { $this->user_model->clear_session(); @@ -17,7 +29,7 @@ class Statistics extends CI_Controller { // Render User Interface // Set Page Title - $data['page_title'] = "Statistics"; + $data['page_title'] = $this->lang->line('statistics_statistics'); $data['sat_active'] = array_search("SAT", $this->bands->get_user_bands(), true); // Load Views diff --git a/application/controllers/Update.php b/application/controllers/Update.php index 81c3f509f..d6cd88c36 100644 --- a/application/controllers/Update.php +++ b/application/controllers/Update.php @@ -287,9 +287,6 @@ class Update extends CI_Controller { } public function download_lotw_users() { - - - $contents = file_get_contents('https://lotw.arrl.org/lotw-user-activity.csv', true); if($contents === FALSE) { @@ -306,6 +303,47 @@ class Update extends CI_Controller { } + public function lotw_users() { + $mtime = microtime(); + $mtime = explode(" ",$mtime); + $mtime = $mtime[1] + $mtime[0]; + $starttime = $mtime; + + $file = 'https://lotw.arrl.org/lotw-user-activity.csv'; + + $handle = fopen($file, "r"); + if ($handle === FALSE) { + echo "Something went wrong with fetching the LoTW uses file"; + return; + } + $this->db->empty_table("lotw_users"); + $i = 0; + $data = fgetcsv($handle,1000,","); + do { + if ($data[0]) { + $lotwdata[$i]['callsign'] = $data[0]; + $lotwdata[$i]['lastupload'] = $data[1] . ' ' . $data[2]; + if (($i % 2000) == 0) { + $this->db->insert_batch('lotw_users', $lotwdata); + unset($lotwdata); + // echo 'Record ' . $i . '
'; + } + $i++; + } + } while ($data = fgetcsv($handle,1000,",")); + fclose($handle); + + $this->db->insert_batch('lotw_users', $lotwdata); + + $mtime = microtime(); + $mtime = explode(" ",$mtime); + $mtime = $mtime[1] + $mtime[0]; + $endtime = $mtime; + $totaltime = ($endtime - $starttime); + echo "This page was created in ".$totaltime." seconds
"; + echo "Records inserted: " . $i . "
"; + } + public function lotw_check() { $f = fopen('./updates/lotw_users.csv', "r"); $result = false; diff --git a/application/controllers/User.php b/application/controllers/User.php index e34e91f16..bdddf9585 100644 --- a/application/controllers/User.php +++ b/application/controllers/User.php @@ -11,6 +11,7 @@ class User extends CI_Controller { 'account', 'lotw', 'eqsl', + 'admin', )); } @@ -21,7 +22,7 @@ class User extends CI_Controller { $data['results'] = $this->user_model->users(); - $data['page_title'] = "User Accounts"; + $data['page_title'] = $this->lang->line('admin_user_accounts'); $this->load->view('interface_assets/header', $data); $this->load->view('user/main'); diff --git a/application/controllers/User_Logbooks.php b/application/controllers/User_Logbooks.php deleted file mode 100644 index 08d5c6a84..000000000 --- a/application/controllers/User_Logbooks.php +++ /dev/null @@ -1,21 +0,0 @@ -load->helper(array('form', 'url')); - - $this->load->model('user_model'); - if(!$this->user_model->authorize(2)) { $this->session->set_flashdata('notice', 'You\'re not allowed to do that!'); redirect('dashboard'); } - } - - public function index() - { - echo 'Functions to come'; - } - -} diff --git a/application/controllers/Visitor.php b/application/controllers/Visitor.php index 567f7f0dd..c7dd7f1db 100644 --- a/application/controllers/Visitor.php +++ b/application/controllers/Visitor.php @@ -11,9 +11,12 @@ class Visitor extends CI_Controller { if($method == "config") { $this->$method(); } - elseif($method == "map") { + elseif($method == "map") { $this->map($method); } + elseif($method == "radio_display_component") { + $this->radio_display_component($method); + } elseif($method == "satellites") { $this->satellites($method); } @@ -126,6 +129,13 @@ class Visitor extends CI_Controller { } } + public function radio_display_component() { + $this->load->model('cat'); + + $data['radio_status'] = $this->cat->recent_status(); + $this->load->view('components/radio_display_table', $data); + } + public function map() { $this->load->model('logbook_model'); diff --git a/application/language/english/account_lang.php b/application/language/english/account_lang.php index 7db5d0edf..a5172c94a 100644 --- a/application/language/english/account_lang.php +++ b/application/language/english/account_lang.php @@ -8,3 +8,84 @@ $lang['account_column2_text'] = 'Choose column 2'; $lang['account_column3_text'] = 'Choose column 3'; $lang['account_column4_text'] = 'Choose column 4'; $lang['account_column5_text'] = 'Choose column 5 (only for logbook)'; + +$lang['account_create_user_account'] = 'Create User Account'; +$lang['account_edit_account'] = 'Edit Account'; + +$lang['account_account_information'] = 'Account Information'; +$lang['account_username'] = 'Username'; +$lang['account_email_address'] = 'Email Address'; +$lang['account_password'] = 'Password'; + +$lang['account_roles'] = 'Roles'; +$lang['account_user_role'] = 'User Role'; + +$lang['account_theme'] = 'Theme'; +$lang['account_stylesheet'] = 'Stylesheet'; + +$lang['account_personal_information'] = 'Personal Information'; +$lang['account_first_name'] = 'First Name'; +$lang['account_last_name'] = 'Last Name'; +$lang['account_callsign'] = 'Callsign'; +$lang['account_gridsquare'] = 'Gridsquare'; + +$lang['account_cloudlog_preferences'] = 'Cloudlog Preferences'; +$lang['account_timezone'] = 'Timezone'; +$lang['account_date_format'] = 'Date Format'; +$lang['account_measurement_preference'] = 'Measurement preference'; +$lang['account_select_how_you_would_like_dates_shown_when_logged_into_your_account'] = 'Select how you would like dates shown when logged into your account.'; +$lang['account_choose_which_unit_distances_will_be_shown_in'] = 'Choose which unit distances will be shown in'; + +$lang['account_main_menu'] = 'Main Menu'; +$lang['account_show_notes_in_the_main_menu'] = 'Show notes in the main menu.'; + +$lang['account_gridsquare_and_location_autocomplete'] = 'Gridsquare and Location Autocomplete'; +$lang['account_location_auto_lookup'] = 'Location auto lookup.'; +$lang['account_if_set_gridsquare_is_fetched_based_on_location_name'] = 'If set, gridsquare is fetched based on location name.'; +$lang['account_sota_auto_lookup_gridsquare_and_name_for_summit'] = 'SOTA auto lookup gridsquare and name for summit.'; +$lang['account_wwff_auto_lookup_gridsquare_and_name_for_reference'] = 'WWFF auto lookup gridsquare and name for reference.'; +$lang['account_pota_auto_lookup_gridsquare_and_name_for_park'] = 'POTA auto lookup gridsquare and name for park.'; +$lang['account_if_set_name_and_gridsquare_is_fetched_from_the_api_and_filled_in_location_and_locator'] = 'If set, name and gridsquare is fetched from the API and filled in location and locator.'; + +$lang['account_previous_qsl_type'] = 'Previous QSL Type'; +$lang['account_select_the_type_of_qsl_to_show_in_the_previous_qsos_section'] = 'Select the type of QSL to show in the previous QSOs section.'; + +$lang['account_qrzcom_hamqthcom_images'] = 'qrz.com/hamqth.com Images'; +$lang['account_show_profile_picture_of_qso_partner_from_qrzcom_hamqthcom_profile_in_the_log_qso_section'] = 'Show profile picture of QSO partner from qrz.com/hamqth.com profile in the log QSO section.'; +$lang['account_please_set_your_qrzcom_hamqthcom_credentials_in_the_general_config_file'] = 'Please set your qrz.com/hamqth.com credentials in the general config file.'; + +$lang['account_amsat_status_upload'] = 'AMSAT Status Upload'; +$lang['account_upload_status_of_sat_qsos_to'] = 'Upload status of SAT QSOs to'; + +$lang['account_logbook_of_the_world'] = 'Logbook of the World'; +$lang['account_logbook_of_the_world_lotw_username'] = 'Logbook of The World (LoTW) Username'; +$lang['account_logbook_of_the_world_lotw_password'] = 'Logbook of The World (LoTW) Password'; +$lang['account_leave_blank_to_keep_existing_password'] = 'Leave blank to keep existing password'; + +$lang['account_clublog'] = 'Club Log'; +$lang['account_clublog_email_callsign'] = 'Club Log Email/Callsign'; +$lang['account_clublog_password'] = 'Club Log Password'; +$lang['account_the_email_or_callsign_you_use_to_login_to_club_log'] = 'The Email or Callsign you use to login to Club Log'; + +$lang['account_eqsl'] = 'eQSL'; +$lang['account_eqsl_username'] = 'eQSL.cc Username'; +$lang['account_eqsl_password'] = 'eQSL.cc Password'; + +$lang['account_save_account_changes'] = 'Save Account Changes'; +$lang['account_create_account'] = 'Create Account'; + +$lang['account_delete_user_account'] = 'Delete User Account'; +$lang['account_are_you_sure_you_want_to_delete_the_user_account'] = 'Are you sure you want to delete the user account'; +$lang['account_yes_delete_this_user'] = 'Yes, delete this user'; +$lang['account_no_do_not_delete_this_user'] = 'No, do not delete this user'; + +$lang['account_forgot_password'] = 'Forgot Password?'; +$lang['account_you_can_reset_your_password_here'] = 'You can reset your password here.'; +$lang['account_reset_password'] = 'Reset Password'; +$lang['account_the_email_field_is_required'] = 'The Email field is required'; +$lang['account_confirm_password'] = 'Confirm Password'; + +$lang['account_forgot_your_password'] = 'Forgot your password?'; + +$lang['account_login_to_cloudlog'] = 'Login to Cloudlog'; +$lang['account_login'] = 'Login'; diff --git a/application/language/english/admin_lang.php b/application/language/english/admin_lang.php new file mode 100644 index 000000000..5b3568c8d --- /dev/null +++ b/application/language/english/admin_lang.php @@ -0,0 +1,18 @@ +db->set('COL_LOTW_QSL_SENT', 'N'); + $this->db->like('COL_SAT_NAME', 'TEVEL', 'after'); + $this->db->update($this->config->item('table_name')); + } + + public function down() + { + // Not Possible + } +} diff --git a/application/migrations/123_add_lotw_users.php b/application/migrations/123_add_lotw_users.php new file mode 100644 index 000000000..9afa6a391 --- /dev/null +++ b/application/migrations/123_add_lotw_users.php @@ -0,0 +1,42 @@ +db->table_exists('lotw_users')) { + $this->dbforge->add_field(array( + 'id' => array( + 'type' => 'INT', + 'constraint' => 20, + 'unsigned' => TRUE, + 'auto_increment' => TRUE, + 'unique' => TRUE + ), + 'callsign' => array( + 'type' => 'VARCHAR', + 'constraint' => 32, + 'unsigned' => TRUE, + ), + 'lastupload' => array( + 'type' => 'datetime', + ) + )); + + $this->dbforge->add_key('id', TRUE); + + $this->dbforge->create_table('lotw_users'); + + $this->db->query("ALTER TABLE lotw_users ADD INDEX `callsign` (`callsign`)"); + } + + } + + public function down() + { + if ($this->db->table_exists('lotw_users')) { + $this->dbforge->drop_table('lotw_users'); + } + } +} diff --git a/application/models/Activated_grids_model.php b/application/models/Activated_grids_model.php index c07969cac..9cabf1da1 100644 --- a/application/models/Activated_grids_model.php +++ b/application/models/Activated_grids_model.php @@ -11,7 +11,7 @@ class Activated_grids_model extends CI_Model { return null; } - $sql = 'SELECT DISTINCT station_gridsquare AS SAT_SQUARE, COL_SAT_NAME FROM ' + $sql = 'SELECT DISTINCT station_gridsquare AS SAT_SQUARE FROM ' . 'station_profile JOIN '.$this->config->item('table_name').' on '.$this->config->item('table_name').'.station_id = station_profile.station_id ' . 'WHERE station_profile.station_gridsquare != "" AND '.$this->config->item('table_name').'.COL_SAT_NAME != ""'; @@ -29,7 +29,7 @@ class Activated_grids_model extends CI_Model { $location_list = "'".implode("','",$logbooks_locations_array)."'"; - $sql = 'SELECT DISTINCT station_gridsquare AS SAT_SQUARE, COL_SAT_NAME FROM ' + $sql = 'SELECT DISTINCT station_gridsquare AS SAT_SQUARE FROM ' . 'station_profile JOIN '.$this->config->item('table_name').' on '.$this->config->item('table_name').'.station_id = station_profile.station_id ' . 'WHERE station_profile.station_gridsquare != "" AND '.$this->config->item('table_name').'.COL_SAT_NAME != "" ' . 'AND (COL_LOTW_QSL_SENT = "Y" OR COL_QSL_SENT = "Y");'; diff --git a/application/models/Distances_model.php b/application/models/Distances_model.php index 642c0d8a2..c704eeb7d 100644 --- a/application/models/Distances_model.php +++ b/application/models/Distances_model.php @@ -256,13 +256,13 @@ class Distances_model extends CI_Model switch ($measurement_base) { case 'M': - return round(6371*$ca/1.609344); + return ceil(6371*$ca/1.609344); case 'K': - return round(6371*$ca); + return ceil(6371*$ca); case 'N': - return round(6371*$ca/1.852); + return ceil(6371*$ca/1.852); default: - return round(6371*$ca); + return ceil(6371*$ca); } } } diff --git a/application/models/Dxcc.php b/application/models/Dxcc.php index cfa3b65c6..a440c5927 100644 --- a/application/models/Dxcc.php +++ b/application/models/Dxcc.php @@ -87,7 +87,7 @@ class DXCC extends CI_Model { $dxccMatrix[$dxcc->adif]['name'] = ucwords(strtolower($dxcc->name), "- (/"); $dxccMatrix[$dxcc->adif]['Dxccprefix'] = $dxcc->prefix; if ($postdata['includedeleted']) - $dxccMatrix[$dxcc->adif]['Deleted'] = isset($dxcc->Enddate) ? "
Y
" : ''; + $dxccMatrix[$dxcc->adif]['Deleted'] = isset($dxcc->Enddate) ? 1 : 0; $dxccMatrix[$dxcc->adif][$band] = '-'; } diff --git a/application/models/Eqsl_images.php b/application/models/Eqsl_images.php index 88137b01b..dcd160922 100644 --- a/application/models/Eqsl_images.php +++ b/application/models/Eqsl_images.php @@ -24,6 +24,17 @@ class Eqsl_images extends CI_Model { $this->db->insert('eQSL_images', $data); } + function eqsl_qso_list() { + $this->load->model('logbooks_model'); + $logbooks_locations_array = $this->logbooks_model->list_logbook_relationships($this->session->userdata('active_station_logbook')); + $this->db->select('COL_PRIMARY_KEY, qso_id, COL_CALL, COL_MODE, , COL_SUBMODE, COL_TIME_ON, COL_BAND, COL_SAT_NAME, image_file'); + $this->db->join($this->config->item('table_name'), 'qso_id = COL_PRIMARY_KEY', 'left outer'); + $this->db->join('station_profile', $this->config->item('table_name').'.station_id = station_profile.station_id', 'left outer'); + $this->db->where_in('station_profile.station_id', $logbooks_locations_array); + $this->db->order_by('COL_TIME_ON', 'DESC'); + return $this->db->get('eQSL_images'); + } + } -?> \ No newline at end of file +?> diff --git a/application/models/Eqslmethods_model.php b/application/models/Eqslmethods_model.php index eb7546f56..369a4117a 100644 --- a/application/models/Eqslmethods_model.php +++ b/application/models/Eqslmethods_model.php @@ -49,7 +49,7 @@ class Eqslmethods_model extends CI_Model { array_push($logbooks_locations_array, $row->station_id); } } - + $this->db->select('station_profile.*, '.$this->config->item('table_name').'.COL_PRIMARY_KEY, '.$this->config->item('table_name').'.COL_TIME_ON, '.$this->config->item('table_name').'.COL_CALL, '.$this->config->item('table_name').'.COL_MODE, '.$this->config->item('table_name').'.COL_SUBMODE, '.$this->config->item('table_name').'.COL_BAND, '.$this->config->item('table_name').'.COL_COMMENT, '.$this->config->item('table_name').'.COL_RST_SENT, '.$this->config->item('table_name').'.COL_PROP_MODE, '.$this->config->item('table_name').'.COL_SAT_NAME, '.$this->config->item('table_name').'.COL_SAT_MODE, '.$this->config->item('table_name').'.COL_QSLMSG'); $this->db->from('station_profile'); $this->db->join($this->config->item('table_name'),'station_profile.station_id = '.$this->config->item('table_name').'.station_id'); @@ -63,7 +63,35 @@ class Eqslmethods_model extends CI_Model { $this->db->or_where($this->config->item('table_name').'.COL_EQSL_QSL_SENT', 'N'); $this->db->group_end(); $this->db->where_in('station_profile.station_id', $logbooks_locations_array); - + + return $this->db->get(); + } + + // Show all QSOs whose eQSL card images we did not download yet + function eqsl_not_yet_downloaded($userid = null) { + $CI =& get_instance(); + if ($userid == null) { + $CI->load->model('logbooks_model'); + $logbooks_locations_array = $CI->logbooks_model->list_logbook_relationships($this->session->userdata('active_station_logbook')); + } else { + $stations = $this->get_all_user_locations($userid); + $logbooks_locations_array = array(); + foreach ($stations->result() as $row) { + array_push($logbooks_locations_array, $row->station_id); + } + } + + $this->db->select('station_profile.station_id, '.$this->config->item('table_name').'.COL_PRIMARY_KEY, '.$this->config->item('table_name').'.COL_TIME_ON, '.$this->config->item('table_name').'.COL_CALL, '.$this->config->item('table_name').'.COL_MODE, '.$this->config->item('table_name').'.COL_SUBMODE, '.$this->config->item('table_name').'.COL_BAND, '.$this->config->item('table_name').'.COL_PROP_MODE, '.$this->config->item('table_name').'.COL_SAT_NAME, '.$this->config->item('table_name').'.COL_SAT_MODE, '.$this->config->item('table_name').'.COL_QSLMSG, eQSL_images.qso_id'); + $this->db->from('station_profile'); + $this->db->join($this->config->item('table_name'),'station_profile.station_id = '.$this->config->item('table_name').'.station_id'); + $this->db->join('eQSL_images','eQSL_images.qso_id = '.$this->config->item('table_name').'.COL_PRIMARY_KEY','left outer'); + //$this->db->where("coalesce(station_profile.eqslqthnickname, '') <> ''"); + $this->db->where($this->config->item('table_name').'.COL_CALL !=', ''); + $this->db->where($this->config->item('table_name').'.COL_EQSL_QSL_RCVD', 'Y'); + $this->db->where('qso_id', NULL); + $this->db->where_in('station_profile.station_id', $logbooks_locations_array); + $this->db->order_by("COL_TIME_ON", "desc"); + return $this->db->get(); } @@ -165,4 +193,4 @@ class Eqslmethods_model extends CI_Model { } -?> \ No newline at end of file +?> diff --git a/application/models/Logbook_model.php b/application/models/Logbook_model.php index 692803aa3..bc7943788 100755 --- a/application/models/Logbook_model.php +++ b/application/models/Logbook_model.php @@ -1295,12 +1295,13 @@ class Logbook_model extends CI_Model { } function get_qso($id) { - $this->db->select($this->config->item('table_name').'.*, station_profile.*, dxcc_entities.*, dxcc_entities_2.name as station_country, dxcc_entities_2.end as station_end'); - $this->db->select($this->config->item('table_name').'.*, station_profile.*, dxcc_entities.*, coalesce(dxcc_entities_2.name, "- NONE -") as station_country, dxcc_entities_2.end as station_end'); + $this->db->select($this->config->item('table_name').'.*, station_profile.*, dxcc_entities.*, coalesce(dxcc_entities_2.name, "- NONE -") as station_country, dxcc_entities_2.end as station_end, eQSL_images.image_file as eqsl_image_file, lotw_users.callsign as lotwuser, lotw_users.lastupload'); $this->db->from($this->config->item('table_name')); $this->db->join('dxcc_entities', $this->config->item('table_name').'.col_dxcc = dxcc_entities.adif', 'left'); $this->db->join('station_profile', 'station_profile.station_id = '.$this->config->item('table_name').'.station_id', 'left'); $this->db->join('dxcc_entities as dxcc_entities_2', 'station_profile.station_dxcc = dxcc_entities_2.adif', 'left outer'); + $this->db->join('eQSL_images', $this->config->item('table_name').'.COL_PRIMARY_KEY = eQSL_images.qso_id', 'left outer'); + $this->db->join('lotw_users', $this->config->item('table_name').'.COL_CALL = lotw_users.callsign', 'left outer'); $this->db->where('COL_PRIMARY_KEY', $id); return $this->db->get(); @@ -3794,4 +3795,4 @@ 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/models/Logbookadvanced_model.php b/application/models/Logbookadvanced_model.php index 437f4f7aa..f05713522 100644 --- a/application/models/Logbookadvanced_model.php +++ b/application/models/Logbookadvanced_model.php @@ -100,6 +100,7 @@ class Logbookadvanced_model extends CI_Model { FROM " . $this->config->item('table_name') . " qsos INNER JOIN station_profile ON qsos.station_id=station_profile.station_id LEFT OUTER JOIN dxcc_entities ON qsos.col_dxcc=dxcc_entities.adif + LEFT OUTER JOIN lotw_users ON qsos.col_call=lotw_users.callsign WHERE station_profile.user_id = ? $where ORDER BY qsos.COL_TIME_ON desc, qsos.COL_PRIMARY_KEY desc diff --git a/application/models/LotwCert.php b/application/models/LotwCert.php index 228ea6d10..1d1fd03d4 100644 --- a/application/models/LotwCert.php +++ b/application/models/LotwCert.php @@ -54,11 +54,13 @@ class LotwCert extends CI_Model { $this->db->insert('lotw_certs', $data); } - function update_certificate($user_id, $callsign, $dxcc, $date_created, $date_expires, $cert_key, $general_cert) { + function update_certificate($user_id, $callsign, $dxcc, $date_created, $date_expires, $qso_start_date, $qso_end_date, $cert_key, $general_cert) { $data = array( 'cert_dxcc_id' => $dxcc, 'date_created' => $date_created, 'date_expires' => $date_expires, + 'qso_start_date' => $qso_start_date, + 'qso_end_date' => $qso_end_date, 'cert_key' => $cert_key, 'cert' => $general_cert ); diff --git a/application/views/activated_grids/index.php b/application/views/activated_grids/index.php index 56c1b815c..c099c5b95 100644 --- a/application/views/activated_grids/index.php +++ b/application/views/activated_grids/index.php @@ -6,7 +6,7 @@ uri->segment(1) == "activated_grids" && $this->uri->segment(2) == "band") { ?>
- +
@@ -25,14 +25,14 @@
uri->segment(2) == "satellites") { ?> uri->segment(2) == "band") { ?>
diff --git a/application/views/adif/import.php b/application/views/adif/import.php index 779bd48d6..c2c36facf 100644 --- a/application/views/adif/import.php +++ b/application/views/adif/import.php @@ -148,7 +148,7 @@
Export Satellite-Only QSOs

Export All Satellite QSOs

-

Export All Satellite QSOs Confirmed on LoTW

+

Export All Satellite QSOs Confirmed on LoTW

diff --git a/application/views/api/help.php b/application/views/api/help.php index a7a000b21..e422f0d49 100644 --- a/application/views/api/help.php +++ b/application/views/api/help.php @@ -16,7 +16,7 @@

The Cloudlog API (Application Programming Interface) lets third party systems access Cloudlog in a controlled way. Access to the API is managed via API keys.

You will need to generate an API key for each tool you wish to use (e.g. CloudlogCAT). Generate a read-write key if the application needs to send data to Cloudlog. Generate a read-only key if the application only needs to obtain data from Cloudlog.

-

API URL The API URL for this Cloudlog instance is:

+

API URL The API URL for this Cloudlog instance is:

Info It's good practice to delete a key if you are no longer using the associated application.

num_rows() > 0) { ?> @@ -35,7 +35,7 @@ result() as $row) { ?> - key; ?> + key; ?> description; ?> last_used; ?> diff --git a/application/views/awards/dxcc/index.php b/application/views/awards/dxcc/index.php index 54aa3dabf..d2c41b971 100644 --- a/application/views/awards/dxcc/index.php +++ b/application/views/awards/dxcc/index.php @@ -198,9 +198,6 @@ # DXCC Name Prefix'; - if ($this->input->post('includedeleted')) - echo ' - Deleted'; foreach($bands as $band) { echo '' . $band . ''; } @@ -210,8 +207,14 @@ foreach ($dxcc_array as $dxcc => $value) { // Fills the table with the data echo ' '. $i++ .''; - foreach ($value as $key) { - echo '' . $key . ''; + foreach ($value as $name => $key) { + if (isset($value['Deleted']) && $value['Deleted'] == 1 && $name == "name") { + echo '' . $key . ' '.lang('gen_hamradio_deleted_dxcc').''; + } else if ($name == "Deleted") { + continue; + } else { + echo '' . $key . ''; + } } echo ''; } diff --git a/application/views/awards/pota/index.php b/application/views/awards/pota/index.php index a5f2b9425..d14d86fdf 100644 --- a/application/views/awards/pota/index.php +++ b/application/views/awards/pota/index.php @@ -17,13 +17,13 @@ - lang->line('gen_hamradio_pota_reference') ?> - lang->line('general_word_date') ?> - lang->line('general_word_time') ?> - lang->line('gen_hamradio_callsign') ?> - lang->line('gen_hamradio_band') ?> - lang->line('gen_hamradio_rsts') ?> - lang->line('gen_hamradio_rstr') ?> + + + + + + + diff --git a/application/views/awards/wwff/index.php b/application/views/awards/wwff/index.php index eb33579fb..7b0f75c71 100644 --- a/application/views/awards/wwff/index.php +++ b/application/views/awards/wwff/index.php @@ -17,13 +17,13 @@ - lang->line('gen_hamradio_wwff_reference') ?> - lang->line('general_word_date') ?> - lang->line('general_word_time') ?> - lang->line('gen_hamradio_callsign') ?> - lang->line('gen_hamradio_band') ?> - lang->line('gen_hamradio_rsts') ?> - lang->line('gen_hamradio_rstr') ?> + + + + + + + diff --git a/application/views/components/radio_display_table.php b/application/views/components/radio_display_table.php new file mode 100644 index 000000000..e27c5154c --- /dev/null +++ b/application/views/components/radio_display_table.php @@ -0,0 +1,23 @@ +num_rows()) { ?> + + + + + + + result_array() as $row) { ?> + + + + + + +
Radio Status
+ + + + frequency->hz_to_mhz($row['frequency']); ?> () + +
+ + \ No newline at end of file diff --git a/application/views/contesting/index.php b/application/views/contesting/index.php index 150886f98..f4f3ea14f 100644 --- a/application/views/contesting/index.php +++ b/application/views/contesting/index.php @@ -1,6 +1,6 @@
- -

lang->line('contesting_page_title'); ?>

+ +

@@ -8,7 +8,7 @@
- +
- +
>
- + >
@@ -49,7 +49,7 @@
- + $bandgroup) { @@ -79,14 +79,14 @@
- +
- +
- +
@@ -112,7 +112,7 @@
@@ -122,7 +122,7 @@
- +
@@ -132,7 +132,7 @@
@@ -144,18 +144,18 @@
- +
- +
- - + +
@@ -172,26 +172,27 @@
-
lang->line('contesting_title_callsign_suggestions'); ?>
+
-
lang->line('contesting_title_contest_logbook'); ?>
+
+

- - - - - - - - + + + + + + + + diff --git a/application/views/csv/index.php b/application/views/csv/index.php index 2f235a081..6e77f1360 100644 --- a/application/views/csv/index.php +++ b/application/views/csv/index.php @@ -16,7 +16,7 @@
- +
- + config->item('use_auth') && ($this->session->userdata('user_type') >= 2)) || $this->config->item('use_auth') === FALSE || ($this->config->item('show_time'))) { ?> - + - + session->userdata('user_column1')==""?'Mode':$this->session->userdata('user_column1')); echo_table_header_col($this, $this->session->userdata('user_column2')==""?'RSTS':$this->session->userdata('user_column2')); @@ -160,47 +160,26 @@ function echoQrbCalcLink($mygrid, $grid, $vucc) {
- num_rows()) { ?> -
lang->line('general_word_date'); ?>/lang->line('general_word_time'); ?>lang->line('gen_hamradio_call'); ?>lang->line('gen_hamradio_band'); ?>lang->line('gen_hamradio_mode'); ?>lang->line('gen_hamradio_rsts'); ?>lang->line('gen_hamradio_rstr'); ?>lang->line('gen_hamradio_exchange_sent_short'); ?>lang->line('gen_hamradio_exchange_rcvd_short'); ?>/ Serial (S) Serial (R) Gridsquare
lang->line('general_word_date'); ?> lang->line('general_word_time'); ?> lang->line('gen_hamradio_call'); ?>
- - - - - result_array() as $row) { ?> - - - - - - -
Radio Status
- - - - frequency->hz_to_mhz($row['frequency']); ?> () - -
- - +

- + - + - + - +
lang->line('dashboard_qso_breakdown'); ?>
lang->line('general_word_total'); ?>
lang->line('general_word_year'); ?>
lang->line('general_word_month'); ?>
@@ -209,15 +188,15 @@ function echoQrbCalcLink($mygrid, $grid, $vucc) { - + - + - + - +
lang->line('dashboard_countries_breakdown'); ?>
lang->line('general_word_worked'); ?>
lang->line('general_word_confirmed'); ?> / / @@ -226,7 +205,7 @@ function echoQrbCalcLink($mygrid, $grid, $vucc) {
lang->line('general_word_needed'); ?>
@@ -234,21 +213,21 @@ function echoQrbCalcLink($mygrid, $grid, $vucc) { config->item('use_auth') && ($this->session->userdata('user_type') >= 2)) || $this->config->item('use_auth') === FALSE) && ($total_qsl_sent != 0 || $total_qsl_rcvd != 0 || $total_qsl_requested != 0)) { ?> - + - + - + - +
lang->line('general_word_qslcards'); ?>
lang->line('general_word_sent'); ?>
lang->line('general_word_received'); ?>
lang->line('general_word_requested'); ?>
@@ -257,16 +236,16 @@ function echoQrbCalcLink($mygrid, $grid, $vucc) { config->item('use_auth') && ($this->session->userdata('user_type') >= 2)) || $this->config->item('use_auth') === FALSE) && ($total_eqsl_sent != 0 || $total_eqsl_rcvd != 0)) { ?> - + - + - +
lang->line('general_word_eqslcards'); ?>
lang->line('general_word_sent'); ?>
lang->line('general_word_received'); ?>
@@ -275,16 +254,16 @@ function echoQrbCalcLink($mygrid, $grid, $vucc) { config->item('use_auth') && ($this->session->userdata('user_type') >= 2)) || $this->config->item('use_auth') === FALSE) && ($total_lotw_sent != 0 || $total_lotw_rcvd != 0)) { ?> - + - + - +
lang->line('general_word_lotw'); ?>
lang->line('general_word_sent'); ?>
lang->line('general_word_received'); ?>
diff --git a/application/views/debug/main.php b/application/views/debug/main.php index 2567611db..64e9857ae 100644 --- a/application/views/debug/main.php +++ b/application/views/debug/main.php @@ -19,7 +19,7 @@ Base URL - config->item('base_url'); ?> ")'> + config->item('base_url'); ?> ")'>
diff --git a/application/views/distances/index.php b/application/views/distances/index.php index 916ddee2a..2925346e1 100644 --- a/application/views/distances/index.php +++ b/application/views/distances/index.php @@ -6,7 +6,7 @@
- + result() as $station) { ?> @@ -62,7 +62,7 @@ foreach($dxcc as $d){ echo ''; } diff --git a/application/views/eqsl/analysis.php b/application/views/eqsl/analysis.php index c2230d3e1..fb802483e 100644 --- a/application/views/eqsl/analysis.php +++ b/application/views/eqsl/analysis.php @@ -16,6 +16,9 @@ $custom_date_format = $this->session->userdata('user_date_format'); +
diff --git a/application/views/eqsl/download.php b/application/views/eqsl/download.php new file mode 100644 index 000000000..d4c2319b1 --- /dev/null +++ b/application/views/eqsl/download.php @@ -0,0 +1,82 @@ + +
+

+
+
+
eQSL Card Image Download
+ +
+ +
+ load->view('layout/messages'); ?> + +result())) { +?> +

Below is a table of QSOs that have been confirmed on eQSL but QSL images have not been downloaded yet.

+ + + + + + + + + + + + +result_array() as $qsl) { + echo ""; + $timestamp = strtotime($qsl['COL_TIME_ON']); + echo ""; + echo ""; + echo ""; + echo ""; + if(isset($qsl['COL_SUBMODE'])) { + echo ""; + } else { + echo ""; + } + echo ""; + echo ""; +} + echo ""; +?> +
DateTimeCallModeSubmodeBandAction
".date($custom_date_format, $timestamp)."".date('H:i', $timestamp)."".str_replace("0","Ø",$qsl['COL_CALL'])."".$qsl['COL_MODE']."".$qsl['COL_SUBMODE']."".$qsl['COL_BAND']."View/Download
+

+ + +
+ +

Cloudlog will use the eQSL credentials from your Cloudlog user profile to connect to eQSL and download confirmations.

+
+

+ + + + + +There are no QSOs whose eQSL card images have not yet been downloaded. Go log some more QSOs!

"; + } +?> +
+ +
+
diff --git a/application/views/eqsl/export.php b/application/views/eqsl/export.php index 39e1b2d98..6be59f853 100644 --- a/application/views/eqsl/export.php +++ b/application/views/eqsl/export.php @@ -14,6 +14,9 @@ +
diff --git a/application/views/eqsl/import.php b/application/views/eqsl/import.php index 2a6d86342..1808f11e8 100644 --- a/application/views/eqsl/import.php +++ b/application/views/eqsl/import.php @@ -14,6 +14,9 @@ +
diff --git a/application/views/eqsl/result.php b/application/views/eqsl/result.php new file mode 100644 index 000000000..9f7bb2bc6 --- /dev/null +++ b/application/views/eqsl/result.php @@ -0,0 +1,55 @@ + +session->userdata('user_date_format'); +?> +
+
+
+
+ +
+ +
+ load->view('layout/messages'); ?> + + + + + + + + + + + + + + + + + + + + + + +
DateTimeCallModeSubmodeeQSL Status
+
+
+ +
diff --git a/application/views/eqsl/tools.php b/application/views/eqsl/tools.php index fa6e0948c..7982aaa1e 100644 --- a/application/views/eqsl/tools.php +++ b/application/views/eqsl/tools.php @@ -15,6 +15,10 @@ + +
diff --git a/application/views/eqslcard/index.php b/application/views/eqslcard/index.php new file mode 100644 index 000000000..aaf7597ef --- /dev/null +++ b/application/views/eqslcard/index.php @@ -0,0 +1,59 @@ +
+ +
+ +

lang->line('general_word_eqslcards'); ?>

+ + + + session->userdata('user_date_format')) { + // If Logged in and session exists + $custom_date_format = $this->session->userdata('user_date_format'); + } else { + // Get Default date format from /config/cloudlog.php + $custom_date_format = $this->config->item('qso_date_format'); + } + + if (is_array($qslarray->result())) { + echo ' + + + + + + + + + + + '; + + foreach ($qslarray->result() as $qsl) { + echo ''; + echo ''; + echo ''; + echo ''; + echo ''; + echo ''; + echo ''; + echo ''; + echo ''; + } + + echo '
'.$this->lang->line('gen_hamradio_callsign').''.$this->lang->line('gen_hamradio_mode').''.$this->lang->line('general_word_date').''.$this->lang->line('general_word_time').''.$this->lang->line('gen_hamradio_band').''.$this->lang->line('gen_hamradio_qsl').'
' . $qsl->COL_CALL . ''; + echo $qsl->COL_SUBMODE==null?$qsl->COL_MODE:$qsl->COL_SUBMODE; + echo ''; + $timestamp = strtotime($qsl->COL_TIME_ON); echo date($custom_date_format, $timestamp); + echo ''; + $timestamp = strtotime($qsl->COL_TIME_ON); echo date('H:i', $timestamp); + echo ''; + if($qsl->COL_SAT_NAME != null) { echo $qsl->COL_SAT_NAME; } else { echo strtolower($qsl->COL_BAND); }; + echo '' . $qsl->image_file . '
'; + } + ?> + +
diff --git a/application/views/gridsquares/index.php b/application/views/gridsquares/index.php index be52d3ab5..ef95b27c7 100644 --- a/application/views/gridsquares/index.php +++ b/application/views/gridsquares/index.php @@ -6,7 +6,7 @@ uri->segment(1) == "gridsquares" && $this->uri->segment(2) == "band") { ?>
- +
@@ -25,14 +25,14 @@
uri->segment(2) == "satellites") { ?> uri->segment(2) == "band") { ?>
diff --git a/application/views/interface_assets/footer.php b/application/views/interface_assets/footer.php index ffb92314a..4e7741e21 100644 --- a/application/views/interface_assets/footer.php +++ b/application/views/interface_assets/footer.php @@ -816,6 +816,29 @@ function findduplicates(){ }); } +function findlotwunconfirmed(){ + event.preventDefault(); + $('#partial_view').load(base_url+"index.php/logbook/search_lotw_unconfirmed/"+$("#station_id").val(), function() { + $('.qsolist').DataTable({ + "pageLength": 25, + responsive: false, + ordering: false, + "scrollY": "500px", + "scrollCollapse": true, + "paging": false, + "scrollX": true, + dom: 'Bfrtip', + buttons: [ + 'csv' + ] + }); + // change color of csv-button if dark mode is chosen + if (isDarkModeTheme()) { + $(".buttons-csv").css("color", "white"); + } + }); +} + function findincorrectcqzones() { event.preventDefault(); $('#partial_view').load(base_url+"index.php/logbook/search_incorrect_cq_zones/"+$("#station_id").val(), function() { @@ -1189,6 +1212,8 @@ $(document).on('keypress',function(e) { uri->segment(1) == "qso" || ($this->uri->segment(1) == "contesting" && $this->uri->segment(2) != "add")) { ?> + + -uri->segment(1) == "qsl") { +uri->segment(1) == "qsl" || $this->uri->segment(1) == "eqsl") { // Get Date format if($this->session->userdata('user_date_format')) { // If Logged in and session exists @@ -2186,7 +2214,7 @@ $(document).ready(function(){ function viewQsl(picture, callsign) { var baseURL= ""; var $textAndPic = $('
'); - $textAndPic.append(''); + $textAndPic.append('
'); var title = ''; if (callsign == null) { title = 'QSL Card'; @@ -2244,6 +2272,31 @@ function deleteQsl(id) { }); } + +
session->flashdata('message')) { ?> diff --git a/application/views/logbooks/edit.php b/application/views/logbooks/edit.php index 1df99f4f5..818110523 100644 --- a/application/views/logbooks/edit.php +++ b/application/views/logbooks/edit.php @@ -95,7 +95,7 @@ @@ -129,7 +129,7 @@ foreach ($station_locations_linked->result() as $row) { ?> - station_profile_name;?> (Callsign: station_callsign;?> DXCC: station_country; if ($row->end != NULL) { echo ' '.$this->lang->line('gen_hamradio_deleted_dxcc').''; } ?>) + station_profile_name;?> (Callsign: station_callsign;?> DXCC: station_country; if ($row->end != NULL) { echo ' '.lang('gen_hamradio_deleted_dxcc').''; } ?>) adif . '>' . $d->prefix . ' - ' . ucwords(strtolower($d->name), "- (/"); if ($d->Enddate != null) { - echo ' ('.$this->lang->line('gen_hamradio_deleted_dxcc').')'; + echo ' ('.lang('gen_hamradio_deleted_dxcc').')'; } echo ''; } diff --git a/application/views/lotw/import.php b/application/views/lotw/import.php index 7efd04068..76139dea8 100644 --- a/application/views/lotw/import.php +++ b/application/views/lotw/import.php @@ -1,9 +1,9 @@
-

lang->line('lotw_title'); ?> - lang->line('lotw_title_adif_import'); ?>

+

-

-
lang->line('lotw_title_adif_import_options'); ?>
+
load->view('layout/messages'); ?> @@ -12,14 +12,14 @@
- + -

lang->line('lotw_upload_exported_adif_file_from_lotw'); ?>

-

lang->line('general_word_important'); ?> lang->line('lotw_upload_type_must_be_adi'); ?>

+

+

- +
@@ -29,9 +29,9 @@
- +
-

lang->line('gen_from_date'); ?>:

+

:

@@ -45,14 +45,14 @@
- +
-

lang->line('lotw_report_download_overview_helptext'); ?>

+

- +
diff --git a/application/views/lotw_views/index.php b/application/views/lotw_views/index.php index 093fc7662..0ce0a3d5d 100644 --- a/application/views/lotw_views/index.php +++ b/application/views/lotw_views/index.php @@ -1,15 +1,15 @@

- lang->line('lotw_btn_lotw_import'); ?> -

lang->line('lotw_title'); ?>

+ +

- lang->line('lotw_btn_upload_certificate'); ?> lang->line('lotw_title_available_cert'); ?> +
-
+