Subversion Repositories eFlore/Applications.cel

Rev

Rev 3537 | Rev 3541 | Go to most recent revision | Show entire file | Regard whitespace | Details | Blame | Last modification | View Log | RSS feed

Rev 3537 Rev 3538
Line 131... Line 131...
131
	 * Si la clé existe déjà, seule la valeur du champ est mise à jour
131
	 * Si la clé existe déjà, seule la valeur du champ est mise à jour
132
	 *
132
	 *
133
	 * @param array $champs_etendus tableau d'objets ChampEtendu
133
	 * @param array $champs_etendus tableau d'objets ChampEtendu
134
	 * @return bool true si l'ajout a eu lieu
134
	 * @return bool true si l'ajout a eu lieu
135
	 */
135
	 */
136
	public function ajouterParLots(Array $champs_etendus) {
136
	public function ajouterParLots(Array $champs_etendus, $projet = null) {
137
		if (! $champs_etendus) return TRUE; // le tableau ... vide à été inséré
137
		if (! $champs_etendus) return TRUE; // le tableau ... vide à été inséré
-
 
138
		$ajout = false;
-
 
139
		$label_champs_etendus = new GestionChampsEtendus2();
-
 
140
		$champs_etendus_id = $label_champs_etendus->consulterGroupesChampsEtendusPredefinis($projet);
-
 
141
		if ($champs_etendus_id !== null) {
Line 138... Line 142...
138
 
142
		
139
		$lignes = array();
143
    		$lignes = array();
-
 
144
    		foreach ($champs_etendus as $champ_etendu) {
140
		foreach ($champs_etendus as $champ_etendu) {
145
    		    if (isset($champs_etendus_id[$champ_etendu->cle])) {
141
			$id = Cel::db()->proteger($champ_etendu->id);
146
        			$id = Cel::db()->proteger($champ_etendu->id);
142
			$cle = Cel::db()->proteger($champ_etendu->cle);
147
        			$cle = Cel::db()->proteger($champs_etendus_id[$champ_etendu->cle]['id']);
Line 143... Line 148...
143
			$valeur = Cel::db()->proteger($champ_etendu->valeur);
148
        			$valeur = Cel::db()->proteger($champ_etendu->valeur);
144
 
149
        
-
 
150
        			$lignes[] = "($id, $cle, $valeur)";
Line 145... Line 151...
145
			$lignes[] = "($id, $cle, $valeur)";
151
    		    }
146
		}
152
    		}
147
 
153
    
148
		// la partie on duplicate key est spécifique mysql mais il sera facile de s'en passer le jour
154
    		// la partie on duplicate key est spécifique mysql mais il sera facile de s'en passer le jour
149
		// où l'on change de sgbd
155
    		// où l'on change de sgbd
150
		$ajout = Cel::db()->executer(sprintf(
156
    		$ajout = Cel::db()->executer(sprintf(
151
			"INSERT INTO %s (%s, extended_field_id, value) VALUES %s ON DUPLICATE KEY UPDATE value = VALUES(valeur) -- %s:%d",
157
    			"INSERT INTO %s (%s, extended_field_id, value) VALUES %s ON DUPLICATE KEY UPDATE value = VALUES(valeur) -- %s:%d",
152
			$this->table_obs_etendus,
158
    			$this->table_obs_etendus,
-
 
159
    			$this->champ_id,
153
			$this->champ_id,
160
    			implode(',', $lignes),
154
			implode(',', $lignes),
161
    			__FILE__, __LINE__));
Line 155... Line 162...
155
			__FILE__, __LINE__));
162
		}
156
		return ($ajout !== false);
163
		return ($ajout !== false);