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 |
}
|