Subversion Repositories eFlore/Applications.cel

Rev

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

Rev Author Line No. Line
416 aurelien 1
<?php
898 aurelien 2
// ATTENTION ! Classe compatible uniquement avec nouveau format de bdd du cel //
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
*/
416 aurelien 14
 
15
/**
898 aurelien 16
* InventoryImageLink.php
17
*
18
* in : utf8
19
* out : utf8
20
*
21
* Cas d'utilisation :
22
* Service de liaisons d'images à des observations
23
*
24
* 2: Le service lie une ou plusieurs images à une ou plusieurs observations
25
* 3: Le service renvoie les observations liées à une image
26
*/
27
class InventoryImageLink extends Cel {
416 aurelien 28
 
29
	function createElement($pairs)
30
	{
31
		// Controle detournement utilisateur
898 aurelien 32
		$this->controleUtilisateur($pairs['ce_utilisateur']);
1761 raphael 33
		if(!isset($pairs['id_image'])) exit;
416 aurelien 34
 
898 aurelien 35
		$ids_images = $pairs['id_image'] ;
416 aurelien 36
		$ids_images = rtrim($ids_images,',') ;
37
 
38
		$ids_images_liste = explode(",",$ids_images) ;
39
 
898 aurelien 40
		$utilisateur = $pairs['ce_utilisateur'] ;
416 aurelien 41
 
898 aurelien 42
		$ids_observations = $pairs['id_observation'] ;
416 aurelien 43
		$ids_observations = rtrim($ids_observations,',') ;
44
		$ids_observations_liste = explode(",",$ids_observations) ;
898 aurelien 45
 
46
		$retour = false;
416 aurelien 47
 
48
		foreach($ids_images_liste as $image)
49
		{
50
			foreach($ids_observations_liste as $observation)
51
			{
1327 aurelien 52
				$requete_creation_lien = 'INSERT INTO cel_obs_images (id_image, id_observation, date_liaison) '.
898 aurelien 53
					   	 'VALUES '.
1765 raphael 54
						 '('.Cel::db()->proteger($image).','.Cel::db()->proteger($observation).', NOW()) '.
898 aurelien 55
						 'ON DUPLICATE KEY UPDATE id_image = id_image' ;
416 aurelien 56
 
1765 raphael 57
				$resultat_creation_lien = Cel::db()->executer($requete_creation_lien);
974 aurelien 58
 
898 aurelien 59
				if ($resultat_creation_lien) {
60
					$retour = "OK";
416 aurelien 61
				}
62
			}
63
		}
64
 
898 aurelien 65
		echo $retour ;
416 aurelien 66
		exit ;
67
	}
68
 
898 aurelien 69
	/**
70
	 * renvoie les numeros des images liées à une observation ou l'inverse, suivant le paramètre
71
	 * uid[0] : utilisateur obligatoire
72
	 * uid[1] : ordre_observation=valeur ou bien id_image=valeur
73
	 *
74
	 */
416 aurelien 75
	function getElement($uid)
76
	{
77
		// Controle detournement utilisateur
78
		$this->controleUtilisateur($uid[0]);
79
 
80
		if($uid) {
81
 
82
			$param = $uid[1] ;
1308 aurelien 83
			//TODO utiliser le GET plutôt pour récuperer id image ou observation
996 aurelien 84
			$tab_param = explode('=',$param) ;
416 aurelien 85
 
86
			$field = $tab_param[0] ;
87
			$value = $tab_param[1] ;
88
 
898 aurelien 89
			$requete_selection_liaison = "" ;
416 aurelien 90
 
898 aurelien 91
			if ($field == 'id_observation')
416 aurelien 92
			{
898 aurelien 93
				$column = 'id_image' ;
974 aurelien 94
				$requete_selection_liaison = 'SELECT id_image, hauteur , largeur '.
95
						 'FROM cel_images '.
96
						 'WHERE id_image IN ( '.
97
						 	'SELECT id_image '.
98
							'FROM cel_obs_images '.
1765 raphael 99
							'WHERE id_observation = '.Cel::db()->proteger($value).' '.
974 aurelien 100
						 ')';
416 aurelien 101
			}
102
			else
103
			{
898 aurelien 104
				$column = 'id_observation' ;
1765 raphael 105
				$requete_selection_liaison = 'SELECT * from cel_obs WHERE id_observation IN (SELECT '.$column.' FROM cel_obs_images WHERE '.$field.' = '.Cel::db()->proteger($value).') ' ;
416 aurelien 106
			}
107
 
108
		}
109
 
1765 raphael 110
		$resultat_selection_liaison = Cel::db()->requeter($requete_selection_liaison);
898 aurelien 111
 
112
		$liaisons = array();
113
        if (is_array($resultat_selection_liaison) && count($resultat_selection_liaison) > 0) {
114
			$liaisons = $resultat_selection_liaison;
1351 aurelien 115
			if($field == 'id_image') {
116
				foreach($liaisons as &$liaison) {
117
					$liaison['ce_zone_geo'] = $this->convertirCodeZoneGeoVersCodeInsee($liaison['ce_zone_geo']);
118
				}
119
			}
898 aurelien 120
        }
416 aurelien 121
 
1014 aurelien 122
		$this->envoyerJson($liaisons);
123
		return true;
416 aurelien 124
	}
125
 
126
	function updateElement($uid,$pairs)
127
	{
128
 
129
	}
130
 
898 aurelien 131
	/**
132
	 * Supprimme une ou plusieurs liaisons entre images et observations
133
	 * uid[0] : utilisateur obligatoire
134
	 * uid[1] : identifiant(s) image(s) obligatoire(s)
135
	 * uid[2] : identifiant(s) observations
136
	 *
137
	 */
416 aurelien 138
	function deleteElement($uid)
139
	{
898 aurelien 140
	 	// Controle detournement utilisateur
416 aurelien 141
		$this->controleUtilisateur($uid[0]);
142
 
605 aurelien 143
		$id_img = $uid[1] ;
1765 raphael 144
		$id_obs = Cel::db()->proteger($uid[2]) ;
416 aurelien 145
 
146
		$id = $uid[0] ;
147
 
148
		if (isset($id)) {
898 aurelien 149
	           	$requete_suppression_lien = "DELETE FROM cel_obs_images ".
150
											"WHERE id_image IN (".$id_img.") ".
1327 aurelien 151
											"AND id_observation IN (".$id_obs.") " ;
416 aurelien 152
		}
153
 
1765 raphael 154
		$resultat_suppression_lien = Cel::db()->executer($requete_suppression_lien);
416 aurelien 155
 
898 aurelien 156
		$retour = false;
157
		if ($resultat_suppression_lien) {
158
			$retour = "OK";
416 aurelien 159
		}
160
 
898 aurelien 161
		echo $retour;
162
		exit() ;
416 aurelien 163
	}
164
 
165
}
166
?>