75 lines
1.8 KiB
PHP
75 lines
1.8 KiB
PHP
<?php
|
|
if (php_sapi_name()!='cli') {
|
|
die('ERROR: This script is only for command line.');
|
|
}
|
|
|
|
if (!file_exists(__DIR__ . '/../config.php')) {
|
|
die("ERROR \nKyselo not installed.\n");
|
|
}
|
|
$config = require __DIR__ . '/../config.php';
|
|
|
|
if (empty($argv[1])) {
|
|
die("ERROR \nBad import parameters. \nPlease specifiy: \n- GEOJSON file\n");
|
|
}
|
|
|
|
if (!file_exists($argv[1])) {
|
|
die("ERROR \nCannot open file: " . $argv[1] . "\n");
|
|
}
|
|
|
|
$json = file_get_contents($argv[1]);
|
|
$data = json_decode($json, true);
|
|
|
|
spl_autoload_register(function ($class){
|
|
require __DIR__ . '/../lib/' . str_replace('\\', '/', $class) . '.php';
|
|
});
|
|
|
|
$rows = new \severak\database\rows(new PDO('sqlite:' . __DIR__ . '/../' . $config['database']));
|
|
|
|
if ($data['type']=='FeatureCollection') {
|
|
foreach ($data['features'] as $feat) {
|
|
|
|
|
|
$poi = [
|
|
'slug' => slugify($feat['properties']['name']),
|
|
'name' => $feat['properties']['name'],
|
|
'description' => '',
|
|
'internal' => '',
|
|
'cheatsheet' => $feat['properties']['description'],
|
|
'lon' => $feat['geometry']['coordinates'][0],
|
|
'lat' => $feat['geometry']['coordinates'][1],
|
|
];
|
|
|
|
$rows->insert('poi', $poi);
|
|
}
|
|
}
|
|
|
|
echo 'OK';
|
|
|
|
|
|
function slugify($text, $divider = '-')
|
|
{
|
|
// replace non letter or digits by divider
|
|
$text = preg_replace('~[^\pL\d]+~u', $divider, $text);
|
|
|
|
// transliterate
|
|
$text = iconv('utf-8', 'us-ascii//TRANSLIT', $text);
|
|
|
|
// remove unwanted characters
|
|
$text = preg_replace('~[^-\w]+~', '', $text);
|
|
|
|
// trim
|
|
$text = trim($text, $divider);
|
|
|
|
// remove duplicate divider
|
|
$text = preg_replace('~-+~', $divider, $text);
|
|
|
|
// lowercase
|
|
$text = strtolower($text);
|
|
|
|
if (empty($text)) {
|
|
return 'n-a';
|
|
}
|
|
|
|
return $text;
|
|
}
|