<?php
/**
 
 David Delon david.delon@clapas.net 2007

 Ce logiciel est r�gi par la licence CeCILL soumise au droit fran�ais et
 respectant les principes de diffusion des logiciels libres. Vous pouvez
 utiliser, modifier et/ou redistribuer ce programme sous les conditions
 de la licence CeCILL telle que diffus�e par le CEA, le CNRS et l'INRIA 
 sur le site "http://www.cecill.info".
 En contrepartie de l'accessibilit� au code source et des droits de copie,
 de modification et de redistribution accord�s par cette licence, il n'est
 offert aux utilisateurs qu'une garantie limit�e.  Pour les m�mes raisons,
 seule une responsabilit� restreinte p�se sur l'auteur du programme,  le
 titulaire des droits patrimoniaux et les conc�dants successifs.

 A cet �gard  l'attention de l'utilisateur est attir�e sur les risques
 associ�s au chargement,  � l'utilisation,  � la modification et/ou au
 d�veloppement et � la reproduction du logiciel par l'utilisateur �tant 
 donn� sa sp�cificit� de logiciel libre, qui peut le rendre complexe � 
 manipuler et qui le r�serve donc � des d�veloppeurs et des professionnels
 avertis poss�dant  des  connaissances  informatiques approfondies.  Les
 utilisateurs sont donc invit�s � charger  et  tester  l'ad�quation  du
 logiciel � leurs besoins dans des conditions permettant d'assurer la
 s�curit� de leurs syst�mes et ou de leurs donn�es et, plus g�n�ralement, 
 � l'utiliser et l'exploiter dans les m�mes conditions de s�curit�. 
                                                                                                      
 Le fait que vous puissiez acc�der � cet en-t�te signifie que vous avez 
 pris connaissance de la licence CeCILL, et que vous en avez accept� les
 termes.
 
 */


// in : utf8
// out : 8859
/*
 * NameImage.php  
 * 
 * Cas d'utilisation :
 * Service recherche d'image a partir d'un numero nomenclatural
 * 
 * 1: Le service recoit un numero nomenclatural
 * 2: Le service calcul le numero taxonomique associe
 * 3: Le service recherche une image disponible pour ce numero taxonomique
 * 4: Le service redimensionne l'image et la renvoie
 */


/** Constante stockant l'URL de la page d'accueil de Photoflora.*/
define('EF_URL_PHOTOFLORA', 'http://photoflora.free.fr/');
/** Constante stockant l'URL de la page de Photoflora affichant toutes les images d'un taxon donn.es.*/
define('EF_URL_PHOTOFLORA_TAXON', EF_URL_PHOTOFLORA.'FiTax.php?NumTaxon=%s');
/** Constante stockant l'URL du dossier de photoflora contenant les images miniatures.*/
define('EF_URL_PHOTOFLORA_IMG_MIN', 'http://www.tela-botanica.org/~photoflo/photos/%s/min/%s');
/** Constante stockant l'URL du dossier de photoflora contenant les images normale.*/
define('EF_URL_PHOTOFLORA_IMG_MAX', 'http://www.tela-botanica.org/~photoflo/photos/%s/max/%s');
/** Constante stockant l'expression r.guli.re r.cup.rant l'abr.viation du photographe et le nom du fichier.*/
define('EF_URL_PHOTOFLORA_REGEXP', '/\/photos\/([^\/]+)\/max\/(.+)$/');
/** Constante stockant l'URL du service XML de Photoflora.*/
define('EF_URL_PHOTOFLORA_SERVICE', EF_URL_PHOTOFLORA.'ef_photoflora.php?nt=%s');



