Merge dev into master to create stable 2.4.4

Time to get version 2.4.4 ready
This commit is contained in:
Peter Goodhall 2023-06-29 11:27:52 +01:00 committed by GitHub
commit ba8123ee2e
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
133 changed files with 9303 additions and 270 deletions

View file

@ -0,0 +1,26 @@
name: Accessibility-alt-text-bot
on:
issues:
types: [opened, edited]
pull_request:
types: [opened, edited]
issue_comment:
types: [created, edited]
discussion:
types: [created, edited]
discussion_comment:
types: [created, edited]
permissions:
issues: write
pull-requests: write
discussions: write
jobs:
accessibility_alt_text_bot:
name: Check alt text is set on issue or pull requests
runs-on: ubuntu-latest
if: ${{ github.event.issue || github.event.pull_request || github.event.discussion }}
steps:
- name: Get action 'github/accessibility-alt-text-bot'
uses: github/accessibility-alt-text-bot@v1.2.0 # Set to latest

37
.github/workflows/push-docker-hub.yml vendored Normal file
View file

@ -0,0 +1,37 @@
name: Push Docker image to the Hub
on:
push:
# Pattern matched against refs/tags
tags:
- '*' # Push events to every tag not containing
workflow_dispatch:
jobs:
docker:
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v3
- uses: actions-ecosystem/action-get-latest-tag@v1
id: get-latest-tag
- name: Print latest tag
run: echo ${{ steps.get-latest-tag.outputs.tag }}
- name: Set up QEMU
uses: docker/setup-qemu-action@v2
- name: Set up Docker Buildx
uses: docker/setup-buildx-action@v2
- name: Login to Docker Hub
uses: docker/login-action@v2
with:
username: ${{ secrets.DOCKERHUB_USERNAME }}
password: ${{ secrets.DOCKERHUB_TOKEN }}
- name: Build and push
uses: docker/build-push-action@v4
with:
context: ./
file: ./docker/Dockerfile
platforms: linux/amd64,linux/arm64
push: true
tags: ${{ secrets.DOCKERHUB_IMAGENAME }}:${{ steps.get-latest-tag.outputs.tag }},${{ secrets.DOCKERHUB_IMAGENAME }}:latest

View file

@ -5,8 +5,8 @@
RewriteEngine On
RewriteCond %{REQUEST_URI} ^/backup/$
RewriteRule ^(.*)$ /index.php?/$1 [L]
RewriteRule ^(.*)$ /index.php?/$1 "[L,QSA,B= ?,BNP]"
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ /index.php?/$1 [L]
RewriteRule ^(.*)$ /index.php?/$1 "[L,QSA,B= ?,BNP]"

View file

@ -106,6 +106,7 @@ $autoload['language'] = array(
'notes',
'qslcard',
'qso',
'gridsquares'
);
/*

View file

@ -8,17 +8,15 @@ defined('BASEPATH') OR exit('No direct script access allowed');
|--------------------------------------------------------------------------
|
| 'app_name' Name of the App 'Cloudlog'
| 'app_version' Set by the dev team.
| 'app_version' Set by the dev team.
| 'directory' directory where cloudlog is installed eg "logger"
| 'callbook' Selects which Callbook lookup to use defaults "hamqth" but supports "qrz"
*/
$config['app_name'] = "Cloudlog";
$config['app_version'] = "2.4.2";
$config['app_version'] = "2.4.3";
$config['directory'] = "logbook";
$config['callbook'] = "hamqth"; // Options are hamqth or qrz
$config['datadir'] = null; // default to install directory
/*
@ -27,8 +25,8 @@ $config['datadir'] = null; // default to install directory
|--------------------------------------------------------------------------
|
| 'table_name' SQL table where log can be found
| 'locator' Default locator used to calculate bearings/distance
| 'display_freq' Show or Hide frequnecy info
| 'locator' Default locator used to calculate bearings/distance
| 'display_freq' Show or Hide frequnecy info
*/
$config['table_name'] = "TABLE_HRD_CONTACTS_V01";
@ -42,11 +40,12 @@ $config['display_freq'] = true;
|
| 'qrz_username' QRZ.com user login
| 'qrz_password' QRZ.com user password
| 'use_fullname' Get full names from QRZ, may not be GDPR compliant
*/
$config['qrz_username'] = "";
$config['qrz_password'] = "";
$config['use_fullname'] = false;
/*
|--------------------------------------------------------------------------
@ -59,7 +58,6 @@ $config['qrz_password'] = "";
$config['hamqth_username'] = "";
$config['hamqth_password'] = "";
/*
|--------------------------------------------------------------------------
| Authentication
@ -67,7 +65,7 @@ $config['hamqth_password'] = "";
|
| 'use_auth' False turns all authentication off, best used when setting up
| 'auth_table' MySQL Database Table defaults "users"
| 'auth_mode' Minimum user level required 0 = anonymous, 1 = viewer,
| 'auth_mode' Minimum user level required 0 = anonymous, 1 = viewer,
| 2 = editor, 3 = api user, 99 = owner
| 'auth_level[]' Defines level titles
*/
@ -568,6 +566,7 @@ $config['compress_output'] = FALSE;
*/
$config['time_reference'] = 'UTC';
date_default_timezone_set($config['time_reference']);
/*
|--------------------------------------------------------------------------
| Rewrite PHP Short Tags

View file

@ -21,7 +21,7 @@ $config['migration_enabled'] = TRUE;
| be upgraded / downgraded to.
|
*/
$config['migration_version'] = 123;
$config['migration_version'] = 124;
/*
|--------------------------------------------------------------------------

View file

@ -423,6 +423,8 @@ class API extends CI_Controller {
$this->load->model('api_model');
$this->load->model('stations');
// Decode JSON and store
$obj = json_decode(file_get_contents("php://input"), true);
if ($obj === NULL) {
@ -436,6 +438,14 @@ class API extends CI_Controller {
die();
}
$userid = $this->api_model->key_userid($obj['key']);
if(!isset($obj['station_profile_id']) || $this->stations->check_station_against_user($obj['station_profile_id'], $userid) == false) {
http_response_code(401);
echo json_encode(['status' => 'failed', 'reason' => "station id does not belong to the API key owner."]);
die();
}
$this->api_model->update_last_used($obj['key']);
if($obj['type'] == "adif" && $obj['string'] != "") {

View file

@ -12,7 +12,7 @@ class eqsl extends CI_Controller {
public function index() {
$this->lang->load('qslcard');
$folder_name = "assets/qslcard";
$folder_name = "images/eqsl_card_images";
$data['storage_used'] = $this->sizeFormat($this->folderSize($folder_name));
// Render Page
@ -501,7 +501,7 @@ class eqsl extends CI_Controller {
$query = $this->user_model->get_by_id($this->session->userdata('user_id'));
$q = $query->row();
$username = $q->user_eqsl_name;
$username = $qso->COL_STATION_CALLSIGN;
$password = $q->user_eqsl_password;
$image_url = $this->electronicqsl->card_image($username, urlencode($password), $callsign, $band, $mode, $year, $month, $day, $hour, $minute);
@ -559,7 +559,7 @@ class eqsl extends CI_Controller {
$query = $this->user_model->get_by_id($this->session->userdata('user_id'));
$q = $query->row();
$username = $q->user_eqsl_name;
$username = $qso->COL_STATION_CALLSIGN;
$password = $q->user_eqsl_password;
$error = '';

View file

@ -0,0 +1,178 @@
<?php if ( ! defined('BASEPATH')) exit('No direct script access allowed');
class Gridmap extends CI_Controller {
function __construct() {
parent::__construct();
}
public function index() {
$data['page_title'] = lang('gridsquares_gridsquare_map');
$this->load->model('bands');
$this->load->model('gridmap_model');
$data['modes'] = $this->gridmap_model->get_worked_modes();
$data['bands'] = $this->bands->get_worked_bands();
$data['sats_available'] = $this->bands->get_worked_sats();
$data['layer'] = $this->optionslib->get_option('option_map_tile_server');
$data['attribution'] = $this->optionslib->get_option('option_map_tile_server_copyright');
$data['gridsquares_gridsquares'] = lang('gridsquares_gridsquares');
$data['gridsquares_gridsquares_confirmed'] = lang('gridsquares_gridsquares_confirmed');
$data['gridsquares_gridsquares_not_confirmed'] = lang('gridsquares_gridsquares_not_confirmed');
$data['gridsquares_gridsquares_total_worked'] = lang('gridsquares_gridsquares_total_worked');
$footerData = [];
$footerData['scripts'] = [
'assets/js/leaflet/L.MaidenheadColouredGridMap.js',
'assets/js/sections/gridmap.js?'
];
$this->load->view('interface_assets/header', $data);
$this->load->view('gridmap/index');
$this->load->view('interface_assets/footer', $footerData);
}
public function getGridsjs() {
$band = $this->security->xss_clean($this->input->post('band'));
$mode = $this->security->xss_clean($this->input->post('mode'));
$qsl = $this->security->xss_clean($this->input->post('qsl'));
$lotw = $this->security->xss_clean($this->input->post('lotw'));
$eqsl = $this->security->xss_clean($this->input->post('eqsl'));
$sat = $this->security->xss_clean($this->input->post('sat'));
$this->load->model('gridmap_model');
$array_grid_2char = array();
$array_grid_4char = array();
$array_grid_6char = array();
$array_grid_2char_confirmed = array();
$array_grid_4char_confirmed = array();
$array_grid_6char_confirmed = array();
$grid_2char = "";
$grid_4char = "";
$grid_6char = "";
$grid_2char_confirmed = "";
$grid_4char_confirmed = "";
$grid_6char_confirmed = "";
$query = $this->gridmap_model->get_band_confirmed($band, $mode, $qsl, $lotw, $eqsl, $sat);
if ($query && $query->num_rows() > 0) {
foreach ($query->result() as $row) {
$grid_2char_confirmed = strtoupper(substr($row->GRID_SQUARES,0,2));
$grid_4char_confirmed = strtoupper(substr($row->GRID_SQUARES,0,4));
if ($this->config->item('map_6digit_grids')) {
$grid_6char_confirmed = strtoupper(substr($row->GRID_SQUARES,0,6));
}
// 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);
}
if(!in_array($grid_4char_confirmed, $array_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);
}
}
}
}
$query = $this->gridmap_model->get_band($band, $mode, $qsl, $lotw, $eqsl, $sat);
if ($query && $query->num_rows() > 0) {
foreach ($query->result() as $row) {
$grid_two = strtoupper(substr($row->GRID_SQUARES,0,2));
$grid_four = strtoupper(substr($row->GRID_SQUARES,0,4));
if ($this->config->item('map_6digit_grids')) {
$grid_six = strtoupper(substr($row->GRID_SQUARES,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_four, $array_grid_4char)){
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);
}
}
}
}
$query_vucc = $this->gridmap_model->get_band_worked_vucc_squares($band, $mode, $qsl, $lotw, $eqsl, $sat);
if ($query_vucc && $query_vucc->num_rows() > 0) {
foreach ($query_vucc->result() as $row) {
$grids = explode(",", $row->COL_VUCC_GRIDS);
foreach($grids as $key) {
$grid_two = strtoupper(substr($key,0,2));
$grid_four = strtoupper(substr($key,0,4));
// 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_four, $array_grid_4char)){
array_push($array_grid_4char, $grid_four);
}
}
}
}
// // Confirmed Squares
$query_vucc = $this->gridmap_model->get_band_confirmed_vucc_squares($band, $mode, $qsl, $lotw, $eqsl, $sat);
if ($query_vucc && $query_vucc->num_rows() > 0) {
foreach ($query_vucc->result() as $row) {
$grids = explode(",", $row->COL_VUCC_GRIDS);
foreach($grids as $key) {
$grid_2char_confirmed = strtoupper(substr($key,0,2));
$grid_4char_confirmed = strtoupper(substr($key,0,4));
// 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);
}
if(!in_array($grid_4char_confirmed, $array_grid_4char_confirmed)){
array_push($array_grid_4char_confirmed, $grid_4char_confirmed);
}
}
}
}
$data['grid_2char_confirmed'] = ($array_grid_2char_confirmed);
$data['grid_4char_confirmed'] = ($array_grid_4char_confirmed);
$data['grid_6char_confirmed'] = ($array_grid_6char_confirmed);
$data['grid_2char'] = ($array_grid_2char);
$data['grid_4char'] = ($array_grid_4char);
$data['grid_6char'] = ($array_grid_6char);
header('Content-Type: application/json');
echo json_encode($data);
}
}

View file

@ -0,0 +1,281 @@
<?php
use Cloudlog\Label\PDF_Label;
use Cloudlog\Label\tfpdf;
use Cloudlog\Label\font\unifont\ttfonts;
if ( ! defined('BASEPATH')) exit('No direct script access allowed');
class Labels extends CI_Controller {
/*
|--------------------------------------------------------------------------
| Controller: Labels
|--------------------------------------------------------------------------
|
| This Controller handles all things Labels, creating, editing and printing
|
|
*/
function __construct() {
parent::__construct();
$this->load->helper(array('form', 'url', 'psr4_autoloader'));
$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'); }
}
/*
|--------------------------------------------------------------------------
| Function: index
|--------------------------------------------------------------------------
|
| Nothing fancy just shows the main display of how many labels are waiting
| to be printed per station profile.
|
*/
public function index() {
$data['page_title'] = "QSL Card Labels";
$this->load->model('labels_model');
$data['labels'] = $this->labels_model->fetchLabels($this->session->userdata('user_id'));
$data['qsos'] = $this->labels_model->fetchQsos($this->session->userdata('user_id'));
$footerData = [];
$footerData['scripts'] = [
'assets/js/sections/labels.js',
];
$this->load->view('interface_assets/header', $data);
$this->load->view('labels/index');
$this->load->view('interface_assets/footer', $footerData);
}
/*
|--------------------------------------------------------------------------
| Function: create
|--------------------------------------------------------------------------
|
| Shows the form used to create a label type.
|
*/
public function create() {
$data['page_title'] = "Create Label Type";
$this->load->library('form_validation');
$this->form_validation->set_rules('label_name', 'Label Name', 'required');
if ($this->form_validation->run() == FALSE)
{
$this->load->view('interface_assets/header', $data);
$this->load->view('labels/create');
$this->load->view('interface_assets/footer');
}
else
{
$this->load->model('labels_model');
$this->labels_model->addLabel();
redirect('labels');
}
}
public function printids() {
$ids = xss_clean(json_decode($this->input->post('id')));
$this->load->model('labels_model');
$result = $this->labels_model->export_printrequestedids($ids);
$this->prepareLabel($result, true);
}
public function print($station_id) {
$clean_id = xss_clean($station_id);
$this->load->model('labels_model');
$result = $this->labels_model->export_printrequested($clean_id);
$this->prepareLabel($result);
}
function prepareLabel($qsos, $jscall = false) {
$this->load->model('labels_model');
$label = $this->labels_model->getDefaultLabel();
try {
if ($label) {
$pdf = new PDF_Label(array(
'paper-size' => $label->paper_type,
'metric' => $label->metric,
'marginLeft' => $label->marginleft,
'marginTop' => $label->margintop,
'NX' => $label->nx,
'NY' => $label->ny,
'SpaceX' => $label->spacex,
'SpaceY' => $label->spacey,
'width' => $label->width,
'height' => $label->height,
'font-size' => $label->font_size
));
} else {
if ($jscall) {
header('Content-Type: application/json');
echo json_encode(array('message' => 'You need to create a label and set it to be used for print.'));
return;
} else {
$this->session->set_flashdata('error', 'You need to create a label and set it to be used for print.');
redirect('labels');
}
}
} catch (\Throwable $th) {
if ($jscall) {
header('Content-Type: application/json');
echo json_encode(array('message' => 'Something went wrong! The label could not be generated. Check label size and font size.'));
return;
} else {
$this->session->set_flashdata('error', 'Something went wrong! The label could not be generated. Check label size and font size.');
redirect('labels');
}
}
define('FPDF_FONTPATH', './src/Label/font/');
$pdf->AddPage();
if ($label->font == 'DejaVuSans') {
$pdf->AddFont($label->font,'','DejaVuSansMono.ttf',true);
$pdf->SetFont($label->font);
} else {
$pdf->AddFont($label->font);
$pdf->SetFont($label->font);
}
if ($qsos->num_rows() > 0) {
if ($label->qsos == 1) {
$this->makeOneQsoLabel($qsos->result(), $pdf);
} else {
$this->makeMultiQsoLabel($qsos->result(), $pdf, $label->qsos);
}
} else {
$this->session->set_flashdata('message', '0 QSOs found for print!');
redirect('labels');
}
$pdf->Output();
}
function makeOneQsoLabel($qsos, $pdf) {
foreach($qsos as $qso) {
$time = strtotime($qso->COL_TIME_ON);
$myFormatForView = date("d/m/Y H:i", $time);
if($qso->COL_SAT_NAME != "") {
$text = sprintf("%s\n\n%s %s\n%s %s \n\n%s", 'To: '.$qso->COL_CALL, $myFormatForView, 'on '.$qso->COL_BAND.' 2x'.$qso->COL_MODE.' RST '.$qso->COL_RST_SENT.'', 'Satellite: '.$qso->COL_SAT_NAME.' Mode: '.strtoupper($qso->COL_SAT_MODE).' ', '', 'Thanks for QSO.');
} else {
$text = sprintf("%s\n\n%s %s\n%s %s \n\n%s", 'To: '.$qso->COL_CALL, $myFormatForView, 'on '.$qso->COL_BAND.' 2x'.$qso->COL_MODE.' RST '.$qso->COL_RST_SENT.'', '', '', 'Thanks for QSO.');
}
$pdf->Add_Label($text);
}
}
function makeMultiQsoLabel($qsos, $pdf, $numberofqsos) {
$text = '';
$current_callsign = '';
$qso_data = [];
foreach($qsos as $qso) {
if ($qso->COL_CALL !== $current_callsign) {
if (!empty($qso_data)) {
$this->makeLabel($pdf, $current_callsign, $qso_data, $numberofqsos);
$qso_data = [];
}
$current_callsign = $qso->COL_CALL;
}
$qso_data[] = [
'time' => $qso->COL_TIME_ON,
'band' => $qso->COL_BAND,
'mode' => $qso->COL_MODE,
'rst' => $qso->COL_RST_SENT,
'mygrid' => $qso->station_gridsquare,
'sat' => $qso->COL_SAT_NAME,
'sat_mode' => $qso->COL_SAT_MODE,
];
}
if (!empty($qso_data)) {
$this->makeLabel($pdf, $current_callsign, $qso_data, $numberofqsos);
}
}
function makeLabel($pdf, $current_callsign, $qso_data, $numberofqsos) {
$text = 'To: ' . $current_callsign . "\n\n";
$count = 0;
$qsotext = '';
foreach ($qso_data as $key => $qso) {
$time = strtotime($qso['time']);
$myFormatForView = date("d/m/Y H:i", $time);
if($qso['sat'] != "") {
$qsotext .= sprintf("%s %s %s %s\n", $myFormatForView, 'on '.$qso['band'].' 2x'.$qso['mode'].' RST '.$qso['rst'].'', 'Satellite: '.$qso['sat'].' Mode: '.strtoupper($qso['sat_mode']).' ', '');
} else {
$qsotext .= sprintf("%s %s\n", $myFormatForView, 'on '.$qso['band'].' 2x'.$qso['mode'].' RST '.$qso['rst']);
}
$count++;
if ($count == $numberofqsos) {
$text .= $qsotext;
$text .= "\n" . 'Thanks for QSOs.';
$pdf->Add_Label($text);
$text = 'To: ' . $current_callsign . "\n\n";
$count = 0;
$qsotext = '';
}
unset($qso_data[$key]);
}
if ($qsotext != '') {
$text .= $qsotext;
$text .= "\n" . 'Thanks for QSOs.';
$pdf->Add_Label($text);
}
}
public function edit($id) {
$this->load->model('labels_model');
$cleanid = $this->security->xss_clean($id);
$data['label'] = $this->labels_model->getLabel($cleanid);
$data['page_title'] = "Edit Label";
$this->load->view('interface_assets/header', $data);
$this->load->view('labels/edit');
$this->load->view('interface_assets/footer');
}
public function updateLabel($id) {
$this->load->model('labels_model');
$this->labels_model->updateLabel($id);
$this->session->set_flashdata('message', 'Label was saved.');
redirect('labels');
}
public function delete($id) {
$this->load->model('labels_model');
$this->labels_model->deleteLabel($id);
$this->session->set_flashdata('warning', 'Label was deleted.');
redirect('labels');
}
public function saveDefaultLabel() {
$id = $this->input->post('id');
$this->load->model('labels_model');
$this->labels_model->saveDefaultLabel($id);
}
}

View file

