load->view('interface_assets/header', $data); $this->load->view('update/index'); $this->load->view('interface_assets/footer'); } /* * Load the dxcc entities */ public function dxcc_entities() { // Load Database connectors $this->load->model('dxcc_entities'); // Load the cty file $xml_data = simplexml_load_file("updates/cty.xml"); //$xml_data->entities->entity->count(); $count = 0; foreach ($xml_data->entities->entity as $entity) { $startinfo = strtotime($entity->start); $endinfo = strtotime($entity->end); $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( 'prefix' => (string) $entity->call, 'name' => (string) $entity->entity, ); } else { $data = array( '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, 'lat' => (float) $entity->lat, 'start' => $start_date, 'end' => $end_date, ); } $this->db->insert('dxcc_entities', $data); $count += 1; if ($count % 10 == 0) $this->update_status(); } $this->update_status(); return $count; } /* * Load the dxcc exceptions */ public function dxcc_exceptions() { // Load Database connectors $this->load->model('dxcc_exceptions'); // Load the cty file $xml_data = simplexml_load_file("updates/cty.xml"); $count = 0; foreach ($xml_data->exceptions->exception as $record) { $startinfo = strtotime($record->start); $endinfo = strtotime($record->end); $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, 'call' => (string) $record->call, 'entity' => (string) $record->entity, 'adif' => (int) $record->adif, 'cqz' => (int) $record->cqz, 'cont' => (string) $record->cont, 'long' => (float) $record->long, 'lat' => (float) $record->lat, 'start' => $start_date, 'end' => $end_date, ); $this->db->insert('dxcc_exceptions', $data); $count += 1; if ($count % 10 == 0) $this->update_status(); } $this->update_status(); return $count; } /* * Load the dxcc prefixes */ public function dxcc_prefixes() { // Load Database connectors $this->load->model('dxcc_prefixes'); // Load the cty file $xml_data = simplexml_load_file("updates/cty.xml"); $count = 0; foreach ($xml_data->prefixes->prefix as $record) { $startinfo = strtotime($record->start); $endinfo = strtotime($record->end); $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, 'call' => (string) $record->call, 'entity' => (string) $record->entity, 'adif' => (int) $record->adif, 'cqz' => (int) $record->cqz, 'cont' => (string) $record->cont, 'long' => (float) $record->long, 'lat' => (float) $record->lat, 'start' => $start_date, 'end' => $end_date, ); $this->db->insert('dxcc_prefixes', $data); $count += 1; if ($count % 10 == 0) $this->update_status(); } //print("$count prefixes processed"); $this->update_status(); return $count; } // Updates the DXCC & Exceptions from the Club Log Cty.xml file. public function dxcc() { $this->update_status("Downloading file"); // give it 5 minutes... set_time_limit(600); // Load Migration data if any. $this->load->library('migration'); $this->fix_migrations(); $this->migration->latest(); // Download latest file. $url = "https://cdn.clublog.org/cty.php?api=a11c3235cd74b88212ce726857056939d52372bd"; $gz = gzopen($url, 'r'); $data = ""; while (!gzeof($gz)) { $data .= gzgetc($gz); } gzclose($gz); file_put_contents('./updates/cty.xml', $data); // Clear the tables, ready for new data $this->db->empty_table("dxcc_entities"); $this->db->empty_table("dxcc_exceptions"); $this->db->empty_table("dxcc_prefixes"); $this->update_status(); // Parse the three sections of the file and update the tables $this->db->trans_start(); $this->dxcc_entities(); $this->dxcc_exceptions(); $this->dxcc_prefixes(); $this->db->trans_complete(); $this->update_status("DONE"); } public function update_status($done=""){ if ($done != "Downloading file"){ // Check that everything is done? if ($done == ""){ $done = "Updating..."; } $html = $done."
"; $html .= "Dxcc Entities: ".$this->db->count_all('dxcc_entities')."
"; $html .= "Dxcc Exceptions: ".$this->db->count_all('dxcc_exceptions')."
"; $html .= "Dxcc Prefixes: ".$this->db->count_all('dxcc_prefixes')."
"; }else{ $html = $done."....
"; } file_put_contents('./updates/status.html', $html); } private function fix_migrations(){ $res = $this->db->query("select version from migrations"); if ($res->num_rows() >0){ $row = $res->row(); $version = $row->version; if ($version < 7){ $this->db->query("update migrations set version=7"); } } } public function check_missing_dxcc($all = false){ $this->load->model('logbook_model'); $this->logbook_model->check_missing_dxcc_id($all); } public function update_clublog_scp() { $strFile = "./updates/clublog_scp.txt"; $url = "https://cdn.clublog.org/clublog.scp.gz"; set_time_limit(300); $this->update_status("Downloading Club Log SCP file"); $gz = gzopen($url, 'r'); if ($gz) { $data = ""; while (!gzeof($gz)) { $data .= gzgetc($gz); } gzclose($gz); file_put_contents($strFile, $data); if (file_exists($strFile)) { $nCount = count(file($strFile)); if ($nCount > 0) { $this->update_status("DONE: " . number_format($nCount) . " callsigns loaded" ); } else { $this->update_status("FAILED: Empty file"); } } else { $this->update_status("FAILED: Could not create Club Log SCP file locally"); } } else { $this->update_status("FAILED: Could not connect to Club Log"); } } public function download_lotw_users() { $contents = file_get_contents('https://lotw.arrl.org/lotw-user-activity.csv', true); if($contents === FALSE) { echo "something went wrong"; } else { $file = './updates/lotw_users.csv'; if(!is_file($file)){ // Some simple example content. file_put_contents($file, $contents); // Save our content to the file. } echo "LoTW User Data Saved."; } } public function lotw_check() { $f = fopen('./updates/lotw_users.csv', "r"); $result = false; while ($row = fgetcsv($f)) { if ($row[0] == '2M0SQL/MM') { $result = $row[0]; echo "found"; break; } } fclose($f); } } ?>