Subversion Repositories eFlore/Applications.cel

Rev

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

Rev 798 Rev 1079
Line 1... Line 1...
1
<?php
1
<?php
Line 2... Line 2...
2
 
2
 
3
// In : utf8
3
// In : utf8
Line 4... Line -...
4
// Out : utf8
-
 
5
 
-
 
6
 
-
 
7
// TODO : traiter image multilignes
-
 
8
// TODO : doublons
4
// Out : utf8
Line 9... Line 5...
9
 
5
 
10
/*
6
/*
11
 
7
 
Line 79... Line 75...
79
 Sur post
75
 Sur post
80
**/
76
**/
81
	function createElement($pairs) {
77
	function createElement($pairs) {
Line 82... Line 78...
82
 
78
 
83
 
-
 
84
		$pairs['utilisateur']=$_POST['identifiant'];
79
 
85
			
80
		$pairs['utilisateur']= $_POST['identifiant'];
Line 86... Line -...
86
        session_start();
-
 
87
        $this->controleUtilisateur($pairs['utilisateur']);
81
		if(!isset($_SESSION)) {session_start();}
88
 
82
        $this->controleUtilisateur($pairs['utilisateur']);
89
 
83
 
Line 90... Line -...
90
        foreach($_FILES as $file) { // C'est le plus simple
-
 
91
            $infos_fichier = $file ;
84
        foreach($_FILES as $file) { // C'est le plus simple
92
        }
85
            $infos_fichier = $file ;
93
 
86
        }
Line 94... Line 87...
94
 
87
 
95
// Chargement tableau en memoire
88
		// Chargement tableau en memoire
Line 102... Line 95...
102
		if ($rowcount<=1) { // TODO : retour erreur
95
		if ($rowcount<=1) { // TODO : retour erreur
103
			print "Tableau vide";
96
			print "Tableau vide";
104
			exit;
97
			exit;
105
		}
98
		}
Line 106... Line 99...
106
 
99
 
107
// Chargement tableau 
100
		// Chargement tableau 
108
        for($row=1;$row<=$rowcount;$row++) 
101
        for($row=1;$row<=$rowcount;$row++) 
109
            for($col=1;$col<=$colcount;$col++) 
102
            for($col=1;$col<=$colcount;$col++) 
Line 110... Line 103...
110
                $arr[$col][$row] = $data->val($row,$col,0); // Attention, inversion voulue
103
                $arr[$col][$row] = $data->val($row,$col,0); // Attention, inversion voulue
111
              
-
 
112
// 1 : Traitement intitules
104
              
Line 113... Line 105...
113
 
105
		// 1 : Traitement intitules
114
		$line = array();
-
 
115
 
106
		$line = array();
116
/* Les colonnes ne sont pas forcemment dans l'ordre  : on les extrait pour traitement futur  */
107
 
117
 
108
		/* Les colonnes ne sont pas forcemment dans l'ordre  : on les extrait pour traitement futur  */
118
        for($col=1;$col<=$colcount;$col++) {
109
        for($col=1;$col<=$colcount;$col++) {
119
            $colonne=strtolower($arr[$col][1]);
110
            $colonne=strtolower($arr[$col][1]);
Line 137... Line 128...
137
                    array_shift($selection); // On ne garde pas la premiere ligne, qui contient les intitules
128
                    array_shift($selection); // On ne garde pas la premiere ligne, qui contient les intitules
138
                    $line[$colonne]=$selection;
129
                    $line[$colonne]=$selection;
139
                    break;
130
                    break;
Line 140... Line 131...
140
 
131
 
141
            }
132
            }
142
        } 
-
 
143
 
-
 
144
//	print_r($line[COMMUNE]);
-
 
145
//		print_r($line[LIEUDIT]);
-
 
146
//		print_r($line[STATION]);
-
 
147
//		print_r($line[MILIEU]);
-
 
148
//		print_r($line[DEPARTEMENT]);
-
 
149
//		print_r($line[LATITUDE]);
-
 
150
//		print_r($line[LONGITUDE]);
-
 
151
//		print_r($line[NOTES]);
-
 
152
//		print_r($line[DATEOBS]);
-
 
153
//		print_r($line[ESPECE]);
-
 
154
//		print_r($line[IMAGE]);
-
 
155
	
-
 
156
 
133
        } 	
157
// 1 : Traitement lignes
-
 
158
 
134
		// 1 : Traitement lignes
159
		$cpt_obs=0;
135
		$cpt_obs=0;
Line 160... Line -...
160
		$cpt_img=0;
-
 
161
 
136
		$cpt_img=0;
162
 
-
 
