Skip to content
Extraits de code Groupes Projets
Valider 7b6442d9 rédigé par kent1@arscenic.info's avatar kent1@arscenic.info
Parcourir les fichiers

utiliser $GLOBALS['visiteur_session'] au lieu de global $auteur_session

Indentation
parent 63a66cdf
Aucune branche associée trouvée
Aucune étiquette associée trouvée
Aucune requête de fusion associée trouvée
...@@ -4,173 +4,173 @@ ...@@ -4,173 +4,173 @@
if (!defined("_ECRIRE_INC_VERSION")) return; if (!defined("_ECRIRE_INC_VERSION")) return;
function traiter_enregistrement_dist($args, $retours){ function traiter_enregistrement_dist($args, $retours){
include_spip('inc/formidable'); include_spip('inc/formidable');
include_spip('base/abstract_sql'); include_spip('base/abstract_sql');
$options = $args['options']; $options = $args['options'];
$formulaire = $args['formulaire']; $formulaire = $args['formulaire'];
$id_formulaire = $args['id_formulaire']; $id_formulaire = $args['id_formulaire'];
$saisies = unserialize($formulaire['saisies']); $saisies = unserialize($formulaire['saisies']);
$saisies = saisies_lister_par_nom($saisies); $saisies = saisies_lister_par_nom($saisies);
// La personne a-t-elle un compte ? // La personne a-t-elle un compte ?
global $auteur_session; $id_auteur = isset($GLOBALS['visiteur_session']) ? ($GLOBALS['visiteur_session']['id_auteur'] ? $GLOBALS['visiteur_session']['id_auteur'] : 0) : 0;
$id_auteur = $auteur_session ? intval($auteur_session['id_auteur']) : 0;
// traitement de l'anonymisation
// traitement de l'anonymisation if ($options['anonymiser'] == 'on'){
if ($options['anonymiser'] == 'on') { // mod de l'id_auteur
// mod de l'id_auteur $variables_anonymisation =
$variables_anonymisation = $GLOBALS['formulaires']['variables_anonymisation'][$options['anonymiser_variable']];
$GLOBALS['formulaires']['variables_anonymisation'][$options['anonymiser_variable']]; $id = eval("return $variables_anonymisation;");
$id = eval("return $variables_anonymisation;"); $id_auteur = formidable_scramble($id, $id_formulaire);
$id_auteur = formidable_scramble($id, $id_formulaire); }
}
// On cherche le cookie et sinon on le crée // On cherche le cookie et sinon on le crée
$nom_cookie = formidable_generer_nom_cookie($id_formulaire); $nom_cookie = formidable_generer_nom_cookie($id_formulaire);
if (isset($_COOKIE[$nom_cookie])) if (isset($_COOKIE[$nom_cookie]))
$cookie = $_COOKIE[$nom_cookie]; $cookie = $_COOKIE[$nom_cookie];
else { else {
include_spip("inc/acces"); include_spip("inc/acces");
$cookie = creer_uniqid(); $cookie = creer_uniqid();
} }
// On regarde si c'est une modif d'une réponse existante // On regarde si c'est une modif d'une réponse existante
$id_formulaires_reponse = $args['id_formulaires_reponse']; $id_formulaires_reponse = $args['id_formulaires_reponse'];
// recherche d'éventuelles anciennes réponses // recherche d'éventuelles anciennes réponses
$reponses = formidable_verifier_reponse_formulaire( $reponses = formidable_verifier_reponse_formulaire(
$id_formulaire, $id_formulaire,
$options['identification'], $options['identification'],
($options['anonymiser'] == 'on') ($options['anonymiser'] == 'on')
? $options['anonymiser_variable'] ? $options['anonymiser_variable']
: false : false
); );
// pas d'id_formulaires_reponse : on cherche une éventuelle réponse en base // pas d'id_formulaires_reponse : on cherche une éventuelle réponse en base
if ($id_formulaires_reponse == false) { if ($id_formulaires_reponse == false) {
$traitements_formulaire = unserialize($formulaire['traitements']); $traitements_formulaire = unserialize($formulaire['traitements']);
if (isset($traitements_formulaire['enregistrement'])) { if (isset($traitements_formulaire['enregistrement'])) {
$options = $traitements_formulaire['enregistrement']; $options = $traitements_formulaire['enregistrement'];
if (isset($options['multiple']) && $options['multiple'] == '' if (isset($options['multiple']) && $options['multiple'] == ''
&& isset($options['modifiable']) && $options['modifiable'] == 'on' && isset($options['modifiable']) && $options['modifiable'] == 'on'
&& is_array($reponses) && count($reponses) > 0) { && is_array($reponses) && count($reponses) > 0) {
$id_formulaires_reponse = max($reponses); $id_formulaires_reponse = max($reponses);
} }
} }
} else { } else {
// vérifier que l'auteur est bien l'auteur de la réponse, si non, on invalide l'id_formulaires_reponse // vérifier que l'auteur est bien l'auteur de la réponse, si non, on invalide l'id_formulaires_reponse
if (in_array($id_formulaires_reponse, $reponses) == false) $id_formulaires_reponse = false; if (in_array($id_formulaires_reponse, $reponses) == false) $id_formulaires_reponse = false;
} }
// Si la moderation est a posteriori ou que la personne est un boss, on publie direct // Si la moderation est a posteriori ou que la personne est un boss, on publie direct
if ($options['moderation'] == 'posteriori' or autoriser('instituer', 'formulaires_reponse', $id_formulaires_reponse, null, array('id_formulaire'=>$id_formulaire, 'nouveau_statut'=>'publie'))) if ($options['moderation'] == 'posteriori' or autoriser('instituer', 'formulaires_reponse', $id_formulaires_reponse, null, array('id_formulaire'=>$id_formulaire, 'nouveau_statut'=>'publie')))
$statut='publie'; $statut='publie';
else else
$statut = 'prop'; $statut = 'prop';
// Si ce n'est pas une modif d'une réponse existante, on crée d'abord la réponse // Si ce n'est pas une modif d'une réponse existante, on crée d'abord la réponse
if (!$id_formulaires_reponse){ if (!$id_formulaires_reponse){
$id_formulaires_reponse = sql_insertq( $id_formulaires_reponse = sql_insertq(
'spip_formulaires_reponses', 'spip_formulaires_reponses',
array( array(
'id_formulaire' => $id_formulaire, 'id_formulaire' => $id_formulaire,
'id_auteur' => $id_auteur, 'id_auteur' => $id_auteur,
'cookie' => $cookie, 'cookie' => $cookie,
'ip' => $args['options']['ip'] == 'on' ? $GLOBALS['ip'] : '', 'ip' => $args['options']['ip'] == 'on' ? $GLOBALS['ip'] : '',
'date' => 'NOW()', 'date' => 'NOW()',
'statut' => $statut 'statut' => $statut
) )
); );
// Si on a pas le droit de répondre plusieurs fois ou que les réponses seront modifiables, il faut poser un cookie // Si on a pas le droit de répondre plusieurs fois ou que les réponses seront modifiables, il faut poser un cookie
if (!$options['multiple'] or $options['modifiable']){ if (!$options['multiple'] or $options['modifiable']){
include_spip("inc/cookie"); include_spip("inc/cookie");
// Expiration dans 30 jours // Expiration dans 30 jours
spip_setcookie($nom_cookie, $_COOKIE[$nom_cookie] = $cookie, time() + 30 * 24 * 3600); spip_setcookie($nom_cookie, $_COOKIE[$nom_cookie] = $cookie, time() + 30 * 24 * 3600);
} }
} else { } else {
// simple mise à jour du champ maj de la table spip_formulaires_reponses // simple mise à jour du champ maj de la table spip_formulaires_reponses
sql_updateq( sql_updateq(
'spip_formulaires_reponses', 'spip_formulaires_reponses',
array('maj' => 'NOW()'), array('maj' => 'NOW()'),
"id_formulaires_reponse = $id_formulaires_reponse" "id_formulaires_reponse = $id_formulaires_reponse"
); );
} }
// Si l'id n'a pas été créé correctement alors erreur // Si l'id n'a pas été créé correctement alors erreur
if (!($id_formulaires_reponse > 0)){ if (!($id_formulaires_reponse > 0)){
$retours['message_erreur'] .= "\n<br/>"._T('formidable:traiter_enregistrement_erreur_base'); $retours['message_erreur'] .= "\n<br/>"._T('formidable:traiter_enregistrement_erreur_base');
} }
// Sinon on continue à mettre à jour // Sinon on continue à mettre à jour
else{ else{
$champs = array(); $champs = array();
$insertions = array(); $insertions = array();
foreach($saisies as $nom => $saisie){ foreach($saisies as $nom => $saisie){
// On ne prend que les champs qui ont effectivement été envoyés par le formulaire // On ne prend que les champs qui ont effectivement été envoyés par le formulaire
if (($valeur = _request($nom)) !== null){ if (($valeur = _request($nom)) !== null){
$champs[] = $nom; $champs[] = $nom;
$insertions[] = array( $insertions[] = array(
'id_formulaires_reponse' => $id_formulaires_reponse, 'id_formulaires_reponse' => $id_formulaires_reponse,
'nom' => $nom, 'nom' => $nom,
'valeur' => is_array($valeur) ? serialize($valeur) : $valeur 'valeur' => is_array($valeur) ? serialize($valeur) : $valeur
); );
} }
} }
// S'il y a bien des choses à modifier // S'il y a bien des choses à modifier
if ($champs){ if ($champs){
// On supprime d'abord les champs // On supprime d'abord les champs
sql_delete( sql_delete(
'spip_formulaires_reponses_champs', 'spip_formulaires_reponses_champs',
array( array(
'id_formulaires_reponse = '.$id_formulaires_reponse, 'id_formulaires_reponse = '.$id_formulaires_reponse,
sql_in('nom', $champs) sql_in('nom', $champs)
) )
); );
// Puis on insère les nouvelles valeurs // Puis on insère les nouvelles valeurs
sql_insertq_multi( sql_insertq_multi(
'spip_formulaires_reponses_champs', 'spip_formulaires_reponses_champs',
$insertions $insertions
); );
} }
if (!isset($retours['message_ok'])) { $retours['message_ok'] = ''; } if (!isset($retours['message_ok'])) { $retours['message_ok'] = ''; }
$retours['message_ok'] .= "\n"._T('formidable:traiter_enregistrement_message_ok'); $retours['message_ok'] .= "\n"._T('formidable:traiter_enregistrement_message_ok');
$retours['id_formulaires_reponse'] = $id_formulaires_reponse; $retours['id_formulaires_reponse'] = $id_formulaires_reponse;
} }
// noter qu'on a deja fait le boulot, pour ne pas risquer double appel // noter qu'on a deja fait le boulot, pour ne pas risquer double appel
$retours['traitements']['enregistrement'] = true; $retours['traitements']['enregistrement'] = true;
return $retours; return $retours;
} }
function traiter_enregistrement_update_dist($id_formulaire, $traitement, $saisies_anciennes, $saisies_nouvelles){ function traiter_enregistrement_update_dist($id_formulaire, $traitement, $saisies_anciennes, $saisies_nouvelles){
include_spip('inc/saisies'); include_spip('inc/saisies');
include_spip('base/abstract_sql'); include_spip('base/abstract_sql');
$comparaison = saisies_comparer($saisies_anciennes, $saisies_nouvelles); $comparaison = saisies_comparer($saisies_anciennes, $saisies_nouvelles);
// Si des champs ont été supprimés, il faut supprimer les réponses à ces champs // Si des champs ont été supprimés, il faut supprimer les réponses à ces champs
if ($comparaison['supprimees']){ if ($comparaison['supprimees']){
// On récupère les réponses du formulaire // On récupère les réponses du formulaire
$reponses = sql_allfetsel( $reponses = sql_allfetsel(
'id_formulaires_reponse', 'id_formulaires_reponse',
'spip_formulaires_reponses', 'spip_formulaires_reponses',
'id_formulaire = '.$id_formulaire 'id_formulaire = '.$id_formulaire
); );
$reponses = array_map('reset', $reponses); $reponses = array_map('reset', $reponses);
// Tous les noms de champs à supprimer // Tous les noms de champs à supprimer
$noms = array_keys($comparaison['supprimees']); $noms = array_keys($comparaison['supprimees']);
// On supprime // On supprime
sql_delete( sql_delete(
'spip_formulaires_reponses_champs', 'spip_formulaires_reponses_champs',
array( array(
sql_in('id_formulaires_reponse', $reponses), sql_in('id_formulaires_reponse', $reponses),
sql_in('nom', $noms) sql_in('nom', $noms)
) )
); );
} }
} }
?> ?>
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