<?php

// in  utf8
// out utf8

// Retour le nom valide a partir d'un numero nomenclatural

Class NameValid extends DBAccessor {


	var $config;
	
	function NameValid($config) {

		$this->config=$config;
	}
	

	function getElement($uid){

			$value=array();
			
			// Num nomenclatural 
			if (isset($uid[0])) {
				$DB=$this->connectDB($this->config);
			    $query = "SELECT DISTINCT en_nom_genre, en_epithete_espece, en_nom_supra_generique, en_epithete_infra_generique,".
			     	       			"   auteur_bex.enaia_intitule_abrege AS abreviation_auteur_basio_ex ".
        	       			" , auteur_b.enaia_intitule_abrege AS abreviation_auteur_basio ".
        	       			" , auteur_mex.enaia_intitule_abrege AS abreviation_auteur_modif_ex ".
        	       			" , auteur_m.enaia_intitule_abrege AS abreviation_auteur_modif ".
			     " , en_epithete_espece, en_epithete_infra_specifique, enrg_abreviation_rang, b.esn_id_taxon, b.esn_id_nom" .
			     " FROM eflore_nom, eflore_nom_rang," .
			       			"  	  eflore_naturaliste_intitule_abreviation AS auteur_bex ".
        	       			"   , eflore_naturaliste_intitule_abreviation AS auteur_b ".
        	       			"   , eflore_naturaliste_intitule_abreviation AS auteur_mex ".
        	       			"   , eflore_naturaliste_intitule_abreviation AS auteur_m ".
			     " ,eflore_selection_nom a, eflore_selection_nom b".
			     " WHERE a.esn_id_nom= ".$uid[0]. 
			     " AND a.esn_id_version_projet_taxon = 25 ".
			     " AND a.esn_id_taxon=b.esn_id_taxon ".
			     " AND b.esn_ce_statut=3 ".
			     " AND a.esn_id_version_projet_taxon=b.esn_id_version_projet_taxon" .
			     " AND en_ce_rang = enrg_id_rang" .
			     " AND en_id_nom = b.esn_id_nom" .
			     " AND en_ce_auteur_basio_ex = auteur_bex.enaia_id_intitule_naturaliste_abrege ".
       			 " AND en_ce_auteur_basio = auteur_b.enaia_id_intitule_naturaliste_abrege  ".
       			 " AND en_ce_auteur_modif_ex = auteur_mex.enaia_id_intitule_naturaliste_abrege ". 
        	     " AND en_ce_auteur_modif = auteur_m.enaia_id_intitule_naturaliste_abrege ".
			     " AND a.esn_id_version_projet_taxon=en_id_version_projet_nom ";
			     
			}
			else {
				print "[]"; 
            	return ;
			}
		
		    $res =& $DB->query($query);
			    
			    
	        if (DB::isError($res)) {
    	        die($res->getMessage());
        	}

			$value=array("","0","0","Famille inconnue");
  
	        while ($row =& $res->fetchrow(DB_FETCHMODE_ASSOC)) {
	        	$fam=rechercherFamille($row['esn_id_taxon'],$DB);
	        	while (($fam['en_ce_rang']!='fin') && ($fam['en_ce_rang'] !=120)) {
		        	$fam=rechercherFamille($fam['etr_id_taxon_2'],$DB);
	        	}
	        	if ($fam['en_ce_rang']==120) {
	        		$famille=$fam['en_nom_supra_generique'];
	        	}
	        	else {
	        		$famille="Famille inconnue";
	        	} 
	        	 
                $value=array($this->formaterNom($row),$row['esn_id_nom'], $row['esn_id_taxon'],$famille);
    	    }
	                
			
			$json = new Services_JSON();
			$output = $json->encode($value);
			print($output);
		


	}
	
	function getRessource(){
		
			print "[]";
            return;
	}
	
	
	 function formaterNom($rawnom) {
                // Constitution du nom:
                $nom = '';

                if ($rawnom['en_nom_supra_generique'] != '') {
                    $nom .= $rawnom['en_nom_supra_generique'];
                } else if ($rawnom['en_epithete_infra_generique'] != '') {
                    $nom .= $rawnom['en_epithete_infra_generique'];
                } else {
                        if ($rawnom['en_nom_genre'] != '') {
                            $nom .=  $rawnom['en_nom_genre']; 
                        }
                        if ($rawnom['en_epithete_espece']!= '') {
                            $nom .= ' '.$rawnom['en_epithete_espece'];
                        }
                        if ($rawnom['en_epithete_infra_specifique'] != '') {
                                if (!empty($rawnom['enrg_abreviation_rang'])) {
                                        $nom .= ' '.$rawnom['enrg_abreviation_rang'].'';
                                }
                                $nom .= ' '.$rawnom['en_epithete_infra_specifique'];
                        }
                        
                }
                
                return $nom .retournerAuteur($rawnom) ;
	 }
}