163
        /* Recherche dernier numero d'ordre utilise : pas de mise a jour concurente a priori */
-
 
164
 
137
 
165
 
138
        /* Recherche dernier numero d'ordre utilise : pas de mise a jour concurente a priori */
Line 166... Line 139...
166
        $DB=$this->connectDB($this->config,'database_cel'); 
139
        $DB=$this->connectDB($this->config,'database_cel'); 
167
        $query="SELECT MAX(ordre) AS ordre FROM cel_inventory WHERE identifiant='".$DB->escapeSimple($pairs['utilisateur'])."' ";
140
        $query="SELECT MAX(ordre) AS ordre FROM cel_inventory WHERE identifiant='".$DB->escapeSimple($pairs['utilisateur'])."' ";
Line 177... Line 150...
177
 
150
 
178
		for ($i=0;$i<=$rowcount-1;$i++) {
151
		for ($i=0;$i<=$rowcount-1;$i++) {
179
			// On saute les eventuelles lignes vides du debut et les lignes contenant des information sur image uniquement
152
			// On saute les eventuelles lignes vides du debut et les lignes contenant des information sur image uniquement
180
			while ((in_array($retour_analyse=$this->analyserLigne($line,$i),array(LIGNE_IMAGE_SEULEMENT, LIGNE_VIDE))) && ($i<=$rowcount)) {
153
			while ((in_array($retour_analyse=$this->analyserLigne($line,$i),array(LIGNE_IMAGE_SEULEMENT, LIGNE_VIDE))) && ($i<=$rowcount)) {
181
				if  ($retour_analyse==LIGNE_IMAGE_SEULEMENT) {
154
				if  ($retour_analyse==LIGNE_IMAGE_SEULEMENT) {
182
	//				print "image non rattachee a une observation";
155
					// print "image non rattachee a une observation";
183
				}
156
				}
184
				else {
157
				else {
185
	//				print "vide";
158
					// print "vide";
186
				}
159
				}
187
				$i++;
160
				$i++;
188
			}
161
			}
189
			while (($this->analyserLigne($line,$i)==LIGNE_NORMALE) && ($i<=$rowcount)) {
162
			while (($this->analyserLigne($line,$i)==LIGNE_NORMALE) && ($i<=$rowcount)) {
Line 196... Line 169...
196
				while ((in_array($retour_analyse=$this->analyserLigne($line,$i),array(LIGNE_IMAGE_SEULEMENT, LIGNE_VIDE))) && ($i<=$rowcount)) {
169
				while ((in_array($retour_analyse=$this->analyserLigne($line,$i),array(LIGNE_IMAGE_SEULEMENT, LIGNE_VIDE))) && ($i<=$rowcount)) {
197
					if  ($retour_analyse==LIGNE_IMAGE_SEULEMENT) {
170
					if  ($retour_analyse==LIGNE_IMAGE_SEULEMENT) {
198
						$this->traiterLigneComplement($line,$i,$pairs['utilisateur'],$ordre); // images supplementaires
171
						$this->traiterLigneComplement($line,$i,$pairs['utilisateur'],$ordre); // images supplementaires
199
					}
172
					}
200
					else {
173
					else {
201
	//					print "vide";
174
						// print "vide";
202
					}
175
					}
203
					$i++;
176
					$i++;
204
				}	
177
				}	
205
			}
178
			}
206
			
-
 
207
	
-
 
208
		}
179
		}
209
		//print $cpt_obs ." nouvelle(s) observation(s) !";
180
		//print $cpt_obs ." nouvelle(s) observation(s) !";
210
		$message = '';
181
		$message = '';
Line 211... Line 182...
211
		
182
		
Line 230... Line 201...
230
		
201
		
231
		if($i < 1) {
202
		if($i < 1) {
232
			$ligne_identique_sauf_image = false;
203
			$ligne_identique_sauf_image = false;
Line -... Line 204...
-
 
204
		} else {
233
		} else {
205
			
234
			
206
			if($colonne!= IMAGE && isset($line[$colonne]) && isset($line[$colonne][$i - 1]) && isset($line[$colonne][$i]) 
235
			if($colonne!= IMAGE && $line[$colonne][$i - 1] != $line[$colonne][$i] && $line[$colonne][$i] != '') {
207
				&& $line[$colonne][$i - 1] != $line[$colonne][$i] && $line[$colonne][$i] != '') {
236
				$ligne_identique_sauf_image = false;
208
				$ligne_identique_sauf_image = false;
Line 237... Line 209...
237
			}
209
			}
Line 316... Line 288...
316
		}
288
		}
