mirror of
https://forge.chapril.org/tykayn/osm-commerces
synced 2025-10-04 17:04:53 +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) {
|
||||
|
||||
if ( ! isset($overpass_data['tags']) || $overpass_data['tags'] == null) {
|
||||
if (!isset($overpass_data['tags']) || $overpass_data['tags'] == null) {
|
||||
return;
|
||||
}
|
||||
$orignal_overpass_data = $overpass_data;
|
||||
|
||||
$overpass_data = array_merge([
|
||||
'id' => '',
|
||||
'type' => '',
|
||||
'name' => '',
|
||||
'postcode' => '',
|
||||
'email' => '',
|
||||
'opening_hours' => '',
|
||||
'addr:housenumber' => '',
|
||||
'addr:street' => '',
|
||||
'website' => '',
|
||||
'wheelchair' => '',
|
||||
'note' => '',
|
||||
'fixme' => '',
|
||||
], $overpass_data['tags'] );
|
||||
|
||||
|
||||
$main_tag = $this->guess_main_tag($orignal_overpass_data['tags']);
|
||||
if($main_tag){
|
||||
|
||||
$tags = $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));
|
||||
|
||||
// Setters for metadata
|
||||
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
|
||||
->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
|
||||
if (isset($orignal_overpass_data['timestamp']) && $orignal_overpass_data['timestamp']) {
|
||||
try {
|
||||
$osmDate = new \DateTime($orignal_overpass_data['timestamp']);
|
||||
$this->setOsmDataDate($osmDate);
|
||||
} catch (\Exception $e) {
|
||||
// En cas d'erreur de parsing de la date, on ignore
|
||||
|
||||
// Setters from tags
|
||||
$this->setName($tags['name'] ?? null);
|
||||
$this->setStreet($tags['addr:street'] ?? $tags['contact:street'] ?? null);
|
||||
$this->setHousenumber($tags['addr:housenumber'] ?? $tags['contact:housenumber'] ?? null);
|
||||
if (isset($tags['addr:postcode'])) {
|
||||
$this->setZipCode(intval($tags['addr:postcode']));
|
||||
}
|
||||
$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;
|
||||
}
|
||||
}
|
||||
|
||||
// Traiter les autres métadonnées OSM
|
||||
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
|
||||
$this->setHasWebsite($hasWebsite);
|
||||
|
||||
// has note logic
|
||||
$noteContent = '';
|
||||
$hasNote = false;
|
||||
|
||||
if (isset($orignal_overpass_data['tags']['note']) && $orignal_overpass_data['tags']['note'] !== '') {
|
||||
$noteContent .= $orignal_overpass_data['tags']['note'];
|
||||
if (!empty($tags['note'])) {
|
||||
$noteContent .= $tags['note'];
|
||||
$hasNote = true;
|
||||
}
|
||||
|
||||
if (isset($orignal_overpass_data['tags']['fixme']) && $orignal_overpass_data['tags']['fixme'] !== '') {
|
||||
if (!empty($tags['fixme'])) {
|
||||
if ($noteContent !== '') {
|
||||
$noteContent .= "\n\n";
|
||||
}
|
||||
$noteContent .= "FIXME: " . $orignal_overpass_data['tags']['fixme'];
|
||||
$noteContent .= "FIXME: " . $tags['fixme'];
|
||||
$hasNote = true;
|
||||
}
|
||||
|
||||
$this->setNoteContent($noteContent);
|
||||
$this->setNoteContent($noteContent ?: null);
|
||||
$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()
|
||||
|
|
|
@ -138,7 +138,7 @@
|
|||
<div class="col-12">
|
||||
<h2>Statistiques par ville</h2>
|
||||
<div class="table-responsive">
|
||||
<table class="table table-striped">
|
||||
<table class="table table-striped js-sort-table">
|
||||
<thead>
|
||||
<tr>
|
||||
<th>Ville</th>
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue