22,22 → 22,13 |
private $table_champs_etendus = null; |
private $champ_id = null; |
|
public function __construct($config, $mode) { |
public function __construct($config, $mode = 'obs') { |
parent::__construct($config); |
$this->mode = $mode; |
$this->table_champs_etendus = 'extended_field_occurrence'; |
$this->champ_id = 'occurrence_id'; |
|
if ($this->mode == 'obs') { |
$this->mode = 'obs'; |
$this->table_champs_etendus = 'cel_obs_etendues'; |
$this->champ_id = 'id_observation'; |
} else if ($this->mode == 'image') { |
$this->mode = 'image'; |
$this->table_champs_etendus = 'cel_images_etendues'; |
$this->champ_id = 'id_image'; |
} else { |
throw new Exception('Mode inconnu, les modes autorisés sont "obs" et "image"'); |
} |
} |
|
/** |
* Renvoie true ou false suivant que l'element indiqué possède une valeur |
54,7 → 45,7 |
$requete = 'SELECT COUNT(*) >= 1 AS existe '. |
"FROM {$this->table_champs_etendus} ". |
"WHERE {$this->champ_id} = $id ". |
" AND cle = $cle ". |
" AND extended_field_id = $cle ". |
' -- '.__FILE__.':'.__LINE__;; |
|
$resultat = Cel::db()->requeter($requete); |
101,8 → 92,8 |
} |
$champ_etendu = new ObsEtendue(); |
$champ_etendu->id = $id_element; |
$champ_etendu->cle = $ligne['cle']; |
$champ_etendu->valeur = $ligne['valeur']; |
$champ_etendu->cle = $ligne['extended_field_id']; |
$champ_etendu->valeur = $ligne['value']; |
|
$champs_etendus_par_element[$id_element][] = $champ_etendu; |
} |
123,9 → 114,9 |
$valeur = Cel::db()->proteger($champ_etendu->valeur); |
|
$requete = "INSERT INTO {$this->table_champs_etendus} ". |
"( {$this->champ_id}, cle, valeur) ". |
"( {$this->champ_id}, extended_field_id, value) ". |
"VALUES ($id, $cle, $valeur) ". |
"ON DUPLICATE KEY UPDATE valeur = VALUES(valeur) ". |
"ON DUPLICATE KEY UPDATE value = VALUES(value) ". |
' -- '.__FILE__.':'.__LINE__; |
|
// la partie on duplicate key est spécifique mysql mais il sera facile de s'en passer le jour |
156,7 → 147,7 |
// 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, cle, valeur) VALUES %s ON DUPLICATE KEY UPDATE valeur = VALUES(valeur) -- %s:%d", |
"INSERT INTO %s (%s, extended_field_id, valeur) VALUES %s ON DUPLICATE KEY UPDATE value = VALUES(valeur) -- %s:%d", |
$this->table_champs_etendus, |
$this->champ_id, |
implode(',', $lignes), |
176,8 → 167,8 |
$valeur = Cel::db()->proteger($champ_etendu->valeur); |
|
$requete = "UPDATE {$this->table_champs_etendus} ". |
"SET valeur = $valeur ". |
"WHERE cle = $cle". |
"SET value = $valeur ". |
"WHERE extended_field_id = $cle". |
" AND {$this->champ_id} = $id ". |
' -- '.__FILE__.':'.__LINE__; |
$modif = Cel::db()->executer($requete); |
195,7 → 186,7 |
$id = Cel::db()->proteger($id_element_lie); |
$cle = Cel::db()->proteger($cle); |
$requete = "DELETE FROM {$this->table_champs_etendus} ". |
"WHERE cle = $cle ". |
"WHERE extended_field_id = $cle ". |
"AND {$this->champ_id} = $id ". |
' -- '.__FILE__.':'.__LINE__; |
$suppr = Cel::db()->executer($requete); |
242,7 → 233,7 |
$cles_fmt = array(); |
if(!empty($ids_elements_lies)) { |
$ids = $this->protegerTableau($ids_elements_lies); |
$requete = 'SELECT cle '. |
$requete = 'SELECT extended_field_id as cle '. |
"FROM {$this->table_champs_etendus} ". |
"WHERE {$this->champ_id} IN (".implode(',',$ids).") ". |
' -- '.__FILE__.':'.__LINE__; |
260,7 → 251,7 |
*/ |
public function consulterGroupesChampsEtendusPredefinis($groupe = "", $langue = 'fr') { |
$groupes = array(); |
$requete = "SELECT cc.cle as cle_groupe, cc.label as nom_groupe, ccc.cle as cle_champ, ccc.label as label_champ, ccc.type as type_champ, ccc.valeur as valeur_champ, ccc.invisible, ccc.prive ". |
$requete = "SELECT cc.extended_field_id as cle_groupe, cc.label as nom_groupe, ccc.cle as cle_champ, ccc.label as label_champ, ccc.type as type_champ, ccc.valeur as valeur_champ, ccc.invisible, ccc.prive ". |
"FROM `cel_catalogue_champs_etendus` cc ". |
"INNER JOIN cel_catalogue_champs_etendus_liaison cl ON cc.cle = cl.groupe ". |
"INNER JOIN cel_catalogue_champs_etendus ccc ON ccc.cle = cl.champ ". |