mirror of
https://forge.chapril.org/tykayn/osm-commerces
synced 2025-10-09 17:02:46 +02:00
up prise en compte de tags websites différents
This commit is contained in:
parent
1bde077df6
commit
c46a8304a9
2 changed files with 68 additions and 92 deletions
|
@ -211,113 +211,89 @@ class Place
|
||||||
*/
|
*/
|
||||||
public function update_place_from_overpass_data(array $overpass_data) {
|
public function update_place_from_overpass_data(array $overpass_data) {
|
||||||
|
|
||||||
if ( ! isset($overpass_data['tags']) || $overpass_data['tags'] == null) {
|
if (!isset($overpass_data['tags']) || $overpass_data['tags'] == null) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
$orignal_overpass_data = $overpass_data;
|
|
||||||
|
|
||||||
$overpass_data = array_merge([
|
$tags = $overpass_data['tags'];
|
||||||
'id' => '',
|
|
||||||
'type' => '',
|
|
||||||
'name' => '',
|
|
||||||
'postcode' => '',
|
|
||||||
'email' => '',
|
|
||||||
'opening_hours' => '',
|
|
||||||
'addr:housenumber' => '',
|
|
||||||
'addr:street' => '',
|
|
||||||
'website' => '',
|
|
||||||
'wheelchair' => '',
|
|
||||||
'note' => '',
|
|
||||||
'fixme' => '',
|
|
||||||
], $overpass_data['tags'] );
|
|
||||||
|
|
||||||
|
// Setters for basic properties from top-level of overpass data
|
||||||
|
$this->setOsmId($overpass_data['id'])
|
||||||
|
->setOsmKind($overpass_data['type'])
|
||||||
|
->setLat((float) ($overpass_data['lat'] ?? 0))
|
||||||
|
->setLon((float) ($overpass_data['lon'] ?? 0));
|
||||||
|
|
||||||
$main_tag = $this->guess_main_tag($orignal_overpass_data['tags']);
|
// Setters for metadata
|
||||||
if($main_tag){
|
if (isset($overpass_data['timestamp'])) {
|
||||||
|
try {
|
||||||
|
$this->setOsmDataDate(new \DateTime($overpass_data['timestamp']));
|
||||||
|
} catch (\Exception $e) {
|
||||||
|
// Ignore if date is invalid
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (isset($overpass_data['version'])) {
|
||||||
|
$this->setOsmVersion($overpass_data['version']);
|
||||||
|
}
|
||||||
|
if (isset($overpass_data['user'])) {
|
||||||
|
$this->setOsmUser($overpass_data['user']);
|
||||||
|
}
|
||||||
|
if (isset($overpass_data['uid'])) {
|
||||||
|
$this->setOsmUid($overpass_data['uid']);
|
||||||
|
}
|
||||||
|
if (isset($overpass_data['changeset'])) {
|
||||||
|
$this->setOsmChangeset($overpass_data['changeset']);
|
||||||
|
}
|
||||||
|
|
||||||
|
// Guess main tag
|
||||||
|
$main_tag = $this->guess_main_tag($tags);
|
||||||
|
if ($main_tag) {
|
||||||
$this->setMainTag($main_tag);
|
$this->setMainTag($main_tag);
|
||||||
}
|
}
|
||||||
$this
|
|
||||||
->setOsmId( $orignal_overpass_data['id'])
|
|
||||||
->setOsmKind($orignal_overpass_data['type'] )
|
|
||||||
->setLat((float) $orignal_overpass_data['lat'])
|
|
||||||
->setLon((float) $orignal_overpass_data['lon'])
|
|
||||||
->setName(isset($overpass_data['name']) && $overpass_data['name'] != '' ? $overpass_data['name'] : null);
|
|
||||||
|
|
||||||
// Traiter le timestamp OSM si disponible
|
// Setters from tags
|
||||||
if (isset($orignal_overpass_data['timestamp']) && $orignal_overpass_data['timestamp']) {
|
$this->setName($tags['name'] ?? null);
|
||||||
try {
|
$this->setStreet($tags['addr:street'] ?? $tags['contact:street'] ?? null);
|
||||||
$osmDate = new \DateTime($orignal_overpass_data['timestamp']);
|
$this->setHousenumber($tags['addr:housenumber'] ?? $tags['contact:housenumber'] ?? null);
|
||||||
$this->setOsmDataDate($osmDate);
|
if (isset($tags['addr:postcode'])) {
|
||||||
} catch (\Exception $e) {
|
$this->setZipCode(intval($tags['addr:postcode']));
|
||||||
// En cas d'erreur de parsing de la date, on ignore
|
}
|
||||||
|
$this->setEmail($tags['contact:email'] ?? $tags['email'] ?? null);
|
||||||
|
$this->setSiret($tags['ref:FR:SIRET'] ?? null);
|
||||||
|
|
||||||
|
// Boolean "has" properties
|
||||||
|
$this->setHasOpeningHours(!empty($tags['opening_hours']));
|
||||||
|
$this->setHasWheelchair(!empty($tags['wheelchair']));
|
||||||
|
|
||||||
|
// has address logic
|
||||||
|
$this->setHasAddress(!empty($this->getStreet()) && !empty($this->getHousenumber()));
|
||||||
|
|
||||||
|
// has website logic (with multiple possible tags)
|
||||||
|
$websiteTags = ['website', 'contact:website', 'url', 'contact:url'];
|
||||||
|
$hasWebsite = false;
|
||||||
|
foreach ($websiteTags as $tag) {
|
||||||
|
if (!empty($tags[$tag])) {
|
||||||
|
$hasWebsite = true;
|
||||||
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
$this->setHasWebsite($hasWebsite);
|
||||||
|
|
||||||
// Traiter les autres métadonnées OSM
|
// has note logic
|
||||||
if (isset($orignal_overpass_data['version'])) {
|
|
||||||
$this->setOsmVersion($orignal_overpass_data['version']);
|
|
||||||
}
|
|
||||||
if (isset($orignal_overpass_data['user'])) {
|
|
||||||
$this->setOsmUser($orignal_overpass_data['user']);
|
|
||||||
}
|
|
||||||
if (isset($orignal_overpass_data['uid'])) {
|
|
||||||
$this->setOsmUid($orignal_overpass_data['uid']);
|
|
||||||
}
|
|
||||||
if (isset($orignal_overpass_data['changeset'])) {
|
|
||||||
$this->setOsmChangeset($orignal_overpass_data['changeset']);
|
|
||||||
}
|
|
||||||
|
|
||||||
$mapping = [
|
|
||||||
['key' => 'postcode', 'setter' => 'setZipCode', 'source' => $overpass_data],
|
|
||||||
['key' => 'email', 'setter' => 'setEmail', 'source' => $overpass_data],
|
|
||||||
['key' => 'opening_hours', 'setter' => 'setHasOpeningHours', 'source' => $overpass_data['tags'] ?? []],
|
|
||||||
['key' => 'addr:housenumber', 'setter' => 'setHasAddress', 'source' => $overpass_data['tags'] ?? []],
|
|
||||||
['key' => 'website', 'setter' => 'setHasWebsite', 'source' => $overpass_data['tags'] ?? []],
|
|
||||||
['key' => 'wheelchair', 'setter' => 'setHasWheelchair', 'source' => $overpass_data['tags'] ?? []],
|
|
||||||
['key' => 'siret', 'setter' => 'setSiret', 'source' => $overpass_data['tags'] ?? []],
|
|
||||||
['key' => 'addr:street', 'setter' => 'setStreet', 'source' => $overpass_data['tags'] ?? []],
|
|
||||||
['key' => 'addr:housenumber', 'setter' => 'setHousenumber', 'source' => $overpass_data['tags'] ?? []],
|
|
||||||
];
|
|
||||||
|
|
||||||
foreach ($mapping as $map) {
|
|
||||||
if (isset($map['source'][$map['key']]) && $map['source'][$map['key']] !== '') {
|
|
||||||
$this->{$map['setter']}($map['source'][$map['key']]);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// Traiter les notes et fixme
|
|
||||||
$noteContent = '';
|
$noteContent = '';
|
||||||
$hasNote = false;
|
$hasNote = false;
|
||||||
|
if (!empty($tags['note'])) {
|
||||||
if (isset($orignal_overpass_data['tags']['note']) && $orignal_overpass_data['tags']['note'] !== '') {
|
$noteContent .= $tags['note'];
|
||||||
$noteContent .= $orignal_overpass_data['tags']['note'];
|
|
||||||
$hasNote = true;
|
$hasNote = true;
|
||||||
}
|
}
|
||||||
|
if (!empty($tags['fixme'])) {
|
||||||
if (isset($orignal_overpass_data['tags']['fixme']) && $orignal_overpass_data['tags']['fixme'] !== '') {
|
|
||||||
if ($noteContent !== '') {
|
if ($noteContent !== '') {
|
||||||
$noteContent .= "\n\n";
|
$noteContent .= "\n\n";
|
||||||
}
|
}
|
||||||
$noteContent .= "FIXME: " . $orignal_overpass_data['tags']['fixme'];
|
$noteContent .= "FIXME: " . $tags['fixme'];
|
||||||
$hasNote = true;
|
$hasNote = true;
|
||||||
}
|
}
|
||||||
|
$this->setNoteContent($noteContent ?: null);
|
||||||
$this->setNoteContent($noteContent);
|
|
||||||
$this->setHasNote($hasNote);
|
$this->setHasNote($hasNote);
|
||||||
|
|
||||||
$this
|
|
||||||
// ->setOsmId($overpass_data['id'])
|
|
||||||
// ->setOsmKind($overpass_data['type'])
|
|
||||||
->setName($overpass_data['name'])
|
|
||||||
->setZipCode(\intval($overpass_data['postcode']))
|
|
||||||
->setEmail($overpass_data['email'])
|
|
||||||
// ->setUuidForUrl( Motocultrice::uuid_create_static())
|
|
||||||
// ->setOptedOut(false)
|
|
||||||
// ->setDead(false)
|
|
||||||
->setHasOpeningHours($overpass_data['opening_hours'] ? true : false)
|
|
||||||
->setHasAddress($overpass_data['addr:housenumber'] && $overpass_data['addr:street'] ? true : false)
|
|
||||||
->setHasWebsite($overpass_data['website'] ? true : false)
|
|
||||||
->setHasWheelchair($overpass_data['wheelchair'] and $overpass_data['wheelchair'] != '' ? true : false);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public function __construct()
|
public function __construct()
|
||||||
|
|
|
@ -138,7 +138,7 @@
|
||||||
<div class="col-12">
|
<div class="col-12">
|
||||||
<h2>Statistiques par ville</h2>
|
<h2>Statistiques par ville</h2>
|
||||||
<div class="table-responsive">
|
<div class="table-responsive">
|
||||||
<table class="table table-striped">
|
<table class="table table-striped js-sort-table">
|
||||||
<thead>
|
<thead>
|
||||||
<tr>
|
<tr>
|
||||||
<th>Ville</th>
|
<th>Ville</th>
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue