Subversion Repositories eFlore/Projets.eflore-projets

Rev

Rev 931 | Details | Compare with Previous | Last modification | View Log | RSS feed

Rev Author Line No. Line
931 delphine 1
<?php
2
/** Exemple lancement:
3
 * /opt/lampp/bin/php -d memory_limit=3500M cli.php sptb -a chargerTous
4
*/
5
class ListeRouge extends EfloreScript {
6
 
7
	public function executer() {
8
		// Lancement de l'action demandée
9
		try {
10
			$this->initialiserProjet('liste_rouge');
11
 
12
			$cmd = $this->getParametre('a');
13
			switch ($cmd) {
14
				case 'chargerTous' :
15
					$this->chargerStructureSql();
16
					$this->chargerDonnees();
17
					$this->genererChampNumNomRetenu();
18
					break;
19
				case 'chargerStructureSql' :
20
					$this->chargerStructureSql();
21
					break;
22
				case 'chargerDonnees' :
23
					$this->chargerDonnees();
24
					$this->genererChampNumNomRetenu();
25
					break;
26
				case 'genererChampNumNomRetenu' :
27
					$this->genererChampNumNomRetenu();
28
					break;
1276 delphine 29
				case 'genererChampLegende' :
30
				    $this->genererChampLegende();
31
				    break;
931 delphine 32
				case 'supprimerTous' :
33
					$this->supprimerTous();
34
					break;
35
				default :
36
					throw new Exception("Erreur : la commande '$cmd' n'existe pas!");
37
			}
38
		} catch (Exception $e) {
39
			$this->traiterErreur($e->getMessage());
40
		}
41
	}
42
 
43
	private function chargerDonnees() {
44
		$chemin = Config::get('chemins.listeRouge');
45
		$table = Config::get('tables.listeRouge');
46
		$requete = "LOAD DATA INFILE '$chemin' ".
47
			"REPLACE INTO TABLE $table ".
48
			'CHARACTER SET utf8 '.
49
			'FIELDS '.
50
			"	TERMINATED BY '\t' ".
51
			"	ENCLOSED BY '' ".
52
			"	ESCAPED BY '\\\' ".
53
			'IGNORE 1 LINES';
54
		$this->getBdd()->requeter($requete);
55
	}
56
 
57
	private function genererChampNumNomRetenu() {
58
		$this->preparerTablePrChpNumNomRetenu();
59
		$this->genererNumNomRetenu();
60
		$this->recupererNumNomNonTrouve();
61
	}
62
 
63
	private function preparerTablePrChpNumNomRetenu() {
64
		$table = Config::get('tables.listeRouge');
65
		$requete = "SHOW COLUMNS FROM $table LIKE 'num_nom_retenu' ";
66
		$resultat = $this->getBdd()->recuperer($requete);
67
		if ($resultat === false) {
68
			$requete = 	"ALTER TABLE $table ".
1276 delphine 69
					' ADD `num_nom_retenu` VARCHAR( 10 ) NOT NULL, '.
931 delphine 70
					' ADD INDEX ( `num_nom_retenu` ) ';
71
			$this->getBdd()->requeter($requete);
72
		}
73
	}
74
 
75
	private function genererNumNomRetenu() {
76
		$table = Config::get('tables.listeRouge');
77
		$table_referentiel = Config::get('tables.referentielTaxo');
1276 delphine 78
		$requete = "SHOW COLUMNS FROM $table_referentiel";
79
		$resultat = $this->getBdd()->recuperer($requete);
80
		if ($resultat === true) {
81
    		$requete = 'UPDATE '.$table.' s, '.$table_referentiel.' r '.
82
    					'SET s.num_nom_retenu = r.num_nom '.
83
    					'WHERE s.cd_nom = r.cd_nom ';
84
 
85
    		$this->getBdd()->requeter($requete);
86
		} else {
87
		    Debug::printr('Il manque la table de liaison entre taxref et bdtfx');
88
		}
931 delphine 89
	}
90
 
1276 delphine 91
	private function genererCategories() {
92
	    $table = Config::get('tables.listeRouge');
93
	    $table_categories = Config::get('tables.categories');
94
	    $requete = "SHOW COLUMNS FROM $table_categories LIKE 'categorie' ";
95
	    $resultat = $this->getBdd()->recuperer($requete);
96
	    if ($resultat === true) {
97
	        $requete = 'UPDATE '.$table.' s, '.$table_categories.' r '.
98
	   	        'SET s.categorie = r.categorie '.
99
	   	        'WHERE s.num_categorie = r.num_categorie ';
100
 
101
	        $this->getBdd()->requeter($requete);
102
	    } else {
103
	        Debug::printr('Il manque la table de liaison entre taxref et bdtfx');
104
	    }
931 delphine 105
	}
106
 
107
	private function supprimerTous() {
108
		$requete = "DROP TABLE IF EXISTS liste_rouge_meta, liste_rouge_v2012";
109
		$this->getBdd()->requeter($requete);
110
		Debug::printr('suppression');
111
	}
112
}
113
?>