New file |
0,0 → 1,102 |
<?php |
// declare(encoding='UTF-8'); |
/** |
* Retourne des infos au format RDF sur les imags. |
* |
* @internal Mininum PHP version : 5.2 |
* @category CEL |
* @package Services |
* @subpackage Images |
* @version 0.1 |
* @author Mathias CHOUET <mathias@tela-botanica.org> |
* @author Jean-Pascal MILCENT <jpm@tela-botanica.org> |
* @author Aurelien PERONNET <aurelien@tela-botanica.org> |
* @license GPL v3 <http://www.gnu.org/licenses/gpl.txt> |
* @license CECILL v2 <http://www.cecill.info/licences/Licence_CeCILL_V2-en.txt> |
* @copyright 1999-2014 Tela Botanica <accueil@tela-botanica.org> |
*/ |
class ImageRDF extends Cel { |
|
/** |
* Recherche des images associee au numero nomenclatural |
* @param numeric $uid [0] : numero nomenclatural obligatoire , $uid[1] (optionnel) : taille image : S , M, L (default) |
*/ |
public function getElement($uid){ |
$nomSelNnP = Cel::db()->proteger($uid[0]); |
$taille = isset($uid[1]) ? $uid[1] : 'L'; |
|
// Recherche de toutes les observations transmises du taxon pour lesquelles une photo est associee. |
$requete = 'SELECT co.id_observation, co.nom_sel, co.ordre, '. |
' co.prenom_utilisateur, co.nom_utilisateur, co.courriel_utilisateur, '. |
' co.zone_geo, .co.ce_zone_geo, co.date_observation, '. |
' ci.id_image, ci.nom_original '. |
'FROM cel_obs AS co INNER JOIN cel_images AS ci ON (co.id_observation = ci.ce_observation) '. |
"WHERE co.nom_sel_nn = $nomSelNnP ". |
'AND co.transmission = 1 '. |
' -- '.__FILE__.':'.__LINE__; |
//echo $requete; |
$resultats = Cel::db()->requeter($requete); |
|
$auteursEmails = array(); |
$donnees = array(); |
if ($resultats !== false && is_array($resultats)) { |
$urlImgTpl = $this->config['settings']['celImgUrlTpl']; |
foreach ($resultats as $picture) { |
$id = sprintf('%09s', $picture['id_image']) ; |
$dateObsTimestamp = $this->convertirDateHeureMysqlEnTimestamp($picture['date_observation']); |
$auteursEmails[] = $picture['courriel_utilisateur']; |
|
$data = array(); |
$data['url_img'] = sprintf($urlImgTpl, $id.$taille); |
$data['id_image'] = $picture['id_image']; |
$data['guid'] = 'urn:lsid:tela-botanica.org:celpic:'.$data['id_image']; |
$data['nom_original'] = $picture['nom_original']; |
$data['id_observation'] = $picture['id_observation']; |
$data['nom_sel'] = $picture['nom_sel']; |
$data['ordre'] = $picture['ordre']; |
$data['zone_geo'] = utf8_decode($picture['zone_geo']); |
$data['ce_zone_geo'] = $picture['ce_zone_geo']; |
$data['ce_zone_geo'] = $picture['ce_zone_geo']; |
$data['courriel_utilisateur'] = $picture['courriel_utilisateur']; |
$data['date_observation'] = ($dateObsTimestamp != 0) ? date('d/m/Y', $dateObsTimestamp) : null; |
$donnees[] = $data; |
} |
} |
$auteursIntitules = $this->creerAuteurs($auteursEmails); |
$xml = $this->formaterRdf($donnees, $auteursIntitules); |
// Envoi du xml au navigateur |
header("Content-Type: text/xml"); |
echo utf8_encode(str_replace(' & ', ' & ', $xml)); |
} |
|
private function formaterRdf($donnees, $auteurs) { |
$xml = '<?xml version="1.0" encoding="utf-8"?>'."\n". |
'<rdf:RDF'."\n". |
' xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"'."\n". |
' xmlns:dc="http://purl.org/dc/elements/1.1/"'."\n". |
' xmlns:dcterms="http://purl.org/dc/terms">'."\n"; |
if (count($donnees) > 0) { |
foreach ($donnees as $data) { |
$intituleAuteur = $auteurs[$data['courriel_utilisateur']]; |
$xml .= ' <rdf:Description about="'.$data['url_img'].'"'."\n". |
' dc:identifier="'.$data['guid'].'"'."\n". |
' dc:title="'.$data['nom_sel'].'"'."\n". |
' dc:description="'.$data['nom_sel'].' - '. |
'[fichier_origine:'.$data['nom_original'].']'. |
'[image_identifiant:'.$data['id_image'].']'. |
'[image_ordre:'.$data['ordre'].']'. |
'[observation_identifiant:'.$data['id_observation'].']'. |
'[observation_ordre:'.$data['ordre'].']'.'"'."\n". |
' dc:creator="'.$intituleAuteur.'"'."\n". |
' dc:publisher="CEL"'."\n". |
' dcterms:spatial="'.$data['zone_geo']." (".$data['ce_zone_geo'].")".'"'."\n"; |
if (isset($data['date_observation'])) { |
$xml .= ' dcterms:created="'.$data['date_observation'].'"'."\n"; |
} |
$xml .= ' dcterms:licence="CC BY-SA"/>'."\n"; |
} |
} |
$xml .= '</rdf:RDF>'."\n"; |
return $xml; |
} |
} |