forked from YesWiki/yeswiki
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy patherasespamedcomments.class.php
executable file
·147 lines (134 loc) · 4.64 KB
/
erasespamedcomments.class.php
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
<?php
/**
* Action permettant d'effacer facilement les spams de commentaires
* (pour WikiNi 0.5 et supérieurs)
*
* Cette action accepte les paramètres :
* -- "max" permettant de limiter le nombre de commentaires affichés
* -- "logpage" permettant de spécifier la page où sont enregistrées
* les suppressions effectuées
* Exemple d'utilisation : {{erasespamedcomments max="50"}}
*
* @version $Id: erasespamedcomments.class.php 859 2007-11-22 01:07:26Z nepote $
* @author Charles Népote <[email protected]>
* @author Didier Loiseau <[email protected]>
* @copyright Copyright © 2006, 2007 Charles Népote
* @license License GPL.
*
* @todo
* -- pour garantir une certaine transparence, option d'envoi par mail des contenus effacés (?)
* (via une méthode appelée NotifyAdmin())
* -- idéalement la dernière page affiche les résultats mais ne renettoie
* pas les commentaires si elle est rechargée
* -- test pour savoir si quelque chose a bien été effacé
* -- la présentation (style, paramétrage de limite du nombre de commentaires affichés,
* paramétrage de la longueur des contenus affichés, etc.)
*
*
*/
// Vérification de sécurité
if (!defined('WIKINI_VERSION'))
{
die ('accès direct interdit');
}
class ActionErasespamedcomments extends WikiniAdminAction
{
function PerformAction($args, $command)
{
$wiki = &$this->wiki;
ob_start();
echo "\n<!-- == Action erasespamedcomments v 0.7 ============================= -->\n";
// -- 2. Affichage du formulaire ---
if(!isset($_POST['clean']))
{
$limit = isset($args['max']) && $args["max"] > 0 ? (int) $args["max"] : 0;
if ($comments = $wiki->LoadRecentComments($limit))
{
// Formulaire listant les commentaires
echo "<form method=\"post\" action=\"". $wiki->Href() . "\" name=\"selection\">\n";
$curday = '';
foreach ($comments as $comment)
{
// day header
list($day, $time) = explode(" ", $comment["time"]);
if ($day != $curday)
{
if ($curday)
{
echo "</ul>\n" ;
}
$erase_id = 'erasecommday_' . str_replace('-', '', $day);
echo "<b>$day:</b> <a href=\"#\" onclick=\"return invert_selection('" . $erase_id . "')\">inverser</a> <br />\n" ;
echo "<ul id=\"" . $erase_id . "\">\n";
$curday = $day;
}
// echo entry
echo
"<li><input name=\"suppr[]\" value=\"" . $comment["tag"] . "\" type=\"checkbox\" /> [Suppr.!] ".
$comment["tag"].
" (",$comment["time"],") <code>".
htmlspecialchars(substr($comment['body'], 0, 25), ENT_COMPAT, TEMPLATES_DEFAULT_CHARSET)."</code> ".
"<a href=\"",$wiki->href("", $comment["comment_on"], "show_comments=1")."#".$comment["tag"]."\">".
$comment["comment_on"],"</a> . . . . ".
$wiki->Format($comment["user"]),"</li>\n" ;
}
echo "</ul>\n<input type=\"hidden\" name=\"clean\" value=\"yes\" />\n";
echo "<button value=\"Valider\">Nettoyer >></button>\n";
echo "</form>";
}
else
{
echo "<i>Pas de commentaires récents.</i>" ;
}
}
// -- 3. Traitement du formulaire ---
else if(isset($_POST['clean']))
{
$deletedPages = "";
// -- 3.1 Si des pages ont été sélectionnées : effacement ---
// On efface chaque élément du tableau suppr[]
// Pour chaque page sélectionnée
if (!empty($_POST['suppr']))
{
foreach ($_POST['suppr'] as $page)
{
// Effacement de la page en utilisant la méthode adéquate
// (si DeleteOrphanedPage ne convient pas, soit on créé
// une autre, soit on la modifie
echo "Effacement de : " . $page . "<br />\n";
$wiki->DeleteOrphanedPage($page);
$deletedPages .= $page . ", ";
}
$deletedPages = trim($deletedPages, ", ");
echo "<p><a href=\"".$wiki->Href()."\">Retour au formulaire.</a></p>";
}
// -- 3.2 Si aucune page n'a été sélectionné : message
else
{
echo "<p>Aucun commentaire n'a été sélectionné pour être effacé.</p>";
echo "<p><a href=\"".$wiki->Href()."\">Retour au formulaire.</a></p>";
}
// -- 3.3 Écriture du journal des actions ---
// S'il y a eu des pages nettoyées,
// on enregistre dans une page choisie qui a fait quoi
if ($deletedPages)
{
// -- Détermine quelle est la page de log :
// -- passée en paramètre
// -- ou la page de log par défaut
$reportingPage = isset($args["logpage"]) ? $args["logpage"] : "";
// -- Ajout de la ligne de log
$wiki->LogAdministrativeAction($wiki->GetUserName(),
"Commentaire(s) effacé(s)" .
/*" [" .*/ /*$_POST['comment'] .*/ /* "]".*/
" : " .
"\"\"".
$deletedPages .
"\"\"".
"\n", $reportingPage);
}
}
return ob_get_clean();
}
}
?>