Subversion Repositories eFlore/Applications.cel

Rev

Rev 416 | Rev 759 | 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
/**
3
/**
4
 
4
 
5
 Aurelien Peronnet aurelienperonnet@gmail.com 2008
5
 Aurelien Peronnet aurelienperonnet@gmail.com 2008
6
 
6
 
7
 Ce logiciel est r?gi par la licence CeCILL soumise au droit fran?ais et
7
 Ce logiciel est r?gi par la licence CeCILL soumise au droit fran?ais et
8
 respectant les principes de diffusion des logiciels libres. Vous pouvez
8
 respectant les principes de diffusion des logiciels libres. Vous pouvez
9
 utiliser, modifier et/ou redistribuer ce programme sous les conditions
9
 utiliser, modifier et/ou redistribuer ce programme sous les conditions
10
 de la licence CeCILL telle que diffus?e par le CEA, le CNRS et l'INRIA
10
 de la licence CeCILL telle que diffus?e par le CEA, le CNRS et l'INRIA
11
 sur le site "http://www.cecill.info".
11
 sur le site "http://www.cecill.info".
12
 En contrepartie de l'accessibilit? au code source et des droits de copie,
12
 En contrepartie de l'accessibilit? au code source et des droits de copie,
13
 de modification et de redistribution accord?s par cette licence, il n'est
13
 de modification et de redistribution accord?s par cette licence, il n'est
14
 offert aux utilisateurs qu'une garantie limit?e.  Pour les m?mes raisons,
14
 offert aux utilisateurs qu'une garantie limit?e.  Pour les m?mes raisons,
15
 seule une responsabilit? restreinte p?se sur l'auteur du programme,  le
15
 seule une responsabilit? restreinte p?se sur l'auteur du programme,  le
16
 titulaire des droits patrimoniaux et les conc?dants successifs.
16
 titulaire des droits patrimoniaux et les conc?dants successifs.
17
 
17
 
18
 A cet ?gard  l'attention de l'utilisateur est attir?e sur les risques
18
 A cet ?gard  l'attention de l'utilisateur est attir?e sur les risques
19
 associ?s au chargement,  ? l'utilisation,  ? la modification et/ou au
19
 associ?s au chargement,  ? l'utilisation,  ? la modification et/ou au
20
 d?veloppement et ? la reproduction du logiciel par l'utilisateur ?tant
20
 d?veloppement et ? la reproduction du logiciel par l'utilisateur ?tant
21
 donn? sa sp?cificit? de logiciel libre, qui peut le rendre complexe ?
21
 donn? sa sp?cificit? de logiciel libre, qui peut le rendre complexe ?
22
 manipuler et qui le r?serve donc ? des d?veloppeurs et des professionnels
22
 manipuler et qui le r?serve donc ? des d?veloppeurs et des professionnels
23
 avertis poss?dant  des  connaissances  informatiques approfondies.  Les
23
 avertis poss?dant  des  connaissances  informatiques approfondies.  Les
24
 utilisateurs sont donc invit?s ? charger  et  tester  l'ad?quation  du
24
 utilisateurs sont donc invit?s ? charger  et  tester  l'ad?quation  du
25
 logiciel ? leurs besoins dans des conditions permettant d'assurer la
25
 logiciel ? leurs besoins dans des conditions permettant d'assurer la
26
 s?curit? de leurs syst?mes et ou de leurs donn?es et, plus g?n?ralement,
26
 s?curit? de leurs syst?mes et ou de leurs donn?es et, plus g?n?ralement,
27
 ? l'utiliser et l'exploiter dans les m?mes conditions de s?curit?.
27
 ? l'utiliser et l'exploiter dans les m?mes conditions de s?curit?.
28
 
28
 
29
 Le fait que vous puissiez acc?der ? cet en-t?te signifie que vous avez
29
 Le fait que vous puissiez acc?der ? cet en-t?te signifie que vous avez
30
 pris connaissance de la licence CeCILL, et que vous en avez accept? les
30
 pris connaissance de la licence CeCILL, et que vous en avez accept? les
31
 termes.
31
 termes.
32
 
32
 
33
 */
33
 */
34
 
34
 
35
 
35
 
36
// in : utf8
36
// in : utf8
37
// out : utf8
37
// out : utf8
38
/*
38
/*
39
 * InventoryImageLink.php
39
 * InventoryImageLink.php
40
 *
40
 *
41
 * Cas d'utilisation :
41
 * Cas d'utilisation :
42
 * Service de liaisons d'images à des observations
42
 * Service de liaisons d'images à des observations
43
 *
43
 *
44
 * 2: Le service lie une ou plusieurs images à une ou plusieurs observations
44
 * 2: Le service lie une ou plusieurs images à une ou plusieurs observations
45
 * 3: Le service renvoie les observations liées à une image
45
 * 3: Le service renvoie les observations liées à une image
46
 */
