Subversion Repositories eFlore/Projets.eflore-projets

Rev

Rev 536 | Rev 539 | Go to most recent revision | Show entire file | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed

Rev 536 Rev 538
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
	}