Subversion Repositories eFlore/Applications.del

Rev

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

Rev 468 Rev 486
Line 1... Line 1...
1
<?php
1
<?php
2
class Images extends Del {
2
class Images extends Del {
Line -... Line 3...
-
 
3
	
-
 
4
	private $format = 'json';
3
	
5
	
4
	private $debut = 0;
6
	private $debut = 0;
Line 5... Line 7...
5
	private $limite = 50;
7
	private $limite = 50;
6
	
8
	
7
	private $champ_tri = 'date_observation';
9
	private $champ_tri = 'date_observation';
Line -... Line 10...
-
 
10
	private $ordre = 'desc';
-
 
11
	private $tri_demande = false;
-
 
12
	
-
 
13
	private $criteres_acceptes = array(
-
 
14
		"recherche",
-
 
15
		"dpt",
-
 
16
		"taxon",
-
 
17
		"genre",
-
 
18
		"mot_clef",
-
 
19
		"date",
-
 
20
		"commune",
-
 
21
		"famille",
-
 
22
		"tag",
-
 
23
		"auteur"
-
 
24
	);
8
	private $ordre = 'desc';
25
	
9
	private $tri_demande = false;
26
	private $criteres = array();
10
	
27
	
11
	/**
28
	/**
12
	* Méthode appelée avec une requête de type GET avec une url de la forme
29
	* Méthode appelée avec une requête de type GET avec une url de la forme
Line 32... Line 49...
32
	*
49
	*
33
	* @param $uid un tableau contenant les élements passés dans l'url après le nom du service
50
	* @param $uid un tableau contenant les élements passés dans l'url après le nom du service
34
	*
51
	*
35
	*/
52
	*/
36
	public function getElement($uid)
53
	public function getElement($uid)
37
	{
54
	{	
38
		$format = 'json';
-
 
39
		
-
 
40
		$this->debut = isset($_GET['debut']) ? $_GET['debut'] : $this->debut;
55
		$this->collecterCriteresRecherche();
41
		$this->limite = isset($_GET['limite']) ? $_GET['limite'] : $this->limite;
-
 
Line 42... Line -...
42
		
-
 
43
		$this->champ_tri = isset($_GET['tri']) ? $_GET['tri'] : $this->champ_tri;
-
 
44
		$this->ordre = isset($_GET['ordre']) ? $_GET['ordre'] : $this->ordre;
-
 
45
		
-
 
46
		$this->tri_demande = isset($_GET['tri']) ? true : false;
-
 
47
	
-
 
48
		if(isset($_GET['format'])) {
-
 
49
			$format = strtolower($_GET['format']);
-
 
50
		}
-
 
51
	
56
		
Line 52... Line 57...
52
		switch ($format) {
57
		switch ($this->format) {
Line 53... Line 58...
53
				
58
				
54
			case 'html':
59
			case 'html':
Line -... Line 60...
-
 
60
					
-
 
61
			case 'json':
-
 
62
				$images = $this->obtenirImagesAvecObservations();
-
 
63
				
-
 
64
				if(!empty($this->criteres)) {
-
 
65
					$images_filtrees = array();
-
 
66
					foreach($images as $ligne_image) {
-
 
67
						if($this->ligneCorrespondAuxCriteres($ligne_image)) {
-
 
68
							$images_filtrees[] = $ligne_image;
-
 
69
						}
-
 
70
					}
55
					
71
				} else  {
56
			case 'json':
72
					$images_filtrees = $images;
57
				$images = $this->obtenirImagesAvecObservations();
73
				}
58
				
74
				
59
				$total = count($images);
75
				$total = count($images_filtrees);
Line 60... Line 76...
60
				if($this->tri_demande) {
76
				if($this->tri_demande) {
61
					usort($images, array($this,'comparerObservations'));
77
					usort($images_filtrees, array($this,'comparerObservations'));
62
				}
78
				}
Line 75... Line 91...
75
		}
91
		}
Line 76... Line 92...
76
	
92
	
77
		$this->envoyer($retour,$mime);
93
		$this->envoyer($retour,$mime);
Line -... Line 94...
-
 
94
	}
-
 
95
	
-
 
96
	private function collecterCriteresRecherche() {
-
 
97
				
-
 
98
		$this->debut = isset($_GET['debut']) ? $_GET['debut'] : $this->debut;
-
 
99
		$this->limite = isset($_GET['limite']) ? $_GET['limite'] : $this->limite;
-
 
100
		
-
 
101
		$this->champ_tri = isset($_GET['tri']) ? $_GET['tri'] : $this->champ_tri;
-
 
102
		$this->ordre = isset($_GET['ordre']) ? $_GET['ordre'] : $this->ordre;
-
 
103
		
-
 
104
		$this->tri_demande = isset($_GET['tri']) ? true : false;
-
 
105
		
-
 
106
		if(isset($_GET['format'])) {
-
 
107
			$this->format = strtolower($_GET['format']);
-
 
108
		}
-
 
109
		
-
 
110
		foreach($_GET as $cle => $valeur) {
-
 
111
			if(in_array(strtolower(trim($cle)), $this->criteres_acceptes)) {
-
 
112
				$this->criteres[$cle] = $valeur;
-
 
113
			}
-
 
114
		}
-
 
115
	}
-
 
116
	
-
 
117
	private function ligneCorrespondAuxCriteres($ligne_image) {
-
 
118
		
-
 
119
		$correspond = true;
-
 
120
		
-
 
121
		foreach($this->criteres as $critere => $valeur) {
-
 
122
			switch($critere) {
-
 
123
				case "recherche":
-
 
124
					$correspond = (substr($ligne_image->observation->ce_zone_geo, 0, 2) == $valeur) |
-
 
125
					stristr($ligne_image->observation->nom_sel, $valeur) != '' |
-
 
126
					stristr($ligne_image->observation->nom_ret, $valeur) != '' |
-
 
127
					stristr($ligne_image->observation->nom_sel, $valeur) != '' |
-
 
128
					stristr($ligne_image->observation->nom_ret, $valeur) != '' |
-
 
129
					stristr($ligne_image->observation->mots_cles_texte, $valeur) != '' |
-
 
130
					stristr($ligne_image->observation->date_observation, $valeur) != '' |
-
 
131
					stristr($ligne_image->date_prise_de_vue, $valeur) != '' |
-
 
132
					stristr($ligne_image->observation->zone_geo, $valeur) != '' |
-
 
133
					stristr($ligne_image->observation->famille, $valeur) != '' |
-
 
134
					stristr($ligne_image->mots_cles_texte, $valeur) != '' |
-
 
135
					stristr($ligne_image->prenom_utilisateur, $valeur) != '' |
-
 
136
					stristr($ligne_image->nom_utilisateur, $valeur) != '';			
-
 
137
				break;
-
 
138
				case "dpt":
-
 
139
					$correspond = (substr($ligne_image->observation->ce_zone_geo, 0, 2) == $valeur);
-
 
140
				break;
-
 
141
				case "taxon":
-
 
142
					$correspond = stristr($ligne_image->observation->nom_sel, $valeur) != '' |
-
 
143
								stristr($ligne_image->observation->nom_ret, $valeur) != '';
-
 
144
				break;
-
 
145
				case "genre":
-
 
146
					$correspond = stristr($ligne_image->observation->nom_sel, $valeur) != '' |
-
 
147
								stristr($ligne_image->observation->nom_ret, $valeur) != '';
-
 
148
				break;
-
 
149
				case "mot_clef":
-
 
150
					$correspond = stristr($ligne_image->observation->mot_cles_texte, $valeur);
-
 
151
				break;
-
 
152
				case "date":
-
 
153
					$correspond = stristr($ligne_image->observation->date_observation, $valeur) != '' |
-
 
154
									stristr($ligne_image->date_prise_de_vue, $valeur) != '';
-
 
155
				break;
-
 
156
				case "commune":
-
 
157
					$correspond = stristr($ligne_image->observation->zone_geo, $valeur);
-
 
158
				break;
-
 
159
				case "famille":
-
 
160
					$correspond = stristr($ligne_image->observation->famille, $valeur);
-
 
161
				break;
-
 
162
				case "tag":
-
 
163
					$correspond = stristr($ligne_image->mots_cles_texte, $valeur);
-
 
164
				break;
-
 
165
				case "auteur":
-
 
166
					$correspond = stristr($ligne_image->prenom_utilisateur, $valeur) != '' | 
-
 
167
									stristr($ligne_image->nom_utilisateur, $valeur) != '';
-
 
168
				break;
-
 
169
			}
-
 
170
			
-
 
171
			if(!$correspond) break;
-
 
172
		}
-
 
173
		
-
 
174
		return $correspond;
78
	}
175
	}
Line 79... Line 176...
79
	
176
	
Line 80... Line 177...
80
	private function comparerObservations($image_a, $image_b) {
177
	private function comparerObservations($image_a, $image_b) {