Subversion Repositories eFlore/Applications.cel

Rev

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

Rev 416 Rev 605
1
<?php
1
<?php
2
 
2
 
3
require_once('include/extract_metadonnee.php') ;
3
require_once('include/extract_metadonnee.php') ;
4
require_once('include/stockage_fichier.php') ;
4
require_once('include/stockage_fichier.php') ;
5
 
5
 
6
/**
6
/**
7
 
7
 
8
 Aurelien Peronnet aurelienperonnet@gmail.com 2008
8
 Aurelien Peronnet aurelienperonnet@gmail.com 2008
9
 
9
 
10
 Ce logiciel est r?gi par la licence CeCILL soumise au droit fran?ais et
10
 Ce logiciel est r?gi par la licence CeCILL soumise au droit fran?ais et
11
 respectant les principes de diffusion des logiciels libres. Vous pouvez
11
 respectant les principes de diffusion des logiciels libres. Vous pouvez
12
 utiliser, modifier et/ou redistribuer ce programme sous les conditions
12
 utiliser, modifier et/ou redistribuer ce programme sous les conditions
13
 de la licence CeCILL telle que diffus?e par le CEA, le CNRS et l'INRIA
13
 de la licence CeCILL telle que diffus?e par le CEA, le CNRS et l'INRIA
14
 sur le site "http://www.cecill.info".
14
 sur le site "http://www.cecill.info".
15
 En contrepartie de l'accessibilit? au code source et des droits de copie,
15
 En contrepartie de l'accessibilit? au code source et des droits de copie,
16
 de modification et de redistribution accord?s par cette licence, il n'est
16
 de modification et de redistribution accord?s par cette licence, il n'est
17
 offert aux utilisateurs qu'une garantie limit?e.  Pour les m?mes raisons,
17
 offert aux utilisateurs qu'une garantie limit?e.  Pour les m?mes raisons,
18
 seule une responsabilit? restreinte p?se sur l'auteur du programme,  le
18
 seule une responsabilit? restreinte p?se sur l'auteur du programme,  le
19
 titulaire des droits patrimoniaux et les conc?dants successifs.
19
 titulaire des droits patrimoniaux et les conc?dants successifs.
20
 
20
 
21
 A cet ?gard  l'attention de l'utilisateur est attir?e sur les risques
21
 A cet ?gard  l'attention de l'utilisateur est attir?e sur les risques
22
 associ?s au chargement,  ? l'utilisation,  ? la modification et/ou au
22
 associ?s au chargement,  ? l'utilisation,  ? la modification et/ou au
23
 d?veloppement et ? la reproduction du logiciel par l'utilisateur ?tant
23
 d?veloppement et ? la reproduction du logiciel par l'utilisateur ?tant
24
 donn? sa sp?cificit? de logiciel libre, qui peut le rendre complexe ?
24
 donn? sa sp?cificit? de logiciel libre, qui peut le rendre complexe ?
25
 manipuler et qui le r?serve donc ? des d?veloppeurs et des professionnels
25
 manipuler et qui le r?serve donc ? des d?veloppeurs et des professionnels
26
 avertis poss?dant  des  connaissances  informatiques approfondies.  Les
26
 avertis poss?dant  des  connaissances  informatiques approfondies.  Les
27
 utilisateurs sont donc invit?s ? charger  et  tester  l'ad?quation  du
27
 utilisateurs sont donc invit?s ? charger  et  tester  l'ad?quation  du
28
 logiciel ? leurs besoins dans des conditions permettant d'assurer la
28
 logiciel ? leurs besoins dans des conditions permettant d'assurer la
29
 s?curit? de leurs syst?mes et ou de leurs donn?es et, plus g?n?ralement,
29
 s?curit? de leurs syst?mes et ou de leurs donn?es et, plus g?n?ralement,
30
 ? l'utiliser et l'exploiter dans les m?mes conditions de s?curit?.
30
 ? l'utiliser et l'exploiter dans les m?mes conditions de s?curit?.
31
 
31
 
32
 Le fait que vous puissiez acc?der ? cet en-t?te signifie que vous avez
32
 Le fait que vous puissiez acc?der ? cet en-t?te signifie que vous avez
33
 pris connaissance de la licence CeCILL, et que vous en avez accept? les
33
 pris connaissance de la licence CeCILL, et que vous en avez accept? les
34
 termes.
34
 termes.
35
 
35
 
36
 */
