Subversion Repositories eFlore/Applications.cel

Rev

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

Rev 2414 Rev 2436
1
<?php
1
<?php
2
// declare(encoding='UTF-8');
2
// declare(encoding='UTF-8');
3
/**
3
/**
4
 * Contient les requêtes effecturant la migration des mots-clés.
4
 * Contient les requêtes effecturant la migration des mots-clés.
5
 *
5
 *
6
 * @category   CEL
6
 * @category   CEL
7
 * @package    Scripts
7
 * @package    Scripts
8
 * @subpackage Migration : Sauvages
8
 * @subpackage Migration : Sauvages
9
 * @author     Mathias CHOUET <mathias@tela-botanica.org>
9
 * @author     Mathias CHOUET <mathias@tela-botanica.org>
10
 * @author     Jean-Pascal MILCENT <jpm@tela-botanica.org>
10
 * @author     Jean-Pascal MILCENT <jpm@tela-botanica.org>
11
 * @author     Aurelien PERONNET <aurelien@tela-botanica.org>
11
 * @author     Aurelien PERONNET <aurelien@tela-botanica.org>
12
 * @license    GPL v3 <http://www.gnu.org/licenses/gpl.txt>
12
 * @license    GPL v3 <http://www.gnu.org/licenses/gpl.txt>
13
 * @license    CECILL v2 <http://www.cecill.info/licences/Licence_CeCILL_V2-en.txt>
13
 * @license    CECILL v2 <http://www.cecill.info/licences/Licence_CeCILL_V2-en.txt>
14
 * @copyright  1999-2014 Tela Botanica <accueil@tela-botanica.org>
14
 * @copyright  1999-2014 Tela Botanica <accueil@tela-botanica.org>
15
 */
15
 */
