Subversion Repositories eFlore/Projets.eflore-projets

Rev

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

Rev 424 Rev 428
1
<?php
1
<?php
2
//declare(encoding='UTF-8');
2
//declare(encoding='UTF-8');
3
/**
3
/**
4
 * Exemple de lancement du script : :
4
 * Exemple de lancement du script : :
5
 * /opt/lampp/bin/php cli.php coste -a chargerTous
5
 * /opt/lampp/bin/php cli.php coste -a chargerTous
6
 *
6
 *
7
 * @category	php 5.2
7
 * @category	php 5.2
8
 * @package		eFlore/Scripts
8
 * @package		eFlore/Scripts
9
 * @author		Jean-Pascal MILCENT <jpm@tela-botanica.org>
9
 * @author		Jean-Pascal MILCENT <jpm@tela-botanica.org>
10
 * @copyright	Copyright (c) 2012, Tela Botanica (accueil@tela-botanica.org)
10
 * @copyright	Copyright (c) 2012, Tela Botanica (accueil@tela-botanica.org)
11
 * @license		http://www.cecill.info/licences/Licence_CeCILL_V2-fr.txt Licence CECILL
11
 * @license		http://www.cecill.info/licences/Licence_CeCILL_V2-fr.txt Licence CECILL
12
 * @license		http://www.gnu.org/licenses/gpl.html Licence GNU-GPL
12
 * @license		http://www.gnu.org/licenses/gpl.html Licence GNU-GPL
13
 * @version		$Id$
13
 * @version		$Id$
14
 */
14
 */
