Subversion Repositories eFlore/Applications.cel

Rev

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

Rev 759 Rev 898
Line 1... Line 1...
1
<?php
1
<?php
2
 
-
 
-
 
2
// ATTENTION ! Classe compatible uniquement avec nouveau format de bdd du cel //
3
/**
3
/**
-
 
4
* PHP Version 5
-
 
5
*
-
 
6
* @category  PHP
-
 
7
* @package   jrest
-
 
8
* @author    Aurélien Peronnet <aurelien@tela-botanica.org>
-
 
9
* @copyright 2010 Tela-Botanica
-
 
10
* @license   http://www.cecill.info/licences/Licence_CeCILL_V2-fr.txt Licence CECILL
-
 
11
* @version   SVN: <svn_id>
-
 
12
* @link      /doc/jrest/
-
 
13
*/
Line 4... Line -...
4
 
-
 
5
 Aurelien Peronnet aurelienperonnet@gmail.com 2008
14
 
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
15
/**
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
 
16
* InventoryImageLink.php
35
 
17
* 
36
// in : utf8
18
* in : utf8
37
// out : utf8
-
 
38
/*
-
 
39
 * InventoryImageLink.php
19
* out : utf8
40
 *
20
*
41
 * Cas d'utilisation :
21
* Cas d'utilisation :
42
 * Service de liaisons d'images à des observations
22
* Service de liaisons d'images à des observations
43
 *
23
*
44
 * 2: Le service lie une ou plusieurs images à une ou plusieurs observations
24
* 2: Le service lie une ou plusieurs images à une ou plusieurs observations
45
 * 3: Le service renvoie les observations liées à une image
25
* 3: Le service renvoie les observations liées à une image
46
 */
-
 
47
 