16
class Dao extends Bdd {
16
class Dao extends Bdd {
17
 
17
 
18
	private $mode;
18
	private $mode;
19
	private $table_liaison;
19
	private $table_liaison;
20
	private $table_mots_cles;
20
	private $table_mots_cles;
21
 
21
 
22
	public function __construct($mode) {
22
	public function __construct($mode) {
23
		parent::__construct();
23
		parent::__construct();
24
		$this->mode = $mode;
24
		$this->mode = $mode;
25
 
25
 
26
		if ($mode == 'obs') {
26
		if ($mode == 'obs') {
27
			$this->table_liaison = 'cel_mots_cles_obs_liaison';
27
			$this->table_liaison = 'cel_mots_cles_obs_liaison';
28
			$this->table_mots_cles = 'cel_arbre_mots_cles_obs';
28
			$this->table_mots_cles = 'cel_arbre_mots_cles_obs';
29
		} else {
29
		} else {
30
			$this->table_liaison = 'cel_mots_cles_images_liaison';
30
			$this->table_liaison = 'cel_mots_cles_images_liaison';
31
			$this->table_mots_cles = 'cel_arbre_mots_cles_images';
31
			$this->table_mots_cles = 'cel_arbre_mots_cles_images';
32
		}
32
		}
33
	}
33
	}
34
 
34
 
35
	public function viderTables() {
35
	public function viderTables() {
36
		$requete = "TRUNCATE ".$this->table_mots_cles." ";
36
		$requete = "TRUNCATE ".$this->table_mots_cles." ";
37
		$vidage = $this->requeter($requete.' -- '.__FILE__.':'.__LINE__);
37
		$vidage = $this->requeter($requete.' -- '.__FILE__.':'.__LINE__);
38
 
38
 
39
		$requete = "TRUNCATE ".$this->table_liaison." ";
39
		$requete = "TRUNCATE ".$this->table_liaison." ";
40
		$vidage = $this->requeter($requete.' -- '.__FILE__.':'.__LINE__);
40
		$vidage = $this->requeter($requete.' -- '.__FILE__.':'.__LINE__);
41
 
41
 
42
		return $vidage;
42
		return $vidage;
43
	}
43
	}
44
 
44
 
45
	public function obtenirMotsClesOriginaux() {
45
	public function obtenirMotsClesOriginaux() {
46
		if($this->mode == 'obs') {
46
		if($this->mode == 'obs') {
47
			$requete = "SELECT id_mot_cle_obs as id_mot_cle, ce_mot_cle_obs_parent as parent, id_utilisateur, mot_cle ".
47
			$requete = "SELECT id_mot_cle_obs as id_mot_cle, ce_mot_cle_obs_parent as parent, id_utilisateur, mot_cle ".
48
				"FROM cel_mots_cles_obs WHERE niveau != 0 AND id_utilisateur != '' ORDER BY id_utilisateur, niveau";
48
				"FROM cel_mots_cles_obs WHERE niveau != 0 AND id_utilisateur != '' ORDER BY id_utilisateur, niveau";
49
		} else {
49
		} else {
50
			$requete = "SELECT id_mot_cle_image as id_mot_cle, ce_mot_cle_image_parent as parent, id_utilisateur, mot_cle ".
50
			$requete = "SELECT id_mot_cle_image as id_mot_cle, ce_mot_cle_image_parent as parent, id_utilisateur, mot_cle ".
51
				"FROM cel_mots_cles_images WHERE niveau != 0 AND id_utilisateur != '' ORDER BY id_utilisateur, niveau";
51
				"FROM cel_mots_cles_images WHERE niveau != 0 AND id_utilisateur != '' ORDER BY id_utilisateur, niveau";
52
		}
52
		}
53
 
53
 
54
		$mots_cles = $this->recupererTous($requete);
54
		$mots_cles = $this->recupererTous($requete);
55
		return $mots_cles;
55
		return $mots_cles;
56
	}
56
	}
57
 
57
 
58
	public function obtenirLiaisonsMotsClesOriginaux() {
58
	public function obtenirLiaisonsMotsClesOriginaux() {
59
		if ($this->mode == 'obs') {
59
		if ($this->mode == 'obs') {
60
			$requete = "SELECT comc.id_observation as id_element_lie, comc.id_mot_cle_obs as id_mot_cle, id_utilisateur as id_utilisateur ".
60
			$requete = "SELECT comc.id_observation AS id_element_lie, comc.id_mot_cle_obs AS id_mot_cle, id_utilisateur AS id_utilisateur ".
61
				"FROM cel_obs_mots_cles comc ".
61
				"FROM cel_obs_mots_cles comc ".
62
				"INNER JOIN cel_obs o ON o.id_observation = comc.id_observation ";
62
				"INNER JOIN cel_obs o ON o.id_observation = comc.id_observation ";
63
		} else {
63
		} else {
64
			$requete = "SELECT comc.id_image as id_element_lie, comc.id_mot_cle_image as id_mot_cle, o.ce_utilisateur as id_utilisateur ".
64
			$requete = "SELECT comc.id_image AS id_element_lie, comc.id_mot_cle_image AS id_mot_cle, o.ce_utilisateur AS id_utilisateur ".
65
				"FROM cel_images_mots_cles comc ".
65
				"FROM cel_images_mots_cles comc ".
66
				"INNER JOIN cel_images o ON o.id_image = comc.id_image ";
66
				"INNER JOIN cel_images o ON o.id_image = comc.id_image ";
67
		}
67
		}
68
		$liaisons = $this->recupererTous($requete);
68
		$liaisons = $this->recupererTous($requete);
69
		return $liaisons;
69
		return $liaisons;
70
	}
70
	}
71
 
71
 
72
	public function insererMotsCles($mots_cles) {
72
	public function insererMotsCles($mots_cles) {
73
		$requete = "INSERT INTO ".$this->table_mots_cles." (chemin, id_utilisateur, mot_cle) VALUES ";
73
		$requete = "INSERT INTO ".$this->table_mots_cles." (chemin, id_utilisateur, mot_cle) VALUES ";
74
 
74
 
75
		foreach ($mots_cles as $mot_cle) {
75
		foreach ($mots_cles as $mot_cle) {
76
			$requete .= '('.
76
			$requete .= '('.
77
				$this->proteger($mot_cle['chemin']).', '.
77
				$this->proteger($mot_cle['chemin']).', '.
78
				$this->proteger($mot_cle['id_utilisateur']).', '.
78
				$this->proteger($mot_cle['id_utilisateur']).', '.
79
				$this->proteger($mot_cle['mot_cle']).' '.
79
				$this->proteger($mot_cle['mot_cle']).' '.
80
			'), ';
80
			'), ';
81
		}
81
		}
82
 
82
 
83
		$requete = rtrim($requete, ', ');
83
		$requete = rtrim($requete, ', ');
84
		return $this->requeter($requete);
84
		return $this->requeter($requete);
85
	}
85
	}
86
 
86
 
87
	public function obtenirInfosNouveauxMotsCles() {
87
	public function obtenirInfosNouveauxMotsCles() {
88
		$requete = "SELECT id_mot_cle, id_utilisateur, chemin FROM ".$this->table_mots_cles;
88
		$requete = "SELECT id_mot_cle, id_utilisateur, chemin FROM ".$this->table_mots_cles;
89
		return $this->recupererTous($requete);
89
		return $this->recupererTous($requete);
90
	}
90
	}
91
 
91
 
92
	public function insererLiaisonsMotsCles($mots_cles, $liaisons, $correspondances) {
92
	public function insererLiaisonsMotsCles($mots_cles, $liaisons, $correspondances) {
93
		$requete = "INSERT INTO ".$this->table_liaison." (id_element_lie, id_mot_cle) VALUES ";
93
		$requete = "INSERT INTO ".$this->table_liaison." (id_element_lie, id_mot_cle) VALUES ";
94
		$lier = false;
94
		$lier = false;
95
		$mot_cles_inexistants = 0;
95
		$mot_cles_inexistants = 0;
96
 
96
 
97
		foreach ($liaisons as &$liaison_mot_cle) {
97
		foreach ($liaisons as &$liaison_mot_cle) {
98
			$cle = $liaison_mot_cle['id_mot_cle'].'-'.$liaison_mot_cle['id_utilisateur'];
98
			$cle = $liaison_mot_cle['id_mot_cle'].'-'.$liaison_mot_cle['id_utilisateur'];
99
			if (isset($mots_cles[$cle])) {
99
			if (isset($mots_cles[$cle])) {
100
				$cle_id_mot_cle_migre = $mots_cles[$cle]['chemin'].'-'.$liaison_mot_cle['id_utilisateur'];
100
				$cle_id_mot_cle_migre = $mots_cles[$cle]['chemin'].'-'.$liaison_mot_cle['id_utilisateur'];
101
				if(isset($correspondances[$cle_id_mot_cle_migre])) {
101
				if(isset($correspondances[$cle_id_mot_cle_migre])) {
102
					$id_mot_cle_migre = $correspondances[$cle_id_mot_cle_migre]['id_mot_cle'];
102
					$id_mot_cle_migre = $correspondances[$cle_id_mot_cle_migre]['id_mot_cle'];
103
					$requete .= "(".
103
					$requete .= "(".
104
						$this->proteger($liaison_mot_cle['id_element_lie']).", ".
104
						$this->proteger($liaison_mot_cle['id_element_lie']).", ".
105
						$this->proteger($id_mot_cle_migre)." ".
105
						$this->proteger($id_mot_cle_migre)." ".
106
									"), ";
106
									"), ";
107
					$lier = true;
107
					$lier = true;
108
				} else {
108
				} else {
109
					$mot_cles_inexistants++;
109
					$mot_cles_inexistants++;
110
				}
110
				}
111
			}
111
			}
112
		}
112
		}
113
 
113
 
114
		if ($lier) {
114
		if ($lier) {
115
			$requete = rtrim($requete, ', ');
115
			$requete = rtrim($requete, ', ');
116
			$this->requeter($requete);
116
			$this->requeter($requete);
117
		}
117
		}
118
		if ($mot_cles_inexistants != 0) {
118
		if ($mot_cles_inexistants != 0) {
119
			echo $mot_cles_inexistants."\n";
119
			echo $mot_cles_inexistants."\n";
120
		}
120
		}
121
	}
121
	}
122
}
122
}