Subversion Repositories eFlore/Applications.cel

Compare Revisions

Ignore whitespace Rev 1321 → Rev 1322

/trunk/jrest/services/InventoryImportExcel.php
68,6 → 68,10
**/
function createElement($pairs) {
 
if(!isset($pairs['utilisateur']) || trim($pairs['utilisateur']) == '') {
echo '0'; exit;
}
if(!isset($_SESSION)) {session_start();}
$this->controleUtilisateur($pairs['utilisateur']);
 
145,8 → 149,8
$i++;
}
while (($this->analyserLigne($line,$i)==LIGNE_NORMALE) && ($i<=$rowcount)) {
$ordre=$this->traiterLigne($line,$i,$pairs['utilisateur']);
if ($ordre>0) {
$id_obs = $this->traiterLigne($line,$i,$pairs['utilisateur']);
if ($this->dernier_ordre > 0) {
$cpt_obs++; // Compteur d'observations crees
}
$i++;
153,7 → 157,7
// On saute les lignes vide ou on traite les lignes suivantes contenant des informations sur image seulement
while ((in_array($retour_analyse=$this->analyserLigne($line,$i),array(LIGNE_IMAGE_SEULEMENT, LIGNE_VIDE))) && ($i<=$rowcount)) {
if ($retour_analyse==LIGNE_IMAGE_SEULEMENT) {
$this->traiterLigneComplement($line,$i,$pairs['utilisateur'],$ordre); // images supplementaires
$this->traiterLigneComplement($line,$i,$pairs['utilisateur'],$id_obs); // images supplementaires
}
else {
// print "vide";
220,11 → 224,13
$info_transmettre = "0";
$info_espece = array('en_id_nom' => '',
'nom_sel' => '',
'nom_sel_nn' => '',
'nom_ret' => '',
'nom_ret_nn' => '',
'nt' => '',
'famille' => ''
);
$info_commune = array('nom' => '', 'code' => '');
foreach ($this->format_observation as $colonne) {
if (isset ($line[$colonne][$i]) && $line[$colonne][$i]!='') {
242,7 → 248,10
$info_milieu = $this->traiterMilieu($line[MILIEU][$i]);
break;
case DEPARTEMENT:
$info_commune['code'] = $this->traiterDepartement($line[DEPARTEMENT][$i]);
$dpt = $this->traiterDepartement($line[DEPARTEMENT][$i]);
if(is_numeric($dpt) && strlen($dpt == 5) && $info_commune['code'] == 'NULL') {
$info_commune['code'] = $dpt;
}
break;
case LATITUDE:
$info_latitude = $this->traiterLatitude($line[LATITUDE][$i]);
333,7 → 342,7
$this->proteger($info_espece['nt']).",".
$this->proteger($info_espece['famille']).",".
$this->proteger($info_commune['nom']).",".
$this->proteger($info_commune['code']).",".
$this->proteger('INSEE-C:'.$info_commune['code']).",".
$this->proteger($info_dateobs).",".
$this->proteger($info_lieudit).",".
$this->proteger($info_station).",".
346,11 → 355,15
$insertion = $this->executer($requete);
$requete_id_obs = 'SELECT id_observation FROM cel_obs WHERE ordre = '.$this->proteger($this->dernier_ordre).' AND ce_utilisateur = '.$this->proteger($utilisateur);
$resultat_id_obs = $this->requeter($requete_id_obs);
$id_obs = $resultat_id_obs[0]['id_observation'];
// creation lien image
foreach ($info_image as $pic) {
$requete_liaison = 'INSERT INTO cel_obs_images (id_image, id_utilisateur, id_observation ) VALUES ('.$this->proteger($pic['id_image']).','.$this->proteger($utilisateur).', '.$this->proteger($this->dernier_ordre).') ON DUPLICATE KEY UPDATE id_image = id_image ';
$requete_liaison = 'INSERT INTO cel_obs_images (id_image, id_utilisateur, id_observation ) VALUES ('.$this->proteger($pic['id_image']).','.$this->proteger($utilisateur).', '.$id_obs.') ON DUPLICATE KEY UPDATE id_image = id_image ';
$liaison = $this->executer($requete_liaison);
if ($liaison !== false) {
$this->cpt_images_liees++;
359,15 → 372,15
}
}
return $this->dernier_ordre;
return $id_obs;
}
 
function traiterLigneComplement($line,$i,$utilisateur, $ordre = null) {
function traiterLigneComplement($line,$i,$utilisateur, $id_obs = null) {
$info_image=$this->traiterImage($line[IMAGE][$i],$utilisateur); // Image separee par des / + utilisateur
// creation lien image
foreach ($info_image as $pic) {
$requete = 'INSERT INTO cel_obs_images (id_image, id_utilisateur, id_observations) VALUES ('.$this->proteger($pic['id_image']).','.$this->proteger($utilisateur).', '.$this->proteger($this->dernier_ordre).') ON DUPLICATE KEY UPDATE id_image = id_image' ;
$requete = 'INSERT INTO cel_obs_images (id_image, id_utilisateur, id_observation) VALUES ('.$this->proteger($pic['id_image']).','.$this->proteger($utilisateur).', '.$this->proteger($id_obs).') ON DUPLICATE KEY UPDATE id_image = id_image' ;
$resultat_liaison = $this->executer($requete);
if ($resultat_liaison !== false) {
$this->cpt_images_liees++;
443,12 → 456,7
 
function traiterDepartement($departement) {
// texte libre
if(is_numeric($departement) && strlen($departement) == 5) {
$departement = substr($departement,0,2);
}
if(is_numeric($departement) && strlen($departement) == 4) {
$departement = substr($departement,0,1);
$departement = "0"+$departement;
}
455,6 → 463,7
if(is_numeric($departement) && $departement <= 9) {
$departement = "0"+$departement;
}
return utf8_encode(trim($departement));
}
 
/trunk/jrest/lib/RechercheInfosTaxon.php
272,7 → 272,7
$requete_presence_taxon = "SELECT ecd_ce_taxon FROM eflore_zg, eflore_chorologie_donnee ".
"WHERE ecd_ce_taxon = ".$this->proteger($num_taxon)." ".
"AND ezg_code=".$this->proteger($code_departement)." ".
"AND ezg_code = ".$this->proteger($code_departement)." ".
"AND ecd_ce_zone_geo = ezg_id_zone_geo ".
"AND ezg_id_projet_zg = ecd_ce_version_projet_zg ".
"AND ecd_ce_version_projet_taxon=25";
287,17 → 287,16
private function decouperNomEtRechercheEspeceOuSousEspece($identifiant_espece) {
$nameparser=new NameParser();
$nom_latin_decoupe=$nameparser->parse($identifiant_espece);
// requete sous espece (on privilegie les noms retenu cf tri par esn_ce_statut)
if (isset($nom_latin_decoupe['infra']) && $nom_latin_decoupe['infra']!="") {
$requete="SELECT DISTINCT en_id_nom, esn_ce_statut" .
" FROM eflore_nom, eflore_nom_rang, eflore_selection_nom " .
" WHERE en_id_version_projet_nom = '25' AND en_nom_genre = '".$this->proteger($nom_latin_decoupe['genus'])."' " .
" AND enrg_abreviation_rang = '".$this->proteger($nom_latin_decoupe['infra_type'])."' " .
" AND en_epithete_infra_specifique = '".$this->proteger($nom_latin_decoupe['infra'])."' " .
" WHERE en_id_version_projet_nom = '25' AND en_nom_genre = ".$this->proteger($nom_latin_decoupe['genus'])." " .
" AND enrg_abreviation_rang = ".$this->proteger($nom_latin_decoupe['infra_type'])." " .
" AND en_epithete_infra_specifique = ".$this->proteger($nom_latin_decoupe['infra'])." " .
" AND esn_id_nom= en_id_nom ".
" AND esn_id_version_projet_taxon=en_id_version_projet_nom " .
" AND en_epithete_espece = '".$this->proteger($nom_latin_decoupe['species'])."' AND en_ce_rang = enrg_id_rang " .
" AND en_epithete_espece = ".$this->proteger($nom_latin_decoupe['species'])." AND en_ce_rang = enrg_id_rang " .
" ORDER BY esn_ce_statut ".
" LIMIT 1";
}
304,11 → 303,11
else { // espece (on privilegie les noms retenu cf tri par esn_ce_statut)
$requete="SELECT DISTINCT en_id_nom, esn_ce_statut" .
" FROM eflore_nom, eflore_nom_rang, eflore_selection_nom " .
" WHERE en_id_version_projet_nom = '25' AND en_nom_genre = '".$this->proteger($nom_latin_decoupe['genus'])."' " .
" WHERE en_id_version_projet_nom = '25' AND en_nom_genre = ".$this->proteger($nom_latin_decoupe['genus'])." " .
" AND enrg_abreviation_rang = 'sp.' " .
" AND esn_id_nom= en_id_nom ".
" AND esn_id_version_projet_taxon=en_id_version_projet_nom " .
" AND en_epithete_espece = '".$this->proteger($nom_latin_decoupe['species'])."' AND en_ce_rang = enrg_id_rang " .
" AND en_epithete_espece = ".$this->proteger($nom_latin_decoupe['species'])." AND en_ce_rang = enrg_id_rang " .
" ORDER BY esn_ce_statut ".
" LIMIT 1";
321,7 → 320,7
$retour = $resultat[0];
}
return $resultat;
return $retour;
}
private function formaterNom($rawnom) {
403,19 → 402,23
if (isset($elements[1])) {
// Numero taxonomique
$infos_taxon = $this->effectuerRequeteInfosComplementairesSurNumTax($elements[1]);
$infos_taxon = $infos_taxon[0];
$retour = array("nom_sel" => $this->formaterNom($infos_taxon), "en_id_nom" => $infos_taxon['en_id_nom']);
} else {
// Nom scientifique
$id_nom = $this->decouperNomEtRechercheEspeceOuSousEspece($identifiant_espece);
// Recherche du nom associe
$infos_nom = $this->effectuerRequeteInfosComplementairesSurNumNom($id_nom['en_id_nom']);
if (is_array($infos_nom) && !empty($infos_nom)) {
$retour = array("nom_sel" => $this->formaterNom($infos_nom), "en_id_nom" => $id_nom['en_id_nom']);
} else {
$retour = array("nom_sel" => $identifiant_espece);
$retour = array("nom_sel" => $identifiant_espece);
if(is_array($id_nom && isset($id_nom['en_id_nom']))) {
$infos_nom = $this->effectuerRequeteInfosComplementairesSurNumNom($id_nom['en_id_nom']);
if (is_array($infos_nom) && !empty($infos_nom)) {
$infos_nom = $infos_nom[0];
$retour = array("nom_sel" => $this->formaterNom($infos_nom), "en_id_nom" => $id_nom['en_id_nom']);
}
}
}
}
return $retour;
}
}