Subversion Repositories eFlore/Applications.cel

Rev

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

Rev 2094 Rev 2095
1
<?php
1
<?php
2
class Maintenance extends Script {
2
class Maintenance extends Script {
3
 
3
 
4
	protected $bdd;
4
	protected $bdd;
5
 
5
 
6
	public function __construct($script_nom, $parametres_cli) {
6
	public function __construct($script_nom, $parametres_cli) {
7
		parent::__construct($script_nom, $parametres_cli);
7
		parent::__construct($script_nom, $parametres_cli);
8
		$this->bdd = new Bdd();
8
		$this->bdd = new Bdd();
9
	}
9
	}
10
 
10
 
11
	public function executer() {
11
	public function executer() {
12
		$cmd = $this->getParametre('a');
12
		$cmd = $this->getParametre('a');
13
		try {
13
		try {
14
			switch ($cmd) {
14
			switch ($cmd) {
15
				case 'regenererMotsClesTexteObs' :
15
				case 'regenererMotsClesTexteObs' :
16
					$this->regenererMotsClesTexteObs();
16
					$this->regenererMotsClesTexteObs();
17
					break;
17
					break;
18
				case 'regenererMotsClesTexteImages' :
18
				case 'regenererMotsClesTexteImages' :
19
					$this->regenererMotsClesTexteImages();
19
					$this->regenererMotsClesTexteImages();
20
					break;
20
					break;
-
 
21
				case 'viderMotsClesTexteImagesSansMotsCles' :
-
 
22
					$this->viderMotsClesTexteImagesSansMotsCles();
-
 
23
					break;
-
 
24
				case 'viderMotsClesTexteObsSansMotsCles' :
-
 
25
					$this->viderMotsClesTexteObsSansMotsCles();
-
 
26
					break;
21
				default :
27
				default :
22
					$msg = "Erreur : la commande '$cmd' n'existe pas!\n".
28
					$msg = "Erreur : la commande '$cmd' n'existe pas!\n".
23
						"Commandes existantes : regenererMotsClesTexteImages, regenererMotsClesTexteObs";
29
						"Commandes existantes : regenererMotsClesTexteImages, regenererMotsClesTexteObs";
24
					throw new Exception($msg);
30
					throw new Exception($msg);
25
			}
31
			}
26
		} catch (Exception $e) {
32
		} catch (Exception $e) {
27
			$this->traiterErreur($e->getMessage());
33
			$this->traiterErreur($e->getMessage());
28
		}
34
		}
29
	}
35
	}
30
 
36
 
31
	// Régénère le champ "mots_cles_texte" pour toutes les images ayant des mots clés mais ayant ce champ
37
	// Régénère le champ "mots_cles_texte" pour toutes les images ayant des mots clés mais ayant ce champ
32
	// vide, suite à une erreur
38
	// vide, suite à une erreur
33
	protected function regenererMotsClesTexteImages() {
39
	protected function regenererMotsClesTexteImages() {
34
		$req = "SELECT id_image FROM cel_images WHERE (mots_cles_texte IS NULL OR mots_cles_texte='') "
40
		$req = "SELECT id_image FROM cel_images WHERE (mots_cles_texte IS NULL OR mots_cles_texte='') "
35
			. "AND id_image IN (SELECT id_element_lie FROM cel_mots_cles_images_liaison)";
41
			. "AND id_image IN (SELECT id_element_lie FROM cel_mots_cles_images_liaison)";
36
		$res = $this->bdd->recupererTous($req);
42
		$res = $this->bdd->recupererTous($req);
37
		echo count($res) . " images trouvées\n";
43
		echo count($res) . " images trouvées\n";
38
		foreach ($res as $image) {
44
		foreach ($res as $image) {
39
			$req = "UPDATE cel_images SET mots_cles_texte = (SELECT GROUP_CONCAT(mot_cle) FROM cel_arbre_mots_cles_images cm "
45
			$req = "UPDATE cel_images SET mots_cles_texte = (SELECT GROUP_CONCAT(mot_cle) FROM cel_arbre_mots_cles_images cm "
40
				. "INNER JOIN cel_mots_cles_images_liaison cml ON cml.id_mot_cle = cm.id_mot_cle AND cml.id_element_lie = '" . $image['id_image'] . "') "
46
				. "INNER JOIN cel_mots_cles_images_liaison cml ON cml.id_mot_cle = cm.id_mot_cle AND cml.id_element_lie = '" . $image['id_image'] . "') "
41
				. "WHERE id_image = '" . $image['id_image'] . "'";
47
				. "WHERE id_image = '" . $image['id_image'] . "'";
42
			$this->bdd->requeter($req); 
48
			$this->bdd->requeter($req); 
43
		}
49
		}
44
	}
50
	}
45
 
51
 
46
	// Régénère le champ "mots_cles_texte" pour toutes les observations ayant des mots clés mais ayant ce champ
52
	// Régénère le champ "mots_cles_texte" pour toutes les observations ayant des mots clés mais ayant ce champ
47
	// vide, suite à une erreur
53
	// vide, suite à une erreur
48
	protected function regenererMotsClesTexteObs() {
54
	protected function regenererMotsClesTexteObs() {
49
		$req = "SELECT id_observation FROM cel_obs WHERE (mots_cles_texte IS NULL OR mots_cles_texte='') "
55
		$req = "SELECT id_observation FROM cel_obs WHERE (mots_cles_texte IS NULL OR mots_cles_texte='') "
50
			. "AND id_observation IN (SELECT id_element_lie FROM cel_mots_cles_obs_liaison)";
56
			. "AND id_observation IN (SELECT id_element_lie FROM cel_mots_cles_obs_liaison)";
51
		$res = $this->bdd->recupererTous($req);
57
		$res = $this->bdd->recupererTous($req);
52
		echo count($res) . " observations trouvées\n";
58
		echo count($res) . " observations trouvées\n";
53
		foreach ($res as $image) {
59
		foreach ($res as $image) {
54
			$req = "UPDATE cel_obs SET mots_cles_texte = (SELECT GROUP_CONCAT(mot_cle) FROM cel_arbre_mots_cles_obs cm "
60
			$req = "UPDATE cel_obs SET mots_cles_texte = (SELECT GROUP_CONCAT(mot_cle) FROM cel_arbre_mots_cles_obs cm "
55
			. "INNER JOIN cel_mots_cles_obs_liaison cml ON cml.id_mot_cle = cm.id_mot_cle AND cml.id_element_lie = '" . $image['id_observation'] . "') "
61
			. "INNER JOIN cel_mots_cles_obs_liaison cml ON cml.id_mot_cle = cm.id_mot_cle AND cml.id_element_lie = '" . $image['id_observation'] . "') "
56
				. "WHERE id_observation = '" . $image['id_observation'] . "'";
62
				. "WHERE id_observation = '" . $image['id_observation'] . "'";
57
			$this->bdd->requeter($req); 
63
			$this->bdd->requeter($req); 
58
		}
64
		}
59
	}
65
	}
-
 
66
 
-
 
67
	// Vide le champ "mots_cles_texte" pour toutes les images n'ayant aucun mot clé
-
 
68
	protected function viderMotsClesTexteImagesSansMotsCles() {
-
 
69
		$req = "UPDATE cel_images SET mots_cles_texte = NULL WHERE id_image NOT IN (SELECT id_element_lie FROM cel_mots_cles_images_liaison)";
-
 
70
		$res = $this->bdd->requeter($req);
-
 
71
		echo "$res images mises à jour\n";
-
 
72
	}
-
 
73
 
-
 
74
	// Vide le champ "mots_cles_texte" pour toutes les obs n'ayant aucun mot clé
-
 
75
	protected function viderMotsClesTexteObsSansMotsCles() {
-
 
76
		$req = "UPDATE cel_obs SET mots_cles_texte = NULL WHERE id_observation NOT IN (SELECT id_element_lie FROM cel_mots_cles_obs_liaison)";
-
 
77
		$res = $this->bdd->requeter($req);
-
 
78
		echo "$res observations mises à jour\n";
-
 
79
	}
60
}
80
}
61
?>
81
?>