5633969d98
Carte Leaflet (annuaire Éducation nationale) + API PHP/MySQL : fiche établissement (effectifs, IPS, population INSEE, DPE ADEME), GED documents/photos, commentaires par groupe, gestion utilisateurs et politique de mots de passe. Imports opendata (effectifs, IPS, population, DPE, IRIS). Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
48 lines
1.7 KiB
PHP
48 lines
1.7 KiB
PHP
<?php
|
|
/**
|
|
* Import des DPE ADEME + rattachement aux établissements (super-admin).
|
|
* POST body { dep?: "75", radius?: 80 }
|
|
* → télécharge le dataset DPE tertiaire, remplit « dpe », puis rattache
|
|
* les DPE aux écoles par proximité (table « etab_dpe »).
|
|
*
|
|
* ⚠ Opération longue (le dataset complet ≈ 532 000 DPE) : à réserver à un
|
|
* import ponctuel. Pour de gros volumes, préférez les scripts CLI
|
|
* (php import_dpe.php ; php match_dpe.php). Accès Internet requis côté serveur.
|
|
*/
|
|
declare(strict_types=1);
|
|
require __DIR__ . '/dpe_lib.php';
|
|
|
|
try {
|
|
require_super();
|
|
if ($_SERVER['REQUEST_METHOD'] !== 'POST') {
|
|
json_error('Méthode non supportée.', 405);
|
|
}
|
|
|
|
set_time_limit(0);
|
|
ini_set('memory_limit', '512M');
|
|
|
|
$in = body_json();
|
|
$dep = isset($in['dep']) && $in['dep'] !== '' ? preg_replace('/[^0-9AB]/', '', strtoupper((string) $in['dep'])) : null;
|
|
$radius = isset($in['radius']) ? max(1, min(2000, (int) $in['radius'])) : 5;
|
|
|
|
$pdo = db();
|
|
$imported = dpe_import($pdo, $dep, static fn(string $m) => null);
|
|
$geo = (int) $pdo->query('SELECT COUNT(*) FROM dpe WHERE lat IS NOT NULL')->fetchColumn();
|
|
$match = dpe_match($pdo, $radius, static fn(string $m) => null);
|
|
|
|
json_out([
|
|
'ok' => true,
|
|
'imported' => $imported,
|
|
'geocoded' => $geo,
|
|
'radius' => $radius,
|
|
'links' => $match['pairs'],
|
|
'etabs' => $match['ecoles'],
|
|
'dep' => $dep,
|
|
]);
|
|
} catch (Throwable $e) {
|
|
if (isset($pdo) && $pdo->inTransaction()) {
|
|
$pdo->rollBack();
|
|
}
|
|
json_error('Import DPE : ' . $e->getMessage(), 500);
|
|
}
|