kopia lustrzana https://github.com/magicbug/Cloudlog
803 wiersze
27 KiB
PHP
803 wiersze
27 KiB
PHP
<?php
|
|
|
|
class Logbook_model extends CI_Model {
|
|
|
|
function __construct()
|
|
{
|
|
// Call the Model constructor
|
|
parent::__construct();
|
|
}
|
|
|
|
/* Add QSO to Logbook */
|
|
function add() {
|
|
// Join date+time
|
|
$datetime = date('Y-m-d') ." ". $this->input->post('start_time');
|
|
|
|
if ($this->input->post('prop_mode') != null) {
|
|
$prop_mode = $this->input->post('prop_mode');
|
|
} else {
|
|
$prop_mode = "";
|
|
}
|
|
|
|
if($this->input->post('sat_name')) {
|
|
$prop_mode = "SAT";
|
|
}
|
|
|
|
if($this->session->userdata('user_locator')){
|
|
$locator = $this->session->userdata('user_locator');
|
|
} else {
|
|
$locator = $this->config->item('locator');
|
|
}
|
|
|
|
// Create array with QSO Data
|
|
|
|
$data = array(
|
|
'COL_TIME_ON' => $datetime,
|
|
'COL_TIME_OFF' => $datetime,
|
|
'COL_CALL' => strtoupper(trim($this->input->post('callsign'))),
|
|
'COL_BAND' => trim($this->input->post('band')),
|
|
'COL_FREQ' => $this->input->post('freq_display'),
|
|
'COL_MODE' => $this->input->post('mode'),
|
|
'COL_RST_RCVD' => $this->input->post('rst_recv'),
|
|
'COL_RST_SENT' => $this->input->post('rst_sent'),
|
|
'COL_NAME' => $this->input->post('name'),
|
|
'COL_COMMENT' => $this->input->post('comment'),
|
|
'COL_SAT_NAME' => strtoupper($this->input->post('sat_name')),
|
|
'COL_SAT_MODE' => strtoupper($this->input->post('sat_mode')),
|
|
'COL_GRIDSQUARE' => strtoupper(trim($this->input->post('locator'))),
|
|
'COL_COUNTRY' => $this->input->post('country'),
|
|
'COL_MY_RIG' => $this->input->post('equipment'),
|
|
'COL_QSLSDATE' => date('Y-m-d'),
|
|
'COL_QSLRDATE' => date('Y-m-d'),
|
|
'COL_QSL_SENT' => $this->input->post('qsl_sent'),
|
|
'COL_QSL_RCVD' => $this->input->post('qsl_recv'),
|
|
'COL_QSL_SENT_VIA' => $this->input->post('qsl_sent_method'),
|
|
'COL_QSL_RCVD_VIA' => $this->input->post('qsl_recv_method'),
|
|
'COL_QSL_VIA' => $this->input->post('qsl_via'),
|
|
'COL_OPERATOR' => $this->session->userdata('user_callsign'),
|
|
'COL_QTH' => $this->input->post('qth'),
|
|
'COL_PROP_MODE' => $prop_mode,
|
|
'COL_IOTA' => trim($this->input->post('iota_ref')),
|
|
'COL_MY_GRIDSQUARE' => strtoupper($locator),
|
|
'COL_DISTANCE' => "0",
|
|
'COL_FREQ_RX' => 0,
|
|
'COL_BAND_RX' => null,
|
|
'COL_ANT_AZ' => null,
|
|
'COL_ANT_EL' => null,
|
|
'COL_A_INDEX' => null,
|
|
'COL_AGE' => null,
|
|
'COL_TEN_TEN' => null,
|
|
'COL_TX_PWR' => null,
|
|
'COL_STX' => null,
|
|
'COL_SRX' => null,
|
|
'COL_NR_BURSTS' => null,
|
|
'COL_NR_PINGS' => null,
|
|
'COL_MAX_BURSTS' => null,
|
|
'COL_K_INDEX' => null,
|
|
'COL_SFI' => null,
|
|
'COL_RX_PWR' => null,
|
|
'COL_LAT' => null,
|
|
'COL_LON' => null,
|
|
);
|
|
|
|
$this->add_qso($data);
|
|
}
|
|
|
|
/* Add QSO to Logbook */
|
|
function create_qso() {
|
|
// Join date+time
|
|
$datetime = date("Y-m-d",strtotime($this->input->post('start_date')))." ". $this->input->post('start_time');
|
|
if ($this->input->post('prop_mode') != null) {
|
|
$prop_mode = $this->input->post('prop_mode');
|
|
} else {
|
|
$prop_mode = "";
|
|
}
|
|
|
|
if($this->input->post('sat_name')) {
|
|
$prop_mode = "SAT";
|
|
}
|
|
|
|
if($this->session->userdata('user_locator')){
|
|
$locator = $this->session->userdata('user_locator');
|
|
} else {
|
|
$locator = $this->config->item('locator');
|
|
}
|
|
|
|
// Create array with QSO Data
|
|
|
|
$data = array(
|
|
'COL_TIME_ON' => $datetime,
|
|
'COL_TIME_OFF' => $datetime,
|
|
'COL_CALL' => strtoupper(trim($this->input->post('callsign'))),
|
|
'COL_BAND' => $this->input->post('band'),
|
|
'COL_FREQ' => $this->input->post('freq_display'),
|
|
'COL_MODE' => $this->input->post('mode'),
|
|
'COL_RST_RCVD' => $this->input->post('rst_recv'),
|
|
'COL_RST_SENT' => $this->input->post('rst_sent'),
|
|
'COL_NAME' => $this->input->post('name'),
|
|
'COL_COMMENT' => $this->input->post('comment'),
|
|
'COL_SAT_NAME' => strtoupper($this->input->post('sat_name')),
|
|
'COL_SAT_MODE' => strtoupper($this->input->post('sat_mode')),
|
|
'COL_GRIDSQUARE' => strtoupper(trim($this->input->post('locator'))),
|
|
'COL_COUNTRY' => $this->input->post('country'),
|
|
'COL_MY_RIG' => $this->input->post('equipment'),
|
|
'COL_QSLSDATE' => date('Y-m-d'),
|
|
'COL_QSLRDATE' => date('Y-m-d'),
|
|
'COL_QSL_SENT' => $this->input->post('qsl_sent'),
|
|
'COL_QSL_RCVD' => $this->input->post('qsl_recv'),
|
|
'COL_QSL_SENT_VIA' => $this->input->post('qsl_sent_method'),
|
|
'COL_QSL_RCVD_VIA' => $this->input->post('qsl_recv_method'),
|
|
'COL_QSL_VIA' => $this->input->post('qsl_via'),
|
|
'COL_OPERATOR' => $this->session->userdata('user_callsign'),
|
|
'COL_QTH' => $this->input->post('qth'),
|
|
'COL_PROP_MODE' => $prop_mode,
|
|
'COL_IOTA' => trim($this->input->post('iota_ref')),
|
|
'COL_MY_GRIDSQUARE' => $locator,
|
|
'COL_DISTANCE' => "0",
|
|
'COL_FREQ_RX' => 0,
|
|
'COL_BAND_RX' => null,
|
|
'COL_ANT_AZ' => null,
|
|
'COL_ANT_EL' => null,
|
|
'COL_A_INDEX' => null,
|
|
'COL_AGE' => null,
|
|
'COL_TEN_TEN' => null,
|
|
'COL_TX_PWR' => null,
|
|
'COL_STX' => null,
|
|
'COL_SRX' => null,
|
|
'COL_NR_BURSTS' => null,
|
|
'COL_NR_PINGS' => null,
|
|
'COL_MAX_BURSTS' => null,
|
|
'COL_K_INDEX' => null,
|
|
'COL_SFI' => null,
|
|
'COL_RX_PWR' => null,
|
|
'COL_LAT' => null,
|
|
'COL_LON' => null,
|
|
);
|
|
|
|
$this->add_qso($data);
|
|
}
|
|
|
|
function add_qso($data) {
|
|
// Add QSO to database
|
|
$this->db->insert($this->config->item('table_name'), $data);
|
|
}
|
|
|
|
/* Edit QSO */
|
|
function edit() {
|
|
|
|
$data = array(
|
|
'COL_TIME_ON' => $this->input->post('time_on'),
|
|
'COL_TIME_OFF' => $this->input->post('time_off'),
|
|
'COL_CALL' => strtoupper(trim($this->input->post('callsign'))),
|
|
'COL_BAND' => $this->input->post('band'),
|
|
'COL_FREQ' => $this->input->post('freq'),
|
|
'COL_MODE' => $this->input->post('mode'),
|
|
'COL_RST_RCVD' => $this->input->post('rst_recv'),
|
|
'COL_RST_SENT' => $this->input->post('rst_sent'),
|
|
'COL_GRIDSQUARE' => strtoupper(trim($this->input->post('locator'))),
|
|
'COL_COMMENT' => $this->input->post('comment'),
|
|
'COL_NAME' => $this->input->post('name'),
|
|
'COL_COUNTRY' => $this->input->post('country'),
|
|
'COL_SAT_NAME' => $this->input->post('sat_name'),
|
|
'COL_SAT_MODE' => $this->input->post('sat_mode'),
|
|
'COL_QSLSDATE' => date('Y-m-d'),
|
|
'COL_QSLRDATE' => date('Y-m-d'),
|
|
'COL_QSL_SENT' => $this->input->post('qsl_sent'),
|
|
'COL_QSL_RCVD' => $this->input->post('qsl_recv'),
|
|
'COL_QSL_SENT_VIA' => $this->input->post('qsl_sent_method'),
|
|
'COL_QSL_RCVD_VIA' => $this->input->post('qsl_recv_method'),
|
|
'COL_EQSL_QSL_SENT' => $this->input->post('eqsl_sent'),
|
|
'COL_EQSL_QSL_RCVD' => $this->input->post('eqsl_recv'),
|
|
'COL_LOTW_QSL_SENT' => $this->input->post('lotw_sent'),
|
|
'COL_LOTW_QSL_RCVD' => $this->input->post('lotw_recv'),
|
|
'COL_IOTA' => $this->input->post('iota_ref'),
|
|
'COL_QTH' => $this->input->post('qth'),
|
|
'COL_FREQ_RX' => '0',
|
|
'COL_STX_STRING' => $this->input->post('stx_string'),
|
|
'COL_SRX_STRING' => $this->input->post('srx_string')
|
|
);
|
|
|
|
$this->db->where('COL_PRIMARY_KEY', $this->input->post('id'));
|
|
$this->db->update($this->config->item('table_name'), $data);
|
|
|
|
}
|
|
|
|
/* Return last 10 QSOs */
|
|
function last_ten() {
|
|
$this->db->select('COL_CALL, COL_BAND, COL_TIME_ON, COL_RST_RCVD, COL_RST_SENT, COL_MODE, COL_NAME, COL_COUNTRY, COL_PRIMARY_KEY, COL_SAT_NAME');
|
|
$this->db->order_by("COL_TIME_ON", "desc");
|
|
$this->db->limit(10);
|
|
|
|
return $this->db->get($this->config->item('table_name'));
|
|
}
|
|
|
|
/* Show custom number of qsos */
|
|
function last_custom($num) {
|
|
$this->db->select('COL_CALL, COL_BAND, COL_TIME_ON, COL_RST_RCVD, COL_RST_SENT, COL_MODE, COL_NAME, COL_COUNTRY, COL_PRIMARY_KEY, COL_SAT_NAME');
|
|
$this->db->order_by("COL_TIME_ON", "desc");
|
|
$this->db->limit($num);
|
|
|
|
return $this->db->get($this->config->item('table_name'));
|
|
}
|
|
|
|
/* Callsign QRA */
|
|
|
|
function call_qra($callsign) {
|
|
$this->db->select('COL_CALL, COL_GRIDSQUARE, COL_TIME_ON');
|
|
$this->db->where('COL_CALL', $callsign);
|
|
$where = "COL_GRIDSQUARE != \"\"";
|
|
|
|
$this->db->where($where);
|
|
|
|
$this->db->order_by("COL_TIME_ON", "desc");
|
|
$this->db->limit(1);
|
|
$query = $this->db->get($this->config->item('table_name'));
|
|
$callsign = "";
|
|
if ($query->num_rows() > 0)
|
|
{
|
|
$data = $query->row();
|
|
$callsign = strtoupper($data->COL_GRIDSQUARE);
|
|
}
|
|
|
|
return $callsign;
|
|
}
|
|
|
|
function call_name($callsign) {
|
|
$this->db->select('COL_CALL, COL_NAME, COL_TIME_ON');
|
|
$this->db->where('COL_CALL', $callsign);
|
|
$where = "COL_NAME != \"\"";
|
|
|
|
$this->db->where($where);
|
|
|
|
$this->db->order_by("COL_TIME_ON", "desc");
|
|
$this->db->limit(1);
|
|
$query = $this->db->get($this->config->item('table_name'));
|
|
$name = "";
|
|
if ($query->num_rows() > 0)
|
|
{
|
|
$data = $query->row();
|
|
$name = $data->COL_NAME;
|
|
}
|
|
|
|
return $name;
|
|
}
|
|
|
|
/* Return QSO Info */
|
|
function qso_info($id) {
|
|
$this->db->where('COL_PRIMARY_KEY', $id);
|
|
|
|
return $this->db->get($this->config->item('table_name'));
|
|
}
|
|
|
|
|
|
function get_qsos($num, $offset) {
|
|
$this->db->select('COL_CALL, COL_BAND, COL_TIME_ON, COL_RST_RCVD, COL_RST_SENT, COL_MODE, COL_NAME, COL_COUNTRY, COL_PRIMARY_KEY, COL_SAT_NAME, COL_GRIDSQUARE, COL_QSL_RCVD, COL_QSL_SENT, COL_STX_STRING, COL_SRX_STRING');
|
|
$this->db->order_by("COL_TIME_ON", "desc");
|
|
|
|
$query = $this->db->get($this->config->item('table_name'), $num, $offset);
|
|
|
|
return $query;
|
|
}
|
|
|
|
function get_last_qsos($num) {
|
|
$this->db->select('COL_CALL, COL_BAND, COL_TIME_ON, COL_RST_RCVD, COL_RST_SENT, COL_MODE, COL_NAME, COL_COUNTRY, COL_PRIMARY_KEY, COL_SAT_NAME, COL_STX_STRING, COL_SRX_STRING');
|
|
$this->db->order_by("COL_TIME_ON", "desc");
|
|
$this->db->limit($num);
|
|
$query = $this->db->get($this->config->item('table_name'));
|
|
|
|
return $query;
|
|
}
|
|
|
|
/* Get All QSOs with a Valid Grid */
|
|
function kml_get_all_qsos() {
|
|
$this->db->select('COL_CALL, COL_BAND, COL_TIME_ON, COL_RST_RCVD, COL_RST_SENT, COL_MODE, COL_NAME, COL_COUNTRY, COL_PRIMARY_KEY, COL_SAT_NAME, COL_GRIDSQUARE');
|
|
$this->db->where('COL_GRIDSQUARE != \'null\'');
|
|
$query = $this->db->get($this->config->item('table_name'));
|
|
|
|
return $query;
|
|
}
|
|
|
|
function get_date_qsos($date) {
|
|
$this->db->select('COL_CALL, COL_BAND, COL_TIME_ON, COL_RST_RCVD, COL_RST_SENT, COL_MODE, COL_NAME, COL_COUNTRY, COL_PRIMARY_KEY, COL_SAT_NAME');
|
|
$this->db->order_by("COL_TIME_ON", "desc");
|
|
$start = $date." 00:00:00";
|
|
$end = $date." 23:59:59";
|
|
|
|
$this->db->where("COL_TIME_ON BETWEEN '".$start."' AND '".$end."'");
|
|
$query = $this->db->get($this->config->item('table_name'));
|
|
|
|
return $query;
|
|
}
|
|
|
|
function get_todays_qsos() {
|
|
$morning = date('Y-m-d 00:00:00');
|
|
$night = date('Y-m-d 23:59:59');
|
|
$query = $this->db->query('SELECT * FROM '.$this->config->item('table_name').' WHERE COL_TIME_ON between \''.$morning.'\' AND \''.$night.'\'');
|
|
return $query;
|
|
}
|
|
|
|
function totals_year() {
|
|
$query = $this->db->query('
|
|
SELECT DATE_FORMAT(COL_TIME_ON, \'%Y\') as \'year\',
|
|
COUNT(COL_PRIMARY_KEY) as \'total\'
|
|
FROM '.$this->config->item('table_name').'
|
|
GROUP BY DATE_FORMAT(COL_TIME_ON, \'%Y\')
|
|
');
|
|
return $query;
|
|
}
|
|
|
|
/* Return total number of qsos */
|
|
function total_qsos() {
|
|
$query = $this->db->query('SELECT COUNT( * ) as count FROM '.$this->config->item('table_name').'');
|
|
|
|
if ($query->num_rows() > 0)
|
|
{
|
|
foreach ($query->result() as $row)
|
|
{
|
|
return $row->count;
|
|
}
|
|
}
|
|
}
|
|
|
|
/* Return number of QSOs had today */
|
|
function todays_qsos() {
|
|
|
|
$morning = date('Y-m-d 00:00:00');
|
|
$night = date('Y-m-d 23:59:59');
|
|
$query = $this->db->query('SELECT COUNT( * ) as count FROM '.$this->config->item('table_name').' WHERE COL_TIME_ON between \''.$morning.'\' AND \''.$night.'\'');
|
|
|
|
if ($query->num_rows() > 0)
|
|
{
|
|
foreach ($query->result() as $row)
|
|
{
|
|
return $row->count;
|
|
}
|
|
}
|
|
}
|
|
|
|
/* Return QSOs over a period of days */
|
|
function map_week_qsos($start, $end) {
|
|
|
|
$this->db->where("COL_TIME_ON BETWEEN '".$start."' AND '".$end."'");
|
|
$this->db->order_by("COL_TIME_ON", "ASC");
|
|
$query = $this->db->get($this->config->item('table_name'));
|
|
|
|
return $query;
|
|
}
|
|
|
|
/* Returns QSOs for the date sent eg 2011-09-30 */
|
|
function map_day($date) {
|
|
|
|
$start = $date." 00:00:00";
|
|
$end = $date." 23:59:59";
|
|
|
|
$this->db->where("COL_TIME_ON BETWEEN '".$start."' AND '".$end."'");
|
|
$this->db->order_by("COL_TIME_ON", "ASC");
|
|
$query = $this->db->get($this->config->item('table_name'));
|
|
|
|
return $query;
|
|
}
|
|
|
|
// Return QSOs made during the current month
|
|
function month_qsos() {
|
|
|
|
$morning = date('Y-m-01 00:00:00');
|
|
$night = date('Y-m-30 23:59:59');
|
|
$query = $this->db->query('SELECT COUNT( * ) as count FROM '.$this->config->item('table_name').' WHERE COL_TIME_ON between \''.$morning.'\' AND \''.$night.'\'');
|
|
|
|
if ($query->num_rows() > 0)
|
|
{
|
|
foreach ($query->result() as $row)
|
|
{
|
|
return $row->count;
|
|
}
|
|
}
|
|
}
|
|
|
|
/* Return QSOs made during the current Year */
|
|
function year_qsos() {
|
|
|
|
$morning = date('Y-01-01 00:00:00');
|
|
$night = date('Y-12-31 23:59:59');
|
|
$query = $this->db->query('SELECT COUNT( * ) as count FROM '.$this->config->item('table_name').' WHERE COL_TIME_ON between \''.$morning.'\' AND \''.$night.'\'');
|
|
|
|
if ($query->num_rows() > 0)
|
|
{
|
|
foreach ($query->result() as $row)
|
|
{
|
|
return $row->count;
|
|
}
|
|
}
|
|
}
|
|
|
|
/* Return total amount of SSB QSOs logged */
|
|
function total_ssb() {
|
|
$query = $this->db->query('SELECT COUNT( * ) as count FROM '.$this->config->item('table_name').' WHERE COL_MODE = \'SSB\' OR COL_MODE = \'LSB\' OR COL_MODE = \'USB\'');
|
|
|
|
if ($query->num_rows() > 0)
|
|
{
|
|
foreach ($query->result() as $row)
|
|
{
|
|
return $row->count;
|
|
}
|
|
}
|
|
}
|
|
|
|
/* Return total number of satellite QSOs */
|
|
function total_sat() {
|
|
$query = $this->db->query('SELECT COL_SAT_NAME, COUNT( * ) as count FROM '.$this->config->item('table_name').' WHERE COL_SAT_NAME != \'null\' GROUP BY COL_SAT_NAME');
|
|
|
|
return $query;
|
|
}
|
|
|
|
/* Return total number of CW QSOs */
|
|
function total_cw() {
|
|
$query = $this->db->query('SELECT COUNT( * ) as count FROM '.$this->config->item('table_name').' WHERE COL_MODE = \'CW\' ');
|
|
|
|
if ($query->num_rows() > 0)
|
|
{
|
|
foreach ($query->result() as $row)
|
|
{
|
|
return $row->count;
|
|
}
|
|
}
|
|
}
|
|
|
|
/* Return total number of FM QSOs */
|
|
function total_fm() {
|
|
$query = $this->db->query('SELECT COUNT( * ) as count FROM '.$this->config->item('table_name').' WHERE COL_MODE = \'FM\'');
|
|
|
|
if ($query->num_rows() > 0)
|
|
{
|
|
foreach ($query->result() as $row)
|
|
{
|
|
return $row->count;
|
|
}
|
|
}
|
|
}
|
|
|
|
/* Return total number of Digital QSOs */
|
|
function total_digi() {
|
|
$query = $this->db->query('SELECT COUNT( * ) as count FROM '.$this->config->item('table_name').' WHERE COL_MODE != \'SSB\' AND COL_MODE != \'LSB\' AND COL_MODE != \'USB\' AND COL_MODE != \'CW\' AND COL_MODE != \'FM\' AND COL_MODE != \'AM\'');
|
|
|
|
if ($query->num_rows() > 0)
|
|
{
|
|
foreach ($query->result() as $row)
|
|
{
|
|
return $row->count;
|
|
}
|
|
}
|
|
}
|
|
|
|
/* Return total number of QSOs per band */
|
|
function total_bands() {
|
|
$query = $this->db->query('SELECT DISTINCT (COL_BAND) AS band, count( * ) AS count FROM '.$this->config->item('table_name').' GROUP BY band ORDER BY count DESC');
|
|
|
|
return $query;
|
|
}
|
|
|
|
/* Return total number of QSL Cards sent */
|
|
function total_qsl_sent() {
|
|
$query = $this->db->query('SELECT DISTINCT (COL_QSL_SENT) AS band, count(COL_QSL_SENT) AS count FROM '.$this->config->item('table_name').' WHERE COL_QSL_SENT = "Y" GROUP BY band');
|
|
|
|
$row = $query->row();
|
|
|
|
if($row == null) {
|
|
return 0;
|
|
} else {
|
|
return $row->count;
|
|
}
|
|
}
|
|
|
|
/* Return total number of QSL Cards requested */
|
|
function total_qsl_requested() {
|
|
$query = $this->db->query('SELECT DISTINCT (COL_QSL_SENT) AS band, count(COL_QSL_SENT) AS count FROM '.$this->config->item('table_name').' WHERE COL_QSL_SENT = "R" GROUP BY band');
|
|
|
|
$row = $query->row();
|
|
|
|
if($row == null) {
|
|
return 0;
|
|
} else {
|
|
return $row->count;
|
|
}
|
|
}
|
|
|
|
/* Return total number of QSL Cards received */
|
|
function total_qsl_recv() {
|
|
$query = $this->db->query('SELECT DISTINCT (COL_QSL_RCVD) AS band, count(COL_QSL_RCVD) AS count FROM '.$this->config->item('table_name').' WHERE COL_QSL_RCVD = "Y" GROUP BY band');
|
|
|
|
$row = $query->row();
|
|
|
|
if($row == null) {
|
|
return 0;
|
|
} else {
|
|
return $row->count;
|
|
}
|
|
}
|
|
|
|
/* Return total number of countrys worked */
|
|
function total_countrys() {
|
|
$query = $this->db->query('SELECT DISTINCT (COL_COUNTRY) FROM '.$this->config->item('table_name').'');
|
|
|
|
return $query->num_rows();
|
|
}
|
|
|
|
function api_search_query($query) {
|
|
$time_start = microtime(true);
|
|
$results = $this->db->query($query);
|
|
if(!$results) {
|
|
return array('query' => $query, 'error' => $this->db->_error_number(), 'time' => 0);
|
|
}
|
|
$time_end = microtime(true);
|
|
$time = round($time_end - $time_start, 4);
|
|
|
|
return array('query' => $query, 'results' => $results, 'time' => $time);
|
|
}
|
|
|
|
function api_insert_query($query) {
|
|
$time_start = microtime(true);
|
|
$results = $this->db->insert($this->config->item('table_name'), $query);
|
|
if(!$results) {
|
|
return array('query' => $query, 'error' => $this->db->_error_number(), 'time' => 0);
|
|
}
|
|
$time_end = microtime(true);
|
|
$time = round($time_end - $time_start, 4);
|
|
|
|
return array('query' => $this->db->queries[2], 'result_string' => $results, 'time' => $time);
|
|
}
|
|
|
|
/* Delete QSO based on the QSO ID */
|
|
function delete($id) {
|
|
$this->db->where('COL_PRIMARY_KEY', $id);
|
|
$this->db->delete($this->config->item('table_name'));
|
|
}
|
|
|
|
/* Used to check if the qso is already in the database */
|
|
function import_check($datetime, $callsign, $band) {
|
|
|
|
$this->db->select('COL_TIME_ON, COL_CALL, COL_BAND');
|
|
$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);
|
|
|
|
$query = $this->db->get($this->config->item('table_name'));
|
|
|
|
if ($query->num_rows() > 0)
|
|
{
|
|
return "Found";
|
|
} else {
|
|
return "No Match";
|
|
}
|
|
}
|
|
|
|
function lotw_update($datetime, $callsign, $band, $qsl_date, $qsl_status) {
|
|
$data = array(
|
|
'COL_LOTW_QSLRDATE' => $qsl_date,
|
|
'COL_LOTW_QSL_RCVD' => $qsl_status,
|
|
'COL_LOTW_QSL_SENT' => 'Y'
|
|
);
|
|
|
|
$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->update($this->config->item('table_name'), $data);
|
|
|
|
return "Updated";
|
|
}
|
|
|
|
function lotw_last_qsl_date() {
|
|
$this->db->select('COL_LOTW_QSLRDATE');
|
|
$this->db->where('COL_LOTW_QSLRDATE IS NOT NULL');
|
|
$this->db->order_by("COL_LOTW_QSLRDATE", "desc");
|
|
$this->db->limit(1);
|
|
|
|
$query = $this->db->get($this->config->item('table_name'));
|
|
$row = $query->row();
|
|
|
|
return $row->COL_LOTW_QSLRDATE;
|
|
}
|
|
|
|
function import($record) {
|
|
// Join date+time
|
|
//$datetime = date('Y-m-d') ." ". $this->input->post('start_time');
|
|
//$myDate = date('Y-m-d', $record['qso_date']);
|
|
$time_on = date('Y-m-d', strtotime($record['qso_date'])) ." ".date('H:i', strtotime($record['time_on']));
|
|
|
|
if (isset($record['time_off'])) {
|
|
$time_off = date('Y-m-d', strtotime($record['qso_date'])) ." ".date('H:i', strtotime($record['time_off']));
|
|
} else {
|
|
$time_off = date('Y-m-d', strtotime($record['qso_date'])) ." ".date('H:i', strtotime($record['time_on']));
|
|
}
|
|
|
|
// Store Freq
|
|
if(isset($record['freq'])) {
|
|
$cleansedstring = preg_replace('#\W#', '', $record['freq']);
|
|
$freq = $cleansedstring."000";
|
|
} else {
|
|
$freq = "0";
|
|
}
|
|
|
|
// Store Name
|
|
if(isset($record['name'])) {
|
|
$name = $record['name'];
|
|
} else {
|
|
$name = "";
|
|
}
|
|
|
|
// Store Notes
|
|
if(isset($record['notes'])) {
|
|
$comment = $record['notes'];
|
|
} else {
|
|
$comment = "";
|
|
}
|
|
|
|
// Store Sat Name
|
|
if(isset($record['sat_name'])) {
|
|
$sat_name = $record['sat_name'];
|
|
} else {
|
|
$sat_name = "";
|
|
}
|
|
|
|
// Store Satellite Mode
|
|
if(isset($record['sat_mode'])) {
|
|
$sat_mode = $record['sat_mode'];
|
|
} else {
|
|
$sat_mode = "";
|
|
}
|
|
|
|
// Store Gridsquare
|
|
if(isset($record['gridsquare'])) {
|
|
$gridsquare = $record['gridsquare'];
|
|
} else {
|
|
$gridsquare = "";
|
|
}
|
|
|
|
// Store or find country name
|
|
if(isset($record['country'])) {
|
|
$country = $record['country'];
|
|
} else {
|
|
$this->load->model('dxcc');
|
|
|
|
$dxccinfo = $this->dxcc->info($record['call']);
|
|
|
|
if ($dxccinfo->num_rows() > 0)
|
|
{
|
|
foreach ($dxccinfo->result() as $row1)
|
|
{
|
|
$country = ucfirst(strtolower($row1->name));
|
|
}
|
|
} else {
|
|
$country = "";
|
|
}
|
|
}
|
|
|
|
// Store QTH
|
|
if(isset($record['qth'])) {
|
|
$qth = $record['qth'];
|
|
} else {
|
|
$qth = "";
|
|
}
|
|
|
|
// Store Propagation Mode
|
|
if(isset($record['prop_mode'])) {
|
|
$prop_mode = $record['prop_mode'];
|
|
} else {
|
|
$prop_mode = "";
|
|
}
|
|
|
|
// RST recevied
|
|
if(isset($record['rst_rcvd'])) {
|
|
$rst_rx = $record['rst_rcvd'];
|
|
} else {
|
|
$rst_rx = "59" ;
|
|
}
|
|
|
|
// RST Sent
|
|
if(isset($record['rst_sent'])) {
|
|
$rst_tx = $record['rst_sent'];
|
|
} else {
|
|
$rst_tx = "59" ;
|
|
}
|
|
|
|
// Store Band
|
|
if(isset($record['band'])) {
|
|
$band = $record['band'];
|
|
} else {
|
|
$band = null;
|
|
}
|
|
|
|
// Store IOTA Ref if available
|
|
if(isset($record['iota'])) {
|
|
$iota = $record['iota'];
|
|
} else {
|
|
$iota = null;
|
|
}
|
|
|
|
|
|
// QSL Recv date
|
|
if(isset($record['qslrdate'])) {
|
|
$QSLRDATE = $record['qslrdate'];
|
|
} else {
|
|
$QSLRDATE = null;
|
|
}
|
|
|
|
// QSL Recv Status
|
|
if(isset($record['qsl_rcvd'])) {
|
|
$QSLRCVD = $record['qsl_rcvd'];
|
|
} else {
|
|
$QSLRCVD = null;
|
|
}
|
|
|
|
// QSL Sent date
|
|
if(isset($record['qslsdate'])) {
|
|
$QSLSDATE = $record['qslsdate'];
|
|
} else {
|
|
$QSLSDATE = null;
|
|
}
|
|
|
|
// QSL Sent Status
|
|
if(isset($record['qsl_sent'])) {
|
|
$QSLSENT = $record['qsl_sent'];
|
|
} else {
|
|
$QSLSENT = null;
|
|
}
|
|
|
|
if(isset($record['stx'])) {
|
|
$stx = $record['stx'];
|
|
} else {
|
|
$stx = null;
|
|
}
|
|
|
|
if(isset($record['srx'])) {
|
|
$srx = $record['srx'];
|
|
} else {
|
|
$srx = null;
|
|
}
|
|
|
|
$this->db->where('COL_CALL', $record['call']);
|
|
$this->db->where('COL_TIME_ON', $time_on);
|
|
$check = $this->db->get($this->config->item('table_name'));
|
|
|
|
if ($check->num_rows() <= 0)
|
|
{
|
|
// Create array with QSO Data
|
|
$data = array(
|
|
'COL_TIME_ON' => $time_on,
|
|
'COL_TIME_OFF' => $time_off,
|
|
'COL_CALL' => strtoupper($record['call']),
|
|
'COL_BAND' => $record['band'],
|
|
'COL_FREQ' => $freq,
|
|
'COL_MODE' => $record['mode'],
|
|
'COL_RST_RCVD' => $rst_rx,
|
|
'COL_RST_SENT' => $rst_tx,
|
|
'COL_NAME' => $name,
|
|
'COL_COMMENT' => $comment,
|
|
'COL_SAT_NAME' => $sat_name,
|
|
'COL_SAT_MODE' => $sat_mode,
|
|
'COL_GRIDSQUARE' => $gridsquare,
|
|
'COL_COUNTRY' => $country,
|
|
'COL_QTH' =>$qth,
|
|
'COL_PROP_MODE' => $prop_mode,
|
|
'COL_DISTANCE' => 0,
|
|
'COL_FREQ_RX' => 0,
|
|
'COL_BAND_RX' => 0,
|
|
'COL_ANT_AZ' => 0,
|
|
'COL_ANT_EL' => 0,
|
|
'COL_STX_STRING' => $stx,
|
|
'COL_SRX_STRING' => $srx,
|
|
'COL_IOTA' => $iota,
|
|
'COL_QSLRDATE' => $QSLRDATE,
|
|
'COL_QSL_RCVD' => $QSLRCVD,
|
|
'COL_QSLSDATE' => $QSLSDATE,
|
|
'COL_QSL_SENT' => $QSLSENT
|
|
);
|
|
|
|
$this->add_qso($data);
|
|
}
|
|
}
|
|
|
|
}
|
|
|
|
?>
|