@ -128,6 +128,7 @@ class Logbook extends CI_Controller {
"dxcc" => false,
"callsign_name" => "",
"callsign_qra" => "",
"callsign_distance" => 0,
"callsign_qth" => "",
"callsign_iota" => "",
"callsign_state" => "",
@ -155,6 +156,7 @@ class Logbook extends CI_Controller {
$return['callsign_name'] = $this->logbook_model->call_name($callsign);
$return['callsign_qra'] = $this->logbook_model->call_qra($callsign);
$return['callsign_distance'] = $this->distance($return['callsign_qra'], $station_id);
$return['callsign_qth'] = $this->logbook_model->call_qth($callsign);
$return['callsign_iota'] = $this->logbook_model->call_iota($callsign);
$return['qsl_manager'] = $this->logbook_model->call_qslvia($callsign);
@ -186,6 +188,7 @@ class Logbook extends CI_Controller {
{
$return['callsign_name'] = $callbook['name'];
$return['callsign_qra'] = $callbook['gridsquare'];
$return['callsign_distance'] = $this->distance($callbook['gridsquare'], $station_id);
$return['callsign_qth'] = $callbook['city'];
$return['callsign_iota'] = $callbook['iota'];
$return['callsign_state'] = $callbook['state'];
@ -770,6 +773,7 @@ class Logbook extends CI_Controller {
$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');
$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);
@ -949,6 +953,36 @@ class Logbook extends CI_Controller {
return "";
}
/* return distance */
function searchdistance($locator, $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 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');
}
$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');
@ -979,6 +1013,36 @@ class Logbook extends CI_Controller {
return "";
}
/* return distance */
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');
}
$distance = $this->qra->distance($mylocator, $locator, 'K');
}
return $distance;
}
function qralatlng($qra) {
$this->load->library('Qra');
$latlng = $this->qra->qra2latlong($qra);

View file

@ -184,4 +184,32 @@ class Logbookadvanced extends CI_Controller {
header("Content-Type: application/json");
print json_encode($q);
}
function update_qsl_received() {
$this->load->model('logbookadvanced_model');
$ids = xss_clean($this->input->post('id'));
$user_id = (int)$this->session->userdata('user_id');
$method = xss_clean($this->input->post('method'));
$sent = xss_clean($this->input->post('sent'));
$status = $this->logbookadvanced_model->updateQslReceived($ids, $user_id, $method, $sent);
$data = $this->logbookadvanced_model->getQsosForAdif($ids, $user_id);
$results = $data->result('array');
$qsos = [];
foreach ($results as $data) {
$qsos[] = new QSO($data);
}
$q = [];
foreach ($qsos as $qso) {
$q[] = $qso->toArray();
}
header("Content-Type: application/json");
print json_encode($q);
}
}

View file

@ -538,7 +538,19 @@ class Lotw extends CI_Controller {
$cnty = "";
}
$lotw_status = $this->logbook_model->lotw_update($time_on, $record['call'], $record['band'], $qsl_date, $record['qsl_rcvd'], $state, $qsl_gridsquare, $iota, $cnty);
if (isset($record['cqz'])) {
$cqz = $record['cqz'];
} else {
$cqz = "";
}
if (isset($record['ituz'])) {
$ituz = $record['ituz'];
} else {
$ituz = "";
}
$lotw_status = $this->logbook_model->lotw_update($time_on, $record['call'], $record['band'], $qsl_date, $record['qsl_rcvd'], $state, $qsl_gridsquare, $iota, $cnty, $cqz, $ituz);
}
@ -567,7 +579,6 @@ class Lotw extends CI_Controller {
unlink($filepath);
if(isset($data['lotw_table_headers'])) {
echo "LoTW Matches<br>";
if($display_view == TRUE) {
$data['page_title'] = "LoTW ADIF Information";
$this->load->view('interface_assets/header', $data);

View file

@ -232,6 +232,22 @@ class Options extends CI_Controller {
$this->session->set_flashdata('success', $this->lang->line('options_smtp_encryption_changed_to').$this->input->post('smtpEncryption'));
}
// Update email sender name within the options system
$emailSenderNameupdate = $this->optionslib->update('emailSenderName', $this->input->post('emailSenderName'), 'yes');
// If email address update is complete set a flashsession with a success note
if($emailSenderNameupdate == TRUE) {
$this->session->set_flashdata('success', $this->lang->line('options_email_sender_name_changed_to').$this->input->post('emailSenderName'));
}
// Update email address choice within the options system
$emailAddressupdate = $this->optionslib->update('emailAddress', $this->input->post('emailAddress'), 'yes');
// If email address update is complete set a flashsession with a success note
if($emailAddressupdate == TRUE) {
$this->session->set_flashdata('success', $this->lang->line('options_email_address_changed_to').$this->input->post('emailAddress'));
}
// Update smtpHost choice within the options system
$smtpHostupdate = $this->optionslib->update('smtpHost', $this->input->post('smtpHost'), 'yes');

View file

@ -181,8 +181,8 @@ class Oqrs extends CI_Controller {
$data['usermessage'] = $this->security->xss_clean($postdata['message']);
$message = $this->load->view('email/oqrs_request', $data, TRUE);
$this->email->from('noreply@cloudlog.co.uk', 'Cloudlog');
$this->email->from($this->optionslib->get_option('emailAddress'), $this->optionslib->get_option('emailSenderName'));
$this->email->to($email);
$this->email->reply_to($this->security->xss_clean($postdata['email']), strtoupper($data['callsign']));

View file

@ -251,6 +251,11 @@ class Update extends CI_Controller {
$this->logbook_model->check_missing_continent();
}
public function update_distances() {
$this->load->model('logbook_model');
$this->logbook_model->update_distances();
}
public function check_missing_grid($all = false){
$this->load->model('logbook_model');
$this->logbook_model->check_missing_grid_id($all);

View file

@ -608,7 +608,7 @@ class User extends CI_Controller {
$message = $this->load->view('email/forgot_password', $this->data, TRUE);
$this->email->from('noreply@cloudlog.co.uk', 'Cloudlog');
$this->email->from($this->optionslib->get_option('emailAddress'), $this->optionslib->get_option('emailSenderName'));
$this->email->to($this->input->post('email', true));
$this->email->subject('Cloudlog Account Password Reset');

View file

@ -110,6 +110,7 @@ $lang['gen_hamradio_sota'] = 'SOTA';
$lang['gen_hamradio_wwff'] = 'WWFF';
$lang['gen_hamradio_pota'] = 'POTA';
$lang['gen_hamradio_gridsquare'] = 'Gridsquare';
$lang['gen_hamradio_distance'] = 'Distance';
$lang['gen_hamradio_operator'] = 'Operator';
$lang['gen_hamradio_sig'] = 'Sig';

View file

@ -2,8 +2,6 @@
defined('BASEPATH') OR exit('No direct script access allowed');
$lang['gridsquares_gridsquare_map'] = 'Gridsquare map';
$lang['gridsquares_confirmed_is_green'] = 'Confirmed is Green';
@ -14,3 +12,15 @@ $lang['gridsquares_this_map_does_not_include_satellite_internet_or_repeater_qsos
$lang['gridsquares_grid_squares'] = 'grid square';
$lang['gridsquares_total_count'] = 'Total count';
$lang['gridsquares_band'] = 'Band';
$lang['gridsquares_mode'] = 'Mode';
$lang['gridsquares_sat'] = 'Satellite';
$lang['gridsquares_confirmation'] = 'Confirmation';
$lang['gridsquares_button_plot'] = 'Plot';
$lang['gridsquares_gridsquares'] = 'Gridsquares';
$lang['gridsquares_gridsquares_confirmed'] = 'Gridsquares confirmed';
$lang['gridsquares_gridsquares_not_confirmed'] = 'Gridsquares not confirmed';
$lang['gridsquares_gridsquares_total_worked'] = 'Total gridsquares worked';

View file

@ -21,6 +21,7 @@ $lang['menu_notes'] = 'Notes';
$lang['menu_analytics'] = 'Analytics';
$lang['menu_statistics'] = 'Statistics';
$lang['menu_gridsquares'] = 'Gridsquares';
$lang['menu_gridmap'] = 'Gridsquare Map';
$lang['menu_activated_gridsquares'] = 'Activated Gridsquares';
$lang['menu_gridsquare_activators'] = 'Gridsquare Activators';
$lang['menu_distances_worked'] = 'Distances Worked';
@ -70,6 +71,7 @@ $lang['menu_sota_csv_export'] = 'SOTA CSV Export';
$lang['menu_cabrillo_export'] = 'Cabrillo Export';
$lang['menu_oqrs_requests'] = 'OQRS Requests';
$lang['menu_print_requested_qsls'] = 'Print Requested QSLs';
$lang['menu_labels'] = 'Labels';
$lang['menu_logbook_of_the_world'] = 'Logbook of the World';
$lang['menu_eqsl_import_export'] = 'eQSL Import / Export';
$lang['menu_qrz_logbook'] = 'QRZ Logbook';

View file

@ -32,6 +32,8 @@ $lang['options_radio_timeout_warning_changed_to'] = 'Radio Timeout Warning chang
$lang['options_email'] = 'Email';
$lang['options_outgoing_protocol'] = 'Outgoing Protocol';
$lang['options_smtp_encryption'] = 'SMTP Encryption';
$lang['options_email_address'] = 'Email Address';
$lang['options_email_sender_name'] = 'Email Sender Name';
$lang['options_smtp_host'] = 'SMTP Host';
$lang['options_smtp_port'] = 'SMTP Port';
$lang['options_smtp_username'] = 'SMTP Username';
@ -40,6 +42,8 @@ $lang['options_crlf'] = 'CRLF';
$lang['options_newline'] = 'Newline';
$lang['options_outgoing_email_protocol_changed_to'] = 'Outgoing Email Protocol changed to ';
$lang['options_smtp_encryption_changed_to'] = 'SMTP Encryption changed to ';
$lang['options_email_address_changed_to'] = 'Email Address changed to ';
$lang['options_email_sender_name_changed_to'] = 'Email Sender Name changed to ';
$lang['options_smtp_host_changed_to'] = 'SMTP Host changed to ';
$lang['options_smtp_port_changed_to'] = 'SMTP Post changed to ';
$lang['options_smtp_username_changed_to'] = 'SMTP Username changed to ';

View file

@ -8,3 +8,84 @@ $lang['account_column2_text'] = 'Sarake 2';
$lang['account_column3_text'] = 'Sarake 3';
$lang['account_column4_text'] = 'Sarake 4';
$lang['account_column5_text'] = 'Sarake 5 (vain lokikirjassa)';
$lang['account_create_user_account'] = 'Luo käyttäjätili';
$lang['account_edit_account'] = 'Muokkaa käyttäjätiliä';
$lang['account_account_information'] = 'Account Information';
$lang['account_username'] = 'käyttäjänimi';
$lang['account_email_address'] = 'Email';
$lang['account_password'] = 'Salasana';
$lang['account_roles'] = 'Roolit';
$lang['account_user_role'] = 'Käyttäjän rooli';
$lang['account_theme'] = 'Teema';
$lang['account_stylesheet'] = 'Tyylisivu';
$lang['account_personal_information'] = 'Henkilötiedot';
$lang['account_first_name'] = 'Etunimi';
$lang['account_last_name'] = 'Sukunimi';
$lang['account_callsign'] = 'Radioamatöörikutsu';
$lang['account_gridsquare'] = 'Gridsquare';
$lang['account_cloudlog_preferences'] = 'Cloudlog Asetukset';
$lang['account_timezone'] = 'Aikavyöhyke';
$lang['account_date_format'] = 'Päivämäärämuoto';
$lang['account_measurement_preference'] = 'Mittayksikkömuoto';
$lang['account_select_how_you_would_like_dates_shown_when_logged_into_your_account'] = 'Valitse, miten haluat päivämäärät näkyvän, kun olet kirjautunut tilillesi.';
$lang['account_choose_which_unit_distances_will_be_shown_in'] = 'Valitse, mitä mittayksikkömuotoa käytetään';
$lang['account_main_menu'] = 'Main Menu';
$lang['account_show_notes_in_the_main_menu'] = 'Näytä "Muistio" päävalikossa.';
$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) Käyttäjänimi';
$lang['account_logbook_of_the_world_lotw_password'] = 'Logbook of The World (LoTW) Salasana';
$lang['account_leave_blank_to_keep_existing_password'] = 'Jätä tyhjäksi säilyttääksesi tietokannan nykyisen salasanan';
$lang['account_clublog'] = 'Club Log';
$lang['account_clublog_email_callsign'] = 'Club Log Sähköposti/Kutsu';
$lang['account_clublog_password'] = 'Club Log Salasana';
$lang['account_the_email_or_callsign_you_use_to_login_to_club_log'] = 'Sähköposti tai kutsu, jota käytät kirjautuessasi Club Log:iin';
$lang['account_eqsl'] = 'eQSL';
$lang['account_eqsl_username'] = 'eQSL.cc Käyttäjänimi';
$lang['account_eqsl_password'] = 'eQSL.cc Salasana';
$lang['account_save_account_changes'] = 'Tallenna käyttäjätilin muutokset';
$lang['account_create_account'] = 'Luo käyttäjätili';
$lang['account_delete_user_account'] = 'Poista käyttäjätili';
$lang['account_are_you_sure_you_want_to_delete_the_user_account'] = 'Oletko varma, että haluat poistaa käyttäjätilin';
$lang['account_yes_delete_this_user'] = 'Kyllä, poista tämä käyttäjätili';
$lang['account_no_do_not_delete_this_user'] = 'En, älä poista tätä käyttäjätiliä';
$lang['account_forgot_password'] = 'Salasana unohtunut?';
$lang['account_you_can_reset_your_password_here'] = 'Voit resetoida salasanasi tästä';
$lang['account_reset_password'] = 'Resetoi salasana';
$lang['account_the_email_field_is_required'] = 'Sähköpostikenttä on pakollinen';
$lang['account_confirm_password'] = 'Vahvista salasana';
$lang['account_forgot_your_password'] = 'Salasana unohtunut?';
$lang['account_login_to_cloudlog'] = 'Kirjaudu Cloudlogiin';
$lang['account_login'] = 'Kirjaudu';

View file

@ -0,0 +1,18 @@
<?php
defined('BASEPATH') OR exit('No direct script access allowed');
$lang['admin_user_line1'] = 'Cloudlog tarvitsee toimiakseen vähintään yhden luodun käyttäjän.';
$lang['admin_user_line2'] = 'Käyttäjille voidaan määrittää rooleja, jotka antavat heille erilaisia käyttöoikeuksia, kuten QSO:n lisääminen lokikirjaan ja pääsy Cloudlog-sovellusliittymiin (API).';
$lang['admin_user_line3'] = 'Tällä hetkellä kirjautunut käyttäjä näkyy jokaisen sivun oikeassa yläkulmassa.';
$lang['admin_user_list'] = 'Käyttäjälista';
$lang['admin_user'] = 'Käyttäjä';
$lang['admin_email'] = 'E-mail';
$lang['admin_type'] = 'Rooli';
$lang['admin_options'] = 'Valinnat';
$lang['admin_create_user'] = 'Luo käyttäjä';
$lang['admin_delete'] = 'Poista';
$lang['admin_edit'] = 'Muokkaa';

View file

@ -0,0 +1,5 @@
<?php
defined('BASEPATH') OR exit('No direct script access allowed');
$lang['eqsl_short'] = 'eQSL';

View file

@ -38,16 +38,25 @@ $lang['general_word_method'] = 'Method / tapa';
$lang['general_word_sent'] = 'Lähetetyt';
$lang['general_word_received'] = 'Vastaanotetut';
$lang['general_word_requested'] = 'Pyydetyt';
$lang['general_word_qslcard'] = 'QSL kortti';
$lang['general_word_qslcard_management'] = 'QSL manageri';
$lang['general_word_queued'] = 'Queued';
$lang['general_word_invalid_ignore'] = 'Virheellinen (Ohita)';
$lang['general_word_qslcard'] = 'QSL-kortti';
$lang['general_word_qslcard_management'] = 'QSL-manageri';
$lang['general_word_qslcards'] = 'QSL-kortit';
$lang['general_word_qslcard_direct'] = 'Direct';
$lang['general_word_qslcard_bureau'] = 'Bureau';
$lang['general_word_qslcard_electronic'] = 'Electronic';
$lang['general_word_qslcard_manager'] = 'Manageri';
$lang['general_word_qslcard_via'] = 'Via';
$lang['general_word_eqslcard'] = 'eQSL Card';
$lang['general_word_eqslcards'] = 'eQSL Cards';
$lang['general_word_lotw'] = 'Logbook of the World';
$lang['general_edit_qso'] = 'Muokkaa QSO:a';
$lang['general_mark_qsl_rx_bureau'] = 'Merkitse QSL vastaanotetuksi (Bureau)';
$lang['general_mark_qsl_rx_direct'] = 'Merkitse QSL vastaanotetuksi (Direct)';
$lang['general_mark_qsl_tx_bureau'] = 'Merkitse QSL lähetetyksi (Bureau)';
$lang['general_mark_qsl_tx_direct'] = 'Merkitse QSL lähetetyksi (Direct)';
$lang['general_delete_qso'] = 'Poista QSO';
@ -86,15 +95,22 @@ $lang['gen_hamradio_logbook'] = 'Lokikirja';
$lang['gen_hamradio_cq_zone'] = 'CQ Zone';
$lang['gen_hamradio_dxcc'] = 'DXCC';
$lang['gen_hamradio_deleted_dxcc'] = 'Poistettu DXCC';
$lang['gen_hamradio_continent'] = 'Continent';
$lang['gen_hamradio_usa_state'] = 'USA:n osavaltio';
$lang['gen_hamradio_county_reference'] = 'USA lääni';
$lang['gen_hamradio_iota_reference'] = 'IOTA ref.numero';
$lang['gen_hamradio_sota_reference'] = 'SOTA ref.numero';
$lang['gen_hamradio_iota_reference'] = 'IOTA ref.nro';
$lang['gen_hamradio_sota_reference'] = 'SOTA ref.nro';
$lang['gen_hamradio_wwff_reference'] = 'WWFF ref.nro';
$lang['gen_hamradio_pota_reference'] = 'POTA ref.nro';
$lang['gen_hamradio_dok'] = 'DOK';
$lang['gen_hamradio_state'] = 'osavaltio';
$lang['gen_hamradio_iota'] = 'IOTA';
$lang['gen_hamradio_sota'] = 'SOTA';
$lang['gen_hamradio_wwff'] = 'WWFF';
$lang['gen_hamradio_pota'] = 'POTA';
$lang['gen_hamradio_gridsquare'] = 'Gridsquare';
$lang['gen_hamradio_operator'] = 'Operator';
$lang['gen_hamradio_sig'] = 'Sig';
$lang['gen_hamradio_sig_info'] = 'Sig Info';
@ -108,3 +124,17 @@ $lang['dashboard_countries_breakdown'] = 'Maatilasto';
$lang['gen_from_date'] = 'päivämäärästä';
$lang['gen_this_qso_was_confirmed_on'] = 'Tämä QSO vahvistettiin';
$lang['error_no_logbook_found'] = 'No logbooks were found. You need to define a logbook under Station Logbooks! Do it here:';
$lang['copy_to_clipboard'] = 'Kopioi leikepöydälle';
$lang['africa'] = 'Afrikka';
$lang['antarctica'] = 'Antarktis';
$lang['asia'] = 'Aasia';
$lang['europe'] = 'Eurooppa';
$lang['northamerica'] = 'Pohjois-Amerikka';
$lang['oceania'] = 'Oseania';
$lang['southamerica'] = 'Etelä-Amerikka';
$lang['gen_band_selection'] = 'Bandin valinta';

View file

@ -0,0 +1,16 @@
<?php
defined('BASEPATH') OR exit('No direct script access allowed');
$lang['gridsquares_gridsquare_map'] = 'Gridsquare-kartta';
$lang['gridsquares_confirmed_is_green'] = 'Vahvistetut ovat vihreitä';
$lang['gridsquares_worked_but_not_confirmed_is_red'] = 'Workitut, mutta ei vahvistetut ovat punaisena';
$lang['gridsquares_activated_but_not_confirmed_is_red'] = 'Aktivoidut, mutta vahvistamatta ovat punaisena.';
$lang['gridsquares_this_map_does_not_include_satellite_internet_or_repeater_qsos'] = 'Tällä kartalla ei näy satelliitti, internet tai ripiitteri QSO:t';
$lang['gridsquares_grid_squares'] = 'grid square';
$lang['gridsquares_total_count'] = 'Total count';

View file

@ -16,10 +16,13 @@ $lang['lotw_no_certs_uploaded'] = 'Sinun täytyy ladata ainakin yksi LoTW:n P12
$lang['lotw_date_created'] = 'Päivä jolloin luotu';
$lang['lotw_date_expires'] = 'Päivä joloin vanhenee';
$lang['lotw_status'] = 'Status';
$lang['lotw_qso_start_date'] = 'QSO aloituspäivä';
$lang['lotw_qso_end_date'] = 'QSO lopetuspäivä';
$lang['lotw_status'] = 'Status / Last upload';
$lang['lotw_options'] = 'Lisävaihtoehdot';
$lang['lotw_valid'] = 'Voimassa';
$lang['lotw_expired'] = 'Vanhentunut';
$lang['lotw_expiring'] = 'Vanhenee';
$lang['lotw_not_synced'] = 'Ei synkronoitu';
$lang['lotw_certificate_dxcc'] = 'Kutsumerkin varmenteen DXCC';
@ -50,3 +53,10 @@ $lang['lotw_p12_export_step_three'] = 'Klikkaa "Tallenna kutsumerkin varmenne /
$lang['lotw_p12_export_step_four'] = 'Lataa ja tuo äsken tallentamasi tiedosto tänne.';
$lang['lotw_confirmed'] = 'Tämä QSO on kuitattu LoTW:ssa';
// LoTW Expiry
$lang['lotw_cert_expiring'] = 'Vähintään yksi LOTW:n kutsumerkin varmenteesi on vanhentumassa!';
$lang['lotw_cert_expired'] = 'Vähintään yksi LOTW:n kutsumerkin varmenteesi on vanhentunut!!';
// Lotw User
$lang['lotw_user'] = 'Tämä asmea käyttää LoTW-palvelua. Viimeinen yhteyksien lähetys oli';

View file

@ -0,0 +1,81 @@
<?php
defined('BASEPATH') OR exit('No direct script access allowed');
$lang['menu_badge_developer_mode'] = 'Kehittäjätila';
$lang['menu_logbook'] = 'Logbook';
$lang['menu_overview'] = 'Yleiskatsaus';
$lang['menu_advanced'] = 'Advanced';
$lang['menu_qso'] = 'QSO';
$lang['menu_live_qso'] = 'Live QSO';
$lang['menu_post_qso'] = 'Post QSO';
$lang['menu_live_contest_logging'] = 'Live Contest Logging';
$lang['menu_post_contest_logging'] = 'Post Contest Logging';
$lang['menu_view_qsl'] = 'Näytä QSL';
$lang['menu_view_eqsl'] = 'Näytä eQSL';
$lang['menu_notes'] = 'Muistio';
$lang['menu_analytics'] = 'Analyysit';
$lang['menu_statistics'] = 'Statistiikkaa';
$lang['menu_gridsquares'] = 'Ruudut/Gridsquares';
$lang['menu_activated_gridsquares'] = 'Aktivoidut ruudut';
$lang['menu_gridsquare_activators'] = 'Ruutuja aktivoineet kutsut';
$lang['menu_distances_worked'] = 'Workitut etäisyydet';
$lang['menu_days_with_qsos'] = 'QSO:llsia päiviä';
$lang['menu_timeline'] = 'Aikajana';
$lang['menu_accumulated_statistics'] = 'Kertyneet tilastot';
$lang['menu_timeplotter'] = 'Aikajana';
$lang['menu_custom_maps'] = 'Custom Maps';
$lang['menu_continents'] = 'Mantereet';
$lang['menu_awards'] = 'Awardit';
$lang['menu_cq'] = 'CQ';
$lang['menu_dok'] = 'DOK';
$lang['menu_dxcc'] = 'DXCC';
$lang['menu_iota'] = 'IOTA';
$lang['menu_pota'] = 'POTA';
$lang['menu_sig'] = 'SIG';
$lang['menu_sota'] = 'SOTA';
$lang['menu_us_counties'] = 'USA Osavaltiot';
$lang['menu_vucc'] = 'VUCC';
$lang['menu_was'] = 'WAS';
$lang['menu_wwff'] = 'WWFF';
$lang['menu_admin'] = 'Admin';
$lang['menu_user_account'] = 'Käyttäjätilit';
$lang['menu_global_options'] = 'Yleiset asetukset';
$lang['menu_modes'] = 'Modet';
$lang['menu_contests'] = 'Kontestit';
$lang['menu_themes'] = 'Teemat';
$lang['menu_backup'] = 'Varmuuskopiot';
$lang['menu_update_country_files'] = 'Päivitä Country Files';
$lang['menu_debug_information'] = 'Debug Information';
$lang['menu_search_text'] = 'Etsi kutsulla';
$lang['menu_search_button'] = 'Etsi';
$lang['menu_login_button'] = 'Kirjaudu';
$lang['menu_account'] = 'Käyttäjätili';
$lang['menu_station_logbooks'] = 'Station Logbooks';
$lang['menu_station_locations'] = 'Station Locations';
$lang['menu_bands'] = 'Bandit';
$lang['menu_adif_import_export'] = 'ADIF Tuonti / Vienti';
$lang['menu_kml_export'] = 'KML Vienti';
$lang['menu_dx_atlas_gridsquare_export'] = 'DX Atlas Gridsquare Vienti';
$lang['menu_sota_csv_export'] = 'SOTA CSV Vienti';
$lang['menu_cabrillo_export'] = 'Cabrillo Vienti';
$lang['menu_oqrs_requests'] = 'OQRS Pyynnöt';
$lang['menu_print_requested_qsls'] = 'Tulosta pyydetyt QSL:t';
$lang['menu_logbook_of_the_world'] = 'Logbook of the World';
$lang['menu_eqsl_import_export'] = 'eQSL Tuonti / Vienti';
$lang['menu_qrz_logbook'] = 'QRZ Logi';
$lang['menu_qo_100_dx_club_upload'] = 'QO-100 Dx Club Lähetys';
$lang['menu_api_keys'] = 'API Keys';
$lang['menu_hardware_interfaces'] = 'Hardware Interfaces';
$lang['menu_help'] = 'Help';
$lang['menu_forum'] = 'Foorumi';
$lang['menu_logout'] = 'Kirjaudu ulos';

View file

@ -6,7 +6,7 @@ $lang['notes_menu_notes'] = 'Muistiinpanot';
$lang['notes_edit_note'] = 'Muokkaa muistiinpanoa';
$lang['notes_your_notes'] = 'Muistiinpanosi';
$lang['notes_welcome'] = "Näyttää siltä, ettei sinulla ole vielä yhtään muistiinpanoa. Nämä Cloudlogin muistiinpanot ovat kätevä tapa tallentaa tärkeitä tietoja, kuten ATU:n asetukset, taajuudet ja mitä tahansa mieleesi tuleekin. Muistiinpanosi säilyvät täällä tallessa, eikä sinun tarvitse etsiä niitä paperipinojesi alta. Näin aika säästyy workkimiseen --... ...-- ";
$lang['notes_welcome'] = "Näyttää siltä, ettei sinulla ole vielä yhtään muistiinpanoa. Tämä Cloudlogin muistio ovat kätevä tapa tallentaa vaikka ATU:n asetukset, taajuudet. Muistiinpanosi säilyvät täällä tallessa, eikä sinun tarvitse etsiä niitä paperipinojesi alta. Näin aika säästyy workkimiseen --... ...-- ";
$lang['notes_create_note'] = 'Luo uusi muistiinpano';

View file

@ -0,0 +1,57 @@
<?php
defined('BASEPATH') OR exit('No direct script access allowed');
$lang['options_cloudlog_options'] = 'Cloudlog Options';
$lang['options_message1'] = 'Cloudlog Options are global settings used for all users of the installation, which are overridden if there\'s a setting on a user level.';
$lang['options_appearance'] = 'Ulkoasu';
$lang['options_theme'] = 'Teema';
$lang['options_global_theme_choice_this_is_used_when_users_arent_logged_in'] = 'Yleisen teeman valinta, joka vaikuttaa sivuston vierailijoihin. ';
$lang['options_public_search_bar'] = 'Julkinen hakukenttä';
$lang['options_this_allows_non_logged_in_users_to_access_the_search_functions'] = 'Tämä mahdollistaa vieraiden suorittaa hakuja kirjautumatta.';
$lang['options_dashboard_notification_banner'] = 'Dashboard Notification Banner';
$lang['options_this_allows_to_disable_the_global_notification_banner_on_the_dashboard'] = 'This allows to disable the global notification banner on the dashboard.';
$lang['options_dashboard_map'] = 'Dashboard Map';
$lang['options_this_allows_the_map_on_the_dashboard_to_be_disabled_or_placed_on_the_right'] = 'This allows the map on the dashboard to be disabled or placed on the right.';
$lang['options_logbook_map'] = 'Logbook Map';
$lang['options_this_allows_to_disable_the_map_in_the_logbook'] = 'This allows to disable the map in the logbook.';
$lang['options_theme_changed_to'] = 'Vaihdettu teema on ';
$lang['options_global_search_changed_to'] = 'Julkinen haku on vaihdettu: ';
$lang['options_dashboard_banner_changed_to'] = 'Dashboard banner changed to ';
$lang['options_dashboard_map_changed_to'] = 'Dashboard map changed to ';
$lang['options_logbook_map_changed_to'] = 'Logbook map changed to ';
$lang['options_radios'] = 'Radiot';
$lang['options_radio_settings'] = 'Radion asetukset';
$lang['options_radio_timeout_warning'] = 'Radio Timeout Warning';
$lang['options_the_radio_timeout_warning_is_used_on_the_qso_entry_panel_to_alert_you_to_radio_interface_disconnects'] = 'The Radio Timeout Warning is used on the QSO entry panel to alert you to radio interface disconnects.';
$lang['options_this_number_is_in_seconds'] = 'This number is in seconds.';
$lang['options_radio_timeout_warning_changed_to'] = 'Radio Timeout Warning changed to ';
$lang['options_email'] = 'Email';
$lang['options_outgoing_protocol'] = 'Outgoing Protocol';
$lang['options_smtp_encryption'] = 'SMTP Encryption';
$lang['options_smtp_host'] = 'SMTP Host';
$lang['options_smtp_port'] = 'SMTP Port';
$lang['options_smtp_username'] = 'SMTP Username';
$lang['options_smtp_password'] = 'SMTP Password';
$lang['options_crlf'] = 'CRLF';
$lang['options_newline'] = 'Newline';
$lang['options_outgoing_email_protocol_changed_to'] = 'Outgoing Email Protocol changed to ';
$lang['options_smtp_encryption_changed_to'] = 'SMTP Encryption changed to ';
$lang['options_smtp_host_changed_to'] = 'SMTP Host changed to ';
$lang['options_smtp_port_changed_to'] = 'SMTP Post changed to ';
$lang['options_smtp_username_changed_to'] = 'SMTP Username changed to ';
$lang['options_smtp_password_changed_to'] = 'SMTP Password changed to ';
$lang['options_email_crlf_changed_to'] = 'Email CRLF changed to ';
$lang['options_email_newline_changed_to'] = 'Email Newline changed to ';
$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_oqrs_options_have_been_saved'] = 'OQRS options have been saved.';
$lang['options_save'] = 'Save';

View file

@ -7,10 +7,16 @@ $lang['qslcard_string_your_are_using'] = 'Käytät';
$lang['qslcard_string_disk_space'] = 'levytilaa QSL-korteille';
$lang['qslcard_info'] = 'QSL Info';
$lang['qslcard_sent_bureau'] = 'QSL kortti on lähetty buron kautta';
$lang['qslcard_sent_direct'] = 'QSL kortti on lähetetty direktinä';
$lang['qslcard_rcvd_bureau'] = 'QSL kortti on vastaanotettu buron kautta';
$lang['qslcard_rcvd_direct'] = 'QSL kortti on vastaanotettu direktinä';
$lang['qslcard_sent'] = 'QSL Card has been sent';
$lang['qslcard_sent_bureau'] = 'QSL-kortti on lähetty buron kautta';
$lang['qslcard_sent_direct'] = 'QSL-kortti on lähetetty direktinä';
$lang['qslcard_sent_electronic'] = 'QSL-kortti on lähetetty sähköisesti';
$lang['qslcard_sent_manager'] = 'QSL-kortti on lähetetty managerin kautta';
$lang['qslcard_rcvd'] = 'QSL-kortti on vastaanotettu';
$lang['qslcard_rcvd_bureau'] = 'QSL-kortti on vastaanotettu buron kautta';
$lang['qslcard_rcvd_direct'] = 'QSL-kortti on vastaanotettu direktinä';
$lang['qslcard_rcvd_electronic'] = 'QSL-kortti on vastaanotettu sähköisesti';
$lang['qslcard_rcvd_manager'] = 'QSL-kortti on vastaanotettu managerin kautta';
$lang['qslcard_upload_front'] = 'QSL-kortin ladattu etukuva';
$lang['qslcard_upload_back'] = 'QSL-kortin ladattu takakuva';

View file

@ -6,18 +6,22 @@ defined('BASEPATH') OR exit('No direct script access allowed');
$lang['qso_title_qso_map'] = 'Vasta-aseman sijainti kartalla';
$lang['qso_title_suggestions'] = 'Kutsumerkkiehdotukset';
$lang['qso_title_previous_contacts'] = 'Edelliset yhteydet';
$lang['qso_title_image'] = 'Profiilikuva';
// Input Help Text on the /QSO Display
$lang['qso_transmit_power_helptext'] = 'Anna teholukema Watteina käyttäen vain numeroita.';
$lang['qso_sota_ref_helptext'] = 'Esimerkiksi: OH/JS-004.';
$lang['qso_wwff_ref_helptext'] = 'Esimerkiksi: OHFF-1234.';
$lang['qso_pota_ref_helptext'] = 'Esimerkiksi: PA-0150.';
$lang['qso_sig_helptext'] = 'Esimerkiksi: GMA';
$lang['qso_sig_info_helptext'] = 'Esimerkiksi: DA/NW-357';
$lang['qso_dok_helptext'] = 'Esimerkiksi: Q03';
$lang['qso_notes_helptext'] = 'Muistion sisältö tallentuu vain Cloudlogiin, tämän kuson yhteyteen, eikä siirry eteenpäin muihin palveluihin.';
$lang['qso_notes_helptext'] = 'Muistio tallentuu vain logiin, tähän yhteydeen, eikä siirry eteenpäin muihin palveluihin.';
$lang['qsl_notes_helptext'] = 'Tämä viestisi siirtyy myös QSL-palveluihin, kuten eqsl.cc.';
// Button Text on /qso Display

View file

@ -0,0 +1,17 @@
<?php
defined('BASEPATH') OR exit('No direct script access allowed');
$lang['statistics_statistics'] = 'Tilastot';
$lang['statistics_explore_the_logbook'] = 'Uppoudu lokiisi tarkemmin';
$lang['statistics_years'] = 'Vuodet';
$lang['statistics_mode'] = 'Modet';
$lang['statistics_bands'] = 'Bandit';
$lang['statistics_qsos'] = 'QSO:t';
$lang['statistics_unique_callsigns'] = 'Erillisiä kutsuja';
$lang['statistics_total'] = 'Yhteensä';
$lang['statistics_year'] = 'Vuosi';

View file

@ -111,6 +111,7 @@ $lang['gen_hamradio_sota'] = 'SOTA';
$lang['gen_hamradio_wwff'] = 'WWFF';
$lang['gen_hamradio_pota'] = 'POTA';
$lang['gen_hamradio_gridsquare'] = 'Planquadrat';
$lang['gen_hamradio_distance'] = 'Entfernung';
$lang['gen_hamradio_operator'] = 'Operator';
$lang['gen_hamradio_sig'] = 'Sig';

View file

@ -6,9 +6,21 @@ $lang['gridsquares_gridsquare_map'] = 'Planquadratkarte';
$lang['gridsquares_confirmed_is_green'] = 'Bestätigt ist grün';
$lang['gridsquares_worked_but_not_confirmed_is_red'] = 'Gearbeitet aber nicht bestätigt ist rot';
$lang['gridsquares_worked_but_not_confirmed_is_red'] = 'Aktiviert aber nicht bestätigt ist rot';
$lang['gridsquares_activated_but_not_confirmed_is_red'] = 'Aktiviert aber nicht bestätigt ist rot';
$lang['gridsquares_this_map_does_not_include_satellite_internet_or_repeater_qsos'] = 'Diese Karte beinhaltet keine Satelliten-, Internet- oder Relais-QSOs';
$lang['gridsquares_grid_squares'] = 'Planquadrate';
$lang['gridsquares_total_count'] = 'Summe';
$lang['gridsquares_band'] = 'Band';
$lang['gridsquares_mode'] = 'Mode';
$lang['gridsquares_sat'] = 'Satellit';
$lang['gridsquares_confirmation'] = 'Bestätigung';
$lang['gridsquares_button_plot'] = 'Kartieren';
$lang['gridsquares_gridsquares'] = 'Planquadrate';
$lang['gridsquares_gridsquares_confirmed'] = 'Planquadrate bestätigt';
$lang['gridsquares_gridsquares_not_confirmed'] = 'Planquadrate nicht bestätigt';
$lang['gridsquares_gridsquares_total_worked'] = 'Summe gearbeiteter Planquadrate';

View file

@ -21,6 +21,7 @@ $lang['menu_notes'] = 'Notizen';
$lang['menu_analytics'] = 'Analysen';
$lang['menu_statistics'] = 'Statistik';
$lang['menu_gridsquares'] = 'Planquadrate';
$lang['menu_gridmap'] = 'Planquadratkarte';
$lang['menu_activated_gridsquares'] = 'Aktivierte Planquadrate';
$lang['menu_gridsquare_activators'] = 'Planquadrat-Aktivierer';
$lang['menu_distances_worked'] = 'Gearbeitete Entfernungen';
@ -70,6 +71,7 @@ $lang['menu_sota_csv_export'] = 'SOTA CSV Export';
$lang['menu_cabrillo_export'] = 'Cabrillo Export';
$lang['menu_oqrs_requests'] = 'OQRS Anforderungen';
$lang['menu_print_requested_qsls'] = 'Druck angeforderter QSLs';
$lang['menu_labels'] = 'Etiketten';
$lang['menu_logbook_of_the_world'] = 'Logbook of the World';
$lang['menu_eqsl_import_export'] = 'eQSL Import / Export';
$lang['menu_qrz_logbook'] = 'QRZ Logbuch';

View file

@ -32,6 +32,8 @@ $lang['options_radio_timeout_warning_changed_to'] = 'Radio Timeout Warnung geän
$lang['options_email'] = 'Email';
$lang['options_outgoing_protocol'] = 'Protokoll für ausgehende Emails';
$lang['options_smtp_encryption'] = 'SMTP Verschlüsselung';
$lang['options_email_address'] = 'Emailaddresse';
$lang['options_email_sender_name'] = 'Email Absendername';
$lang['options_smtp_host'] = 'SMTP Host';
$lang['options_smtp_port'] = 'SMTP Port';
$lang['options_smtp_username'] = 'SMTP Benutzername';
@ -40,6 +42,8 @@ $lang['options_crlf'] = 'CRLF';
$lang['options_newline'] = 'Zeilenvorschub';
$lang['options_outgoing_email_protocol_changed_to'] = 'Protokoll für ausgehende Emails geändert zu ';
$lang['options_smtp_encryption_changed_to'] = 'SMTP Verschlüsselung geändert zu ';
$lang['options_email_address_changed_to'] = 'Emailadresse geändert zu ';
$lang['options_email_sender_name_changed_to'] = 'Email Absendername geändert zu ';
$lang['options_smtp_host_changed_to'] = 'SMTP Host geändert zu ';
$lang['options_smtp_port_changed_to'] = 'SMTP Post changed to ';
$lang['options_smtp_username_changed_to'] = 'SMTP Benutzername geändert zu ';

View file

@ -55,7 +55,14 @@ class Qra {
$stn = qra2latlong($rx);
// Feed in Lat Longs plus the unit type
$total_distance = distance($my[0], $my[1], $stn[0], $stn[1], $unit);
try
{
$total_distance = distance($my[0], $my[1], $stn[0], $stn[1], $unit);
}
catch (Exception $e)
{
$total_distance = 0;
}
// Return the distance
return $total_distance;

View file

@ -0,0 +1,128 @@
<?php
defined('BASEPATH') OR exit('No direct script access allowed');
class Migration_create_label_types_table extends CI_Migration {
public function up() {
if (!$this->db->table_exists('label_types')) {
$this->dbforge->add_field(array(
'id' => array(
'type' => 'INT',
'constraint' => 5,
'unsigned' => TRUE,
'auto_increment' => TRUE
),
'user_id' => array(
'type' => 'INT',
'constraint' => 5,
),
'label_name' => array(
'type' => 'VARCHAR',
'constraint' => '250',
),
'paper_type' => array(
'type' => 'VARCHAR',
'constraint' => '250',
),
'metric' => array(
'type' => 'VARCHAR',
'constraint' => '10',
),
'marginleft' => array(
'type' => 'DECIMAL',
'constraint' => '6,3',
'null' => TRUE,
),
'margintop' => array(
'type' => 'DECIMAL',
'constraint' => '6,3',
'null' => TRUE,
),
'nx' => array(
'type' => 'DECIMAL',
'constraint' => '6,3',
'null' => TRUE,
),
'ny' => array(
'type' => 'DECIMAL',
'constraint' => '6,3',
'null' => TRUE,
),
'spacex' => array(
'type' => 'DECIMAL',
'constraint' => '6,3',
'null' => TRUE,
),
'spacey' => array(
'type' => 'DECIMAL',
'constraint' => '6,3',
'null' => TRUE,
),
'width' => array(
'type' => 'DECIMAL',
'constraint' => '6,3',
'null' => TRUE,
),
'height' => array(
'type' => 'DECIMAL',
'constraint' => '6,3',
'null' => TRUE,
),
'font_size' => array(
'type' => 'INT',
'constraint' => '5',
'null' => TRUE,
),
'font' => array(
'type' => 'VARCHAR',
'constraint' => '250',
'null' => TRUE,
),
'qsos' => array(
'type' => 'INT',
'constraint' => '5',
'null' => TRUE,
),
'useforprint' => array(
'type' => 'INT',
'constraint' => '5',
'null' => TRUE,
),
'last_modified' => array(
'type' => 'timestamp',
'null' => TRUE,
),
));
$this->dbforge->add_key('id', TRUE);
$this->dbforge->add_key('user_id', TRUE);
$this->dbforge->create_table('label_types');
}
}
public function down(){
if ($this->db->table_exists('label_types')) {
$this->dbforge->drop_table('label_types');
}
}
}

View file

@ -10,8 +10,7 @@ class adif_data extends CI_Model {
if (strpos($this->api_model->access($api_key), 'r') !== false) {
$this->api_model->update_last_used($api_key);
$user_id = $this->api_model->key_userid($api_key);
$active_station_logbook = $CI->logbooks_model->find_active_station_logbook_from_userid($user_id);
$logbooks_locations_array = $CI->logbooks_model->list_logbook_relationships($active_station_logbook);
$logbooks_locations_array = $this->list_station_locations($user_id);
}
} else {
$logbooks_locations_array = $CI->logbooks_model->list_logbook_relationships($this->session->userdata('active_station_logbook'));
@ -27,6 +26,22 @@ class adif_data extends CI_Model {
return $query;
}
function list_station_locations($user_id) {
$this->db->where('user_id', $user_id);
$query = $this->db->get('station_profile');
if ($query->num_rows() == 0) {
return array();
}
$locations_array = array();
foreach ($query->result() as $row) {
array_push($locations_array, $row->station_id);
}
return $locations_array;
}
function export_printrequested($station_id = NULL) {
$this->load->model('stations');
$active_station_id = $this->stations->find_active();

View file

@ -0,0 +1,226 @@
<?php
class Gridmap_model extends CI_Model {
function get_band_confirmed($band, $mode, $qsl, $lotw, $eqsl, $sat) {
$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 distinct substring(COL_GRIDSQUARE,1,6) as GRID_SQUARES, COL_BAND FROM '
.$this->config->item('table_name')
.' WHERE station_id in ('
.$location_list.') AND COL_GRIDSQUARE != ""';
if ($band != 'All') {
if ($band == 'SAT') {
$sql .= " and col_prop_mode ='" . $band . "'";
if ($sat != 'All') {
$sql .= " and col_sat_name ='" . $sat . "'";
}
}
else {
$sql .= " and col_prop_mode !='SAT'";
$sql .= " and col_band ='" . $band . "'";
}
}
if ($mode != 'All') {
$sql .= " and (col_mode ='" . $mode . "' or col_submode ='" . $mode . "')";
}
$sql .= $this->addQslToQuery($qsl, $lotw, $eqsl);
return $this->db->query($sql);
}
function get_band($band, $mode, $qsl, $lotw, $eqsl, $sat) {
$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 distinct substring(COL_GRIDSQUARE,1,6) as GRID_SQUARES, COL_BAND FROM '
.$this->config->item('table_name')
.' WHERE station_id in ('
.$location_list.') AND COL_GRIDSQUARE != ""';
if ($band != 'All') {
if ($band == 'SAT') {
$sql .= " and col_prop_mode ='" . $band . "'";
if ($sat != 'All') {
$sql .= " and col_sat_name ='" . $sat . "'";
}
}
else {
$sql .= " and col_prop_mode !='SAT'";
$sql .= " and col_band ='" . $band . "'";
}
}
if ($mode != 'All') {
$sql .= " and (col_mode ='" . $mode . "' or col_submode ='" . $mode . "')";
}
return $this->db->query($sql);
}
function get_band_worked_vucc_squares($band, $mode, $qsl, $lotw, $eqsl, $sat) {
$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 distinct COL_VUCC_GRIDS, COL_BAND FROM '
.$this->config->item('table_name')
.' WHERE station_id in ('
.$location_list.') AND COL_VUCC_GRIDS != ""';
if ($band != 'All') {
if ($band == 'SAT') {
$sql .= " and col_prop_mode ='" . $band . "'";
if ($sat != 'All') {
$sql .= " and col_sat_name ='" . $sat . "'";
}
}
else {
$sql .= " and col_prop_mode !='SAT'";
$sql .= " and col_band ='" . $band . "'";
}
}
if ($mode != 'All') {
$sql .= " and (col_mode ='" . $mode . "' or col_submode ='" . $mode . "')";
}
return $this->db->query($sql);
}
function get_band_confirmed_vucc_squares($band, $mode, $qsl, $lotw, $eqsl, $sat) {
$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 distinct COL_VUCC_GRIDS, COL_BAND FROM '
.$this->config->item('table_name')
.' WHERE station_id in ('
.$location_list.') AND COL_VUCC_GRIDS != ""';
if ($band != 'All') {
if ($band == 'SAT') {
$sql .= " and col_prop_mode ='" . $band . "'";
if ($sat != 'All') {
$sql .= " and col_sat_name ='" . $sat . "'";
}
}
else {
$sql .= " and col_prop_mode !='SAT'";
$sql .= " and col_band ='" . $band . "'";
}
}
if ($mode != 'All') {
$sql .= " and (col_mode ='" . $mode . "' or col_submode ='" . $mode . "')";
}
$sql .= $this->addQslToQuery($qsl, $lotw, $eqsl);
return $this->db->query($sql);
}
// Adds confirmation to query
function addQslToQuery($qsl, $lotw, $eqsl) {
$sql = '';
if ($lotw == "true" && $qsl == "false" && $eqsl == "false") {
$sql .= " and col_lotw_qsl_rcvd = 'Y'";
}
if ($qsl == "true" && $lotw == "false" && $eqsl == "false") {
$sql .= " and col_qsl_rcvd = 'Y'";
}
if ($eqsl == "true" && $lotw == "false" && $qsl == "false") {
$sql .= " and col_eqsl_qsl_rcvd = 'Y'";
}
if ($lotw == "true" && $qsl == "true" && $eqsl == "false") {
$sql .= " and (col_lotw_qsl_rcvd = 'Y' or col_qsl_rcvd = 'Y')";
}
if ($qsl == "true" && $lotw == "false" && $eqsl == "true") {
$sql .= " and (col_qsl_rcvd = 'Y' or col_eqsl_qsl_rcvd = 'Y')";
}
if ($eqsl == "true" && $lotw == "true" && $qsl == "false") {
$sql .= " and (col_eqsl_qsl_rcvd = 'Y' or col_lotw_qsl_rcvd = 'Y')";
}
if ($qsl == "true" && $lotw == "true" && $eqsl == "true") {
$sql .= " and (col_qsl_rcvd = 'Y' or col_lotw_qsl_rcvd = 'Y' or col_eqsl_qsl_rcvd = 'Y')";
}
if ($qsl == "false" && $lotw == "false" && $eqsl == "false") {
$sql .= " and (col_qsl_rcvd != 'Y' and col_lotw_qsl_rcvd != 'Y' and col_eqsl_qsl_rcvd != 'Y')";
}
return $sql;
}
/*
* Get's the worked modes from the log
*/
function get_worked_modes() {
$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)."'";
// get all worked modes from database
$data = $this->db->query(
"SELECT distinct LOWER(`COL_MODE`) as `COL_MODE` FROM `" . $this->config->item('table_name') . "` WHERE station_id in (" . $location_list . ") order by COL_MODE ASC"
);
$results = array();
foreach ($data->result() as $row) {
array_push($results, $row->COL_MODE);
}
$data = $this->db->query(
"SELECT distinct LOWER(`COL_SUBMODE`) as `COL_SUBMODE` FROM `" . $this->config->item('table_name') . "` WHERE station_id in (" . $location_list . ") and coalesce(COL_SUBMODE, '') <> '' order by COL_SUBMODE ASC"
);
foreach ($data->result() as $row) {
if (!in_array($row, $results)) {
array_push($results, $row->COL_SUBMODE);
}
}
asort($results);
return $results;
}
}

View file

@ -0,0 +1,142 @@
<?php
class Labels_model extends CI_Model {
function addLabel() {
$data = array(
'user_id' => $this->session->userdata('user_id'),
'label_name' => xss_clean($this->input->post('label_name', true)),
'paper_type' => xss_clean($this->input->post('paper_type', true)),
'metric' => xss_clean($this->input->post('measurementType', true)),
'marginleft' => xss_clean($this->input->post('marginLeft', true)),
'margintop' => xss_clean($this->input->post('marginTop', true)),
'nx' => xss_clean($this->input->post('NX', true)),
'ny' => xss_clean($this->input->post('NY', true)),
'spacex' => xss_clean($this->input->post('SpaceX', true)),
'spacey' => xss_clean($this->input->post('SpaceY', true)),
'width' => xss_clean($this->input->post('width', true)),
'height' => xss_clean($this->input->post('height', true)),
'font_size' => xss_clean($this->input->post('font_size', true)),
'qsos' => xss_clean($this->input->post('label_qsos', true)),
'font' => xss_clean($this->input->post('font', true)),
'last_modified' => date('Y-m-d H:i:s'),
);
$this->db->insert('label_types', $data);
}
function getLabel($id) {
$this->db->where('user_id', $this->session->userdata('user_id'));
$this->db->where('id', $id);
$query = $this->db->get('label_types');
return $query->row();
}
function updateLabel($id) {
$data = array(
'user_id' => $this->session->userdata('user_id'),
'label_name' => xss_clean($this->input->post('label_name', true)),
'paper_type' => xss_clean($this->input->post('paper_type', true)),
'metric' => xss_clean($this->input->post('measurementType', true)),
'marginleft' => xss_clean($this->input->post('marginLeft', true)),
'margintop' => xss_clean($this->input->post('marginTop', true)),
'nx' => xss_clean($this->input->post('NX', true)),
'ny' => xss_clean($this->input->post('NY', true)),
'spacex' => xss_clean($this->input->post('SpaceX', true)),
'spacey' => xss_clean($this->input->post('SpaceY', true)),
'width' => xss_clean($this->input->post('width', true)),
'height' => xss_clean($this->input->post('height', true)),
'font_size' => xss_clean($this->input->post('font_size', true)),
'qsos' => xss_clean($this->input->post('label_qsos', true)),
'font' => xss_clean($this->input->post('font', true)),
'last_modified' => date('Y-m-d H:i:s'),
);
$cleanid = $this->security->xss_clean($id);
$this->db->where('user_id', $this->session->userdata('user_id'));
$this->db->where('id', $cleanid);
$this->db->update('label_types', $data);
}
function deleteLabel($id) {
$cleanid = xss_clean($id);
$this->db->delete('label_types', array('id' => $cleanid, 'user_id' => $this->session->userdata('user_id')));
}
function fetchLabels($user_id) {
$this->db->where('user_id', $user_id);
$query = $this->db->get('label_types');
return $query->result();
}
function fetchQsos($user_id) {
$qsl = "select count(*) count, station_profile.station_profile_name, station_profile.station_callsign, station_profile.station_id, station_profile.station_gridsquare
from ". $this->config->item('table_name') . " as l
join station_profile on l.station_id = station_profile.station_id
where l.COL_QSL_SENT in ('R', 'Q')
and station_profile.user_id = " . $user_id .
" group by station_profile.station_profile_name, station_profile.station_callsign, station_profile.station_id, station_profile.station_gridsquare
order by station_profile.station_callsign";
$query = $this->db->query($qsl);
return $query->result();
}
function getDefaultLabel() {
$this->db->where('user_id', $this->session->userdata('user_id'));
$this->db->where('useforprint', '1');
$query = $this->db->get('label_types');
return $query->row();
}
function saveDefaultLabel($id) {
$sql = 'update label_types set useforprint = 0 where user_id = ' . $this->session->userdata('user_id');
$this->db->query($sql);
$cleanid = xss_clean($id);
$sql = 'update label_types set useforprint = 1 where user_id = ' . $this->session->userdata('user_id') . ' and id = ' . $cleanid;
$this->db->query($sql);
}
function export_printrequested($station_id = NULL) {
$this->load->model('stations');
$active_station_id = $this->stations->find_active();
$this->db->select($this->config->item('table_name').'.*, station_profile.*, dxcc_entities.name as station_country');
if ($station_id == NULL) {
$this->db->where($this->config->item('table_name').'.station_id', $active_station_id);
} else if ($station_id != 'All') {
$this->db->where($this->config->item('table_name').'.station_id', $station_id);
}
$this->db->join('station_profile', 'station_profile.station_id = '.$this->config->item('table_name').'.station_id');
$this->db->join('dxcc_entities', 'station_profile.station_dxcc = dxcc_entities.adif');
// always filter user. this ensures that even if the station_id is from another user no inaccesible QSOs will be returned
$this->db->where('station_profile.user_id', $this->session->userdata('user_id'));
$this->db->where_in('COL_QSL_SENT', array('R', 'Q'));
$this->db->order_by("COL_DXCC", "ASC");
$query = $this->db->get($this->config->item('table_name'));
return $query;
}
function export_printrequestedids($ids) {
$this->db->select($this->config->item('table_name').'.*, station_profile.*, dxcc_entities.name as station_country');
$this->db->join('station_profile', 'station_profile.station_id = '.$this->config->item('table_name').'.station_id');
$this->db->join('dxcc_entities', 'station_profile.station_dxcc = dxcc_entities.adif');
$this->db->where('station_profile.user_id', $this->session->userdata('user_id'));
$this->db->where_in('COL_PRIMARY_KEY', $ids);
$this->db->order_by("COL_DXCC", "ASC");
$query = $this->db->get($this->config->item('table_name'));
return $query;
}
}

View file

@ -199,7 +199,7 @@ class Logbook_model extends CI_Model {
'COL_QTH' => $this->input->post('qth'),
'COL_PROP_MODE' => $prop_mode,
'COL_IOTA' => $this->input->post('iota_ref') == null ? '' : trim($this->input->post('iota_ref')),
'COL_DISTANCE' => "0",
'COL_DISTANCE' => $this->input->post('distance'),
'COL_FREQ_RX' => $this->parse_frequency($this->input->post('freq_display_rx')),
'COL_ANT_AZ' => null,
'COL_ANT_EL' => null,
@ -314,6 +314,7 @@ class Logbook_model extends CI_Model {
$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');
switch ($type) {
case 'DXCC':
$this->db->where('COL_COUNTRY', $searchphrase);
@ -390,9 +391,10 @@ class Logbook_model extends CI_Model {
$sql = 'SELECT COL_FREQ, COL_SOTA_REF, COL_OPERATOR, COL_IOTA, COL_VUCC_GRIDS, COL_STATE, COL_GRIDSQUARE, COL_PRIMARY_KEY, COL_CALL, COL_TIME_ON, COL_BAND, COL_SAT_NAME, COL_MODE, COL_SUBMODE, COL_RST_SENT, ';
$sql .= 'COL_RST_RCVD, COL_STX, COL_SRX, COL_STX_STRING, COL_SRX_STRING, COL_COUNTRY, COL_QSL_SENT, COL_QSL_SENT_VIA, ';
$sql .= 'COL_QSLSDATE, COL_QSL_RCVD, COL_QSL_RCVD_VIA, COL_QSLRDATE, COL_EQSL_QSL_SENT, COL_EQSL_QSLSDATE, COL_EQSL_QSLRDATE, ';
$sql .= 'COL_EQSL_QSL_RCVD, COL_LOTW_QSL_SENT, COL_LOTW_QSLSDATE, COL_LOTW_QSL_RCVD, COL_LOTW_QSLRDATE, COL_CONTEST_ID, station_gridsquare, dxcc_entities.name as name, dxcc_entities.end as end ';
$sql .= 'COL_EQSL_QSL_RCVD, COL_LOTW_QSL_SENT, COL_LOTW_QSLSDATE, COL_LOTW_QSL_RCVD, COL_LOTW_QSLRDATE, COL_CONTEST_ID, station_gridsquare, dxcc_entities.name as name, dxcc_entities.end as end, callsign, lastupload ';
$sql .= 'FROM '.$this->config->item('table_name').' JOIN `station_profile` ON station_profile.station_id = '.$this->config->item('table_name').'.station_id ';
$sql .= 'LEFT OUTER JOIN `dxcc_entities` ON dxcc_entities.adif = '.$this->config->item('table_name').'.COL_DXCC ';
$sql .= 'LEFT OUTER JOIN `lotw_users` ON lotw_users.callsign = '.$this->config->item('table_name').'.COL_CALL ';
$sql .= 'WHERE '.$this->config->item('table_name').'.station_id IN (SELECT station_id from station_profile ';
$sql .= 'WHERE station_gridsquare LIKE "%'.$searchphrase.'%") ';
@ -890,6 +892,7 @@ class Logbook_model extends CI_Model {
'COL_RST_SENT' => $this->input->post('rst_sent'),
'COL_GRIDSQUARE' => strtoupper(trim($this->input->post('locator'))),
'COL_VUCC_GRIDS' => strtoupper(trim($this->input->post('vucc_grids'))),
'COL_DISTANCE' => $this->input->post('distance'),
'COL_COMMENT' => $this->input->post('comment'),
'COL_NAME' => $this->input->post('name'),
'COL_COUNTRY' => $country,
@ -1279,11 +1282,12 @@ class Logbook_model extends CI_Model {
return array();
}
$this->db->select($this->config->item('table_name').'.*, station_profile.*, dxcc_entities.*');
$this->db->select($this->config->item('table_name').'.*, station_profile.*, dxcc_entities.*, lotw_users.callsign, lotw_users.lastupload');
$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', $this->config->item('table_name').'.col_dxcc = dxcc_entities.adif', 'left');
$this->db->join('lotw_users', 'lotw_users.callsign = '.$this->config->item('table_name').'.col_call', 'left outer');
$this->db->where_in('station_profile.station_id', $logbooks_locations_array);
$this->db->order_by(''.$this->config->item('table_name').'.COL_TIME_ON', "desc");
$this->db->order_by(''.$this->config->item('table_name').'.COL_PRIMARY_KEY', "desc");
@ -2484,7 +2488,7 @@ class Logbook_model extends CI_Model {
}
}
function lotw_update($datetime, $callsign, $band, $qsl_date, $qsl_status, $state, $qsl_gridsquare, $iota, $cnty) {
function lotw_update($datetime, $callsign, $band, $qsl_date, $qsl_status, $state, $qsl_gridsquare, $iota, $cnty, $cqz, $ituz) {
$data = array(
'COL_LOTW_QSLRDATE' => $qsl_date,
@ -2502,6 +2506,14 @@ class Logbook_model extends CI_Model {
$data['COL_CNTY'] = $cnty;
}
if($cqz != "") {
$data['COL_CQZ'] = $cqz;
}
if($ituz != "") {
$data['COL_ITUZ'] = $ituz;
}
$this->db->where('date_format(COL_TIME_ON, \'%Y-%m-%d %H:%i\') = "'.$datetime.'"');
$this->db->where('COL_CALL', $callsign);
$this->db->where('COL_BAND', $band);
@ -2511,8 +2523,24 @@ class Logbook_model extends CI_Model {
if($qsl_gridsquare != "") {
$data = array(
'COL_GRIDSQUARE' => $qsl_gridsquare
'COL_GRIDSQUARE' => $qsl_gridsquare,
'COL_DISTANCE' => 0
);
$this->db->select('station_profile.station_gridsquare as station_gridsquare');
$this->db->where('date_format(COL_TIME_ON, \'%Y-%m-%d %H:%i\') = "'.$datetime.'"');
$this->db->where('COL_CALL', $callsign);
$this->db->where('COL_BAND', $band);
$this->db->join('station_profile', $this->config->item('table_name').'.station_id = station_profile.station_id', 'left outer');
$this->db->limit(1);
$query = $this->db->get($this->config->item('table_name'));
$row = $query->row();
if (isset($row)) {
$station_gridsquare = $row->station_gridsquare;
$this->load->library('Qra');
$data['COL_DISTANCE'] = $this->qra->distance($station_gridsquare, $qsl_gridsquare, 'K');
}
$this->db->where('date_format(COL_TIME_ON, \'%Y-%m-%d %H:%i\') = "'.$datetime.'"');
$this->db->where('COL_CALL', $callsign);
$this->db->where('COL_BAND', $band);
@ -3593,6 +3621,36 @@ class Logbook_model extends CI_Model {
print("$count updated\n");
}
public function update_distances(){
$this->db->select("COL_PRIMARY_KEY, COL_GRIDSQUARE, station_gridsquare");
$this->db->join('station_profile', 'station_profile.station_id = '.$this->config->item('table_name').'.station_id');
$this->db->where("COL_DISTANCE is NULL");
$this->db->where("COL_GRIDSQUARE is NOT NULL");
$this->db->where("COL_GRIDSQUARE != ''");
$this->db->trans_start();
$query = $this->db->get($this->config->item('table_name'));
$count = 0;
if ($query->num_rows() > 0){
print("Affected QSOs: ".$this->db->affected_rows()." <br />");
$this->load->library('Qra');
foreach ($query->result() as $row) {
$distance = $this->qra->distance($row->station_gridsquare, $row->COL_GRIDSQUARE, 'K');
$data = array(
'COL_DISTANCE' => $distance,
);
$this->db->where(array('COL_PRIMARY_KEY' => $row->COL_PRIMARY_KEY));
$this->db->update($this->config->item('table_name'), $data);
$count++;
}
print("QSOs updated: ".$count);
} else {
print "No QSOs affected.";
}
$this->db->trans_complete();
}
public function check_for_station_id() {
$this->db->where('station_id =', NULL);
$query = $this->db->get($this->config->item('table_name'));

View file

@ -132,10 +132,12 @@ class Logbookadvanced_model extends CI_Model {
$order = $this->getSortorder($sortorder);
$sql = "
SELECT *, dxcc_entities.name AS station_country
SELECT qsos.*, d2.*, lotw_users.*, station_profile.*, dxcc_entities.name AS station_country
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_MY_DXCC = dxcc_entities.adif
LEFT OUTER JOIN dxcc_entities d2 ON qsos.COL_DXCC = d2.adif
LEFT OUTER JOIN lotw_users ON qsos.col_call=lotw_users.callsign
WHERE station_profile.user_id = ?
$where
$order
@ -215,6 +217,24 @@ class Logbookadvanced_model extends CI_Model {
}
}
public function updateQslReceived($ids, $user_id, $method, $sent) {
$this->load->model('user_model');
if(!$this->user_model->authorize(2)) {
return array('message' => 'Error');
} else {
$data = array(
'COL_QSLRDATE' => date('Y-m-d H:i:s'),
'COL_QSL_RCVD' => $sent,
'COL_QSL_RCVD_VIA' => $method
);
$this->db->where_in('COL_PRIMARY_KEY', json_decode($ids, true));
$this->db->update($this->config->item('table_name'), $data);
return array('message' => 'OK');
}
}
public function updateQsoWithCallbookInfo($qsoID, $qso, $callbook) {
$updatedData = array();
if (!empty($callbook['name']) && empty($qso['COL_NAME'])) {

View file

@ -144,8 +144,8 @@ class Oqrs_model extends CI_Model {
if ($qsoid > 0) {
$data['status'] = '2';
$data['qsoid'] = $qsoid;
}
$data['qsoid'] = $qsoid;
$this->db->insert('oqrs', $data);
if(!in_array(xss_clean($postdata['station_id']), $station_ids)){
@ -177,8 +177,8 @@ class Oqrs_model extends CI_Model {
if ($qsoid > 0) {
$data['status'] = '2';
$data['qsoid'] = $qsoid;
}
$data['qsoid'] = $qsoid;
$this->db->insert('oqrs', $data);

View file

@ -61,6 +61,13 @@ class Stations extends CI_Model {
$station_active = 1;
}
// Check if the state is Canada and get the correct state
if ($this->input->post('dxcc') == 1 && $this->input->post('station_ca_state') !="") {
$state = $this->input->post('station_ca_state');
} else {
$state = $this->input->post('station_state');
}
// Create data array with field values
$data = array(
'user_id' => $this->session->userdata('user_id'),
@ -80,7 +87,7 @@ class Stations extends CI_Model {
'station_cnty' => xss_clean($this->input->post('station_cnty', true)),
'station_cq' => xss_clean($this->input->post('station_cq', true)),
'station_itu' => xss_clean($this->input->post('station_itu', true)),
'state' => xss_clean($this->input->post('station_state', true)),
'state' => $state,
'eqslqthnickname' => xss_clean($this->input->post('eqslnickname', true)),
'qrzapikey' => xss_clean($this->input->post('qrzapikey', true)),
'qrzrealtime' => xss_clean($this->input->post('qrzrealtime', true)),
@ -97,6 +104,14 @@ class Stations extends CI_Model {
}
function edit() {
// Check if the state is Canada and get the correct state
if ($this->input->post('dxcc') == 1 && $this->input->post('station_ca_state') !="") {
$state = $this->input->post('station_ca_state');
} else {
$state = $this->input->post('station_state');
}
$data = array(
'station_profile_name' => xss_clean($this->input->post('station_profile_name', true)),
'station_gridsquare' => xss_clean($this->input->post('gridsquare', true)),
@ -113,7 +128,7 @@ class Stations extends CI_Model {
'station_cnty' => xss_clean($this->input->post('station_cnty', true)),
'station_cq' => xss_clean($this->input->post('station_cq', true)),
'station_itu' => xss_clean($this->input->post('station_itu', true)),
'state' => xss_clean($this->input->post('station_state', true)),
'state' => $state,
'eqslqthnickname' => xss_clean($this->input->post('eqslnickname', true)),
'qrzapikey' => xss_clean($this->input->post('qrzapikey', true)),
'qrzrealtime' => xss_clean($this->input->post('qrzrealtime', true)),
@ -423,6 +438,17 @@ class Stations extends CI_Model {
return null;
}
}
public function check_station_against_user($stationid, $userid) {
$this->db->select('station_id');
$this->db->where('user_id', $userid);
$this->db->where('station_id', $stationid);
$query = $this->db->get('station_profile');
if ($query->num_rows() == 1) {
return true;
}
return false;
}
}
?>

View file

@ -218,6 +218,7 @@ class Timeline_model extends CI_Model
$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');
$this->db->join('lotw_users', 'lotw_users.callsign = '.$this->config->item('table_name').'.col_call', 'left outer');
if ($band != 'All') {
if ($band == 'SAT') {

View file

@ -11,6 +11,7 @@ function echo_table_header_col($ctx, $name) {
case 'POTA': echo '<th>'.$ctx->lang->line('gen_hamradio_pota').'</th>'; break;
case 'State': echo '<th>'.$ctx->lang->line('gen_hamradio_state').'</th>'; break;
case 'Grid': echo '<th>'.$ctx->lang->line('gen_hamradio_gridsquare').'</th>'; break;
case 'Distance': echo '<th>'.$ctx->lang->line('gen_hamradio_distance').'</th>'; break;
case 'Band': echo '<th>'.$ctx->lang->line('gen_hamradio_band').'</th>'; break;
case 'Frequency': echo '<th>'.$ctx->lang->line('gen_hamradio_frequency').'</th>'; break;
case 'Operator': echo '<th>'.$ctx->lang->line('gen_hamradio_operator').'</th>'; break;
@ -29,6 +30,7 @@ function echo_table_col($row, $name) {
case 'WWFF': echo '<td>' . ($row->COL_WWFF_REF) . '</td>'; break;
case 'POTA': echo '<td>' . ($row->COL_POTA_REF) . '</td>'; break;
case 'Grid': echo '<td>'; echoQrbCalcLink($row->station_gridsquare, $row->COL_VUCC_GRIDS, $row->COL_GRIDSQUARE); echo '</td>'; break;
case 'Distance': echo '<td>' . ($row->COL_DISTANCE ? $row->COL_DISTANCE . '&nbsp;km' : '') . '</td>'; break;
case 'Band': echo '<td>'; if($row->COL_SAT_NAME != null) { echo '<a href="https://db.satnogs.org/search/?q='.$row->COL_SAT_NAME.'" target="_blank">'.$row->COL_SAT_NAME.'</a></td>'; } else { echo strtolower($row->COL_BAND); } echo '</td>'; break;
case 'Frequency': echo '<td>'; if($row->COL_SAT_NAME != null) { echo '<a href="https://db.satnogs.org/search/?q='.$row->COL_SAT_NAME.'" target="_blank">'.$row->COL_SAT_NAME.'</a></td>'; } else { if($row->COL_FREQ != null) { echo $ci->frequency->hz_to_mhz($row->COL_FREQ); } else { echo strtolower($row->COL_BAND); } } echo '</td>'; break;
case 'State': echo '<td>' . ($row->COL_STATE) . '</td>'; break;

View file

@ -0,0 +1,107 @@
<style>
/*Legend specific*/
.legend {
padding: 6px 8px;
font: 14px Arial, Helvetica, sans-serif;
background: white;
background: rgba(255, 255, 255, 0.8);
line-height: 24px;
color: #555;
}
.legend h4 {
text-align: center;
font-size: 16px;
margin: 2px 12px 8px;
color: #777;
}
.legend span {
position: relative;
bottom: 3px;
}
.legend i {
width: 18px;
height: 18px;
float: left;
margin: 0 8px 0 0;
opacity: 0.7;
}
</style>
<div class="container">
<br>
<h2><?php echo $page_title; ?></h2>
<form class="form-inline">
<label class="my-1 mr-2" for="band"><?php echo lang('gridsquares_band'); ?></label>
<select class="custom-select my-1 mr-sm-2" id="band">
<option value="All">All</option>
<?php foreach($bands as $band) {
echo '<option value="' . $band . '"' . '>' . $band . '</option>'."\n";
} ?>
</select>
<?php if (count($sats_available) != 0) { ?>
<label class="my-1 mr-2" for="distplot_sats"><?php echo lang('gridsquares_sat'); ?></label>
<select class="custom-select my-1 mr-sm-2" id="sats" disabled>
<option value="All">All</option>
<?php foreach($sats_available as $sat) {
echo '<option value="' . $sat . '"' . '>' . $sat . '</option>'."\n";
} ?>
</select>
<?php } else { ?>
<input id="sats" type="hidden" value="All"></input>
<?php } ?>
<label class="my-1 mr-2" for="mode"><?php echo lang('gridsquares_mode'); ?></label>
<select class="custom-select my-1 mr-sm-2" id="mode">
<option value="All">All</option>
<?php
foreach($modes as $mode){
if ($mode->submode == null) {
echo '<option value="' . $mode . '">' . strtoupper($mode) . '</option>'."\n";
}
}
?>
</select>
<label class="my-1 mr-2"><?php echo lang('gridsquares_confirmation'); ?></label>
<div>
<div class="form-check-inline">
<input class="form-check-input" type="checkbox" name="qsl" id="qsl" checked>
<label class="form-check-label" for="qsl">QSL</label>
</div>
<div class="form-check-inline">
<input class="form-check-input" type="checkbox" name="lotw" id="lotw" checked>
<label class="form-check-label" for="lotw">LoTW</label>
</div>
<div class="form-check-inline">
<input class="form-check-input" type="checkbox" name="eqsl" id="eqsl">
<label class="form-check-label" for="eqsl">eQSL</label>
</div>
</div>
<button id="plot" type="button" name="plot" class="btn btn-primary ld-ext-right" onclick="gridPlot(this.form)"><?php echo lang('gridsquares_button_plot'); ?><div class="ld ld-ring ld-spin"></div></button>
</form>
<?php if($this->session->flashdata('message')) { ?>
<!-- Display Message -->
<div class="alert-message error">
<p><?php echo $this->session->flashdata('message'); ?></p>
</div>
<?php } ?>
</div>
<div id="gridmapcontainer">
<div id="gridsquare_map" style="width: 100%; height: 800px"></div>
</div>
<script>var gridsquaremap = true;
<?php
echo 'var jslayer ="' . $layer .'";';
echo "var jsattribution ='" . $attribution . "';";
echo 'var gridsquares_gridsquares = "' . $gridsquares_gridsquares . '";';
echo 'var gridsquares_gridsquares_confirmed = "' . $gridsquares_gridsquares_confirmed . '";';
echo 'var gridsquares_gridsquares_not_confirmed = "' . $gridsquares_gridsquares_not_confirmed . '";';
echo 'var gridsquares_gridsquares_total_worked = "' . $gridsquares_gridsquares_total_worked . '";';
?>
</script>

View file

@ -349,6 +349,7 @@ $(function () {
if (isDarkModeTheme()) {
$(".buttons-csv").css("color", "white");
}
$('[data-toggle="tooltip"]').tooltip();
$(".runbutton").removeClass('running');
$(".runbutton").prop('disabled', false);
});
@ -1388,7 +1389,7 @@ $(document).ready(function(){
<?php } ?>
<?php if ($this->uri->segment(1) == "gridsquares" && !empty($this->uri->segment(2))) { ?>
<script>var gridsquaremap = true;</script>
<script type="text/javascript" src="<?php echo base_url();?>assets/js/leaflet/L.MaidenheadColoured.js"></script>
<script>
@ -1460,14 +1461,20 @@ $(document).ready(function(){
if(map.getZoom() > 2) {
<?php if ($this->session->userdata('user_callsign')) { ?>
var band = '';
spawnGridsquareModal(loc_4char);
<?php } ?>
}
};
function spawnGridsquareModal(loc_4char) {
var band = '';
var search_type = "<?php echo $this->uri->segment(2); ?>";
if(search_type == "satellites") {
band = 'SAT';
} else {
band = "<?php echo $this->uri->segment(3); ?>";
}
$(".modal-body").empty();
$(".modal-body").empty();
$.ajax({
url: base_url + 'index.php/awards/qso_details_ajax',
type: 'post',
@ -1497,9 +1504,7 @@ $(document).ready(function(){
}
}
});
<?php } ?>
}
};
}
<?php if ($this->uri->segment(1) == "gridsquares" && $this->uri->segment(2) == "band") { ?>
@ -2755,6 +2760,8 @@ function viewEqsl(picture, callsign) {
"scrollCollapse": true,
"paging": false,
"scrollX": true,
"ordering": true,
"order": [ 2, 'desc' ],
});
</script>
<?php } ?>

View file

@ -96,7 +96,7 @@
<div class="dropdown-menu" aria-labelledby="navbarDropdown">
<a class="dropdown-item" href="<?php echo site_url('statistics');?>" title="Statistics"><i class="fas fa-chart-area"></i> <?php echo lang('menu_statistics'); ?></a>
<div class="dropdown-divider"></div>
<a class="dropdown-item" href="<?php echo site_url('gridsquares');?>" title="Gridsquares"><i class="fas fa-globe-europe"></i> <?php echo lang('menu_gridsquares'); ?></a>
<a class="dropdown-item" href="<?php echo site_url('gridmap');?>" title="Gridmap"><i class="fas fa-globe-europe"></i> <?php echo lang('menu_gridmap'); ?></a>
<div class="dropdown-divider"></div>
<a class="dropdown-item" href="<?php echo site_url('activated_grids');?>" title="Activated Gridsquares"><i class="fas fa-globe-europe"></i> <?php echo lang('menu_activated_gridsquares'); ?></a>
<div class="dropdown-divider"></div>
@ -252,6 +252,8 @@ $oqrs_requests = $CI->oqrs_model->oqrs_requests($location_list);
<a class="dropdown-item" href="<?php echo site_url('qslprint');?>" title="Print Requested QSLs"><i class="fas fa-print"></i> <?php echo lang('menu_print_requested_qsls'); ?></a>
<a class="dropdown-item" href="<?php echo site_url('labels');?>" title="Label setup"><i class="fas fa-print"></i> <?php echo lang('menu_labels'); ?></a>
<div class="dropdown-divider"></div>
<a class="dropdown-item" href="<?php echo site_url('lotw');?>" title="Synchronise with Logbook of the World (LoTW)"><i class="fas fa-sync"></i> <?php echo lang('menu_logbook_of_the_world'); ?></a>
@ -279,7 +281,42 @@ $oqrs_requests = $CI->oqrs_model->oqrs_requests($location_list);
<a class="dropdown-item" href="<?php echo site_url('user/logout');?>" title="Logout"><i class="fas fa-sign-out-alt"></i> <?php echo lang('menu_logout'); ?></a>
</div>
</li>
</ul>
<?php
// Can add extra menu items by defining them in options. The format is json.
// Useful to add extra things in Cloudlog without the need for modifying files. If you add extras, these files will not be overwritten when updating.
//
// The menu items will be displayed to the top right under extras.
//
// Example:
// INSERT INTO options (option_name,option_value,autoload) VALUES
// ('menuitems','[
// {
// "url":"gridmap",
// "text":"Gridmap",
// "icon":"fa-globe-europe"
// },
// {
// "url":"gallery",
// "text":"Gallery",
// "icon":"fa-globe-europe"
// }
// ]','yes');
if ($this->optionslib->get_option('menuitems')) { ?>
<li class="nav-item dropdown">
<a class="nav-link dropdown-toggle" href="#" id="navbarDropdown" role="button" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false">Extras</a>
<div class="dropdown-menu" aria-labelledby="navbarDropdown">
<?php
foreach(json_decode($this->optionslib->get_option('menuitems')) as $item) {
echo '<a class="dropdown-item" href="' . site_url($item->url) . '" title="Gridsquares"><i class="fas '. $item->icon .'"></i> ' . $item->text . '</a>';
}
?>
</div>
</li>
<?php } ?>
</ul>
<?php } ?>

View file

@ -0,0 +1,144 @@
<div id="qsl_card_labels_container" class="container">
<br>
<?php if($this->session->flashdata('message')) { ?>
<!-- Display Message -->
<div class="alert-message error">
<p><?php echo $this->session->flashdata('message'); ?></p>
</div>
<?php } ?>
<?php echo validation_errors(); ?>
<form method="post" action="<?php echo site_url('labels/create'); ?>" name="create_label_type">
<div class="card">
<h2 class="card-header"><?php echo $page_title; ?></h2>
<div class="card-body">
<!-- Label Name Input -->
<div class="form-group">
<label for="LabelName">Label Name</label>
<input name="label_name" type="text" class="form-control" id="LabelName" aria-describedby="label_nameHelp" placeholder="Code 925041 6x3 Generic Label Sheet">
<small id="label_nameHelp" class="form-text text-muted">Label name used for display purposes, so pick something meaningful, perhaps the label style.</small>
</div>
<div class="form-group row">
<label class="col-sm-2 col-form-label" for="paperType">Paper Type</label>
<div class="col-sm-4">
<select name="paper_type" class="form-control" id="paperType">
<option value="a4">A4</option>
<option value="letter">Letter</option>
</select>
</div>
<label class="col-sm-2 col-form-label" for="measurementType">Measurement used</label>
<div class="col-sm-4">
<select name="measurementType" class="form-control" id="measurementType">
<option value="mm">Millimeters</option>
<option value="in">Inches</option>
</select>
</div>
</div>
<div class="form-group row">
<label class="col-sm-2 col-form-label" for="marginTop">Margin Top</label>
<div class="col-sm-4">
<input name="marginTop" type="text" class="form-control" id="marginTop" aria-describedby="marginTopHelp">
<small id="marginTopHelp" class="form-text text-muted">Top margin of labels</small>
</div>
<label class="col-sm-2 col-form-label" for="marginLeft">Margin Left</label>
<div class="col-sm-4">
<input name="marginLeft" type="text" class="form-control" id="marginLeft" aria-describedby="marginLeftHelp">
<small id="marginLeftHelp" class="form-text text-muted">Left margin of labels.</small>
</div>
</div>
<div class="form-group row">
<label class="col-sm-2 col-form-label" for="NX">Labels horizontally</label>
<div class="col-sm-4">
<input name="NX" type="number" min="1" max="40" step="1" class="form-control" id="NX" aria-describedby="NXHelp">
<small id="NXHelp" class="form-text text-muted">Number of labels horizontally across the page.</small>
</div>
<label class="col-sm-2 col-form-label" for="NY">Labels vertically</label>
<div class="col-sm-4">
<input name="NY" type="number" min="1" max="40" step="1" class="form-control" id="NY" aria-describedby="NYHelp">
<small id="NYHelp" class="form-text text-muted">Number of labels vertically across the page.</small>
</div>
</div>
<div class="form-group row">
<label class="col-sm-2 col-form-label" for="SpaceX">Horizontal space</label>
<div class="col-sm-4">
<input name="SpaceX" type="text" class="form-control" id="SpaceX">
<small id="NYHelp" class="form-text text-muted">Horizontal space between 2 labels.</small>
</div>
<label class="col-sm-2 col-form-label" for="SpaceY">Vertical space</label>
<div class="col-sm-4">
<input name="SpaceY" type="text" class="form-control" id="SpaceY">
<small id="NYHelp" class="form-text text-muted">Vertical space between 2 labels.</small>
</div>
</div>
<div class="form-group row">
<label class="col-sm-2 col-form-label" for="width">Width of label</label>
<div class="col-sm-4">
<input name="width" type="text" class="form-control" id="width" aria-describedby="widthHelp">
<small id="widthHelp" class="form-text text-muted">Total width of one label.</small>
</div>
<label class="col-sm-2 col-form-label" for="height">Height of label</label>
<div class="col-sm-4">
<input name="height" type="text" class="form-control" id="height" aria-describedby="heightHelp">
<small id="heightHelp" class="form-text text-muted">Total height of one label</small>
</div>
</div>
<div class="form-group row">
<label class="col-sm-2 col-form-label" for="font_size">Font Size</label>
<div class="col-sm-4">
<input name="font_size" type="number" min="1" max="40" step="1" class="form-control" id="font_size" value="8" aria-describedby="font_sizeHelp">
<small id="font_sizeHelp" class="form-text text-muted">Font size used on the label don't go too big.</small>
</div>
<label class="col-sm-2 col-form-label" for="font_size">QSOs on label</label>
<div class="col-sm-4">
<input name="label_qsos" type="number" min="1" max="40" step="1" class="form-control" id="font_size" value="5" aria-describedby="font_sizeHelp">
</div>
</div>
<div class="form-group row">
<label class="col-sm-2 col-form-label" for="font">Font</label>
<div class="col-sm-4">
<select name="font" class="form-control" id="font">
<option value="courier">Courier</option>
<option value="courierb">Courierb</option>
<option value="courierbi">Courierbi</option>
<option value="courieri">Courieri</option>
<option value="DejaVuSans">DejaVuSans</option>
<option value="helvetica">Helvetica</option>
<option value="helveticab">Helveticab</option>
<option value="helveticabi">Helveticabi</option>
<option value="helveticai">Helveticai</option>
<option value="symbol">Symbol</option>
<option value="times">Times</option>
<option value="timesb">Timesb</option>
<option value="timesb">Timesb</option>
<option value="timesbi">Timesbi</option>
<option value="zapfdingbats">Zapfdingbats</option>
</select>
</div>
</div>
<button type="submit" class="btn btn-primary"><i class="fas fa-plus-square"></i> Save Label Type</button>
</div>
</div>
</form>
</div>
<br>

View file

@ -0,0 +1,144 @@
<div id="qsl_card_labels_container" class="container">
<br>
<?php if($this->session->flashdata('message')) { ?>
<!-- Display Message -->
<div class="alert-message error">
<p><?php echo $this->session->flashdata('message'); ?></p>
</div>
<?php } ?>
<?php echo validation_errors(); ?>
<form method="post" action="<?php echo site_url('labels/updateLabel/' . $label->id); ?>" name="create_label_type">
<div class="card">
<h2 class="card-header"><?php echo $page_title; ?></h2>
<div class="card-body">
<!-- Label Name Input -->
<div class="form-group">
<label for="LabelName">Label Name</label>
<input name="label_name" type="text" class="form-control" id="LabelName" aria-describedby="label_nameHelp" placeholder="Code 925041 6x3 Generic Label Sheet" value="<?php if(isset($label->label_name)) { echo $label->label_name; } ?>">
<small id="label_nameHelp" class="form-text text-muted">Label name used for display purposes so pick something meaningful perhaps the label style.</small>
</div>
<div class="form-group row">
<label class="col-sm-2 col-form-label" for="paperType">Paper Type</label>
<div class="col-sm-4">
<select name="paper_type" class="form-control" id="paperType">
<option value="a4" <?php if($label->paper_type == "a4") { echo "selected=\"selected\""; } ?>>A4</option>
<option value="letter" <?php if($label->paper_type == "letter") { echo "selected=\"selected\""; } ?>>Letter</option>
</select>
</div>
<label class="col-sm-2 col-form-label" for="measurementType">Measurement used</label>
<div class="col-sm-4">
<select name="measurementType" class="form-control" id="measurementType">
<option value="mm" <?php if($label->metric == "mm") { echo "selected=\"selected\""; } ?>>Millimeters</option>
<option value="in" <?php if($label->metric == "in") { echo "selected=\"selected\""; } ?>>Inches</option>
</select>
</div>
</div>
<div class="form-group row">
<label class="col-sm-2 col-form-label" for="marginTop">Margin Top</label>
<div class="col-sm-4">
<input name="marginTop" type="text" class="form-control" id="marginTop" aria-describedby="marginTopHelp" value="<?php if(isset($label->margintop)) { echo $label->margintop; } ?>">
<small id="marginTopHelp" class="form-text text-muted">Top margin of labels</small>
</div>
<label class="col-sm-2 col-form-label" for="marginLeft">Margin Left</label>
<div class="col-sm-4">
<input name="marginLeft" type="text" class="form-control" id="marginLeft" aria-describedby="marginLeftHelp" value="<?php if(isset($label->marginleft)) { echo $label->marginleft; } ?>">
<small id="marginLeftHelp" class="form-text text-muted">Left margin of labels.</small>
</div>
</div>
<div class="form-group row">
<label class="col-sm-2 col-form-label" for="NX">Labels horizontally</label>
<div class="col-sm-4">
<input name="NX" type="number" min="1" max="40" step="1" class="form-control" id="NX" aria-describedby="NXHelp" value="<?php if(isset($label->nx)) { echo $label->nx; } ?>">
<small id="NXHelp" class="form-text text-muted">Number of labels horizontally across the page.</small>
</div>
<label class="col-sm-2 col-form-label" for="NY">Labels vertically</label>
<div class="col-sm-4">
<input name="NY" type="number" min="1" max="40" step="1" class="form-control" id="NY" aria-describedby="NYHelp" value="<?php if(isset($label->ny)) { echo $label->ny; } ?>">
<small id="NYHelp" class="form-text text-muted">Number of labels vertically across the page.</small>
</div>
</div>
<div class="form-group row">
<label class="col-sm-2 col-form-label" for="SpaceX">Horizontal space</label>
<div class="col-sm-4">
<input name="SpaceX" type="text" class="form-control" id="SpaceX" value="<?php if(isset($label->spacex)) { echo $label->spacex; } ?>">
<small id="NYHelp" class="form-text text-muted">Horizontal space between 2 labels.</small>
</div>
<label class="col-sm-2 col-form-label" for="SpaceY">Vertical space</label>
<div class="col-sm-4">
<input name="SpaceY" type="text" class="form-control" id="SpaceY" value="<?php if(isset($label->spacey)) { echo $label->spacey; } ?>">
<small id="NYHelp" class="form-text text-muted">Vertical space between 2 labels.</small>
</div>
</div>
<div class="form-group row">
<label class="col-sm-2 col-form-label" for="width">Width of label</label>
<div class="col-sm-4">
<input name="width" type="text" class="form-control" id="width" aria-describedby="widthHelp" value="<?php if(isset($label->width)) { echo $label->width; } ?>">
<small id="widthHelp" class="form-text text-muted">Total width of one label.</small>
</div>
<label class="col-sm-2 col-form-label" for="height">Height of label</label>
<div class="col-sm-4">
<input name="height" type="text" class="form-control" id="height" aria-describedby="heightHelp" value="<?php if(isset($label->height)) { echo $label->height; } ?>">
<small id="heightHelp" class="form-text text-muted">Total height of one label</small>
</div>
</div>
<div class="form-group row">
<label class="col-sm-2 col-form-label" for="font_size">Font Size</label>
<div class="col-sm-4">
<input name="font_size" type="number" min="1" max="40" step="1" class="form-control" id="font_size" aria-describedby="font_sizeHelp" value="<?php if(isset($label->font_size)) { echo $label->font_size; } ?>">
<small id="font_sizeHelp" class="form-text text-muted">Font size used on the label don't go too big.</small>
</div>
<label class="col-sm-2 col-form-label" for="font_size">QSOs on label</label>
<div class="col-sm-4">
<input name="label_qsos" type="number" min="1" max="40" step="1" class="form-control" id="label_qsos" aria-describedby="font_sizeHelp" value="<?php if(isset($label->qsos)) { echo $label->qsos; } ?>">
</div>
</div>
<div class="form-group row">
<label class="col-sm-2 col-form-label" for="font">Font</label>
<div class="col-sm-4">
<select name="font" class="form-control" id="font">
<option value="courier" <?php if($label->font == "courier") { echo "selected=\"selected\""; } ?>>Courier</option>
<option value="courierb" <?php if($label->font == "courierb") { echo "selected=\"selected\""; } ?>>Courierb</option>
<option value="courierbi" <?php if($label->font == "courierbi") { echo "selected=\"selected\""; } ?>>Courierbi</option>
<option value="courieri" <?php if($label->font == "courieri") { echo "selected=\"selected\""; } ?>>Courieri</option>
<option value="DejaVuSans" <?php if($label->font == "DejaVuSans") { echo "selected=\"selected\""; } ?>>DejaVuSans</option>
<option value="helvetica" <?php if($label->font == "helvetica") { echo "selected=\"selected\""; } ?>>Helvetica</option>
<option value="helveticab" <?php if($label->font == "helveticab") { echo "selected=\"selected\""; } ?>>Helveticab</option>
<option value="helveticabi" <?php if($label->font == "helveticabi") { echo "selected=\"selected\""; } ?>>Helveticabi</option>
<option value="helveticai" <?php if($label->font == "helveticai") { echo "selected=\"selected\""; } ?>>Helveticai</option>
<option value="symbol" <?php if($label->font == "symbol") { echo "selected=\"selected\""; } ?>>Symbol</option>
<option value="times" <?php if($label->font == "times") { echo "selected=\"selected\""; } ?>>Times</option>
<option value="timesb" <?php if($label->font == "timesb") { echo "selected=\"selected\""; } ?>>Timesb</option>
<option value="timesb" <?php if($label->font == "timesb") { echo "selected=\"selected\""; } ?>>Timesb</option>
<option value="timesbi" <?php if($label->font == "timesbi") { echo "selected=\"selected\""; } ?>>Timesbi</option>
<option value="zapfdingbats" <?php if($label->font == "zapfdingbats") { echo "selected=\"selected\""; } ?>>Zapfdingbats</option>
</select>
</div>
</div>
<button type="submit" class="btn btn-primary"><i class="fas fa-plus-square"></i> Save Label Type</button>
</div>
</div>
</form>
</div>
<br>

View file

@ -0,0 +1,108 @@
<div class="container">
<br>
<?php if($this->session->flashdata('message')) { ?>
<!-- Display Message -->
<div class="alert alert-success" role="alert">
<?php echo $this->session->flashdata('message'); ?>
</div>
<?php } ?>
<?php if($this->session->flashdata('error')) { ?>
<!-- Display Message -->
<div class="alert alert-danger" role="alert">
<?php echo $this->session->flashdata('error'); ?>
</div>
<?php } ?>
<?php if($this->session->flashdata('warning')) { ?>
<!-- Display Message -->
<div class="alert alert-warning" role="alert">
<?php echo $this->session->flashdata('warning'); ?>
</div>
<?php } ?>
<div class="card">
<h2 class="card-header">QSL Card Labels</h2>
<div class="card-body">
<a href="<?php echo site_url('labels/create'); ?>" class="btn btn-outline-primary btn-sm">Create New Label Type</a>
<?php if ($labels) {
echo '<br/><br/>';?>
<table style="width:100%" class="table-sm labeltable table-bordered table-hover table-striped table-condensed text-center">
<thead>
<tr>
<th>Name</th>
<th>Paper Type</th>
<th>Measurement</th>
<th>Width</th>
<th>Height</th>
<th>Font Size</th>
<th>QSOs</th>
<th>Last Modified</th>
<th>Use For Print</th>
<th>Edit</th>
<th>Delete</th>
</tr>
</thead>
<tbody>
<?php
foreach($labels as $label) { ?>
<tr class='label_<?php echo $label->id ?>'>
<td><?php echo $label->label_name; ?></td>
<td><?php echo $label->paper_type; ?></td>
<td><?php echo $label->metric; ?></td>
<td><?php echo $label->width; ?></td>
<td><?php echo $label->height; ?></td>
<td><?php echo $label->font_size; ?></td>
<td><?php echo $label->qsos; ?></td>
<td><?php echo $label->last_modified; ?></td>
<td><input type="checkbox" <?php if ($label->useforprint == 1) {echo 'checked';}?>></td>
<td><a href="<?php echo site_url('labels/edit/' . $label->id); ?>" class="btn btn-outline-primary btn-sm"><i class="fas fa-edit"></i></a></td>
<td><a href="<?php echo site_url('labels/delete/' . $label->id); ?>" class="btn btn-outline-danger btn-sm"><i class="fas fa-trash-alt"></i></a></td>
</tr>
<?php }
echo '</tbody></table>';
} ?>
</div>
</div>
<br><br>
<div class="card">
<h2 class="card-header">QSL Card Labels Pending</h2>
<div class="card-body">
<table style="width:100%" class="table-sm table table-bordered table-hover table-striped table-condensed text-center">
<thead>
<tr>
<th>Callsign</th>
<th>Station Location</th>
<th>Gridsquare</th>
<th>QSOs Waiting</th>
<th>View QSOs</th>
<th>Print</th>
</tr>
</thead>
<tbody>
<?php foreach ($qsos as $qso) {
echo '<tr>';
echo '<td>' . $qso->station_callsign . '</td>';
echo '<td>' . $qso->station_profile_name . '</td>';
echo '<td>' . $qso->station_gridsquare . '</td>';
echo '<td>' . $qso->count . '</td>';
echo '<td><a href="'. site_url('qslprint') . '" class="btn btn-outline-info btn-sm"><i class="fas fa-search"></i></a></td>';
echo '<td><a href="'. site_url('labels/print/' . $qso->station_id) . '" class="btn btn-outline-success btn-sm"><i class="fas fa-print"></i></a></td>';
echo '</tr>';
} ?>
</tbody>
</table>
</div>
</div>
</div>

View file

@ -15,7 +15,9 @@
</div>
<?php } ?>
<div class="row">
<form id="searchForm" name="searchForm" action="<?php echo base_url()."index.php/logbookadvanced/search";?>" method="post">
<div class="filterbody collapse">
<div class="form-row">
<div class="form-group col-lg-2 col-md-2 col-sm-3 col-xl">
<label class="form-label" for="dateFrom">From</label>
@ -164,38 +166,47 @@
<option value="V">Verified</option>
</select>
</div>
<div class="form-group col-lg-2 col-md-2 col-sm-3 col-xl">
<label for="qsoResults"># Results</label>
<select id="qsoResults" name="qsoResults" class="form-control form-control-sm">
<option value="250">250</option>
<option value="1000">1000</option>
<option value="2500">2500</option>
<option value="5000">5000</option>
</select>
</div>
<div class="form-group col-lg col-md-3 col-sm-3 col-xl-1">
<label>&nbsp;</label><br>
<button type="submit" class="btn btn-sm btn-primary" id="searchButton">Search</button>
<button type="reset" class="btn btn-sm btn-danger" id="resetButton">Reset</button>
</div>
</div>
</form>
</div>
<div class="actionbody collapse">
<div class="mb-2">
<span class="h6">With selected :</span>
<button type="button" class="btn btn-sm btn-primary" id="btnUpdateFromCallbook">Update from Callbook</button>
<button type="button" class="btn btn-sm btn-primary" id="queueBureau">Queue Bureau</button>
<button type="button" class="btn btn-sm btn-primary" id="queueDirect">Queue Direct</button>
<button type="button" class="btn btn-sm btn-primary" id="queueElectronic">Queue Electronic</button>
<button type="button" class="btn btn-sm btn-success" id="sentBureau">Sent Bureau</button>
<button type="button" class="btn btn-sm btn-success" id="sentDirect">Sent Direct</button>
<button type="button" class="btn btn-sm btn-success" id="sentElectronic">Sent Electronic</button>
<button type="button" class="btn btn-sm btn-warning" id="dontSend">Not Sent</button>
<button type="button" class="btn btn-sm btn-warning" id="notRequired">QSL Not Required</button>
<button type="button" class="btn btn-sm btn-info" id="exportAdif">Create ADIF</button>
<button type="button" class="btn btn-sm btn-danger" id="deleteQsos">Delete</button>
<button type="button" class="btn btn-sm btn-primary mr-1" id="btnUpdateFromCallbook">Update from Callbook</button>
<button type="button" class="btn btn-sm btn-primary mr-1" id="queueBureau">Queue Bureau</button>
<button type="button" class="btn btn-sm btn-primary mr-1" id="queueDirect">Queue Direct</button>
<button type="button" class="btn btn-sm btn-primary mr-1" id="queueElectronic">Queue Electronic</button>
<button type="button" class="btn btn-sm btn-success mr-1" id="sentBureau">Sent Bureau</button>
<button type="button" class="btn btn-sm btn-success mr-1" id="sentDirect">Sent Direct</button>
<button type="button" class="btn btn-sm btn-success mr-1" id="sentElectronic">Sent Electronic</button>
<button type="button" class="btn btn-sm btn-warning mr-1" id="dontSend">Not Sent</button>
<button type="button" class="btn btn-sm btn-warning mr-1" id="notRequired">QSL Not Required</button>
<button type="button" class="btn btn-sm btn-warning mr-1" id="receivedBureau">Received (bureau)</button>
<button type="button" class="btn btn-sm btn-warning mr-1" id="receivedDirect">Received (direct)</button>
<button type="button" class="btn btn-sm btn-info mr-1" id="exportAdif">Create ADIF</button>
<button type="button" class="btn btn-sm btn-info mr-1" id="printLabel">Print Label</button>
<button type="button" class="btn btn-sm btn-danger mr-1" id="deleteQsos">Delete</button>
<span id="infoBox"></span>
</div>
</div>
</div>
<div class="form-row pt-2">
<div class="form-group form-inline col-lg d-flex flex-row justify-content-center align-items-center">
<button type="button" class="btn btn-sm btn-primary mr-1" data-toggle="collapse" data-target=".filterbody">Filters</button>
<button type="button" class="btn btn-sm btn-primary mr-1" data-toggle="collapse" data-target=".actionbody">Actions</button>
<label for="qsoResults" class="mr-2"># Results</label>
<select id="qsoResults" name="qsoResults" class="form-control form-control-sm mr-2">
<option value="250">250</option>
<option value="1000">1000</option>
<option value="2500">2500</option>
<option value="5000">5000</option>
</select>
<button type="submit" class="btn btn-sm btn-primary mr-1" id="searchButton">Search</button>
<button type="reset" class="btn btn-sm btn-danger mr-1" id="resetButton">Reset</button>
</div>
</div>
</form>
<table style="width:100%" class="table-sm table table-bordered table-hover table-striped table-condensed text-center" id="qsoList">
<thead>
<tr>
@ -228,6 +239,4 @@
<tbody>
</tbody>
</table>
</div>
</div>

View file

@ -51,6 +51,19 @@
</select>
</div>
<div class="form-group row">
<label for="emailSenderName" class="col-sm-2 col-form-label"><?php echo lang('options_email_sender_name'); ?></label>
<div class="col-sm-10">
<input type="text" name="emailSenderName" class="form-control" id="emailSenderName" value="<?php echo ($this->optionslib->get_option('emailSenderName') == "" ? 'Cloudlog' : $this->optionslib->get_option('emailSenderName'));?>">
</div>
</div>
<div class="form-group row">
<label for="emailAddress" class="col-sm-2 col-form-label"><?php echo lang('options_email_address'); ?></label>
<div class="col-sm-10">
<input type="text" name="emailAddress" class="form-control" id="emailAddress" value="<?php if($this->optionslib->get_option('emailAddress') != "") { echo $this->optionslib->get_option('emailAddress'); } ?>">
</div>
</div>
<div class="form-group row">
<label for="smtpHost" class="col-sm-2 col-form-label"><?php echo lang('options_smtp_host'); ?></label>

View file

@ -10,9 +10,9 @@
</div>
<div class="card-body">
<div class="stationinfo">
<div class="stationinfo">
<?php
<?php
if ($global_oqrs_text) {
echo $global_oqrs_text;
echo '<br /><br />';
@ -24,37 +24,40 @@
</form>';
echo '<div class="searchinfo"></div>';
?>
<script>// Get the input field
var input = document.getElementById("oqrssearch");
<script>
// Get the input field
var input = document.getElementById("oqrssearch");
// Execute a function when the user presses a key on the keyboard
input.addEventListener("keypress", function(event) {
// If the user presses the "Enter" key on the keyboard
if (event.key === "Enter") {
// Cancel the default action, if needed
event.preventDefault();
// Trigger the button element with a click
document.getElementById("stationbuttonsubmit").click();
}
});</script>
<?php
// Execute a function when the user presses a key on the keyboard
input.addEventListener("keypress", function(event) {
// If the user presses the "Enter" key on the keyboard
if (event.key === "Enter") {
// Cancel the default action, if needed
event.preventDefault();
// Trigger the button element with a click
document.getElementById("stationbuttonsubmit").click();
}
});
</script>
</div>
<?php
} else {
echo '<div class="resulttable">';
if ($stations->result() != NULL) { ?>
<form class="form-inline" enctype="multipart/form-data">
<label class="my-1 mr-2" for="station">Select station: </label>
<select id="station" class="custom-select my-1 mr-sm-2" name="station">
<?php foreach($stations->result() as $station) {
<form class="form-inline" enctype="multipart/form-data">
<label class="my-1 mr-2" for="station">Select station: </label>
<select id="station" class="custom-select my-1 mr-sm-2" name="station">
<?php foreach($stations->result() as $station) {
echo '<option value="' . $station->station_id . '">' . $station->station_profile_name . ' - ' . $station->station_callsign . '</option>'."\n";
} ?>
</select>
<button id="button1id" type="button" onclick="loadStationInfo();" name="button1id" class="btn btn-sm btn-primary"> Proceed</button>
</form>
</div>
</select>
<button id="button1id" type="button" onclick="loadStationInfo();" name="button1id" class="btn btn-sm btn-primary"> Proceed</button>
</form>
</div>
<div class="resulttable"></div>
<div class="searchinfo"></div>
<?php
<div class="searchinfo"></div>
<?php
}
else {
@ -65,4 +68,4 @@
</div>
</div>
</div>
</div>

View file

@ -62,6 +62,6 @@ The following QSO(s) were found. Please fill out the date and time and submit yo
<small id="emailInputHelp" class="form-text text-muted">Your e-mail address where we can contact you</small>
</div>
<button type="button" onclick="submitOqrsRequest(this.form);" class="btn btn-sm btn-primary"><i
<button type="button" id="requestSubmit" onclick="submitOqrsRequest(this.form);" class="btn btn-sm btn-primary"><i
class="fas fa-plus-square"></i> Submit request</button>
</form>

View file

@ -59,7 +59,7 @@ The following QSO(s) were found. Please fill out the date and time and submit yo
<small id="emailInputHelp" class="form-text text-muted">Your e-mail address where we can contact you</small>
</div>
<button type="button" onclick="submitOqrsRequestGrouped(this.form);" class="btn btn-sm btn-primary"><i
<button type="button" id="requestGroupedSubmit" onclick="submitOqrsRequestGrouped(this.form);" class="btn btn-sm btn-primary"><i
class="fas fa-plus-square"></i> Submit request</button>
</form>
<?php } else {

View file

@ -17,6 +17,7 @@
case 'SOTA': echo lang('gen_hamradio_sota'); break;
case 'State': echo lang('gen_hamradio_state'); break;
case 'Grid': echo lang('gen_hamradio_gridsquare'); break;
case 'Distance': echo lang('gen_hamradio_distance'); break;
case 'Band': echo lang('gen_hamradio_band'); break;
case 'Frequency': echo lang('gen_hamradio_frequency'); break;
case 'Operator': echo lang('gen_hamradio_operator'); break;
@ -32,6 +33,7 @@
case 'SOTA': echo lang('gen_hamradio_sota'); break;
case 'State': echo lang('gen_hamradio_state'); break;
case 'Grid': echo lang('gen_hamradio_gridsquare'); break;
case 'Distance': echo lang('gen_hamradio_distance'); break;
case 'Band': echo lang('gen_hamradio_band'); break;
case 'Frequency': echo lang('gen_hamradio_frequency'); break;
case 'Operator': echo lang('gen_hamradio_band'); break;
@ -47,6 +49,7 @@
case 'SOTA': echo lang('gen_hamradio_sota'); break;
case 'State': echo lang('gen_hamradio_state'); break;
case 'Grid': echo lang('gen_hamradio_gridsquare'); break;
case 'Distance': echo lang('gen_hamradio_distance'); break;
case 'Band': echo lang('gen_hamradio_band'); break;
case 'Frequency': echo lang('gen_hamradio_frequency'); break;
case 'Operator': echo lang('gen_hamradio_operator'); break;
@ -62,6 +65,7 @@
case 'SOTA': echo lang('gen_hamradio_sota'); break;
case 'State': echo lang('gen_hamradio_state'); break;
case 'Grid': echo lang('gen_hamradio_gridsquare'); break;
case 'Distance': echo lang('gen_hamradio_distance'); break;
case 'Band': echo lang('gen_hamradio_band'); break;
case 'Frequency': echo lang('gen_hamradio_frequency'); break;
case 'Operator': echo lang('gen_hamradio_operator'); break;
@ -77,6 +81,7 @@
case 'SOTA': echo lang('gen_hamradio_sota'); break;
case 'State': echo lang('gen_hamradio_state'); break;
case 'Grid': echo lang('gen_hamradio_gridsquare'); break;
case 'Distance': echo lang('gen_hamradio_distance'); break;
case 'Band': echo lang('gen_hamradio_band'); break;
case 'Frequency': echo lang('gen_hamradio_frequency'); break;
case 'Operator': echo lang('gen_hamradio_operator'); break;
@ -114,6 +119,7 @@
case 'WWFF': echo '<td>' . ($row->COL_WWFF_REF); break;
case 'POTA': echo '<td>' . ($row->COL_POTA_REF); break;
case 'Grid': echo '<td>'; echo strlen($row->COL_GRIDSQUARE)==0?$row->COL_VUCC_GRIDS:$row->COL_GRIDSQUARE; break;
case 'Distance':echo '<td>' . ($row->COL_DISTANCE ? $row->COL_DISTANCE . '&nbsp;km' : ''); break;
case 'Band': echo '<td>'; if($row->COL_SAT_NAME != null) { echo $row->COL_SAT_NAME; } else { echo strtolower($row->COL_BAND); }; break;
case 'State': echo '<td>' . ($row->COL_STATE); break;
case 'Operator': echo '<td>' . ($row->COL_OPERATOR); break;
@ -129,6 +135,7 @@
case 'WWFF': echo '<td>' . ($row->COL_WWFF_REF); break;
case 'POTA': echo '<td>' . ($row->COL_POTA_REF); break;
case 'Grid': echo '<td>'; echo strlen($row->COL_GRIDSQUARE)==0?$row->COL_VUCC_GRIDS:$row->COL_GRIDSQUARE; break;
case 'Distance':echo '<td>' . ($row->COL_DISTANCE ? $row->COL_DISTANCE . '&nbsp;km' : ''); break;
case 'Band': echo '<td>'; if($row->COL_SAT_NAME != null) { echo $row->COL_SAT_NAME; } else { echo strtolower($row->COL_BAND); }; break;
case 'State': echo '<td>' . ($row->COL_STATE); break;
case 'Operator': echo '<td>' . ($row->COL_OPERATOR); break;
@ -145,6 +152,7 @@
case 'WWFF': echo '<td>' . ($row->COL_WWFF_REF); break;
case 'POTA': echo '<td>' . ($row->COL_POTA_REF); break;
case 'Grid': echo '<td>'; echo strlen($row->COL_GRIDSQUARE)==0?$row->COL_VUCC_GRIDS:$row->COL_GRIDSQUARE; break;
case 'Distance':echo '<td>' . ($row->COL_DISTANCE ? $row->COL_DISTANCE . '&nbsp;km' : ''); break;
case 'Band': echo '<td>'; if($row->COL_SAT_NAME != null) { echo $row->COL_SAT_NAME; } else { echo strtolower($row->COL_BAND); }; break;
case 'State': echo '<td>' . ($row->COL_STATE); break;
case 'Operator': echo '<td>' . ($row->COL_OPERATOR); break;
@ -160,6 +168,7 @@
case 'WWFF': echo '<td>' . ($row->COL_WWFF_REF); break;
case 'POTA': echo '<td>' . ($row->COL_POTA_REF); break;
case 'Grid': echo '<td>'; echo strlen($row->COL_GRIDSQUARE)==0?$row->COL_VUCC_GRIDS:$row->COL_GRIDSQUARE; break;
case 'Distance':echo '<td>' . ($row->COL_DISTANCE ? $row->COL_DISTANCE . '&nbsp;km' : ''); break;
case 'Band': echo '<td>'; if($row->COL_SAT_NAME != null) { echo $row->COL_SAT_NAME; } else { echo strtolower($row->COL_BAND); }; break;
case 'State': echo '<td>' . ($row->COL_STATE); break;
case 'Operator': echo '<td>' . ($row->COL_OPERATOR); break;
@ -175,6 +184,7 @@
case 'WWFF': echo '<td>' . ($row->COL_WWFF_REF); break;
case 'POTA': echo '<td>' . ($row->COL_POTA_REF); break;
case 'Grid': echo '<td>'; echo strlen($row->COL_GRIDSQUARE)==0?$row->COL_VUCC_GRIDS:$row->COL_GRIDSQUARE; break;
case 'Distance':echo '<td>' . ($row->COL_DISTANCE ? $row->COL_DISTANCE . '&nbsp;km' : ''); break;
case 'Band': echo '<td>'; if($row->COL_SAT_NAME != null) { echo $row->COL_SAT_NAME; } else { echo strtolower($row->COL_BAND); }; break;
case 'State': echo '<td>' . ($row->COL_STATE); break;
case 'Operator': echo '<td>' . ($row->COL_OPERATOR); break;

View file

@ -161,8 +161,11 @@
<div class="form-group col-sm-6">
<label for="locator">Gridsquare</label>
<input type="text" class="form-control" id="locator" name="locator" value="<?php echo $qso->COL_GRIDSQUARE; ?>">
<small id="locator_info" class="form-text text-muted"><?php if ($qso->COL_DISTANCE != "") echo $qso->COL_DISTANCE." km"; ?></small>
</div>
<input type="hidden" name="distance" id="distance" value="<?php print ($qso->COL_DISTANCE != "") ? $qso->COL_DISTANCE : "0"; ?>">
<div class="form-group col-sm-6">
<label for="vucc_grids">VUCC Gridsquare</label>
<input type="text" class="form-control" id="vucc_grids" name="vucc_grids" value="<?php echo $qso->COL_VUCC_GRIDS; ?>">

View file

@ -142,6 +142,8 @@
</div>
</div>
<input type="hidden" name="distance" id="distance" value="0">
<div class="form-group row">
<label for="comment" class="col-sm-3 col-form-label"><?php echo lang('general_word_comment'); ?></label>
<div class="col-sm-9">

View file

@ -19,6 +19,7 @@ $ci =& get_instance();
case 'SOTA': echo lang('gen_hamradio_sota'); break;
case 'State': echo lang('gen_hamradio_state'); break;
case 'Grid': echo lang('gen_hamradio_gridsquare'); break;
case 'Distance': echo lang('gen_hamradio_distance'); break;
case 'Band': echo lang('gen_hamradio_band'); break;
case 'Frequency': echo lang('gen_hamradio_frequency'); break;
case 'Operator': echo lang('gen_hamradio_operator'); break;
@ -34,6 +35,7 @@ $ci =& get_instance();
case 'State': echo lang('gen_hamradio_state'); break;
case 'SOTA': echo lang('gen_hamradio_sota'); break;
case 'Grid': echo lang('gen_hamradio_gridsquare'); break;
case 'Distance': echo lang('gen_hamradio_distance'); break;
case 'Band': echo lang('gen_hamradio_band'); break;
case 'Frequency': echo lang('gen_hamradio_frequency'); break;
case 'Operator': echo lang('gen_hamradio_operator'); break;
@ -49,6 +51,7 @@ $ci =& get_instance();
case 'SOTA': echo lang('gen_hamradio_sota'); break;
case 'State': echo lang('gen_hamradio_state'); break;
case 'Grid': echo lang('gen_hamradio_gridsquare'); break;
case 'Distance': echo lang('gen_hamradio_distance'); break;
case 'Band': echo lang('gen_hamradio_band'); break;
case 'Frequency': echo lang('gen_hamradio_frequency'); break;
case 'Operator': echo lang('gen_hamradio_operator'); break;
@ -64,6 +67,7 @@ $ci =& get_instance();
case 'SOTA': echo lang('gen_hamradio_sota'); break;
case 'State': echo lang('gen_hamradio_state'); break;
case 'Grid': echo lang('gen_hamradio_gridsquare'); break;
case 'Distance': echo lang('gen_hamradio_distance'); break;
case 'Band': echo lang('gen_hamradio_band'); break;
case 'Frequency': echo lang('gen_hamradio_frequency'); break;
case 'Operator': echo lang('gen_hamradio_operator'); break;
@ -79,6 +83,7 @@ $ci =& get_instance();
case 'SOTA': echo lang('gen_hamradio_sota'); break;
case 'State': echo lang('gen_hamradio_state'); break;
case 'Grid': echo lang('gen_hamradio_gridsquare'); break;
case 'Distance': echo lang('gen_hamradio_distance'); break;
case 'Band': echo lang('gen_hamradio_band'); break;
case 'Frequency': echo lang('gen_hamradio_frequency'); break;
case 'Operator': echo lang('gen_hamradio_operator'); break;
@ -113,7 +118,7 @@ $ci =& get_instance();
$custom_date_format = $this->config->item('qso_date_format');
}
?>
<?php echo '<tr class="tr'.($i & 1).'" id ="qso_'. $row->COL_PRIMARY_KEY .'">'; ?>
<?php echo '<tr class="tr'.($i & 1).'" id="qso_'. $row->COL_PRIMARY_KEY .'">'; ?>
<td><?php $timestamp = strtotime($row->COL_TIME_ON); echo date($custom_date_format, $timestamp); ?></td>
<?php if(($this->config->item('use_auth') && ($this->session->userdata('user_type') >= 2)) || $this->config->item('use_auth') === FALSE || ($this->config->item('show_time'))) { ?>
<td><?php $timestamp = strtotime($row->COL_TIME_ON); echo date('H:i', $timestamp); ?></td>
@ -133,6 +138,7 @@ $ci =& get_instance();
case 'WWFF': echo '<td>' . ($row->COL_WWFF_REF); break;
case 'POTA': echo '<td>' . ($row->COL_POTA_REF); break;
case 'Grid': echo '<td>'; echo strlen($row->COL_GRIDSQUARE)==0?$row->COL_VUCC_GRIDS:$row->COL_GRIDSQUARE; break;
case 'Distance':echo '<td>' . ($row->COL_DISTANCE ? $row->COL_DISTANCE . '&nbsp;km' : ''); break;
case 'Band': echo '<td>'; if($row->COL_SAT_NAME != null) { echo $row->COL_SAT_NAME; } else { echo strtolower($row->COL_BAND); }; break;
case 'State': echo '<td>' . ($row->COL_STATE); break;
case 'Operator': echo '<td>' . ($row->COL_OPERATOR); break;
@ -149,6 +155,7 @@ $ci =& get_instance();
case 'WWFF': echo '<td>' . ($row->COL_WWFF_REF); break;
case 'POTA': echo '<td>' . ($row->COL_POTA_REF); break;
case 'Grid': echo '<td>'; echo strlen($row->COL_GRIDSQUARE)==0?$row->COL_VUCC_GRIDS:$row->COL_GRIDSQUARE; break;
case 'Distance':echo '<td>' . ($row->COL_DISTANCE ? $row->COL_DISTANCE . '&nbsp;km' : ''); break;
case 'Band': echo '<td>'; if($row->COL_SAT_NAME != null) { echo $row->COL_SAT_NAME; } else { echo strtolower($row->COL_BAND); }; break;
case 'State': echo '<td>' . ($row->COL_STATE); break;
case 'Operator': echo '<td>' . ($row->COL_OPERATOR); break;
@ -166,6 +173,7 @@ $ci =& get_instance();
case 'WWFF': echo '<td>' . ($row->COL_WWFF_REF); break;
case 'POTA': echo '<td>' . ($row->COL_POTA_REF); break;
case 'Grid': echo '<td>'; echo strlen($row->COL_GRIDSQUARE)==0?$row->COL_VUCC_GRIDS:$row->COL_GRIDSQUARE; break;
case 'Distance':echo '<td>' . ($row->COL_DISTANCE ? $row->COL_DISTANCE . '&nbsp;km' : ''); break;
case 'Band': echo '<td>'; if($row->COL_SAT_NAME != null) { echo $row->COL_SAT_NAME; } else { echo strtolower($row->COL_BAND); }; break;
case 'State': echo '<td>' . ($row->COL_STATE); break;
case 'Operator': echo '<td>' . ($row->COL_OPERATOR); break;
@ -182,6 +190,7 @@ $ci =& get_instance();
case 'WWFF': echo '<td>' . ($row->COL_WWFF_REF); break;
case 'POTA': echo '<td>' . ($row->COL_POTA_REF); break;
case 'Grid': echo '<td>'; echo strlen($row->COL_GRIDSQUARE)==0?$row->COL_VUCC_GRIDS:$row->COL_GRIDSQUARE; break;
case 'Distance':echo '<td>' . ($row->COL_DISTANCE ? $row->COL_DISTANCE . '&nbsp;km' : ''); break;
case 'Band': echo '<td>'; if($row->COL_SAT_NAME != null) { echo $row->COL_SAT_NAME; } else { echo strtolower($row->COL_BAND); }; break;
case 'State': echo '<td>' . ($row->COL_STATE); break;
case 'Operator': echo '<td>' . ($row->COL_OPERATOR); break;
@ -198,6 +207,7 @@ $ci =& get_instance();
case 'WWFF': echo '<td>' . ($row->COL_WWFF_REF); break;
case 'POTA': echo '<td>' . ($row->COL_POTA_REF); break;
case 'Grid': echo '<td>'; echo strlen($row->COL_GRIDSQUARE)==0?$row->COL_VUCC_GRIDS:$row->COL_GRIDSQUARE; break;
case 'Distance':echo '<td>' . ($row->COL_DISTANCE ? $row->COL_DISTANCE . '&nbsp;km' : ''); break;
case 'Band': echo '<td>'; if($row->COL_SAT_NAME != null) { echo $row->COL_SAT_NAME; } else { echo strtolower($row->COL_BAND); }; break;
case 'State': echo '<td>' . ($row->COL_STATE); break;
case 'Operator': echo '<td>' . ($row->COL_OPERATOR); break;
@ -207,7 +217,7 @@ $ci =& get_instance();
if(($this->config->item('use_auth')) && ($this->session->userdata('user_type') >= 2)) { ?>
<?php
echo '<td style=\'text-align: center\' class="qsl">';
echo '<td id="qsl_'.$row->COL_PRIMARY_KEY.'" style=\'text-align: center\' class="qsl">';
echo '<span ';
if ($row->COL_QSL_SENT != "N") {
if ($row->COL_QSLSDATE != null) {

View file

@ -67,7 +67,7 @@
</div>
<div class="form-row">
<div class="form-group col-sm-6">
<div class="form-group col-sm-6" id="us_state">
<label for="stateInput">Station State</label>
<select class="form-control custom-select" name="station_state" id="StateHelp" aria-describedby="stationCntyInputHelp">
<option value="" selected></option>
@ -125,6 +125,27 @@
<small id="StateHelp" class="form-text text-muted">Station state. Applies to certain countries only. Leave blank if not applicable.</small>
</div>
<div class="form-group col-sm-6" id="canada_state">
<label for="stateInput">Station Canadian Province</label>
<select class="form-control custom-select" name="station_ca_state" id="StateHelp" aria-describedby="stationCntyInputHelp">
<option value="" selected></option>
<option value="AB">Alberta</option>
<option value="BC">British Columbia</option>
<option value="MB">Manitoba</option>
<option value="NB">New Brunswick</option>
<option value="NL">Newfoundland & Labrador</option>
<option value="NS">Nova Scotia</option>
<option value="NT">Northwest Territories</option>
<option value="NU">Nunavut</option>
<option value="ON">Ontario</option>
<option value="PE">Prince Edward Island</option>
<option value="QC">Quebec</option>
<option value="SK">Saskatchewan</option>
<option value="YT">Yukon</option>
</select>
<small id="StateHelp" class="form-text text-muted">Station state. Applies to certain countries only. Leave blank if not applicable.</small>
</div>
<div class="form-group col-sm-6">
<label for="stationCntyInput">Station County</label>
<input disabled="disabled" type="text" class="form-control" name="station_cnty" id="stationCntyInput" aria-describedby="stationCntyInputHelp">

View file

@ -87,7 +87,7 @@
</div>
<!-- US State -->
<div class="form-group">
<div class="form-group" id="us_state">
<label for="stateInput">Station State</label>
<select class="form-control custom-select" name="station_state" id="StateHelp" aria-describedby="stationCntyInputHelp">
<option value=""></option>
@ -142,6 +142,15 @@
<option value="WI" <?php if($my_station_profile->state == "WI") { echo "selected"; } ?>>Wisconsin</option>
<option value="WV" <?php if($my_station_profile->state == "WV") { echo "selected"; } ?>>West Virginia</option>
<option value="WY" <?php if($my_station_profile->state == "WY") { echo "selected"; } ?>>Wyoming</option>
</select>
<small id="StateHelp" class="form-text text-muted">Station state. Applies to certain countries only. Leave blank if not applicable.</small>
</div>
<!-- Canada State -->
<div class="form-group" id="canada_state">
<label for="stateInput">Canadian Province</label>
<select class="form-control custom-select" name="station_ca_state" id="StateHelp" aria-describedby="stationCntyInputHelp">
<option value=""></option>
<option value="AB" <?php if($my_station_profile->state == "AB") { echo "selected"; } ?>>Alberta</option>
<option value="BC" <?php if($my_station_profile->state == "BC") { echo "selected"; } ?>>British Columbia</option>
<option value="MB" <?php if($my_station_profile->state == "MB") { echo "selected"; } ?>>Manitoba</option>
@ -157,7 +166,7 @@
<option value="YT" <?php if($my_station_profile->state == "YT") { echo "selected"; } ?>>Yukon</option>
</select>
<small id="StateHelp" class="form-text text-muted">Station state. Applies to certain countries only. Leave blank if not applicable.</small>
</div>
</div>
<!-- US County -->
<div class="form-group">

View file

@ -3,44 +3,61 @@
<div class="card">
<div class="card-header">
DXCC Lookup Data
</div>
<ul style="font-size: 15px;" class="nav nav-tabs card-header-tabs pull-right" id="myTab" role="tablist">
<li class="nav-item">
<a class="nav-link active" id="dxcc-tab" data-toggle="tab" href="#dxcc" role="tab" aria-controls="update" aria-selected="true">DXCC Lookup Data</a>
</li>
<li class="nav-item">
<a class="nav-link" id="distance-tab" data-toggle="tab" href="#distance" role="tab" aria-controls="update" aria-selected="false">Distance Data</a>
</li>
</ul>
</div>
<div class="card-body">
<p class="card-text">Here you can update the DXCC lookup data that is used for displaying callsign information.</p>
<p class="card-text">This data is provided by <a href="https://clublog.org/">Clublog</a>.</p>
<?php if(!extension_loaded('xml')) { ?>
<div class="alert alert-danger" role="alert">
You must install php-xml for this to work.
<div class="tab-content" id="myTabContent">
<div class="tab-pane fade show active" id="dxcc" role="tabpanel" aria-labelledby="dxcc-tab">
<p class="card-text">Here you can update the DXCC lookup data that is used for displaying callsign information.</p>
<p class="card-text">This data is provided by <a href="https://clublog.org/">Clublog</a>.</p>
<?php if(!extension_loaded('xml')) { ?>
<div class="alert alert-danger" role="alert">
You must install php-xml for this to work.
</div>
<?php } else { ?>
<h5>Check for DXCC Data Updates</h5>
<input type="submit" class="btn btn-primary" id="btn_update_dxcc" value="Update DXCC Data" />
<div id="dxcc_update_status">Status:</br></div>
<br/>
<br/>
<h5>Apply DXCC Data to Logbook</h5>
<p class="card-text">
After updating, Cloudlog can fill in missing callsign information in the logbook using the newly-obtained DXCC data.
You can choose to check just the QSOs in the logbook that are missing DXCC metadata or to re-check the entire logbook
and update existing metadata as well, in case it has changed.
</p>
<p><a class="btn btn-primary" href="<?php echo site_url('update/check_missing_dxcc');?>">Check QSOs missing DXCC data</a></p>
<p><a class="btn btn-primary" href="<?php echo site_url('update/check_missing_dxcc/all');?>">Re-check all QSOs in logbook</a></p>
<h5>Apply Continent Data to Logbook</h5>
<p class="card-text">
This function can be used to update QSO continent information for all QSOs in Cloudlog missing that information.
</p>
<p><a class="btn btn-primary" href="<?php echo site_url('update/check_missing_continent');?>">Check QSOs missing continent data</a></p>
<style>
#dxcc_update_status{
display: None;
}
</style>
<?php } ?>
</div>
<?php } else { ?>
<h5>Check for DXCC Data Updates</h5>
<input type="submit" class="btn btn-primary" id="btn_update_dxcc" value="Update DXCC Data" />
<div id="dxcc_update_status">Status:</br></div>
<br/>
<br/>
<h5>Apply DXCC Data to Logbook</h5>
<p class="card-text">
After updating, Cloudlog can fill in missing callsign information in the logbook using the newly-obtained DXCC data.
You can choose to check just the QSOs in the logbook that are missing DXCC metadata or to re-check the entire logbook
and update existing metadata as well, in case it has changed.
</p>
<p><a class="btn btn-primary" href="<?php echo site_url('update/check_missing_dxcc');?>">Check QSOs missing DXCC data</a></p>
<p><a class="btn btn-primary" href="<?php echo site_url('update/check_missing_dxcc/all');?>">Re-check all QSOs in logbook</a></p>
<h5>Apply Continent Data to Logbook</h5>
<p class="card-text">
This function can be used to update QSO continent information for all QSOs in Cloudlog missing that information.
</p>
<p><a class="btn btn-primary" href="<?php echo site_url('update/check_missing_continent');?>">Check QSOs missing continent data</a></p>
<style>
#dxcc_update_status{
display: None;
}
</style>
<?php } ?>
<div class="tab-pane fade" id="distance" role="tabpanel" aria-labelledby="distance-tab">
<p class="card-text">Here you can update QSOs with missing distance information.</p>
<p><a class="btn btn-primary" hx-get="<?php echo site_url('update/update_distances');?>" hx-target="#distance_results" href="<?php echo site_url('update/update_distances');?>">Update distance data</a></p>
<div id="distance_results"></div>
</div>
</div>
</div>
</div>
</div>

View file

@ -313,6 +313,8 @@
</option>
<option value="Grid">
<?php echo lang('gen_hamradio_gridsquare'); ?></option>
<option value="Distance">
<?php echo lang('gen_hamradio_distance'); ?></option>
<option value="Operator">
<?php echo lang('gen_hamradio_operator'); ?></option>
</select>
@ -342,6 +344,8 @@
</option>
<option value="Grid">
<?php echo lang('gen_hamradio_gridsquare'); ?></option>
<option value="Distance">
<?php echo lang('gen_hamradio_distance'); ?></option>
<option value="Operator">
<?php echo lang('gen_hamradio_operator'); ?></option>
</select>
@ -371,6 +375,8 @@
</option>
<option value="Grid">
<?php echo lang('gen_hamradio_gridsquare'); ?></option>
<option value="Distance">
<?php echo lang('gen_hamradio_distance'); ?></option>
<option value="Operator">
<?php echo lang('gen_hamradio_operator'); ?></option>
</select>
@ -400,6 +406,8 @@
</option>
<option value="Grid">
<?php echo lang('gen_hamradio_gridsquare'); ?></option>
<option value="Distance">
<?php echo lang('gen_hamradio_distance'); ?></option>
<option value="Operator">
<?php echo lang('gen_hamradio_operator'); ?></option>
</select>
@ -430,6 +438,8 @@
</option>
<option value="Grid">
<?php echo lang('gen_hamradio_gridsquare'); ?></option>
<option value="Distance">
<?php echo lang('gen_hamradio_distance'); ?></option>
<option value="Operator">
<?php echo lang('gen_hamradio_operator'); ?></option>
<option value="Location">

View file

@ -360,6 +360,7 @@
<option value="POTA" <?php if ($user_column1 == "POTA") { echo " selected =\"selected\""; } ?>><?php echo lang('gen_hamradio_pota'); ?></option>
<option value="State" <?php if ($user_column1 == "State") { echo " selected =\"selected\""; } ?>><?php echo lang('gen_hamradio_state'); ?></option>
<option value="Grid" <?php if ($user_column1 == "Grid") { echo " selected =\"selected\""; } ?>><?php echo lang('gen_hamradio_gridsquare'); ?></option>
<option value="Distance" <?php if ($user_column1 == "Distance") { echo " selected =\"selected\""; } ?>><?php echo lang('gen_hamradio_distance'); ?></option>
<option value="Operator" <?php if ($user_column1 == "Operator") { echo " selected =\"selected\""; } ?>><?php echo lang('gen_hamradio_operator'); ?></option>
</select>
</div>
@ -379,6 +380,7 @@
<option value="POTA" <?php if ($user_column1 == "POTA") { echo " selected =\"selected\""; } ?>><?php echo lang('gen_hamradio_pota'); ?></option>
<option value="State" <?php if ($user_column2 == "State") { echo " selected =\"selected\""; } ?>><?php echo lang('gen_hamradio_state'); ?></option>
<option value="Grid" <?php if ($user_column2 == "Grid") { echo " selected =\"selected\""; } ?>><?php echo lang('gen_hamradio_gridsquare'); ?></option>
<option value="Distance" <?php if ($user_column2 == "Distance") { echo " selected =\"selected\""; } ?>><?php echo lang('gen_hamradio_distance'); ?></option>
<option value="Operator" <?php if ($user_column2 == "Operator") { echo " selected =\"selected\""; } ?>><?php echo lang('gen_hamradio_operator'); ?></option>
</select>
</div>
@ -398,6 +400,7 @@
<option value="POTA" <?php if ($user_column1 == "POTA") { echo " selected =\"selected\""; } ?>><?php echo lang('gen_hamradio_pota'); ?></option>
<option value="State" <?php if ($user_column3 == "State") { echo " selected =\"selected\""; } ?>><?php echo lang('gen_hamradio_state'); ?></option>
<option value="Grid" <?php if ($user_column3 == "Grid") { echo " selected =\"selected\""; } ?>><?php echo lang('gen_hamradio_gridsquare'); ?></option>
<option value="Distance" <?php if ($user_column3 == "Distance") { echo " selected =\"selected\""; } ?>><?php echo lang('gen_hamradio_distance'); ?></option>
<option value="Operator" <?php if ($user_column3 == "Operator") { echo " selected =\"selected\""; } ?>><?php echo lang('gen_hamradio_operator'); ?></option>
</select>
</div>
@ -417,6 +420,7 @@
<option value="POTA" <?php if ($user_column1 == "POTA") { echo " selected =\"selected\""; } ?>><?php echo lang('gen_hamradio_pota'); ?></option>
<option value="State" <?php if ($user_column4 == "State") { echo " selected =\"selected\""; } ?>><?php echo lang('gen_hamradio_state'); ?></option>
<option value="Grid" <?php if ($user_column4 == "Grid") { echo " selected =\"selected\""; } ?>><?php echo lang('gen_hamradio_gridsquare'); ?></option>
<option value="Distance" <?php if ($user_column4 == "Distance") { echo " selected =\"selected\""; } ?>><?php echo lang('gen_hamradio_distance'); ?></option>
<option value="Operator" <?php if ($user_column4 == "Operator") { echo " selected =\"selected\""; } ?>><?php echo lang('gen_hamradio_operator'); ?></option>
</select>
</div>
@ -436,6 +440,7 @@
<option value="POTA" <?php if ($user_column1 == "POTA") { echo " selected =\"selected\""; } ?>><?php echo lang('gen_hamradio_pota'); ?></option>
<option value="State" <?php if ($user_column5 == "State") { echo " selected =\"selected\""; } ?>><?php echo lang('gen_hamradio_state'); ?></option>
<option value="Grid" <?php if ($user_column5 == "Grid") { echo " selected =\"selected\""; } ?>><?php echo lang('gen_hamradio_gridsquare'); ?></option>
<option value="Distance" <?php if ($user_column5 == "Distance") { echo " selected =\"selected\""; } ?>><?php echo lang('gen_hamradio_distance'); ?></option>
<option value="Operator" <?php if ($user_column5 == "Operator") { echo " selected =\"selected\""; } ?>><?php echo lang('gen_hamradio_operator'); ?></option>
<option value="Location" <?php if ($user_column5 == "Location") { echo " selected =\"selected\""; } ?>><?php echo lang('cloudlog_station_profile'); ?></option>
</select>

View file

@ -44,7 +44,7 @@ input[type="email"] {
<div class="form-group">
<div class="input-group">
<span class="input-group-addon"><i class="glyphicon glyphicon-envelope color-blue"></i></span>
<input id="email" name="email" placeholder="<?php echo lang('account_email_address'); ?>" class="form-control" type="email">
<input id="email" name="email" placeholder="<?php echo lang('account_email_address'); ?>" class="form-control" type="email" autofocus>
</div>
</div>
<div class="form-group">

View file

@ -40,7 +40,7 @@ body {
<div>
<label for="floatingInput"><strong><?php echo lang('account_username'); ?></strong></label>
<input type="text" name="user_name" class="form-control" id="floatingInput" placeholder="<?php echo lang('account_username'); ?>"
value="<?php echo $this->input->post('user_name'); ?>">
value="<?php echo $this->input->post('user_name'); ?>" autofocus>
</div>
<div>
<label for="floatingPassword"><strong><?php echo lang('account_password'); ?></strong></label>

View file

@ -11,6 +11,7 @@ function echo_table_header_col($ctx, $name) {
case 'POTA': echo '<th>'.$ctx->lang->line('gen_hamradio_pota').'</th>'; break;
case 'State': echo '<th>'.$ctx->lang->line('gen_hamradio_state').'</th>'; break;
case 'Grid': echo '<th>'.$ctx->lang->line('gen_hamradio_gridsquare').'</th>'; break;
case 'Distance': echo '<th>'.$ctx->lang->line('gen_hamradio_distance').'</th>'; break;
case 'Band': echo '<th>'.$ctx->lang->line('gen_hamradio_band').'</td>'; break;
case 'Frequency': echo '<th>'.$ctx->lang->line('gen_hamradio_frequency').'</th>'; break;
case 'Operator': echo '<th>'.$ctx->lang->line('gen_hamradio_operator').'</th>'; break;
@ -30,6 +31,7 @@ function echo_table_col($row, $name) {
case 'WWFF': echo '<td>' . ($row->COL_WWFF_REF) . '</td>'; break;
case 'POTA': echo '<td>' . ($row->COL_POTA_REF) . '</td>'; break;
case 'Grid': echo '<td>'; echoQrbCalcLink($row->station_gridsquare, $row->COL_VUCC_GRIDS, $row->COL_GRIDSQUARE); echo '</td>'; break;
case 'Distance':echo '<td>' . ($row->COL_DISTANCE ? $row->COL_DISTANCE . '&nbsp;km' : '') . '</td>'; break;
case 'Band': echo '<td>'; if($row->COL_SAT_NAME != null) { echo '<a href="https://db.satnogs.org/search/?q='.$row->COL_SAT_NAME.'" target="_blank"><span data-toggle="tooltip" data-original-title="'.$row->COL_BAND.'">'.$row->COL_SAT_NAME.'</span></a></td>'; } else { if ($row->COL_FREQ != null) { echo '<span data-toggle="tooltip" data-original-title="'.$ci->frequency->hz_to_mhz($row->COL_FREQ).'">'. strtolower($row->COL_BAND).'</span>'; } else { echo strtolower($row->COL_BAND); } } echo '</td>'; break;
case 'Frequency': echo '<td>'; if($row->COL_SAT_NAME != null) { echo '<a href="https://db.satnogs.org/search/?q='.$row->COL_SAT_NAME.'" target="_blank">'; if ($row->COL_FREQ != null) { echo '<span data-toggle="tooltip" data-original-title="'.$ci->frequency->hz_to_mhz($row->COL_FREQ).'">'.$row->COL_SAT_NAME.'</span>'; } else { echo $row->COL_SAT_NAME; } echo '</a></td>'; } else { if ($row->COL_FREQ != null) { echo '<span data-toggle="tooltip" data-original-title="'.$row->COL_BAND.'">'.$ci->frequency->hz_to_mhz($row->COL_FREQ).'</span>'; } else { echo strtolower($row->COL_BAND); } } echo '</td>'; break;
case 'State': echo '<td>' . ($row->COL_STATE) . '</td>'; break;
@ -92,13 +94,27 @@ function echoQrbCalcLink($mygrid, $grid, $vucc) {
// Get Default date format from /config/cloudlog.php
$custom_date_format = $this->config->item('qso_date_format');
}
echo '<tr class="tr'.($i & 1).'" id ="qso_'. $row->COL_PRIMARY_KEY .'">'; ?>
echo '<tr class="tr'.($i & 1).'" id="qso_'. $row->COL_PRIMARY_KEY .'">'; ?>
<td><?php $timestamp = strtotime($row->COL_TIME_ON); echo date($custom_date_format, $timestamp); ?></td>
<?php if(($this->config->item('use_auth') && ($this->session->userdata('user_type') >= 2)) || $this->config->item('use_auth') === FALSE || ($this->config->item('show_time'))) { ?>
<td><?php $timestamp = strtotime($row->COL_TIME_ON); echo date('H:i', $timestamp); ?></td>
<?php } ?>
<td>
<a id="edit_qso" href="javascript:displayQso(<?php echo $row->COL_PRIMARY_KEY; ?>)"><?php echo str_replace("0","&Oslash;",strtoupper($row->COL_CALL)); ?></a>
<?php
if ($row->lastupload) {
$lotw_hint = '';
$diff = (time() - strtotime($row->lastupload)) / 86400;
if ($diff > 365) {
$lotw_hint = ' lotw_info_red';
} elseif ($diff > 30) {
$lotw_hint = ' lotw_info_orange';
} elseif ($diff > 7) {
$lotw_hint = ' lotw_info_yellow';
}
$timestamp = strtotime($row->lastupload); echo ($row->callsign == '' ? '' : ' <small id="lotw_info" class="badge badge-success'.$lotw_hint.'" data-toggle="tooltip" data-original-title="LoTW User. Last upload was '.date($custom_date_format." H:i", $timestamp).'">L</small>');
}
?>
</td>
<?php
@ -109,7 +125,7 @@ function echoQrbCalcLink($mygrid, $grid, $vucc) {
echo_table_col($row, $this->session->userdata('user_column5'));
if(($this->config->item('use_auth')) && ($this->session->userdata('user_type') >= 2)) { ?>
<td class="qsl">
<td id="qsl_<?php echo $row->COL_PRIMARY_KEY; ?>" class="qsl">
<span <?php if ($row->COL_QSL_SENT != "N") {
switch ($row->COL_QSL_SENT) {
case "Y":

View file

@ -135,13 +135,13 @@
switch ($measurement_base) {
case 'M':
$distance .= "mi";
$distance .= " mi";
break;
case 'K':
$distance .= "km";
$distance .= " km";
break;
case 'N':
$distance .= "nmi";
$distance .= " nmi";
break;
}
echo $distance;
@ -391,7 +391,7 @@
$hashtags .= " #IOTA ".$row->COL_IOTA;
}
if($row->COL_SOTA_REF != null) {
$hashtags .= " #SOTA ".$row->COL_SOTA_EF;
$hashtags .= " #SOTA ".$row->COL_SOTA_REF;
}
if($row->COL_POTA_REF != null) {
$hashtags .= " #POTA ".$row->COL_POTA_REF;

View file

@ -9,6 +9,7 @@ function echo_table_header_col($ctx, $name) {
case 'SOTA': echo '<th>'.$ctx->lang->line('gen_hamradio_sota').'</th>'; break;
case 'State': echo '<th>'.$ctx->lang->line('gen_hamradio_state').'</th>'; break;
case 'Grid': echo '<th>'.$ctx->lang->line('gen_hamradio_gridsquare').'</th>'; break;
case 'Distance': echo '<th>'.$ctx->lang->line('gen_hamradio_distance').'</th>'; break;
case 'Band': echo '<th>'.$ctx->lang->line('gen_hamradio_band').'</th>'; break;
case 'Frequency': echo '<th>'.$ctx->lang->line('gen_hamradio_frequency').'</th>'; break;
case 'Operator': echo '<th>'.$ctx->lang->line('gen_hamradio_operator').'</th>'; break;
@ -27,6 +28,7 @@ function echo_table_col($row, $name) {
case 'WWFF': echo '<td>' . ($row->COL_WWFF_REF) . '</td>'; break;
case 'POTA': echo '<td>' . ($row->COL_POTA_REF) . '</td>'; break;
case 'Grid': echo '<td>'; echoQrbCalcLink($row->station_gridsquare, $row->COL_VUCC_GRIDS, $row->COL_GRIDSQUARE); echo '</td>'; break;
case 'Distance':echo '<td>' . ($row->COL_DISTANCE ? $row->COL_DISTANCE . '&nbsp;km' : '') . '</td>'; break;
case 'Band': echo '<td>'; if($row->COL_SAT_NAME != null) { echo '<a href="https://db.satnogs.org/search/?q='.$row->COL_SAT_NAME.'" target="_blank">'.$row->COL_SAT_NAME.'</a></td>'; } else { echo strtolower($row->COL_BAND); } echo '</td>'; break;
case 'Frequency': echo '<td>'; if($row->COL_FREQ != null) { echo $ci->frequency->hz_to_mhz($row->COL_FREQ); } else { echo strtolower($row->COL_BAND); } echo '</td>'; break;
case 'State': echo '<td>' . ($row->COL_STATE) . '</td>'; break;

View file

@ -135,7 +135,7 @@ thead > tr > td {
text-transform: uppercase;
}
.stationinfo #oqrssearch:valid {
#oqrssearch:valid {
text-transform: uppercase;
}
@ -440,4 +440,16 @@ div#station_logbooks_linked_table_paginate {
#lotw_manual_results {
padding-top: 10px;
}
}
.lotw_info_yellow {
background-image: linear-gradient(to bottom, #3fb618, yellow);
}
.lotw_info_orange {
background-image: linear-gradient(to bottom, #3fb618, orange);
}
.lotw_info_red {
background-image: linear-gradient(to bottom, #3fb618, red);
}

View file

@ -16,7 +16,6 @@ L.Maidenhead = L.LayerGroup.extend({
initialize: function (options) {
L.LayerGroup.prototype.initialize.call(this);
L.Util.setOptions(this, options);
},
onAdd: function (map) {
@ -37,16 +36,19 @@ L.Maidenhead = L.LayerGroup.extend({
redraw: function () {
var d3 = new Array(20, 10, 10, 1, 1, 1, 1, 1, 1, 1, 1 / 24, 1 / 24, 1 / 24, 1 / 24, 1 / 24, 1 / 240, 1 / 240, 1 / 240, 1 / 240, 1 / 240 / 24, 1 / 240 / 24);
var lat_cor = new Array(0, 8, 8, 8, 8, 1.7, 6, 8, 8, 8, 1.4, 2.5, 3, 3.5, 4, 4, 3.5, 3.5, 3, 1.8, 1.6);
var lat_cor = new Array(0, 8, 8, 8, 2.5, 2.2, 6, 8, 8, 8, 1.4, 2.5, 3, 3.5, 4, 4, 3.5, 3.5, 3, 1.8, 1.6); // Used for gridsquare text offset
var bounds = map.getBounds();
var zoom = map.getZoom();
console.log(zoom);
var unit = d3[zoom];
var lcor = lat_cor[zoom];
var w = bounds.getWest();
var e = bounds.getEast();
var n = bounds.getNorth();
var s = bounds.getSouth();
if (zoom==1) {var c = 2;} else {var c = 0.1;}
var field_lat_cor = new Array(0, 8, 8, 9, 8, 7, 6, 8, 8, 8, 1.4, 2.5, 3, 3.5, 4, 4, 3.5, 3.5, 3, 1.8, 1.6); // Used for field text offset
var field_cor = field_lat_cor[zoom];
if (zoom==1) {var c = 2;} else {var c = 0.2;} // Height offset
if (n > 85) n = 85;
if (s < -85) s = -85;
var left = Math.floor(w/(unit*2))*(unit*2);
@ -56,66 +58,82 @@ L.Maidenhead = L.LayerGroup.extend({
this.eachLayer(this.removeLayer, this);
for (var lon = left; lon < right; lon += (unit*2)) {
for (var lat = bottom; lat < top; lat += unit) {
var bounds = [[lat,lon],[lat+unit,lon+(unit*2)]];
if(grid_two.includes(this._getLocator(lon,lat)) || grid_four.includes(this._getLocator(lon,lat)) || grid_six.includes(this._getLocator(lon,lat))) {
if(grid_two_confirmed.includes(this._getLocator(lon,lat)) || grid_four_confirmed.includes(this._getLocator(lon,lat)) || grid_six_confirmed.includes(this._getLocator(lon,lat))) {
this.addLayer(L.rectangle(bounds, {className: 'grid-rectangle grid-confirmed', color: 'rgba(144,238,144, 0.6)', weight: 1, fillOpacity: 1, fill:true, interactive: false}));
} else {
this.addLayer(L.rectangle(bounds, {className: 'grid-rectangle grid-worked', color: this.options.color, weight: 1, fillOpacity: 1, fill:true, interactive: false}));
}
if (zoom < 2 || zoom > 4) {
this.addLayer(this._getLabel(lon+unit-(unit/lcor),lat+(unit/2)+(unit/lcor*c)));
}
if (zoom < 3 ) {
this.addLayer(L.rectangle(bounds, {className: 'grid-rectangle', color: this.options.color, weight: 1, fill:false, interactive: false}));
}
} else {
if (zoom < 3 || zoom > 5) {
this.addLayer(L.rectangle(bounds, {className: 'grid-rectangle', color: this.options.color, weight: 1, fill:false, interactive: false}));
}
}
//var pont = map.latLngToLayerPoint([lat,lon]);
//console.log(pont.x);
if (zoom < 3 || zoom > 5) {
this.addLayer(this._getLabel(lon+unit-(unit/lcor),lat+(unit/2)+(unit/lcor*c)));
if (lon > -180 || lon < 180) {
for (var lat = bottom; lat < top; lat += unit) {
var bounds = [[lat,lon],[lat+unit,lon+(unit*2)]];
var locator = this._getLocator(lon,lat);
if(grid_two.includes(locator) || grid_four.includes(locator) || grid_six.includes(locator)) {
if(grid_two_confirmed.includes(locator) || grid_four_confirmed.includes(locator) || grid_six_confirmed.includes(locator)) {
var rectConfirmed = L.rectangle(bounds, {className: 'grid-rectangle grid-confirmed', color: 'rgba(144,238,144, 0.6)', weight: 1, fillOpacity: 1, fill:true, interactive: false});
this.addLayer(rectConfirmed);
} else {
var rectWorked = L.rectangle(bounds, {className: 'grid-rectangle grid-worked', color: this.options.color, weight: 1, fillOpacity: 1, fill:true, interactive: false})
this.addLayer(rectWorked);
}
// Controls text on grid on various zoom levels
if (zoom < 2 || zoom > 2) {
this.addLayer(this._getLabel(lon+unit-(unit/lcor),lat+(unit/2)+(unit/lcor*c)));
}
if (zoom < 3 ) {
this.addLayer(L.rectangle(bounds, {className: 'grid-rectangle', color: this.options.color, weight: 1, fill:false, interactive: false}));
}
} else {
if (zoom < 3 || zoom > 5) {
this.addLayer(L.rectangle(bounds, {className: 'grid-rectangle', color: this.options.color, weight: 1, fill:false, interactive: false}));
}
}
if (zoom < 3 || zoom > 5) {
this.addLayer(this._getLabel(lon+unit-(unit/lcor),lat+(unit/2)+(unit/lcor*c)));
}
}
}
}
// Added this to print fields and field name, while still showing worked/confirmed gridsquares
if (zoom < 5 && zoom > 2) {
if (zoom < 6 && zoom > 2) {
unit = 10;
var left = Math.floor(w / (unit * 2)) * (unit * 2);
var right = Math.ceil(e / (unit * 2)) * (unit * 2);
var top = Math.ceil(n / unit) * unit;
var bottom = Math.floor(s / unit) * unit;
for (var lon = left; lon < right; lon += (unit * 2)) {
for (var lat = bottom; lat < top; lat += unit) {
var bounds = [[lat, lon], [lat + unit, lon + (unit * 2)]];
for (var lat = bottom; lat < top; lat += unit) {
var bounds = [[lat, lon], [lat + unit, lon + (unit * 2)]];
this.addLayer(L.rectangle(bounds, {
className: 'grid-rectangle',
color: this.options.color,
weight: 1,
fill: false,
interactive: false
}));
this.addLayer(this._getLabel2(lon + unit - (unit / lcor), lat + (unit / 2) + (unit / lcor * c)));
}
}
this.addLayer(L.rectangle(bounds, {
className: 'grid-rectangle',
color: this.options.color,
weight: 1,
fill: false,
interactive: false
}));
this.addLayer(this._getLabel2(lon + unit - (unit / field_cor), lat + (unit / 2) + (unit / lcor * c)));
}
}
}
return this;
},
_getLabel: function(lon,lat) {
var title_size = new Array(0, 10, 14, 16, 6, 13, 14, 16, 24, 36, 12, 14, 20, 36, 60, 12, 20, 36, 60, 12, 24);
var title_size = new Array(0, 10, 14, 16, 8.5, 13, 14, 16, 24, 36, 12, 14, 20, 36, 60, 12, 20, 36, 60, 12, 24); // Controls text size on labels
var zoom = map.getZoom();
var size = title_size[zoom]+'px';
var title = '<span class="grid-text" style="cursor: default;"><font style="color:'+this.options.color+'; font-size:'+size+'; font-weight: 900; ">' + this._getLocator(lon,lat) + '</font></span>';
var myIcon = L.divIcon({className: 'my-div-icon', html: title});
var title = '';
var locator = this._getLocator(lon,lat);
if (zoom != 4 && zoom != 3) {
title = '<span class="grid-text" style="cursor: default;"><font style="color:'+this.options.color+'; font-size:'+size+'; font-weight: 900; ">' + locator + '</font></span>';
}
var myIcon = L.divIcon({className: 'my-div-icon', html: title});
var marker = L.marker([lat,lon], {icon: myIcon}, clickable=false);
if (zoom == 4 || zoom == 3) {
marker.bindTooltip(locator);
if (typeof gridsquaremap !== 'undefined' && gridsquaremap == true) {
marker.on('click', function(event) {
spawnGridsquareModal(locator);
});
}
}
return marker;
},

View file

@ -0,0 +1,217 @@
/*
* L.Maidenhead displays a Maidenhead Locator of lines on the map.
*/
L.Maidenhead = L.LayerGroup.extend({
options: {
// Line and label color
color: 'rgba(255, 0, 0, 0.4)',
// Redraw on move or moveend
redraw: 'move'
},
initialize: function (options) {
L.LayerGroup.prototype.initialize.call(this);
L.Util.setOptions(this, options);
},
onAdd: function (map) {
this._map = map;
var grid = this.redraw();
this._map.on('viewreset '+ this.options.redraw, function () {
grid.redraw();
});
this.eachLayer(map.addLayer, map);
},
onRemove: function (map) {
// remove layer listeners and elements
map.off('viewreset '+ this.options.redraw, this.map);
this.eachLayer(this.removeLayer, this);
},
redraw: function () {
var d3 = new Array(20, 10, 10, 1, 1, 1, 1, 1, 1, 1, 1 / 24, 1 / 24, 1 / 24, 1 / 24, 1 / 24, 1 / 240, 1 / 240, 1 / 240, 1 / 240, 1 / 240 / 24, 1 / 240 / 24);
var lat_cor = new Array(0, 8, 8, 8, 2.5, 2.2, 6, 8, 8, 8, 1.4, 2.5, 3, 3.5, 4, 4, 3.5, 3.5, 3, 1.8, 1.6); // Used for gridsquare text offset
var bounds = map.getBounds();
var zoom = map.getZoom();
console.log(zoom);
var unit = d3[zoom];
var lcor = lat_cor[zoom];
var w = bounds.getWest();
var e = bounds.getEast();
var n = bounds.getNorth();
var s = bounds.getSouth();
var field_lat_cor = new Array(0, 8, 8, 9, 8, 7, 6, 8, 8, 8, 1.4, 2.5, 3, 3.5, 4, 4, 3.5, 3.5, 3, 1.8, 1.6); // Used for field text offset
var field_cor = field_lat_cor[zoom];
if (zoom==1) {var c = 2;} else {var c = 0.2;} // Height offset
if (n > 85) n = 85;
if (s < -85) s = -85;
var left = Math.floor(w/(unit*2))*(unit*2);
var right = Math.ceil(e/(unit*2))*(unit*2);
var top = Math.ceil(n/unit)*unit;
var bottom = Math.floor(s/unit)*unit;
this.eachLayer(this.removeLayer, this);
for (var lon = left; lon < right; lon += (unit*2)) {
if (lon > -180 || lon < 180) {
for (var lat = bottom; lat < top; lat += unit) {
var bounds = [[lat,lon],[lat+unit,lon+(unit*2)]];
var locator = this._getLocator(lon,lat);
if(grid_two.includes(locator) || grid_four.includes(locator) || grid_six.includes(locator)) {
if(grid_two_confirmed.includes(locator) || grid_four_confirmed.includes(locator) || grid_six_confirmed.includes(locator)) {
var rectConfirmed = L.rectangle(bounds, {className: 'grid-rectangle grid-confirmed', color: 'rgba(144,238,144, 0.6)', weight: 1, fillOpacity: 1, fill:true, interactive: false});
this.addLayer(rectConfirmed);
} else {
var rectWorked = L.rectangle(bounds, {className: 'grid-rectangle grid-worked', color: this.options.color, weight: 1, fillOpacity: 1, fill:true, interactive: false})
this.addLayer(rectWorked);
}
// Controls text on grid on various zoom levels
if (zoom < 2 || zoom > 2) {
this.addLayer(this._getLabel(lon+unit-(unit/lcor),lat+(unit/2)+(unit/lcor*c)));
}
if (zoom < 3 ) {
this.addLayer(L.rectangle(bounds, {className: 'grid-rectangle', color: this.options.color, weight: 1, fill:false, interactive: false}));
}
} else {
if (zoom < 3 || zoom > 5) {
this.addLayer(L.rectangle(bounds, {className: 'grid-rectangle', color: this.options.color, weight: 1, fill:false, interactive: false}));
}
}
// This one shows all grids, not just the worked/confirmed
if (zoom < 3 || zoom > 5) {
this.addLayer(this._getLabel(lon+unit-(unit/lcor),lat+(unit/2)+(unit/lcor*c)));
}
}
}
}
// Added this to print fields and field name, while still showing worked/confirmed gridsquares
if (zoom < 6 && zoom > 2) {
unit = 10;
var left = Math.floor(w / (unit * 2)) * (unit * 2);
var right = Math.ceil(e / (unit * 2)) * (unit * 2);
var top = Math.ceil(n / unit) * unit;
var bottom = Math.floor(s / unit) * unit;
for (var lon = left; lon < right; lon += (unit * 2)) {
for (var lat = bottom; lat < top; lat += unit) {
var bounds = [[lat, lon], [lat + unit, lon + (unit * 2)]];
this.addLayer(L.rectangle(bounds, {
className: 'grid-rectangle',
color: this.options.color,
weight: 1,
fill: false,
interactive: false
}));
this.addLayer(this._getLabel2(lon + unit - (unit / field_cor), lat + (unit / 2) + (unit / lcor * c)));
}
}
}
return this;
},
_getLabel: function(lon,lat) {
var title_size = new Array(0, 10, 14, 16, 8.5, 13, 14, 16, 24, 36, 12, 14, 20, 36, 60, 12, 20, 36, 60, 12, 24); // Controls text size on labels
var zoom = map.getZoom();
var size = title_size[zoom]+'px';
var title = '';
var locator = this._getLocator(lon,lat);
if (zoom != 3) {
title = '<span class="grid-text" style="cursor: default;"><font style="color:'+this.options.color+'; font-size:'+size+'; font-weight: 900; ">' + locator + '</font></span>';
}
var myIcon = L.divIcon({className: 'my-div-icon', html: title});
var marker = L.marker([lat,lon], {icon: myIcon}, clickable=false);
if (zoom == 4 || zoom == 3) {
marker.bindTooltip(locator);
}
if (typeof gridsquaremap !== 'undefined' && gridsquaremap == true) {
marker.on('click', function(event) {
spawnGridsquareModal(locator);
});
}
return marker;
},
_getLocator: function(lon,lat) {
var ydiv_arr=new Array(10, 1, 1/24, 1/240, 1/240/24);
var d1 = "ABCDEFGHIJKLMNOPQR".split("");
var d2 = "ABCDEFGHIJKLMNOPQRSTUVWX".split("");
var d4 = new Array(0, 1, 1, 2, 2, 2, 2, 2, 2, 2, 3, 3, 3, 3, 3, 4, 4, 4, 4, 5, 5);
var locator = "";
var x = lon;
var y = lat;
var precision = d4[map.getZoom()];
while (x < -180) {x += 360;}
while (x > 180) {x -=360;}
x = x + 180;
y = y + 90;
locator = locator + d1[Math.floor(x/20)] + d1[Math.floor(y/10)];
for (var i=0; i<4; i=i+1) {
if (precision > i+1) {
rlon = x%(ydiv_arr[i]*2);
rlat = y%(ydiv_arr[i]);
if ((i%2)==0) {
locator += Math.floor(rlon/(ydiv_arr[i+1]*2)) +""+ Math.floor(rlat/(ydiv_arr[i+1]));
} else {
locator += d2[Math.floor(rlon/(ydiv_arr[i+1]*2))] +""+ d2[Math.floor(rlat/(ydiv_arr[i+1]))];
}
}
}
return locator;
},
/*
Need this for the field printing, while showing worked/confirmed grids
*/
_getLabel2: function(lon,lat) {
var title_size = new Array(0, 10, 12, 16, 20, 26, 26, 16, 24, 36, 12, 14, 20, 36, 60, 12, 20, 36, 60, 12, 24);
var zoom = map.getZoom();
var size = title_size[zoom]+'px';
var title = '<span class="grid-text" style="cursor: default;"><font style="color:'+this.options.color+'; font-size:'+size+'; font-weight: 900; ">' + this._getLocator2(lon,lat) + '</font></span>';
var myIcon = L.divIcon({className: 'my-div-icon', html: title});
var marker = L.marker([lat,lon], {icon: myIcon}, clickable=false);
return marker;
},
/*
Need this for the field printing, while showing worked/confirmed grids
*/
_getLocator2: function(lon,lat) {
var ydiv_arr=new Array(10, 1, 1/24, 1/240, 1/240/24);
var d1 = "ABCDEFGHIJKLMNOPQR".split("");
var d2 = "ABCDEFGHIJKLMNOPQRSTUVWX".split("");
var d4 = new Array(0, 1, 1, 1, 1, 1, 1, 2, 2, 2, 3, 3, 3, 3, 3, 4, 4, 4, 4, 5, 5);
var locator = "";
var x = lon;
var y = lat;
var precision = d4[map.getZoom()];
while (x < -180) {x += 360;}
while (x > 180) {x -=360;}
x = x + 180;
y = y + 90;
locator = locator + d1[Math.floor(x/20)] + d1[Math.floor(y/10)];
for (var i=0; i<4; i=i+1) {
if (precision > i+1) {
rlon = x%(ydiv_arr[i]*2);
rlat = y%(ydiv_arr[i]);
if ((i%2)==0) {
locator += Math.floor(rlon/(ydiv_arr[i+1]*2)) +""+ Math.floor(rlat/(ydiv_arr[i+1]));
} else {
locator += d2[Math.floor(rlon/(ydiv_arr[i+1]*2))] +""+ d2[Math.floor(rlat/(ydiv_arr[i+1]))];
}
}
}
return locator;
},
});
L.maidenhead = function (options) {
return new L.Maidenhead(options);
};

View file

@ -7,7 +7,7 @@ function qsl_rcvd(id, method) {
},
success: function(data) {
if (data.message == 'OK') {
$("#qso_" + id).find("td:eq(8)").find("span:eq(1)").attr('class', 'qsl-green'); // Paints arrow green
$("#qsl_" + id).find("span:eq(1)").attr('class', 'qsl-green'); // Paints arrow green
$(".qsl_rcvd_" + id).remove(); // removes choice from menu
}
else {
@ -26,7 +26,7 @@ function qsl_sent(id, method) {
},
success: function(data) {
if (data.message == 'OK') {
$("#qso_" + id).find("td:eq(8)").find("span:eq(0)").attr('class', 'qsl-green'); // Paints arrow green
$("#qsl_" + id).find("span:eq(0)").attr('class', 'qsl-green'); // Paints arrow green
$(".qsl_sent_" + id).remove(); // removes choice from menu
}
else {
@ -47,7 +47,7 @@ function qsl_requested(id, method) {
},
success: function(data) {
if (data.message == 'OK') {
$("#qso_" + id).find("td:eq(8)").find("span:eq(0)").attr('class', 'qsl-yellow'); // Paints arrow green
$("#qsl_" + id).find("span:eq(0)").attr('class', 'qsl-yellow'); // Paints arrow yellow
}
else {
$(".bootstrap-dialog-message").append('<div class="alert alert-danger"><a href="#" class="close" data-dismiss="alert" aria-label="close">&times;</a>You are not allowed to update QSL status!</div>');
@ -67,7 +67,7 @@ function qsl_ignore(id, method) {
},
success: function(data) {
if (data.message == 'OK') {
$("#qso_" + id).find("td:eq(8)").find("span:eq(0)").attr('class', 'qsl-grey'); // Paints arrow grey
$("#qsl_" + id).find("span:eq(0)").attr('class', 'qsl-grey'); // Paints arrow grey
}
else {
$(".bootstrap-dialog-message").append('<div class="alert alert-danger"><a href="#" class="close" data-dismiss="alert" aria-label="close">&times;</a>You are not allowed to update QSL status!</div>');
@ -138,6 +138,15 @@ function qso_edit(id) {
}
});
$('#locator').change(function(){
if ($(this).val().length >= 4) {
$('#locator_info').load("logbook/searchbearing/" + $(this).val() + "/" + $('#stationProfile').val()).fadeIn("slow");
$.get('logbook/searchdistance/' + $(this).val() + "/" + $('#stationProfile').val(), function(result) {
document.getElementById("distance").value = result;
});
}
});
$('#sota_ref_edit').selectize({
maxItems: 1,
closeAfterSelect: true,

View file

@ -0,0 +1,145 @@
$('#band').change(function(){
var band = $("#band option:selected").text();
if (band != "SAT") {
$("#sats").prop('disabled', true);
} else {
$("#sats").prop('disabled', false);
}
});
var map;
var grid_two = '';
var grid_four = '';
var grid_six = '';
var grid_two_confirmed = '';
var grid_four_confirmed = '';
var grid_six_confirmed = '';
function gridPlot(form) {
$(".ld-ext-right").addClass('running');
$(".ld-ext-right").prop('disabled', true);
$('#plot').prop("disabled", true);
// If map is already initialized
var container = L.DomUtil.get('gridsquare_map');
if(container != null){
container._leaflet_id = null;
container.remove();
$("#gridmapcontainer").append('<div id="gridsquare_map" style="width: 100%; height: 800px"></div>');
}
$.ajax({
url: site_url + '/gridmap/getGridsjs',
type: 'post',
data: {
band: $("#band").val(),
mode: $("#mode").val(),
qsl: $("#qsl").is(":checked"),
lotw: $("#lotw").is(":checked"),
eqsl: $("#eqsl").is(":checked"),
sat: $("#sats").val(),
},
success: function (data) {
$(".ld-ext-right").removeClass('running');
$(".ld-ext-right").prop('disabled', false);
$('#plot').prop("disabled", false);
grid_two = data.grid_2char;
grid_four = data.grid_4char;
grid_six = data.grid_6char;
grid_two_confirmed = data.grid_2char_confirmed;
grid_four_confirmed = data.grid_4char_confirmed;
grid_six_confirmed = data.grid_6char_confirmed;
var layer = L.tileLayer(jslayer, {
maxZoom: 9,
attribution: jsattribution,
id: 'mapbox.streets'
});
map = L.map('gridsquare_map', {
layers: [layer],
center: [19, 0],
zoom: 3,
minZoom: 2,
fullscreenControl: true,
fullscreenControlOptions: {
position: 'topleft'
},
});
var printer = L.easyPrint({
tileLayer: layer,
sizeModes: ['Current'],
filename: 'myMap',
exportOnly: true,
hideControlContainer: true
}).addTo(map);
/*Legend specific*/
var legend = L.control({ position: "topright" });
legend.onAdd = function(map) {
var div = L.DomUtil.create("div", "legend");
div.innerHTML += "<h4>" + gridsquares_gridsquares + "</h4>";
div.innerHTML += '<i style="background: green"></i><span>' + gridsquares_gridsquares_confirmed + ' ('+grid_four_confirmed.length+')</span><br>';
div.innerHTML += '<i style="background: red"></i><span>' + gridsquares_gridsquares_not_confirmed + ' ('+(grid_four.length - grid_four_confirmed.length)+')</span><br>';
div.innerHTML += '<i></i><span>' + gridsquares_gridsquares_total_worked + ' ('+grid_four.length+')</span><br>';
return div;
};
legend.addTo(map);
var maidenhead = L.maidenhead().addTo(map);
},
error: function (data) {
},
});
}
function spawnGridsquareModal(loc_4char) {
$.ajax({
url: base_url + 'index.php/awards/qso_details_ajax',
type: 'post',
data: {
'Searchphrase': loc_4char,
'Band': $("#band").val(),
'Mode': $("#mode").val(),
'Type': 'VUCC'
},
success: function (html) {
BootstrapDialog.show({
title: 'QSO Data',
cssClass: 'qso-dialog',
size: BootstrapDialog.SIZE_WIDE,
nl2br: false,
message: html,
onshown: function(dialog) {
$('[data-toggle="tooltip"]').tooltip();
$('.contacttable').DataTable({
"pageLength": 25,
responsive: false,
ordering: false,
"scrollY": "550px",
"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");
}
},
buttons: [{
label: 'Close',
action: function(dialogItself) {
dialogItself.close();
}
}]
});
}
});
}

View file

@ -0,0 +1,16 @@
$('.labeltable').on('click', 'input[type="checkbox"]', function() {
var clickedlabelid = $(this).closest('tr').attr("class");
clickedlabelid = clickedlabelid.match(/\d+/)[0];
saveDefault(clickedlabelid);
$('input:checkbox').not(this).prop('checked', false);
});
function saveDefault(id) {
$.ajax({
url: base_url + 'index.php/labels/saveDefaultLabel',
type: 'post',
data: {'id': id},
success: function (html) {
}
});
}

View file

@ -26,13 +26,13 @@ function updateRow(qso) {
let c = 1;
cells.eq(c++).text(qso.qsoDateTime);
cells.eq(c++).text(qso.de);
cells.eq(c++).html('<a id="edit_qso" href="javascript:displayQso('+qso.qsoID+')">'+qso.dx+'</a>' + (qso.callsign == '' ? '' : ' <small id="lotw_info" class="badge badge-success" data-toggle="tooltip" data-original-title="LoTW User. Last upload was ' + qso.lastupload + '">L</small>'));
cells.eq(c++).html('<a id="edit_qso" href="javascript:displayQso('+qso.qsoID+')">'+qso.dx+'</a>' + (qso.callsign == '' ? '' : ' <small id="lotw_info" class="badge badge-success'+qso.lotw_hint+'" data-toggle="tooltip" data-original-title="LoTW User. Last upload was ' + qso.lastupload + '">L</small>') + ' <a target="_blank" href="https://www.qrz.com/db/'+qso.dx+'"><img width="16" height="16" src="'+base_url+ 'images/icons/qrz.png" alt="Lookup ' + qso.dx + ' on QRZ.com"></a> <a target="_blank" href="https://www.hamqth.com/'+qso.dx+'"><img width="16" height="16" src="'+base_url+ 'images/icons/hamqth.png" alt="Lookup ' + qso.dx + ' on HamQTH"></a>');
cells.eq(c++).text(qso.mode);
cells.eq(c++).text(qso.rstS);
cells.eq(c++).text(qso.rstR);
cells.eq(c++).text(qso.band);
cells.eq(c++).text(qso.deRefs);
cells.eq(c++).text(qso.dxRefs);
cells.eq(c++).html(qso.dxRefs);
cells.eq(c++).text(qso.name);
cells.eq(c++).text(qso.qslVia);
cells.eq(c++).html(qso.qsl);
@ -46,7 +46,7 @@ function updateRow(qso) {
cells.eq(c++).text(qso.dxcc);
cells.eq(c++).text(qso.state);
cells.eq(c++).text(qso.cqzone);
cells.eq(c++).text(qso.iota);
cells.eq(c++).html(qso.iota);
$('[data-toggle="tooltip"]').tooltip();
return row;
@ -81,7 +81,7 @@ function loadQSOTable(rows) {
data.push('<div class="form-check"><input class="form-check-input" type="checkbox" /></div>');
data.push(qso.qsoDateTime);
data.push(qso.de);
data.push('<a id="edit_qso" href="javascript:displayQso('+qso.qsoID+')">'+qso.dx+'</a>' + (qso.callsign == '' ? '' : ' <small id="lotw_info" class="badge badge-success" data-toggle="tooltip" data-original-title="LoTW User. Last upload was ' + qso.lastupload + ' ">L</small>'));
data.push('<a id="edit_qso" href="javascript:displayQso('+qso.qsoID+')">'+qso.dx+'</a>' + (qso.callsign == '' ? '' : ' <small id="lotw_info" class="badge badge-success'+qso.lotw_hint+'" data-toggle="tooltip" data-original-title="LoTW User. Last upload was ' + qso.lastupload + ' ">L</small>') + ' <a target="_blank" href="https://www.qrz.com/db/'+qso.dx+'"><img width="16" height="16" src="'+base_url+ 'images/icons/qrz.png" alt="Lookup ' + qso.dx + ' on QRZ.com"></a> <a target="_blank" href="https://www.hamqth.com/'+qso.dx+'"><img width="16" height="16" src="'+base_url+ 'images/icons/hamqth.png" alt="Lookup ' + qso.dx + ' on HamQTH"></a>');
data.push(qso.mode);
data.push(qso.rstS);
data.push(qso.rstR);
@ -348,6 +348,65 @@ $(document).ready(function () {
$('#notRequired').click(function (event) {
handleQsl('I','', 'notRequired');
});
$('#receivedBureau').click(function (event) {
handleQslReceived('Y','B', 'receivedBureau');
});
$('#receivedDirect').click(function (event) {
handleQslReceived('Y','D', 'receivedDirect');
});
$('#printLabel').click(function (event) {
var elements = $('#qsoList tbody input:checked');
var nElements = elements.length;
if (nElements == 0) {
return;
}
$('#printLabel').prop("disabled", true);
var id_list=[];
elements.each(function() {
let id = $(this).first().closest('tr').data('qsoID')
id_list.push(id);
});
$.ajax({
url: base_url + 'index.php/labels/printids',
type: 'post',
data: {'id': JSON.stringify(id_list, null, 2) },
xhr:function(){
var xhr = new XMLHttpRequest();
xhr.responseType= 'blob'
return xhr;
},
success: function(data) {
if(data){
var file = new Blob([data], {type: 'application/pdf'});
var fileURL = URL.createObjectURL(file);
window.open(fileURL);
}
$.each(id_list, function(k, v) {
unselectQsoID(this);
});
$('#printLabel').prop("disabled", false);
},
error: function (data) {
BootstrapDialog.alert({
title: 'ERROR',
message: 'Something went wrong with label print. Go to labels and check if you have defined a label, and that it is set for print!',
type: BootstrapDialog.TYPE_DANGER,
closable: false,
draggable: false,
callback: function (result) {
}
});
$.each(id_list, function(k, v) {
unselectQsoID(this);
});
$('#printLabel').prop("disabled", false);
},
});
});
$('#searchForm').on('reset', function(e) {
setTimeout(function() {
@ -386,6 +445,37 @@ $(document).ready(function () {
});
}
function handleQslReceived(sent, method, tag) {
var elements = $('#qsoList tbody input:checked');
var nElements = elements.length;
if (nElements == 0) {
return;
}
$('#'+tag).prop("disabled", true);
var id_list=[];
elements.each(function() {
let id = $(this).first().closest('tr').data('qsoID')
id_list.push(id);
});
$.ajax({
url: base_url + 'index.php/logbookadvanced/update_qsl_received',
type: 'post',
data: {'id': JSON.stringify(id_list, null, 2),
'sent' : sent,
'method' : method
},
success: function(data) {
if (data !== []) {
$.each(data, function(k, v) {
updateRow(this);
unselectQsoID(this.qsoID);
});
}
$('#'+tag).prop("disabled", false);
}
});
}
$('#checkBoxAll').change(function (event) {
if (this.checked) {
$('#qsoList tbody tr').each(function (i) {

View file

@ -1,14 +1,17 @@
let station_id;
function loadStationInfo() {
$(".stationinfo").empty();
station_id = $("#station").val();
$(".resulttable").empty();
$(".searchinfo").empty();
$.ajax({
url: base_url+'index.php/oqrs/get_station_info',
type: 'post',
data: {'station_id': $("#station").val()},
data: {'station_id': station_id},
success: function (data) {
if (data.count > 0) {
$(".stationinfo").append('<br />' + data.count + ' Qsos logged between ' + data.mindate + ' and ' + data.maxdate + '.<br /><br />');
$(".stationinfo").append('<form class="form-inline" onsubmit="return false;"><label class="my-1 mr-2" for="oqrssearch">Enter your callsign: </label><input class="form-control mr-sm-2" id="oqrssearch" type="search" name="callsign" placeholder="Search Callsign" aria-label="Search" required="required"><button onclick="searchOqrs();" class="btn btn-sm btn-primary" id="stationbuttonsubmit" type="button"><i class="fas fa-search"></i> Search</button></form>');
$(".resulttable").append('<br />' + data.count + ' Qsos logged between ' + data.mindate + ' and ' + data.maxdate + '.<br /><br />');
$(".resulttable").append('<form class="form-inline" onsubmit="return false;"><label class="my-1 mr-2" for="oqrssearch">Enter your callsign: </label><input class="form-control mr-sm-2" id="oqrssearch" type="search" name="callsign" placeholder="Search Callsign" aria-label="Search" required="required"><button onclick="searchOqrs();" class="btn btn-sm btn-primary" id="stationbuttonsubmit" type="button"><i class="fas fa-search"></i> Search</button></form>');
// Get the input field
var input = document.getElementById("oqrssearch");
@ -34,7 +37,7 @@ function searchOqrs() {
$.ajax({
url: base_url+'index.php/oqrs/get_qsos',
type: 'post',
data: {'station_id': $("#station").val(), 'callsign': $("#oqrssearch").val().toUpperCase()},
data: {'station_id': station_id, 'callsign': $("#oqrssearch").val().toUpperCase()},
success: function (data) {
$(".searchinfo").append(data);
}
@ -68,6 +71,20 @@ function searchOqrsGrouped() {
"paging": false,
"scrollX": true,
});
// Get the input field
var input = document.getElementById("emailInput");
// Execute a function when the user presses a key on the keyboard
input.addEventListener("keypress", function(event) {
// If the user presses the "Enter" key on the keyboard
if (event.key === "Enter") {
// Cancel the default action, if needed
event.preventDefault();
// Trigger the button element with a click
document.getElementById("requestGroupedSubmit").click();
}
});
}
});
}
@ -76,7 +93,7 @@ function notInLog() {
$.ajax({
url: base_url + 'index.php/oqrs/not_in_log',
type: 'post',
data: {'station_id': $("#station").val(), 'callsign': $("#oqrssearch").val().toUpperCase()},
data: {'station_id': station_id, 'callsign': $("#oqrssearch").val().toUpperCase()},
success: function(html) {
$(".searchinfo").html(html);
$('.qsotime').change(function() {
@ -94,11 +111,11 @@ function notInLog() {
}
function saveNotInLogRequest() {
const qsos = [];
$(".alertinfo").remove();
if ($("#emailInput").val() == '') {
$(".searchinfo").prepend('<div class="alertinfo"><br /><div class="alert alert-warning"><a href="#" class="close" data-dismiss="alert" aria-label="close">&times;</a>You need to fill out an email address!</div></div>');
} else {
const qsos = [];
$(".notinlog-table tbody tr").each(function(i) {
var data = [];
var datecell = $("#date", this).val();
@ -119,7 +136,7 @@ function saveNotInLogRequest() {
$.ajax({
url: base_url+'index.php/oqrs/save_not_in_log',
type: 'post',
data: { 'station_id': $("#station").val(),
data: { 'station_id': station_id,
'callsign': $("#oqrssearch").val().toUpperCase(),
'email': $("#emailInput").val(),
'message': $("#messageInput").val(),
@ -166,7 +183,7 @@ function requestOqrs() {
$.ajax({
url: base_url + 'index.php/oqrs/request_form',
type: 'post',
data: {'station_id': $("#station").val(), 'callsign': $("#oqrssearch").val().toUpperCase()},
data: {'station_id': station_id, 'callsign': $("#oqrssearch").val().toUpperCase()},
success: function(html) {
$(".searchinfo").html(html);
/* time input shortcut */
@ -189,16 +206,29 @@ function requestOqrs() {
"paging": false,
"scrollX": true,
});
// Get the input field
var input = document.getElementById("emailInput");
// Execute a function when the user presses a key on the keyboard
input.addEventListener("keypress", function(event) {
// If the user presses the "Enter" key on the keyboard
if (event.key === "Enter") {
// Cancel the default action, if needed
event.preventDefault();
// Trigger the button element with a click
document.getElementById("requestSubmit").click();
}
});
}
});
}
function submitOqrsRequest() {
const qsos = [];
$(".alertinfo").remove();
if ($("#emailInput").val() == '') {
$(".searchinfo").prepend('<div class="alertinfo"><br /><div class="alert alert-warning"><a href="#" class="close" data-dismiss="alert" aria-label="close">&times;</a>You need to fill out an email address!</div></div>');
} else {
const qsos = [];
$(".result-table tbody tr").each(function(i) {
var data = [];
var datecell = $("#date", this).val();
@ -220,7 +250,7 @@ function submitOqrsRequest() {
$.ajax({
url: base_url+'index.php/oqrs/save_oqrs_request',
type: 'post',
data: { 'station_id': $("#station").val(),
data: { 'station_id': station_id,
'callsign': $("#oqrssearch").val().toUpperCase(),
'email': $("#emailInput").val(),
'message': $("#messageInput").val(),
@ -228,6 +258,7 @@ function submitOqrsRequest() {
'qslroute': $('input[name="qslroute"]:checked').val()
},
success: function (data) {
$(".resulttable").empty();
$(".stationinfo").empty();
$(".searchinfo").empty();
$(".stationinfo").append('<br /><div class="alert alert-success"><a href="#" class="close" data-dismiss="alert" aria-label="close">&times;</a>Your QSL request has been saved!</div>');
@ -238,11 +269,11 @@ function submitOqrsRequest() {
}
function submitOqrsRequestGrouped() {
const qsos = [];
$(".alertinfo").remove();
if ($("#emailInput").val() == '') {
$(".searchinfo").prepend('<div class="alertinfo"><br /><div class="alert alert-warning"><a href="#" class="close" data-dismiss="alert" aria-label="close">&times;</a>You need to fill out an email address!</div></div>');
} else {
const qsos = [];
$(".result-table tbody tr").each(function(i) {
var data = [];
var stationid = this.getAttribute('stationid');;
@ -276,7 +307,7 @@ function submitOqrsRequestGrouped() {
success: function (data) {
$(".stationinfo").empty();
$(".searchinfo").empty();
$(".searchinfo").append('<br /><div class="alert alert-success"><a href="#" class="close" data-dismiss="alert" aria-label="close">&times;</a>Your QSL request has been saved!</div>');
$(".stationinfo").append('<br /><div class="alert alert-success"><a href="#" class="close" data-dismiss="alert" aria-label="close">&times;</a>Your QSL request has been saved!</div>');
}
});
}

View file

@ -506,6 +506,11 @@ $("#callsign").focusout(function() {
$('#locator').val(result.callsign_qra);
$('#locator_info').html(result.bearing);
if (result.callsign_distance != "" && result.callsign_distance != 0)
{
document.getElementById("distance").value = result.callsign_distance;
}
if (result.callsign_qra != "")
{
if (result.workedBefore)
@ -706,6 +711,9 @@ $("#locator").keyup(function(){
})
$('#locator_info').load("logbook/searchbearing/" + $(this).val() + "/" + $('#stationProfile').val()).fadeIn("slow");
$.get('logbook/searchdistance/' + $(this).val() + "/" + $('#stationProfile').val(), function(result) {
document.getElementById("distance").value = result;
});
}
}
});

View file

@ -1,5 +1,28 @@
$(document).ready( function () {
// Use Jquery to hide div ca_state
$('#station_locations_table').DataTable({
"stateSave": true
});
$("#canada_state").hide();
var selectedDXCCID = $('#dxcc_select').find(":selected").val();
if(selectedDXCCID == '1'){
$("#canada_state").show();
$("#us_state").hide();
}
$('#dxcc_select').change(function(){
if($(this).val() == '1'){ // or this.value == 'volvo'
console.log("CANADA!");
$("#canada_state").show();
$("#us_state").hide();
} else {
$("#canada_state").hide();
$("#us_state").show();
}
});
} );

33
docker/Dockerfile Normal file
View file

@ -0,0 +1,33 @@
FROM php:7.4-apache
RUN touch /usr/local/etc/php/conf.d/uploads.ini \
&& echo "file_uploads = On" >> /usr/local/etc/php/conf.d/uploads.ini \
&& echo "memory_limit = 64M" >> /usr/local/etc/php/conf.d/uploads.ini \
&& echo "upload_max_filesize = 64M" >> /usr/local/etc/php/conf.d/uploads.ini \
&& echo "post_max_size = 64M" >> /usr/local/etc/php/conf.d/uploads.ini \
&& echo "max_execution_time = 60" >> /usr/local/etc/php/conf.d/uploads.ini
RUN apt-get update \
&& apt-get install -y git curl libxml2-dev libonig-dev
RUN docker-php-ext-install mysqli
#RUN docker-php-ext-install curl
RUN docker-php-ext-install mbstring
RUN docker-php-ext-install xml
#RUN docker-php-ext-install openssl
WORKDIR /var/www/html
COPY ./ /var/www/html/
RUN ls && rm -rf /var/www/html/docker/ \
&& chown -R root:www-data ./application/config/ \
&& chown -R root:www-data ./application/logs/ \
&& chown -R root:www-data ./assets/qslcard/ \
&& chown -R root:www-data ./backup/ \
&& chown -R root:www-data ./updates/ \
&& chown -R root:www-data ./uploads/ \
&& chown -R root:www-data ./images/eqsl_card_images/ \
&& chown -R root:www-data ./assets/json/ \
&& chmod -R g+rw ./application/config/ \
&& chmod -R g+rw ./application/logs/ \
&& chmod -R g+rw ./assets/qslcard/ \
&& chmod -R g+rw ./backup/ \
&& chmod -R g+rw ./updates/ \
&& chmod -R g+rw ./uploads/ \
&& chmod -R g+rw ./images/eqsl_card_images/ \
&& chmod -R g+rw ./assets/json/

18
docker/docker-compose.yml Normal file
View file

@ -0,0 +1,18 @@
version: 3.4
services:
cloudlog:
image: cloudlog
container_name: cloudlog
volumes:
- cloudlog-config:/var/www/html/application/config
- cloudlog-backup:/var/www/html/application/backup
- cloudlog-uploads:/var/www/html/application/uploads
ports:
- 8086:80
restart: unless-stopped
volumes:
cloudlog-config:
cloudlog-backup:
cloudlog-uploads:

View file

@ -14,7 +14,7 @@ defined('BASEPATH') OR exit('No direct script access allowed');
*/
$config['app_name'] = "Cloudlog";
$config['app_version'] = "2.4.2";
$config['app_version'] = "2.4.4";
$config['directory'] = "%directory%";
$config['callbook'] = "hamqth"; // Options are hamqth or qrz

162
src/Label/PDF_Label.php Normal file
View file

@ -0,0 +1,162 @@
<?php
////////////////////////////////////////////////////////////////////////////////////////////////
// PDF_Label
//
// Class to print labels in Avery or custom formats
//
// Copyright (C) 2003 Laurent PASSEBECQ (LPA)
// Based on code by Steve Dillon
//
//---------------------------------------------------------------------------------------------
// VERSIONS:
// 1.0: Initial release
// 1.1: + Added unit in the constructor
// + Now Positions start at (1,1).. then the first label at top-left of a page is (1,1)
// + Added in the description of a label:
// font-size : defaut char size (can be changed by calling Set_Char_Size(xx);
// paper-size: Size of the paper for this sheet (thanx to Al Canton)
// metric : type of unit used in this description
// You can define your label properties in inches by setting metric to
// 'in' and print in millimiters by setting unit to 'mm' in constructor
// Added some formats:
// 5160, 5161, 5162, 5163, 5164: thanks to Al Canton
// 8600 : thanks to Kunal Walia
// + Added 3mm to the position of labels to avoid errors
// 1.2: = Bug of positioning
// = Set_Font_Size modified -> Now, just modify the size of the font
// 1.3: + Labels are now printed horizontally
// = 'in' as document unit didn't work
// 1.4: + Page scaling is disabled in printing options
// 1.5: + Added 3422 format
// 1.6: + FPDF 1.8 compatibility
////////////////////////////////////////////////////////////////////////////////////////////////
/**
* PDF_Label - PDF label editing
* @package PDF_Label
* @author Laurent PASSEBECQ
* @copyright 2003 Laurent PASSEBECQ
**/
namespace Cloudlog\Label;
class PDF_Label extends tfpdf {
// Private properties
protected $_Margin_Left; // Left margin of labels
protected $_Margin_Top; // Top margin of labels
protected $_X_Space; // Horizontal space between 2 labels
protected $_Y_Space; // Vertical space between 2 labels
protected $_X_Number; // Number of labels horizontally
protected $_Y_Number; // Number of labels vertically
protected $_Width; // Width of label
protected $_Height; // Height of label
protected $_Line_Height; // Line height
protected $_Padding; // Padding
protected $_Metric_Doc; // Type of metric for the document
protected $_COUNTX; // Current x position
protected $_COUNTY; // Current y position
// List of label formats
protected $_Avery_Labels = array(
'5160' => array('paper-size'=>'letter', 'metric'=>'mm', 'marginLeft'=>1.762, 'marginTop'=>10.7, 'NX'=>3, 'NY'=>10, 'SpaceX'=>3.175, 'SpaceY'=>0, 'width'=>66.675, 'height'=>25.4, 'font-size'=>8),
'5161' => array('paper-size'=>'letter', 'metric'=>'mm', 'marginLeft'=>0.967, 'marginTop'=>10.7, 'NX'=>2, 'NY'=>10, 'SpaceX'=>3.967, 'SpaceY'=>0, 'width'=>101.6, 'height'=>25.4, 'font-size'=>8),
'5162' => array('paper-size'=>'letter', 'metric'=>'mm', 'marginLeft'=>0.97, 'marginTop'=>20.224, 'NX'=>2, 'NY'=>7, 'SpaceX'=>4.762, 'SpaceY'=>0, 'width'=>100.807, 'height'=>35.72, 'font-size'=>8),
'5163' => array('paper-size'=>'letter', 'metric'=>'mm', 'marginLeft'=>1.762, 'marginTop'=>10.7, 'NX'=>2, 'NY'=>5, 'SpaceX'=>3.175, 'SpaceY'=>0, 'width'=>101.6, 'height'=>50.8, 'font-size'=>8),
'5164' => array('paper-size'=>'letter', 'metric'=>'in', 'marginLeft'=>0.148, 'marginTop'=>0.5, 'NX'=>2, 'NY'=>3, 'SpaceX'=>0.2031, 'SpaceY'=>0, 'width'=>4.0, 'height'=>3.33, 'font-size'=>12),
'8600' => array('paper-size'=>'letter', 'metric'=>'mm', 'marginLeft'=>7.1, 'marginTop'=>19, 'NX'=>3, 'NY'=>10, 'SpaceX'=>9.5, 'SpaceY'=>3.1, 'width'=>66.6, 'height'=>25.4, 'font-size'=>8),
'L7163'=> array('paper-size'=>'A4', 'metric'=>'mm', 'marginLeft'=>5, 'marginTop'=>15, 'NX'=>2, 'NY'=>7, 'SpaceX'=>25, 'SpaceY'=>0, 'width'=>99.1, 'height'=>38.1, 'font-size'=>9),
'3422' => array('paper-size'=>'A4', 'metric'=>'mm', 'marginLeft'=>0, 'marginTop'=>8.5, 'NX'=>3, 'NY'=>8, 'SpaceX'=>0, 'SpaceY'=>0, 'width'=>70, 'height'=>35, 'font-size'=>9)
);
// Constructor
function __construct($format, $unit='mm', $posX=1, $posY=1) {
if (is_array($format)) {
// Custom format
$Tformat = $format;
} else {
// Built-in format
if (!isset($this->_Avery_Labels[$format]))
$this->Error('Unknown label format: '.$format);
$Tformat = $this->_Avery_Labels[$format];
}
parent::__construct('P', $unit, $Tformat['paper-size']);
$this->_Metric_Doc = $unit;
$this->_Set_Format($Tformat);
$this->SetFont('Arial');
$this->SetMargins(0,0);
$this->SetAutoPageBreak(false);
$this->_COUNTX = $posX-2;
$this->_COUNTY = $posY-1;
}
function _Set_Format($format) {
$this->_Margin_Left = $this->_Convert_Metric($format['marginLeft'], $format['metric']);
$this->_Margin_Top = $this->_Convert_Metric($format['marginTop'], $format['metric']);
$this->_X_Space = $this->_Convert_Metric($format['SpaceX'], $format['metric']);
$this->_Y_Space = $this->_Convert_Metric($format['SpaceY'], $format['metric']);
$this->_X_Number = $format['NX'];
$this->_Y_Number = $format['NY'];
$this->_Width = $this->_Convert_Metric($format['width'], $format['metric']);
$this->_Height = $this->_Convert_Metric($format['height'], $format['metric']);
$this->Set_Font_Size($format['font-size']);
$this->_Padding = $this->_Convert_Metric(3, 'mm');
}
// convert units (in to mm, mm to in)
// $src must be 'in' or 'mm'
function _Convert_Metric($value, $src) {
$dest = $this->_Metric_Doc;
if ($src != $dest) {
$a['in'] = 39.37008;
$a['mm'] = 1000;
return $value * $a[$dest] / $a[$src];
} else {
return $value;
}
}
// Give the line height for a given font size
function _Get_Height_Chars($pt) {
$a = array(6=>2, 7=>2.5, 8=>3, 9=>4, 10=>5, 11=>6, 12=>7, 13=>8, 14=>9, 15=>10);
if (!isset($a[$pt]))
$this->Error('Invalid font size: '.$pt);
return $this->_Convert_Metric($a[$pt], 'mm');
}
// Set the character size
// This changes the line height too
function Set_Font_Size($pt) {
$this->_Line_Height = $this->_Get_Height_Chars($pt);
$this->SetFontSize($pt);
}
// Print a label
function Add_Label($text) {
$this->_COUNTX++;
if ($this->_COUNTX == $this->_X_Number) {
// Row full, we start a new one
$this->_COUNTX=0;
$this->_COUNTY++;
if ($this->_COUNTY == $this->_Y_Number) {
// End of page reached, we start a new one
$this->_COUNTY=0;
$this->AddPage();
}
}
$_PosX = $this->_Margin_Left + $this->_COUNTX*($this->_Width+$this->_X_Space) + $this->_Padding;
$_PosY = $this->_Margin_Top + $this->_COUNTY*($this->_Height+$this->_Y_Space) + $this->_Padding;
$this->SetXY($_PosX, $_PosY);
$this->MultiCell($this->_Width - $this->_Padding, $this->_Line_Height, $text, 0, 'L');
}
function _putcatalog()
{
parent::_putcatalog();
// Disable the page scaling option in the printing dialog
$this->_put('/ViewerPreferences <</PrintScaling /None>>');
}
}
?>

View file

@ -0,0 +1,10 @@
<?php
$type = 'Core';
$name = 'Courier';
$up = -100;
$ut = 50;
for($i=0;$i<=255;$i++)
$cw[chr($i)] = 600;
$enc = 'cp1252';
$uv = array(0=>array(0,128),128=>8364,130=>8218,131=>402,132=>8222,133=>8230,134=>array(8224,2),136=>710,137=>8240,138=>352,139=>8249,140=>338,142=>381,145=>array(8216,2),147=>array(8220,2),149=>8226,150=>array(8211,2),152=>732,153=>8482,154=>353,155=>8250,156=>339,158=>382,159=>376,160=>array(160,96));
?>

View file

@ -0,0 +1,10 @@
<?php
$type = 'Core';
$name = 'Courier-Bold';
$up = -100;
$ut = 50;
for($i=0;$i<=255;$i++)
$cw[chr($i)] = 600;
$enc = 'cp1252';
$uv = array(0=>array(0,128),128=>8364,130=>8218,131=>402,132=>8222,133=>8230,134=>array(8224,2),136=>710,137=>8240,138=>352,139=>8249,140=>338,142=>381,145=>array(8216,2),147=>array(8220,2),149=>8226,150=>array(8211,2),152=>732,153=>8482,154=>353,155=>8250,156=>339,158=>382,159=>376,160=>array(160,96));
?>

View file

@ -0,0 +1,10 @@
<?php
$type = 'Core';
$name = 'Courier-BoldOblique';
$up = -100;
$ut = 50;
for($i=0;$i<=255;$i++)
$cw[chr($i)] = 600;
$enc = 'cp1252';
$uv = array(0=>array(0,128),128=>8364,130=>8218,131=>402,132=>8222,133=>8230,134=>array(8224,2),136=>710,137=>8240,138=>352,139=>8249,140=>338,142=>381,145=>array(8216,2),147=>array(8220,2),149=>8226,150=>array(8211,2),152=>732,153=>8482,154=>353,155=>8250,156=>339,158=>382,159=>376,160=>array(160,96));
?>

View file

@ -0,0 +1,10 @@
<?php
$type = 'Core';
$name = 'Courier-Oblique';
$up = -100;
$ut = 50;
for($i=0;$i<=255;$i++)
$cw[chr($i)] = 600;
$enc = 'cp1252';
$uv = array(0=>array(0,128),128=>8364,130=>8218,131=>402,132=>8222,133=>8230,134=>array(8224,2),136=>710,137=>8240,138=>352,139=>8249,140=>338,142=>381,145=>array(8216,2),147=>array(8220,2),149=>8226,150=>array(8211,2),152=>732,153=>8482,154=>353,155=>8250,156=>339,158=>382,159=>376,160=>array(160,96));
?>

View file

@ -0,0 +1,21 @@
<?php
$type = 'Core';
$name = 'Helvetica';
$up = -100;
$ut = 50;
$cw = array(
chr(0)=>278,chr(1)=>278,chr(2)=>278,chr(3)=>278,chr(4)=>278,chr(5)=>278,chr(6)=>278,chr(7)=>278,chr(8)=>278,chr(9)=>278,chr(10)=>278,chr(11)=>278,chr(12)=>278,chr(13)=>278,chr(14)=>278,chr(15)=>278,chr(16)=>278,chr(17)=>278,chr(18)=>278,chr(19)=>278,chr(20)=>278,chr(21)=>278,
chr(22)=>278,chr(23)=>278,chr(24)=>278,chr(25)=>278,chr(26)=>278,chr(27)=>278,chr(28)=>278,chr(29)=>278,chr(30)=>278,chr(31)=>278,' '=>278,'!'=>278,'"'=>355,'#'=>556,'$'=>556,'%'=>889,'&'=>667,'\''=>191,'('=>333,')'=>333,'*'=>389,'+'=>584,
','=>278,'-'=>333,'.'=>278,'/'=>278,'0'=>556,'1'=>556,'2'=>556,'3'=>556,'4'=>556,'5'=>556,'6'=>556,'7'=>556,'8'=>556,'9'=>556,':'=>278,';'=>278,'<'=>584,'='=>584,'>'=>584,'?'=>556,'@'=>1015,'A'=>667,
'B'=>667,'C'=>722,'D'=>722,'E'=>667,'F'=>611,'G'=>778,'H'=>722,'I'=>278,'J'=>500,'K'=>667,'L'=>556,'M'=>833,'N'=>722,'O'=>778,'P'=>667,'Q'=>778,'R'=>722,'S'=>667,'T'=>611,'U'=>722,'V'=>667,'W'=>944,
'X'=>667,'Y'=>667,'Z'=>611,'['=>278,'\\'=>278,']'=>278,'^'=>469,'_'=>556,'`'=>333,'a'=>556,'b'=>556,'c'=>500,'d'=>556,'e'=>556,'f'=>278,'g'=>556,'h'=>556,'i'=>222,'j'=>222,'k'=>500,'l'=>222,'m'=>833,
'n'=>556,'o'=>556,'p'=>556,'q'=>556,'r'=>333,'s'=>500,'t'=>278,'u'=>556,'v'=>500,'w'=>722,'x'=>500,'y'=>500,'z'=>500,'{'=>334,'|'=>260,'}'=>334,'~'=>584,chr(127)=>350,chr(128)=>556,chr(129)=>350,chr(130)=>222,chr(131)=>556,
chr(132)=>333,chr(133)=>1000,chr(134)=>556,chr(135)=>556,chr(136)=>333,chr(137)=>1000,chr(138)=>667,chr(139)=>333,chr(140)=>1000,chr(141)=>350,chr(142)=>611,chr(143)=>350,chr(144)=>350,chr(145)=>222,chr(146)=>222,chr(147)=>333,chr(148)=>333,chr(149)=>350,chr(150)=>556,chr(151)=>1000,chr(152)=>333,chr(153)=>1000,
chr(154)=>500,chr(155)=>333,chr(156)=>944,chr(157)=>350,chr(158)=>500,chr(159)=>667,chr(160)=>278,chr(161)=>333,chr(162)=>556,chr(163)=>556,chr(164)=>556,chr(165)=>556,chr(166)=>260,chr(167)=>556,chr(168)=>333,chr(169)=>737,chr(170)=>370,chr(171)=>556,chr(172)=>584,chr(173)=>333,chr(174)=>737,chr(175)=>333,
chr(176)=>400,chr(177)=>584,chr(178)=>333,chr(179)=>333,chr(180)=>333,chr(181)=>556,chr(182)=>537,chr(183)=>278,chr(184)=>333,chr(185)=>333,chr(186)=>365,chr(187)=>556,chr(188)=>834,chr(189)=>834,chr(190)=>834,chr(191)=>611,chr(192)=>667,chr(193)=>667,chr(194)=>667,chr(195)=>667,chr(196)=>667,chr(197)=>667,
chr(198)=>1000,chr(199)=>722,chr(200)=>667,chr(201)=>667,chr(202)=>667,chr(203)=>667,chr(204)=>278,chr(205)=>278,chr(206)=>278,chr(207)=>278,chr(208)=>722,chr(209)=>722,chr(210)=>778,chr(211)=>778,chr(212)=>778,chr(213)=>778,chr(214)=>778,chr(215)=>584,chr(216)=>778,chr(217)=>722,chr(218)=>722,chr(219)=>722,
chr(220)=>722,chr(221)=>667,chr(222)=>667,chr(223)=>611,chr(224)=>556,chr(225)=>556,chr(226)=>556,chr(227)=>556,chr(228)=>556,chr(229)=>556,chr(230)=>889,chr(231)=>500,chr(232)=>556,chr(233)=>556,chr(234)=>556,chr(235)=>556,chr(236)=>278,chr(237)=>278,chr(238)=>278,chr(239)=>278,chr(240)=>556,chr(241)=>556,
chr(242)=>556,chr(243)=>556,chr(244)=>556,chr(245)=>556,chr(246)=>556,chr(247)=>584,chr(248)=>611,chr(249)=>556,chr(250)=>556,chr(251)=>556,chr(252)=>556,chr(253)=>500,chr(254)=>556,chr(255)=>500);
$enc = 'cp1252';
$uv = array(0=>array(0,128),128=>8364,130=>8218,131=>402,132=>8222,133=>8230,134=>array(8224,2),136=>710,137=>8240,138=>352,139=>8249,140=>338,142=>381,145=>array(8216,2),147=>array(8220,2),149=>8226,150=>array(8211,2),152=>732,153=>8482,154=>353,155=>8250,156=>339,158=>382,159=>376,160=>array(160,96));
?>

View file

@ -0,0 +1,21 @@
<?php
$type = 'Core';
$name = 'Helvetica-Bold';
$up = -100;
$ut = 50;
$cw = array(
chr(0)=>278,chr(1)=>278,chr(2)=>278,chr(3)=>278,chr(4)=>278,chr(5)=>278,chr(6)=>278,chr(7)=>278,chr(8)=>278,chr(9)=>278,chr(10)=>278,chr(11)=>278,chr(12)=>278,chr(13)=>278,chr(14)=>278,chr(15)=>278,chr(16)=>278,chr(17)=>278,chr(18)=>278,chr(19)=>278,chr(20)=>278,chr(21)=>278,
chr(22)=>278,chr(23)=>278,chr(24)=>278,chr(25)=>278,chr(26)=>278,chr(27)=>278,chr(28)=>278,chr(29)=>278,chr(30)=>278,chr(31)=>278,' '=>278,'!'=>333,'"'=>474,'#'=>556,'$'=>556,'%'=>889,'&'=>722,'\''=>238,'('=>333,')'=>333,'*'=>389,'+'=>584,
','=>278,'-'=>333,'.'=>278,'/'=>278,'0'=>556,'1'=>556,'2'=>556,'3'=>556,'4'=>556,'5'=>556,'6'=>556,'7'=>556,'8'=>556,'9'=>556,':'=>333,';'=>333,'<'=>584,'='=>584,'>'=>584,'?'=>611,'@'=>975,'A'=>722,
'B'=>722,'C'=>722,'D'=>722,'E'=>667,'F'=>611,'G'=>778,'H'=>722,'I'=>278,'J'=>556,'K'=>722,'L'=>611,'M'=>833,'N'=>722,'O'=>778,'P'=>667,'Q'=>778,'R'=>722,'S'=>667,'T'=>611,'U'=>722,'V'=>667,'W'=>944,
'X'=>667,'Y'=>667,'Z'=>611,'['=>333,'\\'=>278,']'=>333,'^'=>584,'_'=>556,'`'=>333,'a'=>556,'b'=>611,'c'=>556,'d'=>611,'e'=>556,'f'=>333,'g'=>611,'h'=>611,'i'=>278,'j'=>278,'k'=>556,'l'=>278,'m'=>889,
'n'=>611,'o'=>611,'p'=>611,'q'=>611,'r'=>389,'s'=>556,'t'=>333,'u'=>611,'v'=>556,'w'=>778,'x'=>556,'y'=>556,'z'=>500,'{'=>389,'|'=>280,'}'=>389,'~'=>584,chr(127)=>350,chr(128)=>556,chr(129)=>350,chr(130)=>278,chr(131)=>556,
chr(132)=>500,chr(133)=>1000,chr(134)=>556,chr(135)=>556,chr(136)=>333,chr(137)=>1000,chr(138)=>667,chr(139)=>333,chr(140)=>1000,chr(141)=>350,chr(142)=>611,chr(143)=>350,chr(144)=>350,chr(145)=>278,chr(146)=>278,chr(147)=>500,chr(148)=>500,chr(149)=>350,chr(150)=>556,chr(151)=>1000,chr(152)=>333,chr(153)=>1000,
chr(154)=>556,chr(155)=>333,chr(156)=>944,chr(157)=>350,chr(158)=>500,chr(159)=>667,chr(160)=>278,chr(161)=>333,chr(162)=>556,chr(163)=>556,chr(164)=>556,chr(165)=>556,chr(166)=>280,chr(167)=>556,chr(168)=>333,chr(169)=>737,chr(170)=>370,chr(171)=>556,chr(172)=>584,chr(173)=>333,chr(174)=>737,chr(175)=>333,
chr(176)=>400,chr(177)=>584,chr(178)=>333,chr(179)=>333,chr(180)=>333,chr(181)=>611,chr(182)=>556,chr(183)=>278,chr(184)=>333,chr(185)=>333,chr(186)=>365,chr(187)=>556,chr(188)=>834,chr(189)=>834,chr(190)=>834,chr(191)=>611,chr(192)=>722,chr(193)=>722,chr(194)=>722,chr(195)=>722,chr(196)=>722,chr(197)=>722,
chr(198)=>1000,chr(199)=>722,chr(200)=>667,chr(201)=>667,chr(202)=>667,chr(203)=>667,chr(204)=>278,chr(205)=>278,chr(206)=>278,chr(207)=>278,chr(208)=>722,chr(209)=>722,chr(210)=>778,chr(211)=>778,chr(212)=>778,chr(213)=>778,chr(214)=>778,chr(215)=>584,chr(216)=>778,chr(217)=>722,chr(218)=>722,chr(219)=>722,
chr(220)=>722,chr(221)=>667,chr(222)=>667,chr(223)=>611,chr(224)=>556,chr(225)=>556,chr(226)=>556,chr(227)=>556,chr(228)=>556,chr(229)=>556,chr(230)=>889,chr(231)=>556,chr(232)=>556,chr(233)=>556,chr(234)=>556,chr(235)=>556,chr(236)=>278,chr(237)=>278,chr(238)=>278,chr(239)=>278,chr(240)=>611,chr(241)=>611,
chr(242)=>611,chr(243)=>611,chr(244)=>611,chr(245)=>611,chr(246)=>611,chr(247)=>584,chr(248)=>611,chr(249)=>611,chr(250)=>611,chr(251)=>611,chr(252)=>611,chr(253)=>556,chr(254)=>611,chr(255)=>556);
$enc = 'cp1252';
$uv = array(0=>array(0,128),128=>8364,130=>8218,131=>402,132=>8222,133=>8230,134=>array(8224,2),136=>710,137=>8240,138=>352,139=>8249,140=>338,142=>381,145=>array(8216,2),147=>array(8220,2),149=>8226,150=>array(8211,2),152=>732,153=>8482,154=>353,155=>8250,156=>339,158=>382,159=>376,160=>array(160,96));
?>

View file

@ -0,0 +1,21 @@
<?php
$type = 'Core';
$name = 'Helvetica-BoldOblique';
$up = -100;
$ut = 50;
$cw = array(
chr(0)=>278,chr(1)=>278,chr(2)=>278,chr(3)=>278,chr(4)=>278,chr(5)=>278,chr(6)=>278,chr(7)=>278,chr(8)=>278,chr(9)=>278,chr(10)=>278,chr(11)=>278,chr(12)=>278,chr(13)=>278,chr(14)=>278,chr(15)=>278,chr(16)=>278,chr(17)=>278,chr(18)=>278,chr(19)=>278,chr(20)=>278,chr(21)=>278,
chr(22)=>278,chr(23)=>278,chr(24)=>278,chr(25)=>278,chr(26)=>278,chr(27)=>278,chr(28)=>278,chr(29)=>278,chr(30)=>278,chr(31)=>278,' '=>278,'!'=>333,'"'=>474,'#'=>556,'$'=>556,'%'=>889,'&'=>722,'\''=>238,'('=>333,')'=>333,'*'=>389,'+'=>584,
','=>278,'-'=>333,'.'=>278,'/'=>278,'0'=>556,'1'=>556,'2'=>556,'3'=>556,'4'=>556,'5'=>556,'6'=>556,'7'=>556,'8'=>556,'9'=>556,':'=>333,';'=>333,'<'=>584,'='=>584,'>'=>584,'?'=>611,'@'=>975,'A'=>722,
'B'=>722,'C'=>722,'D'=>722,'E'=>667,'F'=>611,'G'=>778,'H'=>722,'I'=>278,'J'=>556,'K'=>722,'L'=>611,'M'=>833,'N'=>722,'O'=>778,'P'=>667,'Q'=>778,'R'=>722,'S'=>667,'T'=>611,'U'=>722,'V'=>667,'W'=>944,
'X'=>667,'Y'=>667,'Z'=>611,'['=>333,'\\'=>278,']'=>333,'^'=>584,'_'=>556,'`'=>333,'a'=>556,'b'=>611,'c'=>556,'d'=>611,'e'=>556,'f'=>333,'g'=>611,'h'=>611,'i'=>278,'j'=>278,'k'=>556,'l'=>278,'m'=>889,
'n'=>611,'o'=>611,'p'=>611,'q'=>611,'r'=>389,'s'=>556,'t'=>333,'u'=>611,'v'=>556,'w'=>778,'x'=>556,'y'=>556,'z'=>500,'{'=>389,'|'=>280,'}'=>389,'~'=>584,chr(127)=>350,chr(128)=>556,chr(129)=>350,chr(130)=>278,chr(131)=>556,
chr(132)=>500,chr(133)=>1000,chr(134)=>556,chr(135)=>556,chr(136)=>333,chr(137)=>1000,chr(138)=>667,chr(139)=>333,chr(140)=>1000,chr(141)=>350,chr(142)=>611,chr(143)=>350,chr(144)=>350,chr(145)=>278,chr(146)=>278,chr(147)=>500,chr(148)=>500,chr(149)=>350,chr(150)=>556,chr(151)=>1000,chr(152)=>333,chr(153)=>1000,
chr(154)=>556,chr(155)=>333,chr(156)=>944,chr(157)=>350,chr(158)=>500,chr(159)=>667,chr(160)=>278,chr(161)=>333,chr(162)=>556,chr(163)=>556,chr(164)=>556,chr(165)=>556,chr(166)=>280,chr(167)=>556,chr(168)=>333,chr(169)=>737,chr(170)=>370,chr(171)=>556,chr(172)=>584,chr(173)=>333,chr(174)=>737,chr(175)=>333,
chr(176)=>400,chr(177)=>584,chr(178)=>333,chr(179)=>333,chr(180)=>333,chr(181)=>611,chr(182)=>556,chr(183)=>278,chr(184)=>333,chr(185)=>333,chr(186)=>365,chr(187)=>556,chr(188)=>834,chr(189)=>834,chr(190)=>834,chr(191)=>611,chr(192)=>722,chr(193)=>722,chr(194)=>722,chr(195)=>722,chr(196)=>722,chr(197)=>722,
chr(198)=>1000,chr(199)=>722,chr(200)=>667,chr(201)=>667,chr(202)=>667,chr(203)=>667,chr(204)=>278,chr(205)=>278,chr(206)=>278,chr(207)=>278,chr(208)=>722,chr(209)=>722,chr(210)=>778,chr(211)=>778,chr(212)=>778,chr(213)=>778,chr(214)=>778,chr(215)=>584,chr(216)=>778,chr(217)=>722,chr(218)=>722,chr(219)=>722,
chr(220)=>722,chr(221)=>667,chr(222)=>667,chr(223)=>611,chr(224)=>556,chr(225)=>556,chr(226)=>556,chr(227)=>556,chr(228)=>556,chr(229)=>556,chr(230)=>889,chr(231)=>556,chr(232)=>556,chr(233)=>556,chr(234)=>556,chr(235)=>556,chr(236)=>278,chr(237)=>278,chr(238)=>278,chr(239)=>278,chr(240)=>611,chr(241)=>611,
chr(242)=>611,chr(243)=>611,chr(244)=>611,chr(245)=>611,chr(246)=>611,chr(247)=>584,chr(248)=>611,chr(249)=>611,chr(250)=>611,chr(251)=>611,chr(252)=>611,chr(253)=>556,chr(254)=>611,chr(255)=>556);
$enc = 'cp1252';
$uv = array(0=>array(0,128),128=>8364,130=>8218,131=>402,132=>8222,133=>8230,134=>array(8224,2),136=>710,137=>8240,138=>352,139=>8249,140=>338,142=>381,145=>array(8216,2),147=>array(8220,2),149=>8226,150=>array(8211,2),152=>732,153=>8482,154=>353,155=>8250,156=>339,158=>382,159=>376,160=>array(160,96));
?>

View file

@ -0,0 +1,21 @@
<?php
$type = 'Core';
$name = 'Helvetica-Oblique';
$up = -100;
$ut = 50;
$cw = array(
chr(0)=>278,chr(1)=>278,chr(2)=>278,chr(3)=>278,chr(4)=>278,chr(5)=>278,chr(6)=>278,chr(7)=>278,chr(8)=>278,chr(9)=>278,chr(10)=>278,chr(11)=>278,chr(12)=>278,chr(13)=>278,chr(14)=>278,chr(15)=>278,chr(16)=>278,chr(17)=>278,chr(18)=>278,chr(19)=>278,chr(20)=>278,chr(21)=>278,
chr(22)=>278,chr(23)=>278,chr(24)=>278,chr(25)=>278,chr(26)=>278,chr(27)=>278,chr(28)=>278,chr(29)=>278,chr(30)=>278,chr(31)=>278,' '=>278,'!'=>278,'"'=>355,'#'=>556,'$'=>556,'%'=>889,'&'=>667,'\''=>191,'('=>333,')'=>333,'*'=>389,'+'=>584,
','=>278,'-'=>333,'.'=>278,'/'=>278,'0'=>556,'1'=>556,'2'=>556,'3'=>556,'4'=>556,'5'=>556,'6'=>556,'7'=>556,'8'=>556,'9'=>556,':'=>278,';'=>278,'<'=>584,'='=>584,'>'=>584,'?'=>556,'@'=>1015,'A'=>667,
'B'=>667,'C'=>722,'D'=>722,'E'=>667,'F'=>611,'G'=>778,'H'=>722,'I'=>278,'J'=>500,'K'=>667,'L'=>556,'M'=>833,'N'=>722,'O'=>778,'P'=>667,'Q'=>778,'R'=>722,'S'=>667,'T'=>611,'U'=>722,'V'=>667,'W'=>944,
'X'=>667,'Y'=>667,'Z'=>611,'['=>278,'\\'=>278,']'=>278,'^'=>469,'_'=>556,'`'=>333,'a'=>556,'b'=>556,'c'=>500,'d'=>556,'e'=>556,'f'=>278,'g'=>556,'h'=>556,'i'=>222,'j'=>222,'k'=>500,'l'=>222,'m'=>833,
'n'=>556,'o'=>556,'p'=>556,'q'=>556,'r'=>333,'s'=>500,'t'=>278,'u'=>556,'v'=>500,'w'=>722,'x'=>500,'y'=>500,'z'=>500,'{'=>334,'|'=>260,'}'=>334,'~'=>584,chr(127)=>350,chr(128)=>556,chr(129)=>350,chr(130)=>222,chr(131)=>556,
chr(132)=>333,chr(133)=>1000,chr(134)=>556,chr(135)=>556,chr(136)=>333,chr(137)=>1000,chr(138)=>667,chr(139)=>333,chr(140)=>1000,chr(141)=>350,chr(142)=>611,chr(143)=>350,chr(144)=>350,chr(145)=>222,chr(146)=>222,chr(147)=>333,chr(148)=>333,chr(149)=>350,chr(150)=>556,chr(151)=>1000,chr(152)=>333,chr(153)=>1000,
chr(154)=>500,chr(155)=>333,chr(156)=>944,chr(157)=>350,chr(158)=>500,chr(159)=>667,chr(160)=>278,chr(161)=>333,chr(162)=>556,chr(163)=>556,chr(164)=>556,chr(165)=>556,chr(166)=>260,chr(167)=>556,chr(168)=>333,chr(169)=>737,chr(170)=>370,chr(171)=>556,chr(172)=>584,chr(173)=>333,chr(174)=>737,chr(175)=>333,
chr(176)=>400,chr(177)=>584,chr(178)=>333,chr(179)=>333,chr(180)=>333,chr(181)=>556,chr(182)=>537,chr(183)=>278,chr(184)=>333,chr(185)=>333,chr(186)=>365,chr(187)=>556,chr(188)=>834,chr(189)=>834,chr(190)=>834,chr(191)=>611,chr(192)=>667,chr(193)=>667,chr(194)=>667,chr(195)=>667,chr(196)=>667,chr(197)=>667,
chr(198)=>1000,chr(199)=>722,chr(200)=>667,chr(201)=>667,chr(202)=>667,chr(203)=>667,chr(204)=>278,chr(205)=>278,chr(206)=>278,chr(207)=>278,chr(208)=>722,chr(209)=>722,chr(210)=>778,chr(211)=>778,chr(212)=>778,chr(213)=>778,chr(214)=>778,chr(215)=>584,chr(216)=>778,chr(217)=>722,chr(218)=>722,chr(219)=>722,
chr(220)=>722,chr(221)=>667,chr(222)=>667,chr(223)=>611,chr(224)=>556,chr(225)=>556,chr(226)=>556,chr(227)=>556,chr(228)=>556,chr(229)=>556,chr(230)=>889,chr(231)=>500,chr(232)=>556,chr(233)=>556,chr(234)=>556,chr(235)=>556,chr(236)=>278,chr(237)=>278,chr(238)=>278,chr(239)=>278,chr(240)=>556,chr(241)=>556,
chr(242)=>556,chr(243)=>556,chr(244)=>556,chr(245)=>556,chr(246)=>556,chr(247)=>584,chr(248)=>611,chr(249)=>556,chr(250)=>556,chr(251)=>556,chr(252)=>556,chr(253)=>500,chr(254)=>556,chr(255)=>500);
$enc = 'cp1252';
$uv = array(0=>array(0,128),128=>8364,130=>8218,131=>402,132=>8222,133=>8230,134=>array(8224,2),136=>710,137=>8240,138=>352,139=>8249,140=>338,142=>381,145=>array(8216,2),147=>array(8220,2),149=>8226,150=>array(8211,2),152=>732,153=>8482,154=>353,155=>8250,156=>339,158=>382,159=>376,160=>array(160,96));
?>

20
src/Label/font/symbol.php Normal file
View file

@ -0,0 +1,20 @@
<?php
$type = 'Core';
$name = 'Symbol';
$up = -100;
$ut = 50;
$cw = array(
chr(0)=>250,chr(1)=>250,chr(2)=>250,chr(3)=>250,chr(4)=>250,chr(5)=>250,chr(6)=>250,chr(7)=>250,chr(8)=>250,chr(9)=>250,chr(10)=>250,chr(11)=>250,chr(12)=>250,chr(13)=>250,chr(14)=>250,chr(15)=>250,chr(16)=>250,chr(17)=>250,chr(18)=>250,chr(19)=>250,chr(20)=>250,chr(21)=>250,
chr(22)=>250,chr(23)=>250,chr(24)=>250,chr(25)=>250,chr(26)=>250,chr(27)=>250,chr(28)=>250,chr(29)=>250,chr(30)=>250,chr(31)=>250,' '=>250,'!'=>333,'"'=>713,'#'=>500,'$'=>549,'%'=>833,'&'=>778,'\''=>439,'('=>333,')'=>333,'*'=>500,'+'=>549,
','=>250,'-'=>549,'.'=>250,'/'=>278,'0'=>500,'1'=>500,'2'=>500,'3'=>500,'4'=>500,'5'=>500,'6'=>500,'7'=>500,'8'=>500,'9'=>500,':'=>278,';'=>278,'<'=>549,'='=>549,'>'=>549,'?'=>444,'@'=>549,'A'=>722,
'B'=>667,'C'=>722,'D'=>612,'E'=>611,'F'=>763,'G'=>603,'H'=>722,'I'=>333,'J'=>631,'K'=>722,'L'=>686,'M'=>889,'N'=>722,'O'=>722,'P'=>768,'Q'=>741,'R'=>556,'S'=>592,'T'=>611,'U'=>690,'V'=>439,'W'=>768,
'X'=>645,'Y'=>795,'Z'=>611,'['=>333,'\\'=>863,']'=>333,'^'=>658,'_'=>500,'`'=>500,'a'=>631,'b'=>549,'c'=>549,'d'=>494,'e'=>439,'f'=>521,'g'=>411,'h'=>603,'i'=>329,'j'=>603,'k'=>549,'l'=>549,'m'=>576,
'n'=>521,'o'=>549,'p'=>549,'q'=>521,'r'=>549,'s'=>603,'t'=>439,'u'=>576,'v'=>713,'w'=>686,'x'=>493,'y'=>686,'z'=>494,'{'=>480,'|'=>200,'}'=>480,'~'=>549,chr(127)=>0,chr(128)=>0,chr(129)=>0,chr(130)=>0,chr(131)=>0,
chr(132)=>0,chr(133)=>0,chr(134)=>0,chr(135)=>0,chr(136)=>0,chr(137)=>0,chr(138)=>0,chr(139)=>0,chr(140)=>0,chr(141)=>0,chr(142)=>0,chr(143)=>0,chr(144)=>0,chr(145)=>0,chr(146)=>0,chr(147)=>0,chr(148)=>0,chr(149)=>0,chr(150)=>0,chr(151)=>0,chr(152)=>0,chr(153)=>0,
chr(154)=>0,chr(155)=>0,chr(156)=>0,chr(157)=>0,chr(158)=>0,chr(159)=>0,chr(160)=>750,chr(161)=>620,chr(162)=>247,chr(163)=>549,chr(164)=>167,chr(165)=>713,chr(166)=>500,chr(167)=>753,chr(168)=>753,chr(169)=>753,chr(170)=>753,chr(171)=>1042,chr(172)=>987,chr(173)=>603,chr(174)=>987,chr(175)=>603,
chr(176)=>400,chr(177)=>549,chr(178)=>411,chr(179)=>549,chr(180)=>549,chr(181)=>713,chr(182)=>494,chr(183)=>460,chr(184)=>549,chr(185)=>549,chr(186)=>549,chr(187)=>549,chr(188)=>1000,chr(189)=>603,chr(190)=>1000,chr(191)=>658,chr(192)=>823,chr(193)=>686,chr(194)=>795,chr(195)=>987,chr(196)=>768,chr(197)=>768,
chr(198)=>823,chr(199)=>768,chr(200)=>768,chr(201)=>713,chr(202)=>713,chr(203)=>713,chr(204)=>713,chr(205)=>713,chr(206)=>713,chr(207)=>713,chr(208)=>768,chr(209)=>713,chr(210)=>790,chr(211)=>790,chr(212)=>890,chr(213)=>823,chr(214)=>549,chr(215)=>250,chr(216)=>713,chr(217)=>603,chr(218)=>603,chr(219)=>1042,
chr(220)=>987,chr(221)=>603,chr(222)=>987,chr(223)=>603,chr(224)=>494,chr(225)=>329,chr(226)=>790,chr(227)=>790,chr(228)=>786,chr(229)=>713,chr(230)=>384,chr(231)=>384,chr(232)=>384,chr(233)=>384,chr(234)=>384,chr(235)=>384,chr(236)=>494,chr(237)=>494,chr(238)=>494,chr(239)=>494,chr(240)=>0,chr(241)=>329,
chr(242)=>274,chr(243)=>686,chr(244)=>686,chr(245)=>686,chr(246)=>384,chr(247)=>384,chr(248)=>384,chr(249)=>384,chr(250)=>384,chr(251)=>384,chr(252)=>494,chr(253)=>494,chr(254)=>494,chr(255)=>0);
$uv = array(32=>160,33=>33,34=>8704,35=>35,36=>8707,37=>array(37,2),39=>8715,40=>array(40,2),42=>8727,43=>array(43,2),45=>8722,46=>array(46,18),64=>8773,65=>array(913,2),67=>935,68=>array(916,2),70=>934,71=>915,72=>919,73=>921,74=>977,75=>array(922,4),79=>array(927,2),81=>920,82=>929,83=>array(931,3),86=>962,87=>937,88=>926,89=>936,90=>918,91=>91,92=>8756,93=>93,94=>8869,95=>95,96=>63717,97=>array(945,2),99=>967,100=>array(948,2),102=>966,103=>947,104=>951,105=>953,106=>981,107=>array(954,4),111=>array(959,2),113=>952,114=>961,115=>array(963,3),118=>982,119=>969,120=>958,121=>968,122=>950,123=>array(123,3),126=>8764,160=>8364,161=>978,162=>8242,163=>8804,164=>8725,165=>8734,166=>402,167=>9827,168=>9830,169=>9829,170=>9824,171=>8596,172=>array(8592,4),176=>array(176,2),178=>8243,179=>8805,180=>215,181=>8733,182=>8706,183=>8226,184=>247,185=>array(8800,2),187=>8776,188=>8230,189=>array(63718,2),191=>8629,192=>8501,193=>8465,194=>8476,195=>8472,196=>8855,197=>8853,198=>8709,199=>array(8745,2),201=>8835,202=>8839,203=>8836,204=>8834,205=>8838,206=>array(8712,2),208=>8736,209=>8711,210=>63194,211=>63193,212=>63195,213=>8719,214=>8730,215=>8901,216=>172,217=>array(8743,2),219=>8660,220=>array(8656,4),224=>9674,225=>9001,226=>array(63720,3),229=>8721,230=>array(63723,10),241=>9002,242=>8747,243=>8992,244=>63733,245=>8993,246=>array(63734,9));
?>

21
src/Label/font/times.php Normal file
View file

@ -0,0 +1,21 @@
<?php
$type = 'Core';
$name = 'Times-Roman';
$up = -100;
$ut = 50;
$cw = array(
chr(0)=>250,chr(1)=>250,chr(2)=>250,chr(3)=>250,chr(4)=>250,chr(5)=>250,chr(6)=>250,chr(7)=>250,chr(8)=>250,chr(9)=>250,chr(10)=>250,chr(11)=>250,chr(12)=>250,chr(13)=>250,chr(14)=>250,chr(15)=>250,chr(16)=>250,chr(17)=>250,chr(18)=>250,chr(19)=>250,chr(20)=>250,chr(21)=>250,
chr(22)=>250,chr(23)=>250,chr(24)=>250,chr(25)=>250,chr(26)=>250,chr(27)=>250,chr(28)=>250,chr(29)=>250,chr(30)=>250,chr(31)=>250,' '=>250,'!'=>333,'"'=>408,'#'=>500,'$'=>500,'%'=>833,'&'=>778,'\''=>180,'('=>333,')'=>333,'*'=>500,'+'=>564,
','=>250,'-'=>333,'.'=>250,'/'=>278,'0'=>500,'1'=>500,'2'=>500,'3'=>500,'4'=>500,'5'=>500,'6'=>500,'7'=>500,'8'=>500,'9'=>500,':'=>278,';'=>278,'<'=>564,'='=>564,'>'=>564,'?'=>444,'@'=>921,'A'=>722,
'B'=>667,'C'=>667,'D'=>722,'E'=>611,'F'=>556,'G'=>722,'H'=>722,'I'=>333,'J'=>389,'K'=>722,'L'=>611,'M'=>889,'N'=>722,'O'=>722,'P'=>556,'Q'=>722,'R'=>667,'S'=>556,'T'=>611,'U'=>722,'V'=>722,'W'=>944,
'X'=>722,'Y'=>722,'Z'=>611,'['=>333,'\\'=>278,']'=>333,'^'=>469,'_'=>500,'`'=>333,'a'=>444,'b'=>500,'c'=>444,'d'=>500,'e'=>444,'f'=>333,'g'=>500,'h'=>500,'i'=>278,'j'=>278,'k'=>500,'l'=>278,'m'=>778,
'n'=>500,'o'=>500,'p'=>500,'q'=>500,'r'=>333,'s'=>389,'t'=>278,'u'=>500,'v'=>500,'w'=>722,'x'=>500,'y'=>500,'z'=>444,'{'=>480,'|'=>200,'}'=>480,'~'=>541,chr(127)=>350,chr(128)=>500,chr(129)=>350,chr(130)=>333,chr(131)=>500,
chr(132)=>444,chr(133)=>1000,chr(134)=>500,chr(135)=>500,chr(136)=>333,chr(137)=>1000,chr(138)=>556,chr(139)=>333,chr(140)=>889,chr(141)=>350,chr(142)=>611,chr(143)=>350,chr(144)=>350,chr(145)=>333,chr(146)=>333,chr(147)=>444,chr(148)=>444,chr(149)=>350,chr(150)=>500,chr(151)=>1000,chr(152)=>333,chr(153)=>980,
chr(154)=>389,chr(155)=>333,chr(156)=>722,chr(157)=>350,chr(158)=>444,chr(159)=>722,chr(160)=>250,chr(161)=>333,chr(162)=>500,chr(163)=>500,chr(164)=>500,chr(165)=>500,chr(166)=>200,chr(167)=>500,chr(168)=>333,chr(169)=>760,chr(170)=>276,chr(171)=>500,chr(172)=>564,chr(173)=>333,chr(174)=>760,chr(175)=>333,
chr(176)=>400,chr(177)=>564,chr(178)=>300,chr(179)=>300,chr(180)=>333,chr(181)=>500,chr(182)=>453,chr(183)=>250,chr(184)=>333,chr(185)=>300,chr(186)=>310,chr(187)=>500,chr(188)=>750,chr(189)=>750,chr(190)=>750,chr(191)=>444,chr(192)=>722,chr(193)=>722,chr(194)=>722,chr(195)=>722,chr(196)=>722,chr(197)=>722,
chr(198)=>889,chr(199)=>667,chr(200)=>611,chr(201)=>611,chr(202)=>611,chr(203)=>611,chr(204)=>333,chr(205)=>333,chr(206)=>333,chr(207)=>333,chr(208)=>722,chr(209)=>722,chr(210)=>722,chr(211)=>722,chr(212)=>722,chr(213)=>722,chr(214)=>722,chr(215)=>564,chr(216)=>722,chr(217)=>722,chr(218)=>722,chr(219)=>722,
chr(220)=>722,chr(221)=>722,chr(222)=>556,chr(223)=>500,chr(224)=>444,chr(225)=>444,chr(226)=>444,chr(227)=>444,chr(228)=>444,chr(229)=>444,chr(230)=>667,chr(231)=>444,chr(232)=>444,chr(233)=>444,chr(234)=>444,chr(235)=>444,chr(236)=>278,chr(237)=>278,chr(238)=>278,chr(239)=>278,chr(240)=>500,chr(241)=>500,
chr(242)=>500,chr(243)=>500,chr(244)=>500,chr(245)=>500,chr(246)=>500,chr(247)=>564,chr(248)=>500,chr(249)=>500,chr(250)=>500,chr(251)=>500,chr(252)=>500,chr(253)=>500,chr(254)=>500,chr(255)=>500);
$enc = 'cp1252';
$uv = array(0=>array(0,128),128=>8364,130=>8218,131=>402,132=>8222,133=>8230,134=>array(8224,2),136=>710,137=>8240,138=>352,139=>8249,140=>338,142=>381,145=>array(8216,2),147=>array(8220,2),149=>8226,150=>array(8211,2),152=>732,153=>8482,154=>353,155=>8250,156=>339,158=>382,159=>376,160=>array(160,96));
?>

21
src/Label/font/timesb.php Normal file
View file

@ -0,0 +1,21 @@
<?php
$type = 'Core';
$name = 'Times-Bold';
$up = -100;
$ut = 50;
$cw = array(
chr(0)=>250,chr(1)=>250,chr(2)=>250,chr(3)=>250,chr(4)=>250,chr(5)=>250,chr(6)=>250,chr(7)=>250,chr(8)=>250,chr(9)=>250,chr(10)=>250,chr(11)=>250,chr(12)=>250,chr(13)=>250,chr(14)=>250,chr(15)=>250,chr(16)=>250,chr(17)=>250,chr(18)=>250,chr(19)=>250,chr(20)=>250,chr(21)=>250,
chr(22)=>250,chr(23)=>250,chr(24)=>250,chr(25)=>250,chr(26)=>250,chr(27)=>250,chr(28)=>250,chr(29)=>250,chr(30)=>250,chr(31)=>250,' '=>250,'!'=>333,'"'=>555,'#'=>500,'$'=>500,'%'=>1000,'&'=>833,'\''=>278,'('=>333,')'=>333,'*'=>500,'+'=>570,
','=>250,'-'=>333,'.'=>250,'/'=>278,'0'=>500,'1'=>500,'2'=>500,'3'=>500,'4'=>500,'5'=>500,'6'=>500,'7'=>500,'8'=>500,'9'=>500,':'=>333,';'=>333,'<'=>570,'='=>570,'>'=>570,'?'=>500,'@'=>930,'A'=>722,
'B'=>667,'C'=>722,'D'=>722,'E'=>667,'F'=>611,'G'=>778,'H'=>778,'I'=>389,'J'=>500,'K'=>778,'L'=>667,'M'=>944,'N'=>722,'O'=>778,'P'=>611,'Q'=>778,'R'=>722,'S'=>556,'T'=>667,'U'=>722,'V'=>722,'W'=>1000,
'X'=>722,'Y'=>722,'Z'=>667,'['=>333,'\\'=>278,']'=>333,'^'=>581,'_'=>500,'`'=>333,'a'=>500,'b'=>556,'c'=>444,'d'=>556,'e'=>444,'f'=>333,'g'=>500,'h'=>556,'i'=>278,'j'=>333,'k'=>556,'l'=>278,'m'=>833,
'n'=>556,'o'=>500,'p'=>556,'q'=>556,'r'=>444,'s'=>389,'t'=>333,'u'=>556,'v'=>500,'w'=>722,'x'=>500,'y'=>500,'z'=>444,'{'=>394,'|'=>220,'}'=>394,'~'=>520,chr(127)=>350,chr(128)=>500,chr(129)=>350,chr(130)=>333,chr(131)=>500,
chr(132)=>500,chr(133)=>1000,chr(134)=>500,chr(135)=>500,chr(136)=>333,chr(137)=>1000,chr(138)=>556,chr(139)=>333,chr(140)=>1000,chr(141)=>350,chr(142)=>667,chr(143)=>350,chr(144)=>350,chr(145)=>333,chr(146)=>333,chr(147)=>500,chr(148)=>500,chr(149)=>350,chr(150)=>500,chr(151)=>1000,chr(152)=>333,chr(153)=>1000,
chr(154)=>389,chr(155)=>333,chr(156)=>722,chr(157)=>350,chr(158)=>444,chr(159)=>722,chr(160)=>250,chr(161)=>333,chr(162)=>500,chr(163)=>500,chr(164)=>500,chr(165)=>500,chr(166)=>220,chr(167)=>500,chr(168)=>333,chr(169)=>747,chr(170)=>300,chr(171)=>500,chr(172)=>570,chr(173)=>333,chr(174)=>747,chr(175)=>333,
chr(176)=>400,chr(177)=>570,chr(178)=>300,chr(179)=>300,chr(180)=>333,chr(181)=>556,chr(182)=>540,chr(183)=>250,chr(184)=>333,chr(185)=>300,chr(186)=>330,chr(187)=>500,chr(188)=>750,chr(189)=>750,chr(190)=>750,chr(191)=>500,chr(192)=>722,chr(193)=>722,chr(194)=>722,chr(195)=>722,chr(196)=>722,chr(197)=>722,
chr(198)=>1000,chr(199)=>722,chr(200)=>667,chr(201)=>667,chr(202)=>667,chr(203)=>667,chr(204)=>389,chr(205)=>389,chr(206)=>389,chr(207)=>389,chr(208)=>722,chr(209)=>722,chr(210)=>778,chr(211)=>778,chr(212)=>778,chr(213)=>778,chr(214)=>778,chr(215)=>570,chr(216)=>778,chr(217)=>722,chr(218)=>722,chr(219)=>722,
chr(220)=>722,chr(221)=>722,chr(222)=>611,chr(223)=>556,chr(224)=>500,chr(225)=>500,chr(226)=>500,chr(227)=>500,chr(228)=>500,chr(229)=>500,chr(230)=>722,chr(231)=>444,chr(232)=>444,chr(233)=>444,chr(234)=>444,chr(235)=>444,chr(236)=>278,chr(237)=>278,chr(238)=>278,chr(239)=>278,chr(240)=>500,chr(241)=>556,
chr(242)=>500,chr(243)=>500,chr(244)=>500,chr(245)=>500,chr(246)=>500,chr(247)=>570,chr(248)=>500,chr(249)=>556,chr(250)=>556,chr(251)=>556,chr(252)=>556,chr(253)=>500,chr(254)=>556,chr(255)=>500);
$enc = 'cp1252';
$uv = array(0=>array(0,128),128=>8364,130=>8218,131=>402,132=>8222,133=>8230,134=>array(8224,2),136=>710,137=>8240,138=>352,139=>8249,140=>338,142=>381,145=>array(8216,2),147=>array(8220,2),149=>8226,150=>array(8211,2),152=>732,153=>8482,154=>353,155=>8250,156=>339,158=>382,159=>376,160=>array(160,96));
?>

View file

@ -0,0 +1,21 @@
<?php
$type = 'Core';
$name = 'Times-BoldItalic';
$up = -100;
$ut = 50;
$cw = array(
chr(0)=>250,chr(1)=>250,chr(2)=>250,chr(3)=>250,chr(4)=>250,chr(5)=>250,chr(6)=>250,chr(7)=>250,chr(8)=>250,chr(9)=>250,chr(10)=>250,chr(11)=>250,chr(12)=>250,chr(13)=>250,chr(14)=>250,chr(15)=>250,chr(16)=>250,chr(17)=>250,chr(18)=>250,chr(19)=>250,chr(20)=>250,chr(21)=>250,
chr(22)=>250,chr(23)=>250,chr(24)=>250,chr(25)=>250,chr(26)=>250,chr(27)=>250,chr(28)=>250,chr(29)=>250,chr(30)=>250,chr(31)=>250,' '=>250,'!'=>389,'"'=>555,'#'=>500,'$'=>500,'%'=>833,'&'=>778,'\''=>278,'('=>333,')'=>333,'*'=>500,'+'=>570,
','=>250,'-'=>333,'.'=>250,'/'=>278,'0'=>500,'1'=>500,'2'=>500,'3'=>500,'4'=>500,'5'=>500,'6'=>500,'7'=>500,'8'=>500,'9'=>500,':'=>333,';'=>333,'<'=>570,'='=>570,'>'=>570,'?'=>500,'@'=>832,'A'=>667,
'B'=>667,'C'=>667,'D'=>722,'E'=>667,'F'=>667,'G'=>722,'H'=>778,'I'=>389,'J'=>500,'K'=>667,'L'=>611,'M'=>889,'N'=>722,'O'=>722,'P'=>611,'Q'=>722,'R'=>667,'S'=>556,'T'=>611,'U'=>722,'V'=>667,'W'=>889,
'X'=>667,'Y'=>611,'Z'=>611,'['=>333,'\\'=>278,']'=>333,'^'=>570,'_'=>500,'`'=>333,'a'=>500,'b'=>500,'c'=>444,'d'=>500,'e'=>444,'f'=>333,'g'=>500,'h'=>556,'i'=>278,'j'=>278,'k'=>500,'l'=>278,'m'=>778,
'n'=>556,'o'=>500,'p'=>500,'q'=>500,'r'=>389,'s'=>389,'t'=>278,'u'=>556,'v'=>444,'w'=>667,'x'=>500,'y'=>444,'z'=>389,'{'=>348,'|'=>220,'}'=>348,'~'=>570,chr(127)=>350,chr(128)=>500,chr(129)=>350,chr(130)=>333,chr(131)=>500,
chr(132)=>500,chr(133)=>1000,chr(134)=>500,chr(135)=>500,chr(136)=>333,chr(137)=>1000,chr(138)=>556,chr(139)=>333,chr(140)=>944,chr(141)=>350,chr(142)=>611,chr(143)=>350,chr(144)=>350,chr(145)=>333,chr(146)=>333,chr(147)=>500,chr(148)=>500,chr(149)=>350,chr(150)=>500,chr(151)=>1000,chr(152)=>333,chr(153)=>1000,
chr(154)=>389,chr(155)=>333,chr(156)=>722,chr(157)=>350,chr(158)=>389,chr(159)=>611,chr(160)=>250,chr(161)=>389,chr(162)=>500,chr(163)=>500,chr(164)=>500,chr(165)=>500,chr(166)=>220,chr(167)=>500,chr(168)=>333,chr(169)=>747,chr(170)=>266,chr(171)=>500,chr(172)=>606,chr(173)=>333,chr(174)=>747,chr(175)=>333,
chr(176)=>400,chr(177)=>570,chr(178)=>300,chr(179)=>300,chr(180)=>333,chr(181)=>576,chr(182)=>500,chr(183)=>250,chr(184)=>333,chr(185)=>300,chr(186)=>300,chr(187)=>500,chr(188)=>750,chr(189)=>750,chr(190)=>750,chr(191)=>500,chr(192)=>667,chr(193)=>667,chr(194)=>667,chr(195)=>667,chr(196)=>667,chr(197)=>667,
chr(198)=>944,chr(199)=>667,chr(200)=>667,chr(201)=>667,chr(202)=>667,chr(203)=>667,chr(204)=>389,chr(205)=>389,chr(206)=>389,chr(207)=>389,chr(208)=>722,chr(209)=>722,chr(210)=>722,chr(211)=>722,chr(212)=>722,chr(213)=>722,chr(214)=>722,chr(215)=>570,chr(216)=>722,chr(217)=>722,chr(218)=>722,chr(219)=>722,
chr(220)=>722,chr(221)=>611,chr(222)=>611,chr(223)=>500,chr(224)=>500,chr(225)=>500,chr(226)=>500,chr(227)=>500,chr(228)=>500,chr(229)=>500,chr(230)=>722,chr(231)=>444,chr(232)=>444,chr(233)=>444,chr(234)=>444,chr(235)=>444,chr(236)=>278,chr(237)=>278,chr(238)=>278,chr(239)=>278,chr(240)=>500,chr(241)=>556,
chr(242)=>500,chr(243)=>500,chr(244)=>500,chr(245)=>500,chr(246)=>500,chr(247)=>570,chr(248)=>500,chr(249)=>556,chr(250)=>556,chr(251)=>556,chr(252)=>556,chr(253)=>444,chr(254)=>500,chr(255)=>444);
$enc = 'cp1252';
$uv = array(0=>array(0,128),128=>8364,130=>8218,131=>402,132=>8222,133=>8230,134=>array(8224,2),136=>710,137=>8240,138=>352,139=>8249,140=>338,142=>381,145=>array(8216,2),147=>array(8220,2),149=>8226,150=>array(8211,2),152=>732,153=>8482,154=>353,155=>8250,156=>339,158=>382,159=>376,160=>array(160,96));
?>

21
src/Label/font/timesi.php Normal file
View file

@ -0,0 +1,21 @@
<?php
$type = 'Core';
$name = 'Times-Italic';
$up = -100;
$ut = 50;
$cw = array(
chr(0)=>250,chr(1)=>250,chr(2)=>250,chr(3)=>250,chr(4)=>250,chr(5)=>250,chr(6)=>250,chr(7)=>250,chr(8)=>250,chr(9)=>250,chr(10)=>250,chr(11)=>250,chr(12)=>250,chr(13)=>250,chr(14)=>250,chr(15)=>250,chr(16)=>250,chr(17)=>250,chr(18)=>250,chr(19)=>250,chr(20)=>250,chr(21)=>250,
chr(22)=>250,chr(23)=>250,chr(24)=>250,chr(25)=>250,chr(26)=>250,chr(27)=>250,chr(28)=>250,chr(29)=>250,chr(30)=>250,chr(31)=>250,' '=>250,'!'=>333,'"'=>420,'#'=>500,'$'=>500,'%'=>833,'&'=>778,'\''=>214,'('=>333,')'=>333,'*'=>500,'+'=>675,
','=>250,'-'=>333,'.'=>250,'/'=>278,'0'=>500,'1'=>500,'2'=>500,'3'=>500,'4'=>500,'5'=>500,'6'=>500,'7'=>500,'8'=>500,'9'=>500,':'=>333,';'=>333,'<'=>675,'='=>675,'>'=>675,'?'=>500,'@'=>920,'A'=>611,
'B'=>611,'C'=>667,'D'=>722,'E'=>611,'F'=>611,'G'=>722,'H'=>722,'I'=>333,'J'=>444,'K'=>667,'L'=>556,'M'=>833,'N'=>667,'O'=>722,'P'=>611,'Q'=>722,'R'=>611,'S'=>500,'T'=>556,'U'=>722,'V'=>611,'W'=>833,
'X'=>611,'Y'=>556,'Z'=>556,'['=>389,'\\'=>278,']'=>389,'^'=>422,'_'=>500,'`'=>333,'a'=>500,'b'=>500,'c'=>444,'d'=>500,'e'=>444,'f'=>278,'g'=>500,'h'=>500,'i'=>278,'j'=>278,'k'=>444,'l'=>278,'m'=>722,
'n'=>500,'o'=>500,'p'=>500,'q'=>500,'r'=>389,'s'=>389,'t'=>278,'u'=>500,'v'=>444,'w'=>667,'x'=>444,'y'=>444,'z'=>389,'{'=>400,'|'=>275,'}'=>400,'~'=>541,chr(127)=>350,chr(128)=>500,chr(129)=>350,chr(130)=>333,chr(131)=>500,
chr(132)=>556,chr(133)=>889,chr(134)=>500,chr(135)=>500,chr(136)=>333,chr(137)=>1000,chr(138)=>500,chr(139)=>333,chr(140)=>944,chr(141)=>350,chr(142)=>556,chr(143)=>350,chr(144)=>350,chr(145)=>333,chr(146)=>333,chr(147)=>556,chr(148)=>556,chr(149)=>350,chr(150)=>500,chr(151)=>889,chr(152)=>333,chr(153)=>980,
chr(154)=>389,chr(155)=>333,chr(156)=>667,chr(157)=>350,chr(158)=>389,chr(159)=>556,chr(160)=>250,chr(161)=>389,chr(162)=>500,chr(163)=>500,chr(164)=>500,chr(165)=>500,chr(166)=>275,chr(167)=>500,chr(168)=>333,chr(169)=>760,chr(170)=>276,chr(171)=>500,chr(172)=>675,chr(173)=>333,chr(174)=>760,chr(175)=>333,
chr(176)=>400,chr(177)=>675,chr(178)=>300,chr(179)=>300,chr(180)=>333,chr(181)=>500,chr(182)=>523,chr(183)=>250,chr(184)=>333,chr(185)=>300,chr(186)=>310,chr(187)=>500,chr(188)=>750,chr(189)=>750,chr(190)=>750,chr(191)=>500,chr(192)=>611,chr(193)=>611,chr(194)=>611,chr(195)=>611,chr(196)=>611,chr(197)=>611,
chr(198)=>889,chr(199)=>667,chr(200)=>611,chr(201)=>611,chr(202)=>611,chr(203)=>611,chr(204)=>333,chr(205)=>333,chr(206)=>333,chr(207)=>333,chr(208)=>722,chr(209)=>667,chr(210)=>722,chr(211)=>722,chr(212)=>722,chr(213)=>722,chr(214)=>722,chr(215)=>675,chr(216)=>722,chr(217)=>722,chr(218)=>722,chr(219)=>722,
chr(220)=>722,chr(221)=>556,chr(222)=>611,chr(223)=>500,chr(224)=>500,chr(225)=>500,chr(226)=>500,chr(227)=>500,chr(228)=>500,chr(229)=>500,chr(230)=>667,chr(231)=>444,chr(232)=>444,chr(233)=>444,chr(234)=>444,chr(235)=>444,chr(236)=>278,chr(237)=>278,chr(238)=>278,chr(239)=>278,chr(240)=>500,chr(241)=>500,
chr(242)=>500,chr(243)=>500,chr(244)=>500,chr(245)=>500,chr(246)=>500,chr(247)=>675,chr(248)=>500,chr(249)=>500,chr(250)=>500,chr(251)=>500,chr(252)=>500,chr(253)=>444,chr(254)=>500,chr(255)=>444);
$enc = 'cp1252';
$uv = array(0=>array(0,128),128=>8364,130=>8218,131=>402,132=>8222,133=>8230,134=>array(8224,2),136=>710,137=>8240,138=>352,139=>8249,140=>338,142=>381,145=>array(8216,2),147=>array(8220,2),149=>8226,150=>array(8211,2),152=>732,153=>8482,154=>353,155=>8250,156=>339,158=>382,159=>376,160=>array(160,96));
?>

Some files were not shown because too many files have changed in this diff Show more