Subversion Repositories eFlore/Applications.cel

Compare Revisions

Ignore whitespace Rev 2933 → Rev 2934

/branches/v2.25-scarificateur/jrest/services/ImportXLS.php
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);
}