43,7 → 43,7 |
$requete = 'SELECT COUNT(*) >= 1 AS existe '. |
"FROM {$this->table_champs_etendus} ". |
"WHERE {$this->champ_id} = $id ". |
" AND cle = $cle ". |
" AND cle = $ce.field_id ". |
' -- '.__FILE__.':'.__LINE__;; |
|
$resultat = Cel::db()->requeter($requete); |
69,30 → 69,13 |
} |
|
/** |
* Ajoute un champ étendu. |
* Si la clé existe déjà, seule valeur du champ est mise à jour |
* A créer voir ajouterParProjet |
* |
* @param ChampEtendu $champ_etendu |
* @return bool true si l'ajout a eu lieu |
* |
* |
* |
*/ |
public function ajouter($parametres) { |
$id = Cel::db()->proteger($champ_etendu->id); |
$cle = Cel::db()->proteger($champ_etendu->cle); |
$valeur = Cel::db()->proteger($champ_etendu->valeur); |
|
$requete = "INSERT INTO {$this->table_champs_etendus} ". |
"( {$this->champ_id}, cle, valeur) ". |
"VALUES ($id, $cle, $valeur) ". |
"ON DUPLICATE KEY UPDATE valeur = VALUES(valeur) ". |
' -- '.__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($requete); |
return ($ajout !== false); |
return false; |
} |
|
/** |
202,9 → 185,88 |
return $groupes_champs; |
} |
|
/** |
* Formate de la même façon que l'ancien service les données de consulterProjetChampsEtendus |
*/ |
public function consulterGroupesChampsEtendusPredefinis($groupe = "", $langue = 'fr') { |
$groupes = array(); |
$groupes_champs = $this->consulterProjetChampsEtendus($groupe, $langue); |
|
$cle_groupe = ''; |
$infos_groupe = null; |
|
foreach ($groupes_champs as $groupe_champ) { |
// les champs sont ordonnés par groupe, ce qui permet de les assembler |
// séquentiellement en créeant un nouveau groupe lorsque la clé |
// de groupe du champ actuel est différénte de la précédente |
if ($cle_groupe != $groupe_champ['ce.`project`']) { |
if($infos_groupe != null) { |
$groupes[] = $infos_groupe; |
} |
$infos_groupe = array(); |
$cle_groupe = $groupe_champ['ce.`project`']; |
} |
|
if (empty($infos_groupe)) { |
$infos_groupe = array( |
'cle' => $groupe_champ['ce.`project`'], |
'nom' => $groupe_champ['ce.`project`'], |
'champs' => array() |
); |
} |
|
$infos_groupe['champs'][] = array( |
'cle' => $groupe_champ['ce.field_id'], |
'label' => $groupe_champ['cet.`label`'], |
'type' => $groupe_champ['type_champ'], |
'valeur' => $groupe_champ['valeur_champ'], |
'options' => array( |
'invisible' => $groupe_champ['invisible'], |
'prive' => $groupe_champ['prive']) |
); |
} |
|
// Ajout du dernier groupe, qui serait ignoré sinon, étant donné que l'ajout |
// au tableau se fait au début de la boucle |
//TODO: voir si on ne peut pas simplifier ça |
if (!empty($infos_groupe)) { |
$groupes[] = $infos_groupe; |
} |
|
return $groupes; |
} |
|
/** |
* Renvoie le catalogue des champs étendus |
*/ |
public function consulterCatalogueChampsEtendusPredefinis($ordonner_par_cle = false, $groupe = "") { |
$requete = 'SELECT cle, label, invisible, prive '. |
'FROM cel_catalogue_champs_etendus AS cc '; |
if ($groupe !== "") $requete .= " WHERE groupe = ".$groupe; |
$requete .= ' -- '.__FILE__.':'.__LINE__; |
$catalogue = Cel::db()->executerRequete($requete); |
|
$infos_champs = array(); |
if ($catalogue != false) { |
foreach ($catalogue as $champ) { |
$champ_fmt = array( |
'cle' => $champ['cle'], |
'label' => $champ['label'], |
'options' => array( |
'invisible' => $champ['invisible'], |
'prive' => $champ['prive']) |
); |
if ($ordonner_par_cle) { |
$infos_champs[$champ_fmt['cle']] = $champ_fmt; |
} else { |
$infos_champs[] = $champ_fmt; |
} |
} |
} |
return $infos_champs; |
} |
|
/** |
* Transforme un label en clé. |
* Supprime tous les accents et caractères spéciaux. |
* Accole les mots pour créer un chatmot. |