328,14 → 328,14 |
// le cast en string des nombres permet d'unifier le parsing du retour |
// car il n'est destiné qu'à être affiché |
$retour = array( |
'import_obs_ajoutees' => (string)$obs_ajouts, |
'import_images_ajoutees' => (string)$nb_images_ajoutees, |
'import_mots_cles_ajoutes' => (string)$nb_mots_cle_ajoutes, |
'import_obs_ajoutees' => (string)$obs_ajouts, |
'import_images_ajoutees' => (string)$nb_images_ajoutees, |
'import_mots_cles_ajoutes' => (string)$nb_mots_cle_ajoutes, |
'import_colonnes_non_traitees' => implode(', ', $filtre->exclues) |
); |
// Ajout d'éventuelles erreurs |
if ($this->bilan) { |
$retour += array('import_erreurs' => implode("\n", $this->bilan) . "\n"); |
if ($this->bilan) { |
$retour += array('import_erreurs' => implode("\n", $this->bilan) . "\n"); |
} |
// Dans le cas où le client ne sait pas lire le retour d'upload |
// on stocke les stats en session pour les appeler plus tard |
347,20 → 347,20 |
die(); |
} |
|
public function getElement($uid) { |
public function getElement($uid) { |
if($uid[0] == "template") { |
|
$tpl_dir = dirname(__FILE__).DIRECTORY_SEPARATOR.'squelettes'.DIRECTORY_SEPARATOR; |
$tpl = $tpl_dir.'modele_import.xls'; |
|
$lecteur = PHPExcel_IOFactory::createReaderForFile($tpl); |
$classeur_tpl = $lecteur->load($tpl); |
$lecteur = PHPExcel_IOFactory::createReaderForFile($tpl); |
$classeur_tpl = $lecteur->load($tpl); |
$feuille_tpl = $classeur_tpl->getActiveSheet(); |
|
// Détection de la dernière colonne pour connaitre la position d'ajout des champs étendus |
// Si un groupe est demandé |
$lettre_colonne_max = $feuille_tpl->getHighestColumn(); |
$nb_colonne_max = PHPExcel_Cell::columnIndexFromString($lettre_colonne_max); |
$nb_colonne_max = PHPExcel_Cell::columnIndexFromString($lettre_colonne_max); |
$ligne = 1; |
$nb_colonne_en_cours = $nb_colonne_max; |
|
376,7 → 376,7 |
$champ_obl = $feuille_tpl->getCell($lettre_colonne.$ligne)->getValue(); |
|
if(!empty($descriptions[$champ_obl])) { |
$feuille_tpl->getComment($lettre_colonne.$ligne)->getText()->createTextRun($descriptions[$champ_obl]); |
$feuille_tpl->getComment($lettre_colonne.$ligne)->getText()->createTextRun($descriptions[$champ_obl]); |
$feuille_tpl->getComment($lettre_colonne.$ligne)->setWidth(400); |
} |
} |
390,11 → 390,11 |
foreach($champs as $champ) { |
$lettre_colonne = PHPExcel_Cell::stringFromColumnIndex($nb_colonne_en_cours); |
// Les champs étendus sont préfixés par "ext:" pour ne pas être ignoré lors d'un import |
// l'import ignore les noms de colonnes qu'il ne connait pas |
// l'import ignore les noms de colonnes qu'il ne connait pas |
$feuille_tpl->setCellValue($lettre_colonne.$ligne, 'ext:'.$champ['champ']); |
// Ajout de la description dans le commentaire si elle est présente |
if(!empty($descriptions[$champ['champ']])) { |
$feuille_tpl->getComment($lettre_colonne.$ligne)->getText()->createTextRun($descriptions[$champ['champ']]); |
$feuille_tpl->getComment($lettre_colonne.$ligne)->getText()->createTextRun($descriptions[$champ['champ']]); |
$feuille_tpl->getComment($lettre_colonne.$ligne)->setWidth(400); |
} |
|
404,10 → 404,10 |
} |
|
// Seul le format xlsx permet l'association de commentaires de colonnes dans PHPExcel |
// C'est triste mais bon mais c'est trop pratique pour qu'on s'en passe |
header('Content-type: application/vnd.ms-excel'); |
header('Content-Disposition: attachment; filename="'.$nom_fichier.'.xlsx"'); |
$generateur = PHPExcel_IOFactory::createWriter($classeur_tpl, 'Excel2007'); |
// C'est triste mais bon mais c'est trop pratique pour qu'on s'en passe |
header('Content-type: application/vnd.ms-excel'); |
header('Content-Disposition: attachment; filename="'.$nom_fichier.'.xlsx"'); |
$generateur = PHPExcel_IOFactory::createWriter($classeur_tpl, 'Excel2007'); |
$generateur->save('php://output'); |
|
exit; |
432,16 → 432,16 |
return $descriptions; |
} |
|
public function getRessource() { |
return self::getStatsDernierUpload(); |
public function getRessource() { |
return self::getStatsDernierUpload(); |
} |
|
|
static function getStatsDernierUpload() { |
// renvoi des statistiques du dernier envoi de fichier |
// renvoi des statistiques du dernier envoi de fichier |
$stats = !empty($_SESSION['upload_stats']) ? $_SESSION['upload_stats'] : null; |
header("Content-Type: application/json; charset=utf-8"); |
echo json_encode($stats); |
die(); |
echo json_encode($stats); |
die(); |
} |
|
/* detectionEntete() sert deux rôles: |
551,6 → 551,12 |
|
if ($enregistrement = self::chargerLigne($ligne, $dernier_ordre, $cel)) { |
// $enregistrements[] = array_merge($colonnes_statiques, $enregistrement); |
if ($enregistrement['latitude'] == NULL && $enregistrement['longitude'] == NULL) { |
if (isset($enregistrement['_champs_etendus']['latitudeDebutRue'])) { |
$enregistrement['latitude'] = $enregistrement['_champs_etendus']['latitudeDebutRue']; |
$enregistrement['longitude'] = $enregistrement['_champs_etendus']['longitudeDebutRue']; |
} |
} |
$enregistrements[] = $enregistrement; |
$pos = count($enregistrements) - 1; |
$last = &$enregistrements[$pos]; |
581,9 → 587,12 |
'ordre' => $dernier_ordre); |
unset($last['_champs_etendus']); |
} |
|
|
$dernier_ordre++; |
} |
} |
|
return array($enregistrements, $toutes_images, $tous_mots_cle, $tous_champs_etendus); |
} |
|