Merge pull request #1977 from AndreasK79/dxcc_identification_fix
[DXCC id] Improved DXCC identification
这个提交包含在:
		
						当前提交
						705da3fd31
					
				
					共有  2 个文件被更改,包括 553 次插入 和 16 次删除
				
			
		|  | @ -0,0 +1,491 @@ | |||
| <?php if ( ! defined('BASEPATH')) exit('No direct script access allowed'); | ||||
| 
 | ||||
| class Calltester extends CI_Controller { | ||||
| 	public function db() { | ||||
|         set_time_limit(3600); | ||||
| 
 | ||||
|         // Starting clock time in seconds
 | ||||
|         $start_time = microtime(true); | ||||
|          | ||||
| 		$this->load->model('logbook_model'); | ||||
| 
 | ||||
|         $sql = 'select distinct col_country, col_call, col_dxcc, date(col_time_on) date from ' . $this->config->item('table_name'); | ||||
|         $query = $this->db->query($sql); | ||||
| 
 | ||||
|         $callarray = $query->result(); | ||||
| 
 | ||||
|         $result = array(); | ||||
|          | ||||
|         $i = 0; | ||||
| 
 | ||||
|         foreach ($callarray as $call) { | ||||
|             $i++; | ||||
|             $dxcc = $this->logbook_model->dxcc_lookup($call->col_call, $call->date); | ||||
| 
 | ||||
|             $dxcc['adif'] = (isset($dxcc['adif'])) ? $dxcc['adif'] : 0; | ||||
|             $dxcc['entity'] = (isset($dxcc['entity'])) ? $dxcc['entity'] : 0; | ||||
|              | ||||
|             if ($call->col_dxcc != $dxcc['adif']) { | ||||
|                 $result[] = array( | ||||
|                                 'Callsign'          => $call->col_call,  | ||||
|                                 'Expected country'  => $call->col_country,  | ||||
|                                 'Expected adif'     => $call->col_dxcc,  | ||||
|                                 'Result country'    => ucwords(strtolower($dxcc['entity']), "- (/"), | ||||
|                                 'Result adif'       => $dxcc['adif'], | ||||
|                             ); | ||||
|             } | ||||
|         } | ||||
|          | ||||
|         // End clock time in seconds
 | ||||
|         $end_time = microtime(true); | ||||
| 
 | ||||
|         // Calculate script execution time
 | ||||
|         $execution_time = ($end_time - $start_time); | ||||
|          | ||||
|         echo " Execution time of script = ".$execution_time." sec <br/>"; | ||||
|         echo $i . " calls tested. <br/>"; | ||||
|         $count = 0; | ||||
| 
 | ||||
|         if ($result) { | ||||
|             $this->array_to_table($result); | ||||
|         } | ||||
|          | ||||
| 	} | ||||
| 
 | ||||
|      | ||||
|     function array_to_table($table) {   | ||||
|         echo '<style> | ||||
|         table { | ||||
|             font-family: Arial, Helvetica, sans-serif; | ||||
|             border-collapse: collapse; | ||||
|             width: 100%; | ||||
|         } | ||||
| 
 | ||||
|         table td, table th { | ||||
|             border: 1px solid #ddd;
 | ||||
|             padding: 4px; | ||||
|         } | ||||
| 
 | ||||
|         table tr:nth-child(even){background-color: #f2f2f2;}
 | ||||
| 
 | ||||
|         table tr:hover {background-color: #ddd;}
 | ||||
| 
 | ||||
|         table th { | ||||
|             padding-top: 4px; | ||||
|             padding-bottom: 4px; | ||||
|             text-align: left; | ||||
|             background-color: #04AA6D;
 | ||||
|             color: white; | ||||
|         } | ||||
|         </style> '; | ||||
| 
 | ||||
|        echo '<table>'; | ||||
|      | ||||
|        // Table header
 | ||||
|         foreach ($table[0] as $key=>$value) { | ||||
|             echo "<th>".$key."</th>"; | ||||
|         } | ||||
|      | ||||
|         // Table body
 | ||||
|         foreach ($table as $value) { | ||||
|             echo "<tr>"; | ||||
|             foreach ($value as $val) { | ||||
|                     echo "<td>".$val."</td>"; | ||||
|             }  | ||||
|             echo "</tr>"; | ||||
|         }  | ||||
|        echo "</table>"; | ||||
|     } | ||||
| 
 | ||||
|     function csv() { | ||||
|         set_time_limit(3600); | ||||
| 
 | ||||
|         // Starting clock time in seconds
 | ||||
|         $start_time = microtime(true); | ||||
|          | ||||
| 		$this->load->model('logbook_model'); | ||||
| 
 | ||||
|         $file = 'uploads/calls.csv'; | ||||
|         $handle = fopen($file,"r"); | ||||
|      | ||||
|         $data = fgetcsv($handle,1000,","); // Skips firsts line, usually that is the header
 | ||||
|         $data = fgetcsv($handle,1000,","); | ||||
|      | ||||
|         $result = array(); | ||||
|          | ||||
|         $i = 0; | ||||
| 
 | ||||
|         do { | ||||
|             if ($data[0]) { | ||||
|                 // COL_CALL,COL_DXCC,COL_TIME_ON
 | ||||
|                 $i++; | ||||
| 
 | ||||
|                 $dxcc = $this->logbook_model->dxcc_lookup($data[0], $data[2]); | ||||
| 
 | ||||
|                 $dxcc['adif'] = (isset($dxcc['adif'])) ? $dxcc['adif'] : 0; | ||||
|                 $dxcc['entity'] = (isset($dxcc['entity'])) ? $dxcc['entity'] : 0; | ||||
| 
 | ||||
|                 $data[1] = $data[1] == "NULL" ? 0 : $data[1]; | ||||
|                  | ||||
|                 if ($data[1] != $dxcc['adif']) { | ||||
|                     $result[] = array( | ||||
|                                     'Callsign'          => $data[0],  | ||||
|                                     'Expected country'  => '',  | ||||
|                                     'Expected adif'     => $data[1],  | ||||
|                                     'Result country'    => ucwords(strtolower($dxcc['entity']), "- (/"), | ||||
|                                     'Result adif'       => $dxcc['adif'], | ||||
|                                 ); | ||||
|                 } | ||||
|             } | ||||
|         } while ($data = fgetcsv($handle,1000,",")); | ||||
| 
 | ||||
|         // End clock time in seconds
 | ||||
|         $end_time = microtime(true); | ||||
| 
 | ||||
|         // Calculate script execution time
 | ||||
|         $execution_time = ($end_time - $start_time); | ||||
|          | ||||
|         echo " Execution time of script = ".$execution_time." sec <br/>"; | ||||
|         echo $i . " calls tested. <br/>"; | ||||
|         $count = 0; | ||||
| 
 | ||||
|         if ($result) { | ||||
|             $this->array_to_table($result); | ||||
|         } | ||||
|     } | ||||
| 
 | ||||
|     /* | ||||
|      * Uses check_dxcc_table - written to check if that function works | ||||
|      */ | ||||
|     function csv2() { | ||||
|         set_time_limit(3600); | ||||
| 
 | ||||
|         // Starting clock time in seconds
 | ||||
|         $start_time = microtime(true); | ||||
|          | ||||
| 		$this->load->model('logbook_model'); | ||||
| 
 | ||||
|         $file = 'uploads/calls.csv'; | ||||
|         $handle = fopen($file,"r"); | ||||
|      | ||||
|         $data = fgetcsv($handle,1000,","); // Skips firsts line, usually that is the header
 | ||||
|         $data = fgetcsv($handle,1000,","); | ||||
|      | ||||
|         $result = array(); | ||||
|          | ||||
|         $i = 0; | ||||
| 
 | ||||
|         do { | ||||
|             if ($data[0]) { | ||||
|                 // COL_CALL,COL_DXCC,COL_TIME_ON
 | ||||
|                 $i++; | ||||
| 
 | ||||
|                 $dxcc = $this->logbook_model->check_dxcc_table($data[0], $data[2]); | ||||
| 
 | ||||
|                 $data[1] = $data[1] == "NULL" ? 0 : $data[1]; | ||||
|                  | ||||
|                 if ($data[1] != $dxcc[0]) { | ||||
|                     $result[] = array( | ||||
|                                     'Callsign'          => $data[0],  | ||||
|                                     'Expected country'  => '',  | ||||
|                                     'Expected adif'     => $data[1],  | ||||
|                                     'Result country'    => ucwords(strtolower($dxcc[1]), "- (/"), | ||||
|                                     'Result adif'       => $dxcc[0], | ||||
|                                 ); | ||||
|                 } | ||||
|             } | ||||
|         } while ($data = fgetcsv($handle,1000,",")); | ||||
| 
 | ||||
|         // End clock time in seconds
 | ||||
|         $end_time = microtime(true); | ||||
| 
 | ||||
|         // Calculate script execution time
 | ||||
|         $execution_time = ($end_time - $start_time); | ||||
|          | ||||
|         echo " Execution time of script = ".$execution_time." sec <br/>"; | ||||
|         echo $i . " calls tested. <br/>"; | ||||
|         $count = 0; | ||||
| 
 | ||||
|         if ($result) { | ||||
|             $this->array_to_table($result); | ||||
|         } | ||||
|     } | ||||
| 
 | ||||
|     function call() { | ||||
|         $testarray = array(); | ||||
| 
 | ||||
|         $testarray[] = array( | ||||
|             'Callsign'  => 'VE3EY/VP9', | ||||
|             'Country'   => 'Bermuda',  | ||||
|             'Adif'      => 64,  | ||||
|             'Date'      => $date = date('Ymd', time()) | ||||
|         ); | ||||
| 
 | ||||
|         $testarray[] = array( | ||||
|             'Callsign'  => 'VP2MDG', | ||||
|             'Country'   => 'Montserrat',  | ||||
|             'Adif'      => 96,  | ||||
|             'Date'      => $date = date('Ymd', time()) | ||||
|         ); | ||||
| 
 | ||||
|         $testarray[] = array( | ||||
|             'Callsign'  => 'VP2EY', | ||||
|             'Country'   => 'Anguilla',  | ||||
|             'Adif'      => 12,  | ||||
|             'Date'      => $date = date('Ymd', time()) | ||||
|         ); | ||||
| 
 | ||||
|         $testarray[] = array( | ||||
|             'Callsign'  => 'VP2VI', | ||||
|             'Country'   => 'British Virgin Islands.',  | ||||
|             'Adif'      => 65,  | ||||
|             'Date'      => $date = date('Ymd', time()) | ||||
|         ); | ||||
| 
 | ||||
|         $testarray[] = array( | ||||
|             'Callsign'  => 'VP2V/AA7V', | ||||
|             'Country'   => 'British Virgin Islands',  | ||||
|             'Adif'      => 65,  | ||||
|             'Date'      => $date = date('Ymd', time()) | ||||
|         ); | ||||
| 
 | ||||
|         $testarray[] = array( | ||||
|             'Callsign'  => 'W8LR/R', | ||||
|             'Country'   => 'United States Of America',  | ||||
|             'Adif'      => 291,  | ||||
|             'Date'      => $date = date('Ymd', time()) | ||||
|         ); | ||||
| 
 | ||||
|         $testarray[] = array( | ||||
|             'Callsign'  => 'SO1FH', | ||||
|             'Country'   => 'Poland',  | ||||
|             'Adif'      => 269,  | ||||
|             'Date'      => $date = date('Ymd', time()) | ||||
|         ); | ||||
| 
 | ||||
|         $testarray[] = array( | ||||
|             'Callsign'  => 'KZ1H/PP', | ||||
|             'Country'   => 'Brazil',  | ||||
|             'Adif'      => 108,  | ||||
|             'Date'      => $date = date('Ymd', time()) | ||||
|         ); | ||||
| 
 | ||||
|         $testarray[] = array( | ||||
|             'Callsign'  => 'K1KW/AM', | ||||
|             'Country'   => 'None',  | ||||
|             'Adif'      => 0,  | ||||
|             'Date'      => $date = date('Ymd', time()) | ||||
|         ); | ||||
| 
 | ||||
|         $testarray[] = array( | ||||
|             'Callsign'  => 'K1KW/MM', | ||||
|             'Country'   => 'None',  | ||||
|             'Adif'      => 0,  | ||||
|             'Date'      => $date = date('Ymd', time()) | ||||
|         ); | ||||
| 
 | ||||
|         $testarray[] = array( | ||||
|             'Callsign'  => 'TF/DL2NWK/P', | ||||
|             'Country'   => 'Iceland',  | ||||
|             'Adif'      => 242,  | ||||
|             'Date'      => $date = date('Ymd', time()) | ||||
|         ); | ||||
| 
 | ||||
|         $testarray[] = array( | ||||
|             'Callsign'  => 'OZ1ALS/A', | ||||
|             'Country'   => 'Denmark',  | ||||
|             'Adif'      => 221,  | ||||
|             'Date'      => $date = date('Ymd', time()) | ||||
|         ); | ||||
| 
 | ||||
|         $testarray[] = array( | ||||
|             'Callsign'  => 'LA1K', | ||||
|             'Country'   => 'Norway',  | ||||
|             'Adif'      => 266,  | ||||
|             'Date'      => $date = date('Ymd', time()) | ||||
|         ); | ||||
| 
 | ||||
|         $testarray[] = array( | ||||
|             'Callsign'  => 'K1KW/M', | ||||
|             'Country'   => 'United States Of America',  | ||||
|             'Adif'      => 291,  | ||||
|             'Date'      => $date = date('Ymd', time()) | ||||
|         ); | ||||
| 
 | ||||
|         $testarray[] = array( | ||||
|             'Callsign'  => 'TF/DL2NWK/M', | ||||
|             'Country'   => 'Iceland',  | ||||
|             'Adif'      => 242,  | ||||
|             'Date'      => $date = date('Ymd', time()) | ||||
|         ); | ||||
| 
 | ||||
|         $testarray[] = array( | ||||
|             'Callsign'  => 'TF/DL2NWK/MM', | ||||
|             'Country'   => 'None',  | ||||
|             'Adif'      => 0,  | ||||
|             'Date'      => $date = date('Ymd', time()) | ||||
|         ); | ||||
| 
 | ||||
|         $testarray[] = array( | ||||
|             'Callsign'  => 'TF/DL2NWK/P', | ||||
|             'Country'   => 'Iceland',  | ||||
|             'Adif'      => 242,  | ||||
|             'Date'      => $date = date('Ymd', time()) | ||||
|         ); | ||||
| 
 | ||||
|         $testarray[] = array( | ||||
|             'Callsign'  => '2M0SQL/P', | ||||
|             'Country'   => 'Scotland',  | ||||
|             'Adif'      => 279,  | ||||
|             'Date'      => $date = date('Ymd', time()) | ||||
|         ); | ||||
| 
 | ||||
|         $testarray[] = array( | ||||
|             'Callsign'  => 'FT8WW', | ||||
|             'Country'   => 'Crozet Island',  | ||||
|             'Adif'      => 41,  | ||||
|             'Date'      => $date = date('Ymd', time()) | ||||
|         ); | ||||
| 
 | ||||
|         $testarray[] = array( | ||||
|             'Callsign'  => 'RV0AL/0/P', | ||||
|             'Country'   => 'Asiatic Russia',  | ||||
|             'Adif'      => 15,  | ||||
|             'Date'      => $date = date('Ymd', time()) | ||||
|         ); | ||||
| 
 | ||||
|         $testarray[] = array( | ||||
|             'Callsign'  => 'OH/DJ1YFK', | ||||
|             'Country'   => 'Finland',  | ||||
|             'Adif'      => 224,  | ||||
|             'Date'      => $date = date('Ymd', time()) | ||||
|         ); | ||||
| 
 | ||||
|         $testarray[] = array( | ||||
|             'Callsign'  => 'N6TR/7', | ||||
|             'Country'   => 'United States Of America',  | ||||
|             'Adif'      => 291,  | ||||
|             'Date'      => $date = date('Ymd', time()) | ||||
|         ); | ||||
| 
 | ||||
|         $testarray[] = array( | ||||
|             'Callsign'  => 'KH0CW', | ||||
|             'Country'   => 'United States Of America',  | ||||
|             'Adif'      => 291,  | ||||
|             'Date'      => $date = date('Ymd', time()) | ||||
|         ); | ||||
| 
 | ||||
|         $testarray[] = array( | ||||
|             'Callsign'  => 'R2FM/P', | ||||
|             'Country'   => 'kaliningrad',  | ||||
|             'Adif'      => 126,  | ||||
|             'Date'      => $date = date('Ymd', time()) | ||||
|         ); | ||||
| 
 | ||||
|         $testarray[] = array( | ||||
|             'Callsign'  => 'R2FM', | ||||
|             'Country'   => 'kaliningrad',  | ||||
|             'Adif'      => 126,  | ||||
|             'Date'      => $date = date('Ymd', time()) | ||||
|         ); | ||||
| 
 | ||||
|         $testarray[] = array( | ||||
|             'Callsign'  => 'FT5XO', | ||||
|             'Country'   => 'Kerguelen Island',  | ||||
|             'Adif'      => 131,  | ||||
|             'Date'      => 20050320 | ||||
|         ); | ||||
| 
 | ||||
|         $testarray[] = array( | ||||
|             'Callsign'  => 'VP8CTR', | ||||
|             'Country'   => 'Antarctica',  | ||||
|             'Adif'      => 13,  | ||||
|             'Date'      => 19970207 | ||||
|         ); | ||||
| 
 | ||||
|         $testarray[] = array( | ||||
|             'Callsign'  => 'FO0AAA', | ||||
|             'Country'   => 'Clipperton',  | ||||
|             'Adif'      => 36,  | ||||
|             'Date'      => '20000302' | ||||
|         ); | ||||
|          | ||||
|         $testarray[] = array( | ||||
|             'Callsign'  => 'CX/PR8KW', | ||||
|             'Country'   => 'Uruguay',  | ||||
|             'Adif'      => 144,  | ||||
|             'Date'      => $date = date('Ymd', time()) | ||||
|         ); | ||||
| 
 | ||||
|         $testarray[] = array( | ||||
|             'Callsign'  => 'IQ3MV/LH', | ||||
|             'Country'   => 'Italy',  | ||||
|             'Adif'      => 248,  | ||||
|             'Date'      => $date = date('Ymd', time()) | ||||
|         ); | ||||
| 
 | ||||
|         $testarray[] = array( | ||||
|             'Callsign'  => 'LA1K/QRP', | ||||
|             'Country'   => 'Norway',  | ||||
|             'Adif'      => 266,  | ||||
|             'Date'      => $date = date('Ymd', time()) | ||||
|         ); | ||||
| 
 | ||||
|         $testarray[] = array( | ||||
|             'Callsign'  => 'LA1K/LGT', | ||||
|             'Country'   => 'Norway',  | ||||
|             'Adif'      => 266,  | ||||
|             'Date'      => $date = date('Ymd', time()) | ||||
|         ); | ||||
| 
 | ||||
|         $testarray[] = array( | ||||
|             'Callsign'  => 'SM1K/LH', | ||||
|             'Country'   => 'Sweden',  | ||||
|             'Adif'      => 284,  | ||||
|             'Date'      => $date = date('Ymd', time()) | ||||
|         ); | ||||
| 
 | ||||
|         set_time_limit(3600); | ||||
| 
 | ||||
|         // Starting clock time in seconds
 | ||||
|         $start_time = microtime(true); | ||||
|          | ||||
| 		$this->load->model('logbook_model'); | ||||
| 
 | ||||
|         $result = array(); | ||||
|          | ||||
|         $i = 0; | ||||
| 
 | ||||
|         foreach ($testarray as $call) { | ||||
|             $i++; | ||||
|             $dxcc = $this->logbook_model->dxcc_lookup($call['Callsign'], $call['Date']); | ||||
| 
 | ||||
|             $dxcc['adif'] = (isset($dxcc['adif'])) ? $dxcc['adif'] : 0; | ||||
|             $dxcc['entity'] = (isset($dxcc['entity'])) ? $dxcc['entity'] : 0; | ||||
|              | ||||
|             if ($call['Adif'] != $dxcc['adif']) { | ||||
|                 $result[] = array( | ||||
|                                 'Callsign'          => $call['Callsign'],  | ||||
|                                 'Expected country'  => $call['Country'],  | ||||
|                                 'Expected adif'     => $call['Adif'],  | ||||
|                                 'Result country'    => ucwords(strtolower($dxcc['entity']), "- (/"), | ||||
|                                 'Result adif'       => $dxcc['adif'], | ||||
|                             ); | ||||
|             } | ||||
|         } | ||||
|          | ||||
|         // End clock time in seconds
 | ||||
|         $end_time = microtime(true); | ||||
| 
 | ||||
|         // Calculate script execution time
 | ||||
|         $execution_time = ($end_time - $start_time); | ||||
|          | ||||
|         echo " Execution time of script = ".$execution_time." sec <br/>"; | ||||
|         echo $i . " calls tested. <br/>"; | ||||
|         $count = 0; | ||||
| 
 | ||||
|         if ($result) { | ||||
|             $this->array_to_table($result); | ||||
|         } | ||||
|     } | ||||
| } | ||||
|  | @ -2907,6 +2907,8 @@ class Logbook_model extends CI_Model { | |||
|      */ | ||||
|     public function check_dxcc_table($call, $date){ | ||||
| 
 | ||||
|     $csadditions = '/^P$|^R$|^A$|^M$/'; | ||||
| 
 | ||||
| 		$dxcc_exceptions = $this->db->select('`entity`, `adif`, `cqz`') | ||||
|              ->where('call', $call) | ||||
|              ->where('(start <= ', $date) | ||||
|  | @ -2923,6 +2925,8 @@ class Logbook_model extends CI_Model { | |||
|       $call = "K"; | ||||
|     } elseif (preg_match('/(^OH\/)|(\/OH[1-9]?$)/', $call)) {   # non-Aland prefix!
 | ||||
|       $call = "OH";                                             # make callsign OH = finland
 | ||||
|     } elseif (preg_match('/(^CX\/)|(\/CX[1-9]?$)/', $call)) {   # non-Antarctica prefix!
 | ||||
|       $call = "CX";                                             # make callsign CX = Uruguay
 | ||||
|     } elseif (preg_match('/(^3D2R)|(^3D2.+\/R)/', $call)) {     # seems to be from Rotuma
 | ||||
|       $call = "3D2/R";                                          # will match with Rotuma
 | ||||
|     } elseif (preg_match('/^3D2C/', $call)) {                   # seems to be from Conway Reef
 | ||||
|  | @ -2934,6 +2938,23 @@ class Logbook_model extends CI_Model { | |||
|     } elseif (preg_match('/(^KG4)[A-Z09]{1}/', $call)) { | ||||
|       $call = "K"; | ||||
| 		} elseif (preg_match('/\w\/\w/', $call)) { | ||||
|       if (preg_match_all('/^((\d|[A-Z])+\/)?((\d|[A-Z]){3,})(\/(\d|[A-Z])+)?(\/(\d|[A-Z])+)?$/', $call, $matches)) { | ||||
|         $prefix = $matches[1][0]; | ||||
|         $callsign = $matches[3][0]; | ||||
|         $suffix = $matches[5][0]; | ||||
|       if ($prefix) { | ||||
|           $prefix = substr($prefix, 0, -1); # Remove the / at the end 
 | ||||
|       } | ||||
|       if ($suffix) { | ||||
|           $suffix = substr($suffix, 1); # Remove the / at the beginning
 | ||||
|       }; | ||||
|       if (preg_match($csadditions, $suffix)) { | ||||
|         if ($prefix) { | ||||
|           $call = $prefix;   | ||||
|         } else { | ||||
|           $call = $callsign; | ||||
|         } | ||||
|       } else { | ||||
|         $result = $this->wpx($call, 1);                       # use the wpx prefix instead
 | ||||
|         if ($result == '') { | ||||
|           $row['adif'] = 0; | ||||
|  | @ -2943,7 +2964,9 @@ class Logbook_model extends CI_Model { | |||
|         } else { | ||||
|           $call = $result . "AA"; | ||||
|         } | ||||
|       } | ||||
|     } | ||||
|   } | ||||
| 
 | ||||
| 		$len = strlen($call); | ||||
| 
 | ||||
|  | @ -2968,19 +2991,21 @@ class Logbook_model extends CI_Model { | |||
|         } | ||||
| 
 | ||||
|         return array("Not Found", "Not Found"); | ||||
|     } | ||||
| 
 | ||||
|   } | ||||
| 
 | ||||
|     public function dxcc_lookup($call, $date){ | ||||
| 
 | ||||
|     $csadditions = '/^P$|^R$|^A$|^M$/'; | ||||
| 
 | ||||
| 		$dxcc_exceptions = $this->db->select('`entity`, `adif`, `cqz`') | ||||
| 				->where('call', $call) | ||||
| 				->where('(start <= CURDATE()') | ||||
| 				->where('(start <= ', $date) | ||||
| 				->or_where('start is null)', NULL, false) | ||||
| 				->where('(end >= CURDATE()') | ||||
| 				->where('(end >= ', $date) | ||||
| 				->or_where('end is null)', NULL, false) | ||||
| 				->get('dxcc_exceptions'); | ||||
| 
 | ||||
| 
 | ||||
| 			if ($dxcc_exceptions->num_rows() > 0){ | ||||
| 				$row = $dxcc_exceptions->row_array(); | ||||
| 				return $row; | ||||
|  | @ -2990,6 +3015,8 @@ class Logbook_model extends CI_Model { | |||
|           $call = "K"; | ||||
|         } elseif (preg_match('/(^OH\/)|(\/OH[1-9]?$)/', $call)) {   # non-Aland prefix!
 | ||||
|           $call = "OH";                                             # make callsign OH = finland
 | ||||
|         } elseif (preg_match('/(^CX\/)|(\/CX[1-9]?$)/', $call)) {   # non-Antarctica prefix!
 | ||||
|           $call = "CX";                                             # make callsign CX = Uruguay
 | ||||
|         } elseif (preg_match('/(^3D2R)|(^3D2.+\/R)/', $call)) {     # seems to be from Rotuma
 | ||||
|           $call = "3D2/R";                                          # will match with Rotuma
 | ||||
|         } elseif (preg_match('/^3D2C/', $call)) {                   # seems to be from Conway Reef
 | ||||
|  | @ -3001,18 +3028,37 @@ class Logbook_model extends CI_Model { | |||
|         } elseif (preg_match('/(^KG4)[A-Z09]{1}/', $call)) { | ||||
|           $call = "K"; | ||||
|         } elseif (preg_match('/\w\/\w/', $call)) { | ||||
|             $result = $this->wpx($call, 1);                       # use the wpx prefix instead
 | ||||
|             if ($result == '') { | ||||
|               $row['adif'] = 0; | ||||
|               $row['entity'] = 'None'; | ||||
|               $row['cqz'] = 0; | ||||
|               $row['long'] = '0'; | ||||
|               $row['lat'] = '0'; | ||||
|               return $row; | ||||
|             } else { | ||||
|               $call = $result . "AA"; | ||||
|           if (preg_match_all('/^((\d|[A-Z])+\/)?((\d|[A-Z]){3,})(\/(\d|[A-Z])+)?(\/(\d|[A-Z])+)?$/', $call, $matches)) { | ||||
|               $prefix = $matches[1][0]; | ||||
|               $callsign = $matches[3][0]; | ||||
|               $suffix = $matches[5][0]; | ||||
|             if ($prefix) { | ||||
|                 $prefix = substr($prefix, 0, -1); # Remove the / at the end 
 | ||||
|             } | ||||
|             if ($suffix) { | ||||
|                 $suffix = substr($suffix, 1); # Remove the / at the beginning
 | ||||
|             }; | ||||
|             if (preg_match($csadditions, $suffix)) { | ||||
|               if ($prefix) { | ||||
|                 $call = $prefix;   | ||||
|               } else { | ||||
|                 $call = $callsign; | ||||
|               } | ||||
|             } else { | ||||
|               $result = $this->wpx($call, 1);                       # use the wpx prefix instead
 | ||||
|               if ($result == '') { | ||||
|                 $row['adif'] = 0; | ||||
|                 $row['entity'] = 'None'; | ||||
|                 $row['cqz'] = 0; | ||||
|                 $row['long'] = '0'; | ||||
|                 $row['lat'] = '0'; | ||||
|                 return $row; | ||||
|               } else { | ||||
|                 $call = $result . "AA"; | ||||
|               } | ||||
|           } | ||||
|     		} | ||||
|       } | ||||
| 
 | ||||
| 				$len = strlen($call); | ||||
| 
 | ||||
|  | @ -3046,8 +3092,8 @@ class Logbook_model extends CI_Model { | |||
|       $b = ''; | ||||
|       $c = ''; | ||||
|    | ||||
|       $lidadditions = '/^QRP|^LGT/'; | ||||
|       $csadditions = '/^P$|^R$|^A$|^M$/'; | ||||
|       $lidadditions = '/^QRP$|^LGT$/'; | ||||
|       $csadditions = '/^P$|^R$|^A$|^M$|^LH$/'; | ||||
|       $noneadditions = '/^MM$|^AM$/'; | ||||
|    | ||||
|       # First check if the call is in the proper format, A/B/C where A and C
 | ||||
|  |  | |||
		正在加载…
	
		在新工单中引用