From 450602cbebf34d02fed2fc3b05570e77794193af Mon Sep 17 00:00:00 2001 From: Daniel Supernault Date: Thu, 15 Aug 2019 21:43:18 -0600 Subject: [PATCH 1/2] Update Import Cities command, shorten country names --- app/Console/Commands/ImportCities.php | 42 ++++++++++++++++++++++++--- 1 file changed, 38 insertions(+), 4 deletions(-) diff --git a/app/Console/Commands/ImportCities.php b/app/Console/Commands/ImportCities.php index 429128698..157e3d416 100644 --- a/app/Console/Commands/ImportCities.php +++ b/app/Console/Commands/ImportCities.php @@ -8,6 +8,29 @@ use Illuminate\Support\Str; class ImportCities extends Command { + protected $countries = [ + 'AE' => 'UAE', + 'BA' => 'Bosnia-Herzegovina', + 'BO' => 'Bolivia', + 'CD' => 'Democratic Republic of Congo', + 'CG' => 'Republic of Congo', + 'FM' => 'Micronesia', + 'GB' => 'United Kingdom', + 'IR' => 'Iran', + 'KP' => 'DRPK', + 'KR' => 'South Korea', + 'LA' => 'Laos', + 'MD' => 'Moldova', + 'PS' => 'Palestine', + 'RU' => 'Russia', + 'SH' => 'Saint Helena', + 'SY' => 'Syria', + 'TW' => 'Taiwan', + 'TZ' => 'Tanzania', + 'US' => 'USA', + 'VE' => 'Venezuela', + 'XK' => 'Kosovo' + ]; /** * The name and signature of the console command. * @@ -41,9 +64,8 @@ class ImportCities extends Command $this->error('Missing storage/app/cities.json file!'); return; } - if (Place::count() > 10) { - $this->error('Cities already imported, aborting operation...'); - return; + if (Place::count() > 0) { + DB::table('places')->truncate(); } $this->info('Importing city data into database ...'); $cities = file_get_contents($path); @@ -55,7 +77,7 @@ class ImportCities extends Command $buffer = []; $count = 0; foreach ($cities as $city) { - $country = $city->country == 'XK' ? 'Kosovo' : (new \League\ISO3166\ISO3166)->alpha2($city->country)['name']; + $country = $this->codeToCountry($city->country); $buffer[] = ["name" => $city->name, "slug" => Str::slug($city->name), "country" => $country, "lat" => $city->lat, "long" => $city->lng]; $count++; if ($count % $this->argument('chunk') == 0) { @@ -75,4 +97,16 @@ class ImportCities extends Command { DB::table('places')->insert($buffer); } + + private function codeToCountry($code) + { + $countries = $this->countries; + if(isset($countries[$code])) { + return $countries[$code]; + } + + $country = (new \League\ISO3166\ISO3166)->alpha2($code); + $this->countries[$code] = $country['name']; + return $this->countries[$code]; + } } From ea023fcf17e1c0bf925e2874335e495fc64747ea Mon Sep 17 00:00:00 2001 From: Daniel Supernault Date: Thu, 15 Aug 2019 21:54:50 -0600 Subject: [PATCH 2/2] Update ImportCities command, check for corrupt or invalid checksum --- app/Console/Commands/ImportCities.php | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/app/Console/Commands/ImportCities.php b/app/Console/Commands/ImportCities.php index 157e3d416..a5f36fcbe 100644 --- a/app/Console/Commands/ImportCities.php +++ b/app/Console/Commands/ImportCities.php @@ -60,6 +60,15 @@ class ImportCities extends Command public function handle() { $path = storage_path('app/cities.json'); + + if(hash_file('sha512', $path) !== 'e203c0247538788b2a91166c7cf4b95f58291d998f514e9306d315aa72b09e48bfd3ddf310bf737afc4eefadca9083b8ff796c67796c6bd8e882a3d268bd16af') { + $this->error('Invalid or corrupt storage/app/cities.json data.'); + $this->line(''); + $this->info('Run the following command to fix:'); + $this->info('git checkout storage/app/cities.json'); + return; + } + if (!is_file($path)) { $this->error('Missing storage/app/cities.json file!'); return;