From: Steve Sutton Date: Tue, 9 Sep 2014 20:28:49 +0000 (-0400) Subject: Remove plugin X-Git-Url: http://cvs2.gaslightmedia.com/gitweb/?a=commitdiff_plain;h=06aa0e2e2a0950cb054fbec6f2cbc009f4a11711;p=web%2FPetoskeyRobotics.git Remove plugin not needed --- diff --git a/wp-content/plugins/akismet/.htaccess b/wp-content/plugins/akismet/.htaccess deleted file mode 100644 index 6d8b4ec..0000000 --- a/wp-content/plugins/akismet/.htaccess +++ /dev/null @@ -1,11 +0,0 @@ -Order Deny,Allow -Deny from all - - - Allow from all - - -#allow access to any image - - Allow from all - \ No newline at end of file diff --git a/wp-content/plugins/akismet/_inc/akismet.css b/wp-content/plugins/akismet/_inc/akismet.css deleted file mode 100644 index ff076aa..0000000 --- a/wp-content/plugins/akismet/_inc/akismet.css +++ /dev/null @@ -1,361 +0,0 @@ - -#submitted-on { - position: relative; -} -#the-comment-list .author .akismet-user-comment-count { - display: inline; -} -#the-comment-list .author a span { - text-decoration: none; - color: #999; -} -#the-comment-list .author a span.akismet-span-link { - text-decoration: inherit; - color: inherit; -} -#the-comment-list .remove_url { - margin-left: 3px; - color: #999; - padding: 2px 3px 2px 0; -} -#the-comment-list .remove_url:hover { - color: #A7301F; - font-weight: bold; - padding: 2px 2px 2px 0; -} -#dashboard_recent_comments .akismet-status { - display: none; -} -.akismet-status { - float: right; -} -.akismet-status a { - color: #AAA; - font-style: italic; -} -span.comment-link a { - text-decoration: underline; -} -span.comment-link:after { - content: " "attr(title) " "; - color: #aaa; - text-decoration: none; -} -.mshot-arrow { - width: 0; - height: 0; - border-top: 10px solid transparent; - border-bottom: 10px solid transparent; - border-right: 10px solid #5C5C5C; - position: absolute; - left: -6px; - top: 91px; -} -.mshot-container { - background: #5C5C5C; - position: absolute; - top: -94px; - padding: 7px; - width: 450px; - height: 338px; - z-index: 20000; - -moz-border-radius: 6px; - border-radius: 6px; - -webkit-border-radius: 6px; -} -h2.ak-header { - padding: 30px; - background: #649316 url('img/logo-full-2x.png') no-repeat 20px center; - background-size: 185px 33px; - height: 33px; - text-indent: -9999em; - margin-right: 10px; -} -.checkforspam { - display: inline-block !important; -} -.checkforspam-spinner { - display: inline-block; - margin-top: 7px; -} - -.config-wrap { - margin-top: 2em; - max-width: 700px; -} - -.activate-option { - background: #e3e3e3; - border-radius: 3px; - margin-bottom: 30px; - overflow: hidden; - padding: 20px; -} -.activate-option.clicked { - background: #649316; - color: #fff; -} -.activate-option.clicked:hover { - background: #68802E; - color: #fff; -} - -.activate-option .button.button-secondary { - margin: 15px 0; -} - -.activate-option p { - margin: 10px 0 10px; -} - -.activate-highlight { - background: #fff; - padding: 30px; - margin-right: 10px; -} - -.activate-highlight.secondary { - background: #ddd; - padding: 20px 30px; -} - -.activate-highlight h3 { - margin: 0 0 0.3em; -} -.activate-highlight p { - color: #777; -} -.activate-highlight .button-primary { - margin-top: 15px; -} - -#akismet-enter-api-key .regular-text { - width: 18em; - margin-top: 15px; -} - -.right { - float: right; -} - -.alert-text { - color: #dd3d36; -} -.success { - color: #649316; -} -.option-description { - float: left; - font-size: 16px; -} -.option-description span { - color: #666; - display: block; - font-size: 14px; - margin-top: 5px; -} -.option-action { - float: right; -} -.key-config-link { - font-size: 14px; - margin-left: 20px; -} -.jetpack-account { - float: left; - font-size: 18px; - margin-right: 40px; -} -.small-heading { - color: #777; - display: block; - font-size: 12px; - font-weight: bold; - margin-bottom: 5px; - text-transform: uppercase; -} -.inline-label { - background: #ddd; - border-radius: 3px; - font-size: 11px; - padding: 3px 8px; - text-transform: uppercase; -} -.inline-label.alert { - background: #e54747; - color: #fff; -} -.jetpack-account .inline-label { - margin-left: 5px; -} -.option-action .manual-key { - margin-top: 7px; -} - -.alert { - border: 1px solid #e5e5e5; - padding: 0.4em 1em 1.4em 1em; - border-radius: 3px; - -webkit-border-radius: 3px; - border-width: 1px; - border-style: solid; -} - -.alert h3.key-status { - color: #fff; - margin: 1em 0 0.5em 0; -} - -.alert.critical { - background-color: #993300; -} - -.alert.active { - background-color: #649316; -} - -.alert p.key-status { - font-size: 24px; -} - -.alert p.description { - color:#fff; - font-size: 14px; - margin: 0 0; - font-style: normal; -} - -.alert p.description a, -.alert p.description a, -.alert p.description a, -.alert p.description a { - color: #fff; -} - -.new-snapshot { - margin-top: 1em; - padding: 1em; - text-align: center; -} - -.new-snapshot.stats { - background: #fff; - border: 1px solid #e5e5e5; -} - -.new-snapshot h3 { - background: #f5f5f5; - color: #888; - font-size: 11px; - margin: 0; - padding: 3px; -} - -.new-snapspot ul { - font-size: 12px; - width: 100%; -} - -.new-snapshot ul li { - color: #999; - float: left; - font-size: 11px; - padding: 0 20px; - text-transform: uppercase; - width: 33%; - box-sizing: border-box; - -moz-box-sizing: border-box; - -webkit-box-sizing: border-box; - -ms-box-sizing: border-box; -} - -.new-snapshot.stats ul li:first-child, -.new-snapshot.stats ul li:nth-child(2) { - border-right:1px dotted #ccc; -} - -.new-snapshot.account ul li:nth-child(2) { - border-right: none; -} - -.new-snapshot ul li span { - color: #52accc; - display: block; - font-size: 32px; - font-weight: lighter; - line-height: 1.5em; -} - -.new-snapshot.stats { -} - -.new-snapshot.account, -.new-snapshot.settings { - float: left; - padding: 0; - text-align: left; - width: 50%; - box-sizing: border-box; - -moz-box-sizing: border-box; - -webkit-box-sizing: border-box; - -ms-box-sizing: border-box; -} - -.account-container { - background: #fff; - border: 1px solid #e5e5e5; - margin-right: 0.5em; -} - -.settings-container { - background: #fff; - border: 1px solid #e5e5e5; - margin-left: 0.5em; -} - -.new-snapshot.account ul li { - width:100% -} - -.new-snapshot.account ul li span { - font-size: 14px; - font-weight: normal; -} - - -.new-snapshot.settings ul li { - border: none; - display: block; - width:100% -} - -.new-snapshot.settings ul li span { - display: block; - font-size: 14px; - font-weight: normal; -} - -.new-snapshot.settings p.submit { - margin: 0; - text-align: center; -} - -.akismet-settings th.strictness { - vertical-align: top; - padding-top: 15px; -} - -.akismet-settings input[type=text] { - width: 75%; -} - -.akismet-settings span.note{ - float: left; - padding-left: 23px; - font-size: 75%; - margin-top: -10px; -} - -.clearfix { - clear:both; -} \ No newline at end of file diff --git a/wp-content/plugins/akismet/_inc/akismet.js b/wp-content/plugins/akismet/_inc/akismet.js deleted file mode 100644 index aa0aab4..0000000 --- a/wp-content/plugins/akismet/_inc/akismet.js +++ /dev/null @@ -1,158 +0,0 @@ -jQuery( function ( $ ) { - $( 'a.activate-option' ).click( function(){ - var link = $( this ); - if ( link.hasClass( 'clicked' ) ) { - link.removeClass( 'clicked' ); - } - else { - link.addClass( 'clicked' ); - } - $( '.toggle-have-key' ).slideToggle( 'slow', function() {}); - return false; - }); - $('.akismet-status').each(function () { - var thisId = $(this).attr('commentid'); - $(this).prependTo('#comment-' + thisId + ' .column-comment'); - }); - $('.akismet-user-comment-count').each(function () { - var thisId = $(this).attr('commentid'); - $(this).insertAfter('#comment-' + thisId + ' .author strong:first').show(); - }); - $('#the-comment-list').find('tr.comment, tr[id ^= "comment-"]').find('.column-author a[title ^= "http://"]').each(function () { - var thisTitle = $(this).attr('title'); - thisCommentId = $(this).parents('tr:first').attr('id').split("-"); - - $(this).attr("id", "author_comment_url_"+ thisCommentId[1]); - - if (thisTitle) { - $(this).after( - $( 'x' ) - .attr( 'commentid', thisCommentId[1] ) - .attr( 'title', WPAkismet.strings['Remove this URL'] ) - ); - } - }); - $('.remove_url').live('click', function () { - var thisId = $(this).attr('commentid'); - var data = { - action: 'comment_author_deurl', - _wpnonce: WPAkismet.comment_author_url_nonce, - id: thisId - }; - $.ajax({ - url: ajaxurl, - type: 'POST', - data: data, - beforeSend: function () { - // Removes "x" link - $("a[commentid='"+ thisId +"']").hide(); - // Show temp status - $("#author_comment_url_"+ thisId).html( $( '' ).text( WPAkismet.strings['Removing...'] ) ); - }, - success: function (response) { - if (response) { - // Show status/undo link - $("#author_comment_url_"+ thisId) - .attr('cid', thisId) - .addClass('akismet_undo_link_removal') - .html( - $( '' ).text( WPAkismet.strings['URL removed'] ) - ) - .append( ' ' ) - .append( - $( '' ) - .text( WPAkismet.strings['(undo)'] ) - .addClass( 'akismet-span-link' ) - ); - } - } - }); - - return false; - }); - $('.akismet_undo_link_removal').live('click', function () { - var thisId = $(this).attr('cid'); - var thisUrl = $(this).attr('href').replace("http://www.", "").replace("http://", ""); - var data = { - action: 'comment_author_reurl', - _wpnonce: WPAkismet.comment_author_url_nonce, - id: thisId, - url: thisUrl - }; - $.ajax({ - url: ajaxurl, - type: 'POST', - data: data, - beforeSend: function () { - // Show temp status - $("#author_comment_url_"+ thisId).html( $( '' ).text( WPAkismet.strings['Re-adding...'] ) ); - }, - success: function (response) { - if (response) { - // Add "x" link - $("a[commentid='"+ thisId +"']").show(); - // Show link - $("#author_comment_url_"+ thisId).removeClass('akismet_undo_link_removal').html(thisUrl); - } - } - }); - - return false; - }); - $('a[id^="author_comment_url"], tr.pingback td.column-author a:first-of-type').mouseover(function () { - var wpcomProtocol = ( 'https:' === location.protocol ) ? 'https://' : 'http://'; - // Need to determine size of author column - var thisParentWidth = $(this).parent().width(); - // It changes based on if there is a gravatar present - thisParentWidth = ($(this).parent().find('.grav-hijack').length) ? thisParentWidth - 42 + 'px' : thisParentWidth + 'px'; - if ($(this).find('.mShot').length == 0 && !$(this).hasClass('akismet_undo_link_removal')) { - var self = $( this ); - $('.widefat td').css('overflow', 'visible'); - $(this).css('position', 'relative'); - var thisHref = $.URLEncode( $(this).attr('href') ); - $(this).append('
'); - setTimeout(function () { - self.find( '.mshot-image' ).attr('src', '//s0.wordpress.com/mshots/v1/'+thisHref+'?w=450&r=2'); - }, 6000); - setTimeout(function () { - self.find( '.mshot-image' ).attr('src', '//s0.wordpress.com/mshots/v1/'+thisHref+'?w=450&r=3'); - }, 12000); - } else { - $(this).find('.mShot').css('left', thisParentWidth).show(); - } - }).mouseout(function () { - $(this).find('.mShot').hide(); - }); - $('.checkforspam:not(.button-disabled)').click( function(e) { - $('.checkforspam:not(.button-disabled)').addClass('button-disabled'); - $('.checkforspam-spinner').addClass( 'spinner' ); - akismet_check_for_spam(0, 100); - e.preventDefault(); - }); - - function akismet_check_for_spam(offset, limit) { - $.post( - ajaxurl, - { - 'action': 'akismet_recheck_queue', - 'offset': offset, - 'limit': limit - }, - function(result) { - if (result.processed < limit) { - window.location.reload(); - } - else { - akismet_check_for_spam(offset + limit, limit); - } - } - ); - } -}); -// URL encode plugin -jQuery.extend({URLEncode:function(c){var o='';var x=0;c=c.toString();var r=/(^[a-zA-Z0-9_.]*)/; - while(x1 && m[1]!=''){o+=m[1];x+=m[1].length; - }else{if(c[x]==' ')o+='+';else{var d=c.charCodeAt(x);var h=d.toString(16); - o+='%'+(h.length<2?'0':'')+h.toUpperCase();}x++;}}return o;} -}); diff --git a/wp-content/plugins/akismet/_inc/form.js b/wp-content/plugins/akismet/_inc/form.js deleted file mode 100644 index 3a5be8a..0000000 --- a/wp-content/plugins/akismet/_inc/form.js +++ /dev/null @@ -1,30 +0,0 @@ -var ak_js = document.getElementById( "ak_js" ); - -if ( ! ak_js ) { - ak_js = document.createElement( 'input' ); - ak_js.setAttribute( 'id', 'ak_js' ); - ak_js.setAttribute( 'name', 'ak_js' ); - ak_js.setAttribute( 'type', 'hidden' ); -} -else { - ak_js.parentNode.removeChild( ak_js ); -} - -ak_js.setAttribute( 'value', ( new Date() ).getTime() ); - -var commentForm = document.getElementById( 'commentform' ); - -if ( commentForm ) { - commentForm.appendChild( ak_js ); -} -else { - var replyRowContainer = document.getElementById( 'replyrow' ); - - if ( replyRowContainer ) { - var children = replyRowContainer.getElementsByTagName( 'td' ); - - if ( children.length > 0 ) { - children[0].appendChild( ak_js ); - } - } -} \ No newline at end of file diff --git a/wp-content/plugins/akismet/_inc/img/logo-full-2x.png b/wp-content/plugins/akismet/_inc/img/logo-full-2x.png deleted file mode 100644 index a9bed8b..0000000 Binary files a/wp-content/plugins/akismet/_inc/img/logo-full-2x.png and /dev/null differ diff --git a/wp-content/plugins/akismet/akismet.php b/wp-content/plugins/akismet/akismet.php deleted file mode 100644 index 68289a3..0000000 --- a/wp-content/plugins/akismet/akismet.php +++ /dev/null @@ -1,59 +0,0 @@ -protect your blog from comment and trackback spam. It keeps your site protected from spam even while you sleep. To get started: 1) Click the "Activate" link to the left of this description, 2) Sign up for an Akismet API key, and 3) Go to your Akismet configuration page, and save your API key. -Version: 3.0.2 -Author: Automattic -Author URI: http://automattic.com/wordpress-plugins/ -License: GPLv2 or later -Text Domain: akismet -*/ - -/* -This program is free software; you can redistribute it and/or -modify it under the terms of the GNU General Public License -as published by the Free Software Foundation; either version 2 -of the License, or (at your option) any later version. - -This program is distributed in the hope that it will be useful, -but WITHOUT ANY WARRANTY; without even the implied warranty of -MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -GNU General Public License for more details. - -You should have received a copy of the GNU General Public License -along with this program; if not, write to the Free Software -Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. -*/ - -// Make sure we don't expose any info if called directly -if ( !function_exists( 'add_action' ) ) { - echo 'Hi there! I\'m just a plugin, not much I can do when called directly.'; - exit; -} - -define( 'AKISMET_VERSION', '3.0.2' ); -define( 'AKISMET__MINIMUM_WP_VERSION', '3.1' ); -define( 'AKISMET__PLUGIN_URL', plugin_dir_url( __FILE__ ) ); -define( 'AKISMET__PLUGIN_DIR', plugin_dir_path( __FILE__ ) ); -define( 'AKISMET_DELETE_LIMIT', 100000 ); - -register_activation_hook( __FILE__, array( 'Akismet', 'plugin_activation' ) ); -register_deactivation_hook( __FILE__, array( 'Akismet', 'plugin_deactivation' ) ); - -require_once( AKISMET__PLUGIN_DIR . 'class.akismet.php' ); -require_once( AKISMET__PLUGIN_DIR . 'class.akismet-widget.php' ); - -add_action( 'init', array( 'Akismet', 'init' ) ); - -if ( is_admin() ) { - require_once( AKISMET__PLUGIN_DIR . 'class.akismet-admin.php' ); - add_action( 'init', array( 'Akismet_Admin', 'init' ) ); -} - -//add wrapper class around deprecated akismet functions that are referenced elsewhere -require_once( AKISMET__PLUGIN_DIR . 'wrapper.php' ); - diff --git a/wp-content/plugins/akismet/class.akismet-admin.php b/wp-content/plugins/akismet/class.akismet-admin.php deleted file mode 100644 index a1c712e..0000000 --- a/wp-content/plugins/akismet/class.akismet-admin.php +++ /dev/null @@ -1,862 +0,0 @@ -'.__('Settings', 'akismet').''; - array_unshift( $links, $settings_link ); - return $links; - } - - public static function load_menu() { - if ( class_exists( 'Jetpack' ) ) - $hook = add_submenu_page( 'jetpack', __( 'Akismet' , 'akismet'), __( 'Akismet' , 'akismet'), 'manage_options', 'akismet-key-config', array( 'Akismet_Admin', 'display_page' ) ); - else - $hook = add_options_page( __('Akismet', 'akismet'), __('Akismet', 'akismet'), 'manage_options', 'akismet-key-config', array( 'Akismet_Admin', 'display_page' ) ); - - if ( version_compare( $GLOBALS['wp_version'], '3.3', '>=' ) ) { - add_action( "load-$hook", array( 'Akismet_Admin', 'admin_help' ) ); - } - } - - public static function load_resources() { - global $hook_suffix; - - if ( in_array( $hook_suffix, array( - 'index.php', # dashboard - 'edit-comments.php', - 'comment.php', - 'post.php', - 'settings_page_akismet-key-config', - 'jetpack_page_akismet-key-config', - ) ) ) { - wp_register_style( 'akismet.css', AKISMET__PLUGIN_URL . '_inc/akismet.css', array(), AKISMET_VERSION ); - wp_enqueue_style( 'akismet.css'); - - wp_register_script( 'akismet.js', AKISMET__PLUGIN_URL . '_inc/akismet.js', array('jquery','postbox'), AKISMET_VERSION ); - wp_enqueue_script( 'akismet.js' ); - wp_localize_script( 'akismet.js', 'WPAkismet', array( - 'comment_author_url_nonce' => wp_create_nonce( 'comment_author_url_nonce' ), - 'strings' => array( - 'Remove this URL' => __( 'Remove this URL' , 'akismet'), - 'Removing...' => __( 'Removing...' , 'akismet'), - 'URL removed' => __( 'URL removed' , 'akismet'), - '(undo)' => __( '(undo)' , 'akismet'), - 'Re-adding...' => __( 'Re-adding...' , 'akismet'), - ) - ) ); - } - } - - /** - * Add help to the Akismet page - * - * @return false if not the Akismet page - */ - public static function admin_help() { - $current_screen = get_current_screen(); - - // Screen Content - if ( current_user_can( 'manage_options' ) ) { - if ( !Akismet::get_api_key() || ( isset( $_GET['view'] ) && $_GET['view'] == 'start' ) ) { - //setup page - $current_screen->add_help_tab( - array( - 'id' => 'overview', - 'title' => __( 'Overview' , 'akismet'), - 'content' => - '

