$v) $row[] = $v; } if(($rowNo % 10) == 0) echo '.'; // Progress bar :) if(!is_numeric($row[0])) throw new Exception("First parameter must be numeric"); // Action according to first parameter switch((int) $row[0]) { // ChangeLog header case 0: if($row[1] != 'UIR-ADR') throw new Exception("Change log is for '{$row[1]}' application, not for UIR-ADR"); if($row[2] != 4) throw new Exception("Change log version {$row[2]} is not supported"); $version1 = $row[3]; $version2 = $row[4]; echo "Importing version $version1.$version2\n"; $dataVersion = $row[5]; $dataVersionZSJ = $row[6]; $dataVersionClosed = parseDate($row[7]); $hasHeader = true; // Connect to MySQL database if(!dbConnect()) throw new Exception("Unable to connect to database"); // Check for version $row2 = mfo(q("select * from `verze` where `ver_cislo`='$dataVersion'")); if($row2) { if($row2->cas_uzav) throw new Exception("Version $dataVersion is already imported and closed"); } else { // Not in DB, try previous version $v2 = $dataVersion - 1; if(!mfo(q("select * from `verze` where `ver_cislo`='$v2'"))) throw new Exception("Verze $dataVersion neleze naimportovat, v databazi nam chybi $v2"); } break; // Okres case 1: $fields = array(1 => 'okres_kod', 'nazev', 'zkratka', 'stav', 'vznik_dne', 'vznik_info', 'zanik_dne', 'zanik_info', 'nuts4', 'kraj_kod'); importRow('okres', $row, $fields); break; // Okres - history case 2: $fields = array(1 => 'okres_kod', 'plati_do', 'nazev', 'zkratka', 'info', 'nuts4', 'kraj_kod'); importRow('okres_h', $row, $fields); break; // Obec case 3: $fields = array(1 => 'obec_kod', 'okres_kod', 'nazev', 'zkratka', 'stav', 'vznik_dne', 'vznik_info', 'zanik_dne', 'zanik_info', 'nuts5', 'pou_kod'); importRow('obec', $row, $fields); break; // Obec - history case 4: $fields = array(1 => 'obec_kod', 'plati_do', 'okres_kod', 'nazev', 'zkratka', 'info', 'nuts5', 'pou_kod'); importRow('obec_h', $row, $fields); break; // Cast obce case 5: $fields = array(1 => 'cobce_kod', 'obec_kod', 'nazev', 'zkratka', 'stav', 'vznik_dne', 'vznik_info', 'zanik_dne', 'zanik_info'); importRow('cobce', $row, $fields); break; // Cast obce - history case 6: $fields = array(1 => 'cobce_kod', 'plati_do', 'obec_kod', 'nazev', 'zkratka', 'info'); importRow('cobce_h', $row, $fields); break; // Ulice case 7: $fields = array(1 => 'ulice_kod', 'obec_kod', 'nazev', 'zkratka', 'stav', 'vznik_dne', 'vznik_info', 'zanik_dne', 'zanik_info'); importRow('ulice', $row, $fields); break; // Ulice - history case 8: $fields = array(1 => 'ulice_kod', 'plati_do', 'obec_kod', 'nazev', 'zkratka', 'info'); importRow('ulice_h', $row, $fields); break; // Objekt case 9: $fields = array(1 => 'objekt_kod', 'cobce_kod', 'cisdom_typ', 'cisdom_hod', 'stav', 'vznik_dne', 'vznik_info', 'zanik_dne', 'zanik_info', 'mcast_kod', 'idob'); importRow('objekt', $row, $fields); break; // Objekt - history case 10: $fields = array(1 => 'objekt_kod', 'plati_do', 'cobce_kod', 'cisdom_typ', 'cisdom_hod', 'info', 'mcast_kod'); importRow('objekt_h', $row, $fields); break; // Adresa case 11: $fields = array(1 => 'adresa_kod', 'objekt_kod', 'ulice_kod', 'cisor_hod', 'cisor_pis', 'psc', 'stav', 'vznik_dne', 'vznik_info', 'zanik_dne', 'zanik_info', 'pcd', 'x', 'y'); importRow('adresa', $row, $fields); break; // Adresa - history case 12: $fields = array(1 => 'adresa_kod', 'plati_do', 'objekt_kod', 'ulice_kod', 'cisor_hod', 'cisor_pis', 'psc', 'info'); importRow('adresa_h', $row, $fields); break; // Posta case 13: $fields = array(1 => 'psc', 'nazev', 'zkratka', 'stav', 'vznik_dne', 'vznik_info', 'zanik_dne', 'zanik_info'); importRow('posta', $row, $fields); break; // Posta - history case 14: $fields = array(1 => 'psc', 'plati_do', 'nazev', 'zkratka', 'info'); importRow('ulice_h', $row, $fields); break; // Prazsky obvod, mestska cast case 15: case 16: case 17: case 18: // Skip break; // Oblast case 19: $fields = array(1 => 'oblast_kod', 'nuts2', 'nazev', 'zkratka', 'stav', 'vznik_dne', 'vznik_info', 'zanik_dne', 'zanik_info'); importRow('oblast', $row, $fields); break; // Oblast - history case 20: $fields = array(1 => 'oblast_kod', 'plati_do', 'nuts2', 'nazev', 'zkratka', 'info'); importRow('oblast_h', $row, $fields); break; // Kraj case 21: $fields = array(1 => 'kraj_kod', 'nuts3', 'oblast_kod', 'nazev', 'zkratka', 'stav', 'vznik_dne', 'vznik_info', 'zanik_dne', 'zanik_info'); importRow('kraj', $row, $fields); break; // Kraj - history case 22: $fields = array(1 => 'kraj_kod', 'plati_do', 'nuts3', 'oblast_kod', 'nazev', 'zkratka', 'info'); importRow('kraj_h', $row, $fields); break; // Spravni obvody, NUTS4 obvody, Obec s rozsirenou pusobnosti, obec s poverenym uradem case 23: case 24: case 25: case 26: case 27: case 28: case 29: case 30: // Skip break; // Kontaktni udaje na obec (obec_d) case 54: // Skip break; // Vazba (cobce x ulice....) case 55: $fields = array(1 => 'vazba_id', 'mcast_kod', 'cobce_kod', 'ulice_kod', 'psc'); importRow('vazba', $row, $fields); break; // cob_prev - prevod mezi kody obci case 56: // Skip break; // Konec souboru case 999: $finished = true; echo "\nImport is complete, CRC is $crc\n"; // Update DB state q("REPLACE INTO `verze` SET `ver_cislo`='$dataVersion', `ver_zsj`='$dataVersionZSJ', `cas_uzav`='$dataVersionClosed'"); break; default: echo "Unknown row: "; print_r($row);echo "\n\n"; } // Update CRC // TODO: dodelat } echo "---------------------------------------\n\n";