2023-07-29 20:02:18 +02:00
< ? php
2023-06-02 18:50:27 +02:00
2023-07-28 06:04:16 +00:00
require_once './src/Label/vendor/autoload.php' ;
2024-01-17 14:20:10 +00:00
use Wavelog\Label\PDF_Label ;
use Wavelog\Label\tfpdf ;
use Wavelog\Label\font\unifont\ttfonts ;
2023-06-02 18:50:27 +02:00
if ( ! defined ( 'BASEPATH' )) exit ( 'No direct script access allowed' );
class Labels extends CI_Controller {
2023-07-28 07:51:52 +00:00
/*
2023-06-02 18:50:27 +02:00
|--------------------------------------------------------------------------
| Controller : Labels
|--------------------------------------------------------------------------
2023-07-29 20:02:18 +02:00
|
2023-06-02 18:50:27 +02:00
| This Controller handles all things Labels , creating , editing and printing
|
|
2023-07-28 07:51:52 +00:00
*/
2023-06-02 18:50:27 +02:00
function __construct () {
parent :: __construct ();
$this -> load -> helper ( array ( 'form' , 'url' , 'psr4_autoloader' ));
2025-01-02 10:22:23 +01:00
if ( ! $this -> user_model -> authorize ( 2 ) || ! clubaccess_check ( 9 )) { $this -> session -> set_flashdata ( 'error' , __ ( " You're not allowed to do that! " )); redirect ( 'dashboard' ); }
2023-06-02 18:50:27 +02:00
}
/*
|--------------------------------------------------------------------------
| Function : index
|--------------------------------------------------------------------------
2023-07-29 20:02:18 +02:00
|
| Nothing fancy just shows the main display of how many labels are waiting
2023-06-02 18:50:27 +02:00
| to be printed per station profile .
|
2023-07-28 07:51:52 +00:00
*/
2023-06-02 18:50:27 +02:00
public function index () {
2024-06-08 11:01:59 +02:00
$data [ 'page_title' ] = __ ( " QSL Card Labels " );
2023-06-02 18:50:27 +02:00
$this -> load -> model ( 'labels_model' );
$data [ 'labels' ] = $this -> labels_model -> fetchLabels ( $this -> session -> userdata ( 'user_id' ));
2023-08-02 10:05:24 +02:00
$data [ 'papertypes' ] = $this -> labels_model -> fetchPapertypes ( $this -> session -> userdata ( 'user_id' ));
2023-06-02 18:50:27 +02:00
$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 );
2023-07-28 07:51:52 +00:00
2023-06-02 18:50:27 +02:00
}
/*
|--------------------------------------------------------------------------
| Function : create
|--------------------------------------------------------------------------
2023-07-29 20:02:18 +02:00
|
2023-06-02 18:50:27 +02:00
| Shows the form used to create a label type .
|
2023-07-28 07:51:52 +00:00
*/
2023-06-02 18:50:27 +02:00
public function create () {
2023-07-28 07:51:52 +00:00
2024-06-08 11:01:59 +02:00
$data [ 'page_title' ] = __ ( " Create Label Type " );
2023-06-02 18:50:27 +02:00
$this -> load -> library ( 'form_validation' );
2023-08-02 10:34:19 +02:00
$this -> load -> model ( 'labels_model' );
$data [ 'papertypes' ] = $this -> labels_model -> fetchPapertypes ( $this -> session -> userdata ( 'user_id' ));
2023-06-02 18:50:27 +02:00
2024-07-01 15:03:00 +00:00
$this -> form_validation -> set_rules ( 'label_name' , __ ( 'Label Name' ), 'required' );
$this -> form_validation -> set_rules ( 'paper_type_id' , __ ( 'Paper Type' ), 'required' );
$this -> form_validation -> set_rules ( 'measurementType' , __ ( 'Measurement' ), 'required' );
$this -> form_validation -> set_rules ( 'marginTop' , __ ( 'Top Margin' ), 'required' );
$this -> form_validation -> set_rules ( 'marginLeft' , __ ( 'Left Margin' ), 'required' );
$this -> form_validation -> set_rules ( 'NX' , __ ( 'QSLs Horizontally' ), 'required' );
$this -> form_validation -> set_rules ( 'NY' , __ ( 'QSLs Vertically' ), 'required' );
$this -> form_validation -> set_rules ( 'SpaceX' , __ ( 'Horizontal Space' ), 'required' );
$this -> form_validation -> set_rules ( 'SpaceY' , __ ( 'Vertical Space' ), 'required' );
$this -> form_validation -> set_rules ( 'width' , __ ( 'Label width' ), 'required' );
$this -> form_validation -> set_rules ( 'height' , __ ( 'Label height' ), 'required' );
$this -> form_validation -> set_rules ( 'font_size' , __ ( 'Size of Font' ), 'required' );
$this -> form_validation -> set_rules ( 'label_qsos' , __ ( 'Number of QSOs on label' ), 'required' );
2024-02-12 06:41:25 +00:00
if ( $this -> form_validation -> run () == FALSE ) {
2023-06-02 18:50:27 +02:00
$this -> load -> view ( 'interface_assets/header' , $data );
$this -> load -> view ( 'labels/create' );
$this -> load -> view ( 'interface_assets/footer' );
2024-02-12 06:41:25 +00:00
} else {
2023-06-02 18:50:27 +02:00
$this -> load -> model ( 'labels_model' );
$this -> labels_model -> addLabel ();
2023-07-28 07:51:52 +00:00
2023-06-02 18:50:27 +02:00
redirect ( 'labels' );
}
2023-07-28 07:51:52 +00:00
2023-06-02 18:50:27 +02:00
}
2023-08-01 18:59:05 +02:00
/*
|--------------------------------------------------------------------------
| Function : createpaper
|--------------------------------------------------------------------------
|
| Shows the form used to create a paper type .
|
*/
public function createpaper () {
2024-06-08 11:01:59 +02:00
$data [ 'page_title' ] = __ ( " Create Paper Type " );
2023-08-01 18:59:05 +02:00
$this -> load -> library ( 'form_validation' );
2024-07-01 15:03:00 +00:00
$this -> form_validation -> set_rules ( 'paper_name' , __ ( 'Paper Name' ), 'required' );
$this -> form_validation -> set_rules ( 'width' , __ ( 'Paper Width' ), 'required' );
$this -> form_validation -> set_rules ( 'height' , __ ( 'Paper Height' ), 'required' );
2023-08-01 18:59:05 +02:00
2024-02-12 06:41:25 +00:00
if ( $this -> form_validation -> run () == FALSE ) {
2023-08-01 18:59:05 +02:00
$this -> load -> view ( 'interface_assets/header' , $data );
$this -> load -> view ( 'labels/createpaper' );
$this -> load -> view ( 'interface_assets/footer' );
2024-02-12 06:41:25 +00:00
} else {
2023-08-01 18:59:05 +02:00
$this -> load -> model ( 'labels_model' );
2023-08-02 19:10:35 +02:00
try {
$this -> labels_model -> addPaper ();
} catch ( \Throwable $th ) {
2024-07-01 15:03:00 +00:00
$this -> session -> set_flashdata ( 'error' , __ ( 'Your paper could not be saved. Remember that it can\'t have the same name as existing paper types.' ));
2023-08-02 19:10:35 +02:00
redirect ( 'labels/createpaper' );
}
2023-08-01 18:59:05 +02:00
redirect ( 'labels' );
}
}
2023-06-27 15:03:12 +02:00
public function printids () {
$ids = xss_clean ( json_decode ( $this -> input -> post ( 'id' )));
2026-07-29 14:37:05 +00:00
if ( empty ( $ids )) {
header ( 'Content-Type: application/json' );
echo json_encode ( array ( 'message' => __ ( 'No QSOs were selected' )));
return ;
}
2023-08-01 10:30:05 +02:00
$offset = xss_clean ( $this -> input -> post ( 'startat' ));
2023-08-05 11:42:39 +02:00
$grid = $this -> input -> post ( 'grid' ) === " true " ? 1 : 0 ;
2023-10-26 09:10:38 +00:00
$via = $this -> input -> post ( 'via' ) === " true " ? 1 : 0 ;
2025-02-10 14:15:45 +03:00
$qslmsg = $this -> input -> post ( 'qslmsg' ) === " true " ? 1 : 0 ;
$tnxmsg = $this -> input -> post ( 'tnxmsg' ) === " true " ? 1 : 0 ;
2024-03-17 23:13:35 +01:00
$reference = $this -> input -> post ( 'reference' ) == " true " ? 1 : 0 ;
2026-02-22 19:22:29 +01:00
$mycall = $this -> input -> post ( 'mycall' ) == " true " ? 1 : 0 ;
2026-04-17 08:05:48 +00:00
$opcall = $this -> input -> post ( 'opcall' ) == " true " ? 1 : 0 ;
2023-06-27 15:03:12 +02:00
$this -> load -> model ( 'labels_model' );
$result = $this -> labels_model -> export_printrequestedids ( $ids );
2026-04-17 08:05:48 +00:00
$this -> prepareLabel ( $result , true , $offset , $grid , $via , $reference , $qslmsg , $tnxmsg , $mycall , $opcall );
2023-06-27 15:03:12 +02:00
}
2023-06-02 18:50:27 +02:00
public function print ( $station_id ) {
$clean_id = xss_clean ( $station_id );
2023-07-29 20:49:45 +02:00
$offset = xss_clean ( $this -> input -> post ( 'startat' ));
2023-08-05 05:49:12 +00:00
$grid = xss_clean ( $this -> input -> post ( 'grid' ) ? ? 0 );
2023-10-26 09:10:38 +00:00
$via = xss_clean ( $this -> input -> post ( 'via' ) ? ? 0 );
2025-02-10 14:15:45 +03:00
$qslmsg = xss_clean ( $this -> input -> post ( 'qslmsg' ) ? ? 0 );
$tnxmsg = xss_clean ( $this -> input -> post ( 'tnxmsg' ) ? ? 0 );
2024-03-17 23:13:35 +01:00
$reference = xss_clean ( $this -> input -> post ( 'reference' ) ? ? 0 );
2026-02-22 19:22:29 +01:00
$mycall = $this -> input -> post ( 'mycall' ) ? ? 0 ;
2026-04-17 08:05:48 +00:00
$opcall = $this -> input -> post ( 'opcall' ) ? ? 0 ;
2023-07-30 17:25:52 +00:00
$this -> load -> model ( 'stations' );
2026-07-09 15:45:49 +02:00
if ( $station_id === 'All' || $this -> stations -> check_station_is_accessible ( $station_id )) {
2023-07-30 17:25:52 +00:00
$this -> load -> model ( 'labels_model' );
$result = $this -> labels_model -> export_printrequested ( $clean_id );
2023-06-14 16:28:12 +02:00
2026-04-17 08:05:48 +00:00
$this -> prepareLabel ( $result , false , $offset , $grid , $via , $reference , $qslmsg , $tnxmsg , $mycall , $opcall );
2023-07-30 17:25:52 +00:00
} else {
redirect ( 'labels' );
}
2023-06-27 15:03:12 +02:00
}
2023-07-28 07:51:52 +00:00
2026-04-17 08:05:48 +00:00
function prepareLabel ( $qsos , $jscall = false , $offset = 1 , $grid = false , $via = false , $reference = false , $qslmsg = false , $tnxmsg = true , $mycall = false , $opcall = false ) {
2023-06-27 15:03:12 +02:00
$this -> load -> model ( 'labels_model' );
2023-06-02 18:50:27 +02:00
$label = $this -> labels_model -> getDefaultLabel ();
2023-07-28 07:51:52 +00:00
2023-06-03 18:22:11 +02:00
try {
if ( $label ) {
2023-08-03 11:34:29 +00:00
$label -> font = 'DejaVuSans' ; // Fix font to DejaVuSans
2023-08-03 04:37:25 +00:00
$ptype = $this -> labels_model -> getPaperType ( $label -> paper_type_id ); // fetch papersize out of paper-table
2023-08-03 08:55:16 +00:00
if (( $ptype -> paper_id ? ? '' ) != '' ) {
2023-08-04 04:45:10 +00:00
if ( $ptype -> metric == 'in' ) { // convert papersize to mm if given in inch
$paper_width = $ptype -> width * 25.4 ;
$paper_height = $ptype -> height * 25.4 ;
} else {
$paper_width = $ptype -> width ;
$paper_height = $ptype -> height ;
}
2023-08-03 08:55:16 +00:00
$pdf = new PDF_Label ( array (
'paper-size' => 'custom' , // $label->paper_type, // The only Type left is "custom" because A4 and so on are also defined at paper_types
'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 ,
2023-08-04 04:45:10 +00:00
'pgX' => $paper_width ,
'pgY' => $paper_height
2023-08-03 08:55:16 +00:00
));
} else {
if ( $jscall ) {
header ( 'Content-Type: application/json' );
2024-07-01 15:03:00 +00:00
echo json_encode ( array ( 'message' => __ ( 'You need to assign a paperType to the label before printing' )));
2023-08-03 08:55:16 +00:00
return ;
} else {
2024-07-01 15:03:00 +00:00
$this -> session -> set_flashdata ( 'error' , __ ( 'You need to assign a paperType to the label before printing' ));
2023-08-03 08:55:16 +00:00
redirect ( 'labels' );
}
}
2023-06-03 18:22:11 +02:00
} else {
2023-06-28 12:24:38 +02:00
if ( $jscall ) {
header ( 'Content-Type: application/json' );
2024-07-01 15:03:00 +00:00
echo json_encode ( array ( 'message' => __ ( 'You need to create a label and set it to be used for print.' )));
2023-06-28 12:24:38 +02:00
return ;
} else {
2024-07-01 15:03:00 +00:00
$this -> session -> set_flashdata ( 'error' , __ ( 'You need to create a label and set it to be used for print.' ));
2023-06-28 12:24:38 +02:00
redirect ( 'labels' );
}
2023-06-03 18:22:11 +02:00
}
} catch ( \Throwable $th ) {
2023-06-28 12:24:38 +02:00
if ( $jscall ) {
header ( 'Content-Type: application/json' );
2024-07-01 15:03:00 +00:00
echo json_encode ( array ( 'message' => __ ( 'Something went wrong! The label could not be generated. Check label size and font size.' )));
2023-06-28 12:24:38 +02:00
return ;
} else {
2024-07-01 15:03:00 +00:00
$this -> session -> set_flashdata ( 'error' , __ ( 'Something went wrong! The label could not be generated. Check label size and font size.' ));
2023-06-28 12:24:38 +02:00
redirect ( 'labels' );
}
2023-06-02 18:50:27 +02:00
}
2026-07-11 17:40:37 +02:00
// Reached only on the success path above; guard so static analysis knows $pdf/$ptype are set
if ( ! isset ( $pdf , $ptype )) {
return ;
}
2023-06-12 08:20:24 +02:00
define ( 'FPDF_FONTPATH' , './src/Label/font/' );
2023-07-28 07:51:52 +00:00
2023-08-02 10:20:38 +00:00
$pdf -> AddPage ( $ptype -> orientation );
2023-07-28 07:51:52 +00:00
if ( $label -> font == 'DejaVuSans' ) { // leave this here, for future Use
2023-06-12 08:20:24 +02:00
$pdf -> AddFont ( $label -> font , '' , 'DejaVuSansMono.ttf' , true );
2023-08-03 08:55:16 +00:00
$pdf -> SetFont ( $label -> font , '' );
2023-06-12 08:20:24 +02:00
} else {
$pdf -> AddFont ( $label -> font );
$pdf -> SetFont ( $label -> font );
}
2023-07-28 07:51:52 +00:00
2023-06-27 15:03:12 +02:00
if ( $qsos -> num_rows () > 0 ) {
2023-06-06 17:36:30 +02:00
if ( $label -> qsos == 1 ) {
2026-04-17 08:05:48 +00:00
$this -> makeMultiQsoLabel ( $qsos -> result (), $pdf , 1 , $offset , $ptype -> orientation , $grid , $via , $reference , $qslmsg , $tnxmsg , $mycall , $opcall );
2023-06-05 16:53:06 +02:00
} else {
2026-04-17 08:05:48 +00:00
$this -> makeMultiQsoLabel ( $qsos -> result (), $pdf , $label -> qsos , $offset , $ptype -> orientation , $grid , $via , $reference , $qslmsg , $tnxmsg , $mycall , $opcall );
2023-06-02 18:50:27 +02:00
}
} else {
2024-07-01 15:03:00 +00:00
$this -> session -> set_flashdata ( 'message' , __ ( '0 QSOs found for print!' ));
2023-06-05 16:53:06 +02:00
redirect ( 'labels' );
2023-06-02 18:50:27 +02:00
}
$pdf -> Output ();
2023-06-05 16:53:06 +02:00
}
2026-04-17 08:05:48 +00:00
function makeMultiQsoLabel ( $qsos , $pdf , $numberofqsos , $offset , $orientation , $grid , $via , $reference , $qslmsg , $tnxmsg , $mycall , $opcall = false ) {
2023-06-05 16:53:06 +02:00
$text = '' ;
$current_callsign = '' ;
2023-07-28 08:28:17 +00:00
$current_sat = '' ;
2023-07-30 06:08:01 +00:00
$current_sat_mode = '' ;
$current_sat_bandrx = '' ;
2023-06-05 16:53:06 +02:00
$qso_data = [];
2023-07-30 05:46:25 +00:00
if ( $offset !== 1 ) {
for ( $i = 1 ; $i < $offset ; $i ++ ) {
2023-08-02 10:20:38 +00:00
$pdf -> Add_Label ( '' , $orientation );
2023-07-30 05:46:25 +00:00
}
}
2023-06-05 16:53:06 +02:00
foreach ( $qsos as $qso ) {
2023-07-30 06:50:08 +00:00
if (( $this -> pretty_sat_mode ( $qso -> COL_SAT_MODE ) !== $current_sat_mode ) || ( $qso -> COL_SAT_NAME !== $current_sat ) || ( $qso -> COL_CALL !== $current_callsign ) || // Call, SAT or SAT-Mode differs?
( ( $qso -> COL_BAND_RX !== $current_sat_bandrx ) && ( $this -> pretty_sat_mode ( $qso -> COL_SAT_MODE ) !== '' )) ) {
// ((($qso->COL_SAT_NAME ?? '' !== $current_sat) || ($qso->COL_CALL !== $current_callsign)) && ($qso->COL_SAT_NAME ?? '' !== '') && ($col->COL_BAND_RX ?? '' !== $current_sat_bandrx))) {
2023-06-05 16:53:06 +02:00
if ( ! empty ( $qso_data )) {
2026-04-17 08:05:48 +00:00
$this -> finalizeData ( $pdf , $current_callsign , $qso_data , $numberofqsos , $orientation , $grid , $via , $reference , $qslmsg , $tnxmsg , $mycall , $opcall );
2023-06-05 16:53:06 +02:00
$qso_data = [];
}
$current_callsign = $qso -> COL_CALL ;
2023-07-28 08:28:17 +00:00
$current_sat = $qso -> COL_SAT_NAME ;
2023-07-30 06:50:08 +00:00
$current_sat_mode = $this -> pretty_sat_mode ( $qso -> COL_SAT_MODE );
$current_sat_bandrx = $qso -> COL_BAND_RX ? ? '' ;
2023-06-05 16:53:06 +02:00
}
$qso_data [] = [
'time' => $qso -> COL_TIME_ON ,
'band' => $qso -> COL_BAND ,
2024-03-11 14:15:03 +00:00
'mode' => (( $qso -> COL_SUBMODE ? ? '' ) == '' ) ? $qso -> COL_MODE : $qso -> COL_SUBMODE ,
2023-06-05 16:53:06 +02:00
'rst' => $qso -> COL_RST_SENT ,
'mygrid' => $qso -> station_gridsquare ,
2023-10-26 09:10:38 +00:00
'via' => $qso -> COL_QSL_VIA ,
2023-06-05 16:53:06 +02:00
'sat' => $qso -> COL_SAT_NAME ,
2023-07-30 06:50:08 +00:00
'sat_mode' => $this -> pretty_sat_mode ( $qso -> COL_SAT_MODE ? ? '' ),
2023-07-30 06:08:01 +00:00
'sat_band_rx' => ( $qso -> COL_BAND_RX ? ? '' ),
2023-08-05 05:49:12 +00:00
'qsl_recvd' => $qso -> COL_QSL_RCVD ,
2024-03-17 23:13:35 +01:00
'mycall' => $qso -> COL_STATION_CALLSIGN ,
2026-04-17 08:05:48 +00:00
'opcall' => $qso -> COL_OPERATOR ? ? '' ,
2024-03-17 23:13:35 +01:00
'sig' => $qso -> station_sig ? ? '' ,
'sig_info' => $qso -> station_sig_info ? ? '' ,
'sota' => $qso -> station_sota ? ? '' ,
'iota' => $qso -> station_iota ? ? '' ,
'pota' => $qso -> station_pota ? ? '' ,
2025-02-10 13:30:22 +03:00
'wwff' => $qso -> station_wwff ? ? '' ,
'qslmsg' => $qso -> COL_QSLMSG ? ? '' ,
2023-06-05 16:53:06 +02:00
];
}
if ( ! empty ( $qso_data )) {
2026-04-17 08:05:48 +00:00
$this -> finalizeData ( $pdf , $current_callsign , $qso_data , $numberofqsos , $orientation , $grid , $via , $reference , $qslmsg , $tnxmsg , $mycall , $opcall );
2023-06-05 16:53:06 +02:00
}
}
2023-07-28 07:51:52 +00:00
// New begin
2023-07-30 06:50:08 +00:00
function pretty_sat_mode ( $sat_mode ) {
2023-07-30 09:59:38 +02:00
return ( strlen ( $sat_mode ? ? '' ) == 2 ? ( strtoupper ( $sat_mode [ 0 ]) . '/' . strtoupper ( $sat_mode [ 1 ])) : strtoupper ( $sat_mode ? ? '' ));
2023-07-30 06:50:08 +00:00
}
2023-07-28 06:04:16 +00:00
2026-04-17 08:05:48 +00:00
function finalizeData ( $pdf , $current_callsign , & $preliminaryData , $qso_per_label , $orientation , $grid , $via , $reference , $qslmsg , $tnxmsg , $mycall , $opcall = false ) {
2023-07-29 20:49:45 +02:00
2023-07-28 06:36:57 +00:00
$tableData = [];
$count_qso = 0 ;
$qso = [];
foreach ( $preliminaryData as $key => $row ) {
$qso = $row ;
2023-07-28 10:13:15 +00:00
$time = strtotime ( $qso [ 'time' ]);
2023-07-28 13:13:21 +00:00
$myFormatForView = date ( " d.m.y H:i " , $time );
2023-07-28 06:36:57 +00:00
$rowData = [
2023-08-04 05:35:43 +00:00
'DD.MM.YY UTC' => $myFormatForView ,
2023-07-28 06:36:57 +00:00
'Band' => $row [ 'band' ],
'Mode' => $row [ 'mode' ],
'RST' => $row [ 'rst' ],
];
$tableData [] = $rowData ;
$count_qso ++ ;
if ( $count_qso == $qso_per_label ){
2026-04-17 08:05:48 +00:00
$this -> generateLabel ( $pdf , $current_callsign , $tableData , $count_qso , $qso , $orientation , $grid , $via , $reference , $qslmsg , $tnxmsg , $mycall , $opcall );
2023-07-28 06:36:57 +00:00
$tableData = []; // reset the data
$count_qso = 0 ; // reset the counter
}
unset ( $preliminaryData [ $key ]);
}
// generate label for remaining QSOs
if ( $count_qso > 0 ){
2026-04-17 08:05:48 +00:00
$this -> generateLabel ( $pdf , $current_callsign , $tableData , $count_qso , $qso , $orientation , $grid , $via , $reference , $qslmsg , $tnxmsg , $mycall , $opcall );
2023-07-28 06:36:57 +00:00
$preliminaryData = []; // reset the data
}
}
2023-07-28 06:04:16 +00:00
2026-04-17 08:05:48 +00:00
function generateLabel ( $pdf , $current_callsign , $tableData , $numofqsos , $qso , $orientation , $grid = true , $via = false , $reference = false , $qslmsg = false , $tnxmsg = true , $mycall = false , $opcall = false ){
2023-07-28 07:51:52 +00:00
$builder = new \AsciiTable\Builder ();
$builder -> addRows ( $tableData );
2024-09-04 01:37:55 +02:00
$toradio = " To Radio: " ;
$toradio .= $current_callsign ;
2023-10-26 09:10:38 +00:00
if (( $via ) && ( $qso [ 'via' ] ? ? '' != '' )) {
2024-09-04 01:37:55 +02:00
$toradio .= ' via ' . substr ( $qso [ 'via' ], 0 , 8 );
2023-10-26 09:10:38 +00:00
}
2024-09-04 01:37:55 +02:00
$builder -> setTitle ( $toradio );
$additionalText = " Confirming QSO " . ( $numofqsos > 1 ? 's' : '' );
$builder -> setAdditionalText ( $additionalText );
$text = $builder -> renderTable ();
2023-07-28 07:51:52 +00:00
if ( $qso [ 'sat' ] != " " ) {
2023-07-30 06:08:01 +00:00
if (( $qso [ 'sat_mode' ] == '' ) && ( $qso [ 'sat_band_rx' ] !== '' )) {
$text .= " \n " . 'Satellite: ' . $qso [ 'sat' ] . ' Band RX: ' . $qso [ 'sat_band_rx' ];
} elseif (( $qso [ 'sat_mode' ] == '' ) && ( $qso [ 'sat_band_rx' ] == '' )) {
$text .= " \n " . 'Satellite: ' . $qso [ 'sat' ];
} else {
2023-07-30 06:50:08 +00:00
$text .= " \n " . 'Satellite: ' . $qso [ 'sat' ] . ' Mode: ' . $qso [ 'sat_mode' ];
2023-07-30 06:08:01 +00:00
}
2023-06-05 16:53:06 +02:00
}
2023-08-05 05:49:12 +00:00
$text .= " \n " ;
2026-04-17 08:05:48 +00:00
$line = '' ;
if ( $mycall ) { $line .= " My call: " . $qso [ 'mycall' ] . " " ; }
if ( $opcall && ! empty ( $qso [ 'opcall' ])) { $line .= " OP: " . $qso [ 'opcall' ] . " " ; }
if ( $grid ) { $line .= " Grid: " . $qso [ 'mygrid' ]; }
if ( $line !== '' ) { $text .= rtrim ( $line ) . " \n " ; }
2024-03-17 23:13:35 +01:00
if ( $reference ) {
$ref_text = " " ;
2024-03-17 23:25:23 +01:00
$ref_avail = false ;
if ( ! empty ( $qso [ 'sig' ]) && ! empty ( $qso [ 'sig_info' ])) { $ref_text .= $qso [ 'sig' ] . " : " . $qso [ 'sig_info' ] . " " ; $ref_avail = true ;}
if ( ! empty ( $qso [ 'sota' ])) { $ref_text .= " SOTA: " . $qso [ 'sota' ] . " " ; $ref_avail = true ;}
if ( ! empty ( $qso [ 'iota' ])) { $ref_text .= " IOTA: " . $qso [ 'iota' ] . " " ; $ref_avail = true ;}
if ( ! empty ( $qso [ 'pota' ])) { $ref_text .= " POTA: " . $qso [ 'pota' ] . " " ; $ref_avail = true ;}
if ( ! empty ( $qso [ 'wwff' ])) { $ref_text .= " WWFF: " . $qso [ 'wwff' ]; $ref_avail = true ;}
if ( $ref_avail == true ) { $text .= $ref_text . " \n " ;}
2024-03-17 23:13:35 +01:00
}
2025-02-10 14:15:45 +03:00
if ( $qslmsg ) {
if ( ! empty ( $qso [ 'qslmsg' ])) { $text .= $qso [ 'qslmsg' ] . " \n " ;}
}
if ( $tnxmsg ) {
$text .= " Thanks for the QSO " . ( $numofqsos > 1 ? 's' : '' );
$text .= " | " . ( $qso [ 'qsl_recvd' ] == 'Y' ? 'TNX' : 'PSE' ) . " QSL " ;
}
2025-02-10 13:30:22 +03:00
$pdf -> Add_Label ( $text , $orientation ); }
2023-06-02 18:50:27 +02:00
2023-07-28 07:51:52 +00:00
// New End
2023-06-03 08:46:52 +02:00
public function edit ( $id ) {
$this -> load -> model ( 'labels_model' );
$cleanid = $this -> security -> xss_clean ( $id );
2023-08-03 06:53:22 +00:00
$data [ 'label' ] = $this -> labels_model -> getLabel ( $cleanid , $this -> session -> userdata ( 'user_id' ));
2023-06-02 18:50:27 +02:00
2023-08-02 10:17:22 +02:00
$data [ 'papertypes' ] = $this -> labels_model -> fetchPapertypes ( $this -> session -> userdata ( 'user_id' ));
2024-06-08 11:01:59 +02:00
$data [ 'page_title' ] = __ ( " Edit Label " );
2023-06-03 08:46:52 +02:00
$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' );
2024-02-12 06:41:25 +00:00
$this -> load -> library ( 'form_validation' );
2024-07-01 15:03:00 +00:00
$this -> form_validation -> set_rules ( 'label_name' , __ ( 'Label Name' ), 'required' );
$this -> form_validation -> set_rules ( 'paper_type_id' , __ ( 'Paper Type' ), 'required' );
$this -> form_validation -> set_rules ( 'measurementType' , __ ( 'Measurement' ), 'required' );
$this -> form_validation -> set_rules ( 'marginTop' , __ ( 'Top Margin' ), 'required' );
$this -> form_validation -> set_rules ( 'marginLeft' , __ ( 'Left Margin' ), 'required' );
$this -> form_validation -> set_rules ( 'NX' , __ ( 'QSLs Horizontally' ), 'required' );
$this -> form_validation -> set_rules ( 'NY' , __ ( 'QSLs Vertically' ), 'required' );
$this -> form_validation -> set_rules ( 'SpaceX' , __ ( 'Horizontal Space' ), 'required' );
$this -> form_validation -> set_rules ( 'SpaceY' , __ ( 'Vertical Space' ), 'required' );
$this -> form_validation -> set_rules ( 'width' , __ ( 'Label width' ), 'required' );
$this -> form_validation -> set_rules ( 'height' , __ ( 'Label height' ), 'required' );
$this -> form_validation -> set_rules ( 'font_size' , __ ( 'Size of Font' ), 'required' );
$this -> form_validation -> set_rules ( 'label_qsos' , __ ( 'Number of QSOs on label' ), 'required' );
2024-02-12 06:41:25 +00:00
if ( $this -> form_validation -> run () == FALSE ) {
$this -> edit ( $id );
} else {
$this -> labels_model -> updateLabel ( $id );
2024-07-01 15:03:00 +00:00
$this -> session -> set_flashdata ( 'message' , __ ( 'Label was saved.' ));
2024-02-12 06:41:25 +00:00
redirect ( 'labels' );
}
2023-06-02 18:50:27 +02:00
}
public function delete ( $id ) {
$this -> load -> model ( 'labels_model' );
$this -> labels_model -> deleteLabel ( $id );
2024-07-01 15:03:00 +00:00
$this -> session -> set_flashdata ( 'warning' , __ ( 'Label was deleted.' ));
2023-06-02 18:50:27 +02:00
redirect ( 'labels' );
}
public function saveDefaultLabel () {
$id = $this -> input -> post ( 'id' );
$this -> load -> model ( 'labels_model' );
$this -> labels_model -> saveDefaultLabel ( $id );
}
2023-07-29 20:02:18 +02:00
public function startAtLabel () {
2023-07-29 20:49:45 +02:00
$data [ 'stationid' ] = xss_clean ( $this -> input -> post ( 'stationid' ));
2023-07-29 20:02:18 +02:00
$this -> load -> view ( 'labels/startatform' , $data );
}
2023-08-02 10:05:24 +02:00
public function editPaper ( $id ) {
$this -> load -> model ( 'labels_model' );
$cleanid = $this -> security -> xss_clean ( $id );
$data [ 'paper' ] = $this -> labels_model -> getPaper ( $cleanid );
2024-06-08 11:01:59 +02:00
$data [ 'page_title' ] = __ ( " Edit Paper " );
2023-08-02 10:05:24 +02:00
$this -> load -> view ( 'interface_assets/header' , $data );
$this -> load -> view ( 'labels/editpaper' );
$this -> load -> view ( 'interface_assets/footer' );
}
public function updatePaper ( $id ) {
$this -> load -> model ( 'labels_model' );
2024-02-12 06:41:25 +00:00
$this -> load -> library ( 'form_validation' );
2024-07-01 15:03:00 +00:00
$this -> form_validation -> set_rules ( 'paper_name' , __ ( 'Paper Name' ), 'required' );
$this -> form_validation -> set_rules ( 'width' , __ ( 'Paper Width' ), 'required' );
$this -> form_validation -> set_rules ( 'height' , __ ( 'Paper Height' ), 'required' );
2024-02-12 06:41:25 +00:00
if ( $this -> form_validation -> run () == FALSE ) {
$this -> editPaper ( $id );
} else {
try {
$this -> labels_model -> updatePaper ( $id );
} catch ( \Throwable $th ) {
2024-07-01 15:03:00 +00:00
$this -> session -> set_flashdata ( 'error' , __ ( 'Your paper could not be saved. Remember that it can\'t have the same name as existing paper types.' ));
2024-02-12 06:41:25 +00:00
$cleanid = $this -> security -> xss_clean ( $id );
redirect ( 'labels/editpaper/' . $cleanid );
}
2024-07-01 15:03:00 +00:00
$this -> session -> set_flashdata ( 'message' , __ ( 'Paper was saved.' ));
2024-02-12 06:41:25 +00:00
redirect ( 'labels' );
2023-08-02 19:10:35 +02:00
}
2023-08-02 10:05:24 +02:00
}
2023-08-03 06:15:51 +00:00
function label_cnt_with_paper ( $paper_id ) {
$this -> load -> model ( 'labels_model' );
return $this -> labels_model -> label_cnt_with_paper ( $paper_id );
}
2023-08-02 10:05:24 +02:00
public function deletePaper ( $id ) {
$this -> load -> model ( 'labels_model' );
$this -> labels_model -> deletePaper ( $id );
2024-07-01 15:03:00 +00:00
$this -> session -> set_flashdata ( 'warning' , __ ( 'Paper was deleted.' ));
2023-08-02 10:05:24 +02:00
redirect ( 'labels' );
}
2023-07-28 06:04:16 +00:00
}