' . esc_html__( 'Akismet Setup' , 'akismet') . '

' . - '

' . esc_html__( 'Akismet filters out your comment and trackback spam for you, so you can focus on more important things.' , 'akismet') . '

' . - '

' . esc_html__( 'On this page, you are able to setup the Akismet plugin.' , 'akismet') . '

', - ) - ); - - $current_screen->add_help_tab( - array( - 'id' => 'setup-signup', - 'title' => __( 'New to Akismet' , 'akismet'), - 'content' => - '

' . esc_html__( 'Akismet Setup' , 'akismet') . '

' . - '

' . esc_html__( 'You need to enter an API key to activate the Akismet service on your site.' , 'akismet') . '

' . - '

' . sprintf( __( 'Signup for an account on %s to get an API Key.' , 'akismet'), 'Akismet.com' ) . '

', - ) - ); - - $current_screen->add_help_tab( - array( - 'id' => 'setup-manual', - 'title' => __( 'Enter an API Key' , 'akismet'), - 'content' => - '

' . esc_html__( 'Akismet Setup' , 'akismet') . '

' . - '

' . esc_html__( 'If you already have an API key' , 'akismet') . '

' . - '
    ' . - '
  1. ' . esc_html__( 'Copy and paste the API key into the text field.' , 'akismet') . '
  2. ' . - '
  3. ' . esc_html__( 'Click the Use this Key button.' , 'akismet') . '
  4. ' . - '
', - ) - ); - } - elseif ( isset( $_GET['view'] ) && $_GET['view'] == 'stats' ) { - //stats page - $current_screen->add_help_tab( - array( - 'id' => 'overview', - 'title' => __( 'Overview' , 'akismet'), - 'content' => - '

' . esc_html__( 'Akismet Stats' , 'akismet') . '

' . - '

' . esc_html__( 'Akismet filters out your comment and trackback spam for you, so you can focus on more important things.' , 'akismet') . '

' . - '

' . esc_html__( 'On this page, you are able to view stats on spam filtered on your site.' , 'akismet') . '

', - ) - ); - } - else { - //configuration page - $current_screen->add_help_tab( - array( - 'id' => 'overview', - 'title' => __( 'Overview' , 'akismet'), - 'content' => - '

' . esc_html__( 'Akismet Configuration' , 'akismet') . '

' . - '

' . esc_html__( 'Akismet filters out your comment and trackback spam for you, so you can focus on more important things.' , 'akismet') . '

' . - '

' . esc_html__( 'On this page, you are able to enter/remove an API key, view account information and view spam stats.' , 'akismet') . '

', - ) - ); - - $current_screen->add_help_tab( - array( - 'id' => 'settings', - 'title' => __( 'Settings' , 'akismet'), - 'content' => - '

' . esc_html__( 'Akismet Configuration' , 'akismet') . '

' . - '

' . esc_html__( 'API Key' , 'akismet') . ' - ' . esc_html__( 'Enter/remove an API key.' , 'akismet') . '

' . - '

