confirmer_signature.php 4.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128
  1. <?php
  2. /***************************************************************************\
  3. * SPIP, Systeme de publication pour l'internet *
  4. * *
  5. * Copyright (c) 2001-2014 *
  6. * Arnaud Martin, Antoine Pitrou, Philippe Riviere, Emmanuel Saint-James *
  7. * *
  8. * Ce programme est un logiciel libre distribue sous licence GNU/GPL. *
  9. * Pour plus de details voir le fichier COPYING.txt ou l'aide en ligne. *
  10. \***************************************************************************/
  11. if (!defined("_ECRIRE_INC_VERSION")) return;
  12. /**
  13. * Confirmer une signature
  14. * Retour a l'ecran du lien de confirmation d'une signature de petition.
  15. * var_confirm contient le hash de la signature.
  16. * Au premier appel on traite et on publie
  17. * Au second appel on retourne le resultat a afficher
  18. *
  19. * @staticvar string $confirm
  20. * @param <type> $var_confirm
  21. * @return string
  22. */
  23. function action_confirmer_signature_dist($var_confirm=null) {
  24. static $confirm = null;
  25. // reponse mise en cache dans la session ?
  26. $code_message = 'signature_message_'.strval($var_confirm);
  27. if (isset($GLOBALS['visiteur_session'][$code_message]))
  28. return $GLOBALS['visiteur_session'][$code_message];
  29. // reponse deja calculee depuis public/assembler.php
  30. if (isset($confirm))
  31. return $confirm;
  32. if (is_null($var_confirm)) {
  33. $securiser_action = charger_fonction('securiser_action','inc');
  34. $var_confirm = $securiser_action();
  35. }
  36. if (!$var_confirm OR $var_confirm == 'publie' OR $var_confirm == 'poubelle')
  37. return '';
  38. if (!spip_connect()) {
  39. $confirm = _T('petitions:form_pet_probleme_technique');
  40. return '';
  41. }
  42. include_spip('inc/texte');
  43. include_spip('inc/filtres');
  44. // Suppression d'une signature par un moderateur ?
  45. // Cf. plugin notifications
  46. if (isset($_GET['refus'])) {
  47. // verifier validite de la cle de suppression
  48. // l'id_signature est dans var_confirm
  49. include_spip('inc/securiser_action');
  50. if ($id_signature = intval($var_confirm)
  51. AND (
  52. $_GET['refus'] == _action_auteur("supprimer signature $id_signature", '', '', 'alea_ephemere')
  53. OR
  54. $_GET['refus'] == _action_auteur("supprimer signature $id_signature", '', '', 'alea_ephemere_ancien')
  55. )) {
  56. include_spip('action/editer_signature');
  57. signature_modifier($id_signature,array("statut" => 'poubelle'));
  58. $confirm = _T('petitions:info_signature_supprimee');
  59. } else $confirm = _T('petitions:info_signature_supprimee_erreur');
  60. return '';
  61. }
  62. $row = sql_fetsel('*', 'spip_signatures', "statut=" . sql_quote($var_confirm), '', "1");
  63. if (!$row) {
  64. $confirm = _T('petitions:form_pet_aucune_signature');
  65. return '';
  66. }
  67. $id_signature = $row['id_signature'];
  68. $id_petition = $row['id_petition'];
  69. $adresse_email = $row['ad_email'];
  70. $url_site = $row['url_site'];
  71. $row = sql_fetsel('email_unique, site_unique, id_article', 'spip_petitions', "id_petition=".intval($id_petition));
  72. $email_unique = $row['email_unique'] == "oui";
  73. $site_unique = $row['site_unique'] == "oui";
  74. $id_article = $row['id_article'];
  75. include_spip('action/editer_signature');
  76. signature_modifier($id_signature,array('statut' => 'publie'));
  77. if ($email_unique) {
  78. $r = "id_petition=".intval($id_petition)." AND ad_email=" . sql_quote($adresse_email);
  79. if (signature_entrop($r))
  80. $confirm = _T('petitions:form_pet_deja_signe');
  81. }
  82. if ($site_unique) {
  83. $r = "id_petition=".intval($id_petition)." AND url_site=" . sql_quote($url_site);
  84. if (signature_entrop($r))
  85. $confirm = _T('petitions:form_pet_site_deja_enregistre');
  86. }
  87. include_spip('inc/session');
  88. if (!$confirm) {
  89. $confirm = _T('petitions:form_pet_signature_validee');
  90. // noter dans la session que l'email est valide
  91. // de facon a permettre de signer les prochaines
  92. // petitions sans refaire un tour d'email
  93. session_set('email_confirme', $adresse_email);
  94. // invalider les pages ayant des boucles signatures
  95. include_spip('inc/invalideur');
  96. suivre_invalideur("id='signature/$id_signature'");
  97. suivre_invalideur("id='article/$id_article'");
  98. }
  99. // Conserver la reponse dans la session du visiteur
  100. if ($confirm)
  101. session_set($code_message, $confirm);
  102. }
  103. ?>