Subversion Repositories eFlore/Applications.cel

Compare Revisions

Ignore whitespace Rev 3537 → Rev 3538

/trunk/jrest/bibliotheque/GestionChampsEtendus.php
133,26 → 133,33
* @param array $champs_etendus tableau d'objets ChampEtendu
* @return bool true si l'ajout a eu lieu
*/
public function ajouterParLots(Array $champs_etendus) {
public function ajouterParLots(Array $champs_etendus, $projet = null) {
if (! $champs_etendus) return TRUE; // le tableau ... vide à été inséré
 
$lignes = array();
foreach ($champs_etendus as $champ_etendu) {
$id = Cel::db()->proteger($champ_etendu->id);
$cle = Cel::db()->proteger($champ_etendu->cle);
$valeur = Cel::db()->proteger($champ_etendu->valeur);
 
$lignes[] = "($id, $cle, $valeur)";
$ajout = false;
$label_champs_etendus = new GestionChampsEtendus2();
$champs_etendus_id = $label_champs_etendus->consulterGroupesChampsEtendusPredefinis($projet);
if ($champs_etendus_id !== null) {
$lignes = array();
foreach ($champs_etendus as $champ_etendu) {
if (isset($champs_etendus_id[$champ_etendu->cle])) {
$id = Cel::db()->proteger($champ_etendu->id);
$cle = Cel::db()->proteger($champs_etendus_id[$champ_etendu->cle]['id']);
$valeur = Cel::db()->proteger($champ_etendu->valeur);
$lignes[] = "($id, $cle, $valeur)";
}
}
// la partie on duplicate key est spécifique mysql mais il sera facile de s'en passer le jour
// où l'on change de sgbd
$ajout = Cel::db()->executer(sprintf(
"INSERT INTO %s (%s, extended_field_id, value) VALUES %s ON DUPLICATE KEY UPDATE value = VALUES(valeur) -- %s:%d",
$this->table_obs_etendus,
$this->champ_id,
implode(',', $lignes),
__FILE__, __LINE__));
}
 
// la partie on duplicate key est spécifique mysql mais il sera facile de s'en passer le jour
// où l'on change de sgbd
$ajout = Cel::db()->executer(sprintf(
"INSERT INTO %s (%s, extended_field_id, value) VALUES %s ON DUPLICATE KEY UPDATE value = VALUES(valeur) -- %s:%d",
$this->table_obs_etendus,
$this->champ_id,
implode(',', $lignes),
__FILE__, __LINE__));
return ($ajout !== false);
}