' . esc_html__( 'Comments' , 'akismet') . ' - ' . esc_html__( 'Show the number of approved comments beside each comment author in the comments list page.' , 'akismet') . '

' . - '

' . esc_html__( 'Strictness' , 'akismet') . ' - ' . esc_html__( 'Choose to either discard the worst spam automatically or to always put all spam in spam folder.' , 'akismet') . '

', - ) - ); - - $current_screen->add_help_tab( - array( - 'id' => 'account', - 'title' => __( 'Account' , 'akismet'), - 'content' => - '

' . esc_html__( 'Akismet Configuration' , 'akismet') . '

' . - '

' . esc_html__( 'Subscription Type' , 'akismet') . ' - ' . esc_html__( 'The Akismet subscription plan' , 'akismet') . '

' . - '

' . esc_html__( 'Status' , 'akismet') . ' - ' . esc_html__( 'The subscription status - active, cancelled or suspended' , 'akismet') . '

', - ) - ); - } - } - - // Help Sidebar - $current_screen->set_help_sidebar( - '

' . esc_html__( 'For more information:' , 'akismet') . '

' . - '

' . esc_html__( 'Akismet FAQ' , 'akismet') . '

' . - '

' . esc_html__( 'Akismet Support' , 'akismet') . '

' - ); - } - - public static function enter_api_key() { - if ( function_exists('current_user_can') && !current_user_can('manage_options') ) - die(__('Cheatin’ uh?', 'akismet')); - - if ( !wp_verify_nonce( $_POST['_wpnonce'], self::NONCE ) ) - return false; - - foreach( array( 'akismet_strictness', 'akismet_show_user_comments_approved' ) as $option ) { - update_option( $option, isset( $_POST[$option] ) && (int) $_POST[$option] == 1 ? '1' : '0' ); - } - - if ( defined( 'WPCOM_API_KEY' ) ) - return false; //shouldn't have option to save key if already defined - - $new_key = preg_replace( '/[^a-h0-9]/i', '', $_POST['key'] ); - $old_key = Akismet::get_api_key(); - - if ( empty( $new_key ) ) { - if ( !empty( $old_key ) ) { - delete_option( 'wordpress_api_key' ); - self::$notices[] = 'new-key-empty'; - } - } - elseif ( $new_key != $old_key ) { - self::save_key( $new_key ); - } - - return true; - } - - public static function save_key( $api_key ) { - $key_status = Akismet::verify_key( $api_key ); - - if ( $key_status == 'valid' ) { - $akismet_user = self::get_akismet_user( $api_key ); - - if ( $akismet_user ) { - if ( in_array( $akismet_user->status, array( 'active', 'active-dunning', 'no-sub' ) ) ) - update_option( 'wordpress_api_key', $api_key ); - - if ( $akismet_user->status == 'active' ) - self::$notices['status'] = 'new-key-valid'; - else - self::$notices['status'] = $akismet_user->status; - } - else - self::$notices['status'] = 'new-key-invalid'; - } - elseif ( in_array( $key_status, array( 'invalid', 'failed' ) ) ) - self::$notices['status'] = 'new-key-'.$key_status; - } - - public static function dashboard_stats() { - if ( !function_exists('did_action') || did_action( 'rightnow_end' ) ) - return; // We already displayed this info in the "Right Now" section - - if ( !$count = get_option('akismet_spam_count') ) - return; - - global $submenu; - - echo '

' . esc_html( _x( 'Spam', 'comments' , 'akismet') ) . '

'; - - echo '

'.sprintf( _n( - 'Akismet has protected your site from %3$s spam comment.', - 'Akismet has protected your site from %3$s spam comments.', - $count - , 'akismet'), 'https://akismet.com/wordpress/', esc_url( add_query_arg( array( 'page' => 'akismet-admin' ), admin_url( isset( $submenu['edit-comments.php'] ) ? 'edit-comments.php' : 'edit.php' ) ) ), number_format_i18n($count) ).'

'; - } - - // WP 2.5+ - public static function rightnow_stats() { - global $submenu, $wp_db_version; - - if ( 8645 < $wp_db_version ) // 2.7 - $link = add_query_arg( array( 'comment_status' => 'spam' ), admin_url( 'edit-comments.php' ) ); - elseif ( isset( $submenu['edit-comments.php'] ) ) - $link = add_query_arg( array( 'page' => 'akismet-admin' ), admin_url( 'edit-comments.php' ) ); - else - $link = add_query_arg( array( 'page' => 'akismet-admin' ), admin_url( 'edit.php' ) ); - - if ( $count = get_option('akismet_spam_count') ) { - $intro = sprintf( _n( - 'Akismet has protected your site from %2$s spam comment already. ', - 'Akismet has protected your site from %2$s spam comments already. ', - $count - , 'akismet'), 'https://akismet.com/wordpress/', number_format_i18n( $count ) ); - } else { - $intro = sprintf( __('Akismet blocks spam from getting to your blog. ', 'akismet'), 'https://akismet.com/wordpress/' ); - } - - $link = function_exists( 'esc_url' ) ? esc_url( $link ) : clean_url( $link ); - if ( $queue_count = self::get_spam_count() ) { - $queue_text = sprintf( _n( - 'There’s %1$s comment in your spam queue right now.', - 'There are %1$s comments in your spam queue right now.', - $queue_count - , 'akismet'), number_format_i18n( $queue_count ), $link ); - } else { - $queue_text = sprintf( __( "There’s nothing in your spam queue at the moment." , 'akismet'), $link ); - } - - $text = $intro . '
' . $queue_text; - echo "

$text

\n"; - } - - public static function check_for_spam_button( $comment_status ) { - if ( 'approved' == $comment_status ) - return; - - if ( function_exists('plugins_url') ) - $link = add_query_arg( array( 'action' => 'akismet_recheck_queue' ), admin_url( 'admin.php' ) ); - else - $link = add_query_arg( array( 'page' => 'akismet-admin', 'recheckqueue' => 'true', 'noheader' => 'true' ), admin_url( 'edit-comments.php' ) ); - - echo '
' . esc_html__('Check for Spam', 'akismet') . ''; - } - - public static function recheck_queue() { - global $wpdb; - - Akismet::fix_scheduled_recheck(); - - if ( ! ( isset( $_GET['recheckqueue'] ) || ( isset( $_REQUEST['action'] ) && 'akismet_recheck_queue' == $_REQUEST['action'] ) ) ) - return; - - $paginate = ''; - if ( isset( $_POST['limit'] ) && isset( $_POST['offset'] ) ) { - $paginate = $wpdb->prepare( " LIMIT %d OFFSET %d", array( $_POST['limit'], $_POST['offset'] ) ); - } - $moderation = $wpdb->get_results( "SELECT * FROM {$wpdb->comments} WHERE comment_approved = '0'{$paginate}", ARRAY_A ); - - foreach ( (array) $moderation as $c ) { - $c['user_ip'] = $c['comment_author_IP']; - $c['user_agent'] = $c['comment_agent']; - $c['referrer'] = ''; - $c['blog'] = get_bloginfo('url'); - $c['blog_lang'] = get_locale(); - $c['blog_charset'] = get_option('blog_charset'); - $c['permalink'] = get_permalink($c['comment_post_ID']); - - $c['user_role'] = ''; - if ( isset( $c['user_ID'] ) ) - $c['user_role'] = Akismet::get_user_roles($c['user_ID']); - - if ( Akismet::is_test_mode() ) - $c['is_test'] = 'true'; - - add_comment_meta( $c['comment_ID'], 'akismet_rechecking', true ); - - $response = Akismet::http_post( Akismet::build_query( $c ), 'comment-check' ); - - if ( 'true' == $response[1] ) { - wp_set_comment_status( $c['comment_ID'], 'spam' ); - update_comment_meta( $c['comment_ID'], 'akismet_result', 'true' ); - delete_comment_meta( $c['comment_ID'], 'akismet_error' ); - delete_comment_meta( $c['comment_ID'], 'akismet_delayed_moderation_email' ); - Akismet::update_comment_history( $c['comment_ID'], __('Akismet re-checked and caught this comment as spam', 'akismet'), 'check-spam' ); - - } elseif ( 'false' == $response[1] ) { - update_comment_meta( $c['comment_ID'], 'akismet_result', 'false' ); - delete_comment_meta( $c['comment_ID'], 'akismet_error' ); - delete_comment_meta( $c['comment_ID'], 'akismet_delayed_moderation_email' ); - Akismet::update_comment_history( $c['comment_ID'], __('Akismet re-checked and cleared this comment', 'akismet'), 'check-ham' ); - // abnormal result: error - } else { - update_comment_meta( $c['comment_ID'], 'akismet_result', 'error' ); - Akismet::update_comment_history( $c['comment_ID'], sprintf( __('Akismet was unable to re-check this comment (response: %s)', 'akismet'), substr($response[1], 0, 50)), 'check-error' ); - } - - delete_comment_meta( $c['comment_ID'], 'akismet_rechecking' ); - } - if ( defined( 'DOING_AJAX' ) && DOING_AJAX ) { - wp_send_json( array( - 'processed' => count((array) $moderation), - )); - } - else { - $redirect_to = isset( $_SERVER['HTTP_REFERER'] ) ? $_SERVER['HTTP_REFERER'] : admin_url( 'edit-comments.php' ); - wp_safe_redirect( $redirect_to ); - exit; - } - } - - // Adds an 'x' link next to author URLs, clicking will remove the author URL and show an undo link - public static function remove_comment_author_url() { - if ( !empty( $_POST['id'] ) && check_admin_referer( 'comment_author_url_nonce' ) ) { - $comment = get_comment( intval( $_POST['id'] ), ARRAY_A ); - if ( $comment && current_user_can( 'edit_comment', $comment['comment_ID'] ) ) { - $comment['comment_author_url'] = ''; - do_action( 'comment_remove_author_url' ); - print( wp_update_comment( $comment ) ); - die(); - } - } - } - - public static function add_comment_author_url() { - if ( !empty( $_POST['id'] ) && !empty( $_POST['url'] ) && check_admin_referer( 'comment_author_url_nonce' ) ) { - $comment = get_comment( intval( $_POST['id'] ), ARRAY_A ); - if ( $comment && current_user_can( 'edit_comment', $comment['comment_ID'] ) ) { - $comment['comment_author_url'] = esc_url( $_POST['url'] ); - do_action( 'comment_add_author_url' ); - print( wp_update_comment( $comment ) ); - die(); - } - } - } - - public static function comment_row_action( $a, $comment ) { - - // failsafe for old WP versions - if ( !function_exists('add_comment_meta') ) - return $a; - - $akismet_result = get_comment_meta( $comment->comment_ID, 'akismet_result', true ); - $akismet_error = get_comment_meta( $comment->comment_ID, 'akismet_error', true ); - $user_result = get_comment_meta( $comment->comment_ID, 'akismet_user_result', true); - $comment_status = wp_get_comment_status( $comment->comment_ID ); - $desc = null; - if ( $akismet_error ) { - $desc = __( 'Awaiting spam check' , 'akismet'); - } elseif ( !$user_result || $user_result == $akismet_result ) { - // Show the original Akismet result if the user hasn't overridden it, or if their decision was the same - if ( $akismet_result == 'true' && $comment_status != 'spam' && $comment_status != 'trash' ) - $desc = __( 'Flagged as spam by Akismet' , 'akismet'); - elseif ( $akismet_result == 'false' && $comment_status == 'spam' ) - $desc = __( 'Cleared by Akismet' , 'akismet'); - } else { - $who = get_comment_meta( $comment->comment_ID, 'akismet_user', true ); - if ( $user_result == 'true' ) - $desc = sprintf( __('Flagged as spam by %s', 'akismet'), $who ); - else - $desc = sprintf( __('Un-spammed by %s', 'akismet'), $who ); - } - - // add a History item to the hover links, just after Edit - if ( $akismet_result ) { - $b = array(); - foreach ( $a as $k => $item ) { - $b[ $k ] = $item; - if ( - $k == 'edit' - || ( $k == 'unspam' && $GLOBALS['wp_version'] >= 3.4 ) - ) { - $b['history'] = ' '. esc_html__('History', 'akismet') . ''; - } - } - - $a = $b; - } - - if ( $desc ) - echo ''.esc_html( $desc ).''; - - $show_user_comments = apply_filters( 'akismet_show_user_comments_approved', get_option('akismet_show_user_comments_approved') ); - $show_user_comments = $show_user_comments === 'false' ? false : $show_user_comments; //option used to be saved as 'false' / 'true' - - if ( $show_user_comments ) { - $comment_count = Akismet::get_user_comments_approved( $comment->user_id, $comment->comment_author_email, $comment->comment_author, $comment->comment_author_url ); - $comment_count = intval( $comment_count ); - echo ''; - } - - return $a; - } - - public static function comment_status_meta_box( $comment ) { - $history = Akismet::get_comment_history( $comment->comment_ID ); - - if ( $history ) { - echo '
'; - foreach ( $history as $row ) { - $time = date( 'D d M Y @ h:i:m a', $row['time'] ) . ' GMT'; - echo '
' . sprintf( esc_html__('%s ago', 'akismet'), human_time_diff( $row['time'] ) ) . ' - '; - echo esc_html( $row['message'] ) . '
'; - } - echo '
'; - } - } - - public static function plugin_action_links( $links, $file ) { - if ( $file == plugin_basename( AKISMET__PLUGIN_URL . '/akismet.php' ) ) { - $links[] = ''.esc_html__( 'Settings' , 'akismet').''; - } - - return $links; - } - - public static function text_add_link_callback( $m ) { - // bare link? - if ( $m[4] == $m[2] ) - return ''.$m[4].''; - else - return ''.$m[4].''; - } - - public static function text_add_link_class( $comment_text ) { - return preg_replace_callback( '#]*)href="([^"]+)"([^>]*)>(.*?)#i', array( 'Akismet_Admin', 'text_add_link_callback' ), $comment_text ); - } - - // Total spam in queue - // get_option( 'akismet_spam_count' ) is the total caught ever - public static function get_spam_count( $type = false ) { - global $wpdb; - - if ( !$type ) { // total - $count = wp_cache_get( 'akismet_spam_count', 'widget' ); - if ( false === $count ) { - if ( function_exists('wp_count_comments') ) { - $count = wp_count_comments(); - $count = $count->spam; - } else { - $count = (int) $wpdb->get_var("SELECT COUNT(comment_ID) FROM {$wpdb->comments} WHERE comment_approved = 'spam'"); - } - wp_cache_set( 'akismet_spam_count', $count, 'widget', 3600 ); - } - return $count; - } elseif ( 'comments' == $type || 'comment' == $type ) { // comments - $type = ''; - } - - return (int) $wpdb->get_var( $wpdb->prepare( "SELECT COUNT(comment_ID) FROM {$wpdb->comments} WHERE comment_approved = 'spam' AND comment_type = %s", $type ) ); - } - - // Check connectivity between the WordPress blog and Akismet's servers. - // Returns an associative array of server IP addresses, where the key is the IP address, and value is true (available) or false (unable to connect). - public static function check_server_ip_connectivity() { - - $servers = $ips = array(); - - // Some web hosts may disable this function - if ( function_exists('gethostbynamel') ) { - - $ips = gethostbynamel( 'rest.akismet.com' ); - if ( $ips && is_array($ips) && count($ips) ) { - $api_key = Akismet::get_api_key(); - - foreach ( $ips as $ip ) { - $response = Akismet::verify_key( $api_key, $ip ); - // even if the key is invalid, at least we know we have connectivity - if ( $response == 'valid' || $response == 'invalid' ) - $servers[$ip] = 'connected'; - else - $servers[$ip] = $response ? $response : 'unable to connect'; - } - } - } - - return $servers; - } - - // Simpler connectivity check - public static function check_server_connectivity($cache_timeout = 86400) { - - $debug = array(); - $debug[ 'PHP_VERSION' ] = PHP_VERSION; - $debug[ 'WORDPRESS_VERSION' ] = $GLOBALS['wp_version']; - $debug[ 'AKISMET_VERSION' ] = AKISMET_VERSION; - $debug[ 'AKISMET__PLUGIN_DIR' ] = AKISMET__PLUGIN_DIR; - $debug[ 'SITE_URL' ] = site_url(); - $debug[ 'HOME_URL' ] = home_url(); - - $servers = get_option('akismet_available_servers'); - if ( (time() - get_option('akismet_connectivity_time') < $cache_timeout) && $servers !== false ) { - $servers = self::check_server_ip_connectivity(); - update_option('akismet_available_servers', $servers); - update_option('akismet_connectivity_time', time()); - } - - $response = wp_remote_get( 'http://rest.akismet.com/1.1/test' ); - - $debug[ 'gethostbynamel' ] = function_exists('gethostbynamel') ? 'exists' : 'not here'; - $debug[ 'Servers' ] = $servers; - $debug[ 'Test Connection' ] = $response; - - Akismet::log( $debug ); - - if ( $response && 'connected' == wp_remote_retrieve_body( $response ) ) - return true; - - return false; - } - - // Check the server connectivity and store the available servers in an option. - public static function get_server_connectivity($cache_timeout = 86400) { - return self::check_server_connectivity( $cache_timeout ); - } - - public static function get_number_spam_waiting() { - global $wpdb; - return (int) $wpdb->get_var( "SELECT COUNT(*) FROM {$wpdb->commentmeta} WHERE meta_key = 'akismet_error'" ); - } - - public static function get_page_url( $page = 'config' ) { - - $args = array( 'page' => 'akismet-key-config' ); - - if ( $page == 'stats' ) - $args = array( 'page' => 'akismet-key-config', 'view' => 'stats' ); - elseif ( $page == 'delete_key' ) - $args = array( 'page' => 'akismet-key-config', 'view' => 'start', 'action' => 'delete-key', '_wpnonce' => wp_create_nonce( self::NONCE ) ); - - $url = add_query_arg( $args, class_exists( 'Jetpack' ) ? admin_url( 'admin.php' ) : admin_url( 'options-general.php' ) ); - - return $url; - } - - public static function get_akismet_user( $api_key ) { - $akismet_user = Akismet::http_post( Akismet::build_query( array( 'key' => $api_key ) ), 'get-subscription' ); - - if ( ! empty( $akismet_user[1] ) ) - $akismet_user = json_decode( $akismet_user[1] ); - else - $akismet_user = false; - - return $akismet_user; - } - - public static function get_stats( $api_key ) { - $stat_totals = array(); - - foreach( array( '6-months', 'all' ) as $interval ) { - $response = Akismet::http_post( Akismet::build_query( array( 'blog' => urlencode( get_bloginfo('url') ), 'key' => $api_key, 'from' => $interval ) ), 'get-stats' ); - - if ( ! empty( $response[1] ) ) { - $stat_totals[$interval] = json_decode( $response[1] ); - } - } - return $stat_totals; - } - - public static function verify_wpcom_key( $api_key, $user_id, $token = '' ) { - $akismet_account = Akismet::http_post( Akismet::build_query( array( - 'user_id' => $user_id, - 'api_key' => $api_key, - 'token' => $token, - 'get_account_type' => 'true' - ) ), 'verify-wpcom-key' ); - - if ( ! empty( $akismet_account[1] ) ) - $akismet_account = json_decode( $akismet_account[1] ); - - Akismet::log( compact( 'akismet_account' ) ); - - return $akismet_account; - } - - public static function display_alert() { - Akismet::view( 'notice', array( - 'type' => 'alert', - 'code' => (int) get_option( 'akismet_alert_code' ), - 'msg' => get_option( 'akismet_alert_msg' ) - ) ); - } - - public static function display_spam_check_warning() { - Akismet::fix_scheduled_recheck(); - - if ( wp_next_scheduled('akismet_schedule_cron_recheck') > time() && self::get_number_spam_waiting() > 0 ) { - $link_text = apply_filters( 'akismet_spam_check_warning_link_text', sprintf( __( 'Please check your Akismet configuration and contact your web host if problems persist.', 'akismet'), esc_url( self::get_page_url() ) ) ); - Akismet::view( 'notice', array( 'type' => 'spam-check', 'link_text' => $link_text ) ); - } - } - - public static function display_invalid_version() { - Akismet::view( 'notice', array( 'type' => 'version' ) ); - } - - public static function display_api_key_warning() { - Akismet::view( 'notice', array( 'type' => 'plugin' ) ); - } - - public static function display_page() { - if ( !Akismet::get_api_key() || ( isset( $_GET['view'] ) && $_GET['view'] == 'start' ) ) - self::display_start_page(); - elseif ( isset( $_GET['view'] ) && $_GET['view'] == 'stats' ) - self::display_stats_page(); - else - self::display_configuration_page(); - } - - public static function display_start_page() { - if ( isset( $_GET['action'] ) ) { - if ( $_GET['action'] == 'delete-key' ) { - if ( isset( $_GET['_wpnonce'] ) && wp_verify_nonce( $_GET['_wpnonce'], self::NONCE ) ) - delete_option( 'wordpress_api_key' ); - } - } - - if ( $api_key = Akismet::get_api_key() ) { - self::display_configuration_page(); - return; - } - - //the user can choose to auto connect their API key by clicking a button on the akismet done page - //if jetpack, get verified api key by using connected wpcom user id - //if no jetpack, get verified api key by using an akismet token - - $akismet_user = false; - - if ( isset( $_GET['token'] ) && preg_match('/^(\d+)-[0-9a-f]{20}$/', $_GET['token'] ) ) - $akismet_user = self::verify_wpcom_key( '', '', $_GET['token'] ); - elseif ( $jetpack_user = self::get_jetpack_user() ) - $akismet_user = self::verify_wpcom_key( $jetpack_user['api_key'], $jetpack_user['user_id'] ); - - if ( isset( $_GET['action'] ) ) { - if ( $_GET['action'] == 'save-key' ) { - if ( is_object( $akismet_user ) ) { - self::save_key( $akismet_user->api_key ); - self::display_notice(); - self::display_configuration_page(); - return; - } - } - } - - echo '

