Subversion Repositories eFlore/Applications.cel

Rev

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

Rev 1527 Rev 1615
Line 36... Line 36...
36
define('LIGNE_VIDE',1); //  
36
define('LIGNE_VIDE',1); //  
37
define('LIGNE_NORMALE',2); //  
37
define('LIGNE_NORMALE',2); //  
38
define('LIGNE_IMAGE_SEULEMENT',3); //  
38
define('LIGNE_IMAGE_SEULEMENT',3); //  
Line -... Line 39...
-
 
39
 
-
 
40
 
-
 
41
set_include_path(get_include_path() . PATH_SEPARATOR . dirname(dirname(realpath(__FILE__))) . '/lib');
-
 
42
// la sortie est binaire (xls), mais OLE n'est pas compatible E_ALL en PHP-5.4
-
 
43
error_reporting(-1); //error_reporting() ^ E_STRICT);
39
 
44
require_once("ExcelReader/excel_reader2.php");
40
 
45
 
Line 41... Line 46...
41
//TODO: refactoriser entièrement cette classe
46
//TODO: refactoriser entièrement cette classe
42
class InventoryImportExcel extends Cel  {
47
class InventoryImportExcel extends Cel  {
Line 43... Line -...
43
 
-
 
44
	// Element constituant une observation 
-
 
45
	var $format_observation=array(COMMUNE ,LIEUDIT ,STATION , DEPARTEMENT, MILIEU ,LATITUDE ,LONGITUDE ,NOTES ,DATEOBS ,ESPECE ,TRANSMETTRE, IMAGE );
-
 
46
 
48
 
47
	// Encapsulation classe lecture fichier excel
49
	// Element constituant une observation 
Line 48... Line 50...
48
	var $extendExcelReader;
50
	var $format_observation=array(COMMUNE ,LIEUDIT ,STATION , DEPARTEMENT, MILIEU ,LATITUDE ,LONGITUDE ,NOTES ,DATEOBS ,ESPECE ,TRANSMETTRE, IMAGE );
Line 60... Line 62...
60
	 Constructeur
62
	 Constructeur
61
	**/
63
	**/
62
	function InventoryImportExcel($config) {
64
	function InventoryImportExcel($config) {
Line 63... Line 65...
63
 
65
 
64
		parent::__construct($config);	
-
 
65
		// Pas d'heritage multiple en php :(
-
 
66
		$this->extendExcelReader = new ExcelReader();
-
 
67
		$this->extendExcelReader->initExcelReader();
66
		parent::__construct($config);	
68
		$this->chercheur_infos_taxon = new RechercheInfosTaxonBeta($config);
67
		$this->chercheur_infos_taxon = new RechercheInfosTaxonBeta($config);
Line 69... Line 68...
69
	}
68
	}
70
 
69
 
Line 108... Line 107...
108
 
107
 
109
		/* Les colonnes ne sont pas forcemment dans l'ordre  : on les extrait pour traitement futur  */	
108
		/* Les colonnes ne sont pas forcemment dans l'ordre  : on les extrait pour traitement futur  */	
110
        for($col=1;$col<=$colcount;$col++) {
109
        for($col=1;$col<=$colcount;$col++) {
111
            $colonne=strtolower($arr[$col][1]);
110
            $colonne=strtolower($arr[$col][1]);
112
            $colonne=trim($colonne);
-
 
113
            $colonne=cp1252_to_utf8($colonne);
111
            $colonne=trim($colonne);
114
            $colonne=remove_accent($colonne);
112
            $colonne=remove_accent($colonne);
115
            switch ($colonne) {  // On ne garde que les colonnes que l'on souhaite traiter
113
            switch ($colonne) {  // On ne garde que les colonnes que l'on souhaite traiter
116
                case COMMUNE:
114
                case COMMUNE:
117
                case LIEUDIT:
115
                case LIEUDIT:
Line 129... Line 127...
129
                    array_shift($selection); // On ne garde pas la premiere ligne, qui contient les intitules
127
                    array_shift($selection); // On ne garde pas la premiere ligne, qui contient les intitules
130
                    $line[$colonne]=$selection;
128
                    $line[$colonne]=$selection;
131
                    break;
129
                    break;
Line 132... Line 130...
132
 
130
 
133
            }
131
            }
134
        } 
132
        }
135
		// 1 : Traitement lignes
133
		// 1 : Traitement lignes
136
		$cpt_obs=0;
134
		$cpt_obs=0;
Line 137... Line 135...
137
		$cpt_img=0;
135
		$cpt_img=0;
Line 275... Line 273...
275
					case TRANSMETTRE:
273
					case TRANSMETTRE:
276
						$info_transmettre = $this->traiterTransmettre($line[TRANSMETTRE][$i]);
274
						$info_transmettre = $this->traiterTransmettre($line[TRANSMETTRE][$i]);
277
					break;
275
					break;
278
					case ESPECE:
276
					case ESPECE:
279
						// suppression des accents éventuels
277
						// suppression des accents éventuels
280
						$line[ESPECE][$i] = remove_accent(cp1252_to_utf8($line[ESPECE][$i]));
278
						$line[ESPECE][$i] = remove_accent($line[ESPECE][$i]);
281
						$resultat_recherche_espece = $this->chercheur_infos_taxon->rechercherInfosSurTexteCodeOuNumTax($line[ESPECE][$i]);
279
						$resultat_recherche_espece = $this->chercheur_infos_taxon->rechercherInfosSurTexteCodeOuNumTax($line[ESPECE][$i]);
282
	                    if (isset($resultat_recherche_espece['en_id_nom']) && $resultat_recherche_espece['en_id_nom'] != '') {
280
	                    if (isset($resultat_recherche_espece['en_id_nom']) && $resultat_recherche_espece['en_id_nom'] != '') {
283
	                    	$info_espece['nom_sel'] = $resultat_recherche_espece['nom_sel'];
281
	                    	$info_espece['nom_sel'] = $resultat_recherche_espece['nom_sel'];
284
	                    	$info_espece['nom_sel_nn'] = $resultat_recherche_espece['en_id_nom'];
282
	                    	$info_espece['nom_sel_nn'] = $resultat_recherche_espece['en_id_nom'];
285
	                        $complement = $this->chercheur_infos_taxon->rechercherInformationsComplementairesSurNumNom($resultat_recherche_espece['en_id_nom']);
283
	                        $complement = $this->chercheur_infos_taxon->rechercherInformationsComplementairesSurNumNom($resultat_recherche_espece['en_id_nom']);
Line 405... Line 403...
405
	}
403
	}
Line 406... Line 404...
406
	
404
	
407
	function traiterCommune($identifiant_commune) {  
405
	function traiterCommune($identifiant_commune) {  
408
		// Recherche correspondance sur nom, si pas unique, correspondance dep. sinon code insee
406
		// Recherche correspondance sur nom, si pas unique, correspondance dep. sinon code insee
409
	    $identifiant_commune=trim($identifiant_commune);
-
 
Line 410... Line 407...
410
	    $identifiant_commune=utf8_encode($identifiant_commune); // FIXME : devrait deja etre en utf8 a ce niveau
407
	    $identifiant_commune=trim($identifiant_commune);
Line 411... Line 408...
411
	
408
	
412
		preg_match('/(.*) \(([0-9][0-9]*)\)/',$identifiant_commune,$elements);
409
		preg_match('/(.*) \(([0-9][0-9]*)\)/',$identifiant_commune,$elements);
Line 426... Line 423...
426
	               // Commune
423
	               // Commune
427
	            preg_match('/(.*)/',$identifiant_commune,$elements);
424
	            preg_match('/(.*)/',$identifiant_commune,$elements);
428
	            if (isset($elements[1])) { // commune 
425
	            if (isset($elements[1])) { // commune 
429
	                $nom_commune=$elements[1];
426
	                $nom_commune=$elements[1];
430
	                $nom_commune=trim($nom_commune);
427
	                $nom_commune=trim($nom_commune);
431
	                $nom_commune=utf8_decode($nom_commune);
-
 
432
	                $nom_commune=cp1252_to_utf8($nom_commune);
-
 
433
	                $nom_commune=remove_accent($nom_commune);
428
	                $nom_commune=remove_accent($nom_commune);
434
	                $nom_commune=preg_replace("/ /","%",$nom_commune);
429
	                $nom_commune=preg_replace("/ /","%",$nom_commune);
435
	                $requete="SELECT DISTINCT nom, code  FROM cel_zones_geo WHERE nom like ".$this->proteger($nom_commune.'%');
430
	                $requete="SELECT DISTINCT nom, code  FROM cel_zones_geo WHERE nom like ".$this->proteger($nom_commune.'%');
436
	            }
431
	            }
437
	        }
432
	        }
Line 439... Line 434...
439
	
434
	
Line 440... Line 435...
440
		$resultat_commune = $this->requeter($requete);
435
		$resultat_commune = $this->requeter($requete);
441
		
436
		
442
		// cas de la commune introuvable dans le référentiel
437
		// cas de la commune introuvable dans le référentiel
443
		if(!is_array($resultat_commune) || count($resultat_commune) == 0) {
438
		if(!is_array($resultat_commune) || count($resultat_commune) == 0) {
444
			$resultat_commune['nom'] = fix_latin($identifiant_commune);
439
			$resultat_commune['nom'] = $identifiant_commune;
445
			$resultat_commune['code'] = 'NULL';
440
			$resultat_commune['code'] = 'NULL';
446
		} else {
441
		} else {
Line 447... Line 442...
447
			$resultat_commune = $resultat_commune[0];
442
			$resultat_commune = $resultat_commune[0];
448
		}
443
		}
Line 449... Line 444...
449
			
444
			
450
		return $resultat_commune;
445
		return $resultat_commune;
451
	}
-
 
452
 
446
	}
