Subversion Repositories eFlore/Applications.cel

Compare Revisions

Ignore whitespace Rev 1078 → Rev 1079

/branches/v1.5-cisaille/jrest/services/InventoryImportExcel.php
3,10 → 3,6
// In : utf8
// Out : utf8
 
 
// TODO : traiter image multilignes
// TODO : doublons
 
/*
 
Octobre 2010 David Delon.
81,18 → 77,15
function createElement($pairs) {
 
 
$pairs['utilisateur']=$_POST['identifiant'];
session_start();
$pairs['utilisateur']= $_POST['identifiant'];
if(!isset($_SESSION)) {session_start();}
$this->controleUtilisateur($pairs['utilisateur']);
 
 
foreach($_FILES as $file) { // C'est le plus simple
$infos_fichier = $file ;
}
 
 
// Chargement tableau en memoire
// Chargement tableau en memoire
$data = new Spreadsheet_Excel_Reader($infos_fichier['tmp_name'], false); // false : pour menager la memoire.
$arr = array();
 
104,17 → 97,15
exit;
}
 
// Chargement tableau
// Chargement tableau
for($row=1;$row<=$rowcount;$row++)
for($col=1;$col<=$colcount;$col++)
$arr[$col][$row] = $data->val($row,$col,0); // Attention, inversion voulue
// 1 : Traitement intitules
 
// 1 : Traitement intitules
$line = array();
 
/* Les colonnes ne sont pas forcemment dans l'ordre : on les extrait pour traitement futur */
 
/* Les colonnes ne sont pas forcemment dans l'ordre : on les extrait pour traitement futur */
for($col=1;$col<=$colcount;$col++) {
$colonne=strtolower($arr[$col][1]);
$colonne=trim($colonne);
139,30 → 130,12
break;
 
}
}
// print_r($line[COMMUNE]);
// print_r($line[LIEUDIT]);
// print_r($line[STATION]);
// print_r($line[MILIEU]);
// print_r($line[DEPARTEMENT]);
// print_r($line[LATITUDE]);
// print_r($line[LONGITUDE]);
// print_r($line[NOTES]);
// print_r($line[DATEOBS]);
// print_r($line[ESPECE]);
// print_r($line[IMAGE]);
 
// 1 : Traitement lignes
 
}
// 1 : Traitement lignes
$cpt_obs=0;
$cpt_img=0;
 
 
/* Recherche dernier numero d'ordre utilise : pas de mise a jour concurente a priori */
 
 
$DB=$this->connectDB($this->config,'database_cel');
$query="SELECT MAX(ordre) AS ordre FROM cel_inventory WHERE identifiant='".$DB->escapeSimple($pairs['utilisateur'])."' ";
 
179,10 → 152,10
// On saute les eventuelles lignes vides du debut et les lignes contenant des information sur image uniquement
while ((in_array($retour_analyse=$this->analyserLigne($line,$i),array(LIGNE_IMAGE_SEULEMENT, LIGNE_VIDE))) && ($i<=$rowcount)) {
if ($retour_analyse==LIGNE_IMAGE_SEULEMENT) {
// print "image non rattachee a une observation";
// print "image non rattachee a une observation";
}
else {
// print "vide";
// print "vide";
}
$i++;
}
198,13 → 171,11
$this->traiterLigneComplement($line,$i,$pairs['utilisateur'],$ordre); // images supplementaires
}
else {
// print "vide";
// print "vide";
}
$i++;
}
}
}
//print $cpt_obs ." nouvelle(s) observation(s) !";
$message = '';
232,7 → 203,8
$ligne_identique_sauf_image = false;
} else {
if($colonne!= IMAGE && $line[$colonne][$i - 1] != $line[$colonne][$i] && $line[$colonne][$i] != '') {
if($colonne!= IMAGE && isset($line[$colonne]) && isset($line[$colonne][$i - 1]) && isset($line[$colonne][$i])
&& $line[$colonne][$i - 1] != $line[$colonne][$i] && $line[$colonne][$i] != '') {
$ligne_identique_sauf_image = false;
}
}
318,7 → 290,6
switch($colonne) {
case COMMUNE:
$info_commune['name']="000null";
$info_commune['code']="000null";
break;
case LIEUDIT:
$info_lieudit="000null";
330,9 → 301,9
$info_milieu="000null";
break;
case DEPARTEMENT:
/*if (!isset ($info_commune['code']) || $info_commune['code']=='') {
if (!isset ($info_commune['code']) || $info_commune['code']=='') {
$info_commune['code']="000null";
}*/
}
break;
case LATITUDE:
$info_latitude="000null";
340,7 → 311,9
case LONGITUDE:
$info_longitude="000null";
break;
case NOTES:
$info_notes='';
break;
case TRANSMETTRE:
$info_transmettre = "0";
break;
395,8 → 368,6
}
}
 
 
 