'.esc_html__('Akismet', 'akismet').'

'; - - self::display_status(); - - Akismet::view( 'start', compact( 'akismet_user' ) ); - } - - public static function display_stats_page() { - Akismet::view( 'stats' ); - } - - public static function display_configuration_page() { - $api_key = Akismet::get_api_key(); - $akismet_user = self::get_akismet_user( $api_key ); - $stat_totals = self::get_stats( $api_key ); - - // If unset, create the new strictness option using the old discard option to determine its default - if ( get_option( 'akismet_strictness' ) === false ) - add_option( 'akismet_strictness', (get_option('akismet_discard_month') === 'true' ? '1' : '0') ); - - if ( empty( self::$notices ) ) { - //show status - if ( ! empty( $stat_totals['all'] ) && isset( $stat_totals['all']->time_saved ) && $akismet_user->status == 'active' && $akismet_user->account_type == 'free-api-key' ) { - - $time_saved = false; - - if ( $stat_totals['all']->time_saved > 1800 ) { - $total_in_minutes = round( $stat_totals['all']->time_saved / 60 ); - $total_in_hours = round( $total_in_minutes / 60 ); - $total_in_days = round( $total_in_hours / 8 ); - $cleaning_up = __( 'Cleaning up spam takes time.' , 'akismet'); - - if ( $total_in_days > 1 ) - $time_saved = $cleaning_up . ' ' . sprintf( __( 'Since you joined us, Akismet has saved you %s days!' , 'akismet'), number_format_i18n( $total_in_days ) ); - elseif ( $total_in_hours > 1 ) - $time_saved = $cleaning_up . ' ' . sprintf( __( 'Since you joined us, Akismet has saved you %d hours!' , 'akismet'), $total_in_hours ); - elseif ( $total_in_minutes >= 30 ) - $time_saved = $cleaning_up . ' ' . sprintf( __( 'Since you joined us, Akismet has saved you %d minutes!' , 'akismet'), $total_in_minutes ); - } - - Akismet::view( 'notice', array( 'type' => 'active-notice', 'time_saved' => $time_saved ) ); - } - - if ( !empty( $akismet_user->limit_reached ) && in_array( $akismet_user->limit_reached, array( 'yellow', 'red' ) ) ) { - Akismet::view( 'notice', array( 'type' => 'limit-reached', 'level' => $akismet_user->limit_reached ) ); - } - } - - if ( !isset( self::$notices['status'] ) && in_array( $akismet_user->status, array( 'cancelled', 'suspended', 'missing', 'no-sub' ) ) ) - Akismet::view( 'notice', array( 'type' => $akismet_user->status ) ); - - Akismet::log( compact( 'stat_totals', 'akismet_user' ) ); - Akismet::view( 'config', compact( 'api_key', 'akismet_user', 'stat_totals' ) ); - } - - public static function display_notice() { - global $hook_suffix; - - if ( in_array( $hook_suffix, array( 'jetpack_page_akismet-key-config', 'settings_page_akismet-key-config', 'edit-comments.php' ) ) && (int) get_option( 'akismet_alert_code' ) > 0 ) { - self::display_alert(); - } - elseif ( $hook_suffix == 'plugins.php' && !Akismet::get_api_key() ) { - self::display_api_key_warning(); - } - elseif ( $hook_suffix == 'edit-comments.php' && wp_next_scheduled( 'akismet_schedule_cron_recheck' ) ) { - self::display_spam_check_warning(); - } - elseif ( in_array( $hook_suffix, array( 'jetpack_page_akismet-key-config', 'settings_page_akismet-key-config' ) ) && Akismet::get_api_key() ) { - self::display_status(); - } - } - - public static function display_status() { - $type = ''; - - if ( !self::get_server_connectivity() ) - $type = 'servers-be-down'; - - if ( !empty( $type ) ) - Akismet::view( 'notice', compact( 'type' ) ); - elseif ( !empty( self::$notices ) ) { - foreach ( self::$notices as $type ) - Akismet::view( 'notice', compact( 'type' ) ); - } - } - - private static function get_jetpack_user() { - if ( !class_exists('Jetpack') ) - return false; - - Jetpack::load_xml_rpc_client(); - $xml = new Jetpack_IXR_ClientMulticall( array( 'user_id' => get_current_user_id() ) ); - - $xml->addCall( 'wpcom.getUserID' ); - $xml->addCall( 'akismet.getAPIKey' ); - $xml->query(); - - Akismet::log( compact( 'xml' ) ); - - if ( !$xml->isError() ) { - $responses = $xml->getResponse(); - if ( count( $responses ) > 1 ) { - $api_key = array_shift( $responses[0] ); - $user_id = (int) array_shift( $responses[1] ); - return compact( 'api_key', 'user_id' ); - } - } - return false; - } - - /** - * Some commentmeta isn't useful in an export file. Suppress it (when supported). - * - * @param bool $exclude - * @param string $key The meta key - * @param object $meta The meta object - * @return bool Whether to exclude this meta entry from the export. - */ - public static function exclude_commentmeta_from_export( $exclude, $key, $meta ) { - if ( in_array( $key, array( 'akismet_as_submitted', 'akismet_rechecking', 'akismet_delayed_moderation_email' ) ) ) { - return true; - } - - return $exclude; - } -} \ No newline at end of file diff --git a/wp-content/plugins/akismet/class.akismet-widget.php b/wp-content/plugins/akismet/class.akismet-widget.php deleted file mode 100644 index a60ae60..0000000 --- a/wp-content/plugins/akismet/class.akismet-widget.php +++ /dev/null @@ -1,110 +0,0 @@ - __( 'Display the number of spam comments Akismet has caught' , 'akismet') ) - ); - - if ( is_active_widget( false, false, $this->id_base ) ) { - add_action( 'wp_head', array( $this, 'css' ) ); - } - } - - function css() { -?> - - - - - -

- - -

- - - - - - $key, 'blog' => get_option('home') ) ), 'verify-key', $ip ); - } - - public static function verify_key( $key, $ip = null ) { - $response = self::check_key_status( $key, $ip ); - - if ( $response[1] != 'valid' && $response[1] != 'invalid' ) - return 'failed'; - - self::update_alert( $response ); - - return $response[1]; - } - - public static function auto_check_comment( $commentdata ) { - self::$last_comment_result = null; - - $comment = $commentdata; - - $comment['user_ip'] = self::get_ip_address(); - $comment['user_agent'] = self::get_user_agent(); - $comment['referrer'] = self::get_referer(); - $comment['blog'] = get_option('home'); - $comment['blog_lang'] = get_locale(); - $comment['blog_charset'] = get_option('blog_charset'); - $comment['permalink'] = get_permalink( $comment['comment_post_ID'] ); - - if ( !empty( $comment['user_ID'] ) ) - $comment['user_role'] = Akismet::get_user_roles( $comment['user_ID'] ); - - $akismet_nonce_option = apply_filters( 'akismet_comment_nonce', get_option( 'akismet_comment_nonce' ) ); - $comment['akismet_comment_nonce'] = 'inactive'; - if ( $akismet_nonce_option == 'true' || $akismet_nonce_option == '' ) { - $comment['akismet_comment_nonce'] = 'failed'; - if ( isset( $_POST['akismet_comment_nonce'] ) && wp_verify_nonce( $_POST['akismet_comment_nonce'], 'akismet_comment_nonce_' . $comment['comment_post_ID'] ) ) - $comment['akismet_comment_nonce'] = 'passed'; - - // comment reply in wp-admin - if ( isset( $_POST['_ajax_nonce-replyto-comment'] ) && check_ajax_referer( 'replyto-comment', '_ajax_nonce-replyto-comment' ) ) - $comment['akismet_comment_nonce'] = 'passed'; - - } - - if ( self::is_test_mode() ) - $comment['is_test'] = 'true'; - - foreach( $_POST as $key => $value ) { - if ( is_string( $value ) ) - $comment["POST_{$key}"] = $value; - } - - $ignore = array( 'HTTP_COOKIE', 'HTTP_COOKIE2', 'PHP_AUTH_PW' ); - - foreach ( $_SERVER as $key => $value ) { - if ( !in_array( $key, $ignore ) && is_string($value) ) - $comment["$key"] = $value; - else - $comment["$key"] = ''; - } - - $post = get_post( $comment['comment_post_ID'] ); - $comment[ 'comment_post_modified_gmt' ] = $post->post_modified_gmt; - - $response = self::http_post( Akismet::build_query( $comment ), 'comment-check' ); - - do_action( 'akismet_comment_check_response', $response ); - - self::update_alert( $response ); - - $commentdata['comment_as_submitted'] = array_intersect_key( $comment, array( 'blog' => '', 'blog_charset' => '', 'blog_lang' => '', 'blog_ua' => '', 'comment_agent' => '', 'comment_author' => '', 'comment_author_IP' => '', 'comment_author_email' => '', 'comment_author_url' => '', 'comment_content' => '', 'comment_date_gmt' => '', 'comment_tags' => '', 'comment_type' => '', 'guid' => '', 'is_test' => '', 'permalink' => '', 'reporter' => '', 'site_domain' => '', 'submit_referer' => '', 'submit_uri' => '', 'user_ID' => '', 'user_agent' => '', 'user_id' => '', 'user_ip' => '' ) ); - $commentdata['akismet_result'] = $response[1]; - - if ( isset( $response[0]['x-akismet-pro-tip'] ) ) - $commentdata['akismet_pro_tip'] = $response[0]['x-akismet-pro-tip']; - - if ( isset( $response[0]['x-akismet-error'] ) ) { - // An error occurred that we anticipated (like a suspended key) and want the user to act on. - // Send to moderation. - self::$last_comment_result = '0'; - } - else if ( 'true' == $response[1] ) { - // akismet_spam_count will be incremented later by comment_is_spam() - self::$last_comment_result = 'spam'; - - $discard = ( isset( $commentdata['akismet_pro_tip'] ) && $commentdata['akismet_pro_tip'] === 'discard' && self::allow_discard() ); - - do_action( 'akismet_spam_caught', $discard ); - - if ( $discard ) { - // akismet_result_spam() won't be called so bump the counter here - if ( $incr = apply_filters('akismet_spam_count_incr', 1) ) - update_option( 'akismet_spam_count', get_option('akismet_spam_count') + $incr ); - $redirect_to = isset( $_SERVER['HTTP_REFERER'] ) ? $_SERVER['HTTP_REFERER'] : get_permalink( $post ); - wp_safe_redirect( esc_url_raw( $redirect_to ) ); - die(); - } - } - - // if the response is neither true nor false, hold the comment for moderation and schedule a recheck - if ( 'true' != $response[1] && 'false' != $response[1] ) { - if ( !current_user_can('moderate_comments') ) { - // Comment status should be moderated - self::$last_comment_result = '0'; - } - if ( function_exists('wp_next_scheduled') && function_exists('wp_schedule_single_event') ) { - if ( !wp_next_scheduled( 'akismet_schedule_cron_recheck' ) ) { - wp_schedule_single_event( time() + 1200, 'akismet_schedule_cron_recheck' ); - } - } - - self::$prevent_moderation_email_for_these_comments[] = $commentdata; - } - - if ( function_exists('wp_next_scheduled') && function_exists('wp_schedule_event') ) { - // WP 2.1+: delete old comments daily - if ( !wp_next_scheduled( 'akismet_scheduled_delete' ) ) - wp_schedule_event( time(), 'daily', 'akismet_scheduled_delete' ); - } - elseif ( (mt_rand(1, 10) == 3) ) { - // WP 2.0: run this one time in ten - self::delete_old_comments(); - } - - self::set_last_comment( $commentdata ); - self::fix_scheduled_recheck(); - - return self::$last_comment; - } - - public static function get_last_comment() { - return self::$last_comment; - } - - public static function set_last_comment( $comment ) { - if ( is_null( $comment ) ) { - self::$last_comment = null; - } - else { - // We filter it here so that it matches the filtered comment data that we'll have to compare against later. - // wp_filter_comment expects comment_author_IP - self::$last_comment = wp_filter_comment( - array_merge( - array( 'comment_author_IP' => self::get_ip_address() ), - $comment - ) - ); - } - } - - // this fires on wp_insert_comment. we can't update comment_meta when auto_check_comment() runs - // because we don't know the comment ID at that point. - public static function auto_check_update_meta( $id, $comment ) { - - // failsafe for old WP versions - if ( !function_exists('add_comment_meta') ) - return false; - - if ( !isset( self::$last_comment['comment_author_email'] ) ) - self::$last_comment['comment_author_email'] = ''; - - // wp_insert_comment() might be called in other contexts, so make sure this is the same comment - // as was checked by auto_check_comment - if ( is_object( $comment ) && !empty( self::$last_comment ) && is_array( self::$last_comment ) ) { - if ( self::matches_last_comment( $comment ) ) { - - load_plugin_textdomain( 'akismet' ); - - // normal result: true or false - if ( self::$last_comment['akismet_result'] == 'true' ) { - update_comment_meta( $comment->comment_ID, 'akismet_result', 'true' ); - self::update_comment_history( $comment->comment_ID, __('Akismet caught this comment as spam', 'akismet'), 'check-spam' ); - if ( $comment->comment_approved != 'spam' ) - self::update_comment_history( $comment->comment_ID, sprintf( __('Comment status was changed to %s', 'akismet'), $comment->comment_approved), 'status-changed'.$comment->comment_approved ); - } - elseif ( self::$last_comment['akismet_result'] == 'false' ) { - update_comment_meta( $comment->comment_ID, 'akismet_result', 'false' ); - self::update_comment_history( $comment->comment_ID, __('Akismet cleared this comment', 'akismet'), 'check-ham' ); - if ( $comment->comment_approved == 'spam' ) { - if ( wp_blacklist_check($comment->comment_author, $comment->comment_author_email, $comment->comment_author_url, $comment->comment_content, $comment->comment_author_IP, $comment->comment_agent) ) - self::update_comment_history( $comment->comment_ID, __('Comment was caught by wp_blacklist_check', 'akismet'), 'wp-blacklisted' ); - else - self::update_comment_history( $comment->comment_ID, sprintf( __('Comment status was changed to %s', 'akismet'), $comment->comment_approved), 'status-changed-'.$comment->comment_approved ); - } - } // abnormal result: error - else { - update_comment_meta( $comment->comment_ID, 'akismet_error', time() ); - self::update_comment_history( $comment->comment_ID, sprintf( __('Akismet was unable to check this comment (response: %s), will automatically retry again later.', 'akismet'), substr(self::$last_comment['akismet_result'], 0, 50)), 'check-error' ); - } - - // record the complete original data as submitted for checking - if ( isset( self::$last_comment['comment_as_submitted'] ) ) - update_comment_meta( $comment->comment_ID, 'akismet_as_submitted', self::$last_comment['comment_as_submitted'] ); - - if ( isset( self::$last_comment['akismet_pro_tip'] ) ) - update_comment_meta( $comment->comment_ID, 'akismet_pro_tip', self::$last_comment['akismet_pro_tip'] ); - } - } - } - - public static function delete_old_comments() { - global $wpdb; - - while( $comment_ids = $wpdb->get_col( $wpdb->prepare( "SELECT comment_id FROM {$wpdb->comments} WHERE DATE_SUB(NOW(), INTERVAL 15 DAY) > comment_date_gmt AND comment_approved = 'spam' LIMIT %d", defined( 'AKISMET_DELETE_LIMIT' ) ? AKISMET_DELETE_LIMIT : 10000 ) ) ) { - if ( empty( $comment_ids ) ) - return; - - $wpdb->queries = array(); - - do_action( 'delete_comment', $comment_ids ); - - $comma_comment_ids = implode( ', ', array_map('intval', $comment_ids) ); - - $wpdb->query("DELETE FROM {$wpdb->comments} WHERE comment_id IN ( $comma_comment_ids )"); - $wpdb->query("DELETE FROM {$wpdb->commentmeta} WHERE comment_id IN ( $comma_comment_ids )"); - - clean_comment_cache( $comment_ids ); - } - - if ( apply_filters( 'akismet_optimize_table', ( mt_rand(1, 5000) == 11), $wpdb->comments ) ) // lucky number - $wpdb->query("OPTIMIZE TABLE {$wpdb->comments}"); - } - - public static function delete_old_comments_meta() { - global $wpdb; - - $interval = apply_filters( 'akismet_delete_commentmeta_interval', 15 ); - - # enfore a minimum of 1 day - $interval = absint( $interval ); - if ( $interval < 1 ) - $interval = 1; - - // akismet_as_submitted meta values are large, so expire them - // after $interval days regardless of the comment status - while ( $comment_ids = $wpdb->get_col( $wpdb->prepare( "SELECT m.comment_id FROM {$wpdb->commentmeta} as m INNER JOIN {$wpdb->comments} as c USING(comment_id) WHERE m.meta_key = 'akismet_as_submitted' AND DATE_SUB(NOW(), INTERVAL %d DAY) > c.comment_date_gmt LIMIT 10000", $interval ) ) ) { - if ( empty( $comment_ids ) ) - return; - - $wpdb->queries = array(); - - foreach ( $comment_ids as $comment_id ) { - delete_comment_meta( $comment_id, 'akismet_as_submitted' ); - } - } - - if ( apply_filters( 'akismet_optimize_table', ( mt_rand(1, 5000) == 11), $wpdb->commentmeta ) ) // lucky number - $wpdb->query("OPTIMIZE TABLE {$wpdb->commentmeta}"); - } - - // how many approved comments does this author have? - public static function get_user_comments_approved( $user_id, $comment_author_email, $comment_author, $comment_author_url ) { - global $wpdb; - - if ( !empty( $user_id ) ) - return (int) $wpdb->get_var( $wpdb->prepare( "SELECT COUNT(*) FROM {$wpdb->comments} WHERE user_id = %d AND comment_approved = 1", $user_id ) ); - - if ( !empty( $comment_author_email ) ) - return (int) $wpdb->get_var( $wpdb->prepare( "SELECT COUNT(*) FROM {$wpdb->comments} WHERE comment_author_email = %s AND comment_author = %s AND comment_author_url = %s AND comment_approved = 1", $comment_author_email, $comment_author, $comment_author_url ) ); - - return 0; - } - - // get the full comment history for a given comment, as an array in reverse chronological order - public static function get_comment_history( $comment_id ) { - - // failsafe for old WP versions - if ( !function_exists('add_comment_meta') ) - return false; - - $history = get_comment_meta( $comment_id, 'akismet_history', false ); - usort( $history, array( 'Akismet', '_cmp_time' ) ); - return $history; - } - - // log an event for a given comment, storing it in comment_meta - public static function update_comment_history( $comment_id, $message, $event=null ) { - global $current_user; - - // failsafe for old WP versions - if ( !function_exists('add_comment_meta') ) - return false; - - $user = ''; - if ( is_object( $current_user ) && isset( $current_user->user_login ) ) - $user = $current_user->user_login; - - $event = array( - 'time' => self::_get_microtime(), - 'message' => $message, - 'event' => $event, - 'user' => $user, - ); - - // $unique = false so as to allow multiple values per comment - $r = add_comment_meta( $comment_id, 'akismet_history', $event, false ); - } - - public static function check_db_comment( $id, $recheck_reason = 'recheck_queue' ) { - global $wpdb; - - $c = $wpdb->get_row( $wpdb->prepare( "SELECT * FROM {$wpdb->comments} WHERE comment_ID = %d", $id ), ARRAY_A ); - if ( !$c ) - return; - - $c['user_ip'] = $c['comment_author_IP']; - $c['user_agent'] = $c['comment_agent']; - $c['referrer'] = ''; - $c['blog'] = get_option('home'); - $c['blog_lang'] = get_locale(); - $c['blog_charset'] = get_option('blog_charset'); - $c['permalink'] = get_permalink($c['comment_post_ID']); - $c['recheck_reason'] = $recheck_reason; - - if ( self::is_test_mode() ) - $c['is_test'] = 'true'; - - $response = self::http_post( Akismet::build_query( $c ), 'comment-check' ); - - return ( is_array( $response ) && ! empty( $response[1] ) ) ? $response[1] : false; - } - - - - public static function transition_comment_status( $new_status, $old_status, $comment ) { - - if ( $new_status == $old_status ) - return; - - # we don't need to record a history item for deleted comments - if ( $new_status == 'delete' ) - return; - - if ( !current_user_can( 'edit_post', $comment->comment_post_ID ) && !current_user_can( 'moderate_comments' ) ) - return; - - if ( defined('WP_IMPORTING') && WP_IMPORTING == true ) - return; - - // if this is present, it means the status has been changed by a re-check, not an explicit user action - if ( get_comment_meta( $comment->comment_ID, 'akismet_rechecking' ) ) - return; - - global $current_user; - $reporter = ''; - if ( is_object( $current_user ) ) - $reporter = $current_user->user_login; - - // Assumption alert: - // We want to submit comments to Akismet only when a moderator explicitly spams or approves it - not if the status - // is changed automatically by another plugin. Unfortunately WordPress doesn't provide an unambiguous way to - // determine why the transition_comment_status action was triggered. And there are several different ways by which - // to spam and unspam comments: bulk actions, ajax, links in moderation emails, the dashboard, and perhaps others. - // We'll assume that this is an explicit user action if certain POST/GET variables exist. - if ( ( isset( $_POST['status'] ) && in_array( $_POST['status'], array( 'spam', 'unspam' ) ) ) || - ( isset( $_POST['spam'] ) && (int) $_POST['spam'] == 1 ) || - ( isset( $_POST['unspam'] ) && (int) $_POST['unspam'] == 1 ) || - ( isset( $_POST['comment_status'] ) && in_array( $_POST['comment_status'], array( 'spam', 'unspam' ) ) ) || - ( isset( $_GET['action'] ) && in_array( $_GET['action'], array( 'spam', 'unspam' ) ) ) || - ( isset( $_POST['action'] ) && in_array( $_POST['action'], array( 'editedcomment' ) ) ) - ) { - if ( $new_status == 'spam' && ( $old_status == 'approved' || $old_status == 'unapproved' || !$old_status ) ) { - return self::submit_spam_comment( $comment->comment_ID ); - } elseif ( $old_status == 'spam' && ( $new_status == 'approved' || $new_status == 'unapproved' ) ) { - return self::submit_nonspam_comment( $comment->comment_ID ); - } - } - - self::update_comment_history( $comment->comment_ID, sprintf( __('%1$s changed the comment status to %2$s', 'akismet'), $reporter, $new_status ), 'status-' . $new_status ); - } - - public static function submit_spam_comment( $comment_id ) { - global $wpdb, $current_user, $current_site; - - $comment_id = (int) $comment_id; - - $comment = $wpdb->get_row( $wpdb->prepare( "SELECT * FROM {$wpdb->comments} WHERE comment_ID = %d", $comment_id ) ); - - if ( !$comment ) // it was deleted - return; - - if ( 'spam' != $comment->comment_approved ) - return; - - // use the original version stored in comment_meta if available - $as_submitted = get_comment_meta( $comment_id, 'akismet_as_submitted', true); - - if ( $as_submitted && is_array( $as_submitted ) && isset( $as_submitted['comment_content'] ) ) - $comment = (object) array_merge( (array)$comment, $as_submitted ); - - $comment->blog = get_bloginfo('url'); - $comment->blog_lang = get_locale(); - $comment->blog_charset = get_option('blog_charset'); - $comment->permalink = get_permalink($comment->comment_post_ID); - - if ( is_object($current_user) ) - $comment->reporter = $current_user->user_login; - - if ( is_object($current_site) ) - $comment->site_domain = $current_site->domain; - - $comment->user_role = ''; - if ( isset( $comment->user_ID ) ) - $comment->user_role = Akismet::get_user_roles( $comment->user_ID ); - - if ( self::is_test_mode() ) - $comment->is_test = 'true'; - - $post = get_post( $comment->comment_post_ID ); - $comment->comment_post_modified_gmt = $post->post_modified_gmt; - - $response = Akismet::http_post( Akismet::build_query( $comment ), 'submit-spam' ); - if ( $comment->reporter ) { - self::update_comment_history( $comment_id, sprintf( __('%s reported this comment as spam', 'akismet'), $comment->reporter ), 'report-spam' ); - update_comment_meta( $comment_id, 'akismet_user_result', 'true' ); - update_comment_meta( $comment_id, 'akismet_user', $comment->reporter ); - } - - do_action('akismet_submit_spam_comment', $comment_id, $response[1]); - } - - public static function submit_nonspam_comment( $comment_id ) { - global $wpdb, $current_user, $current_site; - - $comment_id = (int) $comment_id; - - $comment = $wpdb->get_row( $wpdb->prepare( "SELECT * FROM {$wpdb->comments} WHERE comment_ID = %d", $comment_id ) ); - if ( !$comment ) // it was deleted - return; - - // use the original version stored in comment_meta if available - $as_submitted = get_comment_meta( $comment_id, 'akismet_as_submitted', true); - - if ( $as_submitted && is_array($as_submitted) && isset($as_submitted['comment_content']) ) - $comment = (object) array_merge( (array)$comment, $as_submitted ); - - $comment->blog = get_bloginfo('url'); - $comment->blog_lang = get_locale(); - $comment->blog_charset = get_option('blog_charset'); - $comment->permalink = get_permalink( $comment->comment_post_ID ); - $comment->user_role = ''; - - if ( is_object($current_user) ) - $comment->reporter = $current_user->user_login; - - if ( is_object($current_site) ) - $comment->site_domain = $current_site->domain; - - if ( isset( $comment->user_ID ) ) - $comment->user_role = Akismet::get_user_roles($comment->user_ID); - - if ( Akismet::is_test_mode() ) - $comment->is_test = 'true'; - - $post = get_post( $comment->comment_post_ID ); - $comment->comment_post_modified_gmt = $post->post_modified_gmt; - - $response = self::http_post( Akismet::build_query( $comment ), 'submit-ham' ); - if ( $comment->reporter ) { - self::update_comment_history( $comment_id, sprintf( __('%s reported this comment as not spam', 'akismet'), $comment->reporter ), 'report-ham' ); - update_comment_meta( $comment_id, 'akismet_user_result', 'false' ); - update_comment_meta( $comment_id, 'akismet_user', $comment->reporter ); - } - - do_action('akismet_submit_nonspam_comment', $comment_id, $response[1]); - } - - public static function cron_recheck() { - global $wpdb; - - $api_key = self::get_api_key(); - - $status = self::verify_key( $api_key ); - if ( get_option( 'akismet_alert_code' ) || $status == 'invalid' ) { - // since there is currently a problem with the key, reschedule a check for 6 hours hence - wp_schedule_single_event( time() + 21600, 'akismet_schedule_cron_recheck' ); - return false; - } - - delete_option('akismet_available_servers'); - - $comment_errors = $wpdb->get_col( "SELECT comment_id FROM {$wpdb->commentmeta} WHERE meta_key = 'akismet_error' LIMIT 100" ); - - load_plugin_textdomain( 'akismet' ); - - foreach ( (array) $comment_errors as $comment_id ) { - // if the comment no longer exists, or is too old, remove the meta entry from the queue to avoid getting stuck - $comment = get_comment( $comment_id ); - if ( !$comment || strtotime( $comment->comment_date_gmt ) < strtotime( "-15 days" ) ) { - delete_comment_meta( $comment_id, 'akismet_error' ); - delete_comment_meta( $comment_id, 'akismet_delayed_moderation_email' ); - continue; - } - - add_comment_meta( $comment_id, 'akismet_rechecking', true ); - $status = self::check_db_comment( $comment_id, 'retry' ); - - $msg = ''; - if ( $status == 'true' ) { - $msg = __( 'Akismet caught this comment as spam during an automatic retry.' , 'akismet'); - } elseif ( $status == 'false' ) { - $msg = __( 'Akismet cleared this comment during an automatic retry.' , 'akismet'); - } - - // If we got back a legit response then update the comment history - // other wise just bail now and try again later. No point in - // re-trying all the comments once we hit one failure. - if ( !empty( $msg ) ) { - delete_comment_meta( $comment_id, 'akismet_error' ); - self::update_comment_history( $comment_id, $msg, 'cron-retry' ); - update_comment_meta( $comment_id, 'akismet_result', $status ); - // make sure the comment status is still pending. if it isn't, that means the user has already moved it elsewhere. - $comment = get_comment( $comment_id ); - if ( $comment && 'unapproved' == wp_get_comment_status( $comment_id ) ) { - if ( $status == 'true' ) { - wp_spam_comment( $comment_id ); - } elseif ( $status == 'false' ) { - // comment is good, but it's still in the pending queue. depending on the moderation settings - // we may need to change it to approved. - if ( check_comment($comment->comment_author, $comment->comment_author_email, $comment->comment_author_url, $comment->comment_content, $comment->comment_author_IP, $comment->comment_agent, $comment->comment_type) ) - wp_set_comment_status( $comment_id, 1 ); - else if ( get_comment_meta( $comment_id, 'akismet_delayed_moderation_email', true ) ) - wp_notify_moderator( $comment_id ); - } - } - - delete_comment_meta( $comment_id, 'akismet_delayed_moderation_email' ); - } else { - // If this comment has been pending moderation for longer than MAX_DELAY_BEFORE_MODERATION_EMAIL, - // send a moderation email now. - if ( ( intval( gmdate( 'U' ) ) - strtotime( $comment->comment_date_gmt ) ) < self::MAX_DELAY_BEFORE_MODERATION_EMAIL ) { - delete_comment_meta( $comment_id, 'akismet_delayed_moderation_email' ); - wp_notify_moderator( $comment_id ); - } - - delete_comment_meta( $comment_id, 'akismet_rechecking' ); - wp_schedule_single_event( time() + 1200, 'akismet_schedule_cron_recheck' ); - return; - } - delete_comment_meta( $comment_id, 'akismet_rechecking' ); - } - - $remaining = $wpdb->get_var( "SELECT COUNT(*) FROM {$wpdb->commentmeta} WHERE meta_key = 'akismet_error'" ); - if ( $remaining && !wp_next_scheduled('akismet_schedule_cron_recheck') ) { - wp_schedule_single_event( time() + 1200, 'akismet_schedule_cron_recheck' ); - } - } - - public static function fix_scheduled_recheck() { - $future_check = wp_next_scheduled( 'akismet_schedule_cron_recheck' ); - if ( !$future_check ) { - return; - } - - if ( get_option( 'akismet_alert_code' ) > 0 ) { - return; - } - - $check_range = time() + 1200; - if ( $future_check > $check_range ) { - wp_clear_scheduled_hook( 'akismet_schedule_cron_recheck' ); - wp_schedule_single_event( time() + 300, 'akismet_schedule_cron_recheck' ); - } - } - - public static function add_comment_nonce( $post_id ) { - echo '

'; - wp_nonce_field( 'akismet_comment_nonce_' . $post_id, 'akismet_comment_nonce', FALSE ); - echo '

'; - } - - public static function is_test_mode() { - return defined('AKISMET_TEST_MODE') && AKISMET_TEST_MODE; - } - - public static function allow_discard() { - if ( defined( 'DOING_AJAX' ) && DOING_AJAX ) - return false; - if ( is_user_logged_in() ) - return false; - - return ( get_option( 'akismet_strictness' ) === '1' ); - } - - public static function get_ip_address() { - return isset( $_SERVER['REMOTE_ADDR'] ) ? $_SERVER['REMOTE_ADDR'] : null; - } - - /** - * Do these two comments, without checking the comment_ID, "match"? - * - * @param mixed $comment1 A comment object or array. - * @param mixed $comment2 A comment object or array. - * @return bool Whether the two comments should be treated as the same comment. - */ - private static function comments_match( $comment1, $comment2 ) { - $comment1 = (array) $comment1; - $comment2 = (array) $comment2; - - return ( - isset( $comment1['comment_post_ID'], $comment2['comment_post_ID'] ) - && intval( $comment1['comment_post_ID'] ) == intval( $comment2['comment_post_ID'] ) - && $comment1['comment_author'] == $comment2['comment_author'] - && $comment1['comment_author_email'] == $comment2['comment_author_email'] - ); - } - - // Does the supplied comment match the details of the one most recently stored in self::$last_comment? - public static function matches_last_comment( $comment ) { - if ( is_object( $comment ) ) - $comment = (array) $comment; - - return self::comments_match( self::$last_comment, $comment ); - } - - private static function get_user_agent() { - return isset( $_SERVER['HTTP_USER_AGENT'] ) ? $_SERVER['HTTP_USER_AGENT'] : null; - } - - private static function get_referer() { - return isset( $_SERVER['HTTP_REFERER'] ) ? $_SERVER['HTTP_REFERER'] : null; - } - - // return a comma-separated list of role names for the given user - public static function get_user_roles( $user_id ) { - $roles = false; - - if ( !class_exists('WP_User') ) - return false; - - if ( $user_id > 0 ) { - $comment_user = new WP_User( $user_id ); - if ( isset( $comment_user->roles ) ) - $roles = join( ',', $comment_user->roles ); - } - - if ( is_multisite() && is_super_admin( $user_id ) ) { - if ( empty( $roles ) ) { - $roles = 'super_admin'; - } else { - $comment_user->roles[] = 'super_admin'; - $roles = join( ',', $comment_user->roles ); - } - } - - return $roles; - } - - // filter handler used to return a spam result to pre_comment_approved - public static function last_comment_status( $approved, $comment ) { - // Only do this if it's the correct comment - if ( is_null(self::$last_comment_result) || ! self::matches_last_comment( $comment ) ) { - self::log( "comment_is_spam mismatched comment, returning unaltered $approved" ); - return $approved; - } - - // bump the counter here instead of when the filter is added to reduce the possibility of overcounting - if ( $incr = apply_filters('akismet_spam_count_incr', 1) ) - update_option( 'akismet_spam_count', get_option('akismet_spam_count') + $incr ); - - return self::$last_comment_result; - } - - /** - * If Akismet is temporarily unreachable, we don't want to "spam" the blogger with - * moderation emails for comments that will be automatically cleared or spammed on - * the next retry. - * - * For comments that will be rechecked later, empty the list of email addresses that - * the moderation email would be sent to. - * - * @param array $emails An array of email addresses that the moderation email will be sent to. - * @param int $comment_id The ID of the relevant comment. - * @return array An array of email addresses that the moderation email will be sent to. - */ - public static function disable_moderation_emails_if_unreachable( $emails, $comment_id ) { - if ( ! empty( self::$prevent_moderation_email_for_these_comments ) && ! empty( $emails ) ) { - $comment = get_comment( $comment_id ); - - foreach ( self::$prevent_moderation_email_for_these_comments as $possible_match ) { - if ( self::comments_match( $possible_match, $comment ) ) { - update_comment_meta( $comment_id, 'akismet_delayed_moderation_email', true ); - return array(); - } - } - } - - return $emails; - } - - public static function _cmp_time( $a, $b ) { - return $a['time'] > $b['time'] ? -1 : 1; - } - - public static function _get_microtime() { - $mtime = explode( ' ', microtime() ); - return $mtime[1] + $mtime[0]; - } - - /** - * Make a POST request to the Akismet API. - * - * @param string $request The body of the request. - * @param string $path The path for the request. - * @param string $ip The specific IP address to hit. - * @return array A two-member array consisting of the headers and the response body, both empty in the case of a failure. - */ - public static function http_post( $request, $path, $ip=null ) { - - $akismet_ua = sprintf( 'WordPress/%s | Akismet/%s', $GLOBALS['wp_version'], constant( 'AKISMET_VERSION' ) ); - $akismet_ua = apply_filters( 'akismet_ua', $akismet_ua ); - - $content_length = strlen( $request ); - - $api_key = self::get_api_key(); - $host = self::API_HOST; - - if ( !empty( $api_key ) ) - $host = $api_key.'.'.$host; - - $http_host = $host; - // use a specific IP if provided - // needed by Akismet_Admin::check_server_connectivity() - if ( $ip && long2ip( ip2long( $ip ) ) ) { - $http_host = $ip; - } - - $http_args = array( - 'body' => $request, - 'headers' => array( - 'Content-Type' => 'application/x-www-form-urlencoded; charset=' . get_option( 'blog_charset' ), - 'Host' => $host, - 'User-Agent' => $akismet_ua, - ), - 'httpversion' => '1.0', - 'timeout' => 15 - ); - - $akismet_url = "http://{$http_host}/1.1/{$path}"; - $response = wp_remote_post( $akismet_url, $http_args ); - Akismet::log( compact( 'akismet_url', 'http_args', 'response' ) ); - if ( is_wp_error( $response ) ) - return array( '', '' ); - - return array( $response['headers'], $response['body'] ); - } - - // given a response from an API call like check_key_status(), update the alert code options if an alert is present. - private static function update_alert( $response ) { - $code = $msg = null; - if ( isset( $response[0]['x-akismet-alert-code'] ) ) { - $code = $response[0]['x-akismet-alert-code']; - $msg = $response[0]['x-akismet-alert-msg']; - } - - // only call update_option() if the value has changed - if ( $code != get_option( 'akismet_alert_code' ) ) { - if ( ! $code ) { - delete_option( 'akismet_alert_code' ); - delete_option( 'akismet_alert_msg' ); - } - else { - update_option( 'akismet_alert_code', $code ); - update_option( 'akismet_alert_msg', $msg ); - } - } - } - - public static function load_form_js() { - // WP < 3.3 can't enqueue a script this late in the game and still have it appear in the footer. - // Once we drop support for everything pre-3.3, this can change back to a single enqueue call. - wp_register_script( 'akismet-form', AKISMET__PLUGIN_URL . '_inc/form.js', array(), AKISMET_VERSION, true ); - add_action( 'wp_footer', array( 'Akismet', 'print_form_js' ) ); - add_action( 'admin_footer', array( 'Akismet', 'print_form_js' ) ); - } - - public static function print_form_js() { - wp_print_scripts( 'akismet-form' ); - } - - public static function inject_ak_js( $fields ) { - echo '

'; - echo ''; - echo '

'; - } - - private static function bail_on_activation( $message, $deactivate = true ) { -?> - - - - - - -

- - - $plugin ) { - if ( $plugin === $akismet ) { - $plugins[$i] = false; - $update = true; - } - } - - if ( $update ) { - update_option( 'active_plugins', array_filter( $plugins ) ); - } - } - exit; - } - - public static function view( $name, array $args = array() ) { - $args = apply_filters( 'akismet_view_arguments', $args, $name ); - - foreach ( $args AS $key => $val ) { - $$key = $val; - } - - load_plugin_textdomain( 'akismet' ); - - $file = AKISMET__PLUGIN_DIR . 'views/'. $name . '.php'; - - include( $file ); - } - - /** - * Attached to activate_{ plugin_basename( __FILES__ ) } by register_activation_hook() - * @static - */ - public static function plugin_activation() { - if ( version_compare( $GLOBALS['wp_version'], AKISMET__MINIMUM_WP_VERSION, '<' ) ) { - load_plugin_textdomain( 'akismet' ); - - $message = ''.sprintf(esc_html__( 'Akismet %s requires WordPress %s or higher.' , 'akismet'), AKISMET_VERSION, AKISMET__MINIMUM_WP_VERSION ).' '.sprintf(__('Please upgrade WordPress to a current version, or downgrade to version 2.4 of the Akismet plugin.', 'akismet'), 'https://codex.wordpress.org/Upgrading_WordPress', 'http://wordpress.org/extend/plugins/akismet/download/'); - - Akismet::bail_on_activation( $message ); - } - } - - /** - * Removes all connection options - * @static - */ - public static function plugin_deactivation( ) { - //tidy up - } - - /** - * Essentially a copy of WP's build_query but one that doesn't expect pre-urlencoded values. - * - * @param array $args An array of key => value pairs - * @return string A string ready for use as a URL query string. - */ - public static function build_query( $args ) { - return _http_build_query( $args, '', '&' ); - } - - public static function log( $akismet_debug ) { - if ( defined( 'WP_DEBUG_LOG' ) && WP_DEBUG_LOG ) - error_log( print_r( compact( 'akismet_debug' ), 1 ) ); //send message to debug.log when in debug mode - } -} \ No newline at end of file diff --git a/wp-content/plugins/akismet/index.php b/wp-content/plugins/akismet/index.php deleted file mode 100644 index cf879a5..0000000 --- a/wp-content/plugins/akismet/index.php +++ /dev/null @@ -1,2 +0,0 @@ - - -

- -
- - spam > 0 ) : ?> - -
- - - - - - -
    -
  • -

    - spam );?> - -
  • -
  • -

    - spam );?> - -
  • -
  • -

    - accuracy; ?>% - false_positives , 'akismet') - ), - number_format( $stat_totals['all']->missed_spam ), - number_format( $stat_totals['all']->false_positives ) - ); ?> -
  • -
