diff --git a/ecrire/inc_db_mysql.php3 b/ecrire/inc_db_mysql.php3 index e89f6b320771d6cc211ca186b776d82f828facc6..f7aadf914da9d289a507455da20f5d9bec814ae8 100644 --- a/ecrire/inc_db_mysql.php3 +++ b/ecrire/inc_db_mysql.php3 @@ -143,7 +143,10 @@ function spip_get_lock($nom, $timeout = 0) { if ($spip_mysql_db) $nom = "$spip_mysql_db:$nom"; $nom = addslashes($nom); - list($lock_ok) = spip_fetch_array(spip_query("SELECT GET_LOCK('$nom', $timeout)")); + $q = spip_query("SELECT GET_LOCK('$nom', $timeout)"); + list($lock_ok) = spip_fetch_array($q); + + if (!$lock_ok) spip_log("pas de lock sql pour $lock"); return $lock_ok; } diff --git a/ecrire/inc_invalideur.php3 b/ecrire/inc_invalideur.php3 index f4e3b336af8d252f83be1629922b8cdba319221c..34ca81bfe7f812d3ef2030104184446538315177 100644 --- a/ecrire/inc_invalideur.php3 +++ b/ecrire/inc_invalideur.php3 @@ -29,9 +29,6 @@ function maj_invalideurs ($fichier, $infosurpage, $delais) { # insere_invalideur($infosurpage['id_breve'], 'id_breve', $fichier); # insere_invalideur($infosurpage['id_rubrique'],'id_rubrique', $fichier); # insere_invalideur($infosurpage['id_syndic'],'id_syndic', $fichier); - -### pas du tout prevus au programme ? -# insere_invalideur($infosurpage['id_signature'],'id_signature', $fichier); } } diff --git a/inc-calcul_mysql3.php b/inc-calcul_mysql3.php index f9d59759b4d9bc72ea6b1af5a97ba9f9ff2622f1..2fd021cdbf3b4f71867b83088f55351f76c78892 100644 --- a/inc-calcul_mysql3.php +++ b/inc-calcul_mysql3.php @@ -206,7 +206,7 @@ WHERE lien.id_article=$id_article $nom_auteur = typo($row_auteur["nom"]); $email_auteur = $row_auteur["email"]; if ($email_auteur) { - $auteurs[] = "<A HREF=\"mailto:$email_auteur\">$nom_auteur</A>"; + $auteurs[] = "<a href=\"mailto:$email_auteur\">$nom_auteur</a>"; } else { $auteurs[] = "$nom_auteur"; @@ -216,13 +216,13 @@ WHERE lien.id_article=$id_article return (!$auteurs) ? "" : join($auteurs, ", "); } -function sql_petitions($id_article) -{ - return spip_fetch_array(spip_query(" -SELECT id_article -FROM spip_petitions -WHERE id_article='$id_article'")); - } +function sql_petitions($id_article) { + $q = spip_query("SELECT + id_article, email_unique, site_obli, site_unique, message, texte + FROM spip_petitions + WHERE id_article=".intval($id_article)); + return spip_fetch_array($q); +} # retourne le chapeau d'un article, et seulement s'il est publie diff --git a/inc-form-squel.php3 b/inc-form-squel.php3 index df165cbddf54d180ccecf04765bee2ce044cf2c5..db2fd393eb463eb9b9491ccaa00176c647a857a7 100644 --- a/inc-form-squel.php3 +++ b/inc-form-squel.php3 @@ -51,9 +51,10 @@ function calculer_champ_FORMULAIRE_SIGNATURE($fonctions, $nom_champ, $id_boucle, $milieu = ' $spip_lang = $GLOBALS["spip_lang"]; $lacible = ' . index_pile($id_boucle, 'id_article', $boucles) . ";"; - $code = '(!sql_petitions($lacible) ? "" : + $code = '(!($petition = texte_script(serialize(sql_petitions($lacible)))) ? "" : ("<"."?php include(\'inc-formulaires.php3\'); - lang_select(\'$spip_lang\'); echo formulaire_signature($lacible); + lang_select(\'$spip_lang\'); + echo formulaire_signature($lacible,\'$petition\'); lang_dselect(); ?".">"))'; list($c,$m) = applique_filtres($fonctions, $code, $id_boucle, $boucles, $id_mere, 'php'); return array($c,$milieu . $m); diff --git a/inc-formulaires.php3 b/inc-formulaires.php3 index 73e93c0a4404d72df5bbad325be97385d5a26432..7c01410fb318fc3d74365213c4e536e6efc02d7a 100644 --- a/inc-formulaires.php3 +++ b/inc-formulaires.php3 @@ -50,6 +50,7 @@ function erreur($zetexte){ function reponse_confirmation($id_article) { global $val_confirm; + spip_log("validation petition $id_article ($val_confirm)"); include_ecrire("inc_connect.php3"); if ($GLOBALS['db_ok']) { @@ -115,7 +116,11 @@ function reponse_confirmation($id_article) { else { $query = "UPDATE spip_signatures SET statut=\"publie\" WHERE id_signature='$id_signature'"; $result = spip_query($query); - + + // invalider les pages de l'article + include_ecrire('inc_invalideur.php3'); + suivre_invalideur("id='id_article/$id_article'"); + $texte .= erreur(_T('form_pet_signature_validee')); } } @@ -128,7 +133,11 @@ function reponse_confirmation($id_article) { else { $texte = _T('form_pet_probleme_technique'); } - echo "<div class='reponse_formulaire'>$texte</div>"; + + $texte = "<div class='reponse_formulaire'><a name='sp$id_article'></a>$texte</div>"; + + // message pour formulaire_signature() + define('_REPONSE_CONFIRMATION_SIGNATURE', $texte); } // @@ -138,6 +147,7 @@ function reponse_confirmation($id_article) { function reponse_signature($id_article) { global $nom_email, $adresse_email, $message, $nom_site, $url_site, $url_page; + spip_log("signature petition $id_article ($adresse_email)"); include_ecrire("inc_connect.php3"); if ($GLOBALS['db_ok']) { @@ -226,7 +236,7 @@ function reponse_signature($id_article) { $link->addVar('val_confirm', $passw); $url = $link->getUrl("sp$id_article"); - $messagex = _T('form_pet_mail_confirmation', array('titre' => $titre, 'nom_email' => $nom_email, 'nom_site' => $nom_site, 'url_site' => $url_site, 'url' => $url)); + echo $messagex = _T('form_pet_mail_confirmation', array('titre' => $titre, 'nom_email' => $nom_email, 'nom_site' => $nom_site, 'url_site' => $url_site, 'url' => $url)); if (envoyer_mail($adresse_email, _T('form_pet_confirmation')." ".$titre, $messagex)) { $reponse_signature .= "<P><B>"._T('form_pet_envoi_mail_confirmation')."</B>"; @@ -258,13 +268,9 @@ function reponse_signature($id_article) { // Formulaire de signature d'une petition // -function formulaire_signature_normal($id_article) { +function formulaire_signature_normal($id_article, $row_petition) { include_ecrire("inc_texte.php3"); - $query_petition = "SELECT * FROM spip_petitions WHERE id_article=$id_article"; - $result_petition = spip_query($query_petition); - - if ($row_petition = spip_fetch_array($result_petition)) { $id_article = $row_petition['id_article']; $email_unique = $row_petition['email_unique']; $site_obli = $row_petition['site_obli']; @@ -279,7 +285,7 @@ function formulaire_signature_normal($id_article) { $retour .= propre($texte_petition); - $retour .= "<div><fieldset><p><b>"._T('form_pet_votre_nom')."</b><br />"; + $retour .= "<div><a name='sp$id_article'></a><fieldset><p><b>"._T('form_pet_votre_nom')."</b><br />"; $retour .= "<input type=\"text\" class=\"forml\" name=\"nom_email\" value=\"\" size=\"20\" /></p>"; $retour .= "<p><b>"._T('form_pet_votre_email')."</b><br />"; @@ -309,19 +315,18 @@ function formulaire_signature_normal($id_article) { $retour .= "<br /><div align=\"right\"><input type=\"submit\" name=\"Valider\" class=\"spip_bouton\" value=\""._T('bouton_valider')."\" />"; $retour .= "</div></form>\n"; - } + return $retour; } -function formulaire_signature ($id_article) { -spip_log("petition $id_article"); +function formulaire_signature ($id_article, $petition) { if ($GLOBALS['val_confirm']) - return reponse_confirmation($id_article); + return _REPONSE_CONFIRMATION_SIGNATURE; // geree par inc-public.php3 else if ($GLOBALS['nom_email'] AND $GLOBALS['adresse_email']) return reponse_signature($id_article); else - return formulaire_signature_normal($id_article); + return formulaire_signature_normal($id_article,unserialize($petition)); } // inscrire les visiteurs dans l'espace public (statut 6forum) ou prive (statut nouveau->1comite) diff --git a/inc-public.php3 b/inc-public.php3 index 0377012fafebc227cca42f9299ae7a95b0033479..0848a43d5c80166f757eb50a1e5fc033e3d34870 100644 --- a/inc-public.php3 +++ b/inc-public.php3 @@ -49,12 +49,8 @@ else { } - // Ajout_forum est une HTTP_GET_VARS installee par retour_forum dans - // inc-forum. - // Il s'agit de memoriser les HTTP_POST_VARS, afin de mettre en base - // les valeurs transmises, avant reaffichage du formulaire avec celles-ci. - // En cas de validation finale ca redirige vers l'URL ayant provoque l'appel - // au lieu de laisser l'URL appelee resynthetiser le formulaire. + // Ajout_forum (pour les forums) et $val_confirm signalent des modifications + // a faire avant d'afficher la page if ($ajout_forum) { $redirect = ''; include('inc-messforum.php3'); @@ -63,6 +59,14 @@ else { exit(); } } + if ($val_confirm) { + // il nous faut id_article ! C'est donc encore a nettoyer... + include_local('inc-calcul.php3'); + calculer_contexte(); + include_local('inc-formulaires.php3'); + reponse_confirmation($id_article); + } + // Faut-il effacer des pages invalidees ? if (lire_meta('invalider')) {