317
		else {	
289
		else {	
318
		 	switch($colonne) {
290
		 	switch($colonne) {
319
				case COMMUNE:
291
				case COMMUNE:
320
					$info_commune['name']="000null";
292
					$info_commune['name']="000null";
321
					$info_commune['code']="000null";
-
 
322
					break;
293
					break;
323
				case LIEUDIT:
294
				case LIEUDIT:
324
					$info_lieudit="000null";
295
					$info_lieudit="000null";
325
					break;
296
					break;
326
				case STATION:
297
				case STATION:
Line 328... Line 299...
328
					break;
299
					break;
329
				case MILIEU:
300
				case MILIEU:
330
					$info_milieu="000null";
301
					$info_milieu="000null";
331
					break;
302
					break;
332
				case DEPARTEMENT:
303
				case DEPARTEMENT:
333
		            /*if (!isset ($info_commune['code']) || $info_commune['code']=='') {
304
		            if (!isset ($info_commune['code']) || $info_commune['code']=='') {
334
					    $info_commune['code']="000null";
305
					    $info_commune['code']="000null";
335
                    }*/
306
                    }
336
					break;
307
					break;
337
				case LATITUDE:
308
				case LATITUDE:
338
					$info_latitude="000null";
309
					$info_latitude="000null";
339
					break;
310
					break;
340
				case LONGITUDE:
311
				case LONGITUDE:
341
					$info_longitude="000null";
312
					$info_longitude="000null";
342
					break;
313
					break;
-
 
314
				case NOTES:
-
 
315
					$info_notes='';
343
					
316
					break;
344
				case TRANSMETTRE:
317
				case TRANSMETTRE:
345
					$info_transmettre = "0";
318
					$info_transmettre = "0";
346
				break;
319
				break;
Line 347... Line 320...
347
 
320
 
Line 393... Line 366...
393
                } else {
366
                } else {
394
                	$this->cpt_images_liees++;
367
                	$this->cpt_images_liees++;
395
                }
368
                }
396
	}
369
	}
Line 397... Line -...
397
 
-
 
398
 
-
 
399
 
370
 
Line 400... Line 371...
400
		return $this->dernier_ordre;
371
		return $this->dernier_ordre;
Line 421... Line 392...
421
    	}
392
    	}
422
	}
393
	}