453
	function traiterLieudit($lieudit) { 
447
 
Line 454... Line 448...
454
		// texte libre
448
	function traiterLieudit($lieudit) { 
455
	    $lieudit=fix_latin($lieudit);
449
		// texte libre
456
		return trim($lieudit);
-
 
457
	}
450
		return trim($lieudit);
458
 
451
	}
Line 459... Line 452...
459
	function traiterStation($station) { 
452
 
460
		// texte libre
453
	function traiterStation($station) { 
461
	    $station=fix_latin($station);
-
 
462
		return trim($station);
454
		// texte libre
463
	}
455
		return trim($station);
Line 464... Line 456...
464
 
456
	}
465
	function traiterMilieu($milieu) { 
457
 
Line 476... Line 468...
476
	
468
	
477
		if(is_numeric($departement) && $departement <= 9) {
469
		if(is_numeric($departement) && $departement <= 9) {
478
			$departement = "0"+$departement;
470
			$departement = "0"+$departement;
Line 479... Line 471...
479
		}
471
		}
480
		
472
		
Line 481... Line 473...
481
		return utf8_encode(trim($departement));
473
		return trim($departement);
482
	}
474
	}
483
 
475
 
Line 491... Line 483...
491
		return trim($longitude);
483
		return trim($longitude);