return $this->dernier_ordre;
 
 
423,25 → 394,21
}
function traiterCommune($identifiant_commune) { // Recherche correspondance sur nom, si pas unique, correspondance dep. sinon code insee
 
$identifiant_commune=trim($identifiant_commune);
$identifiant_commune=utf8_encode($identifiant_commune); // FIXME : devrait deja etre en utf8 a ce niveau
 
$identifiant_commune=trim($identifiant_commune);
preg_match('/(.*) \(([0-9][0-9]*)\)/',$identifiant_commune,$elements);
 
$identifiant_commune=utf8_encode($identifiant_commune); // FIXME : devrait deja etre en utf8 a ce niveau
$DB=$this->connectDB($this->config,'database_cel'); // FIXME regarder si opportun ici
 
preg_match('/(.*) \(([0-9][0-9]*)\)/',$identifiant_commune,$elements);
 
$DB=$this->connectDB($this->config,'database_cel'); // FIXME regarder si opportun ici
 
if ($elements[1]) { // commune + departement : montpellier (34)
if (isset($elements[1])) { // commune + departement : montpellier (34)
$nom_commune=$elements[1];
$code_commune=$elements[2];
 
$query="SELECT DISTINCT name, code FROM locations WHERE name = '".$DB->escapeSimple($nom_commune)."' AND code ='".$DB->escapeSimple($code_commune)."'";
$query="SELECT DISTINCT name, code FROM locations WHERE name = '".$DB->escapeSimple($nom_commune)."' AND code ='".$DB->escapeSimple($code_commune)."'";
}
else { // Code insee seul
preg_match('/([0-9][0-9]*)|(2A[0-9][0-9]*)|(2B[0-9][0-9]*)/',$identifiant_commune,$elements);
if ($elements[1]) { // code insee commune
if (isset($elements[1])) { // code insee commune
$code_insee_commune=$elements[1];
$query="SELECT DISTINCT name, code FROM locations WHERE insee_code ='".$DB->escapeSimple($code_insee_commune)."'";
}
448,7 → 415,7
else { // Commune seule (le departement sera recupere dans la colonne departement si elle est presente, on prend le risque ici de retourner une mauvaise
// Commune
preg_match('/(.*)/',$identifiant_commune,$elements);
if ($elements[1]) { // commune
if (isset($elements[1])) { // commune
$nom_commune=$elements[1];
$nom_commune=trim($nom_commune);
$nom_commune=utf8_decode($nom_commune);
461,16 → 428,18
}
 
$res =& $DB->query($query);
 
if (DB::isError($res)) {
if (DB::isError($res)) {
die($res->getMessage());
}
 
return $res->fetchrow(DB_FETCHMODE_ASSOC);
 
 
 
$commune_code = $res->fetchrow(DB_FETCHMODE_ASSOC);
// cas de la commune introuvable dans le référentiel
if(!is_array($commune_code) || count($commune_code) == 0) {
$commune_code['name'] = fix_latin($identifiant_commune);
$commune_code['code'] = '000null';
}
return $commune_code;
}
 
function traiterLieudit($lieudit) { // texte libre
502,6 → 471,10
$departement = substr($departement,0,1);
$departement = "0"+$departement;
}
 
if(is_numeric($departement) && $departement <= 9) {
$departement = "0"+$departement;
}
return utf8_encode(trim($departement));
}
 
546,7 → 519,7
 
preg_match('/BDNFFnn([0-9][0-9]*)/',$identifiant_espece,$elements);
if ($elements[1]) { // Numero nomenclatural
if (isset($elements[1])) { // Numero nomenclatural
 
 
// Recherche du nom associe
587,7 → 560,7
else { // Numero taxonomique ou nom scientifique
preg_match('/BDNFFnt([0-9][0-9]*)/',$identifiant_espece,$elements);
if ($elements[1]) { // Numero taxonomique
if (isset($elements[1])) { // Numero taxonomique
$DB=$this->connectDB($this->config);