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); |
} |
|