diff --git a/plugins/serendipity_event_spamblock/serendipity_event_spamblock.php b/plugins/serendipity_event_spamblock/serendipity_event_spamblock.php index 4a346e86..02d35528 100644 --- a/plugins/serendipity_event_spamblock/serendipity_event_spamblock.php +++ b/plugins/serendipity_event_spamblock/serendipity_event_spamblock.php @@ -1,10 +1,14 @@ -add('stackable', false); $propbag->add('author', 'Garvin Hicking, Sebastian Nohn, Grischa Brockhaus, Ian'); $propbag->add('requirements', array( - 'serendipity' => '0.8', + 'serendipity' => '1.6', 'smarty' => '2.6.7', 'php' => '4.1.0' )); - $propbag->add('version', '1.84'); + $propbag->add('version', '1.85'); $propbag->add('event_hooks', array( 'frontend_saveComment' => true, 'external_plugin' => true, @@ -100,6 +104,7 @@ var $filter_defaults; global $serendipity; switch($name) { + case 'disable_api_comments': $propbag->add('type', 'radio'); $propbag->add('name', PLUGIN_EVENT_SPAMBLOCK_API_COMMENTS); @@ -110,7 +115,6 @@ var $filter_defaults; 'desc' => array(PLUGIN_EVENT_SPAMBLOCK_API_MODERATE, PLUGIN_EVENT_SPAMBLOCK_API_REJECT, NONE) )); $propbag->add('radio_per_row', '1'); - break; case 'trackback_ipvalidation': @@ -241,7 +245,6 @@ var $filter_defaults; 'desc' => array(PLUGIN_EVENT_SPAMBLOCK_API_MODERATE, PLUGIN_EVENT_SPAMBLOCK_API_REJECT, NONE) )); $propbag->add('radio_per_row', '1'); - break; case 'akismet': @@ -249,7 +252,6 @@ var $filter_defaults; $propbag->add('name', PLUGIN_EVENT_SPAMBLOCK_AKISMET); $propbag->add('description', PLUGIN_EVENT_SPAMBLOCK_AKISMET_DESC); $propbag->add('default', ''); - break; case 'akismet_server': @@ -269,7 +271,6 @@ var $filter_defaults; ) )); $propbag->add('radio_per_row', '1'); - break; case 'akismet_filter': @@ -282,7 +283,6 @@ var $filter_defaults; 'desc' => array(PLUGIN_EVENT_SPAMBLOCK_API_MODERATE, PLUGIN_EVENT_SPAMBLOCK_API_REJECT, NONE) )); $propbag->add('radio_per_row', '1'); - break; case 'contentfilter_urls': @@ -334,7 +334,6 @@ var $filter_defaults; 'desc' => array(PLUGIN_EVENT_SPAMBLOCK_LOGTYPE_FILE, PLUGIN_EVENT_SPAMBLOCK_LOGTYPE_DB, PLUGIN_EVENT_SPAMBLOCK_LOGTYPE_NONE) )); $propbag->add('radio_per_row', '1'); - break; case 'ipflood': @@ -412,17 +411,18 @@ var $filter_defaults; break; default: - return false; + return false; } - return true; } - function get_default_exclude_urls() { + function get_default_exclude_urls() + { return '^http://identi\.ca/notice/\d+$'; } - function htaccess_update($new_ip) { + function htaccess_update($new_ip) + { global $serendipity; serendipity_db_query("INSERT INTO {$serendipity['dbPrefix']}spamblock_htaccess (ip, timestamp) VALUES ('" . serendipity_db_escape_string($new_ip) . "', '" . time() . "')"); @@ -473,7 +473,8 @@ var $filter_defaults; return false; } - function akismetRequest($api_key, $data, &$ret, $action = 'comment-check', $eventData = null, $addData = null) { + function akismetRequest($api_key, $data, &$ret, $action = 'comment-check', $eventData = null, $addData = null) + { global $serendipity; $opt = array( @@ -585,8 +586,8 @@ var $filter_defaults; } } - - function tellAboutComment($where, $api_key, $comment_id, $is_spam) { + function tellAboutComment($where, $api_key, $comment_id, $is_spam) + { global $serendipity; $comment = serendipity_db_query(" SELECT C.*, L.useragent as log_useragent, E.title as entry_title " . " FROM {$serendipity['dbPrefix']}comments C, {$serendipity['dbPrefix']}spamblocklog L , {$serendipity['dbPrefix']}entries E " @@ -624,7 +625,8 @@ var $filter_defaults; if (function_exists('serendipity_request_end')) serendipity_request_end(); } - function &getBlacklist($where, $api_key, &$eventData, &$addData) { + function &getBlacklist($where, $api_key, &$eventData, &$addData) + { global $serendipity; $ret = false; @@ -661,7 +663,8 @@ var $filter_defaults; return $ret; } - function checkScheme() { + function checkScheme() + { global $serendipity; $dbversion = $this->get_config('dbversion', '1'); @@ -722,13 +725,15 @@ var $filter_defaults; return true; } - function generate_content(&$title) { + function generate_content(&$title) + { $title = $this->title; } // This method will be called on "fatal" spam errors that are unlikely to occur accidentally by users. // Their IPs will be constantly blocked. - function IsHardcoreSpammer() { + function IsHardcoreSpammer() + { global $serendipity; if (serendipity_db_bool($this->get_config('automagic_htaccess'))) { @@ -737,7 +742,8 @@ var $filter_defaults; } // Checks whether the current author is contained in one of the gorups that need no spam checking - function inGroup() { + function inGroup() + { global $serendipity; $checkgroups = explode('^', $this->get_config('hide_for_authors')); @@ -762,11 +768,13 @@ var $filter_defaults; return false; } - function example() { + function example() + { return '
' . PLUGIN_EVENT_SPAMBLOCK_LOOK . $this->show_captcha() . '
'; } - function show_captcha($use_gd = false) { + function show_captcha($use_gd = false) + { global $serendipity; if ($use_gd || (function_exists('imagettftext') && function_exists('imagejpeg'))) { @@ -798,19 +806,21 @@ var $filter_defaults; } } - function event_hook($event, &$bag, &$eventData, $addData = null) { + function event_hook($event, &$bag, &$eventData, $addData = null) + { global $serendipity; $debug = true; $hooks = &$bag->get('event_hooks'); if (isset($hooks[$event])) { + $captchas_ttl = $this->get_config('captchas_ttl', 7); $_captchas = $this->get_config('captchas', 'yes'); $captchas = ($_captchas !== 'no' && ($_captchas === 'yes' || $_captchas === 'scramble' || serendipity_db_bool($_captchas))); - // Check if the entry is older than the allowed amount of time. Enforce kaptchas if that is true - // of if kaptchas are activated for every entry + // Check if the entry is older than the allowed amount of time. Enforce Captchas if that is true + // of if Captchas are activated for every entry $show_captcha = ($captchas && isset($eventData['timestamp']) && ($captchas_ttl < 1 || ($eventData['timestamp'] < (time() - ($captchas_ttl*60*60*24)))) ? true : false); // Plugins can override with custom captchas @@ -836,8 +846,9 @@ var $filter_defaults; } switch($event) { + case 'fetchcomments': - if (is_array($eventData) && !$_SESSION['serendipityAuthedUser'] && serendipity_db_bool($this->get_config('hide_email', false))) { + if (is_array($eventData) && !$_SESSION['serendipityAuthedUser'] && serendipity_db_bool($this->get_config('hide_email', 'false'))) { // Will force emails to be not displayed in comments and RSS feed for comments. Will not apply to logged in admins (so not in the backend as well) @reset($eventData); while(list($idx, $comment) = each($eventData)) { @@ -862,7 +873,7 @@ var $filter_defaults; $checkmail = $this->get_config('checkmail'); // Check CSRF [comments only, cannot be applied to trackbacks] - if ($addData['type'] == 'NORMAL' && serendipity_db_bool($this->get_config('csrf', true))) { + if ($addData['type'] == 'NORMAL' && serendipity_db_bool($this->get_config('csrf', 'true'))) { if (!serendipity_checkFormToken(false)) { $this->log($logfile, $eventData['id'], 'REJECTED', PLUGIN_EVENT_SPAMBLOCK_CSRF_REASON, $addData); $eventData = array('allow_comments' => false); @@ -912,7 +923,7 @@ var $filter_defaults; // already there #$eventData = array('allow_comments' => false); // already there #$serendipity['messagestack']['emails'][] = PLUGIN_EVENT_SPAMBLOCK_ERROR_BODY; return false; - } elseif (serendipity_db_bool($this->get_config('killswitch', false)) === true) { + } elseif (serendipity_db_bool($this->get_config('killswitch', 'false')) === true) { $this->log($logfile, $eventData['id'], 'REJECTED', PLUGIN_EVENT_SPAMBLOCK_REASON_KILLSWITCH, $addData); $eventData = array('allow_comments' => false); $serendipity['messagestack']['comments'][] = PLUGIN_EVENT_SPAMBLOCK_ERROR_KILLSWITCH; @@ -940,7 +951,7 @@ var $filter_defaults; } // Check for global emergency moderation - if (serendipity_db_bool($this->get_config('killswitch', false)) === true) { + if (serendipity_db_bool($this->get_config('killswitch', 'false')) === true) { $this->log($logfile, $eventData['id'], 'REJECTED', PLUGIN_EVENT_SPAMBLOCK_REASON_KILLSWITCH, $addData); $eventData = array('allow_comments' => false); $serendipity['messagestack']['comments'][] = PLUGIN_EVENT_SPAMBLOCK_ERROR_KILLSWITCH; @@ -1162,7 +1173,7 @@ var $filter_defaults; } // Check invalid email - if ($addData['type'] == 'NORMAL' && serendipity_db_bool($this->get_config('checkmail', false))) { + if ($addData['type'] == 'NORMAL' && serendipity_db_bool($this->get_config('checkmail', 'false'))) { if (!empty($addData['email']) && strstr($addData['email'], '@') === false) { $this->log($logfile, $eventData['id'], 'REJECTED', PLUGIN_EVENT_SPAMBLOCK_REASON_CHECKMAIL, $addData); $eventData = array('allow_comments' => false); @@ -1175,12 +1186,10 @@ var $filter_defaults; return false; } } - - return true; break; case 'frontend_comment': - if (serendipity_db_bool($this->get_config('hide_email', false))) { + if (serendipity_db_bool($this->get_config('hide_email', 'false'))) { echo '