Subversion Repositories eFlore/Applications.cel

Rev

Rev 664 | Rev 899 | Go to most recent revision | Only display areas with differences | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed

Rev 664 Rev 736
1
<?php
1
<?php
2
/**
2
/**
3
 * Service recherche, et de suppression multiple d'images a partir de divers critères
3
 * Service recherche, et de suppression multiple d'images a partir de divers critères
4
 * Encodage en entrée : utf8
4
 * Encodage en entrée : utf8
5
 * Encodage en sortie : utf8
5
 * Encodage en sortie : utf8
6
 *
6
 *
7
 * @author Aurélien PERONNET <aurelien@tela-botanica.org>
7
 * @author Aurélien PERONNET <aurelien@tela-botanica.org>
8
 * @license GPL v3 <http://www.gnu.org/licenses/gpl.txt>
8
 * @license GPL v3 <http://www.gnu.org/licenses/gpl.txt>
9
 * @license CECILL v2 <http://www.cecill.info/licences/Licence_CeCILL_V2-en.txt>
9
 * @license CECILL v2 <http://www.cecill.info/licences/Licence_CeCILL_V2-en.txt>
10
 * @version $Id$
10
 * @version $Id$
11
 */
11
 */
12
 Class InventoryImageList extends DBAccessor {
12
 Class InventoryImageList extends DBAccessor {
13
 
13
 
14
	var $config;
14
	var $config;
15
 
15
 
16
	function InventoryImageList($config) {
16
	function InventoryImageList($config) {
17
 
17
 
18
		$this->config=$config;
18
		$this->config=$config;
19
	}
19
	}
20
 
20
 
21
 
21
 
22
	// renvoie l'enregistrement correspond � une image
22
	// renvoie l'enregistrement correspond � une image
23
	function getElement($uid)
23
	function getElement($uid)
24
	{
24
	{
25
			// uid[0] : utilisateur obligatoire
25
			// uid[0] : utilisateur obligatoire
26
			// uid[1] : crit�res de filtrage de la forme crit�re1:valeur1;crit�re2:valeur2
26
			// uid[1] : crit�res de filtrage de la forme crit�re1:valeur1;crit�re2:valeur2
27
 
27
 
28
		// Controle detournement utilisateur
28
		// Controle detournement utilisateur
29
	    session_start();
29
	    session_start();
30
		$this->controleUtilisateur($uid[0]);
30
		$this->controleUtilisateur($uid[0]);
31
 
31
 
32
		$DB=$this->connectDB($this->config,'cel_db');
32
		$DB=$this->connectDB($this->config,'cel_db');
33
 
33
 
34
		$criteres = array() ;
34
		$criteres = array() ;
35
 
35
 
36
		if(isset($uid[1]))
36
		if(isset($uid[1]))
37
		{
37
		{
38
			$criteres = explode("&", $uid[1]) ;
38
			$criteres = explode("&", $uid[1]) ;
39
		}
39
		}
40
 
40
 
41
		$query='SELECT * FROM cel_images WHERE ci_ce_utilisateur = "'.$uid[0].'" AND ' ;
41
		$query='SELECT * FROM cel_images WHERE ci_ce_utilisateur = "'.$uid[0].'" AND ' ;
42
 
42
 
43
		$numero_page = 0 ;
43
		$numero_page = 0 ;
44
		$limite = 50 ;
44
		$limite = 50 ;
45
 
45
 
46
		foreach($criteres as $pair)
46
		foreach($criteres as $pair)
47
		{
47
		{
48
			$nom_valeur = explode("=",$pair) ;
48
			$nom_valeur = explode("=",$pair) ;
49
 
49
 
50
			if(sizeof($nom_valeur) != 0)
50
			if(sizeof($nom_valeur) != 0)
51
			{
51
			{
52
					if($nom_valeur[0] == "ci_limite")
52
					if($nom_valeur[0] == "ci_limite")
53
					{
53
					{
54
						$limite = $DB->escapeSimple($nom_valeur[1]) ;
54
						$limite = $DB->escapeSimple($nom_valeur[1]) ;
55
					}
55
					}
56
					elseif($nom_valeur[0] == "ci_numero_page")
56
					elseif($nom_valeur[0] == "ci_numero_page")
57
					{
57
					{
58
						$numero_page = $DB->escapeSimple($nom_valeur[1]) ;
58
						$numero_page = $DB->escapeSimple($nom_valeur[1]) ;
59
					}
59
					}
60
					elseif($nom_valeur[0] == "ci_meta_mots_cles")
60
					elseif($nom_valeur[0] == "ci_meta_mots_cles")
61
					{
61
					{
62
						$mots_cles = rtrim($nom_valeur[1], ',') ;
62
						$mots_cles = rtrim($nom_valeur[1], ',') ;
63
						$mots_cles_liste = explode("," , $mots_cles) ;
63
						$mots_cles_liste = explode("," , $mots_cles) ;
64
 
64
 
65
						foreach($mots_cles_liste as $mot_cle)
65
						foreach($mots_cles_liste as $mot_cle)
66
						{
66
						{
67
							$query .= $nom_valeur[0].' LIKE "%'.$DB->escapeSimple($mot_cle).'%"' ;
67
							$query .= $nom_valeur[0].' LIKE "%'.$DB->escapeSimple($mot_cle).'%"' ;
68
							$query .= ' AND ' ;
68
							$query .= ' AND ' ;
69
						}
69
						}
70
					}
70
					}
71
					elseif($nom_valeur[0] == "ci_meta_comment")
71
					elseif($nom_valeur[0] == "ci_meta_comment")
72
					{
72
					{
73
						$mots_comment_liste = explode(" " , $nom_valeur[1]) ;
73
						$mots_comment_liste = explode(" " , $nom_valeur[1]) ;
74
 
74
 
75
						foreach($mots_comment_liste as $mot_comment)
75
						foreach($mots_comment_liste as $mot_comment)
76
						{
76
						{
77
							$mot_comment = trim($mot_comment) ;
77
							$mot_comment = trim($mot_comment) ;
78
							$query .= $nom_valeur[0].' LIKE "%'.$DB->escapeSimple($mot_comment).'%"' ;
78
							$query .= $nom_valeur[0].' LIKE "%'.$DB->escapeSimple($mot_comment).'%"' ;
79
							$query .= ' AND ' ;
79
							$query .= ' AND ' ;
80
						}
80
						}
81
					}
81
					}
82
					elseif($nom_valeur[0] == "annee" || $nom_valeur[0] == "mois" || $nom_valeur[0] == "jour")
82
					elseif($nom_valeur[0] == "annee" || $nom_valeur[0] == "mois" || $nom_valeur[0] == "jour")
83
					{
83
					{
84
						$query .= $this->fabriquerSousRequeteRechercheDate($nom_valeur[0], $nom_valeur[1]) ;
84
						$query .= $this->fabriquerSousRequeteRechercheDate($nom_valeur[0], $nom_valeur[1]) ;
85
						$query .= ' AND ' ;
85
						$query .= ' AND ' ;
86
					}
86
					}
87
					elseif($nom_valeur[0] == "ci_id_tampon")
87
					elseif($nom_valeur[0] == "ci_id_tampon")
88
					{
88
					{
89
						$ids_tampon = rtrim($nom_valeur[1], ',') ;
89
						$ids_tampon = rtrim($nom_valeur[1], ',') ;
90
						$query .= 'ci_id_image IN ( '.$DB->escapeSimple($ids_tampon).')' ;
90
						$query .= 'ci_id_image IN ( '.$DB->escapeSimple($ids_tampon).')' ;
91
					}
91
					}
92
					elseif($nom_valeur[0] == "ci_recherche_generale")
92
					elseif($nom_valeur[0] == "ci_recherche_generale")
93
					{
93
					{
94
						$query .= $this->fabriquerSousRequeteRechercheGenerale($uid[0], $nom_valeur[1]);
94
						$query .= $this->fabriquerSousRequeteRechercheGenerale($uid[0], $nom_valeur[1]);
95
						$query .= ' AND ';
95
						$query .= ' AND ';
96
					}
96
					}
97
					else
97
					else
98
					{
98
					{
99
						$query .= $nom_valeur[0].' = "'.$DB->escapeSimple($nom_valeur[1]) ;
99
						$query .= $nom_valeur[0].' = "'.$DB->escapeSimple($nom_valeur[1]) ;
100
						$query .= '" AND ' ;
100
						$query .= '" AND ' ;
101
					}
101
					}
102
			}
102
			}
103
		}
103
		}
104
 
104
 
105
		$debut = $limite*$numero_page ;
105
		$debut = $limite*$numero_page ;
106
 
106
 
107
		$query = rtrim($query,' AND ') ;
107
		$query = rtrim($query,' AND ') ;
108
		
108
		
109
		$query .= ' ORDER BY ci_ordre LIMIT '.$debut.','.$limite ;
109
		$query .= ' ORDER BY ci_ordre LIMIT '.$debut.','.$limite ;
110
 
110
 
111
		$res =& $DB->query($query);
111
		$res =& $DB->query($query);
112
                if (PEAR::isError($res)) {
112
                if (PEAR::isError($res)) {
113
 
113
 
114
                	die($res->getMessage());
114
                	die($res->getMessage());
115
                }
115
                }
116
 
116
 
117
		$result = array() ;
117
		$result = array() ;
118
 
118
 
119
		while($image = $res->fetchrow(DB_FETCHMODE_ASSOC))
119
		while($image = $res->fetchrow(DB_FETCHMODE_ASSOC))
120
		{
120
		{
121
			$date = split("-",$image['ci_meta_date']) ;
121
			$date = split("-",$image['ci_meta_date']) ;
122
			if(count($date) > 2)
122
			if(count($date) > 2)
123
			{
123
			{
124
				$image['ci_meta_date'] = $date[2].'/'.$date[1].'/'.$date[0] ;
124
				$image['ci_meta_date'] = $date[2].'/'.$date[1].'/'.$date[0] ;
125
			}
125
			}
126
 
126
 
127
			$image['ci_ce_observation'] = '';
127
			$image['ci_ce_observation'] = '';
128
 
128
 
129
			$requete_table_liaison = 'SELECT coi_ce_observation FROM cel_obs_images WHERE coi_ce_image = '.$image['ci_id_image'].' AND coi_ce_utilisateur ="'.$uid[0].'"';
129
			$requete_table_liaison = 'SELECT coi_ce_observation FROM cel_obs_images WHERE coi_ce_image = '.$image['ci_id_image'].' AND coi_ce_utilisateur ="'.$uid[0].'"';
130
						
130
						
131
			$res_table_liaison =& $DB->query($requete_table_liaison);
131
			$res_table_liaison =& $DB->query($requete_table_liaison);
132
            if (PEAR::isError($res_table_liaison)) {
132
            if (PEAR::isError($res_table_liaison)) {
133
 
133
 
134
            	die($res_table_liaison->getMessage());
134
            	die($res_table_liaison->getMessage());
135
            }
135
            }
136
 
136
 
137
			$ids_obs = '';
137
			$ids_obs = '';
138
			while($liaison = $res_table_liaison->fetchrow(DB_FETCHMODE_ASSOC))
138
			while($liaison = $res_table_liaison->fetchrow(DB_FETCHMODE_ASSOC))
139
			{
139
			{
140
				$ids_obs .= $liaison['coi_ce_observation'].",";
140
				$ids_obs .= $liaison['coi_ce_observation'].",";
141
			}
141
			}
142
 
142
 
143
			$ids_obs = rtrim($ids_obs,',');
143
			$ids_obs = rtrim($ids_obs,',');
144
 
144
 
145
			if(trim($ids_obs) != '') {
145
			if(trim($ids_obs) != '') {
146
				$requete_obs_liees = 'SELECT * FROM cel_inventory WHERE ordre IN  ('.$ids_obs.') AND identifiant ="'.$uid[0].'"';
146
				$requete_obs_liees = 'SELECT * FROM cel_inventory WHERE ordre IN  ('.$ids_obs.') AND identifiant ="'.$uid[0].'"';
147
				$res_obs_liees =& $DB->query($requete_obs_liees);
147
				$res_obs_liees =& $DB->query($requete_obs_liees);
148
	            if (PEAR::isError($res_obs_liees)) {
148
	            if (PEAR::isError($res_obs_liees)) {
149
 
149
 
150
	            	die($res_obs_liees->getMessage());
150
	            	die($res_obs_liees->getMessage());
151
	            }
151
	            }
152
 
152
 
153
				while($obs_liee = $res_obs_liees->fetchrow(DB_FETCHMODE_ASSOC))
153
				while($obs_liee = $res_obs_liees->fetchrow(DB_FETCHMODE_ASSOC))
154
				{
154
				{
155
					$image['ci_ce_observation'] .= $obs_liee['ordre'].'#'.$obs_liee['nom_sel'].'#'.$obs_liee['transmission'].';;' ;
155
					$image['ci_ce_observation'] .= $obs_liee['ordre'].'#'.$obs_liee['nom_sel'].'#'.$obs_liee['transmission'].';;' ;
156
				}
156
				}
157
			}
157
			}
158
 
158
 
159
			$result[] = $image ;
159
			$result[] = $image ;
160
		}
160
		}
161
 
161
 
162
		$res = json_encode($result) ;
162
		$res = json_encode($result) ;
163
		
163
		
164
		$res = str_replace('\u0000','',$res);
164
		$res = str_replace('\u0000','',$res);
165
 
165
 
166
		header("content-type: text/html") ;
166
		header("content-type: text/html") ;
167
		print $res ;
167
		print $res ;
168
		exit() ;
168
		exit() ;
169
	}
169
	}
170
 
170
 
171
	
171
	
172
	function updateElement($uid,$pairs)
172
	function updateElement($uid,$pairs)
173
	{
173
	{
174
 
174
 
175
	}
175
	}
176
 
176
 
177
	function deleteElement($uid)
177
	function deleteElement($uid)
178
	{
178
	{
179
 
179
 
180
		// uid[0] : utilisateur obligatoire
180
		// uid[0] : utilisateur obligatoire
181
	// uid[1] : identifiant(s) image(s) obligatoire(s)
181
	// uid[1] : identifiant(s) image(s) obligatoire(s)
182
 
182
 
183
	 // Controle detournement utilisateur
183
	 // Controle detournement utilisateur
184
	    session_start();
184
	    session_start();
185
		$this->controleUtilisateur($uid[0]);
185
		$this->controleUtilisateur($uid[0]);
186
 
186
 
187
		$DB=$this->connectDB($this->config,'cel_db');
187
		$DB=$this->connectDB($this->config,'cel_db');
188
 
188
 
189
		$id = rtrim($uid[1],",") ;
189
		$id = rtrim($uid[1],",") ;
190
 
190
 
191
		if (isset($id)) {
191
		if (isset($id)) {
192
	           	$query="DELETE FROM cel_images WHERE ci_id_image in (".$DB->escapeSimple($id) .")";
192
	           	$query="DELETE FROM cel_images WHERE ci_id_image in (".$DB->escapeSimple($id) .")";
193
				$query_sup_lien = "DELETE FROM cel_obs_images WHERE coi_ce_image in (".$DB->escapeSimple($id) .")";
193
				$query_sup_lien = "DELETE FROM cel_obs_images WHERE coi_ce_image in (".$DB->escapeSimple($id) .")";
194
		}
194
		}
195
 
195
 
196
		$res =& $DB->query($query);
196
		$res =& $DB->query($query);
197
 
197
 
198
		if (PEAR::isError($res)) {
198
		if (PEAR::isError($res)) {
199
			die($res->getMessage());
199
			die($res->getMessage());
200
		}
200
		}
201
		else
201
		else
202
		{
202
		{
203
			$res =& $DB->query($query_sup_lien);
203
			$res =& $DB->query($query_sup_lien);
204
			if(PEAR::isError($res))
204
			if(PEAR::isError($res))
205
			{
205
			{
206
				die($res->getMessage());
206
				die($res->getMessage());
207
			}
207
			}
208
 
208
 
209
			$id_fichiers = explode(",",$id) ;
209
			$id_fichiers = explode(",",$id) ;
210
			foreach($id_fichiers as $en_cours)
210
			foreach($id_fichiers as $en_cours)
211
			{
211
			{
212
				$manipulateur_image = new ImageRecreation($this->config);
212
				$manipulateur_image = new ImageRecreation($this->config);
213
            	$manipulateur_image->detruireImageSurDisque($id);
213
            	$manipulateur_image->detruireImageSurDisque($id);
214
			}
214
			}
215
 
215
 
216
			echo "OK" ;
216
			echo "OK" ;
217
			exit() ;
217
			exit() ;
218
		}
218
		}
219
	}
219
	}
220
	
220
	
221
	private function fabriquerSousRequeteRechercheGenerale($id_utilisateur, $chaine_recherche) {
221
	private function fabriquerSousRequeteRechercheGenerale($id_utilisateur, $chaine_recherche) {
222
		
222
		
223
		$requete_recherche_taxon .= 'SELECT coi_ce_image 
223
		$requete_recherche_taxon .= 'SELECT coi_ce_image 
224
								FROM cel_obs_images
224
								FROM cel_obs_images
225
								WHERE coi_ce_observation IN ' .
225
								WHERE coi_ce_observation IN ' .
226
								'(SELECT ordre ' .
226
								'(SELECT ordre ' .
227
									'FROM cel_inventory '.
227
									'FROM cel_inventory '.
228
									'WHERE identifiant ="'.$id_utilisateur.'" '.
228
									'WHERE identifiant ="'.$id_utilisateur.'" '.
229
									'AND nom_sel LIKE "'.$chaine_recherche.'%" '.
229
									'AND nom_sel LIKE "'.$chaine_recherche.'%" '.
230
								')';
230
								')';
231
								
231
								
232
		$requete_recherche_comm = ' ci_meta_comment LIKE "%'.$chaine_recherche.'%" ';
232
		$requete_recherche_comm = ' ci_meta_comment LIKE "%'.$chaine_recherche.'%" ';
233
		
233
		
234
		$requete_recherche_generale = '(ci_id_image IN ( '.($requete_recherche_taxon).') OR ('.$requete_recherche_comm.'))' ;
234
		$requete_recherche_generale = '(ci_id_image IN ( '.($requete_recherche_taxon).') OR ('.$requete_recherche_comm.'))' ;
235
							
235
							
236
		return $requete_recherche_generale;
236
		return $requete_recherche_generale;
237
	}
237
	}
238
	
238
	
239
	private function fabriquerSousRequeteRechercheDate($intervalle, $valeur) {
239
	private function fabriquerSousRequeteRechercheDate($intervalle, $valeur) {
240
		
240
		
241
		$correspondance_champ = array('annee' => 'YEAR','mois' => 'MONTH','jour' => 'DAY');
241
		$correspondance_champ = array('annee' => 'YEAR','mois' => 'MONTH','jour' => 'DAY');
242
		
242
		
243
		$requete_recherche_date = '';
243
		$requete_recherche_date = '';
244
		
244
 
-
 
245
		if(is_numeric($valeur) && $valeur != "00") { 
245
		$requete_recherche_date = $correspondance_champ[$intervalle].'(ci_meta_date) = "'.$valeur.'" ';
246
			$requete_recherche_date = $correspondance_champ[$intervalle].'(ci_meta_date) = "'.$valeur.'" ';
-
 
247
		} else {
-
 
248
			$requete_recherche_date = '( ci_meta_date IS NULL OR ci_meta_date = "0000-00-00")';
-
 
249
		}
246
							
250
							
247
		return $requete_recherche_date;
251
		return $requete_recherche_date;
248
	}
252
	}
249
 
-
 
250
}
253
}
251
?>
254
?>