| Line 12... |
Line 12... |
| 12 |
* @license CECILL v2 <http://www.cecill.info/licences/Licence_CeCILL_V2-en.txt>
|
12 |
* @license CECILL v2 <http://www.cecill.info/licences/Licence_CeCILL_V2-en.txt>
|
| 13 |
* @version 1.0
|
13 |
* @version 1.0
|
| 14 |
* @copyright 1999-2011 Tela Botanica (accueil@tela-botanica.org)
|
14 |
* @copyright 1999-2011 Tela Botanica (accueil@tela-botanica.org)
|
| 15 |
*/
|
15 |
*/
|
| 16 |
// TODO : Config et Outils sont des classes statiques qui doivent poser des pb pour les tests...
|
16 |
// TODO : Config et Outils sont des classes statiques qui doivent poser des pb pour les tests...
|
| 17 |
class Images extends Commun {
|
17 |
class Images {
|
| Line 18... |
Line 18... |
| 18 |
|
18 |
|
| 19 |
protected $parametres = array();
|
19 |
private $parametres = array();
|
| 20 |
protected $ressources = array();
|
20 |
private $ressources = array();
|
| Line 21... |
Line 21... |
| 21 |
private $Bdd;
|
21 |
private $Bdd;
|
| 22 |
|
22 |
|
| 23 |
const CODE_REFTAX_DEFAUT = 'bdtfx';
|
23 |
const CODE_REFTAX_DEFAUT = 'bdtfx';
|
| Line 28... |
Line 28... |
| 28 |
|
28 |
|
| 29 |
private $config = array();
|
29 |
private $config = array();
|
| 30 |
private $cheminImagesBase = '';
|
30 |
private $cheminImagesBase = '';
|
| 31 |
private $formats_supportes = array(self::MIME_JPEG, self::MIME_JSON);
|
31 |
private $formats_supportes = array(self::MIME_JPEG, self::MIME_JSON);
|
| 32 |
private $tris_supportes = array('date');
|
32 |
private $tris_supportes = array('date');
|
| 33 |
private $retour_champs = array('determination.nom_sci' => 'nom_sel', 'determination.nom_sci.code' => 'num_nom_sel',
|
33 |
private $retour_champs = array('determination.nom_sci' => 'nom_sel', 'determination.nom_sci.code' => 'nom_sel_nn',
|
| 34 |
'station.lieudit' => 'lieudit', 'station', 'milieu');
|
34 |
'station.lieudit' => 'lieudit', 'station', 'milieu');
|
| 35 |
private $ref_tax_demande = array();
|
35 |
private $ref_tax_demande = array();
|
| 36 |
private $infosImages = array();
|
36 |
private $infosImages = array();
|
| 37 |
private $nbreImages = 0;
|
37 |
private $nbreImages = 0;
|
| Line 223... |
Line 223... |
| 223 |
$refTax = self::CODE_REFTAX_DEFAUT;
|
223 |
$refTax = self::CODE_REFTAX_DEFAUT;
|
| 224 |
$numNom = $this->Bdd->proteger($this->ref_tax_demande[$refTax][0]);
|
224 |
$numNom = $this->Bdd->proteger($this->ref_tax_demande[$refTax][0]);
|
| Line 225... |
Line 225... |
| 225 |
|
225 |
|
| 226 |
//TODO: modifier la requete lors du passage à la nouvelle base de données pour faire quelque chose
|
226 |
//TODO: modifier la requete lors du passage à la nouvelle base de données pour faire quelque chose
|
| 227 |
// du numéro nomenclatural + modifier les champs appelés pour le nouveau format
|
227 |
// du numéro nomenclatural + modifier les champs appelés pour le nouveau format
|
| 228 |
$requete = 'SELECT coi.coi_ce_image AS id_image '.
|
228 |
$requete = 'SELECT coi.id_image AS id_image '.
|
| 229 |
'FROM cel_obs_images AS coi '.
|
229 |
'FROM cel_obs_images AS coi '.
|
| 230 |
' LEFT JOIN cel_inventory AS ci '.
|
230 |
' LEFT JOIN cel_obs AS co '.
|
| 231 |
'ON (coi.coi_ce_observation = ci.ordre AND coi.coi_ce_utilisateur = ci.identifiant) '.
|
231 |
'ON (coi.id_observation = co.id_observation) '.
|
| 232 |
'WHERE ci.transmission = 1 '.
|
232 |
'WHERE ci.transmission = 1 '.
|
| Line 233... |
Line 233... |
| 233 |
" AND ci.num_nom_ret IN ($numNom)";
|
233 |
" AND ci.nom_ret_nn IN ($numNom)";
|
| Line 234... |
Line 234... |
| 234 |
|
234 |
|
| 235 |
$resultat = $this->Bdd->recupererTous($requete);
|
235 |
$resultat = $this->Bdd->recupererTous($requete);
|
| Line 245... |
Line 245... |
| 245 |
}
|
245 |
}
|
| Line 246... |
Line 246... |
| 246 |
|
246 |
|
| 247 |
private function obtenirIdPremiereImage() {
|
247 |
private function obtenirIdPremiereImage() {
|
| 248 |
$refTax = self::CODE_REFTAX_DEFAUT;
|
248 |
$refTax = self::CODE_REFTAX_DEFAUT;
|
| 249 |
$numNom = $this->Bdd->proteger($this->ref_tax_demande[$refTax][0]);
|
249 |
$numNom = $this->Bdd->proteger($this->ref_tax_demande[$refTax][0]);
|
| 250 |
$requete = 'SELECT ci.ci_id_image AS id_image '.
|
250 |
$requete = 'SELECT ci.id_image AS id_image '.
|
| 251 |
'FROM cel_images AS ci'.
|
251 |
'FROM cel_images AS ci'.
|
| 252 |
' LEFT JOIN cel_obs_images AS coi '.
|
252 |
' LEFT JOIN cel_obs_images AS coi '.
|
| 253 |
' ON (coi.coi_ce_image = ci.ci_id_image) '.
|
253 |
' ON (coi.id_image = ci.id_image) '.
|
| 254 |
' LEFT JOIN cel_inventory AS co '.
|
254 |
' LEFT JOIN cel_obs AS co '.
|
| 255 |
' ON (coi.coi_ce_observation = co.ordre AND coi.coi_ce_utilisateur = co.identifiant) '.
|
255 |
' ON (coi.id_observation = co.id_observation) '.
|
| 256 |
'WHERE co.transmission = 1 '.
|
256 |
'WHERE co.transmission = 1 '.
|
| 257 |
" AND co.num_nom_ret IN ($numNom) ".
|
257 |
" AND co.nom_ret_nn IN ($numNom) ".
|
| Line 258... |
Line 258... |
| 258 |
' AND ci.ci_meta_date != "0000-00-00" ORDER BY ci.ci_meta_date ASC';
|
258 |
' AND ci.date_prise_de_vue != "0000-00-00" ORDER BY ci.date_prise_de_vue ASC';
|
| Line 259... |
Line 259... |
| 259 |
|
259 |
|
| 260 |
$resultat = $this->Bdd->recupererTous($requete);
|
260 |
$resultat = $this->Bdd->recupererTous($requete);
|
| Line 269... |
Line 269... |
| 269 |
return $id_image_hasard;
|
269 |
return $id_image_hasard;
|
| 270 |
}
|
270 |
}
|
| Line 271... |
Line 271... |
| 271 |
|
271 |
|
| 272 |
private function chargerInfosImage() {
|
272 |
private function chargerInfosImage() {
|
| 273 |
$requete = 'SELECT SQL_CALC_FOUND_ROWS '.
|
273 |
$requete = 'SELECT SQL_CALC_FOUND_ROWS '.
|
| 274 |
' ci.ci_id_image AS id_img, ci.ci_meta_date AS date, '.
|
274 |
' ci.id_image AS id_img, ci.date_creation AS date, '.
|
| 275 |
' co.id AS id_obs, '.
|
275 |
' co.id_observation AS id_obs, '.
|
| 276 |
' identifiant AS utilisateur_courriel, '.
|
276 |
' courriel_utilisateur AS utilisateur_courriel, '.
|
| 277 |
' nom_sel, num_nom_sel, '.
|
277 |
' nom_sel, nom_sel_nn, '.
|
| 278 |
' location, id_location, lieudit, station, milieu '.
|
278 |
' zone_geo, ce_zone_geo, lieudit, station, milieu '.
|
| 279 |
'FROM cel_images AS ci'.
|
279 |
'FROM cel_images AS ci'.
|
| 280 |
' LEFT JOIN cel_obs_images AS coi '.
|
280 |
' LEFT JOIN cel_obs_images AS coi '.
|
| 281 |
' ON (coi.coi_ce_image = ci.ci_id_image) '.
|
281 |
' ON (coi.id_image = ci.ci_id_image) '.
|
| 282 |
' LEFT JOIN cel_inventory AS co '.
|
282 |
' LEFT JOIN cel_obs AS co '.
|
| 283 |
' ON (coi.coi_ce_observation = co.ordre AND coi.coi_ce_utilisateur = co.identifiant) '.
|
283 |
' ON (coi.id_observation = co.id_observation) '.
|
| Line 284... |
Line 284... |
| 284 |
'WHERE ci.ci_id_image = '.$this->ressources[0];
|
284 |
'WHERE ci.id_image = '.$this->ressources[0];
|
| 285 |
|
285 |
|
| Line 286... |
Line 286... |
| 286 |
$this->infosImages = $this->Bdd->recupererTous($requete);
|
286 |
$this->infosImages = $this->Bdd->recupererTous($requete);
|
| Line 293... |
Line 293... |
| 293 |
$limite = $this->parametres['navigation.limite'];
|
293 |
$limite = $this->parametres['navigation.limite'];
|
| Line 294... |
Line 294... |
| 294 |
|
294 |
|
| 295 |
//TODO: modifier la requete lors du passage à la nouvelle base de données pour faire quelque chose
|
295 |
//TODO: modifier la requete lors du passage à la nouvelle base de données pour faire quelque chose
|
| 296 |
// du numéro nomenclatural + modifier les champs appelés pour le nouveau format
|
296 |
// du numéro nomenclatural + modifier les champs appelés pour le nouveau format
|
| 297 |
$requete = 'SELECT SQL_CALC_FOUND_ROWS '.
|
297 |
$requete = 'SELECT SQL_CALC_FOUND_ROWS '.
|
| 298 |
' co.id AS id_obs, co.identifiant AS utilisateur_courriel, co.location, co.id_location, '.
|
298 |
' co.id_observation AS id_obs, co.courriel_utilisateur AS utilisateur_courriel, co.zone_geo, co.ce_zone_geo, '.
|
| 299 |
' co.nom_sel, co.num_nom_sel, '.
|
299 |
' co.nom_sel, co.nom_sel_nn, '.
|
| 300 |
' ci.ci_id_image AS id_img, ci.ci_meta_date AS date '.
|
300 |
' ci.id_image AS id_img, ci.date_prise_de_vue AS date '.
|
| 301 |
(isset($this->parametres['retour.champs']) ? ', '.$this->parametres['retour.champs'] : '').
|
301 |
(isset($this->parametres['retour.champs']) ? ', '.$this->parametres['retour.champs'] : '').
|
| 302 |
'FROM cel_images AS ci'.
|
302 |
'FROM cel_images AS ci'.
|
| 303 |
' LEFT JOIN cel_obs_images AS coi '.
|
303 |
' LEFT JOIN cel_obs_images AS coi '.
|
| 304 |
' ON (coi.coi_ce_image = ci.ci_id_image) '.
|
304 |
' ON (coi.id_image = ci.id_image) '.
|
| 305 |
' LEFT JOIN cel_inventory AS co '.
|
305 |
' LEFT JOIN cel_obs AS co '.
|
| 306 |
' ON (coi.coi_ce_observation = co.ordre AND coi.coi_ce_utilisateur = co.identifiant) '.
|
306 |
' ON (coi.id_observation = co.id_observation) '.
|
| 307 |
$this->formerRequeteConditions($numNomListe).' '.
|
307 |
$this->formerRequeteConditions($numNomListe).' '.
|
| 308 |
'GROUP BY id_img '.
|
308 |
'GROUP BY id_img '.
|
| 309 |
$this->formerRequeteTri().
|
309 |
$this->formerRequeteTri().
|
| Line 310... |
Line 310... |
| 310 |
"LIMIT $depart,$limite ";
|
310 |
"LIMIT $depart,$limite ";
|
| 311 |
|
311 |
|
| Line 312... |
Line 312... |
| 312 |
$this->infosImages = $this->Bdd->recupererTous($requete);
|
312 |
$this->infosImages = $this->Bdd->recupererTous($requete);
|
| 313 |
}
|
313 |
}
|
| 314 |
|
314 |
|
| 315 |
private function formerRequeteConditions($numNomListe) {
|
315 |
private function formerRequeteConditions($numNomListe) {
|
| 316 |
$where[] = " co.transmission = 1 AND co.num_nom_ret IN ($numNomListe) ";
|
316 |
$where[] = " co.transmission = 1 AND co.nom_ret_nn IN ($numNomListe) ";
|
| 317 |
if (isset($this->parametres['retour.tri']) && $this->parametres['retour.tri'] == 'date') {
|
317 |
if (isset($this->parametres['retour.tri']) && $this->parametres['retour.tri'] == 'date') {
|
| 318 |
$where[] = ' ci.ci_meta_date != "0000-00-00"';
|
318 |
$where[] = ' ci.date_prise_de_vue != "0000-00-00"';
|
| Line 319... |
Line 319... |
| 319 |
}
|
319 |
}
|
| 320 |
return ' WHERE '.implode(' AND ', $where);
|
320 |
return ' WHERE '.implode(' AND ', $where);
|
| 321 |
}
|
321 |
}
|
| 322 |
|
322 |
|
| 323 |
private function formerRequeteTri() {
|
323 |
private function formerRequeteTri() {
|
| 324 |
$order = '';
|
324 |
$order = '';
|
| 325 |
if (isset($this->parametres['retour.tri']) && $this->parametres['retour.tri'] == 'date') {
|
325 |
if (isset($this->parametres['retour.tri']) && $this->parametres['retour.tri'] == 'date') {
|
| Line 326... |
Line 326... |
| 326 |
$order = ' ORDER BY ci.ci_meta_date ASC ';
|
326 |
$order = ' ORDER BY ci.date_prise_de_vue ASC ';
|
| Line 494... |
Line 494... |
| 494 |
$auteur = $this->Utilisateurs->getIntitule($infos['utilisateur_courriel']);
|
494 |
$auteur = $this->Utilisateurs->getIntitule($infos['utilisateur_courriel']);
|
| 495 |
return $infos['nom_sel']."[Dét. : $auteur]";
|
495 |
return $infos['nom_sel']."[Dét. : $auteur]";
|
| 496 |
}
|
496 |
}
|
| Line 497... |
Line 497... |
| 497 |
|
497 |
|
| 498 |
private function formaterNomSciCode($infos) {
|
498 |
private function formaterNomSciCode($infos) {
|
| 499 |
return self::CODE_REFTAX_DEFAUT.'.'.$infos['num_nom_sel'];
|
499 |
return self::CODE_REFTAX_DEFAUT.'.'.$infos['nom_sel_nn'];
|
| Line 500... |
Line 500... |
| 500 |
}
|
500 |
}
|
| 501 |
|
501 |
|
| 502 |
private function formaterStation($infos) {
|
502 |
private function formaterStation($infos) {
|
| 503 |
$station = array();
|
503 |
$station = array();
|
| 504 |
if (isset($infos['location']) && $commune = $this->formaterCommune($infos)) {
|
504 |
if (isset($infos['zone_geo']) && $commune = $this->formaterCommune($infos)) {
|
| 505 |
$station['station.commune'] = $commune;
|
505 |
$station['station.commune'] = $commune;
|
| 506 |
}
|
506 |
}
|
| 507 |
if (isset($infos['lieudit']) && $this->avoirContenu($infos['lieudit'])) {
|
507 |
if (isset($infos['lieudit']) && $this->avoirContenu($infos['lieudit'])) {
|
| Line 520... |
Line 520... |
| 520 |
return $station;
|
520 |
return $station;
|
| 521 |
}
|
521 |
}
|
| Line 522... |
Line 522... |
| 522 |
|
522 |
|
| 523 |
private function formaterCommune($infos) {
|
523 |
private function formaterCommune($infos) {
|
| 524 |
$commune = array();
|
524 |
$commune = array();
|
| 525 |
if ($this->avoirContenu($infos['location'])) {
|
525 |
if ($this->avoirContenu($infos['zone_geo'])) {
|
| 526 |
$commune[] = $infos['location'];
|
526 |
$commune[] = $infos['zone_geo'];
|
| 527 |
}
|
527 |
}
|
| 528 |
if (isset($infos['id_location']) && $this->avoirContenu($infos['id_location'])) {
|
528 |
if (isset($infos['ce_zone_geo']) && $this->avoirContenu($infos['ce_zone_geo'])) {
|
| 529 |
$commune[] = '('.$infos['id_location'].')';
|
529 |
$commune[] = '('.substr(str_replace('INSEE-C:','',$infos['ce_zone_geo']), 0, 2).')';
|
| 530 |
}
|
530 |
}
|
| 531 |
return implode(' ', $commune);
|
531 |
return implode(' ', $commune);
|
| Line 532... |
Line 532... |
| 532 |
}
|
532 |
}
|