Subversion Repositories eFlore/Applications.cel

Rev

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

Rev 780 Rev 816
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
 Class InventoryKeyWordObsLink extends Cel {
47
 Class InventoryKeyWordObsLink extends Cel {
48
 	
48
 	
49
 	const SEPARATEUR_MOT_CLE_TEXTE = '##';
49
 	const SEPARATEUR_MOT_CLE_TEXTE = '##';
50
 	const SEPARATEUR_MOT_CLE_ID = ';';
50
 	const SEPARATEUR_MOT_CLE_ID = ';';
51
 	
51
 	
52
 	function getRessource() {
52
 	function getRessource() {
53
 		$this->migrerMotsClesDansTableLiaison();	
53
 		//$this->migrerMotsClesDansTableLiaison();	
54
 	}
54
 	}
55
 	
55
 	
56
 	function getElement($uid) {
56
 	function getElement($uid) {
57
 		
57
 		
58
 	}
58
 	}
59
 
59
 
60
	// met à jour les associations des mots clés des observations
60
	// met à jour les associations des mots clés des observations
61
	function updateElement($uid,$pairs)
61
	function updateElement($uid,$pairs)
62
	{
62
	{
63
		// Controle detournement utilisateur
63
		// Controle detournement utilisateur
64
	    session_start();
64
	    session_start();
65
	 	if (($_SESSION['user']!="") && $_SESSION['user']['name']!=$uid[0]) {
65
	 	if (($_SESSION['user']!="") && $_SESSION['user']['name']!=$uid[0]) {
66
	 		print "Acces interdit";
66
	 		print "Acces interdit";
67
 			return;
67
 			return;
68
     	}
68
     	}
69
     	
69
     	
70
     	if(!isset($pairs['mots_cles']) || !isset($uid[1])) {
70
     	if(!isset($pairs['mots_cles']) || !isset($uid[1])) {
71
     		return;
71
     		return;
72
     	}
72
     	}
73
 
73
 
74
     	if(isset($pairs['action'])) {
74
     	if(isset($pairs['action'])) {
75
     		$action = $pairs['action'];
75
     		$action = $pairs['action'];
76
     	}
76
     	}
77
 
77
 
78
     	$valeur = $pairs['mots_cles'];
78
     	$valeur = $pairs['mots_cles'];
79
     	
79
     	
80
		$valeur = $this->nettoyerMotsCles($valeur);
80
		$valeur = $this->nettoyerMotsCles($valeur);
81
 
81
 
82
     	$requete_maj_liaison_mots_cles = "UPDATE cel_inventory SET ".
82
     	$requete_maj_liaison_mots_cles = "UPDATE cel_inventory SET ".
83
								"mots_cles = REPLACE(CONCAT(IFNULL(mots_cles,''),'".$valeur.";'),'null','') ".
83
								"mots_cles = REPLACE(CONCAT(IFNULL(mots_cles,''),'".$valeur.";'),'null','') ".
84
								"WHERE ordre IN (".$uid[1].") AND identifiant = ".$this->proteger($uid[0]);
84
								"WHERE ordre IN (".$uid[1].") AND identifiant = ".$this->proteger($uid[0]);
85
 
85
 
86
		/*echo $requete_maj_liaison_mots_cles; exit;*/
86
		/*echo $requete_maj_liaison_mots_cles; exit;*/
87
		$resultat_maj_liaison_mots_cles = $this->executerRequeteSimple($requete_maj_liaison_mots_cles);
87
		$resultat_maj_liaison_mots_cles = $this->executerRequeteSimple($requete_maj_liaison_mots_cles);
88
		
88
		
89
		$retour = false;
89
		$retour = false;
90
		
90
		
91
		if ($resultat_maj_liaison_mots_cles) {
91
		if ($resultat_maj_liaison_mots_cles) {
92
			$retour = 'OK';
92
			$retour = 'OK';
93
		} else {
93
		} else {
94
			$this->logger("CEL_bugs","Erreur de mise à jour des mots clés d'une obs : ".$requete_maj_liaison_mots_cles);
94
			$this->logger("CEL_bugs","Erreur de mise à jour des mots clés d'une obs : ".$requete_maj_liaison_mots_cles);
95
		}
95
		}
96
		
96
		
97
		$tableau_id_obs = split(',',$uid[1]);
97
		$tableau_id_obs = split(',',$uid[1]);
98
		foreach($tableau_id_obs as $ordre_obs) {
98
		foreach($tableau_id_obs as $ordre_obs) {
99
			$this->regenererIndexTexteMotCleObservation($ordre_obs, $uid[0]);
99
			$this->regenererIndexTexteMotCleObservation($ordre_obs, $uid[0]);
100
		}
100
		}
101
 
101
 
102
        return true;
102
        return true;
103
	}
103
	}
104
 
104
 
105
	function deleteElement($uid){
105
	function deleteElement($uid){
106
 
106
 
107
	 	// Controle detournement utilisateur
107
	 	// Controle detournement utilisateur
108
	    session_start();
108
	    session_start();
109
	 	if (($_SESSION['user']!="") && $_SESSION['user']['name']!=$uid[0]) {
109
	 	if (($_SESSION['user']!="") && $_SESSION['user']['name']!=$uid[0]) {
110
	 		print "Acces interdit";
110
	 		print "Acces interdit";
111
 			return;
111
 			return;
112
     	}
112
     	}
113
 
113
 
114
     	if(!isset($uid[2]) || !isset($uid[1])) {
114
     	if(!isset($uid[2]) || !isset($uid[1])) {
115
     		echo 'pas de mots clés';
115
     		echo 'pas de mots clés';
116
     		return;
116
     		return;
117
     	}
117
     	}
118
 
118
 
119
     	$valeur = $uid[2] ;
119
     	$valeur = $uid[2] ;
120
 
120
 
121
     	$valeur = $this->nettoyerMotsCles($valeur);
121
     	$valeur = $this->nettoyerMotsCles($valeur);
122
     	$chaine = $this->proteger($valeur);
122
     	$chaine = $this->proteger($valeur);
123
 
123
 
124
     	$requete_suppression_mots_cles = "UPDATE cel_inventory SET " ;
124
     	$requete_suppression_mots_cles = "UPDATE cel_inventory SET " ;
125
 
125
 
126
		$requete_suppression_mots_cles .= "mots_cles = REPLACE(REPLACE(mots_cles,'".$chaine."',''),';;',';') ";
126
		$requete_suppression_mots_cles .= "mots_cles = REPLACE(REPLACE(mots_cles,'".$chaine."',''),';;',';') ";
127
		$requete_suppression_mots_cles .= "WHERE ordre IN (".$uid[1].") AND identifiant = '".$DB->escapeSimple($uid[0])."'";
127
		$requete_suppression_mots_cles .= "WHERE ordre IN (".$uid[1].") AND identifiant = '".$DB->escapeSimple($uid[0])."'";
128
		$resultat_suppression_mots_cles = $this->executerRequeteSimple($requete_suppression_mots_cles);
128
		$resultat_suppression_mots_cles = $this->executerRequeteSimple($requete_suppression_mots_cles);
129
 
129
 
130
        if ($resultat_suppression_mots_cles) {
130
        if ($resultat_suppression_mots_cles) {
131
        	$this->logger("CEL_bugs","Erreur de suppression des mots clés de plusieurs observations : ".$requete_suppression_mots_cles);
131
        	$this->logger("CEL_bugs","Erreur de suppression des mots clés de plusieurs observations : ".$requete_suppression_mots_cles);
132
        	return false;
132
        	return false;
133
        }
133
        }
134
 
134
 
135
        return true;
135
        return true;
136
	}
136
	}
137
	
137
	
138
	private function regenererIndexTexteMotCleObservation($ordre_observation, $identifiant_utilisateur) {
138
	private function regenererIndexTexteMotCleObservation($ordre_observation, $identifiant_utilisateur) {
139
			
139
			
140
		$mots_cles_obs = $this->obtenirMotsClesObs($ordre_observation, $identifiant_utilisateur);
140
		$mots_cles_obs = $this->obtenirMotsClesObs($ordre_observation, $identifiant_utilisateur);
141
		
141
		
142
		if(count($mots_cles_obs) > 0) {
142
		if(count($mots_cles_obs) > 0) {
143
 
143
 
144
			$tableau_texte_mots_cles = $this->obtenirMotClesTexte($mots_cles_obs[0]['mots_cles'],$identifiant_utilisateur);
144
			$tableau_texte_mots_cles = $this->obtenirMotClesTexte($mots_cles_obs[0]['mots_cles'],$identifiant_utilisateur);
145
			
145
			
146
			$mots_cles_texte_chaine = $this->formaterTableauMotCleTextePourInsertion($tableau_texte_mots_cles);
146
			$mots_cles_texte_chaine = $this->formaterTableauMotCleTextePourInsertion($tableau_texte_mots_cles);
147
			
147
			
148
			$this->executerRequeteMiseAJourMotCleTexte($mots_cles_texte_chaine, $ordre_observation, $identifiant_utilisateur);
148
			$this->executerRequeteMiseAJourMotCleTexte($mots_cles_texte_chaine, $ordre_observation, $identifiant_utilisateur);
149
		}
149
		}
150
	}
150
	}
151
	
151
	
152
	private function executerRequeteMiseAJourMotCleTexte($mots_cles_texte_chaine, $ordre_observation, $identifiant_utilisateur) {
152
	private function executerRequeteMiseAJourMotCleTexte($mots_cles_texte_chaine, $ordre_observation, $identifiant_utilisateur) {
153
		
153
		
154
			$requete_regeneration_texte_mots_cles = 'UPDATE cel_inventory '.
154
			$requete_regeneration_texte_mots_cles = 'UPDATE cel_inventory '.
155
													'SET mots_cles_texte = '.$this->proteger($mots_cles_texte_chaine).' '.
155
													'SET mots_cles_texte = '.$this->proteger($mots_cles_texte_chaine).' '.
156
													'WHERE ordre = '.$this->proteger($ordre_observation).' AND '.
156
													'WHERE ordre = '.$this->proteger($ordre_observation).' AND '.
157
													'identifiant = '.$this->proteger($identifiant_utilisateur);
157
													'identifiant = '.$this->proteger($identifiant_utilisateur);
158
			
158
			
159
			$this->executerRequeteSimple($requete_regeneration_texte_mots_cles);
159
			$this->executerRequeteSimple($requete_regeneration_texte_mots_cles);
160
	}
160
	}
161
	
161
	
162
	private function obtenirMotsClesObs($ordre_observation, $identifiant_utilisateur) {
162
	private function obtenirMotsClesObs($ordre_observation, $identifiant_utilisateur) {
163
		
163
		
164
		$requete_mot_cle_obs = 'SELECT mots_cles FROM cel_inventory '.
164
		$requete_mot_cle_obs = 'SELECT mots_cles FROM cel_inventory '.
165
								'WHERE ordre = '.$this->proteger($ordre_observation).' AND '.
165
								'WHERE ordre = '.$this->proteger($ordre_observation).' AND '.
166
								' identifiant = '.$this->proteger($identifiant_utilisateur);
166
								' identifiant = '.$this->proteger($identifiant_utilisateur);
167
								
167
								
168
		$resultats_mot_cles_obs = $this->executerRequete($requete_mot_cle_obs);
168
		$resultats_mot_cles_obs = $this->executerRequete($requete_mot_cle_obs);
169
				
169
				
170
		return $resultats_mot_cles_obs;
170
		return $resultats_mot_cles_obs;
171
	}
171
	}
172
	
172
	
173
	private function obtenirMotClesTexte($chaine_mot_cle, $identifiant_utilisateur) {
173
	private function obtenirMotClesTexte($chaine_mot_cle, $identifiant_utilisateur) {
174
		
174
		
175
		$chaine_mot_cle_obs = $this->formaterChaineMotClePourConditionSql($chaine_mot_cle);
175
		$chaine_mot_cle_obs = $this->formaterChaineMotClePourConditionSql($chaine_mot_cle);
176
		
176
		
177
		$requete_selection_texte_mot_cles = 'SELECT cmc_mot_cle FROM cel_mots_cles_obs '.
177
		$requete_selection_texte_mot_cles = 'SELECT cmc_mot_cle FROM cel_mots_cles_obs '.
178
												'WHERE cmc_id_mot_cle_utilisateur IN ('.$chaine_mot_cle_obs.') '.
178
												'WHERE cmc_id_mot_cle_utilisateur IN ('.$chaine_mot_cle_obs.') '.
179
												'AND cmc_id_proprietaire = '.$this->proteger($identifiant_utilisateur);
179
												'AND cmc_id_proprietaire = '.$this->proteger($identifiant_utilisateur);
180
												
180
												
181
		$resultat_selection_texte_mot_cles = $this->executerRequete($requete_selection_texte_mot_cles);
181
		$resultat_selection_texte_mot_cles = $this->executerRequete($requete_selection_texte_mot_cles);
182
		
182
		
183
		return $resultat_selection_texte_mot_cles;
183
		return $resultat_selection_texte_mot_cles;
184
	}
184
	}
185
	
185
	
186
	private function formaterChaineMotClePourConditionSql($chaine_mot_cle_obs) {
186
	private function formaterChaineMotClePourConditionSql($chaine_mot_cle_obs) {
187
		
187
		
188
			$chaine_mot_cle_obs = $this->nettoyerMotsCles($chaine_mot_cle_obs);
188
			$chaine_mot_cle_obs = $this->nettoyerMotsCles($chaine_mot_cle_obs);
189
			$chaine_mot_cle_obs = str_replace(self::SEPARATEUR_MOT_CLE_ID,',',$chaine_mot_cle_obs);
189
			$chaine_mot_cle_obs = str_replace(self::SEPARATEUR_MOT_CLE_ID,',',$chaine_mot_cle_obs);
190
			$chaine_mot_cle_obs = trim($chaine_mot_cle_obs,',');
190
			$chaine_mot_cle_obs = trim($chaine_mot_cle_obs,',');
191
			
191
			
192
			return $chaine_mot_cle_obs;
192
			return $chaine_mot_cle_obs;
193
	}
193
	}
194
	
194
	
195
	private function formaterTableauMotCleTextePourInsertion($tableau_mots_cles_texte) {
195
	private function formaterTableauMotCleTextePourInsertion($tableau_mots_cles_texte) {
196
		
196
		
197
			$mot_cles_texte_chaine = '';
197
			$mot_cles_texte_chaine = '';
198
			
198
			
199
			if(is_array($tableau_mots_cles_texte)) { 
199
			if(is_array($tableau_mots_cles_texte)) { 
200
				foreach($tableau_mots_cles_texte as $mot_cle) {
200
				foreach($tableau_mots_cles_texte as $mot_cle) {
201
					$mot_cles_texte_chaine .= $mot_cle['cmc_mot_cle'].self::SEPARATEUR_MOT_CLE_TEXTE;
201
					$mot_cles_texte_chaine .= $mot_cle['cmc_mot_cle'].self::SEPARATEUR_MOT_CLE_TEXTE;
202
				}
202
				}
203
			}
203
			}
204
			
204
			
205
			$mot_cles_texte_chaine = rtrim($mot_cles_texte_chaine,self::SEPARATEUR_MOT_CLE_TEXTE);
205
			$mot_cles_texte_chaine = rtrim($mot_cles_texte_chaine,self::SEPARATEUR_MOT_CLE_TEXTE);
206
			
206
			
207
			return $mot_cles_texte_chaine;
207
			return $mot_cles_texte_chaine;
208
	}
208
	}
209
	
209
	
210
	private function nettoyerMotsCles($chaine) {
210
	private function nettoyerMotsCles($chaine) {
211
		
211
		
212
		$valeur = str_replace('null','',$chaine);
212
		$valeur = str_replace('null','',$chaine);
213
       	$valeur = trim($valeur, ";;");
213
       	$valeur = trim($valeur, ";;");
214
       	
214
       	
215
       	return $valeur;
215
       	return $valeur;
216
	}
216
	}
217
	
217
	
218
	private function migrerMotsClesDansTableLiaison() {
218
	private function migrerMotsClesDansTableLiaison() {
219
		
219
		
220
		$requete_selection_obs_mots_cles = 'SELECT id, ordre, identifiant, mots_cles FROM cel_inventory '.
220
		$requete_selection_obs_mots_cles = 'SELECT id, ordre, identifiant, mots_cles FROM cel_inventory '.
221
											'WHERE TRIM(mots_cles) != ""';
221
											'WHERE TRIM(mots_cles) != ""';
222
		
222
		
223
		$obs_mots_cles = $this->executerRequete($requete_selection_obs_mots_cles);
223
		$obs_mots_cles = $this->executerRequete($requete_selection_obs_mots_cles);
224
		
224
		
225
		echo '<pre>'.print_r($obs_mots_cles,true).'</pre>';
225
		echo '<pre>'.print_r($obs_mots_cles,true).'</pre>';
226
		
226
		
227
		$max = 20000;
227
		$max = 20000;
228
		$i = 0;
228
		$i = 0;
229
		
229
		
230
		foreach($obs_mots_cles as $obs_mc) {
230
		foreach($obs_mots_cles as $obs_mc) {
231
			
231
			
232
			/*if($i >= $max) {
232
			/*if($i >= $max) {
233
				return;
233
				return;
234
			}*/
234
			}*/
235
						
235
						
236
			$mots_cles_nettoyes = $this->nettoyerMotsCles($obs_mc['mots_cles']);
236
			$mots_cles_nettoyes = $this->nettoyerMotsCles($obs_mc['mots_cles']);
237
			$tableau_mots_cles_codes = split(self::SEPARATEUR_MOT_CLE_ID,$mots_cles_nettoyes);
237
			$tableau_mots_cles_codes = split(self::SEPARATEUR_MOT_CLE_ID,$mots_cles_nettoyes);
238
			
238
			
239
			$sous_requete_insertion_valeur = '';
239
			$sous_requete_insertion_valeur = '';
240
			
240
			
241
			if(count($tableau_mots_cles_codes) > 0) {
241
			if(count($tableau_mots_cles_codes) > 0) {
242
				
242
				
243
				foreach($tableau_mots_cles_codes as $mots_cles_codes) {
243
				foreach($tableau_mots_cles_codes as $mots_cles_codes) {
244
					
244
					
245
					$mots_cles_codes = trim($mots_cles_codes,self::SEPARATEUR_MOT_CLE_ID);
245
					$mots_cles_codes = trim($mots_cles_codes,self::SEPARATEUR_MOT_CLE_ID);
246
					if($this->estUnIdentifiantMotCle($mots_cles_codes)) {							
246
					if($this->estUnIdentifiantMotCle($mots_cles_codes)) {							
247
						$sous_requete_insertion_valeur .= '('.$mots_cles_codes.','.$obs_mc['id'].'),';
247
						$sous_requete_insertion_valeur .= '('.$mots_cles_codes.','.$obs_mc['id'].'),';
248
					}
248
					}
249
				}
249
				}
250
				
250
				
251
				$sous_requete_insertion_valeur = rtrim($sous_requete_insertion_valeur,',');
251
				$sous_requete_insertion_valeur = rtrim($sous_requete_insertion_valeur,',');
252
				
252
				
253
				if(trim($sous_requete_insertion_valeur) != '') { 
253
				if(trim($sous_requete_insertion_valeur) != '') { 
254
				
254
				
255
					$requete_insertion_mot_cles  = 'INSERT IGNORE INTO cel_obs_mots_cles (ce_observation, ce_mot_cle) '.
255
					$requete_insertion_mot_cles  = 'INSERT IGNORE INTO cel_obs_mots_cles (ce_observation, ce_mot_cle) '.
256
													'VALUES '.$sous_requete_insertion_valeur.' ';
256
													'VALUES '.$sous_requete_insertion_valeur.' ';
257
													
257
													
258
					echo $requete_insertion_mot_cles.'<br />';
258
					echo $requete_insertion_mot_cles.'<br />';
259
				
259
				
260
					$i++;
260
					$i++;
261
				}
261
				}
262
			}
262
			}
263
		}
263
		}
264
	}
264
	}
265
	
265
	
266
	private function estUnIdentifiantMotCle($chaine) {
266
	private function estUnIdentifiantMotCle($chaine) {
267
		return trim($chaine) != '' && preg_match('/[0-9A-Z]+\.[0-9A-Z]+/i', $chaine) ;
267
		return trim($chaine) != '' && preg_match('/[0-9A-Z]+\.[0-9A-Z]+/i', $chaine) ;
268
	}
268
	}
269
	
269
	
270
 
270
 
271
}
271
}
272
?>
272
?>