Line 331... |
Line 331... |
331 |
restore_error_handler();
|
331 |
restore_error_handler();
|
Line 332... |
Line 332... |
332 |
|
332 |
|
333 |
// le cast en string des nombres permet d'unifier le parsing du retour
|
333 |
// le cast en string des nombres permet d'unifier le parsing du retour
|
334 |
// car il n'est destiné qu'à être affiché
|
334 |
// car il n'est destiné qu'à être affiché
|
335 |
$retour = array(
|
335 |
$retour = array(
|
336 |
'import_obs_ajoutees' => (string)$obs_ajouts,
|
336 |
'import_obs_ajoutees' => (string)$obs_ajouts,
|
337 |
'import_images_ajoutees' => (string)$nb_images_ajoutees,
|
337 |
'import_images_ajoutees' => (string)$nb_images_ajoutees,
|
338 |
'import_mots_cles_ajoutes' => (string)$nb_mots_cle_ajoutes,
|
338 |
'import_mots_cles_ajoutes' => (string)$nb_mots_cle_ajoutes,
|
339 |
'import_colonnes_non_traitees' => implode(', ', $filtre->exclues)
|
339 |
'import_colonnes_non_traitees' => implode(', ', $filtre->exclues)
|
340 |
);
|
340 |
);
|
341 |
// Ajout d'éventuelles erreurs
|
341 |
// Ajout d'éventuelles erreurs
|
342 |
if ($this->bilan) {
|
342 |
if ($this->bilan) {
|
343 |
$retour += array('import_erreurs' => implode("\n", $this->bilan) . "\n");
|
343 |
$retour += array('import_erreurs' => implode("\n", $this->bilan) . "\n");
|
344 |
}
|
344 |
}
|
345 |
// Dans le cas où le client ne sait pas lire le retour d'upload
|
345 |
// Dans le cas où le client ne sait pas lire le retour d'upload
|
346 |
// on stocke les stats en session pour les appeler plus tard
|
346 |
// on stocke les stats en session pour les appeler plus tard
|
347 |
// car ceci peut poser notamment problème pour les requêtes CORS
|
347 |
// car ceci peut poser notamment problème pour les requêtes CORS
|
Line 350... |
Line 350... |
350 |
// les lire directement après l'upload
|
350 |
// les lire directement après l'upload
|
351 |
$this->envoyerJson($retour);
|
351 |
$this->envoyerJson($retour);
|
352 |
die();
|
352 |
die();
|
353 |
}
|
353 |
}
|
Line 354... |
Line 354... |
354 |
|
354 |
|
355 |
public function getElement($uid) {
|
355 |
public function getElement($uid) {
|
Line 356... |
Line 356... |
356 |
if($uid[0] == "template") {
|
356 |
if($uid[0] == "template") {
|
357 |
|
357 |
|
Line 358... |
Line 358... |
358 |
$tpl_dir = dirname(__FILE__).DIRECTORY_SEPARATOR.'squelettes'.DIRECTORY_SEPARATOR;
|
358 |
$tpl_dir = dirname(__FILE__).DIRECTORY_SEPARATOR.'squelettes'.DIRECTORY_SEPARATOR;
|
359 |
$tpl = $tpl_dir.'modele_import.xls';
|
359 |
$tpl = $tpl_dir.'modele_import.xls';
|
360 |
|
360 |
|
Line 361... |
Line 361... |
361 |
$lecteur = PHPExcel_IOFactory::createReaderForFile($tpl);
|
361 |
$lecteur = PHPExcel_IOFactory::createReaderForFile($tpl);
|
362 |
$classeur_tpl = $lecteur->load($tpl);
|
362 |
$classeur_tpl = $lecteur->load($tpl);
|
363 |
$feuille_tpl = $classeur_tpl->getActiveSheet();
|
363 |
$feuille_tpl = $classeur_tpl->getActiveSheet();
|
364 |
|
364 |
|
365 |
// Détection de la dernière colonne pour connaitre la position d'ajout des champs étendus
|
365 |
// Détection de la dernière colonne pour connaitre la position d'ajout des champs étendus
|
366 |
// Si un groupe est demandé
|
366 |
// Si un groupe est demandé
|
Line 367... |
Line 367... |
367 |
$lettre_colonne_max = $feuille_tpl->getHighestColumn();
|
367 |
$lettre_colonne_max = $feuille_tpl->getHighestColumn();
|
368 |
$nb_colonne_max = PHPExcel_Cell::columnIndexFromString($lettre_colonne_max);
|
368 |
$nb_colonne_max = PHPExcel_Cell::columnIndexFromString($lettre_colonne_max);
|
Line 379... |
Line 379... |
379 |
for($i = 0; $i < $nb_colonne_max; $i++) {
|
379 |
for($i = 0; $i < $nb_colonne_max; $i++) {
|
380 |
$lettre_colonne = PHPExcel_Cell::stringFromColumnIndex($i);
|
380 |
$lettre_colonne = PHPExcel_Cell::stringFromColumnIndex($i);
|
381 |
$champ_obl = $feuille_tpl->getCell($lettre_colonne.$ligne)->getValue();
|
381 |
$champ_obl = $feuille_tpl->getCell($lettre_colonne.$ligne)->getValue();
|
Line 382... |
Line 382... |
382 |
|
382 |
|
383 |
if(!empty($descriptions[$champ_obl])) {
|
383 |
if(!empty($descriptions[$champ_obl])) {
|
384 |
$feuille_tpl->getComment($lettre_colonne.$ligne)->getText()->createTextRun($descriptions[$champ_obl]);
|
384 |
$feuille_tpl->getComment($lettre_colonne.$ligne)->getText()->createTextRun($descriptions[$champ_obl]);
|
385 |
$feuille_tpl->getComment($lettre_colonne.$ligne)->setWidth(400);
|
385 |
$feuille_tpl->getComment($lettre_colonne.$ligne)->setWidth(400);
|
386 |
}
|
386 |
}
|
Line 387... |
Line 387... |
387 |
}
|
387 |
}
|
Line 393... |
Line 393... |
393 |
$champs = Cel::db()->requeter($requete);
|
393 |
$champs = Cel::db()->requeter($requete);
|
Line 394... |
Line 394... |
394 |
|
394 |
|
395 |
foreach($champs as $champ) {
|
395 |
foreach($champs as $champ) {
|
396 |
$lettre_colonne = PHPExcel_Cell::stringFromColumnIndex($nb_colonne_en_cours);
|
396 |
$lettre_colonne = PHPExcel_Cell::stringFromColumnIndex($nb_colonne_en_cours);
|
397 |
// Les champs étendus sont préfixés par "ext:" pour ne pas être ignoré lors d'un import
|
397 |
// Les champs étendus sont préfixés par "ext:" pour ne pas être ignoré lors d'un import
|
398 |
// l'import ignore les noms de colonnes qu'il ne connait pas
|
398 |
// l'import ignore les noms de colonnes qu'il ne connait pas
|
399 |
$feuille_tpl->setCellValue($lettre_colonne.$ligne, 'ext:'.$champ['champ']);
|
399 |
$feuille_tpl->setCellValue($lettre_colonne.$ligne, 'ext:'.$champ['champ']);
|
400 |
// Ajout de la description dans le commentaire si elle est présente
|
400 |
// Ajout de la description dans le commentaire si elle est présente
|
401 |
if(!empty($descriptions[$champ['champ']])) {
|
401 |
if(!empty($descriptions[$champ['champ']])) {
|
402 |
$feuille_tpl->getComment($lettre_colonne.$ligne)->getText()->createTextRun($descriptions[$champ['champ']]);
|
402 |
$feuille_tpl->getComment($lettre_colonne.$ligne)->getText()->createTextRun($descriptions[$champ['champ']]);
|
403 |
$feuille_tpl->getComment($lettre_colonne.$ligne)->setWidth(400);
|
403 |
$feuille_tpl->getComment($lettre_colonne.$ligne)->setWidth(400);
|
Line 404... |
Line 404... |
404 |
}
|
404 |
}
|
405 |
|
405 |
|
406 |
$nb_colonne_en_cours++;
|
406 |
$nb_colonne_en_cours++;
|
407 |
}
|
407 |
}
|
Line 408... |
Line 408... |
408 |
$nom_fichier .= '_'.$_GET['groupe'];
|
408 |
$nom_fichier .= '_'.$_GET['groupe'];
|
409 |
}
|
409 |
}
|
410 |
|
410 |
|
411 |
// Seul le format xlsx permet l'association de commentaires de colonnes dans PHPExcel
|
411 |
// Seul le format xlsx permet l'association de commentaires de colonnes dans PHPExcel
|
412 |
// C'est triste mais bon mais c'est trop pratique pour qu'on s'en passe
|
412 |
// C'est triste mais bon mais c'est trop pratique pour qu'on s'en passe
|
413 |
header('Content-type: application/vnd.ms-excel');
|
413 |
header('Content-type: application/vnd.ms-excel');
|
Line 414... |
Line 414... |
414 |
header('Content-Disposition: attachment; filename="'.$nom_fichier.'.xlsx"');
|
414 |
header('Content-Disposition: attachment; filename="'.$nom_fichier.'.xlsx"');
|
415 |
$generateur = PHPExcel_IOFactory::createWriter($classeur_tpl, 'Excel2007');
|
415 |
$generateur = PHPExcel_IOFactory::createWriter($classeur_tpl, 'Excel2007');
|
416 |
$generateur->save('php://output');
|
416 |
$generateur->save('php://output');
|
Line 435... |
Line 435... |
435 |
}
|
435 |
}
|
Line 436... |
Line 436... |
436 |
|
436 |
|
437 |
return $descriptions;
|
437 |
return $descriptions;
|
Line 438... |
Line 438... |
438 |
}
|
438 |
}
|
439 |
|
439 |
|
440 |
public function getRessource() {
|
440 |
public function getRessource() {
|
441 |
return self::getStatsDernierUpload();
|
441 |
return self::getStatsDernierUpload();
|
442 |
}
|
442 |
}
|
443 |
|
443 |
|
444 |
static function getStatsDernierUpload() {
|
444 |
static function getStatsDernierUpload() {
|
445 |
// renvoi des statistiques du dernier envoi de fichier
|
445 |
// renvoi des statistiques du dernier envoi de fichier
|
446 |
$stats = !empty($_SESSION['upload_stats']) ? $_SESSION['upload_stats'] : null;
|
446 |
$stats = !empty($_SESSION['upload_stats']) ? $_SESSION['upload_stats'] : null;
|
447 |
header("Content-Type: application/json; charset=utf-8");
|
447 |
header("Content-Type: application/json; charset=utf-8");
|
448 |
echo json_encode($stats);
|
448 |
echo json_encode($stats);
|
Line 449... |
Line 449... |
449 |
die();
|
449 |
die();
|
450 |
}
|
450 |
}
|
451 |
|
451 |
|
Line 1129... |
Line 1129... |
1129 |
// XXX: insère t'on des valeurs vides ?
|
1129 |
// XXX: insère t'on des valeurs vides ?
|
1130 |
$valeur = $champ;
|
1130 |
$valeur = $champ;
|
1131 |
$cle = $label;
|
1131 |
$cle = $label;
|
Line 1132... |
Line 1132... |
1132 |
|
1132 |
|
1133 |
if (!empty($cle) && !empty($valeur)) {
|
1133 |
if (!empty($cle) && !empty($valeur)) {
|
1134 |
$champ_etendu_a_inserer = new ChampEtendu();
|
1134 |
$champ_etendu_a_inserer = new ObsEtendue();
|
1135 |
$champ_etendu_a_inserer->id = $id_obs;
|
1135 |
$champ_etendu_a_inserer->id = $id_obs;
|
1136 |
$champ_etendu_a_inserer->cle = $cle;
|
1136 |
$champ_etendu_a_inserer->cle = $cle;
|
Line 1137... |
Line 1137... |
1137 |
$champ_etendu_a_inserer->valeur = $valeur;
|
1137 |
$champ_etendu_a_inserer->valeur = $valeur;
|