46
 */
47
 
47
 
48
 Class InventoryImageLink extends DBAccessor {
48
 Class InventoryImageLink extends DBAccessor {
49
 
49
 
50
	var $config;
50
	var $config;
51
 
51
 
52
	function InventoryImageLink($config) {
52
	function InventoryImageLink($config) {
53
 
53
 
54
		$this->config=$config;
54
		$this->config=$config;
55
	}
55
	}
56
 
56
 
57
	function createElement($pairs)
57
	function createElement($pairs)
58
	{
58
	{
59
		// Controle detournement utilisateur
59
		// Controle detournement utilisateur
60
		session_start();
60
		session_start();
61
		$this->controleUtilisateur($pairs['identifiant']);
61
		$this->controleUtilisateur($pairs['identifiant']);
62
 
62
 
63
		$DB=$this->connectDB($this->config,'cel_db');
63
		$DB=$this->connectDB($this->config,'cel_db');
64
 
64
 
65
		$ids_images = $pairs['coi_ce_image'] ;
65
		$ids_images = $pairs['coi_ce_image'] ;
66
		$ids_images = rtrim($ids_images,',') ;
66
		$ids_images = rtrim($ids_images,',') ;
67
 
67
 
68
		$ids_images_liste = explode(",",$ids_images) ;
68
		$ids_images_liste = explode(",",$ids_images) ;
69
 
69
 
70
		$utilisateur = $pairs['identifiant'] ;
70
		$utilisateur = $pairs['identifiant'] ;
71
 
71
 
72
		$ids_observations = $pairs['coi_ce_observation'] ;
72
		$ids_observations = $pairs['coi_ce_observation'] ;
73
		$ids_observations = rtrim($ids_observations,',') ;
73
		$ids_observations = rtrim($ids_observations,',') ;
74
		$ids_observations_liste = explode(",",$ids_observations) ;
74
		$ids_observations_liste = explode(",",$ids_observations) ;
75
 
75
 
76
		foreach($ids_images_liste as $image)
76
		foreach($ids_images_liste as $image)
77
		{
77
		{
78
			foreach($ids_observations_liste as $observation)
78
			foreach($ids_observations_liste as $observation)
79
			{
79
			{
80
				$query = 'INSERT INTO cel_obs_images (coi_ce_image, coi_ce_utilisateur, coi_ce_observation) VALUES ("'.$DB->escapeSimple($image).'","'.$DB->escapeSimple($utilisateur).'","'.$DB->escapeSimple($observation).'") ON DUPLICATE KEY UPDATE coi_ce_image = coi_ce_image' ;
80
				$query = 'INSERT INTO cel_obs_images (coi_ce_image, coi_ce_utilisateur, coi_ce_observation) VALUES ("'.$DB->escapeSimple($image).'","'.$DB->escapeSimple($utilisateur).'","'.$DB->escapeSimple($observation).'") ON DUPLICATE KEY UPDATE coi_ce_image = coi_ce_image' ;
81
				
81
				
82
				$res =& $DB->query($query);
82
				$res =& $DB->query($query);
83
				if (PEAR::isError($res)) {
83
				if (PEAR::isError($res)) {
84
 
84
 
85
					die($res->getMessage());
85
					die($res->getMessage());
86
				}
86
				}
87
			}
87
			}
88
		}
88
		}
89
 
89
 
90
		echo "OK" ;
90
		echo "OK" ;
91
		exit ;
91
		exit ;
92
	}
92
	}
93
 
93
 
94
	// renvoie les numeros des images liées à une observation ou l'inverse, suivant le paramètre
94
	// renvoie les numeros des images liées à une observation ou l'inverse, suivant le paramètre
95
	function getElement($uid)
95
	function getElement($uid)
96
	{
96
	{
97
			// uid[0] : utilisateur obligatoire
97
			// uid[0] : utilisateur obligatoire
98
 
98
 
99
		// Controle detournement utilisateur
99
		// Controle detournement utilisateur
100
	    session_start();
100
	    session_start();
101
		$this->controleUtilisateur($uid[0]);
101
		$this->controleUtilisateur($uid[0]);
102
 
102
 
103
		$DB=$this->connectDB($this->config,'cel_db');
103
		$DB=$this->connectDB($this->config,'cel_db');
104
 
104
 
105
		if($uid) {
105
		if($uid) {
106
 
106
 
107
			$param = $uid[1] ;
107
			$param = $uid[1] ;
108
			$param = ltrim($param,'&') ;
108
			$param = ltrim($param,'&') ;
109
 
109
 
110
			$tab_param = split('=',$param) ;
110
			$tab_param = split('=',$param) ;
111
 
111
 
112
			$field = $tab_param[0] ;
112
			$field = $tab_param[0] ;
113
			$value = $tab_param[1] ;
113
			$value = $tab_param[1] ;
114
 
114
 
115
			$query = "" ;
115
			$query = "" ;
116
 
116
 
117
			if ($field == 'coi_ce_observation')
117
			if ($field == 'coi_ce_observation')
118
			{
118
			{
119
				$column = 'coi_ce_image' ;
119
				$column = 'coi_ce_image' ;
120
				$query = 'SELECT coi_ce_image, ci_meta_height , ci_meta_width '.
120
				$query = 'SELECT coi_ce_image, ci_meta_height , ci_meta_width '.
121
						 'FROM cel_obs_images, cel_images '.
121
						 'FROM cel_obs_images, cel_images '.
122
						 'WHERE coi_ce_image = ci_id_image '.
122
						 'WHERE coi_ce_image = ci_id_image '.
123
						 'AND coi_ce_observation = "'.$DB->escapeSimple($value).'" AND coi_ce_utilisateur ="'.$DB->escapeSimple($uid[0]).'"' ;
123
						 'AND coi_ce_observation = "'.$DB->escapeSimple($value).'" AND coi_ce_utilisateur ="'.$DB->escapeSimple($uid[0]).'"' ;
124
			}
124
			}
125
			else
125
			else
126
			{
126
			{
127
				$column = 'coi_ce_observation' ;
127
				$column = 'coi_ce_observation' ;
128
				$query = 'SELECT nom_sel, num_nom_sel, nom_ret, num_nom_ret, num_taxon, famille, location, ordre, date_observation, lieudit,' .
128
				$query = 'SELECT nom_sel, num_nom_sel, nom_ret, num_nom_ret, num_taxon, famille, location, ordre, date_observation, lieudit,' .
129
 				'station, milieu, commentaire, transmission, id_location from cel_inventory WHERE ordre IN (SELECT '.$column.' FROM cel_obs_images WHERE '.$field.' = "'.$DB->escapeSimple($value).'") AND identifiant = "'.$DB->escapeSimple($uid[0]).' "' ;
129
 				'station, milieu, commentaire, transmission, id_location from cel_inventory WHERE ordre IN (SELECT '.$column.' FROM cel_obs_images WHERE '.$field.' = "'.$DB->escapeSimple($value).'") AND identifiant = "'.$DB->escapeSimple($uid[0]).' "' ;
130
			}
130
			}
131
 
131
 
132
		}
132
		}
133
 
133
 
134
		$res =& $DB->query($query);
134
		$res =& $DB->query($query);
135
                if (PEAR::isError($res)) {
135
                if (PEAR::isError($res)) {
136
 
136
 
137
                	die($res->getMessage());
137
                	die($res->getMessage());
138
                }
138
                }
139
 
139
 
140
		while ($image_liee = $res->fetchrow(DB_FETCHMODE_ORDERED)) {
140
		while ($image_liee = $res->fetchrow(DB_FETCHMODE_ORDERED)) {
141
 
141
 
142
			$images_liees[] = $image_liee  ;
142
			$images_liees[] = $image_liee  ;
143
		}
143
		}
144
 
144
 
145
		$res = json_encode($images_liees) ;
145
		$res = json_encode($images_liees) ;
146
 
146
 
147
		header("content-type: text/json") ;
147
		header("content-type: text/json") ;
148
		print $res ;
148
		print $res ;
149
		exit() ;
149
		exit() ;
150
	}
150
	}
151
 
151
 
152
	// met à jour les associations entre images et observations
152
	// met à jour les associations entre images et observations
153
	function updateElement($uid,$pairs)
153
	function updateElement($uid,$pairs)
154
	{
154
	{
155
	/*	// Controle detournement utilisateur
155
	/*	// Controle detournement utilisateur
156
			    session_start();
156
			    session_start();
157
			 	if (($_SESSION['user']!="") && $_SESSION['user']['name']!=$uid[0]) {
157
			 	if (($_SESSION['user']!="") && $_SESSION['user']['name']!=$uid[0]) {
158
			 		print "Acces interdit";
158
			 		print "Acces interdit";
159
		 			return;
159
		 			return;
160
		     	}
160
		     	}
161
 
161
 
162
		$DB=$this->connectDB($this->config,'cel_db');
162
		$DB=$this->connectDB($this->config,'cel_db');
163
 
163
 
164
		$query = "SELECT * FROM cel_obs_images WHERE " ;
164
		$query = "SELECT * FROM cel_obs_images WHERE " ;
165
				$query .= ' WHERE '.$ci_id_image.' = "'.$DB->escapeSimple($pairs['ci_id_image']).'"' ;
165
				$query .= ' WHERE '.$ci_id_image.' = "'.$DB->escapeSimple($pairs['ci_id_image']).'"' ;
166
	}
166
	}
167
 
167
 
168
	function deleteElement($uid)
168
	function deleteElement($uid)
169
	{
169
	{
170
 
170
 
171
		// uid[0] : utilisateur obligatoire
171
		// uid[0] : utilisateur obligatoire
172
	// uid[1] : identifiant(s) image(s) obligatoire(s)
172
	// uid[1] : identifiant(s) image(s) obligatoire(s)
173
 
173
 
174
	 // Controle detournement utilisateur
174
	 // Controle detournement utilisateur
175
	    session_start();
175
	    session_start();
176
		if (($_SESSION['user']!="") && $_SESSION['user']['name']!=$uid[0]) {
176
		if (($_SESSION['user']!="") && $_SESSION['user']['name']!=$uid[0]) {
177
			print "Acces interdit";
177
			print "Acces interdit";
178
			return;
178
			return;
179
	   	}
179
	   	}
180
 
180
 
181
		$DB=$this->connectDB($this->config,'cel_db');
181
		$DB=$this->connectDB($this->config,'cel_db');
182
 
182
 
183
		$id = rtrim($uid[1],",") ;
183
		$id = rtrim($uid[1],",") ;
184
 
184
 
185
		if (isset($id)) {
185
		if (isset($id)) {
186
	           	$query="DELETE FROM cel_images WHERE ci_id_image in (".$DB->escapeSimple($id) .")";
186
	           	$query="DELETE FROM cel_images WHERE ci_id_image in (".$DB->escapeSimple($id) .")";
187
			//$query = "DELETE FROM cel_obs_images WHERE coi_fk__image in (".$DB->escapeSimple($uid[1]) .")";
187
			//$query = "DELETE FROM cel_obs_images WHERE coi_fk__image in (".$DB->escapeSimple($uid[1]) .")";
188
		}
188
		}
189
 
189
 
190
		$res =& $DB->query($query);
190
		$res =& $DB->query($query);
191
 
191
 
192
		if (PEAR::isError($res)) {
192
		if (PEAR::isError($res)) {
193
			die($res->getMessage());
193
			die($res->getMessage());
194
		}
194
		}
195
		else
195
		else
196
		{
196
		{
197
			echo "OK" ;
197
			echo "OK" ;
198
			exit() ;
198
			exit() ;
199
		}
199
		}
200
 
200
 
201
		$id_fichiers = explode(",",$id) ;
201
		$id_fichiers = explode(",",$id) ;
202
			foreach($id_fichiers as $en_cours)
202
			foreach($id_fichiers as $en_cours)
203
			{
203
			{
204
				supprimer_fichier($en_cours) ;
204
				supprimer_fichier($en_cours) ;
205
			}
205
			}
206
 
206
 
207
	*/
207
	*/
208
	}
208
	}
209
 
209
 
210
	function deleteElement($uid)
210
	function deleteElement($uid)
211
	{
211
	{
212
 
212
 
213
		// uid[0] : utilisateur obligatoire
213
		// uid[0] : utilisateur obligatoire
214
	// uid[1] : identifiant(s) image(s) obligatoire(s)
214
	// uid[1] : identifiant(s) image(s) obligatoire(s)
215
	// uid[2] : identifiant(s) observations
215
	// uid[2] : identifiant(s) observations
216
 
216
 
217
	 // Controle detournement utilisateur
217
	 // Controle detournement utilisateur
218
	    session_start();
218
	    session_start();
219
		$this->controleUtilisateur($uid[0]);
219
		$this->controleUtilisateur($uid[0]);
220
 
220
 
221
		$DB=$this->connectDB($this->config,'cel_db');
221
		$DB=$this->connectDB($this->config,'cel_db');
222
 
222
 
223
		$id_img = $DB->escapeSimple($uid[1]) ;
223
		$id_img = $uid[1] ;
224
		$id_obs = $DB->escapeSimple($uid[2]) ;
224
		$id_obs = $DB->escapeSimple($uid[2]) ;
225
 
225
 
226
		$id = $uid[0] ;
226
		$id = $uid[0] ;
227
 
227
 
228
		if (isset($id)) {
228
		if (isset($id)) {
229
	           	$query = "DELETE FROM cel_obs_images WHERE coi_ce_image = ".$id_img." AND coi_ce_observation IN (".$id_obs.") AND coi_ce_utilisateur = '".$id."'" ;
229
	           	$query = "DELETE FROM cel_obs_images WHERE coi_ce_image IN (".$id_img.") AND coi_ce_observation IN (".$id_obs.") AND coi_ce_utilisateur = '".$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
			echo "OK" ;
239
			echo "OK" ;
240
			exit() ;
240
			exit() ;
241
		}
241
		}
242
 
242
 
243
	}
243
	}
244
 
244
 
245
}
245
}
246
?>
246
?>