423
}
394
}
424
function traiterCommune($identifiant_commune) {  // Recherche correspondance sur nom, si pas unique, correspondance dep. sinon code insee
395
function traiterCommune($identifiant_commune) {  // Recherche correspondance sur nom, si pas unique, correspondance dep. sinon code insee
Line -... Line 396...
-
 
396
 
-
 
397
    $identifiant_commune=trim($identifiant_commune);
Line 425... Line -...
425
 
-
 
426
 
-
 
427
        $identifiant_commune=trim($identifiant_commune);
-
 
428
 
-
 
429
        $identifiant_commune=utf8_encode($identifiant_commune); // FIXME : devrait deja etre en utf8 a ce niveau
398
    $identifiant_commune=utf8_encode($identifiant_commune); // FIXME : devrait deja etre en utf8 a ce niveau
Line 430... Line 399...
430
 
399
 
Line 431... Line 400...
431
		preg_match('/(.*) \(([0-9][0-9]*)\)/',$identifiant_commune,$elements);
400
	preg_match('/(.*) \(([0-9][0-9]*)\)/',$identifiant_commune,$elements);
432
 
401
 
433
        $DB=$this->connectDB($this->config,'database_cel'); // FIXME regarder si opportun ici
402
    $DB=$this->connectDB($this->config,'database_cel'); // FIXME regarder si opportun ici
434
 
-
 
435
	if ($elements[1]) { // commune + departement : montpellier (34)
403
 
436
		$nom_commune=$elements[1];
-
 
437
		$code_commune=$elements[2];
404
	if (isset($elements[1])) { // commune + departement : montpellier (34)
438
 
405
		$nom_commune=$elements[1];
439
 	        $query="SELECT DISTINCT name, code  FROM locations WHERE name = '".$DB->escapeSimple($nom_commune)."' AND code ='".$DB->escapeSimple($code_commune)."'";
406
		$code_commune=$elements[2];
440
 
407
 	    $query="SELECT DISTINCT name, code  FROM locations WHERE name = '".$DB->escapeSimple($nom_commune)."' AND code ='".$DB->escapeSimple($code_commune)."'";
441
	}
408
	}
442
	else { // Code insee seul 
409
	else { // Code insee seul 
443
        preg_match('/([0-9][0-9]*)|(2A[0-9][0-9]*)|(2B[0-9][0-9]*)/',$identifiant_commune,$elements);
410
        preg_match('/([0-9][0-9]*)|(2A[0-9][0-9]*)|(2B[0-9][0-9]*)/',$identifiant_commune,$elements);
444
        if ($elements[1]) { // code insee  commune
411
        if (isset($elements[1])) { // code insee  commune
445
            $code_insee_commune=$elements[1];
412
            $code_insee_commune=$elements[1];
446
            $query="SELECT DISTINCT name, code  FROM locations WHERE insee_code ='".$DB->escapeSimple($code_insee_commune)."'";
413
            $query="SELECT DISTINCT name, code  FROM locations WHERE insee_code ='".$DB->escapeSimple($code_insee_commune)."'";
447
        }	
414
        }	
448
        else { // Commune seule (le departement sera recupere dans la colonne departement si elle est presente, on prend le risque ici de retourner une mauvaise
415
        else { // Commune seule (le departement sera recupere dans la colonne departement si elle est presente, on prend le risque ici de retourner une mauvaise
449
               // Commune
416
               // Commune
450
            preg_match('/(.*)/',$identifiant_commune,$elements);
417
            preg_match('/(.*)/',$identifiant_commune,$elements);
451
            if ($elements[1]) { // commune 
418
            if (isset($elements[1])) { // commune 
452
                $nom_commune=$elements[1];
419
                $nom_commune=$elements[1];
Line 459... Line 426...
459
            }
426
            }
460
        }
427
        }
461
	}
428
	}
Line 462... Line 429...
462
 
429
 
463
	$res =& $DB->query($query);
-
 
464
 
430
	$res =& $DB->query($query);
465
        if (DB::isError($res)) {
431
    if (DB::isError($res)) {
466
		 die($res->getMessage());
432
		 die($res->getMessage());
467
	}
-
 
468
 
-
 
469
	return $res->fetchrow(DB_FETCHMODE_ASSOC);
-
 
Line -... Line 433...
-
 
433
	}
470
 
434
	
-
 
435
	$commune_code = $res->fetchrow(DB_FETCHMODE_ASSOC);
-
 
436
	
-
 
437
	// cas de la commune introuvable dans le référentiel
-
 
438
	if(!is_array($commune_code) || count($commune_code) == 0) {
471
	
439
		$commune_code['name'] = fix_latin($identifiant_commune);
-
 
440
		$commune_code['code'] = '000null';
472
 
441
	}
Line 473... Line 442...
473
 
442
	return $commune_code;
Line 474... Line 443...
474
}
443
}
Line 500... Line 469...
500
	
469
	
501
	if(is_numeric($departement) && strlen($departement) == 4) {
470
	if(is_numeric($departement) && strlen($departement) == 4) {
502
		$departement = substr($departement,0,1);
471
		$departement = substr($departement,0,1);
503
		$departement = "0"+$departement;
472
		$departement = "0"+$departement;
-
 
473
	}
-
 
474
 
-
 
475
	if(is_numeric($departement) && $departement <= 9) {
-
 
476
		$departement = "0"+$departement;
504
	}
477
	}
505
	return utf8_encode(trim($departement));
478
	return utf8_encode(trim($departement));
Line 506... Line 479...
506
}
479
}
507
 
480
 
Line 544... Line 517...
544
 
517
 
Line 545... Line 518...
545
        $identifiant_espece=utf8_encode($identifiant_espece); // FIXME : devrait deja etre en utf8 a ce niveau
518
        $identifiant_espece=utf8_encode($identifiant_espece); // FIXME : devrait deja etre en utf8 a ce niveau
Line 546... Line 519...
546
 
519
 
Line 547... Line 520...
547
	    preg_match('/BDNFFnn([0-9][0-9]*)/',$identifiant_espece,$elements);
520
	    preg_match('/BDNFFnn([0-9][0-9]*)/',$identifiant_espece,$elements);
548
	
521
	
549
		if ($elements[1]) { // Numero nomenclatural 
522
		if (isset($elements[1])) { // Numero nomenclatural 
Line 585... Line 558...
585
		}
558
		}
Line 586... Line 559...
586
 
559
 
587
		else { //  Numero taxonomique ou nom scientifique
560
		else { //  Numero taxonomique ou nom scientifique
Line 588... Line 561...
588
	        preg_match('/BDNFFnt([0-9][0-9]*)/',$identifiant_espece,$elements);
561
	        preg_match('/BDNFFnt([0-9][0-9]*)/',$identifiant_espece,$elements);
Line 589... Line 562...
589
			
562
			
Line 590... Line 563...
590
		    if ($elements[1]) { // Numero taxonomique
563
		    if (isset($elements[1])) { // Numero taxonomique
591
    
564