492
	}
484
	}
Line 493... Line 485...
493
	
485
	
494
	function traiterNotes($notes) { 
486
	function traiterNotes($notes) { 
495
		// texte libre
-
 
496
	    $notes=remove_accent($notes);
487
		// texte libre
497
		return utf8_encode(trim($notes));
488
		return trim($notes);
Line 498... Line 489...
498
	}
489
	}
499
	
490
	
500
	function traiterDateObs($dateobs) { 
491
	function traiterDateObs($dateobs) { 
Line 516... Line 507...
516
	
507
	
517
	function traiterImage($images,$utilisateur) { // recherche id image de ce nom 	
508
	function traiterImage($images,$utilisateur) { // recherche id image de ce nom 	
518
		$liste_images = explode("/",$images) ;
509
		$liste_images = explode("/",$images) ;
519
		$row =array();
510
		$row =array();
520
	   	foreach($liste_images as $image) {
511
	   	foreach($liste_images as $image) {
521
			$image = remove_accent(fix_latin($image));
512
			$image = remove_accent($image);
522
			$requete = "SELECT * FROM cel_images WHERE ce_utilisateur = ".$this->proteger($utilisateur)." AND nom_original= ".$this->proteger($image);
513
			$requete = "SELECT * FROM cel_images WHERE ce_utilisateur = ".$this->proteger($utilisateur)." AND nom_original= ".$this->proteger($image);
523
			$ligne = $this->requeter($requete);
514
			$ligne = $this->requeter($requete);
524
		    if(is_array($ligne) && !empty($ligne)) {
515
		    if(is_array($ligne) && !empty($ligne)) {
525
		    	$row[] = $ligne[0];
516
		    	$row[] = $ligne[0];