Subversion Repositories eFlore/Applications.cel

Rev

Rev 605 | Rev 898 | Go to most recent revision | Details | Compare with Previous | Last modification | View Log | RSS feed

Rev Author Line No. Line
416 aurelien 1
<?php
2
 
3
/**
4
 
5
 Aurelien Peronnet aurelienperonnet@gmail.com 2008
6
 
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
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
11
 sur le site "http://www.cecill.info".
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
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
16
 titulaire des droits patrimoniaux et les conc?dants successifs.
17
 
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
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 ?
22
 manipuler et qui le r?serve donc ? des d?veloppeurs et des professionnels
23
 avertis poss?dant  des  connaissances  informatiques approfondies.  Les
24
 utilisateurs sont donc invit?s ? charger  et  tester  l'ad?quation  du
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,
27
 ? l'utiliser et l'exploiter dans les m?mes conditions de s?curit?.
28
 
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
31
 termes.
32
 
33
 */
34
 
35
 
36
// in : utf8
37
// out : utf8
38
/*
39
 * InventoryImageLink.php
40
 *
41
 * Cas d'utilisation :
42
 * Service de liaisons d'images à des observations
43
 *
44
 * 2: Le service lie une ou plusieurs images à une ou plusieurs observations
45
 * 3: Le service renvoie les observations liées à une image
46
 */
47
 
