Subversion Repositories eFlore/Applications.cel

Rev

Rev 2068 | Go to most recent revision | Show entire file | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed

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