From af3f405d7ffeda4a133878a5aefd792e65e95130 Mon Sep 17 00:00:00 2001 From: Michael Cullen Date: Fri, 17 May 2019 01:59:56 +0100 Subject: [PATCH 1/3] Update Controller: More empty strings where NULLs should be --- application/controllers/Update.php | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/application/controllers/Update.php b/application/controllers/Update.php index e24f10ff..997bd959 100644 --- a/application/controllers/Update.php +++ b/application/controllers/Update.php @@ -34,8 +34,8 @@ class Update extends CI_Controller { $startinfo = strtotime($record->start); $endinfo = strtotime($record->end); - $start_date = ($startinfo) ? date('Y-m-d H:i:s',$startinfo) : ""; - $end_date = ($endinfo) ? date('Y-m-d H:i:s',$endinfo) : ""; + $start_date = ($startinfo) ? date('Y-m-d H:i:s',$startinfo) : null; + $end_date = ($endinfo) ? date('Y-m-d H:i:s',$endinfo) : null; if(!$entity->cqz) { $data = array( @@ -47,6 +47,7 @@ class Update extends CI_Controller { 'adif' => (int) $entity->adif, 'name' => (string) $entity->name, 'prefix' => (string) $entity->prefix, + 'ituz' => (float) $entity->ituz, 'cqz' => (int) $entity->cqz, 'cont' => (string) $entity->cont, 'long' => (float) $entity->long, @@ -80,8 +81,8 @@ class Update extends CI_Controller { $startinfo = strtotime($record->start); $endinfo = strtotime($record->end); - $start_date = ($startinfo) ? date('Y-m-d H:i:s',$startinfo) : ""; - $end_date = ($endinfo) ? date('Y-m-d H:i:s',$endinfo) : ""; + $start_date = ($startinfo) ? date('Y-m-d H:i:s',$startinfo) : null; + $end_date = ($endinfo) ? date('Y-m-d H:i:s',$endinfo) : null; $data = array( 'record' => (int) $record->attributes()->record, @@ -120,8 +121,8 @@ class Update extends CI_Controller { $startinfo = strtotime($record->start); $endinfo = strtotime($record->end); - $start_date = ($startinfo) ? date('Y-m-d H:i:s',$startinfo) : ""; - $end_date = ($endinfo) ? date('Y-m-d H:i:s',$endinfo) : ""; + $start_date = ($startinfo) ? date('Y-m-d H:i:s',$startinfo) : null; + $end_date = ($endinfo) ? date('Y-m-d H:i:s',$endinfo) : null; $data = array( 'record' => (int) $record->attributes()->record, From 2f85b199be8630e7a3306d6a8c89dfcd17ed6d0c Mon Sep 17 00:00:00 2001 From: Michael Cullen Date: Fri, 17 May 2019 02:00:06 +0100 Subject: [PATCH 2/3] Logbook model: More changes to prevent strings being inserted into non-string columns --- application/models/Logbook_model.php | 76 ++++++++++++++-------------- 1 file changed, 39 insertions(+), 37 deletions(-) diff --git a/application/models/Logbook_model.php b/application/models/Logbook_model.php index e1a83aec..42762be3 100755 --- a/application/models/Logbook_model.php +++ b/application/models/Logbook_model.php @@ -929,26 +929,26 @@ class Logbook_model extends CI_Model { 'COL_EQSL_QSLRDATE' => (!empty($record['eqsl_qslrdate'])) ? $record['eqsl_qslrdate'] : null, 'COL_EQSL_QSLSDATE' => (!empty($record['eqsl_qslsdate'])) ? $record['eqsl_qslsdate'] : null, 'COL_EQSL_STATUS' => (!empty($record['eqsl_status'])) ? $record['eqsl_status'] : '', - 'COL_FISTS' => (!empty($record['fists'])) ? $record['fists'] : '', - 'COL_FISTS_CC' => (!empty($record['fists_cc'])) ? $record['fists_cc'] : '', - 'COL_FORCE_INIT' => (!empty($record['force_init'])) ? $record['force_init'] : '', + 'COL_FISTS' => (!empty($record['fists'])) ? $record['fists'] : null, + 'COL_FISTS_CC' => (!empty($record['fists_cc'])) ? $record['fists_cc'] : null, + 'COL_FORCE_INIT' => (!empty($record['force_init'])) ? $record['force_init'] : null, 'COL_FREQ' => $freq, - 'COL_FREQ_RX' => (!empty($record['freq_rx'])) ? $record['freq_rx'] : '', + 'COL_FREQ_RX' => (!empty($record['freq_rx'])) ? $record['freq_rx'] : null, 'COL_GRIDSQUARE' => (!empty($record['gridsquare'])) ? $record['gridsquare'] : '', - 'COL_HEADING' => (!empty($record['heading'])) ? $record['heading'] : '', - 'COL_HRDLOG_QSO_UPLOAD_DATE' => (!empty($record['hrdlog_qso_upload_date'])) ? $record['hrdlog_qso_upload_date'] : '', + 'COL_HEADING' => (!empty($record['heading'])) ? $record['heading'] : null, + 'COL_HRDLOG_QSO_UPLOAD_DATE' => (!empty($record['hrdlog_qso_upload_date'])) ? $record['hrdlog_qso_upload_date'] : null, 'COL_HRDLOG_QSO_UPLOAD_STATUS' => (!empty($record['hrdlog_qso_upload_status'])) ? $record['hrdlog_qso_upload_status'] : '', 'COL_IOTA' => (!empty($record['iota'])) ? $record['iota'] : '', - 'COL_ITUZ' => (!empty($record['ituz'])) ? $record['ituz'] : '', - 'COL_K_INDEX' => (!empty($record['k_index'])) ? $record['k_index'] : '', - 'COL_LAT' => (!empty($record['lat'])) ? $record['lat'] : '', - 'COL_LON' => (!empty($record['lon'])) ? $record['lon'] : '', + 'COL_ITUZ' => (!empty($record['ituz'])) ? $record['ituz'] : null, + 'COL_K_INDEX' => (!empty($record['k_index'])) ? $record['k_index'] : null, + 'COL_LAT' => (!empty($record['lat'])) ? $record['lat'] : null, + 'COL_LON' => (!empty($record['lon'])) ? $record['lon'] : null, 'COL_LOTW_QSL_RCVD' => (!empty($record['lotw_qsl_rcvd'])) ? $record['lotw_qsl_rcvd'] : '', 'COL_LOTW_QSL_SENT' => (!empty($record['lotw_qsl_sent'])) ? $record['lotw_qsl_sent'] : '', - 'COL_LOTW_QSLRDATE' => (!empty($record['lotw_qslrdate'])) ? $record['lotw_qslrdate'] : '', - 'COL_LOTW_QSLSDATE' => (!empty($record['lotw_qslsdate'])) ? $record['lotw_qslsdate'] : '', + 'COL_LOTW_QSLRDATE' => (!empty($record['lotw_qslrdate'])) ? $record['lotw_qslrdate'] : null, + 'COL_LOTW_QSLSDATE' => (!empty($record['lotw_qslsdate'])) ? $record['lotw_qslsdate'] : null, 'COL_LOTW_STATUS' => (!empty($record['lotw_status'])) ? $record['lotw_status'] : '', - 'COL_MAX_BURSTS' => (!empty($record['max_bursts'])) ? $record['max_bursts'] : '', + 'COL_MAX_BURSTS' => (!empty($record['max_bursts'])) ? $record['max_bursts'] : null, 'COL_MODE' => (!empty($record['mode'])) ? $record['mode'] : '', 'COL_MS_SHOWER' => (!empty($record['ms_shower'])) ? $record['ms_shower'] : '', 'COL_MY_ANTENNA' => (!empty($record['my_antenna'])) ? $record['my_antenna'] : '', @@ -957,16 +957,16 @@ class Logbook_model extends CI_Model { 'COL_MY_CITY_INTL' => (!empty($record['my_city_intl'])) ? $record['my_city_intl'] : '', 'COL_MY_CNTY' => (!empty($record['my_cnty'])) ? $record['my_cnty'] : '', 'COL_MY_COUNTRY' => (!empty($record['my_country'])) ? $record['my_country'] : '', - 'COL_MY_COUNTRY_INTL' => (!empty($record['my_country_intl'])) ? $record['my_country_intl'] : '', - 'COL_MY_CQ_ZONE' => (!empty($record['my_dxcc'])) ? $record['my_dxcc'] : '', - 'COL_MY_DXCC' => (!empty($record['my_dxcc'])) ? $record['my_dxcc'] : '', - 'COL_MY_FISTS' => (!empty($record['my_fists'])) ? $record['my_fists'] : '', + 'COL_MY_COUNTRY_INTL' => (!empty($record['my_country_intl'])) ? $record['my_country_intl'] : null, + 'COL_MY_CQ_ZONE' => (!empty($record['my_dxcc'])) ? $record['my_dxcc'] : null, + 'COL_MY_DXCC' => (!empty($record['my_dxcc'])) ? $record['my_dxcc'] : null, + 'COL_MY_FISTS' => (!empty($record['my_fists'])) ? $record['my_fists'] : null, 'COL_MY_GRIDSQUARE' => (!empty($record['my_gridsquare'])) ? $record['my_gridsquare'] : '', 'COL_MY_IOTA' => (!empty($record['my_iota'])) ? $record['my_iota'] : '', 'COL_MY_IOTA_ISLAND_ID' => (!empty($record['my_iota_island_id'])) ? $record['my_iota_island_id'] : '', - 'COL_MY_ITU_ZONE' => (!empty($record['my_itu_zone'])) ? $record['my_itu_zone'] : '', - 'COL_MY_LAT' => (!empty($record['my_lat'])) ? $record['my_lat'] : '', - 'COL_MY_LON' => (!empty($record['my_lon'])) ? $record['my_lon'] : '', + 'COL_MY_ITU_ZONE' => (!empty($record['my_itu_zone'])) ? $record['my_itu_zone'] : null, + 'COL_MY_LAT' => (!empty($record['my_lat'])) ? $record['my_lat'] : null, + 'COL_MY_LON' => (!empty($record['my_lon'])) ? $record['my_lon'] : null, 'COL_MY_NAME' => (!empty($record['my_name'])) ? $record['my_name'] : '', 'COL_MY_NAME_INTL' => (!empty($record['my_name_intl'])) ? $record['my_name_intl'] : '', 'COL_MY_POSTAL_CODE' => (!empty($record['my_postal_code'])) ? $record['my_postal_code'] : '', @@ -987,15 +987,15 @@ class Logbook_model extends CI_Model { 'COL_NAME_INTL' => (!empty($record['name_intl'])) ? $record['name_intl']: '', 'COL_NOTES' => (!empty($record['notes'])) ? $record['notes'] : '', 'COL_NOTES_INTL' => (!empty($record['notes_intl'])) ? $record['notes_intl'] : '', - 'COL_NR_BURSTS' => (!empty($record['nr_bursts'])) ? $record['nr_bursts'] : '', - 'COL_NR_PINGS' => (!empty($record['nr_pings'])) ? $record['nr_pings'] : '', + 'COL_NR_BURSTS' => (!empty($record['nr_bursts'])) ? $record['nr_bursts'] : null, + 'COL_NR_PINGS' => (!empty($record['nr_pings'])) ? $record['nr_pings'] : null, 'COL_OPERATOR' => (!empty($record['operator'])) ? $record['operator'] : '', 'COL_OWNER_CALLSIGN' => (!empty($record['owner_callsign'])) ? $record['owner_callsign'] : '', 'COL_PFX' => (!empty($record['pfx'])) ? $record['pfx'] : '', 'COL_PRECEDENCE' => (!empty($record['precedence'])) ? $record['precedence'] : '', 'COL_PROP_MODE' => (!empty($record['prop_mode'])) ? $record['prop_mode'] : '', 'COL_PUBLIC_KEY' => (!empty($record['public_key'])) ? $record['public_key'] : '', - 'COL_QRZCOM_QSO_UPLOAD_DATE' => (!empty($record['qrzcom_qso_upload_date'])) ? $record['qrzcom_qso_upload_date'] : '', + 'COL_QRZCOM_QSO_UPLOAD_DATE' => (!empty($record['qrzcom_qso_upload_date'])) ? $record['qrzcom_qso_upload_date'] : null, 'COL_QRZCOM_QSO_UPLOAD_STATUS' => (!empty($record['qrzcom_qso_upload_status'])) ? $record['qrzcom_qso_upload_status'] : '', 'COL_QSL_RCVD' => (!empty($record['qsl_rcvd'])) ? $record['qsl_rcvd'] : '', 'COL_QSL_RCVD_VIA' => (!empty($record['qsl_rcvd_via'])) ? $record['qsl_rcvd_via'] : '', @@ -1003,12 +1003,12 @@ class Logbook_model extends CI_Model { 'COL_QSL_SENT_VIA' => (!empty($record['qsl_sent_via'])) ? $record['qsl_sent_via'] : '', 'COL_QSL_VIA' => (!empty($record['qsl_via'])) ? $record['qsl_via'] : '', 'COL_QSLMSG' => (!empty($record['qslmsg'])) ? $record['qslmsg'] : '', - 'COL_QSLRDATE' => (!empty($record['qslrdate'])) ? $record['qslrdate']: '', - 'COL_QSLSDATE' => (!empty($record['qslsdate'])) ? $record['qslsdate'] : '', + 'COL_QSLRDATE' => (!empty($record['qslrdate'])) ? $record['qslrdate']: null, + 'COL_QSLSDATE' => (!empty($record['qslsdate'])) ? $record['qslsdate'] : null, 'COL_QSO_COMPLETE' => (!empty($record['qso_complete'])) ? $record['qso_complete'] : '', - 'COL_QSO_DATE' => (!empty($record['qso_date'])) ? $record['qso_date'] : '', - 'COL_QSO_DATE_OFF' => (!empty($record['qso_date_off'])) ? $record['qso_date_off'] : '', - 'COL_QSO_RANDOM' => (!empty($record['qso_random'])) ? $record['qso_random'] : '', + 'COL_QSO_DATE' => (!empty($record['qso_date'])) ? $record['qso_date'] : null, + 'COL_QSO_DATE_OFF' => (!empty($record['qso_date_off'])) ? $record['qso_date_off'] : null, + 'COL_QSO_RANDOM' => (!empty($record['qso_random'])) ? $record['qso_random'] : null, 'COL_QTH' => (!empty($record['qth'])) ? $record['qth'] : '', 'COL_QTH_INTL' => (!empty($record['qth_intl'])) ? $record['qth_intl'] : '', 'COL_REGION' => (!empty($record['region'])) ? $record['region'] : '', @@ -1016,10 +1016,10 @@ class Logbook_model extends CI_Model { 'COL_RIG_INTL' => (!empty($record['rig_intl'])) ? $record['rig_intl'] : '', 'COL_RST_RCVD' => $rst_rx, 'COL_RST_SENT' => $rst_tx, - 'COL_RX_PWR' => (!empty($record['rx_pwr'])) ? $record['rx_pwr'] : '', + 'COL_RX_PWR' => (!empty($record['rx_pwr'])) ? $record['rx_pwr'] : null, 'COL_SAT_MODE' => (!empty($record['sat_mode'])) ? $record['sat_mode'] : '', 'COL_SAT_NAME' => (!empty($record['sat_name'])) ? $record['sat_name'] : '', - 'COL_SFI' => (!empty($record['sfi'])) ? $record['sfi'] : '', + 'COL_SFI' => (!empty($record['sfi'])) ? $record['sfi'] : null, 'COL_SIG' => (!empty($record['sig'])) ? $record['sig'] : '', 'COL_SIG_INFO' => (!empty($record['sig_info'])) ? $record['sig_info'] : '', 'COL_SIG_INFO_INTL' => (!empty($record['sig_info_intl'])) ? $record['sig_info_intl'] : '', @@ -1027,18 +1027,18 @@ class Logbook_model extends CI_Model { 'COL_SILENT_KEY' => (!empty($record['silent_key'])) ? $record['silent_key'] : '', 'COL_SKCC' => (!empty($record['skcc'])) ? $record['skcc'] : '', 'COL_SOTA_REF' => (!empty($record['sota_ref'])) ? $record['sota_ref'] : '', - 'COL_SRX' => (!empty($record['srx'])) ? $record['srx'] : '', + 'COL_SRX' => (!empty($record['srx'])) ? $record['srx'] : null, 'COL_SRX_STRING' => (!empty($record['srx_string'])) ? $record['srx_string'] : '', 'COL_STATE' => (!empty($record['state'])) ? $record['state'] : '', 'COL_STATION_CALLSIGN' => (!empty($record['station_callsign'])) ? $record['station_callsign'] : '', - 'COL_STX' => (!empty($record['stx'])) ? $record['stx'] : '', + 'COL_STX' => (!empty($record['stx'])) ? $record['stx'] : null, 'COL_STX_STRING' => (!empty($record['stx_string'])) ? $record['stx_string'] : '', 'COL_SUBMODE' => (!empty($record['submode'])) ? $record['submode'] : '', - 'COL_SWL' => (!empty($record['swl'])) ? $record['swl'] : '', - 'COL_TEN_TEN' => (!empty($record['ten_ten'])) ? $record['ten_ten'] : '', + 'COL_SWL' => (!empty($record['swl'])) ? $record['swl'] : null, + 'COL_TEN_TEN' => (!empty($record['ten_ten'])) ? $record['ten_ten'] : null, 'COL_TIME_ON' => $time_on, 'COL_TIME_OFF' => $time_off, - 'COL_TX_PWR' => (!empty($record['tx_pwr'])) ? $record['tx_pwr'] : '', + 'COL_TX_PWR' => (!empty($record['tx_pwr'])) ? $record['tx_pwr'] : null, 'COL_UKSMG' => (!empty($record['uksmg'])) ? $record['uksmg'] : '', 'COL_USACA_COUNTIES' => (!empty($record['usaca_counties'])) ? $record['usaca_counties'] : '', 'COL_VUCC_GRIDS' =>((!empty($record['vucc_grids']))) ? $record['vucc_grids'] : '', @@ -1064,9 +1064,11 @@ class Logbook_model extends CI_Model { $dxcc_result = $this->db->select('`call`, `entity`, `adif`, `cqz`') ->where('call', substr($call, 0, $i)) ->where('(start <= ', $date) - ->or_where("start = '0000-00-00')", NULL, false) + ->or_where("start = '0000-00-00'", NULL, false) + ->or_where("start is null)", NULL, false) ->where('(end >= ', $date) - ->or_where("end = '0000-00-00')", NULL, false) + ->or_where("end = '0000-00-00'", NULL, false) + ->or_where("end is null)", NULL, false) ->get('dxcc_prefixes'); //$dxcc_result = $this->db->query("select `call`, `entity`, `adif` from dxcc_prefixes where `call` = '".substr($call, 0, $i) ."'"); From fb1e949acf923245a6a7d19832d034b82d632b0c Mon Sep 17 00:00:00 2001 From: Michael Cullen Date: Fri, 17 May 2019 02:00:11 +0100 Subject: [PATCH 3/3] dxcc tables: extend prefix/call field to 32 characters While importing the clublog data, I noticed there's an entry with a 11 character callsign. This is longer than the 10 characters allowed for the field, causing a problem. This commit extends it to 32 characters, which should be more than enough, while also being a power of 2. fixes #272 --- application/config/migration.php | 2 +- .../migrations/015_extenddxccprefix.php | 19 +++++++++++++++++++ install/assets/install.sql | 12 ++++++------ 3 files changed, 26 insertions(+), 7 deletions(-) create mode 100644 application/migrations/015_extenddxccprefix.php diff --git a/application/config/migration.php b/application/config/migration.php index be1022fd..4b5f4a0c 100644 --- a/application/config/migration.php +++ b/application/config/migration.php @@ -21,7 +21,7 @@ $config['migration_enabled'] = TRUE; | be upgraded / downgraded to. | */ -$config['migration_version'] = 14; +$config['migration_version'] = 15; /* |-------------------------------------------------------------------------- diff --git a/application/migrations/015_extenddxccprefix.php b/application/migrations/015_extenddxccprefix.php new file mode 100644 index 00000000..a608616a --- /dev/null +++ b/application/migrations/015_extenddxccprefix.php @@ -0,0 +1,19 @@ +db->query("ALTER TABLE dxcc CHANGE COLUMN `prefix` `prefix` varchar(32) NOT NULL; # was varchar(10) NOT NULL"); + $this->db->query("ALTER TABLE dxcc_entities CHANGE COLUMN `prefix` `prefix` varchar(32) NOT NULL; # was varchar(10) NOT NULL"); + $this->db->query("ALTER TABLE dxcc_exceptions CHANGE COLUMN `call` `call` varchar(32) NOT NULL; # was varchar(10) NOT NULL"); + $this->db->query("ALTER TABLE dxcc_prefixes CHANGE COLUMN `call` `call` varchar(32) NOT NULL; # was varchar(10) NOT NULL"); + } + + public function down(){ + $this->db->query("ALTER TABLE dxcc CHANGE COLUMN `prefix` `prefix` varchar(10) NOT NULL; # was varchar(10) NOT NULL"); + $this->db->query("ALTER TABLE dxcc_entities CHANGE COLUMN `prefix` `prefix` varchar(10) NOT NULL; # was varchar(10) NOT NULL"); + $this->db->query("ALTER TABLE dxcc_exceptions CHANGE COLUMN `call` `call` varchar(10) NOT NULL; # was varchar(10) NOT NULL"); + $this->db->query("ALTER TABLE dxcc_prefixes CHANGE COLUMN `call` `call` varchar(10) NOT NULL; # was varchar(10) NOT NULL"); + } +} diff --git a/install/assets/install.sql b/install/assets/install.sql index 7f461cf5..747e67e4 100755 --- a/install/assets/install.sql +++ b/install/assets/install.sql @@ -115,7 +115,7 @@ CREATE TABLE `contests` ( -- ---------------------------- DROP TABLE IF EXISTS `dxcc`; CREATE TABLE `dxcc` ( - `prefix` varchar(10) NOT NULL, + `prefix` varchar(32) NOT NULL, `name` varchar(150) DEFAULT NULL, `cqz` float NOT NULL, `ituz` float NOT NULL, @@ -3555,7 +3555,7 @@ CREATE TABLE `migrations` ( -- ---------------------------- -- Records of migrations -- ---------------------------- -INSERT INTO `migrations` VALUES ('14'); +INSERT INTO `migrations` VALUES ('15'); -- ---------------------------- -- Table structure for notes @@ -3909,7 +3909,7 @@ INSERT INTO `users` VALUES ('4', 'm0abc', '$2a$08$r9UF3YhipAY6htSQoZRjeOFDx3Yuh7 CREATE TABLE `dxcc_entities` ( `adif` smallint(6) NOT NULL, `name` varchar(150) DEFAULT NULL, - `prefix` varchar(10) NOT NULL, + `prefix` varchar(32) NOT NULL, `cqz` smallint(6) NOT NULL, `ituz` smallint(6) NOT NULL, `cont` varchar(5) NOT NULL, @@ -3921,7 +3921,7 @@ CREATE TABLE `dxcc_entities` ( CREATE TABLE `dxcc_exceptions` ( `record` int(11) NOT NULL, - `call` varchar(10) DEFAULT NULL, + `call` varchar(32) DEFAULT NULL, `entity` varchar(255) NOT NULL, `adif` smallint(6) NOT NULL, `cqz` smallint(6) NOT NULL, @@ -3934,7 +3934,7 @@ CREATE TABLE `dxcc_exceptions` ( CREATE TABLE `dxcc_prefixes` ( `record` int(11) NOT NULL, - `call` varchar(10) DEFAULT NULL, + `call` varchar(32) DEFAULT NULL, `entity` varchar(255) NOT NULL, `adif` smallint(6) NOT NULL, `cqz` smallint(6) NOT NULL, @@ -3961,4 +3961,4 @@ ALTER TABLE `dxcc_exceptions` -- Indexes for table `dxcc_prefixes` -- ALTER TABLE `dxcc_prefixes` - ADD PRIMARY KEY (`record`); \ No newline at end of file + ADD PRIMARY KEY (`record`);