48
 Class InventoryImageLink extends DBAccessor {
49
 
50
	var $config;
51
 
52
	function InventoryImageLink($config) {
53
 
54
		$this->config=$config;
55
	}
56
 
57
	function createElement($pairs)
58
	{
59
		// Controle detournement utilisateur
60
		session_start();
61
		$this->controleUtilisateur($pairs['identifiant']);
62
 
63
		$DB=$this->connectDB($this->config,'cel_db');
64
 
65
		$ids_images = $pairs['coi_ce_image'] ;
66
		$ids_images = rtrim($ids_images,',') ;
67
 
68
		$ids_images_liste = explode(",",$ids_images) ;
69
 
70
		$utilisateur = $pairs['identifiant'] ;
71
 
72
		$ids_observations = $pairs['coi_ce_observation'] ;
73
		$ids_observations = rtrim($ids_observations,',') ;
74
		$ids_observations_liste = explode(",",$ids_observations) ;
75
 
76
		foreach($ids_images_liste as $image)
77
		{
78
			foreach($ids_observations_liste as $observation)
79
			{
759 aurelien 80
				$query = 'INSERT INTO cel_obs_images (coi_ce_image, coi_ce_utilisateur, coi_ce_observation, coi_date_liaison) VALUES ("'.$DB->escapeSimple($image).'","'.$DB->escapeSimple($utilisateur).'","'.$DB->escapeSimple($observation).'", NOW()) ON DUPLICATE KEY UPDATE coi_ce_image = coi_ce_image' ;
416 aurelien 81
 
82
				$res =& $DB->query($query);
83
				if (PEAR::isError($res)) {
84
 
85
					die($res->getMessage());
86
				}
87
			}
88
		}
89
 
90
		echo "OK" ;
91
		exit ;
92
	}
93
 
94
	// renvoie les numeros des images liées à une observation ou l'inverse, suivant le paramètre
95
	function getElement($uid)
96
	{
97
			// uid[0] : utilisateur obligatoire
98
 
99
		// Controle detournement utilisateur
100
	    session_start();
101
		$this->controleUtilisateur($uid[0]);
102
 
103
		$DB=$this->connectDB($this->config,'cel_db');
104
 
105
		if($uid) {
106
 
107
			$param = $uid[1] ;
108
			$param = ltrim($param,'&') ;
109
 
110
			$tab_param = split('=',$param) ;
111
 
112
			$field = $tab_param[0] ;
113
			$value = $tab_param[1] ;
114
 
115
			$query = "" ;
116
 
117
			if ($field == 'coi_ce_observation')
118
			{
119
				$column = 'coi_ce_image' ;
120
				$query = 'SELECT coi_ce_image, ci_meta_height , ci_meta_width '.
121
						 'FROM cel_obs_images, cel_images '.
122
						 'WHERE coi_ce_image = ci_id_image '.
123
						 'AND coi_ce_observation = "'.$DB->escapeSimple($value).'" AND coi_ce_utilisateur ="'.$DB->escapeSimple($uid[0]).'"' ;
124
			}
125
			else
126
			{
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,' .
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
			}
131
 
132
		}
133
 
134
		$res =& $DB->query($query);
135
                if (PEAR::isError($res)) {
136
 
137
                	die($res->getMessage());
138
                }
139
 
140
		while ($image_liee = $res->fetchrow(DB_FETCHMODE_ORDERED)) {
141
 
142
			$images_liees[] = $image_liee  ;
143
		}
144
 
145
		$res = json_encode($images_liees) ;
146
 
147
		header("content-type: text/json") ;
148
		print $res ;
149
		exit() ;
150
	}
151
 
152
	// met à jour les associations entre images et observations
153
	function updateElement($uid,$pairs)
154
	{
155
	/*	// Controle detournement utilisateur
156
			    session_start();
157
			 	if (($_SESSION['user']!="") && $_SESSION['user']['name']!=$uid[0]) {
158
			 		print "Acces interdit";
159
		 			return;
160
		     	}
161
 
162
		$DB=$this->connectDB($this->config,'cel_db');
163
 
164
		$query = "SELECT * FROM cel_obs_images WHERE " ;
165
				$query .= ' WHERE '.$ci_id_image.' = "'.$DB->escapeSimple($pairs['ci_id_image']).'"' ;
166
	}
167
 
168
	function deleteElement($uid)
169
	{
170
 
171
		// uid[0] : utilisateur obligatoire
172
	// uid[1] : identifiant(s) image(s) obligatoire(s)
173
 
174
	 // Controle detournement utilisateur
175
	    session_start();
176
		if (($_SESSION['user']!="") && $_SESSION['user']['name']!=$uid[0]) {
177
			print "Acces interdit";
178
			return;
179
	   	}
180
 
181
		$DB=$this->connectDB($this->config,'cel_db');
182
 
183
		$id = rtrim($uid[1],",") ;
184
 
185
		if (isset($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]) .")";
188
		}
189
 
190
		$res =& $DB->query($query);
191
 
192
		if (PEAR::isError($res)) {
193
			die($res->getMessage());
194
		}
195
		else
196
		{
197
			echo "OK" ;
198
			exit() ;
199
		}
200
 
201
		$id_fichiers = explode(",",$id) ;
202
			foreach($id_fichiers as $en_cours)
203
			{
204
				supprimer_fichier($en_cours) ;
205
			}
206
 
207
	*/
208
	}
209
 
210
	function deleteElement($uid)
211
	{
212
 
213
		// uid[0] : utilisateur obligatoire
214
	// uid[1] : identifiant(s) image(s) obligatoire(s)
215
	// uid[2] : identifiant(s) observations
216
 
217
	 // Controle detournement utilisateur
218
	    session_start();
219
		$this->controleUtilisateur($uid[0]);
220
 
221
		$DB=$this->connectDB($this->config,'cel_db');
222
 
605 aurelien 223
		$id_img = $uid[1] ;
416 aurelien 224
		$id_obs = $DB->escapeSimple($uid[2]) ;
225
 
226
		$id = $uid[0] ;
227
 
228
		if (isset($id)) {
605 aurelien 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."'" ;
416 aurelien 230
		}
231
 
232
		$res =& $DB->query($query);
233
 
234
		if (PEAR::isError($res)) {
235
			die($res->getMessage());
236
		}
237
		else
238
		{
239
			echo "OK" ;
240
			exit() ;
241
		}
242
 
243
	}
244
 
245
}
246
?>