| Line 326... |
Line 326... |
| 326 |
restore_error_handler();
|
326 |
restore_error_handler();
|
| Line 327... |
Line 327... |
| 327 |
|
327 |
|
| 328 |
// le cast en string des nombres permet d'unifier le parsing du retour
|
328 |
// le cast en string des nombres permet d'unifier le parsing du retour
|
| 329 |
// car il n'est destiné qu'à être affiché
|
329 |
// car il n'est destiné qu'à être affiché
|
| 330 |
$retour = array(
|
330 |
$retour = array(
|
| 331 |
'import_obs_ajoutees' => (string)$obs_ajouts,
|
331 |
'import_obs_ajoutees' => (string)$obs_ajouts,
|
| 332 |
'import_images_ajoutees' => (string)$nb_images_ajoutees,
|
332 |
'import_images_ajoutees' => (string)$nb_images_ajoutees,
|
| 333 |
'import_mots_cles_ajoutes' => (string)$nb_mots_cle_ajoutes,
|
333 |
'import_mots_cles_ajoutes' => (string)$nb_mots_cle_ajoutes,
|
| 334 |
'import_colonnes_non_traitees' => implode(', ', $filtre->exclues)
|
334 |
'import_colonnes_non_traitees' => implode(', ', $filtre->exclues)
|
| 335 |
);
|
335 |
);
|
| 336 |
// Ajout d'éventuelles erreurs
|
336 |
// Ajout d'éventuelles erreurs
|
| 337 |
if ($this->bilan) {
|
337 |
if ($this->bilan) {
|
| 338 |
$retour += array('import_erreurs' => implode("\n", $this->bilan) . "\n");
|
338 |
$retour += array('import_erreurs' => implode("\n", $this->bilan) . "\n");
|
| 339 |
}
|
339 |
}
|
| 340 |
// Dans le cas où le client ne sait pas lire le retour d'upload
|
340 |
// Dans le cas où le client ne sait pas lire le retour d'upload
|
| 341 |
// on stocke les stats en session pour les appeler plus tard
|
341 |
// on stocke les stats en session pour les appeler plus tard
|
| 342 |
// car ceci peut poser notamment problème pour les requêtes CORS
|
342 |
// car ceci peut poser notamment problème pour les requêtes CORS
|
| Line 345... |
Line 345... |
| 345 |
// les lire directement après l'upload
|
345 |
// les lire directement après l'upload
|
| 346 |
$this->envoyerJson($retour);
|
346 |
$this->envoyerJson($retour);
|
| 347 |
die();
|
347 |
die();
|
| 348 |
}
|
348 |
}
|
| Line 349... |
Line 349... |
| 349 |
|
349 |
|
| 350 |
public function getElement($uid) {
|
350 |
public function getElement($uid) {
|
| Line 351... |
Line 351... |
| 351 |
if($uid[0] == "template") {
|
351 |
if($uid[0] == "template") {
|
| 352 |
|
352 |
|
| Line 353... |
Line 353... |
| 353 |
$tpl_dir = dirname(__FILE__).DIRECTORY_SEPARATOR.'squelettes'.DIRECTORY_SEPARATOR;
|
353 |
$tpl_dir = dirname(__FILE__).DIRECTORY_SEPARATOR.'squelettes'.DIRECTORY_SEPARATOR;
|
| 354 |
$tpl = $tpl_dir.'modele_import.xls';
|
354 |
$tpl = $tpl_dir.'modele_import.xls';
|
| 355 |
|
355 |
|
| Line 356... |
Line 356... |
| 356 |
$lecteur = PHPExcel_IOFactory::createReaderForFile($tpl);
|
356 |
$lecteur = PHPExcel_IOFactory::createReaderForFile($tpl);
|
| 357 |
$classeur_tpl = $lecteur->load($tpl);
|
357 |
$classeur_tpl = $lecteur->load($tpl);
|
| 358 |
$feuille_tpl = $classeur_tpl->getActiveSheet();
|
358 |
$feuille_tpl = $classeur_tpl->getActiveSheet();
|
| 359 |
|
359 |
|
| 360 |
// Détection de la dernière colonne pour connaitre la position d'ajout des champs étendus
|
360 |
// Détection de la dernière colonne pour connaitre la position d'ajout des champs étendus
|
| 361 |
// Si un groupe est demandé
|
361 |
// Si un groupe est demandé
|
| Line 362... |
Line 362... |
| 362 |
$lettre_colonne_max = $feuille_tpl->getHighestColumn();
|
362 |
$lettre_colonne_max = $feuille_tpl->getHighestColumn();
|
| 363 |
$nb_colonne_max = PHPExcel_Cell::columnIndexFromString($lettre_colonne_max);
|
363 |
$nb_colonne_max = PHPExcel_Cell::columnIndexFromString($lettre_colonne_max);
|
| Line 374... |
Line 374... |
| 374 |
for($i = 0; $i < $nb_colonne_max; $i++) {
|
374 |
for($i = 0; $i < $nb_colonne_max; $i++) {
|
| 375 |
$lettre_colonne = PHPExcel_Cell::stringFromColumnIndex($i);
|
375 |
$lettre_colonne = PHPExcel_Cell::stringFromColumnIndex($i);
|
| 376 |
$champ_obl = $feuille_tpl->getCell($lettre_colonne.$ligne)->getValue();
|
376 |
$champ_obl = $feuille_tpl->getCell($lettre_colonne.$ligne)->getValue();
|
| Line 377... |
Line 377... |
| 377 |
|
377 |
|
| 378 |
if(!empty($descriptions[$champ_obl])) {
|
378 |
if(!empty($descriptions[$champ_obl])) {
|
| 379 |
$feuille_tpl->getComment($lettre_colonne.$ligne)->getText()->createTextRun($descriptions[$champ_obl]);
|
379 |
$feuille_tpl->getComment($lettre_colonne.$ligne)->getText()->createTextRun($descriptions[$champ_obl]);
|
| 380 |
$feuille_tpl->getComment($lettre_colonne.$ligne)->setWidth(400);
|
380 |
$feuille_tpl->getComment($lettre_colonne.$ligne)->setWidth(400);
|
| 381 |
}
|
381 |
}
|
| Line 382... |
Line 382... |
| 382 |
}
|
382 |
}
|
| Line 388... |
Line 388... |
| 388 |
$champs = Cel::db()->requeter($requete);
|
388 |
$champs = Cel::db()->requeter($requete);
|
| Line 389... |
Line 389... |
| 389 |
|
389 |
|
| 390 |
foreach($champs as $champ) {
|
390 |
foreach($champs as $champ) {
|
| 391 |
$lettre_colonne = PHPExcel_Cell::stringFromColumnIndex($nb_colonne_en_cours);
|
391 |
$lettre_colonne = PHPExcel_Cell::stringFromColumnIndex($nb_colonne_en_cours);
|
| 392 |
// Les champs étendus sont préfixés par "ext:" pour ne pas être ignoré lors d'un import
|
392 |
// Les champs étendus sont préfixés par "ext:" pour ne pas être ignoré lors d'un import
|
| 393 |
// l'import ignore les noms de colonnes qu'il ne connait pas
|
393 |
// l'import ignore les noms de colonnes qu'il ne connait pas
|
| 394 |
$feuille_tpl->setCellValue($lettre_colonne.$ligne, 'ext:'.$champ['champ']);
|
394 |
$feuille_tpl->setCellValue($lettre_colonne.$ligne, 'ext:'.$champ['champ']);
|
| 395 |
// Ajout de la description dans le commentaire si elle est présente
|
395 |
// Ajout de la description dans le commentaire si elle est présente
|
| 396 |
if(!empty($descriptions[$champ['champ']])) {
|
396 |
if(!empty($descriptions[$champ['champ']])) {
|
| 397 |
$feuille_tpl->getComment($lettre_colonne.$ligne)->getText()->createTextRun($descriptions[$champ['champ']]);
|
397 |
$feuille_tpl->getComment($lettre_colonne.$ligne)->getText()->createTextRun($descriptions[$champ['champ']]);
|
| 398 |
$feuille_tpl->getComment($lettre_colonne.$ligne)->setWidth(400);
|
398 |
$feuille_tpl->getComment($lettre_colonne.$ligne)->setWidth(400);
|
| Line 399... |
Line 399... |
| 399 |
}
|
399 |
}
|
| 400 |
|
400 |
|
| 401 |
$nb_colonne_en_cours++;
|
401 |
$nb_colonne_en_cours++;
|
| 402 |
}
|
402 |
}
|
| Line 403... |
Line 403... |
| 403 |
$nom_fichier .= '_'.$_GET['groupe'];
|
403 |
$nom_fichier .= '_'.$_GET['groupe'];
|
| 404 |
}
|
404 |
}
|
| 405 |
|
405 |
|
| 406 |
// Seul le format xlsx permet l'association de commentaires de colonnes dans PHPExcel
|
406 |
// Seul le format xlsx permet l'association de commentaires de colonnes dans PHPExcel
|
| 407 |
// C'est triste mais bon mais c'est trop pratique pour qu'on s'en passe
|
407 |
// C'est triste mais bon mais c'est trop pratique pour qu'on s'en passe
|
| 408 |
header('Content-type: application/vnd.ms-excel');
|
408 |
header('Content-type: application/vnd.ms-excel');
|
| Line 409... |
Line 409... |
| 409 |
header('Content-Disposition: attachment; filename="'.$nom_fichier.'.xlsx"');
|
409 |
header('Content-Disposition: attachment; filename="'.$nom_fichier.'.xlsx"');
|
| 410 |
$generateur = PHPExcel_IOFactory::createWriter($classeur_tpl, 'Excel2007');
|
410 |
$generateur = PHPExcel_IOFactory::createWriter($classeur_tpl, 'Excel2007');
|
| 411 |
$generateur->save('php://output');
|
411 |
$generateur->save('php://output');
|
| Line 430... |
Line 430... |
| 430 |
}
|
430 |
}
|
| Line 431... |
Line 431... |
| 431 |
|
431 |
|
| 432 |
return $descriptions;
|
432 |
return $descriptions;
|
| Line 433... |
Line 433... |
| 433 |
}
|
433 |
}
|
| 434 |
|
434 |
|
| 435 |
public function getRessource() {
|
435 |
public function getRessource() {
|
| 436 |
return self::getStatsDernierUpload();
|
436 |
return self::getStatsDernierUpload();
|
| 437 |
}
|
437 |
}
|
| 438 |
|
438 |
|
| 439 |
static function getStatsDernierUpload() {
|
439 |
static function getStatsDernierUpload() {
|
| 440 |
// renvoi des statistiques du dernier envoi de fichier
|
440 |
// renvoi des statistiques du dernier envoi de fichier
|
| 441 |
$stats = !empty($_SESSION['upload_stats']) ? $_SESSION['upload_stats'] : null;
|
441 |
$stats = !empty($_SESSION['upload_stats']) ? $_SESSION['upload_stats'] : null;
|
| 442 |
header("Content-Type: application/json; charset=utf-8");
|
442 |
header("Content-Type: application/json; charset=utf-8");
|
| 443 |
echo json_encode($stats);
|
443 |
echo json_encode($stats);
|
| Line 444... |
Line 444... |
| 444 |
die();
|
444 |
die();
|
| 445 |
}
|
445 |
}
|
| 446 |
|
446 |
|
| Line 549... |
Line 549... |
| 549 |
continue;
|
549 |
continue;
|
| 550 |
}
|
550 |
}
|
| Line 551... |
Line 551... |
| 551 |
|
551 |
|
| 552 |
if ($enregistrement = self::chargerLigne($ligne, $dernier_ordre, $cel)) {
|
552 |
if ($enregistrement = self::chargerLigne($ligne, $dernier_ordre, $cel)) {
|
| - |
|
553 |
// $enregistrements[] = array_merge($colonnes_statiques, $enregistrement);
|
| - |
|
554 |
if ($enregistrement['latitude'] == NULL && $enregistrement['longitude'] == NULL) {
|
| - |
|
555 |
if (isset($enregistrement['_champs_etendus']['latitudeDebutRue'])) {
|
| - |
|
556 |
$enregistrement['latitude'] = $enregistrement['_champs_etendus']['latitudeDebutRue'];
|
| - |
|
557 |
$enregistrement['longitude'] = $enregistrement['_champs_etendus']['longitudeDebutRue'];
|
| - |
|
558 |
}
|
| 553 |
// $enregistrements[] = array_merge($colonnes_statiques, $enregistrement);
|
559 |
}
|
| 554 |
$enregistrements[] = $enregistrement;
|
560 |
$enregistrements[] = $enregistrement;
|
| 555 |
$pos = count($enregistrements) - 1;
|
561 |
$pos = count($enregistrements) - 1;
|
| Line 556... |
Line 562... |
| 556 |
$last = &$enregistrements[$pos];
|
562 |
$last = &$enregistrements[$pos];
|
| Line 579... |
Line 585... |
| 579 |
$tous_champs_etendus[] = array(
|
585 |
$tous_champs_etendus[] = array(
|
| 580 |
'champs_etendus' => $last['_champs_etendus'],
|
586 |
'champs_etendus' => $last['_champs_etendus'],
|
| 581 |
'ordre' => $dernier_ordre);
|
587 |
'ordre' => $dernier_ordre);
|
| 582 |
unset($last['_champs_etendus']);
|
588 |
unset($last['_champs_etendus']);
|
| 583 |
}
|
589 |
}
|
| - |
|
590 |
|
| - |
|
591 |
|
| 584 |
$dernier_ordre++;
|
592 |
$dernier_ordre++;
|
| 585 |
}
|
593 |
}
|
| 586 |
}
|
594 |
}
|
| - |
|
595 |
|
| 587 |
return array($enregistrements, $toutes_images, $tous_mots_cle, $tous_champs_etendus);
|
596 |
return array($enregistrements, $toutes_images, $tous_mots_cle, $tous_champs_etendus);
|
| 588 |
}
|
597 |
}
|
| Line 589... |
Line 598... |
| 589 |
|
598 |
|
| 590 |
static function trierColonnes(&$enregistrements) {
|
599 |
static function trierColonnes(&$enregistrements) {
|