Skip to content
Extraits de code Groupes Projets
Valider d6dbb79b rédigé par maieul@maieul.net's avatar maieul@maieul.net
Parcourir les fichiers

Formidable_raccourcis_arobases_2_valeurs_champs() peut désormais prendre

les valeurs n'ont pas dans _request() mais dans l'enregistrement d'une
réponse. On peut donc facilement utiliser le raccourci @@ pour afficher
une présentation particulière d'une réponse donnée (cas d'usage : un
plugin perso pour une application métier).

Du coup on fait appel à cette fonction pour affiche_resume_reponse() en
gardant la compatibilité ascendante de ce qui est passé au pipeline
homonyme (dont je doute que qui que ce soit l'utilise, mais c'est une
autre affaire).
parent 47c7b2be
Aucune branche associée trouvée
Étiquettes v3.46.0
Aucune requête de fusion associée trouvée
......@@ -133,7 +133,7 @@ function calculer_voir_reponse($id_formulaires_reponse, $id_formulaire, $nom, $s
*/
function affiche_resume_reponse($id_formulaires_reponse, $id_formulaire = null, $modele_resume = null) {
static $modeles_resume = array();
static $modeles_vars = array();
static $saisies;
if (is_null($id_formulaire)) {
$id_formulaire = sql_getfetsel(
......@@ -142,14 +142,13 @@ function affiche_resume_reponse($id_formulaires_reponse, $id_formulaire = null,
'id_formulaires_reponse='.intval($id_formulaires_reponse)
);
}
if (is_null($modele_resume) and !isset($modeles_resume[$id_formulaire])) {
$traitements_formulaire = unserialize(sql_getfetsel(
'traitements',
'spip_formulaires',
'id_formulaire='.intval($id_formulaire)
));
if (isset($traitements_formulaire['enregistrement']['resume_reponse'])) {
$modeles_resume[$id_formulaire] = $traitements_formulaire['enregistrement']['resume_reponse'];
$row = sql_fetsel('saisies, traitements', 'spip_formulaires', 'id_formulaire='.intval($id_formulaire));
$saisies = unserialize($row['saisies']);
$traitements = unserialize($row['traitements']);
if (isset($traitements['enregistrement']['resume_reponse'])) {
$modeles_resume[$id_formulaire] = $traitements['enregistrement']['resume_reponse'];
} else {
$modeles_resume[$id_formulaire] = '';
}
......@@ -162,17 +161,15 @@ function affiche_resume_reponse($id_formulaires_reponse, $id_formulaire = null,
return '';
}
if (!isset($modeles_vars[$modele_resume])) {
preg_match_all(',@(.*)@,Uims', $modele_resume, $matches);
$modeles_vars[$modele_resume] = $matches[1];
}
$valeurs = array();
foreach ($modeles_vars[$modele_resume] as $var) {
$valeur = calculer_voir_reponse($id_formulaires_reponse, $id_formulaire, $var,'', 'valeur_uniquement', '');
$valeur = formidable_nettoyer_saisie_vue($valeur);
$valeurs["@$var@"] = $valeur;
$chaine = formidable_raccourcis_arobases_2_valeurs_champs($modele_resume, $saisies, false, '', $source = 'base', $id_formulaires_reponse, $id_formulaire, $valeurs, $valeurs_libellees);
// Pour compatibilité historique : remplacer les clés dans $valeurs_libellees pour mettre un arobase autour
foreach ($valeurs_libellees as $cle => $val) {
unset($valeurs_libellees[$cle]);
$valeurs_libellees["@$cle@"] = $val;
}
return pipeline(
'formidable_affiche_resume_reponse',
array(
......@@ -180,9 +177,9 @@ function affiche_resume_reponse($id_formulaires_reponse, $id_formulaire = null,
'id_formulaire' => $id_formulaire,
'id_formulaires_reponse' => $id_formulaires_reponse,
'modele_resume' => $modele_resume,
'valeurs' => $valeurs,
'valeurs' => $valeurs_libellees,
),
'data' => str_replace(array_keys($valeurs), array_values($valeurs), $modele_resume),
'data' => $chaine,
)
);
}
......
......@@ -485,10 +485,24 @@ function formidable_scramble($login, $id_form) {
* @param array $saisies la liste des saisies du formulaire
* @param bool|string $brut=false, pour indiquer si on veut utiliser les valeurs brutes;
* @param string|bool $sans_reponse chaine à afficher si pas de réponse. Si true, prend la chaîne par défaut
* @param string $source 'request' pour prendre dans _request(); 'base' pour prendre dans une réponse enregistrée en base
* @param int|string $id_formulaires_reponse le cas échéant le numéro de réponse en base
* @param int|string $id_formulaire le cas échéant le numéro du formulaire en base
* @param array &$valeurs un tableau clé/valeur listant les valeurs que prenne les @. Passage par référence
* @param array &$valeurs_libelles un tableau clé/valeur listant les valeurs libéllées que prenne les @. Passage par référence
* @return string la chaîne transformée
*/
function formidable_raccourcis_arobases_2_valeurs_champs($chaine, $saisies, $brut=false, $sans_reponse = true) {
list($valeurs,$valeurs_libellees) = formidable_tableau_valeurs_saisies($saisies, $sans_reponse);
function formidable_raccourcis_arobases_2_valeurs_champs($chaine, $saisies, $brut=false, $sans_reponse = true, $source = 'request', $id_formulaires_reponse = 0, $id_formulaire = 0, &$valeurs = array(), &$valeurs_libellees = array()) {
if ($source == 'request') {
list($valeurs, $valeurs_libellees) = formidable_tableau_valeurs_saisies($saisies, $sans_reponse);
}
elseif ($source == 'base' and $id_formulaires_reponse and $id_formulaire) {
$saisies = saisies_lister_par_nom($saisies);
foreach ($saisies as $nom => $saisie) {
$valeurs[$nom] = formidable_nettoyer_saisie_vue(calculer_voir_reponse($id_formulaires_reponse, $id_formulaire, $nom,'', 'brut', $sans_reponse));
$valeurs_libellees[$nom] = formidable_nettoyer_saisie_vue(calculer_voir_reponse($id_formulaires_reponse, $id_formulaire, $nom,'', 'valeur_uniquement', $sans_reponse));
}
}
$a_remplacer = array();
if (preg_match_all('/@[\w]+@/', $chaine, $a_remplacer)) {
$a_remplacer = $a_remplacer[0];
......
<paquet
prefix="formidable"
categorie="communication"
version="3.45.3"
version="3.46.0"
etat="stable"
compatibilite="[3.0.0;3.2.*]"
logo="images/formidable-64.png"
......
0% Chargement en cours ou .
You are about to add 0 people to the discussion. Proceed with caution.
Terminez d'abord l'édition de ce message.
Veuillez vous inscrire ou vous pour commenter