Changeset 110847 in spip-zone
- Timestamp:
- Jun 24, 2018, 7:55:19 PM (3 years ago)
- Location:
- _plugins_/formidable/trunk
- Files:
-
- 2 edited
Legend:
- Unmodified
- Added
- Removed
-
_plugins_/formidable/trunk/inc/formidable.php
r98144 r110847 409 409 return $login_num; 410 410 } 411 412 /** 413 * Dans une chaîne, remplace les @raccourci@ 414 * par la valeur saisie. 415 * @param string $chaine la chaîne à transformer 416 * @param array $saisies la liste des saisies du formulaire 417 * @param bool|string $brut=false, pour indiquer si on veut utiliser les valeurs brutes; 418 * @return string la chaîne transformée 419 */ 420 function formidable_raccourcis_arobases_2_valeurs_champs($chaine, $saisies, $brut=false) { 421 list($valeurs,$valeurs_libellees) = formidable_tableau_valeurs_saisies($saisies); 422 $a_remplacer = array(); 423 if (preg_match_all('/@[\w]+@/', $chaine, $a_remplacer)) { 424 $a_remplacer = $a_remplacer[0]; 425 foreach ($a_remplacer as $cle => $val) { 426 $a_remplacer[$cle] = trim($val, '@'); 427 } 428 $a_remplacer = array_flip($a_remplacer); 429 if ($brut) { 430 $a_remplacer = array_intersect_key($valeurs, $a_remplacer); 431 } 432 else { 433 $a_remplacer = array_intersect_key($valeurs_libellees, $a_remplacer); 434 } 435 $a_remplacer = array_merge($a_remplacer, array('nom_site_spip' => $nom_site_spip)); 436 } 437 return trim(_L($chaine, $a_remplacer)); 438 } 439 /** 440 * Récupère l'ensemble des valeurs postée dans un formulaires 441 * Les retourne sous deux formes : brutes et libellés (par ex. pour les @select@ 442 * @param array $saisies les saisies du formulaires 443 * @return array (brutes, libellées) 444 * On met les résultats en statiques pour gagner un peu de temps 445 */ 446 function formidable_tableau_valeurs_saisies($saisies) { 447 if (isset($valeurs)) { 448 return array($valeurs,$valeurs_libellees); 449 } 450 // On parcourt les champs pour générer le tableau des valeurs 451 static $valeurs = array(); 452 static $valeurs_libellees = array(); 453 $saisies_fichiers = saisies_lister_avec_type($saisies, 'fichiers'); 454 $saisies_par_nom = saisies_lister_par_nom($saisies); 455 $champs = saisies_lister_champs($saisies); 456 457 // On n'utilise pas formulaires_formidable_fichiers, 458 // car celui-ci retourne les saisies fichiers du formulaire dans la base… or, on sait-jamais, 459 // il peut y avoir eu une modification entre le moment où l'utilisateur a vu le formulaire et maintenant 460 foreach ($champs as $champ) { 461 if (array_key_exists($champ, $saisies_fichiers)) {// si on a affaire à une saisie de type fichiers, on considère qu'il n'y pas vraiment de valeur brute 462 } else { 463 // On récupère la valeur postée 464 $valeurs[$champ] = _request($champ); 465 466 // Le champ est un tableau objet ? on le parse 467 if (is_array($valeurs[$champ])) { 468 // si on ne demande pas la valeur brute 469 if ( 470 isset($saisies_par_nom[$champ]['options']['datas']) 471 and $labels_data = saisies_aplatir_tableau(saisies_chaine2tableau($saisies_par_nom[$champ]['options']['datas'])) 472 and !$options['champ_sujet_valeurs_brutes'] 473 ) { 474 $valeurs_libellees[$champ] = array(); 475 foreach ($valeurs[$champ] as $valeur) { 476 $valeurs_libellees[$champ][] = $labels_data[$valeur]; 477 } 478 $valeurs_libellees[$champ] = implode($valeurs_libellees[$champ], ","); 479 } 480 // Sinon on utilise directement la valeur postée 481 else { 482 $valeurs_libellees[$champ] = implode($valeurs[$champ],","); 483 } 484 // Si la saisie a une valeur unique 485 } else { 486 // Si la saisie est une liste de choix avec des clés et labels humains, on cherche le label humain 487 if ( 488 isset($saisies_par_nom[$champ]['options']['datas']) 489 and $labels_data = saisies_aplatir_tableau(saisies_chaine2tableau($saisies_par_nom[$champ]['options']['datas'])) 490 and isset($labels_data[$valeurs[$champ]]) 491 ) { 492 $valeurs_libellees[$champ] = $labels_data[$valeurs[$champ]]; 493 } 494 // Sinon on utilise directement la valeur postée 495 else { 496 $valeurs_libellees[$champ] = $valeurs[$champ]; 497 } 498 } 499 } 500 } 501 return array($valeurs, $valeurs_libellees); 502 } -
_plugins_/formidable/trunk/traiter/email.php
r110846 r110847 89 89 } 90 90 91 // Récuperer les valeurs saisies 92 list($valeurs,$valeurs_libellees) = formidable_tableau_valeurs_saisies($saisies); 93 94 // Traitement à part pour les saisies de types fichiers : 95 // 1. Calculer la taille totale des fichiers 96 // 2. Ajouter au facteur 97 $saisies_fichiers = saisies_lister_avec_type($saisies, 'fichiers'); 98 foreach ($champs as $champ) { 99 if (array_key_exists($champ, $saisies_fichiers)) { 100 $valeurs[$champ] = traiter_email_fichiers($saisies_fichiers[$champ], $champ, $formulaire['id_formulaire'], $retours, $timestamp); 101 if ($ajouter_fichier) { 102 $retours['fichiers'][$champ] = $valeurs[$champ]; 103 } 104 $taille_fichiers += formidable_calculer_taille_fichiers_saisie($valeurs[$champ]); 105 $fichiers_facteur = array_merge( 106 $fichiers_facteur, 107 vue_fichier_to_tableau_facteur($valeurs[$champ]) 108 ); 109 } 110 } 91 111 // Si on a bien des destinataires, on peut continuer 92 112 if ($destinataires or ($courriel_envoyeur and $options['activer_accuse'])) { … … 94 114 include_spip('inc/texte'); 95 115 96 97 // On parcourt les champs pour générer le tableau des valeurs98 $valeurs = array();99 $valeurs_libellees = array();100 $saisies_fichiers = saisies_lister_avec_type($saisies, 'fichiers');101 $saisies_par_nom = saisies_lister_par_nom($saisies);102 103 // On n'utilise pas formulaires_formidable_fichiers,104 // car celui-ci retourne les saisies fichiers du formulaire dans la base… or, on sait-jamais,105 // il peut y avoir eu une modification entre le moment où l'utilisateur a vu le formulaire et maintenant106 foreach ($champs as $champ) {107 if (array_key_exists($champ, $saisies_fichiers)) {// si on a affaire à une saisie de type fichiers, on traite à part108 $valeurs[$champ] = traiter_email_fichiers($saisies_fichiers[$champ], $champ, $formulaire['id_formulaire'], $retours, $timestamp);109 if ($ajouter_fichier) {110 $retours['fichiers'][$champ] = $valeurs[$champ];111 }112 $taille_fichiers += formidable_calculer_taille_fichiers_saisie($valeurs[$champ]);113 $fichiers_facteur = array_merge(114 $fichiers_facteur,115 vue_fichier_to_tableau_facteur($valeurs[$champ])116 );117 } else {118 // On récupère la valeur postée119 $valeurs[$champ] = _request($champ);120 121 // Le champ est un tableau objet ? on le parse122 if (is_array($valeurs[$champ])) {123 // si on ne demande pas la valeur brute124 if (125 isset($saisies_par_nom[$champ]['options']['datas'])126 and $labels_data = saisies_aplatir_tableau(saisies_chaine2tableau($saisies_par_nom[$champ]['options']['datas']))127 and !$options['champ_sujet_valeurs_brutes']128 ) {129 $valeurs_libellees[$champ] = array();130 foreach ($valeurs[$champ] as $valeur) {131 $valeurs_libellees[$champ][] = $labels_data[$valeur];132 }133 $valeurs_libellees[$champ] = implode($valeurs_libellees[$champ], ",");134 }135 // Sinon on utilise directement la valeur postée136 else {137 $valeurs_libellees[$champ] = implode($valeurs[$champ],",");138 }139 // Si la saisie a une valeur unique140 } else {141 // Si la saisie est une liste de choix avec des clés et labels humains, on cherche le label humain, sauf si la case champ_sujet_valeurs_brutes est cochée dans la config du traitement142 if (143 isset($saisies_par_nom[$champ]['options']['datas'])144 and $labels_data = saisies_aplatir_tableau(saisies_chaine2tableau($saisies_par_nom[$champ]['options']['datas']))145 and isset($labels_data[$valeurs[$champ]])146 and !$options['champ_sujet_valeurs_brutes']147 ) {148 $valeurs_libellees[$champ] = $labels_data[$valeurs[$champ]];149 }150 // Sinon on utilise directement la valeur postée151 else {152 $valeurs_libellees[$champ] = $valeurs[$champ];153 }154 }155 }156 }157 116 $nom_site_spip = supprimer_tags(typo(lire_meta('nom_site'))); 117 158 118 // On récupère le nom de l'envoyeur 159 119 if ($options['champ_nom']) { 160 $a_remplacer = array(); 161 if (preg_match_all('/@[\w]+@/', $options['champ_nom'], $a_remplacer)) { 162 $a_remplacer = $a_remplacer[0]; 163 foreach ($a_remplacer as $cle => $val) { 164 $a_remplacer[$cle] = trim($val, '@'); 165 } 166 $a_remplacer = array_flip($a_remplacer); 167 $a_remplacer = array_intersect_key($valeurs_libellees, $a_remplacer); 168 $a_remplacer = array_merge($a_remplacer, array('nom_site_spip' => $nom_site_spip)); 169 } 170 $nom_envoyeur = trim(_L($options['champ_nom'], $a_remplacer)); 120 $nom_envoyeur = formidable_raccourcis_arobases_2_valeurs_champs( 121 $options['champ_nom'], 122 $saisies 123 ); 171 124 } 172 125 if (!isset($nom_envoyeur) or !$nom_envoyeur) { … … 176 129 // On récupère le sujet s'il existe sinon on le construit 177 130 if ($options['champ_sujet']) { 178 $a_remplacer = array(); 179 if (preg_match_all('/@[\w]+@/', $options['champ_sujet'], $a_remplacer)) { 180 $a_remplacer = $a_remplacer[0]; 181 foreach ($a_remplacer as $cle => $val) { 182 $a_remplacer[$cle] = trim($val, '@'); 183 } 184 $a_remplacer = array_flip($a_remplacer); 185 $a_remplacer = array_intersect_key($valeurs_libellees, $a_remplacer); 186 $a_remplacer = array_merge($a_remplacer, array('nom_site_spip' => $nom_site_spip)); 187 } 188 $sujet = trim(_L($options['champ_sujet'], $a_remplacer)); 131 $sujet = formidable_raccourcis_arobases_2_valeurs_champs( 132 $options['champ_sujet'], 133 $saisies, 134 $options['champ_sujet_valeurs_brutes'] 135 ); 189 136 } 190 137 if (!isset($sujet) or !$sujet) { … … 262 209 // On récupère le sujet s'il existe sinon on le construit 263 210 if ($options['sujet_accuse']) { 264 $a_remplacer = array(); 265 if (preg_match_all('/@[\w]+@/', $options['sujet_accuse'], $a_remplacer)) { 266 $a_remplacer = $a_remplacer[0]; 267 foreach ($a_remplacer as $cle => $val) { 268 $a_remplacer[$cle] = trim($val, '@'); 269 } 270 $a_remplacer = array_flip($a_remplacer); 271 $a_remplacer = array_intersect_key($valeurs_libellees, $a_remplacer); 272 $a_remplacer = array_merge($a_remplacer, array('nom_site_spip' => $nom_site_spip)); 273 } 274 $sujet_accuse = trim(_L($options['sujet_accuse'], $a_remplacer)); 211 $sujet_accuse = formidable_raccourcis_arobases_2_valeurs_champs( 212 $options['sujet_accuse'], 213 $saisies 214 ); 275 215 } 276 216 if (!isset($sujet_accuse) or !$sujet_accuse) {
Note: See TracChangeset
for help on using the changeset viewer.