Subversion Repositories eFlore/Applications.cel

Rev

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

Rev 2143 Rev 2394
Line 96... Line 96...
96
					$champs_etendus_par_element[$id_element] = array();
96
					$champs_etendus_par_element[$id_element] = array();
97
				}
97
				}
98
				$champ_etendu = new ChampEtendu();
98
				$champ_etendu = new ChampEtendu();
99
				$champ_etendu->id = $id_element;
99
				$champ_etendu->id = $id_element;
100
				$champ_etendu->cle = $ligne['cle'];
100
				$champ_etendu->cle = $ligne['cle'];
101
				$champ_etendu->label = $ligne['label'];
-
 
102
				$champ_etendu->valeur = $ligne['valeur'];
101
				$champ_etendu->valeur = $ligne['valeur'];
Line 103... Line 102...
103
 
102
 
104
				$champs_etendus_par_element[$id_element][] = $champ_etendu;
103
				$champs_etendus_par_element[$id_element][] = $champ_etendu;
105
			}
104
			}
Line 115... Line 114...
115
	 * @return bool true si l'ajout a eu lieu
114
	 * @return bool true si l'ajout a eu lieu
116
	 */
115
	 */
117
	public function ajouter(ChampEtendu $champ_etendu) {
116
	public function ajouter(ChampEtendu $champ_etendu) {
118
		$id = Cel::db()->proteger($champ_etendu->id);
117
		$id = Cel::db()->proteger($champ_etendu->id);
119
		$cle = Cel::db()->proteger($champ_etendu->cle);
118
		$cle = Cel::db()->proteger($champ_etendu->cle);
120
		$label = Cel::db()->proteger($champ_etendu->label);
-
 
121
		$valeur = Cel::db()->proteger($champ_etendu->valeur);
119
		$valeur = Cel::db()->proteger($champ_etendu->valeur);
Line 122... Line 120...
122
 
120
 
123
		$requete = "INSERT INTO {$this->table_champs_etendus} ".
121
		$requete = "INSERT INTO {$this->table_champs_etendus} ".
124
			"( {$this->champ_id}, cle, label, valeur) ".
122
			"( {$this->champ_id}, cle, valeur) ".
125
			"VALUES ($id, $cle, $label, $valeur) ".
123
			"VALUES ($id, $cle, $valeur) ".
Line 126... Line 124...
126
			"ON DUPLICATE KEY UPDATE valeur = VALUES(valeur)";
124
			"ON DUPLICATE KEY UPDATE valeur = VALUES(valeur)";
127
 
125
 
128
		// la partie on duplicate key est spécifique mysql mais il sera facile de s'en passer le jour
126
		// la partie on duplicate key est spécifique mysql mais il sera facile de s'en passer le jour
Line 143... Line 141...
143
 
141
 
144
		$lignes = array();
142
		$lignes = array();
145
		foreach ($champs_etendus as $champ_etendu) {
143
		foreach ($champs_etendus as $champ_etendu) {
146
			$id = Cel::db()->proteger($champ_etendu->id);
144
			$id = Cel::db()->proteger($champ_etendu->id);
147
			$cle = Cel::db()->proteger($champ_etendu->cle);
-
 
148
			$label = Cel::db()->proteger($champ_etendu->label);
145
			$cle = Cel::db()->proteger($champ_etendu->cle);
Line 149... Line 146...
149
			$valeur = Cel::db()->proteger($champ_etendu->valeur);
146
			$valeur = Cel::db()->proteger($champ_etendu->valeur);
150
 
147
 
Line 151... Line 148...
151
			$lignes[] = "($id, $cle, $label, $valeur)";
148
			$lignes[] = "($id, $cle, $valeur)";
152
		}
149
		}
153
 
150
 
154
		// la partie on duplicate key est spécifique mysql mais il sera facile de s'en passer le jour
151
		// la partie on duplicate key est spécifique mysql mais il sera facile de s'en passer le jour
155
		// où l'on change de sgbd
152
		// où l'on change de sgbd
156
		$ajout = Cel::db()->executer(sprintf(
153
		$ajout = Cel::db()->executer(sprintf(
157
            "INSERT INTO %s (%s, cle, label, valeur) VALUES %s ON DUPLICATE KEY UPDATE valeur = VALUES(valeur) -- %s:%d",
154
            "INSERT INTO %s (%s, cle, valeur) VALUES %s ON DUPLICATE KEY UPDATE valeur = VALUES(valeur) -- %s:%d",
158
            $this->table_champs_etendus,
155
            $this->table_champs_etendus,
159
            $this->champ_id,
156
            $this->champ_id,
Line 169... Line 166...
169
	 * @return bool true si la modification a eu lieu
166
	 * @return bool true si la modification a eu lieu
170
	 */
167
	 */
171
	public function modifier(ChampEtendu $champ_etendu) {
168
	public function modifier(ChampEtendu $champ_etendu) {
172
		$id = Cel::db()->proteger($champ_etendu->id);
169
		$id = Cel::db()->proteger($champ_etendu->id);
173
		$cle = Cel::db()->proteger($champ_etendu->cle);
170
		$cle = Cel::db()->proteger($champ_etendu->cle);
174
		$label = Cel::db()->proteger($champ_etendu->label);
-
 
175
		$valeur = Cel::db()->proteger($champ_etendu->valeur);
171
		$valeur = Cel::db()->proteger($champ_etendu->valeur);
Line 176... Line 172...
176
 
172
 
177
		$requete = "UPDATE {$this->table_champs_etendus} ".
173
		$requete = "UPDATE {$this->table_champs_etendus} ".
178
			"SET label = $label, valeur = $valeur ".
174
			"SET valeur = $valeur ".
179
			"WHERE cle = $cle".
175
			"WHERE cle = $cle".
Line 180... Line 176...
180
			"	AND {$this->champ_id} = $id ";
176
			"	AND {$this->champ_id} = $id ";
181
 
177
 
Line 247... Line 243...
247
	/**
243
	/**
248
	 * Renvoie la liste des groupes de champs étendus
244
	 * Renvoie la liste des groupes de champs étendus
249
	 */
245
	 */
250
	public function consulterGroupesChampsEtendusPredefinis() {
246
	public function consulterGroupesChampsEtendusPredefinis() {
251
		$groupes = array();
247
		$groupes = array();
-
 
248
		$requete =  "SELECT cc.cle as cle_groupe, cc.label as nom_groupe, ccc.cle as cle_champ, ccc.label as label_champ, ccc.invisible ".
252
		/*$requete = "SELECT * FROM {$this->table_champs_etendus}_groupes ";
249
					"FROM `cel_catalogue_champs_etendus` cc ".
-
 
250
					"INNER JOIN cel_catalogue_champs_etendus_liaison cl ON cc.cle = cl.groupe ".
-
 
251
					"INNER JOIN cel_catalogue_champs_etendus ccc ON ccc.cle = cl.champ";
-
 
252
 
253
		$champs = Cel::db()->executerRequete($requete);
253
		$groupes_champs = Cel::db()->executerRequete($requete);
254
 
254
		
-
 
255
		$cle_groupe = "";
-
 
256
		$infos_groupe = null;
-
 
257
		
255
		foreach ($champs as $champ) {
258
		foreach ($groupes_champs as $groupe_champ) {
-
 
259
			// les champs sont ordonnés par groupe, ce qui permet de les assembler
-
 
260
			// séquentiellement en créeant un nouveau groupe lorsque la clé
-
 
261
			// de groupe du champ actuel est différénte de la précédente
256
			if(!isset($groupes[$champ['groupe']])) {
262
			if($cle_groupe != $groupe_champ['cle_groupe']) {
-
 
263
				if($infos_groupe != null) {
-
 
264
					$groupes[] = $infos_groupe;
-
 
265
				}
257
				$groupes[$champ['groupe']] = array();
266
				$infos_groupe = array();
-
 
267
				$cle_groupe = $groupe_champ['cle_groupe'];
-
 
268
			}
-
 
269
			
-
 
270
			if(empty($infos_groupe)) {
-
 
271
				$infos_groupe = array(
-
 
272
									'cle' => $groupe_champ['cle_groupe'],
-
 
273
									'nom' => $groupe_champ['nom_groupe'],
-
 
274
									'champs' => array()
-
 
275
								);
258
			}
276
			}
-
 
277
			
-
 
278
			$infos_groupe['champs'][] = array(
259
			$groupes[$champ['groupe']][$champ['cle']] = $champ['label'];
279
											'cle'	=> $groupe_champ['cle_champ'],
-
 
280
											'label' => $groupe_champ['label_champ'],
-
 
281
											'options' => array('invisible' => $groupe_champ['invisible'])
-
 
282
										);
-
 
283
		}
-
 
284
		
-
 
285
		// Ajout du dernier groupe, qui serait ignoré sinon, étant donné que l'ajout 
-
 
286
		// au tableau se fait au début de la boucle
-
 
287
		//TODO: voir si on ne peut pas simplifier ça
-
 
288
		if(!empty($infos_groupe)) {
-
 
289
			$groupes[] = $infos_groupe;
260
		}*/
290
		}
-
 
291
 
261
		return $groupes;
292
		return $groupes;
262
	}
293
	}
-
 
294
	
-
 
295
	/**
-
 
296
	 * Renvoie le catalogue des champs étendus
-
 
297
	 */
-
 
298
	public function consulterCatalogueChampsEtendusPredefinis($ordonner_par_cle = false) {
-
 
299
		$requete =  "SELECT cle, label, invisible ".
-
 
300
					"FROM cel_catalogue_champs_etendus cc ";
-
 
301
		
-
 
302
		$catalogue = Cel::db()->executerRequete($requete);
-
 
303
		$infos_champs = array();
-
 
304
		
-
 
305
		foreach ($catalogue as $champ) {
-
 
306
			$champ_fmt = array(
-
 
307
				'cle'	=> $champ['cle'],
-
 
308
				'label' => $champ['label'],
-
 
309
				'options' => array('invisible' => $champ['invisible'])
-
 
310
			);
-
 
311
			if($ordonner_par_cle) {
-
 
312
				$infos_champs[$champ_fmt['cle']] = $champ_fmt;
-
 
313
			} else {
-
 
314
				$infos_champs[] = $champ_fmt;
-
 
315
			}		
-
 
316
		}
-
 
317
		return $infos_champs;
-
 
318
	}
Line 263... Line 319...
263
 
319
 
264
	/**
320
	/**
265
	 * Transforme un label en clé.
321
	 * Transforme un label en clé.
266
	 * Supprime tous les accents et caractères spéciaux.
322
	 * Supprime tous les accents et caractères spéciaux.