-
-
- - - - -
- -
-
-
-

-

-
-
- - - - - - - - - - - - - - - - - - - -
- - -
-

- -

-
-
-

-

-
- spam folder older than 15 days is deleted automatically.' , 'akismet'), admin_url( 'edit-comments.php?comment_status=spam' ) );?> -
-
-
- -
- -
- - -
- - - -
-
-
-
-
-
-
-
-
-
-

-

-
- - - - - - - - - - - next_billing_date ) : ?> - - - - - - -
- - account_name; ?> -
- - status ) : - esc_html_e( 'Cancelled', 'akismet' ); - elseif ( 'suspended' == $akismet_user->status ) : - esc_html_e( 'Suspended', 'akismet' ); - elseif ( 'missing' == $akismet_user->status ) : - esc_html_e( 'Missing', 'akismet' ); - elseif ( 'no-sub' == $akismet_user->status ) : - esc_html_e( 'No Subscription Found', 'akismet' ); - else : - esc_html_e( 'Active', 'akismet' ); - endif; ?> -
- - next_billing_date ); ?> -
-
-
-
- ( $akismet_user->account_type == 'free-api-key' && $akismet_user->status == 'active' ? __( 'Upgrade' , 'akismet') : __( 'Change' , 'akismet') ), 'redirect' => 'upgrade' ) ); ?> -
-
-
-
-
-
-
- - - -
-
\ No newline at end of file diff --git a/wp-content/plugins/akismet/views/get.php b/wp-content/plugins/akismet/views/get.php deleted file mode 100644 index 70727f6..0000000 --- a/wp-content/plugins/akismet/views/get.php +++ /dev/null @@ -1,5 +0,0 @@ -
- - - -
\ No newline at end of file diff --git a/wp-content/plugins/akismet/views/notice.php b/wp-content/plugins/akismet/views/notice.php deleted file mode 100644 index 8a1411d..0000000 --- a/wp-content/plugins/akismet/views/notice.php +++ /dev/null @@ -1,102 +0,0 @@ - -
- -
-
-
A
-
-
-
-
-
-
Almost done - activate your account and say goodbye to comment spam', 'akismet');?>
-
-
-
- -
-

