kopia lustrzana https://github.com/magicbug/Cloudlog
123 wiersze
3.6 KiB
PHP
123 wiersze
3.6 KiB
PHP
<?php if ( ! defined('BASEPATH')) exit('No direct script access allowed');
|
|
|
|
class Dxatlas extends CI_Controller {
|
|
|
|
public function index() {
|
|
$this->load->model('user_model');
|
|
|
|
if(!$this->user_model->authorize(99)) { $this->session->set_flashdata('notice', 'You\'re not allowed to do that!'); redirect('dashboard'); }
|
|
|
|
$this->load->model('modes');
|
|
$this->load->model('dxcc');
|
|
$this->load->model('logbook_model');
|
|
$this->load->model('stations');
|
|
|
|
$data['station_profile'] = $this->stations->all(); // Used in the view for station location select
|
|
$data['worked_bands'] = $this->dxcc->get_worked_bands(); // Used in the view for band select
|
|
$data['modes'] = $this->modes->active(); // Used in the view for mode select
|
|
$data['dxcc'] = $this->logbook_model->fetchDxcc(); // Used in the view for dxcc select
|
|
|
|
$data['page_title'] = "DX Atlas Gridsquare Export";
|
|
|
|
$this->load->view('interface_assets/header', $data);
|
|
$this->load->view('dxatlas/index');
|
|
$this->load->view('interface_assets/footer');
|
|
|
|
}
|
|
|
|
public function export() {
|
|
$this->load->model('dxatlas_model');
|
|
|
|
// Parameters
|
|
$station_id = $this->security->xss_clean($this->input->post('station_profile'));
|
|
$band = $this->security->xss_clean($this->input->post('band'));
|
|
$mode = $this->security->xss_clean($this->input->post('mode'));
|
|
$dxcc = $this->security->xss_clean($this->input->post('dxcc_id'));
|
|
$cqz = $this->security->xss_clean($this->input->post('cqz'));
|
|
$propagation = $this->security->xss_clean($this->input->post('prop_mode'));
|
|
$fromdate = $this->security->xss_clean($this->input->post('fromdate'));
|
|
$todate = $this->security->xss_clean($this->input->post('todate'));
|
|
|
|
// Get QSOs with Valid QRAs
|
|
$grids = $this->dxatlas_model->get_gridsquares($station_id, $band, $mode, $dxcc, $cqz, $propagation, $fromdate, $todate);
|
|
|
|
$this->generateFiles($grids['worked'], $grids['confirmed'], $band);
|
|
}
|
|
|
|
function generateFiles($wkdArray, $cfmArray, $band) {
|
|
|
|
$gridCfmArray = [];
|
|
$gridWkdArray = [];
|
|
$fieldCfmArray = [];
|
|
$fieldWkdArray = [];
|
|
|
|
foreach ($cfmArray as $grid) {
|
|
$field = substr($grid, 0, 2);
|
|
if (!in_array($field, $fieldCfmArray)) {
|
|
$fieldCfmArray[] = $field;
|
|
}
|
|
$gridCfmArray[] = $grid;
|
|
}
|
|
|
|
|
|
foreach ($wkdArray as $grid) {
|
|
$field = substr($grid, 0, 2);
|
|
if (!in_array($field, $fieldCfmArray)) {
|
|
if (!in_array($field, $fieldWkdArray)) {
|
|
$fieldWkdArray[] = $field;
|
|
}
|
|
}
|
|
if (!in_array($grid, $gridCfmArray)) {
|
|
$gridWkdArray[] = $grid;
|
|
}
|
|
}
|
|
|
|
$gridWkdString = '';
|
|
$gridCfmString = '';
|
|
|
|
asort($gridWkdArray);
|
|
asort($gridCfmArray);
|
|
asort($fieldWkdArray);
|
|
asort($fieldCfmArray);
|
|
|
|
foreach ($fieldWkdArray as $fields) {
|
|
$gridWkdString .= $fields . "\r\n";
|
|
}
|
|
|
|
foreach ($gridWkdArray as $grids) {
|
|
$gridWkdString .= $grids . "\r\n";
|
|
}
|
|
|
|
foreach ($fieldCfmArray as $fields) {
|
|
$gridCfmString .= $fields . "\r\n";
|
|
}
|
|
|
|
foreach ($gridCfmArray as $grids) {
|
|
$gridCfmString .= $grids . "\r\n";
|
|
}
|
|
|
|
$this->makeZip($gridWkdString, $gridCfmString, $band);
|
|
}
|
|
|
|
function makeZip($gridWkdString, $gridCfmString, $band) {
|
|
$zipFileName = 'dxatlas_gridsquares_'. $band . '.zip';
|
|
// Prepare File
|
|
$file = tempnam("tmp", "zip");
|
|
$zip = new ZipArchive();
|
|
$zip->open($file, ZipArchive::OVERWRITE);
|
|
|
|
// Stuff with content
|
|
$zip->addFromString($band . '_grids.wkd', $gridWkdString);
|
|
$zip->addFromString($band . '_grids.cfm', $gridCfmString);
|
|
|
|
// Close and send to users
|
|
$zip->close();
|
|
$length = filesize($file);
|
|
header('Content-Type: application/zip');
|
|
header('Content-Length: ' . $length);
|
|
header('Content-Disposition: attachment; filename="' . $zipFileName . '"');
|
|
readfile($file);
|
|
unlink($file);
|
|
}
|
|
}
|