Subversion Repositories eFlore/Projets.eflore-projets

Rev

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

Rev 773 Rev 1124
Line 53... Line 53...
53
					$this->verifierDonnees();
53
					$this->verifierDonnees();
54
					break;
54
					break;
55
				case 'supprimerTous' :
55
				case 'supprimerTous' :
56
					$this->supprimerTous();
56
					$this->supprimerTous();
57
					break;
57
					break;
-
 
58
				// noms vernaculaires et statuts de protection
-
 
59
				case 'NVSP' :
-
 
60
					$this->nettoyageNVSP();
-
 
61
					$this->chargerStructureNVSP();
-
 
62
					$this->rabouterNomsVernaculaires();
-
 
63
					$this->rabouterStatutsProtection();
-
 
64
					break;
-
 
65
				case 'nettoyageNVSP' :
-
 
66
					$this->nettoyageNVSP();
-
 
67
					break;
-
 
68
				case 'chargerStructureNVSP' :
-
 
69
					$this->chargerStructureNVSP();
-
 
70
					break;
-
 
71
				case 'nomsVernaculaires' :
-
 
72
					$this->rabouterNomsVernaculaires();
-
 
73
					break;
-
 
74
				case 'statutsProtection' :
-
 
75
					$this->rabouterStatutsProtection();
-
 
76
					break;
58
				default :
77
				default :
59
					throw new Exception("Erreur : la commande '$cmd' n'existe pas!");
78
					throw new Exception("Erreur : la commande '$cmd' n'existe pas!");
60
			}
79
			}
61
		} catch (Exception $e) {
80
		} catch (Exception $e) {
62
			$this->traiterErreur($e->getMessage());
81
			$this->traiterErreur($e->getMessage());
Line 140... Line 159...
140
	}
159
	}
Line 141... Line 160...
141
 
160
 
142
	private function initialiserTraitement() {
161
	private function initialiserTraitement() {
143
		//------------------------------------------------------------------------------------------------------------//
162
		//------------------------------------------------------------------------------------------------------------//
144
		// Récupération des informations à vérifier
163
		// Récupération des informations à vérifier
145
		$table = $this->getNomTableDernierVersion();
164
		$table = $this->getNomTableDerniereVersion();
146
		$requete = 	'SELECT * '.
165
		$requete = 	'SELECT * '.
147
					"FROM $table ";
166
					"FROM $table ";
148
		$taxons = $this->getBdd()->recupererTous($requete);
167
		$taxons = $this->getBdd()->recupererTous($requete);
149
		$tax_col = $taxons[1];
168
		$tax_col = $taxons[1];
Line 484... Line 503...
484
			$tablesChorodep[] = sprintf($tableTpl, $version);
503
			$tablesChorodep[] = sprintf($tableTpl, $version);
485
		}
504
		}
486
		return $tablesChorodep;
505
		return $tablesChorodep;
487
	}
506
	}
Line 488... Line 507...
488
 
507
 
489
	private function getNomTableDernierVersion() {
508
	private function getNomTableDerniereVersion() {
490
		$version = $this->getDerniereVersion();
509
		$version = $this->getDerniereVersion();
491
		$table = sprintf(Config::get('tables.chorodepTpl'), $version);
510
		$table = sprintf(Config::get('tables.chorodepTpl'), $version);
492
		return $table;
511
		return $table;
Line 493... Line 512...
493
	}
512
	}
494
 
513
 