-

- -

- -
- -

upgrade WordPress to a current version, or downgrade to version 2.4 of the Akismet plugin.', 'akismet'), 'https://codex.wordpress.org/Upgrading_WordPress', 'https://wordpress.org/extend/plugins/akismet/download/');?>

- -
-

-

-

https://akismet.com/errors/' . $code . '' ); - - ?> -

-
- -
-

-

gethostbynamel functions. Akismet cannot work correctly until this is fixed. Please contact your web host or firewall administrator and give them this information about Akismet’s system requirements.', 'akismet'), 'https://blog.akismet.com/akismet-hosting-faq/'); ?>

-
- -
-

-

our guide about firewalls.', 'akismet'), 'https://blog.akismet.com/akismet-hosting-faq/'); ?>

-
- -
-

-

update your payment details.', 'akismet'), 'https://akismet.com/account/'); ?>

-
- -
-

-

Akismet account page to reactivate your subscription.', 'akismet'), 'https://akismet.com/account/'); ?>

-
- -
-

-

Akismet support for assistance.', 'akismet'), 'https://akismet.com/contact/'); ?>

-
- -
-

-

contributing a token amount.', 'akismet'), 'https://akismet.com/account/upgrade/'); ?>

-
- -
-

-

Akismet support for assistance.', 'akismet'), 'https://akismet.com/contact/'); ?>