36
 */
37
 
37
 
38
 
38
 
39
// in : utf8
39
// in : utf8
40
// out : utf8
40
// out : utf8
41
/*
41
/*
42
 * InventoryImageList.php
42
 * InventoryImageList.php
43
 *
43
 *
44
 * Cas d'utilisation :
44
 * Cas d'utilisation :
45
 * Service recherche d'images a partir de divers crit�res
45
 * Service recherche d'images a partir de divers crit�res
46
 *
46
 *
47
 * 2: Le service recherche l'image correspondant au crit�res demand�
47
 * 2: Le service recherche l'image correspondant au crit�res demand�
48
 * 3: Le service renvoie l'adresse de base de l'image qui permet de la localiser sous ses diff�rents formats (X, M ou L)
48
 * 3: Le service renvoie l'adresse de base de l'image qui permet de la localiser sous ses diff�rents formats (X, M ou L)
49
 */
49
 */
50
 
50
 
51
 Class InventoryImageList extends DBAccessor {
51
 Class InventoryImageList extends DBAccessor {
52
 
52
 
53
	var $config;
53
	var $config;
54
 
54
 
55
	function InventoryImageList($config) {
55
	function InventoryImageList($config) {
56
 
56
 
57
		$this->config=$config;
57
		$this->config=$config;
58
	}
58
	}
59
 
59
 
60
 
60
 
61
	// renvoie l'enregistrement correspond � une image
61
	// renvoie l'enregistrement correspond � une image
62
	function getElement($uid)
62
	function getElement($uid)
63
	{
63
	{
64
			// uid[0] : utilisateur obligatoire
64
			// uid[0] : utilisateur obligatoire
65
			// uid[1] : crit�res de filtrage de la forme crit�re1:valeur1;crit�re2:valeur2
65
			// uid[1] : crit�res de filtrage de la forme crit�re1:valeur1;crit�re2:valeur2
66
 
66
 
67
		// Controle detournement utilisateur
67
		// Controle detournement utilisateur
68
	    session_start();
68
	    session_start();
69
		$this->controleUtilisateur($uid[0]);
69
		$this->controleUtilisateur($uid[0]);
70
 
70
 
71
		$DB=$this->connectDB($this->config,'cel_db');
71
		$DB=$this->connectDB($this->config,'cel_db');
72
 
72
 
73
		$criteres = array() ;
73
		$criteres = array() ;
74
 
74
 
75
		if(isset($uid[1]))
75
		if(isset($uid[1]))
76
		{
76
		{
77
			$criteres = explode("&", $uid[1]) ;
77
			$criteres = explode("&", $uid[1]) ;
78
		}
78
		}
79
 
79
 
80
		$query='SELECT * FROM cel_images WHERE ci_ce_utilisateur = "'.$uid[0].'" AND ' ;
80
		$query='SELECT * FROM cel_images WHERE ci_ce_utilisateur = "'.$uid[0].'" AND ' ;
81
 
81
 
82
		$numero_page = 0 ;
82
		$numero_page = 0 ;
83
		$limite = 50 ;
83
		$limite = 50 ;
84
 
84
 
85
		foreach($criteres as $pair)
85
		foreach($criteres as $pair)
86
		{
86
		{
87
			$nom_valeur = explode("=",$pair) ;
87
			$nom_valeur = explode("=",$pair) ;
88
 
88
 
89
			if(sizeof($nom_valeur) != 0)
89
			if(sizeof($nom_valeur) != 0)
90
			{
90
			{
91
					if($nom_valeur[0] == "ci_limite")
91
					if($nom_valeur[0] == "ci_limite")
92
					{
92
					{
93
						$limite = $DB->escapeSimple($nom_valeur[1]) ;
93
						$limite = $DB->escapeSimple($nom_valeur[1]) ;
94
					}
94
					}
95
					elseif($nom_valeur[0] == "ci_numero_page")
95
					elseif($nom_valeur[0] == "ci_numero_page")
96
					{
96
					{
97
						$numero_page = $DB->escapeSimple($nom_valeur[1]) ;
97
						$numero_page = $DB->escapeSimple($nom_valeur[1]) ;
98
					}
98
					}
99
					elseif($nom_valeur[0] == "ci_meta_mots_cles")
99
					elseif($nom_valeur[0] == "ci_meta_mots_cles")
100
					{
100
					{
101
						$mots_cles = rtrim($nom_valeur[1], ',') ;
101
						$mots_cles = rtrim($nom_valeur[1], ',') ;
102
						$mots_cles_liste = explode("," , $mots_cles) ;
102
						$mots_cles_liste = explode("," , $mots_cles) ;
103
 
103
 
104
						foreach($mots_cles_liste as $mot_cle)
104
						foreach($mots_cles_liste as $mot_cle)
105
						{
105
						{
106
							$query .= $nom_valeur[0].' LIKE "%'.$DB->escapeSimple($mot_cle).'%"' ;
106
							$query .= $nom_valeur[0].' LIKE "%'.$DB->escapeSimple($mot_cle).'%"' ;
107
							$query .= ' AND ' ;
107
							$query .= ' AND ' ;
108
						}
108
						}
109
					}
109
					}
110
					elseif($nom_valeur[0] == "ci_meta_comment")
110
					elseif($nom_valeur[0] == "ci_meta_comment")
111
					{
111
					{
112
						$mots_comment_liste = explode(" " , $nom_valeur[1]) ;
112
						$mots_comment_liste = explode(" " , $nom_valeur[1]) ;
113
 
113
 
114
						foreach($mots_comment_liste as $mot_comment)
114
						foreach($mots_comment_liste as $mot_comment)
115
						{
115
						{
116
							$mot_comment = trim($mot_comment) ;
116
							$mot_comment = trim($mot_comment) ;
117
							$query .= $nom_valeur[0].' LIKE "%'.$DB->escapeSimple($mot_comment).'%"' ;
117
							$query .= $nom_valeur[0].' LIKE "%'.$DB->escapeSimple($mot_comment).'%"' ;
118
							$query .= ' AND ' ;
118
							$query .= ' AND ' ;
119
						}
119
						}
120
					}
120
					}
121
					elseif($nom_valeur[0] == "ci_meta_date")
121
					elseif($nom_valeur[0] == "ci_meta_date")
122
					{
122
					{
123
						$query .= 'DATE_FORMAT( '.$nom_valeur[0].', \'%Y-%m-%d\' ) = "'.$DB->escapeSimple($nom_valeur[1]).'"' ;
123
						$query .= 'DATE_FORMAT( '.$nom_valeur[0].', \'%Y-%m-%d\' ) = "'.$DB->escapeSimple($nom_valeur[1]).'"' ;
124
						$query .= ' AND ' ;
124
						$query .= ' AND ' ;
125
					}
125
					}
126
					elseif($nom_valeur[0] == "ci_id_tampon")
126
					elseif($nom_valeur[0] == "ci_id_tampon")
127
					{
127
					{
128
						$ids_tampon = rtrim($nom_valeur[1], ',') ;
128
						$ids_tampon = rtrim($nom_valeur[1], ',') ;
129
						$query .= 'ci_id_image IN ( '.$DB->escapeSimple($ids_tampon).')' ;
129
						$query .= 'ci_id_image IN ( '.$DB->escapeSimple($ids_tampon).')' ;
130
					}
130
					}
131
					else
131
					else
132
					{
132
					{
133
						$query .= $nom_valeur[0].' = "'.$DB->escapeSimple($nom_valeur[1]) ;
133
						$query .= $nom_valeur[0].' = "'.$DB->escapeSimple($nom_valeur[1]) ;
134
						$query .= '" AND ' ;
134
						$query .= '" AND ' ;
135
					}
135
					}
136
			}
136
			}
137
		}
137
		}
138
 
138
 
139
		$debut = $limite*$numero_page ;
139
		$debut = $limite*$numero_page ;
140
 
140
 
141
		$query = rtrim($query,' AND ') ;
141
		$query = rtrim($query,' AND ') ;
142
		$query .= ' ORDER BY ci_ordre LIMIT '.$debut.','.$limite ;
142
		$query .= ' ORDER BY ci_ordre LIMIT '.$debut.','.$limite ;
143
 
143
 
144
		$res =& $DB->query($query);
144
		$res =& $DB->query($query);
145
                if (PEAR::isError($res)) {
145
                if (PEAR::isError($res)) {
146
 
146
 
147
                	die($res->getMessage());
147
                	die($res->getMessage());
148
                }
148
                }
149
 
149
 
150
		$result = array() ;
150
		$result = array() ;
151
 
151
 
152
		while($image = $res->fetchrow(DB_FETCHMODE_ASSOC))
152
		while($image = $res->fetchrow(DB_FETCHMODE_ASSOC))
153
		{
153
		{
154
			$date = split("-",$image['ci_meta_date']) ;
154
			$date = split("-",$image['ci_meta_date']) ;
155
			if(count($date) > 2)
155
			if(count($date) > 2)
156
			{
156
			{
157
				$image['ci_meta_date'] = $date[2].'/'.$date[1].'/'.$date[0] ;
157
				$image['ci_meta_date'] = $date[2].'/'.$date[1].'/'.$date[0] ;
158
			}
158
			}
159
 
159
 
160
			$image['ci_ce_observation'] = '';
160
			$image['ci_ce_observation'] = '';
161
 
161
 
162
			$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].'"';
162
			$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].'"';
163
						
163
						
164
			$res_table_liaison =& $DB->query($requete_table_liaison);
164
			$res_table_liaison =& $DB->query($requete_table_liaison);
165
            if (PEAR::isError($res_table_liaison)) {
165
            if (PEAR::isError($res_table_liaison)) {
166
 
166
 
167
            	die($res_table_liaison->getMessage());
167
            	die($res_table_liaison->getMessage());
168
            }
168
            }
169
 
169
 
170
			$ids_obs = '';
170
			$ids_obs = '';
171
			while($liaison = $res_table_liaison->fetchrow(DB_FETCHMODE_ASSOC))
171
			while($liaison = $res_table_liaison->fetchrow(DB_FETCHMODE_ASSOC))
172
			{
172
			{
173
				$ids_obs .= $liaison['coi_ce_observation'].",";
173
				$ids_obs .= $liaison['coi_ce_observation'].",";
174
			}
174
			}
175
 
175
 
176
			$ids_obs = rtrim($ids_obs,',');
176
			$ids_obs = rtrim($ids_obs,',');
177
 
177
 
178
			if(trim($ids_obs) != '') {
178
			if(trim($ids_obs) != '') {
179
				$requete_obs_liees = 'SELECT * FROM cel_inventory WHERE ordre IN  ('.$ids_obs.') AND identifiant ="'.$uid[0].'"';
179
				$requete_obs_liees = 'SELECT * FROM cel_inventory WHERE ordre IN  ('.$ids_obs.') AND identifiant ="'.$uid[0].'"';
180
				$res_obs_liees =& $DB->query($requete_obs_liees);
180
				$res_obs_liees =& $DB->query($requete_obs_liees);
181
	            if (PEAR::isError($res_obs_liees)) {
181
	            if (PEAR::isError($res_obs_liees)) {
182
 
182
 
183
	            	die($res_obs_liees->getMessage());
183
	            	die($res_obs_liees->getMessage());
184
	            }
184
	            }
185
 
185
 
186
				while($obs_liee = $res_obs_liees->fetchrow(DB_FETCHMODE_ASSOC))
186
				while($obs_liee = $res_obs_liees->fetchrow(DB_FETCHMODE_ASSOC))
187
				{
187
				{
188
					$image['ci_ce_observation'] .= $obs_liee['ordre'].'#'.$obs_liee['nom_sel'].'#'.$obs_liee['transmission'].';;' ;
188
					$image['ci_ce_observation'] .= $obs_liee['ordre'].'#'.$obs_liee['nom_sel'].'#'.$obs_liee['transmission'].';;' ;
189
				}
189
				}
190
			}
190
			}
191
 
191
 
192
			$result[] = $image ;
192
			$result[] = $image ;
193
		}
193
		}
194
 
194
 
195
		$res = json_encode($result) ;
195
		$res = json_encode($result) ;
196
 
196
 
197
		header("content-type: text/json") ;
197
		header("content-type: text/json") ;
198
		print $res ;
198
		print $res ;
199
		exit() ;
199
		exit() ;
200
	}
200
	}
