[Php-blog-plugin-cvs] additional_plugins/serendipity_event_spamblock_bayes ChangeLog, 1.8, 1.9 bay
A reliable, secure & extensible PHP blog | Not mainstream since 2002
Brought to you by:
garvinhicking,
jhermanns
From: onli <on...@us...> - 2010-06-26 13:16:55
|
Update of /cvsroot/php-blog/additional_plugins/serendipity_event_spamblock_bayes In directory sfp-cvsdas-2.v30.ch3.sourceforge.com:/tmp/cvs-serv8546 Modified Files: ChangeLog bayes_commentlist.js lang_de.inc.php lang_en.inc.php serendipity_event_spamblock_bayes.css serendipity_event_spamblock_bayes.php Log Message: Update to 0.3.8 Index: lang_de.inc.php =================================================================== RCS file: /cvsroot/php-blog/additional_plugins/serendipity_event_spamblock_bayes/lang_de.inc.php,v retrieving revision 1.8 retrieving revision 1.9 diff -u -d -r1.8 -r1.9 --- lang_de.inc.php 14 Jun 2010 14:23:51 -0000 1.8 +++ lang_de.inc.php 26 Jun 2010 13:16:46 -0000 1.9 @@ -13,11 +13,11 @@ @define('PLUGIN_EVENT_SPAMBLOCK_BAYES_DIRECTBLOCK', 'Direktes Abweisen'); @define('PLUGIN_EVENT_SPAMBLOCK_BAYES_DIRECTBLOCK_DESC', 'Weist Spam-Kommentare direkt ab anstatt sie erst zu moderieren.'); @define('PLUGIN_EVENT_SPAMBLOCK_BAYES_AUTOLEARN', 'Lernen'); -@define('PLUGIN_EVENT_SPAMBLOCK_BAYES_AUTOLEARN_DESC', 'Sehr eindeutige Spam-Kommentare werden direkt als Spam gelernt. So können schleichend stattfindende Modifikationen am Spam automatisch erfasst werden.'); -@define('PLUGIN_EVENT_SPAMBLOCK_BAYES_LOGFILE', 'Speicherplatz für das Logfile'); -@define('PLUGIN_EVENT_SPAMBLOCK_BAYES_LOGFILE_DESC', 'Einige Informationen über die Abweisung/Moderation von Kommentaren kann in ein Logfile geschrieben werden. Wenn diese Option auf einen leeren Wert gesetzt wird, findet keine Protokollierung statt.'); +@define('PLUGIN_EVENT_SPAMBLOCK_BAYES_AUTOLEARN_DESC', 'Sehr eindeutige Spam-Kommentare werden direkt als Spam gelernt. So können schleichend stattfindende Modifikationen am Spam automatisch erfasst werden.'); +@define('PLUGIN_EVENT_SPAMBLOCK_BAYES_LOGFILE', 'Speicherplatz für das Logfile'); +@define('PLUGIN_EVENT_SPAMBLOCK_BAYES_LOGFILE_DESC', 'Einige Informationen über die Abweisung/Moderation von Kommentaren kann in ein Logfile geschrieben werden. Wenn diese Option auf einen leeren Wert gesetzt wird, findet keine Protokollierung statt.'); @define('PLUGIN_EVENT_SPAMBLOCK_BAYES_LOGTYPE', 'Protokollierung von fehlgeschlagenen Kommentaren'); -@define('PLUGIN_EVENT_SPAMBLOCK_BAYES_LOGTYPE_DESC', 'Die Protokollierung von fehlgeschlagenen Kommentaren und deren Gründen kann auf mehrere Arten durchgeführt werden.'); +@define('PLUGIN_EVENT_SPAMBLOCK_BAYES_LOGTYPE_DESC', 'Die Protokollierung von fehlgeschlagenen Kommentaren und deren Gründen kann auf mehrere Arten durchgeführt werden.'); @define('PLUGIN_EVENT_SPAMBLOCK_BAYES_LOGTYPE_FILE', 'Einfache Datei (siehe Option "Logfile")'); @define('PLUGIN_EVENT_SPAMBLOCK_BAYES_LOGTYPE_DB', 'Datenbank'); @define('PLUGIN_EVENT_SPAMBLOCK_BAYES_LOGTYPE_NONE', 'Keine Protokollierung'); @@ -25,7 +25,7 @@ @define('PLUGIN_EVENT_SPAMBLOCK_BAYES_ERROR', 'Abgewiesen als Spam.'); @define('PLUGIN_EVENT_SPAMBLOCK_BAYES_MODERATE', 'Als Spam erkannt, wird moderiert.'); @define('PLUGIN_EVENT_SPAMBLOCK_BAYES_RATING_EXPLANATION', 'Spamfaktor des Spamblock-Bayes-Plugins.'); -@define('PLUGIN_EVENT_SPAMBLOCK_BAYES_DELETE', 'Kommentar löschen und als Spam markieren'); +@define('PLUGIN_EVENT_SPAMBLOCK_BAYES_DELETE', 'Kommentar löschen und als Spam markieren'); @define('PLUGIN_EVENT_SPAMBLOCK_BAYES_APPROVE', 'Kommentar bewilligen und als valid markieren'); @define('PLUGIN_EVENT_SPAMBLOCK_BAYES_PATH', 'Plugin-Pfad'); @define('PLUGIN_EVENT_SPAMBLOCK_BAYES_PATH_DESC', 'Wird hier der Pluginpfad angegeben wird dieser nicht mehr dynamisch ermittelt, was einen deutlichen Leistungsgewinn einbringt. Beispiel: http://www.example.com/plugins/serendipity_event_spamblock_bayes/ (das / am Ende ist wichtig).'); @@ -37,23 +37,24 @@ @define('PLUGIN_EVENT_SPAMBLOCK_BAYES_METHOD_MODERATE', 'Moderieren'); @define('PLUGIN_EVENT_SPAMBLOCK_BAYES_METHOD_BLOCK', 'Abweisen'); @define('PLUGIN_EVENT_SPAMBLOCK_BAYES_METHOD_CUSTOM', 'Manuelle Grenzen'); -@define('PLUGIN_EVENT_SPAMBLOCK_BAYES_SPAMBUTTON', 'Als Spam lernen'); +define('PLUGIN_EVENT_SPAMBLOCK_BAYES_SPAMBUTTON', 'Als Spam lernen'); @define('PLUGIN_EVENT_SPAMBLOCK_BAYES_HAMBUTTON', 'Als valid lernen'); @define('PLUGIN_EVENT_SPAMBLOCK_BAYES_MENU_LEARN', 'Lernen'); @define('PLUGIN_EVENT_SPAMBLOCK_BAYES_MENU_DATABASE', 'Datenbank'); @define('PLUGIN_EVENT_SPAMBLOCK_BAYES_MENU_RECYCLER', 'Papierkorb'); @define('PLUGIN_EVENT_SPAMBLOCK_BAYES_CREATEDB', 'Datenbank erstellen'); @define('PLUGIN_EVENT_SPAMBLOCK_BAYES_LEARNOLD', 'Altes einlernen'); -@define('PLUGIN_EVENT_SPAMBLOCK_BAYES_ERASEDB', 'Datenbank löschen'); +@define('PLUGIN_EVENT_SPAMBLOCK_BAYES_ERASEDB', 'Datenbank löschen'); @define('PLUGIN_EVENT_SPAMBLOCK_BAYES_SAVEDVALUES', 'Eingeordnete Kommentare'); -@define('PLUGIN_EVENT_SPAMBLOCK_BAYES_MENU', 'Menü'); -@define('PLUGIN_EVENT_SPAMBLOCK_BAYES_MENU_DESC', 'Verlinke das erweiterte Menü im Adminbereich.'); +@define('PLUGIN_EVENT_SPAMBLOCK_BAYES_MENU', 'Menü'); +@define('PLUGIN_EVENT_SPAMBLOCK_BAYES_MENU_DESC', 'Verlinke das erweiterte Menü im Adminbereich.'); @define('PLUGIN_EVENT_SPAMBLOCK_BAYES_RECYCLER_DESC', 'Sollen abgewiesen Kommentare im Papierkorb gespeichert werden?'); @define('PLUGIN_EVENT_SPAMBLOCK_BAYES_RECYCLER_EMPTY', 'Papierkorb leeren'); @define('PLUGIN_EVENT_SPAMBLOCK_BAYES_RESTORE', 'Wiederherstellen'); @define('PLUGIN_EVENT_SPAMBLOCK_BAYES_MENU_ANALYSIS', 'Analyse'); @define('PLUGIN_EVENT_SPAMBLOCK_BAYES_RECYCLER_DELETE', 'Papierkorbgrenze'); -@define('PLUGIN_EVENT_SPAMBLOCK_BAYES_RECYCLER_DELETE_DESC', 'Ab welcher Bewertung soll ein Kommentar direkt gelöscht statt in den Papierkorb geschoben werden? Beispiel: "98".'); - +@define('PLUGIN_EVENT_SPAMBLOCK_BAYES_RECYCLER_DELETE_DESC', 'Ab welcher Bewertung soll ein Kommentar direkt gelöscht statt in den Papierkorb geschoben werden? Beispiel: 98'); +@define('PLUGIN_EVENT_SPAMBLOCK_BAYES_IGNORE', 'Ignorieren'); +@define('PLUGIN_EVENT_SPAMBLOCK_BAYES_IGNORE_DESC', 'Gibt Kommentarfelder an, die ignoriert werden sollen. Möglich sind: ip, referer, author, body, email, url. Beispiel: "ip, referer".'); ?> Index: serendipity_event_spamblock_bayes.php =================================================================== RCS file: /cvsroot/php-blog/additional_plugins/serendipity_event_spamblock_bayes/serendipity_event_spamblock_bayes.php,v retrieving revision 1.8 retrieving revision 1.9 diff -u -d -r1.8 -r1.9 --- serendipity_event_spamblock_bayes.php 14 Jun 2010 14:23:51 -0000 1.8 +++ serendipity_event_spamblock_bayes.php 26 Jun 2010 13:16:46 -0000 1.9 @@ -34,7 +34,7 @@ $this->title = PLUGIN_EVENT_SPAMBLOCK_BAYES_NAME; $propbag->add ( 'description', PLUGIN_EVENT_SPAMBLOCK_BAYES_DESC); $propbag->add ( 'name', $this->title); - $propbag->add ( 'version', '0.3.7' ); + $propbag->add ( 'version', '0.3.8' ); $propbag->add ( 'event_hooks', array ('frontend_saveComment' => true, 'backend_spamblock_comments_shown' => true, 'external_plugin' => true, @@ -51,12 +51,13 @@ 'moderateBarrier', 'blockBarrier', 'autolearn', - 'path', - 'logtype', - 'logfile', + 'ignore', 'menu', 'recycler', - 'recyclerdelete' + 'recyclerdelete', + 'path', + 'logtype', + 'logfile' )); } @@ -137,6 +138,13 @@ )); $propbag->add('radio_per_row', '1'); break; + case 'ignore': + $propbag->add('type', 'string'); + $propbag->add('name', PLUGIN_EVENT_SPAMBLOCK_BAYES_IGNORE); + $propbag->add('description', PLUGIN_EVENT_SPAMBLOCK_BAYES_IGNORE_DESC); + $propbag->add('default', ''); + return true; + break; default: return false; } @@ -194,11 +202,13 @@ * $db: true if comment is fetched from db */ function startClassify($comment) { + $this->debugMsg($comment); $divider = 0; $ratings = array(); $types = array_keys($this->type); foreach($types as $type) { $rating = $this->classify($comment[$type], $this->type[$type]); + $this->debugMsg("rating for $type: $rating \n"); if (is_numeric($rating)) { $ratings[] = $rating; $divider++; @@ -218,7 +228,7 @@ } #If a field is clearly spam, a spammer probably mixed - #it's spam with valid content to fool the spamfilter. + #its spam with valid content to fool the spamfilter. $max_ratings = array(); $min_ratings = array(); foreach ($ratings as $rating) { @@ -232,9 +242,6 @@ if (count($max_ratings) > count($min_ratings)) { return max($ratings); } - /*if(max($ratings) >= $spamBarrier) { - return max($ratings); - }*/ return (array_sum($ratings) / $divider); } @@ -253,10 +260,15 @@ * */ function classify($comment = '', $type) { global $serendipity; + $ignore = explode(',', $this->get_config('ignore', '')); + if (in_array($type, $ignore)) { + //we ignore fields on the ignorelist + return; + } $spam_texts = $this->get_config("{$type}_spam", 0); $ham_texts = $this->get_config("{$type}_ham", 0); - if ($comment == '' && ! is_string ( $comment )) { + if ($comment == '' && ! is_string($comment)) { return false; } if ($spam_texts == 0 || $ham_texts == 0) { @@ -699,13 +711,13 @@ $url .= '&serendipity[subpage]=3'; if (!empty($msgtype)) { $url .= '&serendipity['.$msgtype.']='. $msg .'">'; + } else { + $url .= '" />'; } echo $redirect . $url; break; case 'bayesAnalyse': if(isset($_REQUEST['comments'])) { - $this->emptyRecycler(); - $msgtype = 'message'; $comment_ids = array_keys($_REQUEST['comments']); } else { $msg = 'Please select at least one comment'; @@ -719,8 +731,11 @@ $url .= '&serendipity[comments]['.$comment.']'; } if (!empty($msgtype)) { - $url .= '&serendipity['.$msgtype.']='. $msg .'">'; + $url .= '&serendipity['.$msgtype.']='. $msg .'"/>'; + } else { + $url .= '" />'; } + echo $redirect . $url; break; @@ -773,7 +788,15 @@ $path_defined = false; $imgpath = $serendipity['baseURL'] . 'index.php?/plugin/'; } - $comment = &$eventData; + $comment = $eventData; + //change $comment into the needed form + $comment['referrer'] = $comment[$this->type['referrer']]; + $comment['name'] = $comment[$this->type['name']]; + $comment['body'] = $comment['fullBody']; + unset($comment[$this->type['referrer']]); + unset($comment[$this->type['name']]); + unset($comment['fullBody']); + $eventData['action_more'] = '<a id="ham'. $comment ['id'] .'" class="serendipityIconLink spamblockBayesControls" onclick="ham('. $comment ['id'].')" @@ -785,7 +808,14 @@ onclick="spam('. $comment ['id'] .')" title="'. PLUGIN_EVENT_SPAMBLOCK_BAYES_NAME . ': ' . PLUGIN_EVENT_SPAMBLOCK_BAYES_SPAM .'"><img src="'. $imgpath . 'spamblock_bayes.spam.png' .'" - alt="" />'. PLUGIN_EVENT_SPAMBLOCK_BAYES_SPAM.'</a>'; + alt="" />'. PLUGIN_EVENT_SPAMBLOCK_BAYES_SPAM.'</a> + <span class="spamblockBayesRating"> + <a href="serendipity_admin.php?serendipity[adminModule]=event_display&serendipity[adminAction]=spamblock_bayes&serendipity[subpage]=4&serendipity[comments]['.$comment['id'].']"> + <span id="'. $comment ['id'] .'_rating">'. preg_replace('/\..*/', '', $this->startClassify($comment) * 100) .'%</span> + </a> + <img src="'.serendipity_getTemplateFile ('admin/img/admin_msg_note.png').'" title="'. PLUGIN_EVENT_SPAMBLOCK_BAYES_RATING_EXPLANATION.'" /> + </span> + '; return true; break; @@ -1052,16 +1082,16 @@ $comment_ids = array_keys($this->get['comments']); $this->showAnalysis($comment_ids); } else { - $comments = $this->getAllComments(); + $comments = $this->getAllComments($commentpage); if ($commentpage > 0) { echo '<a class="serendipityIconLink" href="?serendipity[adminModule]=event_display&serendipity[adminAction]=spamblock_bayes&serendipity[subpage]=4&serendipity[commentpage]='. ($commentpage-1) .'"><img src="/templates/default/admin/img/previous.png"/>'.PREVIOUS.'</a>'; } - if (($commentpage+1)*20 < count($comments) ) { + if (count($comments) > 20) { echo '<a class="serendipityIconLinkRight" href="?serendipity[adminModule]=event_display&serendipity[adminAction]=spamblock_bayes&serendipity[subpage]=4&serendipity[commentpage]='. ($commentpage+1) .'">'.NEXT.'<img src="/templates/default/admin/img/next.png"/></a>'; } echo '<form action="'. "{$serendipity['baseURL']}index.php?/plugin/bayesAnalyse" .'" method="post"> <ul id="bayesAnalysisList" class="plainList">'; - for ($i=$commentpage*20; $i<($commentpage+1)*20;$i++) { + for ($i=0; $i < 20;$i++) { if (! isset($comments[$i])) { break; } @@ -1078,8 +1108,6 @@ if (($commentpage+1)*20 < count($comments) ) { echo '<a class="serendipityIconLinkRight" href="?serendipity[adminModule]=event_display&serendipity[adminAction]=spamblock_bayes&serendipity[subpage]=4&serendipity[commentpage]='. ($commentpage+1) .'">'.NEXT.'<img src="/templates/default/admin/img/next.png"/></a>'; } - - } } @@ -1125,7 +1153,7 @@ # $caption The caption of the table # $id The id the table shall get in the htmlentities # $include The columns to select - # $formatFunctions A associative array, containing a function + # $formatFunctions An associative array, containing a function # which get used upon the corresponding column function showTable($table, $select=false, $caption="", $id="", $include="", $formatFunctions="") { global $serendipity; @@ -1264,9 +1292,19 @@ return $comments; } - function getAllComments() { + # Get all comments, or, when $page was given, give 20 comments of + # that page + function getAllComments($page=false) { global $serendipity; - $sql = "SELECT * FROM {$serendipity['dbPrefix']}comments"; + if ($page === false) { + $sql = "SELECT * FROM {$serendipity['dbPrefix']}comments ORDER BY id DESC"; + } else { + $first = $page * 20; + #+1, because the analyser-menu looks at the amount of + #comments to decide if a next page is needed + $last = $first + 20 +1; + $sql = "SELECT * FROM {$serendipity['dbPrefix']}comments ORDER BY id DESC LIMIT $first, $last"; + } $comments = serendipity_db_query($sql); foreach ($comments as &$comment) { $comment['referrer'] = $comment[$this->type['referrer']]; Index: lang_en.inc.php =================================================================== RCS file: /cvsroot/php-blog/additional_plugins/serendipity_event_spamblock_bayes/lang_en.inc.php,v retrieving revision 1.6 retrieving revision 1.7 diff -u -d -r1.6 -r1.7 --- lang_en.inc.php 14 Jun 2010 14:23:51 -0000 1.6 +++ lang_en.inc.php 26 Jun 2010 13:16:46 -0000 1.7 @@ -35,7 +35,7 @@ @define('PLUGIN_EVENT_SPAMBLOCK_BAYES_METHOD_MODERATE', 'Moderate'); @define('PLUGIN_EVENT_SPAMBLOCK_BAYES_METHOD_BLOCK', 'Reject'); @define('PLUGIN_EVENT_SPAMBLOCK_BAYES_METHOD_CUSTOM', 'Custom'); -@define('PLUGIN_EVENT_SPAMBLOCK_BAYES_SPAMBUTTON', 'Mark as spam'); +@define('PLUGIN_EVENT_SPAMBLOCK_BAYES_SPAMBUTTON', 'Mark as spam'); @define('PLUGIN_EVENT_SPAMBLOCK_BAYES_HAMBUTTON', 'Mark as valid'); @define('PLUGIN_EVENT_SPAMBLOCK_BAYES_MENU_LEARN', 'Learn'); @define('PLUGIN_EVENT_SPAMBLOCK_BAYES_MENU_DATABASE', 'Database'); @@ -52,4 +52,6 @@ @define('PLUGIN_EVENT_SPAMBLOCK_BAYES_MENU_ANALYSIS', 'Analyse'); @define('PLUGIN_EVENT_SPAMBLOCK_BAYES_RECYCLER_DELETE', 'Recyler Bypass'); @define('PLUGIN_EVENT_SPAMBLOCK_BAYES_RECYCLER_DELETE_DESC', 'Comments with a rating equal or higher this value will not be thrown into the recycler, they will be deleted. Example: 98'); +@define('PLUGIN_EVENT_SPAMBLOCK_BAYES_IGNORE', 'Ignore'); +@define('PLUGIN_EVENT_SPAMBLOCK_BAYES_IGNORE_DESC', 'Enter commentfields which shall be ignored. Possible values: ip, referer, author, body, email, url. E.g.: "ip, referer".'); ?> Index: ChangeLog =================================================================== RCS file: /cvsroot/php-blog/additional_plugins/serendipity_event_spamblock_bayes/ChangeLog,v retrieving revision 1.8 retrieving revision 1.9 diff -u -d -r1.8 -r1.9 --- ChangeLog 14 Jun 2010 14:23:51 -0000 1.8 +++ ChangeLog 26 Jun 2010 13:16:45 -0000 1.9 @@ -1,3 +1,10 @@ +0.3.8: + * Added option to ignore commentfields + * Used Limit to reduce resourceusage of Analysismenu + * Changed sortorder to "newest comment first" in Analysismenu + * Fixed: Recycler got emptied when analysing a comment + * Linked Analysis from rating in commentlist + 0.3.7: * Restored wanted order of the recycler-table * Mitigated the effect of one spamfield if there are other clearly Index: serendipity_event_spamblock_bayes.css =================================================================== RCS file: /cvsroot/php-blog/additional_plugins/serendipity_event_spamblock_bayes/serendipity_event_spamblock_bayes.css,v retrieving revision 1.2 retrieving revision 1.3 diff -u -d -r1.2 -r1.3 --- serendipity_event_spamblock_bayes.css 14 Jun 2010 14:23:51 -0000 1.2 +++ serendipity_event_spamblock_bayes.css 26 Jun 2010 13:16:46 -0000 1.3 @@ -128,4 +128,7 @@ } #bayesControls label { display: block; +} +input[type="submit"] { + cursor: pointer; } \ No newline at end of file Index: bayes_commentlist.js =================================================================== RCS file: /cvsroot/php-blog/additional_plugins/serendipity_event_spamblock_bayes/bayes_commentlist.js,v retrieving revision 1.4 retrieving revision 1.5 diff -u -d -r1.4 -r1.5 --- bayes_commentlist.js 14 Jun 2010 14:23:51 -0000 1.4 +++ bayes_commentlist.js 26 Jun 2010 13:16:46 -0000 1.5 @@ -298,5 +298,4 @@ return ids; } -addLoadEvent(getAllRatings); addLoadEvent(placeSpambutton); |