-
- -
-

-

sign into your account and choose one. Please contact our support team with any questions.', 'akismet'), 'https://akismet.com/account/upgrade/', 'https://akismet.com/contact/' ); ?>

-
- -
-

-
- -
-

-
- -
-

-
- -
- -

-

upgrade to an Enterprise subscription. If you have any questions, please get in touch with our support team', 'akismet'), 'https://akismet.com/account/upgrade/', 'https://akismet.com/contact/'); ?>

- -

-

upgrade to an Enterprise subscription, which covers an unlimited number of sites. Please contact our support team with any questions.', 'akismet'), 'https://akismet.com/account/upgrade/', 'https://akismet.com/contact/'); ?>

- -
- \ No newline at end of file diff --git a/wp-content/plugins/akismet/views/start.php b/wp-content/plugins/akismet/views/start.php deleted file mode 100644 index 692b8af..0000000 --- a/wp-content/plugins/akismet/views/start.php +++ /dev/null @@ -1,95 +0,0 @@ -
status, array( 'active', 'active-dunning', 'no-sub', 'missing', 'cancelled', 'suspended' ) ) ) : - if ( $akismet_user->status == 'missing' ) :?> -

-
-
- - user_email ); ?> -
-
- - - - -
-
-status == 'cancelled' ) :?> -