495
	private function getDerniereVersion() {
514
	private function getDerniereVersion() {
496
		$version = array_pop(explode(',', Config::get('versions')));
515
		$version = array_pop(explode(',', Config::get('versions')));
-
 
516
		return $version;
-
 
517
	}
-
 
518
 
-
 
519
	// ----------
-
 
520
	// intégration des noms vernaculaires et statuts de protection (NVSP) dans
-
 
521
	// une table dédiée, pour permettre le service intégratif de l'applciation "chorologie"
-
 
522
	// (basé sur les scripts de "gentiana-services")
-
 
523
	// ----------
-
 
524
 
-
 
525
	/**
-
 
526
	 * Dézingue tout le bousin
-
 
527
	 * @TODO chaque méthode devrait s'autonettoyer au début afin d'être répétable
-
 
528
	 * sans avoir à tout reprendre depuis le début (principe du dump)
-
 
529
	 */
-
 
530
	protected function nettoyageNVSP() {
-
 
531
		echo "---- suppression des tables\n";
-
 
532
		$tableStatutsProtection = Config::get('tables.statuts_protection');
-
 
533
		$tableNomsVernaculaires = Config::get('tables.noms_vernaculaires');
-
 
534
		$req = "DROP TABLE IF EXISTS `" . $tableStatutsProtection . "`";
-
 
535
		$this->getBdd()->requeter($req);
-
 
536
		$req = "DROP TABLE IF EXISTS `" . $tableNomsVernaculaires . "`;";
-
 
537
		$this->getBdd()->requeter($req);
-
 
538
	}
-
 
539
 
-
 
540
	/**
-
 
541
	 * Crée les tables vides
-
 
542
	 */
-
 
543
	protected function chargerStructureNVSP() {
-
 
544
		echo "---- création des tables\n";
-
 
545
		$contenuSql = $this->recupererContenu(Config::get('chemins.structureNVSP'));
-
 
546
		$this->executerScripSql($contenuSql);
-
 
547
	}
-
 
548
 
-
 
549
	/**
-
 
550
	 * Va chercher les noms vernaculaires pour chaque espèce, et les rajoute
-
 
551
	 * dans la table dédiée
-
 
552
	 */
-
 
553
	protected function rabouterNomsVernaculaires() {
-
 
554
		$tableNomsVernaculaires = Config::get('tables.noms_vernaculaires');
-
 
555
		restore_error_handler();
-
 
556
		restore_exception_handler();
-
 
557
		ini_set("display_errors", true);
-
 
558
		error_reporting(E_ALL);
-
 
559
		$squeletteUrlNvjfl = Config::get("url_nvjfl");
-
 
560
		echo "---- récupération des noms vernaculaires depuis eFlore\n";
-
 
561
		$depart = 0;
-
 
562
		$nbInsertions = 0;
-
 
563
		$yenaencore = true;
-
 
564
		$tailleTranche = 1000;
-
 
565
		while ($yenaencore) {
-
 
566
			$url = sprintf($squeletteUrlNvjfl, $depart, $tailleTranche);
-
 
567
			$noms = $this->chargerDonnees($url);
-
 
568
			// Si quelqu'un parvient à dédoublonner les $valeurs, on enlève le IGNORE
-
 
569
			$req = "INSERT IGNORE INTO " . $tableNomsVernaculaires . " VALUES ";
-
 
570
			$valeurs = array();
-
 
571
			// insertion des données
-
 
572
			foreach ($noms['resultat'] as $res) {
-
 
573
				$numTaxons = explode(',', $res['num_taxon']);
-
 
574
				$nvP = $this->getBdd()->proteger($res['nom']);
-
 
575
				foreach ($numTaxons as $numTaxon) {
-
 
576
					$valeurs[] = "(" . $numTaxon . ", " . $nvP  . ")";
-
 
577
				}
-
 
578
			}
-
 
579
			$req .= implode(",", $valeurs);
-
 
580
			$this->getBdd()->executer($req);
-
 
581
			// prochain tour
-
 
582
			$nbInsertions += count($valeurs); // Faux car INSERT IGNORE - dédoublonner ou compter les insertions réelles
-
 
583
			$depart += $tailleTranche;
-
 
584
			$total = $noms['entete']['total'];
-
 
585
			$yenaencore = $depart <= $total;
-
 
586
			echo "insérés: " . min($depart, $total) . " noms, " . $nbInsertions . " attributions\n";
-
 
587
		}
-
 
588
	}
-
 
589
 
-
 
590
	 /**
-
 
591
	  * Va chercher les statuts de protection pour chaque espèce et les rajoute
-
 
592
	  * à la table; importe un fichier dump SQL des lois
-
 
593
	  */
-
 
594
	 protected function rabouterStatutsProtection() {
-
 
595
	 	$tableChorologie = $this->getNomTableDerniereVersion();
-
 
596
	 	$tableStatutsProtection = Config::get('tables.statuts_protection');
-
 
597
	 	echo "---- récupération des statuts de protection depuis eFlore\n";
-
 
598
	 	$req = "SELECT distinct num_nom FROM " . $tableChorologie;
-
 
599
	 	$resultat = $this->getBdd()->recupererTous($req);
-
 
600
	 	// pour chaque taxon mentionné (inefficace mais évite d'implémenter un
-
 
601
	 	// mode liste sur le service eflore/sptb
-
 
602
	 	$squeletteUrlSptb = Config::get("url_sptb");
-
 
603
	 	foreach ($resultat as $res) {
-
 
604
	 		$nn = $res['num_nom'];
-
 
605
	 		//echo "NN: $nn\n";
-
 
606
	 		if ($nn != 0) {
-
 
607
	 			$url = sprintf($squeletteUrlSptb, $nn);
-
 
608
	 			//echo "URL: $url\n";
-
 
609
	 			$statuts = $this->chargerDonnees($url);
-
 
610
	 			//echo "STATUTS: " . print_r($statuts, true) . "\n";
-
 
611
	 			if (count($statuts) > 0) {
-
 
612
	 				$json = array();
-
 
613
	 				foreach ($statuts as $statut) {
-
 
614
 						$nouveauStatut = array();
-
 
615
 						$nouveauStatut['zone'] = $statut['code_zone_application'];
-
 
616
 						$nouveauStatut['lien'] = $statut['hyperlien_legifrance'];
-
 
617
 						$json[] =  $nouveauStatut;
-
 
618
	 				}
-
 
619
	 				// Si au moins un statut
-
 
620
	 				if (count($json) > 0) {
-
 
621
	 					$json = json_encode($json);
-
 
622
	 					//echo "JSON: " . print_r($json, true) . "\n";
-
 
623
	 					// Insertion d'un bout de JSON
-
 
624
	 					$jsonP = $this->getBdd()->proteger($json);
-
 
625
	 					$nnP = $this->getBdd()->proteger($nn);
-
 
626
	 					$reqIns = "INSERT INTO " . $tableStatutsProtection
-
 
627
	 					. " values($nnP, $jsonP)";
-
 
628
	 					//echo "ReqIns: $reqIns\n";
-
 
629
	 					$this->getBdd()->executer($reqIns);
-
 
630
	 				}
-
 
631
	 			}
-
 
632
	 		}
497
		return $version;
633
	 	}
Line 498... Line 634...
498
	}
634
	 }
499
}
635
}
500
 
636
 
Line 624... Line 760...
624
 
760
 
625
	static public function getIdEflore($n) {
761
	static public function getIdEflore($n) {
626
		return (int)self::$departements[$n][3];
762
		return (int)self::$departements[$n][3];
627
	}
763
	}
628
}
764
}
629
?>
765
?>