function rechercherFamille($taxon,&$DB) {

	$row=array();
		
	$query="SELECT DISTINCT en_ce_rang, etr_id_taxon_2, en_id_nom, en_nom_supra_generique ".
	" FROM eflore_taxon_relation, eflore_selection_nom, eflore_nom ".
	" WHERE etr_id_taxon_1 = ".$taxon.
	" AND etr_id_version_projet_taxon_1 = 25 ".
	" AND etr_id_categorie_taxon = 3 ".
	" AND etr_id_valeur_taxon = 3 ".
	" AND esn_id_taxon =  etr_id_taxon_2 ".
	" AND esn_ce_statut = 3 ".
	" AND esn_id_version_projet_taxon = etr_id_version_projet_taxon_1 ".
	" AND en_id_nom = esn_id_nom ".
	" AND esn_id_version_projet_taxon=en_id_version_projet_nom  ";
	$res =& $DB->query($query);
			    
	if (DB::isError($res)) {
         die($res->getMessage());
   	}
	
	if ($row =& $res->fetchrow(DB_FETCHMODE_ASSOC)) { 
		return $row;
    }
    else {
    	$row['en_ce_rang']='fin';
    	return $row;
    }
    	
}	



	function retournerAuteur($rawnom) {
		$auteurs = '';
		$auteur_basio = '';
		$auteur_modif = '';
		if (!empty($rawnom['abreviation_auteur_basio_ex']) && $rawnom['abreviation_auteur_basio_ex']!='-' )  {
		    $auteur_basio .= $rawnom['abreviation_auteur_basio_ex'];
		    if (!empty($rawnom['abreviation_auteur_basio']) && $rawnom['abreviation_auteur_basio']!='-') {
		        $auteur_basio .= ' ex '.$rawnom['abreviation_auteur_basio'];
		    }
		} else if (!empty($rawnom['abreviation_auteur_basio']) && $rawnom['abreviation_auteur_basio']!='-') {
		    $auteur_basio .= $rawnom['abreviation_auteur_basio'];
		}
		
		if (!empty($rawnom['abreviation_auteur_modif_ex']) && $rawnom['abreviation_auteur_modif_ex']!='-') {
		    $auteur_modif .= $rawnom['abreviation_auteur_modif_ex'];
		    if (!empty($rawnom['abreviation_auteur_modif']) && $rawnom['abreviation_auteur_modif']!='-') {
		        $auteur_modif .= ' ex '.$rawnom['abreviation_auteur_modif'];
		    }
		} else if (!empty($rawnom['abreviation_auteur_modif']) && $rawnom['abreviation_auteur_modif']!='-')  {
		    $auteur_modif .= $rawnom['abreviation_auteur_modif'];
		}
		
		if (!empty($auteur_modif)) {
		    $auteurs = ' ('.$auteur_basio.') '.$auteur_modif;
		} elseif (!empty($auteur_basio)) {
		    $auteurs = ' '.$auteur_basio;
		}
		
		return $auteurs ;
	}	



/* +--Fin du code ---------------------------------------------------------------------------------------+
* $Log$
* Revision 1.4  2008-01-30 08:57:28  ddelon
* fin mise en place mygwt
*
* Revision 1.3  2007-06-06 13:31:16  ddelon
* v0.09
*
* Revision 1.2  2007-05-22 12:54:09  ddelon
* Securisation acces utilisateur
*
*
* 
*/

 
?>