201
 
201
 
202
	// met � jour les m�tadonn�es d'une image
202
	// met � jour les m�tadonn�es d'une image
203
	function updateElement($uid,$pairs)
203
	function updateElement($uid,$pairs)
204
	{
204
	{
205
		// Controle detournement utilisateur
205
		// Controle detournement utilisateur
206
	    session_start();
206
	    session_start();
207
	 	$this->controleUtilisateur($uid[0]);
207
	 	$this->controleUtilisateur($uid[0]);
208
 
208
 
209
		$DB=$this->connectDB($this->config,'cel_db');
209
		$DB=$this->connectDB($this->config,'cel_db');
210
				$query .= ' WHERE '.$ci_id_image.' = "'.$DB->escapeSimple($pairs['ci_id_image']).'"' ;
210
				$query .= ' WHERE '.$ci_id_image.' = "'.$DB->escapeSimple($pairs['ci_id_image']).'"' ;
211
	}
211
	}
212
 
212
 
213
	function deleteElement($uid)
213
	function deleteElement($uid)
214
	{
214
	{
215
 
215
 
216
		// uid[0] : utilisateur obligatoire
216
		// uid[0] : utilisateur obligatoire
217
	// uid[1] : identifiant(s) image(s) obligatoire(s)
217
	// uid[1] : identifiant(s) image(s) obligatoire(s)
218
 
218
 
219
	 // Controle detournement utilisateur
219
	 // Controle detournement utilisateur
220
	    session_start();
220
	    session_start();
221
		$this->controleUtilisateur($uid[0]);
221
		$this->controleUtilisateur($uid[0]);
222
 
222
 
223
		$DB=$this->connectDB($this->config,'cel_db');
223
		$DB=$this->connectDB($this->config,'cel_db');
224
 
224
 
225
		$id = rtrim($uid[1],",") ;
225
		$id = rtrim($uid[1],",") ;
226
 
226
 
227
		if (isset($id)) {
227
		if (isset($id)) {
228
	           	$query="DELETE FROM cel_images WHERE ci_id_image in (".$DB->escapeSimple($id) .")";
228
	           	$query="DELETE FROM cel_images WHERE ci_id_image in (".$DB->escapeSimple($id) .")";
229
				$query_sup_lien = "DELETE FROM cel_obs_images WHERE coi_ce_image in (".$DB->escapeSimple($id) .")";
229
				$query_sup_lien = "DELETE FROM cel_obs_images WHERE coi_ce_image in (".$DB->escapeSimple($id) .")";
230
		}
230
		}
231
 
231
 
232
		$res =& $DB->query($query);
232
		$res =& $DB->query($query);
233
 
233
 
234
		if (PEAR::isError($res)) {
234
		if (PEAR::isError($res)) {
235
			die($res->getMessage());
235
			die($res->getMessage());
236
		}
236
		}
237
		else
237
		else
238
		{
238
		{
239
			$res =& $DB->query($query_sup_lien);
239
			$res =& $DB->query($query_sup_lien);
240
			if(PEAR::isError($res))
240
			if(PEAR::isError($res))
241
			{
241
			{
242
				die($res->getMessage());
242
				die($res->getMessage());
243
			}
243
			}
244
 
244
 
245
			$id_fichiers = explode(",",$id) ;
245
			$id_fichiers = explode(",",$id) ;
246
			foreach($id_fichiers as $en_cours)
246
			foreach($id_fichiers as $en_cours)
247
			{
247
			{
248
				supprimer_fichier($en_cours,$this->config['cel_db']['chemin_images']) ;
248
				$manipulateur_image = new ImageRecreation($this->config);
-
 
249
            	$manipulateur_image->detruireImageSurDisque($id);
249
			}
250
			}
250
 
251
 
251
			echo "OK" ;
252
			echo "OK" ;
252
			exit() ;
253
			exit() ;
253
		}
254
		}
254
	}
255
	}
255
 
256
 
256
}
257
}
257
?>
258
?>