Subversion Repositories eFlore/Applications.cel

Rev

Rev 3537 | Rev 3541 | Go to most recent revision | Show entire file | Ignore 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) {
138
 
142
		
139
		$lignes = array();
143
    		$lignes = array();
140
		foreach ($champs_etendus as $champ_etendu) {
144
    		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']);
143
			$valeur = Cel::db()->proteger($champ_etendu->valeur);
148
        			$valeur = Cel::db()->proteger($champ_etendu->valeur);
144
 
149
        
145
			$lignes[] = "($id, $cle, $valeur)";
150
        			$lignes[] = "($id, $cle, $valeur)";
-
 
151
    		    }
-
 
152
    		}
-
 
153
    
-
 
154
    		// 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
-
 
156
    		$ajout = Cel::db()->executer(sprintf(
-
 
157
    			"INSERT INTO %s (%s, extended_field_id, value) VALUES %s ON DUPLICATE KEY UPDATE value = VALUES(valeur) -- %s:%d",
-
 
158
    			$this->table_obs_etendus,
-
 
159
    			$this->champ_id,
-
 
160
    			implode(',', $lignes),
-
 
161
    			__FILE__, __LINE__));
146
		}
162
		}
147
 
-
 
148
		// 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
-
 
150
		$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",
-
 
152
			$this->table_obs_etendus,
-
 
153
			$this->champ_id,
-
 
154
			implode(',', $lignes),
-
 
155
			__FILE__, __LINE__));
-
 
156
		return ($ajout !== false);
163
		return ($ajout !== false);
157
	}
164
	}
Line 158... Line 165...
158
 
165
 
159
	/**
166
	/**