Subversion Repositories eFlore/Applications.cel

Rev

Rev 1765 | Show entire file | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed

Rev 1765 Rev 1896
Line 42... Line 42...
42
	public function lierMotCleObs($utilisateur_id, Array $mots_cles_ids, Array $ids) {
42
	public function lierMotCleObs($utilisateur_id, Array $mots_cles_ids, Array $ids) {
43
		$this->suffix = self::OBS_TABLE_SUFFIXE;
43
		$this->suffix = self::OBS_TABLE_SUFFIXE;
44
		$this->utilisateur_id = $utilisateur_id;
44
		$this->utilisateur_id = $utilisateur_id;
45
		return $this->lierMotCle($utilisateur_id, $mots_cles_ids, $ids);
45
		return $this->lierMotCle($utilisateur_id, $mots_cles_ids, $ids);
46
	}
46
	}
47
	
47
 
48
	public function lierMotCleImg($utilisateur_id, Array $mots_cles_ids, Array $ids) {
48
	public function lierMotCleImg($utilisateur_id, Array $mots_cles_ids, Array $ids) {
49
		$this->suffix = self::IMG_TABLE_SUFFIXE;
49
		$this->suffix = self::IMG_TABLE_SUFFIXE;
50
		$this->utilisateur_id = $utilisateur_id;
50
		$this->utilisateur_id = $utilisateur_id;
51
		return $this->lierMotCle($utilisateur_id, $mots_cles_ids, $ids);
51
		return $this->lierMotCle($utilisateur_id, $mots_cles_ids, $ids);
52
	}
52
	}
53
	
53
 
54
	/**
54
	/**
55
	* Lie un mot-clé à une ou plusieurs images ou obs suivant le suffixe en cours.
55
	* Lie un mot-clé à une ou plusieurs images ou obs suivant le suffixe en cours.
56
	*
56
	*
57
	* @param String $utilisateur_id identifiant de l'utilisateur.
57
	* @param String $utilisateur_id identifiant de l'utilisateur.
58
	* @param Array $mots_cles_ids tableau d'ids des mot-clé.
58
	* @param Array $mots_cles_ids tableau d'ids des mot-clé.
Line 60... Line 60...
60
	*/
60
	*/