-
-
- - user_email ); ?> -
-
- - - - -
-
-status == 'suspended' ) : ?> -

-
- -

user_email ); ?>

-

- -
- -

-
-
- - user_email ); ?> -
-
- - - - -
-
- -
-
- -

-
- __( 'Register a different email address' , 'akismet'), 'classes' => array( 'right', 'button', 'button-secondary' ) ) ); ?> -
-
-
- -

-
-
- - - - -
-
- -

-
-
- -

-
- __( 'Get your API key' , 'akismet'), 'classes' => array( 'right', 'button', 'button-primary' ) ) ); ?> -
-
-
- -

-
-
- - - - -
-
-
\ No newline at end of file diff --git a/wp-content/plugins/akismet/views/stats.php b/wp-content/plugins/akismet/views/stats.php deleted file mode 100644 index 1ca7661..0000000 --- a/wp-content/plugins/akismet/views/stats.php +++ /dev/null @@ -1,4 +0,0 @@ -
-

- -
\ No newline at end of file diff --git a/wp-content/plugins/akismet/views/strict.php b/wp-content/plugins/akismet/views/strict.php deleted file mode 100644 index 3cf197c..0000000 --- a/wp-content/plugins/akismet/views/strict.php +++ /dev/null @@ -1,7 +0,0 @@ - - -
-

-

-
- \ No newline at end of file diff --git a/wp-content/plugins/akismet/wrapper.php b/wp-content/plugins/akismet/wrapper.php deleted file mode 100644 index 12641c7..0000000 --- a/wp-content/plugins/akismet/wrapper.php +++ /dev/null @@ -1,293 +0,0 @@ -