26
*/
48
 Class InventoryImageLink extends DBAccessor {
-
 
49
 
-
 
50
	var $config;
-
 
51
 
-
 
52
	function InventoryImageLink($config) {
-
 
53
 
-
 
54
		$this->config=$config;
-
 
Line 55... Line 27...
55
	}
27
class InventoryImageLink extends Cel {
56
 
28
 
57
	function createElement($pairs)
29
	function createElement($pairs)
58
	{
30
	{
59
		// Controle detournement utilisateur
31
		// Controle detournement utilisateur
60
		session_start();
-
 
61
		$this->controleUtilisateur($pairs['identifiant']);
-
 
Line 62... Line 32...
62
 
32
		session_start();
63
		$DB=$this->connectDB($this->config,'cel_db');
33
		$this->controleUtilisateur($pairs['ce_utilisateur']);
Line 64... Line 34...
64
 
34
 
Line 65... Line 35...
65
		$ids_images = $pairs['coi_ce_image'] ;
35
		$ids_images = $pairs['id_image'] ;
Line 66... Line 36...
66
		$ids_images = rtrim($ids_images,',') ;
36
		$ids_images = rtrim($ids_images,',') ;
67
 
37
 
68
		$ids_images_liste = explode(",",$ids_images) ;
38
		$ids_images_liste = explode(",",$ids_images) ;
-
 
39
 
-
 
40
		$utilisateur = $pairs['ce_utilisateur'] ;
Line 69... Line 41...
69
 
41
 
70
		$utilisateur = $pairs['identifiant'] ;
42
		$ids_observations = $pairs['id_observation'] ;
71
 
43
		$ids_observations = rtrim($ids_observations,',') ;
72
		$ids_observations = $pairs['coi_ce_observation'] ;
44
		$ids_observations_liste = explode(",",$ids_observations) ;
-
 
45
		
-
 
46
		$retour = false;
73
		$ids_observations = rtrim($ids_observations,',') ;
47
 
-
 
48
		foreach($ids_images_liste as $image)
Line 74... Line 49...
74
		$ids_observations_liste = explode(",",$ids_observations) ;
49
		{
75
 
50
			foreach($ids_observations_liste as $observation)
76
		foreach($ids_images_liste as $image)
-
 
77
		{
51
			{
78
			foreach($ids_observations_liste as $observation)
52
				$requete_creation_lien = 'INSERT INTO cel_obs_images (id_image, id_utilisateur, id_observation, date_liaison) '.
79
			{
53
					   	 'VALUES '. 
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' ;
54
						 '("'.$this->proteger($image).'","'.$this->proteger($utilisateur).'","'.$this->proteger($observation).'", NOW()) '.
Line 81... Line 55...
81
				
55
						 'ON DUPLICATE KEY UPDATE id_image = id_image' ;
82
				$res =& $DB->query($query);
56
				
83
				if (PEAR::isError($res)) {
57
				$resultat_creation_lien = $this->executer($requete_creation_lien);
Line -... Line 58...
-
 
58
				if ($resultat_creation_lien) {
84
 
59
					$retour = "OK";
-
 
60
				}
-
 
61
			}
-
 
62
		}
-
 
63
 
85
					die($res->getMessage());
64
		echo $retour ;
86
				}
65
		exit ;
87
			}
-
 
88
		}
-
 
89
 
66
	}
90
		echo "OK" ;
67
 
91
		exit ;
68
	/**
Line 92... Line -...
92
	}
-
 
93
 
-
 
94
	// renvoie les numeros des images liées à une observation ou l'inverse, suivant le paramètre
69
	 * renvoie les numeros des images liées à une observation ou l'inverse, suivant le paramètre
Line 95... Line 70...
95
	function getElement($uid)
70
	 * uid[0] : utilisateur obligatoire
96
	{
71
	 * uid[1] : ordre_observation=valeur ou bien id_image=valeur
Line 97... Line 72...
97
			// uid[0] : utilisateur obligatoire
72
	 * 
Line 98... Line 73...
98
 
73
	 */ 
99
		// Controle detournement utilisateur
74
	function getElement($uid)
Line 100... Line 75...
100
	    session_start();
75
	{
Line 101... Line 76...
101
		$this->controleUtilisateur($uid[0]);
76
		// Controle detournement utilisateur
102
 
77
	    session_start();
103
		$DB=$this->connectDB($this->config,'cel_db');
78
		$this->controleUtilisateur($uid[0]);
104
 
79
 
105
		if($uid) {
80
		if($uid) {
106
 
81
 
107
			$param = $uid[1] ;
82
			$param = $uid[1] ;
108
			$param = ltrim($param,'&') ;
83
			$param = ltrim($param,'&') ;
109
 
84
 
110
			$tab_param = split('=',$param) ;
85
			$tab_param = split('=',$param) ;
111
 
86
 
112
			$field = $tab_param[0] ;
87
			$field = $tab_param[0] ;
113
			$value = $tab_param[1] ;
88
			$value = $tab_param[1] ;
114
 
89
 
Line 115... Line 90...
115
			$query = "" ;
90
			$requete_selection_liaison = "" ;
Line 116... Line 91...
116
 
91
 
117
			if ($field == 'coi_ce_observation')
-
 
118
			{
92
			if ($field == 'id_observation')
119
				$column = 'coi_ce_image' ;
-
 
120
				$query = 'SELECT coi_ce_image, ci_meta_height , ci_meta_width '.
93
			{
121
						 'FROM cel_obs_images, cel_images '.
-
 
122
						 'WHERE coi_ce_image = ci_id_image '.
94
				$column = 'id_image' ;
123
						 'AND coi_ce_observation = "'.$DB->escapeSimple($value).'" AND coi_ce_utilisateur ="'.$DB->escapeSimple($uid[0]).'"' ;
-
 
124
			}
95
				$requete_selection_liaison = 'SELECT cel_obs_images.id_image, hauteur , largeur '.
125
			else
96
						 'FROM cel_obs_images, cel_images '.
126
			{
-
 
127
				$column = 'coi_ce_observation' ;
-
 
Line -... Line 97...
-
 
97
						 'WHERE cel_obs_images.id_image = cel_images.id_image '.
128
				$query = 'SELECT nom_sel, num_nom_sel, nom_ret, num_nom_ret, num_taxon, famille, location, ordre, date_observation, lieudit,' .
98
						 'AND id_observation = '.$this->proteger($value).' AND id_utilisateur = '.$this->proteger($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]).' "' ;
99
			}
130
			}
100
			else
131
 
101
			{
Line 132... Line -...
132
		}
-
 
133
 
102
				$column = 'id_observation' ;
134
		$res =& $DB->query($query);
103
				$requete_selection_liaison = 'SELECT nom_sel, nom_sel_nn, nom_ret, nom_ret_nn, nt, famille, zone_geo, ordre, date_observation, lieudit,' .
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  ;
-
 
Line 143... Line -...
143
		}
-
 
144
 
-
 
145
		$res = json_encode($images_liees) ;
104
 				'station, milieu, commentaire, transmission, ce_zone_geo from cel_obs WHERE id_observation IN (SELECT '.$column.' FROM cel_obs_images WHERE '.$field.' = "'.$this->proteger($value).'") AND ce_utilisateur = "'.$this->proteger($uid[0]).' "' ;
Line -... Line 105...
-
 
105
			}
-
 
106
 
-
 
107
		}
-
 
108
 
-
 
109
		$resultat_selection_liaison = $this->executer($requete_selection_liaison);
-
 
110
		
-
 
111
		$liaisons = array();
146
 
112
        if (is_array($resultat_selection_liaison) && count($resultat_selection_liaison) > 0) {
147
		header("content-type: text/json") ;
113
			$liaisons = $resultat_selection_liaison;
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
114
        }
196
		{
115
 
197
			echo "OK" ;
116
		$retour_encode = json_encode($liaisons) ;
Line 198... Line -...
198
			exit() ;
-
 
199
		}
-
 
200
 
117
		header("content-type: text/json") ;
201
		$id_fichiers = explode(",",$id) ;
118
		print $retour_encode ;
Line 202... Line 119...
202
			foreach($id_fichiers as $en_cours)
119
		exit() ;
Line 203... Line 120...
203
			{
120
	}
-
 
121
 
-
 
122
	function updateElement($uid,$pairs)
204
				supprimer_fichier($en_cours) ;
123
	{
205
			}
124
 
Line 206... Line 125...
206
 
125
	}
Line 207... Line 126...
207
	*/
126
 
208
	}
127
	/**
209
 
-
 
210
	function deleteElement($uid)
-
 
211
	{
-
 
212
 
128
	 * Supprimme une ou plusieurs liaisons entre images et observations 
213
		// uid[0] : utilisateur obligatoire
-
 
214
	// uid[1] : identifiant(s) image(s) obligatoire(s)
129
	 * uid[0] : utilisateur obligatoire
Line -... Line 130...
-
 
130
	 * uid[1] : identifiant(s) image(s) obligatoire(s)
-
 
131
	 * uid[2] : identifiant(s) observations
215
	// uid[2] : identifiant(s) observations
132
	 *
Line 216... Line 133...
216
 
133
	 */
217
	 // Controle detournement utilisateur
134
	function deleteElement($uid)
218
	    session_start();
135
	{