Class NameImage extends DBAccessor  {


	var $config;
	
	function NameImage($config) {

		$this->config=$config;
	}
	

	function getElement($uid){


		// Num nomenclatural 
		$DB=$this->connectDB($this->config);
	    $query = "SELECT DISTINCT b.esn_id_taxon FROM eflore_nom, eflore_nom_rang," .
	     " 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 a.esn_id_version_projet_taxon=en_id_version_projet_nom ";
	     
	    
	        $res =& $DB->query($query);
			    
			    
	        if (DB::isError($res)) {
    	        die($res->getMessage());
        	}

  
	        while ($row =& $res->fetchrow(DB_FETCHMODE_ASSOC)) {
                $nt=$row['esn_id_taxon'];
    	    }
    	    
	     

		$projet_photo = 'photoflora';
		
		$tab_retour[$projet_photo]=chercherIllustrationsServiceXml(sprintf(EF_URL_PHOTOFLORA_SERVICE, $nt));
		
		$value=array('null');
		
		foreach ($tab_retour[$projet_photo] as $cle => $illustration) {
				if (preg_match(EF_URL_PHOTOFLORA_REGEXP, $illustration['about'], $match)) {
					$abreviation = $match[1];
					$fichier = $match[2];
			      	$url_miniature = sprintf(EF_URL_PHOTOFLORA_IMG_MIN, $abreviation, $fichier);;
					
					$value=array($url_miniature);
				// Priorite aux images en png
					if (strstr($fichier, '.png')) {
						break;
					}
				}
		}
		
		$json = new Services_JSON();
		$output = $json->encode($value);
		print($output);
	}
	
}

function chercherIllustrationsServiceXml($url)
{
		return  analyserFichierRdf($url);
}
	
function analyserFichierRdf($chemin)
{
		$aso_info = array();
		$dom = new DOMDocument();
		$dom->validateOnParse = true;
		if (preg_match('/^http:\/\//', $chemin)) {
<<<<<<< NameImage.php
			//@$dom->loadXML(file_get_contents($chemin));
=======
			@$dom->loadXML(file_get_contents($chemin));
>>>>>>> 1.2
		} else {
<<<<<<< NameImage.php
			//@$dom->load($chemin);
=======
			@$dom->load($chemin);
>>>>>>> 1.2
		}
		
		$tab_infos = array();
		foreach ($dom->getElementsByTagNameNS('http://www.w3.org/1999/02/22-rdf-syntax-ns#', 'Description') as $rdf_description) {
			$aso_info['about'] = $rdf_description->getAttribute('about');
			$aso_info['dc:identifier'] = $rdf_description->getAttribute('identifier');
			$aso_info['dc:title'] = utf8_decode($rdf_description->getAttribute('title'));
			$aso_info['dc:creator'] = utf8_decode($rdf_description->getAttribute('creator'));
			$aso_info['dc:contributor'] = utf8_decode($rdf_description->getAttribute('contributor'));
			$aso_info['dc:publisher'] = utf8_decode($rdf_description->getAttribute('publisher'));
			$aso_info['dc:type'] = utf8_decode($rdf_description->getAttribute('type'));
			$aso_info['dc:format'] = utf8_decode($rdf_description->getAttribute('format'));
			if (function_exists('date_default_timezone_set')) {
				date_default_timezone_set('Europe/Paris');
			}
			if (preg_match('/^\d{4}-\d{2}-\d{2} \d{2}:\d{2}:\d{2}$/', $rdf_description->getAttribute('created'))) {
				$aso_info['dcterms:created'] = date('j-m-Y � H:i:s', strtotime($rdf_description->getAttribute('created')));				
			} else {
				$aso_info['dcterms:created'] = $rdf_description->getAttribute('created');
			}
			$aso_info['dcterms:dateSubmitted'] = utf8_decode($rdf_description->getAttribute('dateSubmitted'));
			$aso_info['dcterms:spatial'] = utf8_decode($rdf_description->getAttribute('spatial'));
			$aso_info['dcterms:licence'] = utf8_decode($rdf_description->getAttribute('licence'));
			$tab_infos[$rdf_description->getAttribute('identifier')] = $aso_info; 
		}
		//echo '<pre>'.$chemin.print_r($tab_infos, true).'</pre>';
		return $tab_infos;
}


/* +--Fin du code ---------------------------------------------------------------------------------------+
* $Log$
* Revision 1.3  2008-04-28 13:27:32  ddelon
* Gestion image
*
* Revision 1.2  2008-01-30 08:57:28  ddelon
* fin mise en place mygwt
*
* Revision 1.1  2007-06-06 13:31:16  ddelon
* v0.09
*
*
*
* 
*/

 
?>