61
	public function lierMotCle($utilisateur_id, Array $mots_cles_ids, Array $ids) {
61
	public function lierMotCle($utilisateur_id, Array $mots_cles_ids, Array $ids) {
62
		$retour = false;
62
		$retour = false;
Line 63... Line 63...
63
 
63
 
64
		if ($this->contenirNbresEntiers($ids)) {
64
		if ($this->contenirNbresEntiers($ids)) {
65
			
65
 
66
			$champ_objet_lie = ($this->suffix == self::OBS_TABLE_SUFFIXE) ? 'id_observation' : 'id_image';
66
			$champ_objet_lie = ($this->suffix == self::OBS_TABLE_SUFFIXE) ? 'id_observation' : 'id_image';
Line 67... Line 67...
67
			$champ_mot_cle = ($this->suffix == self::OBS_TABLE_SUFFIXE) ? 'id_mot_cle_obs' : 'id_mot_cle_image';
67
			$champ_mot_cle = ($this->suffix == self::OBS_TABLE_SUFFIXE) ? 'id_mot_cle_obs' : 'id_mot_cle_image';
68
 
68
 
69
			// le mot clé ignore est spécifique mysql, mais il est utilisé ici pour des raisons
69
			// le mot clé ignore est spécifique mysql, mais il est utilisé ici pour des raisons
70
			// de performance, à remplacer par un test sur les mots clés déjà existant si ça gène
70
			// de performance, à remplacer par un test sur les mots clés déjà existant si ça gène
71
			$requete = "INSERT IGNORE INTO cel{$this->suffix}_mots_cles ".
71
			$requete = "INSERT IGNORE INTO cel{$this->suffix}_mots_cles ".
72
									   '('.$champ_objet_lie.', '.$champ_mot_cle.') '.
72
				'('.$champ_objet_lie.', '.$champ_mot_cle.') '.
73
									   'VALUES ';
73
				'VALUES ';
74
									   
74
 
75
			foreach($ids as $id) {
75
			foreach($ids as $id) {
76
				foreach($mots_cles_ids as $mot) {
76
				foreach($mots_cles_ids as $mot) {
77
					$requete .= '('.$id.','.Cel::db()->proteger($mot).'),';
77
					$requete .= '('.$id.','.Cel::db()->proteger($mot).'),';
78
				}
78
				}
79
			}
79
			}
80
			$requete = rtrim($requete,',');
80
			$requete = rtrim($requete,',');
81
			$resultat = Cel::db()->executer($requete);
81
			$resultat = Cel::db()->executer($requete);
82
			
82
 
83
			// J'en suis ici
83
			// J'en suis ici
84
			if ($resultat) {
84
			if ($resultat) {
85
				$retour = true;
85
				$retour = true;
Line 119... Line 119...
119
		return $ok;
119
		return $ok;
120
	}
120
	}
Line 121... Line 121...
121
 
121
 
122
	private function obtenirMotsClesTexte($id_image_ou_obs) {
122
	private function obtenirMotsClesTexte($id_image_ou_obs) {
123
		$requete = 	'SELECT mot_cle '.
123
		$requete = 	'SELECT mot_cle '.
124
					'FROM '.'cel_mots_cles'.$this->suffix.' '.
124
			'FROM '.'cel_mots_cles'.$this->suffix.' '.
125
					'WHERE id_mot_cle_'.(($this->suffix == self::OBS_TABLE_SUFFIXE) ? 'obs' : 'image').' IN '.
125
			'WHERE id_mot_cle_'.(($this->suffix == self::OBS_TABLE_SUFFIXE) ? 'obs' : 'image').' IN '.
126
						'('.
126
			'('.
127
							'SELECT id_mot_cle_'.(($this->suffix == self::OBS_TABLE_SUFFIXE) ? 'obs' : 'image').' '.
127
				'SELECT id_mot_cle_'.(($this->suffix == self::OBS_TABLE_SUFFIXE) ? 'obs' : 'image').' '.
128
							'FROM cel'.$this->suffix.'_mots_cles '.
128
				'FROM cel'.$this->suffix.'_mots_cles '.
129
							'WHERE '.(($this->suffix == self::OBS_TABLE_SUFFIXE) ? 'id_observation' : 'id_image').' = '.Cel::db()->proteger($id_image_ou_obs).
129
				'WHERE '.(($this->suffix == self::OBS_TABLE_SUFFIXE) ? 'id_observation' : 'id_image').' = '.Cel::db()->proteger($id_image_ou_obs).
Line 130... Line 130...
130
						')';
130
			')';
131
 
131
 
132
		$resultats = Cel::db()->requeter($requete);
132
		$resultats = Cel::db()->requeter($requete);
Line 142... Line 142...
142
	}
142
	}
Line 143... Line 143...
143
 
143
 
144
	private function concatenerMotsCles(Array $mots_cles) {
144
	private function concatenerMotsCles(Array $mots_cles) {
145
		$mot_cles_concatenes = '';
145
		$mot_cles_concatenes = '';
-
 
146
		if (count($mots_cles) > 0) {
146
		if (count($mots_cles) > 0) {
147
			$dedoublonage = array();
-
 
148
			foreach ($mots_cles as $mot_cle) {
-
 
149
				if (array_key_exists($mot_cle['mot_cle'], $dedoublonage) === false) {
147
			foreach ($mots_cles as $mot_cle) {
150
					$dedoublonage[$mot_cle['mot_cle']] = 1;
-
 
151
					$mot_cles_concatenes .= $mot_cle['mot_cle'].self::SEPARATEUR_MOT_CLE_TEXTE;
-
 
152
				} else {
-
 
153
					$dedoublonage[$mot_cle['mot_cle']]++;
148
				$mot_cles_concatenes .= $mot_cle['mot_cle'].self::SEPARATEUR_MOT_CLE_TEXTE;
154
				}
149
			}
155
			}
150
		}
156
		}
151
		$mot_cles_concatenes = rtrim($mot_cles_concatenes, self::SEPARATEUR_MOT_CLE_TEXTE);
157
		$mot_cles_concatenes = rtrim($mot_cles_concatenes, self::SEPARATEUR_MOT_CLE_TEXTE);
152
		return $mot_cles_concatenes;
158
		return $mot_cles_concatenes;