15
class Coste extends EfloreScript {
15
class Coste extends EfloreScript {
16
 
16
 
17
	public function executer() {
17
	public function executer() {
18
		try {
18
		try {
19
			$this->initialiserProjet('coste');
19
			$this->initialiserProjet('coste');
20
 
20
 
21
			// Lancement de l'action demandée
21
			// Lancement de l'action demandée
22
			$cmd = $this->getParametre('a');
22
			$cmd = $this->getParametre('a');
23
			switch ($cmd) {
23
			switch ($cmd) {
24
				case 'chargerTous' :
24
				case 'chargerTous' :
25
					$this->chargerStructureSql();
25
					$this->chargerStructureSql();
26
					$this->chargerVersions();
26
					$this->chargerVersions();
27
					break;
27
					break;
28
				case 'chargerStructureSql' :
28
				case 'chargerStructureSql' :
29
					$this->chargerStructureSql();
29
					$this->chargerStructureSql();
30
					break;
30
					break;
31
				case 'chargerVersions' :
31
				case 'chargerVersions' :
32
					$this->chargerVersions();
32
					$this->chargerVersions();
33
					break;
33
					break;
34
				case 'supprimerTous' :
34
				case 'supprimerTous' :
35
					$this->supprimerTous();
35
					$this->supprimerTous();
36
					break;
36
					break;
37
				case 'creerV1' :
37
				case 'creerV1' :
38
					$this->creerVersion1();
38
					$this->creerVersion1();
39
					break;
39
					break;
40
				case 'nettoyerV1' :
40
				case 'nettoyerV1' :
41
					$this->nettoyerVersion1();
41
					$this->nettoyerVersion1();
42
					break;
42
					break;
43
				case 'creerDscTxt' :
43
				case 'creerDscTxt' :
44
					$this->creerDescriptionTxt();
44
					$this->creerDescriptionTxt();
45
					break;
45
					break;
-
 
46
				case 'statDscTxt' :
-
 
47
					$this->verifierDescriptionTxt();
-
 
48
					break;
-
 
49
				case 'correspondanceDsc' :
-
 
50
					$this->genererCorrespondanceDescription();
-
 
51
					break;
46
				default :
52
				default :
47
					throw new Exception("Erreur : la commande '$cmd' n'existe pas!");
53
					throw new Exception("Erreur : la commande '$cmd' n'existe pas!");
48
			}
54
			}
49
		} catch (Exception $e) {
55
		} catch (Exception $e) {
50
			$this->traiterErreur($e->getMessage());
56
			$this->traiterErreur($e->getMessage());
51
		}
57
		}
52
	}
58
	}
53
 
59
 
54
	private function chargerVersions() {
60
	private function chargerVersions() {
55
		$versions = explode(',', Config::get('versions'));
61
		$versions = explode(',', Config::get('versions'));
56
		$versionsDonnees = explode(',', Config::get('versionsDonnees'));
62
		$versionsDonnees = explode(',', Config::get('versionsDonnees'));
57
		foreach ($versions as $id => $version) {
63
		foreach ($versions as $id => $version) {
58
			$versionDonnees = $versionsDonnees[$id];
64
			$versionDonnees = $versionsDonnees[$id];
59
			$this->chargerStructureSqlVersion($versionDonnees, $version);
65
			$this->chargerStructureSqlVersion($versionDonnees, $version);
60
			$this->chargerIndexVersion($versionDonnees, $version);
66
			$this->chargerIndexVersion($versionDonnees, $version);
61
			$this->chargerDumpWikiniVersion($versionDonnees, $version);
67
			$this->chargerDumpWikiniVersion($versionDonnees, $version);
62
		}
68
		}
63
	}
69
	}
64
 
70
 
65
	private function chargerStructureSqlVersion($versionDonnees, $version) {
71
	private function chargerStructureSqlVersion($versionDonnees, $version) {
66
		$fichierSqlTpl = Config::get('chemins.structureSqlVersionTpl');
72
		$fichierSqlTpl = Config::get('chemins.structureSqlVersionTpl');
67
		$fichierSql = sprintf($fichierSqlTpl, $versionDonnees, $version);
73
		$fichierSql = sprintf($fichierSqlTpl, $versionDonnees, $version);
68
		$contenuSql = $this->recupererContenu($fichierSql);
74
		$contenuSql = $this->recupererContenu($fichierSql);
69
		$this->executerScripSql($contenuSql);
75
		$this->executerScripSql($contenuSql);
70
	}
76
	}
71
 
77
 
72
	private function chargerIndexVersion($versionDonnees, $version) {
78
	private function chargerIndexVersion($versionDonnees, $version) {
73
		$fichierTsvTpl = Config::get('chemins.costeTpl');
79
		$fichierTsvTpl = Config::get('chemins.costeTpl');
74
		$fichierTsv = sprintf($fichierTsvTpl, $versionDonnees, $version);
80
		$fichierTsv = sprintf($fichierTsvTpl, $versionDonnees, $version);
75
		$tableTpl = Config::get('tables.costeTpl');
81
		$tableTpl = Config::get('tables.costeTpl');
76
		$table = sprintf($tableTpl, $version);
82
		$table = sprintf($tableTpl, $version);
77
		$requete = "LOAD DATA INFILE '$fichierTsv' ".
83
		$requete = "LOAD DATA INFILE '$fichierTsv' ".
78
			"REPLACE INTO TABLE $table ".
84
			"REPLACE INTO TABLE $table ".
79
			'CHARACTER SET utf8 '.
85
			'CHARACTER SET utf8 '.
80
			'FIELDS '.
86
			'FIELDS '.
81
			"	TERMINATED BY '\t' ".
87
			"	TERMINATED BY '\t' ".
82
			"	ENCLOSED BY '' ".
88
			"	ENCLOSED BY '' ".
83
			"	ESCAPED BY '\\\' ".
89
			"	ESCAPED BY '\\\' ".
84
			'IGNORE 1 LINES ';
90
			'IGNORE 1 LINES ';
85
		$this->getBdd()->requeter($requete);
91
		$this->getBdd()->requeter($requete);
86
	}
92
	}
87
 
93
 
88
	private function chargerDumpWikiniVersion($versionDonnees, $version) {
94
	private function chargerDumpWikiniVersion($versionDonnees, $version) {
89
		$fichierWikiTpl = Config::get('chemins.costeWikiniTpl');
95
		$fichierWikiTpl = Config::get('chemins.costeWikiniTpl');
90
		$fichierDump = sprintf($fichierWikiTpl, $versionDonnees, $version);
96
		$fichierDump = sprintf($fichierWikiTpl, $versionDonnees, $version);
91
		$contenuSql = $this->recupererContenu($fichierDump);
97
		$contenuSql = $this->recupererContenu($fichierDump);
92
		$this->executerScripSql($contenuSql);
98
		$this->executerScripSql($contenuSql);
93
	}
99
	}
94
 
100
 
95
	private function supprimerTous() {
101
	private function supprimerTous() {
96
		$requete = "DROP TABLE IF EXISTS coste_meta, ".
102
		$requete = "DROP TABLE IF EXISTS coste_meta, ".
97
			"	coste_acls, coste_links, coste_pages, coste_referrers, coste_triples, coste_users, ".
103
			"	coste_acls, coste_links, coste_pages, coste_referrers, coste_triples, coste_users, ".
98
			"	coste_v1_00 ";
104
			"	coste_v1_00 ";
99
		$this->getBdd()->requeter($requete);
105
		$this->getBdd()->requeter($requete);
100
	}
106
	}
101
 
107
 
102
	private function nettoyerVersion1() {
108
	private function nettoyerVersion1() {
103
		$requete = "DROP TABLE IF EXISTS coste_correspondance_bdnff, coste_images_auteur_correspondance_bdnff, ".
109
		$requete = "DROP TABLE IF EXISTS coste_correspondance_bdnff, coste_images_auteur_correspondance_bdnff, ".
104
			"	coste_images_correspondance_bdnff, coste_index, coste_index_general";
110
			"	coste_images_correspondance_bdnff, coste_index, coste_index_general";
105
		$this->getBdd()->requeter($requete);
111
		$this->getBdd()->requeter($requete);
106
	}
112
	}
107
 
113
 
108
	private function creerVersion1() {
114
	private function creerVersion1() {
109
		$this->chargerStructureSqlVersion('0.00', '0_00');
115
		$this->chargerStructureSqlVersion('0.00', '0_00');
110
		$this->chargerCosteImagesAuteurCorrespondanceBdnff();
116
		$this->chargerCosteImagesAuteurCorrespondanceBdnff();
111
		$this->chargerCosteCorrespondanceBdnff();
117
		$this->chargerCosteCorrespondanceBdnff();
112
	}
118
	}
113
 
119
 
114
	private function chargerCosteImagesAuteurCorrespondanceBdnff() {
120
	private function chargerCosteImagesAuteurCorrespondanceBdnff() {
115
		$fichierTsv = sprintf(Config::get('dossierTsvTpl'), '0.00').'coste_images_auteur_correspondance_bdnff.tsv';
121
		$fichierTsv = sprintf(Config::get('dossierTsvTpl'), '0.00').'coste_images_auteur_correspondance_bdnff.tsv';
116
		$requete = "LOAD DATA INFILE '$fichierTsv' ".
122
		$requete = "LOAD DATA INFILE '$fichierTsv' ".
117
				"REPLACE INTO TABLE coste_images_auteur_correspondance_bdnff ".
123
				"REPLACE INTO TABLE coste_images_auteur_correspondance_bdnff ".
118
				'CHARACTER SET utf8 '.
124
				'CHARACTER SET utf8 '.
119
				'FIELDS '.
125
				'FIELDS '.
120
				"	TERMINATED BY '\t' ".
126
				"	TERMINATED BY '\t' ".
121
				"	ENCLOSED BY '\"' ".
127
				"	ENCLOSED BY '\"' ".
122
				"	ESCAPED BY '\\\' ".
128
				"	ESCAPED BY '\\\' ".
123
				'IGNORE 1 LINES ';
129
				'IGNORE 1 LINES ';
124
		$this->getBdd()->requeter($requete);
130
		$this->getBdd()->requeter($requete);
125
	}
131
	}
126
 
132
 
127
	private function chargerCosteCorrespondanceBdnff() {
133
	private function chargerCosteCorrespondanceBdnff() {
128
		$fichierTsv = sprintf(Config::get('dossierTsvTpl'), '0.00').'coste_images_correspondance_bdnff.tsv';
134
		$fichierTsv = sprintf(Config::get('dossierTsvTpl'), '0.00').'coste_images_correspondance_bdnff.tsv';
129
		$requete = "LOAD DATA INFILE '$fichierTsv' ".
135
		$requete = "LOAD DATA INFILE '$fichierTsv' ".
130
					"REPLACE INTO TABLE coste_images_correspondance_bdnff ".
136
					"REPLACE INTO TABLE coste_images_correspondance_bdnff ".
131
					'CHARACTER SET utf8 '.
137
					'CHARACTER SET utf8 '.
132
					'FIELDS '.
138
					'FIELDS '.
133
					"	TERMINATED BY '\t' ".
139
					"	TERMINATED BY '\t' ".
134
					"	ENCLOSED BY '' ".
140
					"	ENCLOSED BY '' ".
135
					"	ESCAPED BY '\\\' ".
141
					"	ESCAPED BY '\\\' ".
136
					'IGNORE 1 LINES ';
142
					'IGNORE 1 LINES ';
137
		$this->getBdd()->requeter($requete);
143
		$this->getBdd()->requeter($requete);
138
	}
144
	}
139
 
145
 
140
	private function creerDescriptionTxt() {
146
	private function creerDescriptionTxt() {
141
		$conteneur = new Conteneur();
-
 
142
		$conteneur->setParametre('-v', $this->getParametre('-v'));
-
 
143
		require_once dirname(__FILE__)."/Description.php";
-
 
144
		$description = new Description($conteneur);
147
		$description = $this->getClasseDescription();
145
		$description->genererDescriptionTxt();
148
		$description->genererDescriptionTxt();
146
	}
149
	}
-
 
150
 
-
 
151
	private function verifierDescriptionTxt() {
-
 
152
		$description = $this->getClasseDescription();
-
 
153
		$description->verifierDescriptionTxt();
-
 
154
	}
-
 
155
 
-
 
156
	private function genererCorrespondanceDescription() {
-
 
157
		$description = $this->getClasseDescription();
-
 
158
		$description->genererCorrespondance();
-
 
159
	}
-
 
160
 
-
 
161
	private function  getClasseDescription() {
-
 
162
		$conteneur = new Conteneur();
-
 
163
		$conteneur->setParametre('-v', $this->getParametre('-v'));
-
 
164
		require_once dirname(__FILE__)."/Description.php";
-
 
165
		$description = new Description($conteneur);
-
 
166
		return $description;
-
 
167
	}
147
}
168
}
148
?>
169
?>