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); |
|