1,10 → 1,10 |
<?php |
/** |
* Web service particulier pour photoflora, qui ne doit être installé sur tela botanica |
* Web service particulier pour photoflora, qui ne doitpas être installé sur tela botanica |
* mais sur photoflora.free.fr |
* Une redirection htaccess est à faire, redirigeant /service:eflore:0.1/photoflora/image |
* vers le site photoflora à l'adresse ou seront installé les services web et le minimum |
* nécessaire pour les faire fonctionner (framework + base de code eflore-projet ou peut être moins) |
* nécessaire pour les faire fonctionner (framework + base de code eflore-projet ou peut-être moins) |
* |
* La table des metadonnées est, elle, stockée sur Tela Botanica |
* Le service est dans le même dépot que les autres par souci de commodité |
17,12 → 17,14 |
const MIME_XML = 'text/xml'; |
|
//TODO déplacer ceci dans des parametres de config |
private $efph_url_photo = 'http://photoflora.free.fr/photos/٪s/max/%s'; |
private $efph_url_photo_bb = 'http://photoflorabb.free.fr/max/bb%s'; |
private $efph_url_photo_jlt = 'http://photoflorajlt.free.fr/max/jlt%s'; |
const BDD_PF = 'photoflora'; |
private $efph_url_photo = 'http://photoflora.free.fr/photos/%s/max/%s'; |
private $efph_url_photo_bb = 'http://photoflorabb.free.fr/max/%s'; |
private $efph_url_photo_jlt = 'http://photoflorajlt.free.fr/max/%s'; |
|
private $efph_url_photo_bb_min = 'http://photoflora.free.fr/photos/bb/min/bb%s'; |
private $efph_url_photo_jlt_min = 'http://photoflora.free.fr/photos/jlt/min/jlt%s'; |
private $efph_url_photo_min = 'http://photoflora.free.fr/photos/%s/min/%s'; |
private $efph_url_photo_bb_min = 'http://photoflora.free.fr/photos/bb/min/%s'; |
private $efph_url_photo_jlt_min = 'http://photoflora.free.fr/photos/jlt/min/%s'; |
|
private $parametres = array(); |
private $ressources = array(); |
47,7 → 49,7 |
$this->format = (isset($this->parametres['retour.format']) && $this->parametres['retour.format'] != '') ? $this->parametres['retour.format'] : $this->format; |
$this->retour_mime = (isset($this->parametres['retour']) && $this->parametres['retour'] != '') ? $this->parametres['retour'] : $this->retour_mime; |
// TODO: décommenter lors de la mise en prod |
//$photographies = $this->getImagesPourNumTax($ressources[0]); |
//$photographies = $this->obtenirImages(); |
//TODO commenter lors de la mise en prod |
$photographies = $this->getResultatTest(); |
$this->nbreImages = count($photographies); |
78,10 → 80,14 |
|
private function recupererMasque() { |
$masqueEntete = ''; |
// on récupère un num tax en fait |
if ($masqueNn = $this->parametres['masque.nn']) { |
$masqueEntete = "nn=$masqueNn"; |
foreach ($this->parametres as $param => $cle) { |
if ($param == 'masque') { |
$masqueEntete = 'masque='.$cle.','; |
} elseif (substr($param, 0, 7) == 'masque.') { |
$masqueEntete .= substr($param, 7).'='.$cle.','; |
} |
} |
$masqueEntete = rtrim($masqueEntete,','); |
return $masqueEntete; |
} |
|
99,20 → 105,49 |
$this->parametres['navigation.limite'] = 100; |
} |
} |
|
//TODO utiliser le num nom ? |
// en attendant on triche sur le paramètre du service, à changer lorsque l'on connaitra le format de la bdd |
public function getImagesPourNumTax($nt) { |
$requetes_taxon = 'SELECT photos.*, taxons.Combinaison, photographes.Nom, photographes.Prenom, photographes.Initiales, photographes.Mail '. |
'FROM photos, photographes, taxons '. |
'WHERE photos.NumTaxon = '.$this->Bdd->proteger($nt).' '. |
'AND photos.Auteur = photographes.ID '. |
|
public function obtenirImages() { |
$requete = 'SELECT photos.*,taxons.NumTaxon, taxons.NumNomen, taxons.Combinaison, photographes.Nom, photographes.Prenom, photographes.Initiales, photographes.Mail '. |
'FROM '.self::BDD_PF.'.photos, '.self::BDD_PF.'.photographes, '.self::BDD_PF.'.taxons '. |
'WHERE '. |
'photos.Auteur = photographes.ID '. |
'AND photos.NumTaxon = taxons.NumTaxon '. |
'ORDER BY photos.support'; |
$resultat = $this->Bdd->recupererTous($requetes_taxon); |
$this->construireWhereNumNom().' '. |
$this->construireWhereNumTax().' '. |
$this->construireWhereNomSci().' '. |
$this->construireWhereAuteur().' '. |
'ORDER BY photos.support LIMIT '.$this->parametres['navigation.depart'].','.$this->parametres['navigation.limite']; |
$resultat = $this->Bdd->recupererTous($requete); |
return $resultat; |
} |
|
private function construireWhereNumNom() { |
return (isset($this->parametres['masque.nn'])) ? 'AND taxons.NumNomen = '.$this->Bdd->proteger($this->parametres['masque.nn']).' ' : ''; |
} |
|
private function construireWhereNumTax() { |
return (isset($this->parametres['masque.nt'])) ? 'AND taxons.NumTaxon = '.$this->Bdd->proteger($this->parametres['masque.nt']).' ' : ''; |
} |
|
private function construireWhereNomSci() { |
return (isset($this->parametres['masque.ns'])) ? 'AND taxons.Combinaison LIKE '.$this->Bdd->proteger($this->parametres['masque.ns'].'%').' ' : ''; |
} |
|
private function construireWhereAuteur() { |
$requete_auteur = ''; |
if (isset($this->parametres['masque.auteur'])) { |
$auteur_like = $this->Bdd->proteger($this->parametres['masque.auteur'].'%'); |
$requete_auteur = 'AND photos.auteur = '. |
'(SELECT id FROM '.self::BDD_PF.'.photographes '. |
'WHERE '. |
'Nom LIKE '.$auteur_like.' OR '. |
'Prenom LIKE '.$auteur_like.' OR '. |
'Initiales LIKE '.$auteur_like.' OR '. |
'Mail LIKE '.$auteur_like.') '; |
} |
return $requete_auteur; |
} |
|
private function formaterRetourJson($photographies) { |
$resultat = array(); |
foreach ($photographies as $photo) { |
121,19 → 156,14 |
$url = $this->getUrlPhotoPourInitiales($photo['Initiales'], $photo['NumPhoto']); |
$id = str_replace(array('.jpg','.jpeg'),'',$photo['NumPhoto']); |
// Post-traitement des valeurs |
$image['station'] = preg_replace('/^[ ]*:[ ]*/', '', $photo['lieu']); |
$image['date'] = $photo['Date']; |
$image['auteur'] = $photo['Prenom'].' '.$photo['Nom']; |
$image['determination.nom_sci'] = $photo['Objet']; |
$image['determination.nom_sci.code'] = "bdtfx.".$this->parametres['masque.nn']; |
$image['station'] = $this->formaterChaineEncodeeBddPhotoflora($photo['lieu']); |
$image['date'] = $this->donnerDate($this->formaterChaineEncodeeBddPhotoflora($photo['Date'])); |
$image['auteur'] = $this->formaterChaineEncodeeBddPhotoflora($photo['Prenom'].' '.$photo['Nom']); |
$image['determination'] = $photo['Combinaison'].' ['.$photo['Prenom'].' '.$photo['Nom'].']'; |
$image['determination.nom_sci'] = $photo['Combinaison']; |
$image['determination.nom_sci.code'] = "bdtfx.".$photo['NumNomen']; |
$image['binaire.href'] = $url; |
|
// TODO: comment remplir ces champs ci ? voir la base de données |
/** "determination": "nom_sci [Dét. : auteur]", |
* "determination.nom_sci": "nom_sci", |
* "determination.nom_sci.code": "bdtfx.num_nom" |
*/ |
|
$resultat[$id] = $image; |
} |
|
140,6 → 170,12 |
return $resultat; |
} |
|
private function formaterChaineEncodeeBddPhotoflora($chaine) { |
return $chaine = preg_replace_callback("/(&#[0-9]+;)/", function($m) { |
return mb_convert_encoding($m[1], "UTF-8", "HTML-ENTITIES"); |
}, $chaine); |
} |
|
// TODO: garder ancien web service pour retour xml ou bien fusionner les deux ? |
private function formaterRetourXml($photographies) { |
// Formatage du xml |
185,7 → 221,8 |
$base_url = ($this->format == 'max') ? $this->efph_url_photo_jlt : $this->efph_url_photo_jlt_min; |
$url = sprintf($base_url, $num_photo); |
} else { |
$url = sprintf($this->efph_url_photo, $initiales, $num_photo); |
$base_url = ($this->format == 'max') ? $this->efph_url_photo : $this->efph_url_photo_min; |
$url = sprintf($base_url, $initiales, $num_photo); |
} |
|
return $url; |
194,7 → 231,8 |
private function getResultatTest() { |
$photographies = array(); |
$photographies[] = array('Initiales' => 'bb', |
'NumPhoto' => '047230.jpg', |
'NumPhoto' => 'bb047230.jpg', |
'NumNomen' => '182', |
'lieu' => 'Ristolas - Hautes Alpes (05) [France]', |
'Combinaison' => '', |
'Objet' => 'Vue générale, en fleur cv Musik - Canon EOS 350D DIGITAL - Expo : 1/160 sec. - Ouv. : f8 - ISO : 100 - flash : non - foc. : 60 - pix. : 8 Mp.', |
229,7 → 267,7 |
function donnerTxtSupport($support) { |
switch ($support) { |
case '0': |
$support = 'Photographie numérique (6 éﻯgapixels)'; |
$support = 'Photographie numérique (6 mégapixels)'; |
break; |
case '1': |
$support = 'Diapositive'; |
263,7 → 301,7 |
$type = 'image/png'; |
break; |
default: |
$type = 'Erreur Mime : péﻯvenir eflore_remarques@tela-botanica.org'; |
$type = 'Erreur Mime : prévenir eflore_remarques@tela-botanica.org'; |
} |
} else { |
$type = 'Erreur Mime : prévenir eflore_remarques@tela-botanica.org'; |
304,7 → 342,7 |
$mois_sortie = '07'; |
break; |
case 'aout' : |
case 'aoﻝt' : |
case 'août' : |
$mois_sortie = '08'; |
break; |
case 'septembre' : |