Skip to content
Extraits de code Groupes Projets
Valider 3ee7c481 rédigé par esj's avatar esj
Parcourir les fichiers

Contrôles des signatures de pétitions. Le script qui s'en charge possède à...

Contrôles des signatures de pétitions. Le script qui s'en charge possède à présent un onglet donnant la liste des signatures qui n'ont pas été confirmées, avec un bouton permettant de relancer le signataire.
parent abf729a4
Aucune branche associée trouvée
Aucune étiquette associée trouvée
Aucune requête de fusion associée trouvée
...@@ -12,8 +12,6 @@ ...@@ -12,8 +12,6 @@
if (!defined("_ECRIRE_INC_VERSION")) return; if (!defined("_ECRIRE_INC_VERSION")) return;
// Modifier le reglage des forums publics de l'article x
// http://doc.spip.org/@action_editer_signatures_dist // http://doc.spip.org/@action_editer_signatures_dist
function action_editer_signatures_dist() function action_editer_signatures_dist()
{ {
...@@ -25,6 +23,10 @@ function action_editer_signatures_dist() ...@@ -25,6 +23,10 @@ function action_editer_signatures_dist()
} else action_editer_signatures_post($r); } else action_editer_signatures_post($r);
} }
// mettre un signature a la poubelle
// ou l'en sortir
// ou relancer le signataire.
// http://doc.spip.org/@action_editer_signatures_post // http://doc.spip.org/@action_editer_signatures_post
function action_editer_signatures_post($r) function action_editer_signatures_post($r)
{ {
...@@ -32,10 +34,23 @@ function action_editer_signatures_post($r) ...@@ -32,10 +34,23 @@ function action_editer_signatures_post($r)
if ($id < 0){ if ($id < 0){
$id = 0 - $id; $id = 0 - $id;
$result_forum = sql_updateq("spip_signatures", array("statut" => 'poubelle'), "id_signature=$id"); sql_updateq("spip_signatures", array("statut" => 'poubelle'), "id_signature=$id");
} elseif ($id > 0){ } elseif ($id > 0){
$result_forum = sql_updateq("spip_signatures", array("statut" => 'publie'), "id_signature=$id"); $row = sql_fetsel('*', 'spip_signatures', "id_signature=$id");
if ($row['statut']=='poubelle')
sql_updateq("spip_signatures", array("statut" => 'publie'), "id_signature=$id");
else {
include_spip('balise/formulaire_signature');
include_spip('inc/texte');
charger_generer_url();
$id_article = $row['id_article'];
$url = $GLOBALS['meta']['adresse_site'] . '/' . generer_url_article($id_article);
if (signature_a_confirmer($id_article, $url, $row['nom_email'], $row['ad_email'], $row['nom_site'], $row['url_site'], $row['message'], $row['lang'], $row['statut']))
sql_update("spip_signatures", array("date_time" => 'NOW()'), "id_signature=$id");
$id = 0;
}
} }
......
...@@ -155,13 +155,13 @@ function reponse_confirmation($var_confirm = '') { ...@@ -155,13 +155,13 @@ function reponse_confirmation($var_confirm = '') {
if ($email_unique) { if ($email_unique) {
$r = sql_select('id_signature', 'spip_signatures', "id_article=$id_article AND ad_email=" . sql_quote($adresse_email) . " AND statut='publie'","","date_time desc"); $r = "id_article=$id_article AND ad_email=" . sql_quote($adresse_email);
if (signature_entrop($r)) if (signature_entrop($r))
$confirm = _T('form_pet_deja_signe'); $confirm = _T('form_pet_deja_signe');
} }
if ($site_unique) { if ($site_unique) {
$r = sql_select('id_signature', 'spip_signatures', "id_article=$id_article AND url_site=" . sql_quote($url_site) . " AND (statut='publie' OR statut='poubelle')",'',"date_time desc"); $r = "id_article=$id_article AND url_site=" . sql_quote($url_site);
if (signature_entrop($r)) if (signature_entrop($r))
$confirm = _T('form_pet_site_deja_enregistre'); $confirm = _T('form_pet_site_deja_enregistre');
} }
...@@ -179,18 +179,16 @@ function reponse_confirmation($var_confirm = '') { ...@@ -179,18 +179,16 @@ function reponse_confirmation($var_confirm = '') {
// //
// http://doc.spip.org/@inc_controler_signature_dist // http://doc.spip.org/@inc_controler_signature_dist
function inc_controler_signature_dist($id_article, $nom_email, $adresse_email, $message, $nom_site, $url_site, $url_page) { function inc_controler_signature_dist($id_article, $nom, $mail, $message, $site, $url_site, $url_page) {
include_spip('inc/texte'); include_spip('inc/texte');
include_spip('inc/filtres'); include_spip('inc/filtres');
$envoyer_mail = charger_fonction('envoyer_mail','inc'); if (strlen($nom) < 2)
if (strlen($nom_email) < 2)
return _T('form_indiquer_nom'); return _T('form_indiquer_nom');
elseif ($adresse_email == _T('info_mail_fournisseur')) elseif ($mail == _T('info_mail_fournisseur'))
return _T('form_indiquer_email'); return _T('form_indiquer');
elseif (!email_valide($adresse_email)) elseif (!email_valide($mail))
return _T('form_email_non_valide'); return _T('form_email_non_valide');
elseif (strlen(_request('nobot')) elseif (strlen(_request('nobot'))
OR (@preg_match_all(',\bhref=[\'"]?http,i', // bug PHP OR (@preg_match_all(',\bhref=[\'"]?http,i', // bug PHP
...@@ -198,24 +196,20 @@ function inc_controler_signature_dist($id_article, $nom_email, $adresse_email, $ ...@@ -198,24 +196,20 @@ function inc_controler_signature_dist($id_article, $nom_email, $adresse_email, $
# , PREG_PATTERN_ORDER # , PREG_PATTERN_ORDER
) )
>2)) { >2)) {
#$envoyer_mail = charger_fonction('envoyer_mail','inc');
#envoyer_mail('email_moderateur@example.tld', 'spam intercepte', var_export($_POST,1)); #envoyer_mail('email_moderateur@example.tld', 'spam intercepte', var_export($_POST,1));
return _T('form_pet_probleme_liens'); return _T('form_pet_probleme_liens');
} }
// tout le monde est la. // tout le monde est la.
$row = sql_fetch(sql_select('titre,lang', 'spip_articles', "id_article=$id_article"));
$lang = lang_select($row['lang']);
$titre = textebrut(typo($row['titre']));
if ($lang) lang_select();
$result_petition = sql_select('*', 'spip_petitions', "id_article=$id_article"); $result_petition = sql_select('*', 'spip_petitions', "id_article=$id_article");
if (!$row = sql_fetch($result_petition)) if (!$row = sql_fetch($result_petition))
return _T('form_pet_probleme_technique'); return _T('form_pet_probleme_technique');
if ($row['site_obli'] == "oui") { if ($row['site_obli'] == "oui") {
if (!strlen($nom_site) if (!strlen($site)
OR !vider_url($url_site)) { OR !vider_url($url_site)) {
return _T('form_indiquer_nom_site'); return _T('form_indiquer_nom_site');
} }
...@@ -233,7 +227,7 @@ function inc_controler_signature_dist($id_article, $nom_email, $adresse_email, $ ...@@ -233,7 +227,7 @@ function inc_controler_signature_dist($id_article, $nom_email, $adresse_email, $
// On traite donc le probleme a la confirmation. // On traite donc le probleme a la confirmation.
if ($email_unique) { if ($email_unique) {
$r = sql_countsel('spip_signatures', "id_article=$id_article AND ad_email=" . sql_quote($adresse_email) . " AND statut='publie'"); $r = sql_countsel('spip_signatures', "id_article=$id_article AND ad_email=" . sql_quote($mail) . " AND statut='publie'");
if ($r) return _T('form_pet_deja_signe'); if ($r) return _T('form_pet_deja_signe');
} }
...@@ -244,37 +238,56 @@ function inc_controler_signature_dist($id_article, $nom_email, $adresse_email, $ ...@@ -244,37 +238,56 @@ function inc_controler_signature_dist($id_article, $nom_email, $adresse_email, $
if ($r) return _T('form_pet_site_deja_enregistre'); if ($r) return _T('form_pet_site_deja_enregistre');
} }
// preparer l'url de confirmation
$passw = test_pass(); $passw = test_pass();
$url = parametre_url($url_page, 'var_confirm',$passw,'&'); if (!signature_a_confirmer($id_article, $url_page, $nom, $mail, $site, $url_site, $message, $lang, $passw))
if ($lang != $GLOBALS['meta']['langue_site'])
$url = parametre_url($url, "lang", $row['lang'],'&');
$url .= "#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, 'message' => $message));
if (!$envoyer_mail($adresse_email, _T('form_pet_confirmation')." ".$titre, $messagex))
return _T('form_pet_probleme_technique'); return _T('form_pet_probleme_technique');
$id_signature = sql_insertq('spip_signatures', array( $id_signature = sql_insertq('spip_signatures', array(
'id_article' => $id_article, 'id_article' => $id_article,
'date_time' => 'NOW()', 'date_time' => 'NOW()',
'statut' => $passw, 'statut' => $passw,
'ad_email' => $adresse_email, 'ad_email' => $mail,
'url_site' => $url_site)); 'url_site' => $url_site));
if (!$id_signature) return _T('form_pet_probleme_technique'); if (!$id_signature) return _T('form_pet_probleme_technique');
include_spip('inc/modifier'); include_spip('inc/modifier');
revision_signature($id_signature, array( revision_signature($id_signature, array(
'nom_email' => $nom_email, 'nom_email' => $nom,
'ad_email' => $adresse_email, 'ad_email' => $mail,
'message' => $message, 'message' => $message,
'nom_site' => $nom_site, 'nom_site' => $site,
'url_site' => $url_site 'url_site' => $url_site
)); ));
return _T('form_pet_envoi_mail_confirmation'); return _T('form_pet_envoi_mail_confirmation');
} }
function signature_a_confirmer($id_article, $url_page, $nom, $mail, $site, $url, $msg, $lang, $passw)
{
$row = sql_fetsel('titre,lang', 'spip_articles', "id_article=$id_article");
$lang = lang_select($row['lang']);
$titre = textebrut(typo($row['titre']));
if ($lang) lang_select();
if ($lang != $GLOBALS['meta']['langue_site'])
$url_page = parametre_url($url_page, "lang", $lang,'&');
$url_page = parametre_url($url_page, 'var_confirm', $passw, '&')
. "#sp$id_article";
$r = _T('form_pet_mail_confirmation',
array('titre' => $titre,
'nom_email' => $nom,
'nom_site' => $site,
'url_site' => $url,
'url' => $url_page,
'message' => $msg));
$titre = _T('form_pet_confirmation')." ". $titre;
$envoyer_mail = charger_fonction('envoyer_mail','inc');
return $envoyer_mail($mail,$titre, $r);
}
// Pour eviter le recours a un verrou (qui bloque l'acces a la base), // Pour eviter le recours a un verrou (qui bloque l'acces a la base),
// on commence par inserer systematiquement la signature // on commence par inserer systematiquement la signature
// puis on demande toutes celles ayant la propriete devant etre unique // puis on demande toutes celles ayant la propriete devant etre unique
...@@ -283,8 +296,10 @@ function inc_controler_signature_dist($id_article, $nom_email, $adresse_email, $ ...@@ -283,8 +296,10 @@ function inc_controler_signature_dist($id_article, $nom_email, $adresse_email, $
// deja detruits. Bizarre ? C'est mieux que de bloquer! // deja detruits. Bizarre ? C'est mieux que de bloquer!
// http://doc.spip.org/@signature_entrop // http://doc.spip.org/@signature_entrop
function signature_entrop($query) function signature_entrop($where)
{ {
$query = sql_select('id_signature', 'spip_signatures', $where . " AND statut='publie'",'',"date_time desc");
$entrop = '';
$n = sql_count($query); $n = sql_count($query);
if ($n>1) { if ($n>1) {
$entrop = array(); $entrop = array();
...@@ -292,10 +307,11 @@ function signature_entrop($query) ...@@ -292,10 +307,11 @@ function signature_entrop($query)
$r = sql_fetch($query); $r = sql_fetch($query);
$entrop[]=$r['id_signature']; $entrop[]=$r['id_signature'];
} }
if ($entrop) $entrop = " OR (id_signature IN (" . join(',',$entrop) .'))';
sql_delete('spip_signatures',
"id_signature IN (" . join(',',$entrop) .')');
} }
sql_delete('spip_signatures', "($where AND statut<>'publie')$entrop");
return $entrop; return $entrop;
} }
......
...@@ -14,10 +14,16 @@ if (!defined("_ECRIRE_INC_VERSION")) return; ...@@ -14,10 +14,16 @@ if (!defined("_ECRIRE_INC_VERSION")) return;
// http://doc.spip.org/@exec_controle_petition_dist // http://doc.spip.org/@exec_controle_petition_dist
function exec_controle_petition_dist() function exec_controle_petition_dist()
{
exec_controle_petition_args(intval(_request('id_article')),
_request('type'),
intval(_request('debut')));
}
function exec_controle_petition_args($id_article, $type, $debut)
{ {
include_spip('inc/presentation'); include_spip('inc/presentation');
$id_article = intval(_request('id_article'));
$titre =' '; $titre =' ';
$statut='new'; $statut='new';
if ($id_article) { if ($id_article) {
...@@ -37,38 +43,48 @@ function exec_controle_petition_dist() ...@@ -37,38 +43,48 @@ function exec_controle_petition_dist()
AND autoriser('modererpetition', 'article', $id_article) AND autoriser('modererpetition', 'article', $id_article)
) )
)) { )) {
include_spip('inc/minipres'); include_spip('inc/minipres');
echo minipres();} echo minipres();}
else { else {
$debut = intval(_request('debut'));
$signatures = charger_fonction('signatures', 'inc'); $signatures = charger_fonction('signatures', 'inc');
$r = $signatures('controle_petition', $r = $signatures('controle_petition',
$id_article, $id_article,
$debut, $debut,
"(statut='publie' OR statut='poubelle')", "(statut='publie' OR statut='poubelle')",
"date_time DESC", "date_time DESC",
10); 10,
$type);
if (_request('var_ajaxcharset')) if (_request('var_ajaxcharset'))
ajax_retour($r); ajax_retour($r);
else { else controle_petition_page($id_article, $debut, $type, $titre, $statut, $r);
}
}
$commencer_page = charger_fonction('commencer_page', 'inc'); function controle_petition_page($id_article, $debut, $type, $titre, $statut, $r)
echo $commencer_page(_T('titre_page_controle_petition'), "forum", "suivi-petition"); {
echo debut_gauche('', true); $args = ($id_article ? "id_article=$id_article" :'')
. ($debut ? "debut=$debut" : '')
. '&type=';
$commencer_page = charger_fonction('commencer_page', 'inc');
echo $commencer_page(_T('titre_page_controle_petition'), "forum", "suivi-petition");
echo debut_gauche('', true);
echo debut_droite('', true); echo debut_droite('', true);
echo gros_titre(_T('titre_suivi_petition'),'', false); echo gros_titre(_T('titre_suivi_petition'),'', false);
if (!$titre) echo debut_onglet();
echo _T('trad_article_inexistant'); echo onglet(_L('Signatures confirm&eacute;es'), generer_url_ecrire('controle_petition', $args . "public"), "public", $type=='public', "forum-public-24.gif");
else { echo onglet(_L('Signatures en attente de validation'), generer_url_ecrire('controle_petition', $args . "interne"), "interne", $type=='interne', "forum-interne-24.gif");
if ($id_article) { echo fin_onglet(), '<br /><br />';
echo "<a href='",
if (!$titre)
echo _T('trad_article_inexistant');
else {
if ($id_article) {
echo "<a href='",
(($statut == 'publie') ? (($statut == 'publie') ?
generer_url_action('redirect', "id_article=$id_article") : generer_url_action('redirect', "id_article=$id_article") :
generer_url_ecrire('articles', "id_article=$id_article")), generer_url_ecrire('articles', "id_article=$id_article")),
...@@ -79,14 +95,11 @@ function exec_controle_petition_dist() ...@@ -79,14 +95,11 @@ function exec_controle_petition_dist()
_T('info_numero_abbreviation'), _T('info_numero_abbreviation'),
$id_article, $id_article,
")</span>"; ")</span>";
}
$a = "editer_signature-" . $id_article;
echo "<div id='", $a, "' class='serif2'>", $r, "</div>";
}
echo fin_gauche(), fin_page();
} }
$a = "editer_signature-" . $id_article;
echo "<div id='", $a, "' class='serif2'>", $r, "</div>";
} }
echo fin_gauche(), fin_page();
} }
?> ?>
...@@ -19,12 +19,12 @@ function message_de_signature($row) ...@@ -19,12 +19,12 @@ function message_de_signature($row)
} }
// http://doc.spip.org/@inc_signatures_dist // http://doc.spip.org/@inc_signatures_dist
function inc_signatures_dist($script, $id, $debut, $where, $order, $limit='') { function inc_signatures_dist($script, $id, $debut, $where, $order, $limit='', $type='') {
charger_generer_url(); charger_generer_url();
# filtre de duree (a remplacer par une vraie pagination) # filtre de duree (a remplacer par une vraie pagination)
#$where .= ($where ? " AND " : "") . "date_time>DATE_SUB(NOW(),INTERVAL 180 DAY)"; #$where .= ($where ? " AND " : "") . "date_time>DATE_SUB(NOW(),INTERVAL 180 DAY)";
if ($type == 'interne') $where = "NOT($where)";
if ($id) { if ($id) {
$args = "id_article=$id&"; $args = "id_article=$id&";
$where .= " AND id_article=$id"; $where .= " AND id_article=$id";
...@@ -36,7 +36,6 @@ function inc_signatures_dist($script, $id, $debut, $where, $order, $limit='') { ...@@ -36,7 +36,6 @@ function inc_signatures_dist($script, $id, $debut, $where, $order, $limit='') {
$res = navigation_pagination($t, $nb_aff, generer_url_ecrire($script, $args), false, 'debut'); $res = navigation_pagination($t, $nb_aff, generer_url_ecrire($script, $args), false, 'debut');
} else $res = ''; } else $res = '';
$limit = (!$limit AND !$debut) ? '' : (($debut ? "$debut," : "") . $limit); $limit = (!$limit AND !$debut) ? '' : (($debut ? "$debut," : "") . $limit);
$request = sql_select('*', 'spip_signatures', $where, '', $order, $limit); $request = sql_select('*', 'spip_signatures', $where, '', $order, $limit);
...@@ -44,13 +43,13 @@ function inc_signatures_dist($script, $id, $debut, $where, $order, $limit='') { ...@@ -44,13 +43,13 @@ function inc_signatures_dist($script, $id, $debut, $where, $order, $limit='') {
$res .= '<br />'; $res .= '<br />';
while($row=sql_fetch($request)){ while($row=sql_fetch($request)){
$res .= '<br />' . signatures_edit($script, $id, $debut, $row); $res .= '<br />' . signatures_edit($script, $id, $debut, $row, $type);
} }
return $res; return $res;
} }
// http://doc.spip.org/@signatures_edit // http://doc.spip.org/@signatures_edit
function signatures_edit($script, $id, $debut, $row) { function signatures_edit($script, $id, $debut, $row, $type) {
$id_signature = $row['id_signature']; $id_signature = $row['id_signature'];
$id_article = $row['id_article']; $id_article = $row['id_article'];
...@@ -62,13 +61,15 @@ function signatures_edit($script, $id, $debut, $row) { ...@@ -62,13 +61,15 @@ function signatures_edit($script, $id, $debut, $row) {
$statut = $row['statut']; $statut = $row['statut'];
$arg = ($statut=="publie") ? "-$id_signature" : $id_signature; $arg = ($statut=="publie") ? "-$id_signature" : $id_signature;
$retour = redirige_action_auteur('editer_signatures', $arg, $script, "id_article=$id_article&debut=$debut&type=$type#signature$id_signature");
$res = ""; $res = "";
if ($statut=="poubelle"){ if ($statut=="poubelle"){
$res .= "<table width='100%' cellpadding='2' cellspacing='0' border='0'><tr><td style='background-color: #ff0000'>"; $res .= "<table width='100%' cellpadding='2' cellspacing='0' border='0'><tr><td style='background-color: #ff0000'>";
} }
$res .= "<table width='100%' cellpadding='3' cellspacing='0'><tr><td class='verdana2 toile_foncee' style='color: white;'><b>" $res .= "<table id='signature$id_signature' width='100%' cellpadding='3' cellspacing='0'><tr><td class='verdana2 toile_foncee' style='color: white;'><b>"
. ($nom_site ? "$nom_site / " : "") . ($nom_site ? "$nom_site / " : "")
. $nom_email . $nom_email
. "</b></td></tr>" . "</b></td></tr>"
...@@ -76,19 +77,24 @@ function signatures_edit($script, $id, $debut, $row) { ...@@ -76,19 +77,24 @@ function signatures_edit($script, $id, $debut, $row) {
if ($statut=="publie"){ if ($statut=="publie"){
$res .= icone_inline (_T('icone_supprimer_signature'), $res .= icone_inline (_T('icone_supprimer_signature'),
redirige_action_auteur('editer_signatures', $arg, $script, "id_article=$id&debut=$debut"), $retour,
"forum-interne-24.gif", "forum-interne-24.gif",
"supprimer.gif", "supprimer.gif",
"right", "right",
false); false);
} elseif ($statut=="poubelle"){ } elseif ($statut=="poubelle"){
$res .= icone_inline (_T('icone_valider_signature'), $res .= icone_inline (_T('icone_valider_signature'),
redirige_action_auteur('editer_signatures', $arg, $script, "id_article=$id&debut=$debut"), $retour,
"forum-interne-24.gif",
"creer.gif",
"right",
false);
} else $res .= icone_inline (_L('relancer le signataire'),
$retour,
"forum-interne-24.gif", "forum-interne-24.gif",
"creer.gif", "creer.gif",
"right", "right",
false); false);
}
$res .= "<span class='spip_small'>".date_interface($date_time)."</span><br />"; $res .= "<span class='spip_small'>".date_interface($date_time)."</span><br />";
if ($statut=="poubelle"){ if ($statut=="poubelle"){
......
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