Subversion Repositories eFlore/Applications.cel

Rev

Go to most recent revision | Details | Last modification | View Log | RSS feed

Rev Author Line No. Line
416 aurelien 1
<?php
871 aurelien 2
// ATTENTION ! Classe compatible uniquement avec nouveau format de bdd du cel //
3
 
416 aurelien 4
/**
5
* PHP Version 5
6
*
7
* Retourne un RDF des images pour eflore
8
*
9
* @category  PHP
10
* @package   jrest
881 aurelien 11
* @author    david <david@tela-botanica.org>
416 aurelien 12
* @copyright 2010 Tela-Botanica
13
* @license   http://www.cecill.info/licences/Licence_CeCILL_V2-fr.txt Licence CECILL
14
* @version   SVN: <svn_id>
15
* @link      /doc/jrest/
16
*/
871 aurelien 17
class ImageRDF extends Cel {
416 aurelien 18
 
19
	/**
20
	 * Recherche des images associee au numero nomenclatural
21
	 * @param numeric $uid [0] : numero nomenclatural obligatoire , $uid[1] (optionnel) : taille image : S , M,  L (default)
871 aurelien 22
	 */
416 aurelien 23
	function getElement($uid){
24
 
871 aurelien 25
		// TODO : recherche taxon ?
416 aurelien 26
		// Taille
27
		if (isset($uid[1])) {
628 jpm 28
			$taille = $uid[1]; // S , M ou L
416 aurelien 29
		}
30
		else {
628 jpm 31
			$taille = 'L';
416 aurelien 32
		}
33
 
871 aurelien 34
        // Recherche de toutes les observations transmises du taxon pour lesquelles une photo est associee.
35
        $requete_obs_publiques_images_taxon = 'SELECT * FROM cel_obs, cel_obs_images, cel_images '.
1765 raphael 36
        		' WHERE cel_obs.nom_sel_nn = '.Cel::db()->proteger($uid[0]).
871 aurelien 37
        		' AND cel_obs_images.id_observation = cel_obs.id_observation '.
872 aurelien 38
				' AND cel_obs.transmission =  1 '.
871 aurelien 39
				' AND cel_images.id_image = cel_obs_images.id_image';
416 aurelien 40
 
1765 raphael 41
        $resultat_requete_obs_images_taxon = Cel::db()->requeter($requete_obs_publiques_images_taxon);
1391 aurelien 42
        $picture_path = $this->config['cel']['url_images'];
871 aurelien 43
 
416 aurelien 44
		// Formatage du xml
45
		$xml = '<?xml version="1.0" encoding="utf-8"?>'."\n";
46
		$xml .= '<rdf:RDF'."\n";
47
		$xml .= '	xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"'."\n";
48
		$xml .= '	xmlns:dc="http://purl.org/dc/elements/1.1/"'."\n";
49
		$xml .= '	xmlns:dcterms="http://purl.org/dc/terms">'."\n";
871 aurelien 50
 
51
		$images_obs_taxon = array();
52
		if (is_array($resultat_requete_obs_images_taxon)) {
53
			$images_obs_taxon = $resultat_requete_obs_images_taxon;
54
		}
416 aurelien 55
 
871 aurelien 56
        foreach ($images_obs_taxon as $picture) {
416 aurelien 57
 
871 aurelien 58
        	// Calcul du chemin sur le serveur en fonction de l'identifiant (id)
59
        	$id = $picture['id_image'];
416 aurelien 60
			$id = sprintf('%09s', $id) ;
61
            $id = wordwrap($id, 3 , '_', true) ;
62
 
63
            $id_fichier = $id.".jpg" ;
64
 
996 aurelien 65
            $niveauDossier = explode("_", $id) ;
416 aurelien 66
 
67
            $dossierNiveau1 = $niveauDossier[0] ;
68
            $dossierNiveau2 = $niveauDossier[1] ;
69
 
70
            $picture_path_with_level = $picture_path.'/'.$dossierNiveau1.'/'.$dossierNiveau2 ;
871 aurelien 71
 
72
       		// TODO: mettre nom prénom dans créateur ? ou mail ?
416 aurelien 73
			$xml .= '	<rdf:Description about="'.$picture_path_with_level.'/'.$taille.'/'.$id.'_'.$taille.'.jpg'.'"'."\n";
871 aurelien 74
			$xml .= '		dc:identifier="'.'urn:lsid:tela-botanica.org:celpic:'.$picture['id_image'].'"'."\n";
416 aurelien 75
			$xml .= '		dc:title="'.$picture['nom_sel'].'"'."\n";
871 aurelien 76
			$xml .= '		dc:description="'.$picture['nom_sel']." - [fichier_origine:".$picture['nom_original'].'][image_identifiant:'.$picture['id_image'].']';
77
			$xml .= '[image_ordre:'.$picture['ordre'].']';
78
			$xml .= '[observation_identifiant:'.$picture['id_observation'].']';
416 aurelien 79
			$xml .= '[observation_ordre:'.$picture['ordre'].']'.'"'."\n";
1391 aurelien 80
			$xml .= '		dc:creator="'.$picture['courriel_utilisateur'].'"'."\n";
416 aurelien 81
			$xml .= '		dc:publisher="CEL"'."\n";
871 aurelien 82
			$xml .= '		dcterms:spatial="'.utf8_decode($picture['zone_geo'])." (".$picture['ce_zone_geo'].")".'"'."\n";
416 aurelien 83
 
84
	        if ($picture['date_observation'] != '0000-00-00 00:00:00') {
2009 mathias 85
				$yearMonthDay = explode('-',$picture['date_observation']);
86
				$year = $yearMonthDay[0];
87
				if (count($yearMonthDay) > 1) {
88
					$month = $yearMonthDay[1];
89
				}
90
				if (count($yearMonthDay) > 2) {
91
					$day = $yearMonthDay[2];
92
				}
996 aurelien 93
	            list($day) = explode(' ',$day);
416 aurelien 94
				$created = $day.'/'.$month.'/'.$year;
95
				$xml .= '		dcterms:created="'.$created.'"'."\n";
96
			}
97
			$xml .= '		dcterms:licence="CC BY-SA"/>'."\n";
98
		}
99
 
100
		$xml .= '</rdf:RDF>'."\n";
101
 
102
		// Envoi du xml au navigateur
103
		header("Content-Type: text/xml");
871 aurelien 104
		echo utf8_encode(str_replace(' & ', ' &#38; ', $xml));
416 aurelien 105
 
106
      }
107
 
617 jpm 108
	function envoyerRequete($url) {
109
		$contenu = false;
110
		$contexte = stream_context_create(array(
111
				'http' => array(
112
      			'method' => 'GET',
113
			    'header' => "Content-type: application/x-www-form-urlencoded\r\n")));
114
 
115
		$flux = @fopen($url, 'r', false, $contexte);
116
		$contenu = json_decode(stream_get_contents($flux));
117
		fclose($flux);
118
		return $contenu;
119
	}
416 aurelien 120
 
121
}
540 david 122
?>