Subversion Repositories eFlore/Projets.eflore-projets

Rev

Rev 1074 | Only display areas with differences | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed

Rev 1074 Rev 1075
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 cel -a chargerTous
5
 * /opt/lampp/bin/php cli.php cel -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) 2011, Tela Botanica (accueil@tela-botanica.org)
10
 * @copyright	Copyright (c) 2011, 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 Cel extends EfloreScript {
15
class Cel extends EfloreScript {
16
 
16
 
17
	public function executer() {
17
	public function executer() {
18
		try {
18
		try {
19
			$this->initialiserProjet('cel');
19
			$this->initialiserProjet('cel');
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->chargerCel();
26
					$this->chargerCel();
27
					break;
27
					break;
28
				case 'supprimerTous' :
28
				case 'supprimerTous' :
29
					$this->supprimerTous();
29
					$this->supprimerTous();
30
					break;
30
					break;
31
				case 'genererScriptTableReference' :
31
				case 'genererScriptTableReference' :
32
					$this->genererScriptTableReference();
32
					$this->genererScriptTableReference();
33
					break;
33
					break;
34
				default :
34
				default :
35
					throw new Exception("Erreur : la commande '$cmd' n'existe pas!");
35
					throw new Exception("Erreur : la commande '$cmd' n'existe pas!");
36
			}
36
			}
37
		} catch (Exception $e) {
37
		} catch (Exception $e) {
38
			$this->traiterErreur($e->getMessage());
38
			$this->traiterErreur($e->getMessage());
39
		}
39
		}
40
	}
40
	}
41
 
41
 
42
	protected function initialiserProjet($projet) {
42
	protected function initialiserProjet($projet) {
43
		$bases = $this->getListeBases();
43
		$bases = $this->getListeBases();
44
		parent::initialiserProjet($projet);
44
		parent::initialiserProjet($projet);
45
		$this->verifierPresenceBdd($bases);
45
		$this->verifierPresenceBdd($bases);
46
	}
46
	}
47
 
47
 
48
	private function getListeBases() {
48
	private function getListeBases() {
49
		$requete = "SHOW DATABASES";
49
		$requete = "SHOW DATABASES";
50
		$bases = $this->getBdd()->recupererTous($requete);
50
		$bases = $this->getBdd()->recupererTous($requete);
51
		return $bases;
51
		return $bases;
52
	}
52
	}
53
 
53
 
54
	private function verifierPresenceBdd($bases) {
54
	private function verifierPresenceBdd($bases) {
55
		$bddNom = Config::get('bdd_nom');
55
		$bddNom = Config::get('bdd_nom');
56
		$existe = false;
56
		$existe = false;
57
		foreach ($bases as $base) {
57
		foreach ($bases as $base) {
58
			if ($base['Database'] == $bddNom) {
58
			if ($base['Database'] == $bddNom) {
59
				$existe = true;
59
				$existe = true;
60
				break;
60
				break;
61
			}
61
			}
62
		}
62
		}
63
		if ($existe === false) {
63
		if ($existe === false) {
64
			$message = "Veuillez créer la base de données '$bddNom'.";
64
			$message = "Veuillez créer la base de données '$bddNom'.";
65
			throw new Exception($message);
65
			throw new Exception($message);
66
		}
66
		}
67
	}
67
	}
68
 
68
 
69
	public function chargerCel() {
69
	public function chargerCel() {
70
		$tablesCodes = array_keys(Config::get('tables'));
70
		$tablesCodes = array_keys(Config::get('tables'));
71
		foreach ($tablesCodes as $code) {
71
		foreach ($tablesCodes as $code) {
72
			echo "Chargement de la table : $code\n";
72
			echo "Chargement de la table : $code\n";
73
			$this->chargerFichierTsvDansTable($code);
73
			$this->chargerFichierTsvDansTable($code);
74
		}
74
		}
75
	}
75
	}
76
 
76
 
77
	private function chargerFichierTsvDansTable($code) {
77
	private function chargerFichierTsvDansTable($code) {
78
		$chemin = Config::get('chemins.'.$code);
78
		$chemin = Config::get('chemins.'.$code);
79
		$table = Config::get('tables.'.$code);
79
		$table = Config::get('tables.'.$code);
80
		$requete = "LOAD DATA INFILE '$chemin' ".
80
		$requete = "LOAD DATA INFILE '$chemin' ".
81
			"REPLACE INTO TABLE $table ".
81
			"REPLACE INTO TABLE $table ".
82
			'CHARACTER SET utf8 '.
82
			'CHARACTER SET utf8 '.
83
			'FIELDS '.
83
			'FIELDS '.
84
			"	TERMINATED BY '\t' ".
84
			"	TERMINATED BY '\t' ".
85
			"	ENCLOSED BY '' ".
85
			"	ENCLOSED BY '' ".
86
			"	ESCAPED BY '\\\' ".
86
			"	ESCAPED BY '\\\' ".
87
			'IGNORE 1 LINES';
87
			'IGNORE 1 LINES';
88
		$this->getBdd()->requeter($requete);
88
		$this->getBdd()->requeter($requete);
89
	}
89
	}
90
 
90
 
91
	private function supprimerTous() {
91
	private function supprimerTous() {
92
		$requete = "DROP TABLE IF EXISTS cel_meta, cel_images, cel_inventory, cel_mots_cles_images, cel_mots_cles_obs, ".
92
		$requete = "DROP TABLE IF EXISTS cel_meta, cel_images, cel_inventory, cel_mots_cles_images, cel_mots_cles_obs, ".
93
			"cel_obs_images, locations ";
93
			"cel_obs_images, locations ";
94
		$this->getBdd()->requeter($requete);
94
		$this->getBdd()->requeter($requete);
95
	}
95
	}
96
	
96
	
97
	private function genererScriptTableReference() {
97
	private function genererScriptTableReference() {
98
		$script_sql = file_get_contents(__DIR__.'/cel_references.tpl.sql');
98
		$script_sql = file_get_contents(__DIR__.'/cel_references.tpl.sql');
99
		$config_references = Config::get('references');
99
		$config_references = Config::get('references');
100
		foreach($config_references as $a_remplacer => $remplacement) {
100
		foreach($config_references as $a_remplacer => $remplacement) {
101
			$script_sql = str_replace($a_remplacer, $remplacement, $script_sql);
101
			$script_sql = str_replace($a_remplacer, $remplacement, $script_sql);
102
			file_put_contents(__DIR__.'/cel_references_gen.sql', $script_sql);
102
			file_put_contents(__DIR__.'/cel_references.sql', $script_sql);
103
		}
103
		}
104
	}
104
	}
105
}
105
}
106
?>
106
?>