wp/wp-content/plugins/akismet/admin.php
author ymh <ymh.work@gmail.com>
Wed, 06 Nov 2013 03:21:17 +0000
changeset 0 d970ebf37754
permissions -rw-r--r--
first import
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
0
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
     1
<?php
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
     2
add_action( 'admin_menu', 'akismet_admin_menu' );
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
     3
	
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
     4
akismet_admin_warnings();
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
     5
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
     6
function akismet_admin_init() {
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
     7
    global $wp_version;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
     8
    
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
     9
    // all admin functions are disabled in old versions
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    10
    if ( !function_exists('is_multisite') && version_compare( $wp_version, '3.0', '<' ) ) {
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    11
        
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    12
        function akismet_version_warning() {
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    13
            echo '
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    14
            <div id="akismet-warning" class="updated fade"><p><strong>'.sprintf(__('Akismet %s requires WordPress 3.0 or higher.'), AKISMET_VERSION) .'</strong> '.sprintf(__('Please <a href="%s">upgrade WordPress</a> to a current version, or <a href="%s">downgrade to version 2.4 of the Akismet plugin</a>.'), 'http://codex.wordpress.org/Upgrading_WordPress', 'http://wordpress.org/extend/plugins/akismet/download/'). '</p></div>
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    15
            ';
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    16
        }
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    17
        add_action('admin_notices', 'akismet_version_warning'); 
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    18
        
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    19
        return; 
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    20
    }
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    21
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    22
    if ( function_exists( 'get_plugin_page_hook' ) )
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    23
        $hook = get_plugin_page_hook( 'akismet-stats-display', 'index.php' );
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    24
    else
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    25
        $hook = 'dashboard_page_akismet-stats-display';
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    26
    add_meta_box('akismet-status', __('Comment History'), 'akismet_comment_status_meta_box', 'comment', 'normal');
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    27
}
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    28
add_action('admin_init', 'akismet_admin_init');
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    29
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    30
add_action( 'admin_enqueue_scripts', 'akismet_load_js_and_css' );
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    31
function akismet_load_js_and_css() {
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    32
	global $hook_suffix;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    33
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    34
	if ( in_array( $hook_suffix, array( 
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    35
		'index.php', # dashboard
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    36
		'edit-comments.php',
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    37
		'comment.php',
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    38
		'post.php',
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    39
		'plugins_page_akismet-key-config', 
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    40
		'jetpack_page_akismet-key-config',
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    41
	) ) ) {
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    42
		wp_register_style( 'akismet.css', AKISMET_PLUGIN_URL . 'akismet.css', array(), '2.5.9' );
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    43
		wp_enqueue_style( 'akismet.css');
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    44
	
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    45
		wp_register_script( 'akismet.js', AKISMET_PLUGIN_URL . 'akismet.js', array('jquery'), '2.5.9' );
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    46
		wp_enqueue_script( 'akismet.js' );
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    47
		wp_localize_script( 'akismet.js', 'WPAkismet', array(
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    48
			'comment_author_url_nonce' => wp_create_nonce( 'comment_author_url_nonce' )
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    49
		) );
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    50
	}
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    51
}
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    52
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    53
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    54
function akismet_nonce_field($action = -1) { return wp_nonce_field($action); }
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    55
$akismet_nonce = 'akismet-update-key';
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    56
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    57
function akismet_plugin_action_links( $links, $file ) {
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    58
	if ( $file == plugin_basename( dirname(__FILE__).'/akismet.php' ) ) {
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    59
		$links[] = '<a href="' . admin_url( 'admin.php?page=akismet-key-config' ) . '">'.__( 'Settings' ).'</a>';
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    60
	}
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    61
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    62
	return $links;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    63
}
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    64
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    65
add_filter( 'plugin_action_links', 'akismet_plugin_action_links', 10, 2 );
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    66
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    67
function akismet_conf() {
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    68
	global $akismet_nonce, $current_user;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    69
	
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    70
	$new_key_link    = 'https://akismet.com/get/';
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    71
	$config_link     = esc_url( add_query_arg( array( 'page' => 'akismet-key-config', 'show' => 'enter-api-key' ), class_exists( 'Jetpack' ) ? admin_url( 'admin.php' ) : admin_url( 'plugins.php' ) ) );
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    72
	$stats_link      = esc_url( add_query_arg( array( 'page' => 'akismet-stats-display' ), class_exists( 'Jetpack' ) ? admin_url( 'admin.php' ) : admin_url( 'index.php' ) ) );
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    73
	$api_key         = akismet_get_key();
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    74
	$show_key_form   = $api_key;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    75
	$key_status      = 'empty';
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    76
	$saved_ok        = false;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    77
	$key_status_text = '';
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    78
	
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    79
	$ms = array();
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    80
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    81
	if ( isset( $_POST['submit'] ) ) {
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    82
		if ( function_exists('current_user_can') && !current_user_can('manage_options') )
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    83
			die(__('Cheatin&#8217; uh?'));
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    84
			
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    85
		$show_key_form = true;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    86
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    87
		check_admin_referer( $akismet_nonce );
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    88
		$key      = preg_replace( '/[^a-h0-9]/i', '', $_POST['key'] );
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    89
		$home_url = parse_url( get_bloginfo('url') );
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    90
		
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    91
		if ( empty( $home_url['host'] ) )
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    92
			$ms[] = 'bad_home_url';
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    93
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    94
		if ( empty( $key ) ) {
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    95
			if ( $api_key ) {
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    96
				delete_option('wordpress_api_key');
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    97
				$saved_ok = true;			
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    98
				$ms[] = 'new_key_empty';
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    99
			}
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   100
			else
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   101
				$ms[] = 'key_empty';
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   102
		}  
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   103
		else
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   104
			$key_status = akismet_verify_key( $key );		
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   105
		
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   106
		if ( $key != $api_key && $key_status == 'valid' ) {
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   107
			$ms[] = 'new_key_valid';
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   108
			update_option('wordpress_api_key', $key);
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   109
		}
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   110
		elseif ( $key_status == 'invalid' )
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   111
			$ms[] = 'new_key_invalid';
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   112
		elseif ( $key_status == 'failed' )
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   113
			$ms[] = 'new_key_failed';
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   114
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   115
		$api_key = $key_status == 'valid' ? $key : false;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   116
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   117
		if ( isset( $_POST['akismet_discard_month'] ) )
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   118
			update_option( 'akismet_discard_month', 'true' );
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   119
		else
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   120
			update_option( 'akismet_discard_month', 'false' );
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   121
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   122
		if ( isset( $_POST['akismet_show_user_comments_approved'] ) )
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   123
			update_option( 'akismet_show_user_comments_approved', 'true' );
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   124
		else
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   125
			update_option( 'akismet_show_user_comments_approved', 'false' );
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   126
			
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   127
		if ( empty( $ms ) )
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   128
			$saved_ok = true;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   129
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   130
	} 
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   131
	elseif ( isset( $_POST['check'] ) ) {
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   132
		$show_key_form = true;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   133
		check_admin_referer( $akismet_nonce );
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   134
		akismet_get_server_connectivity(0);
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   135
	}
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   136
	elseif ( isset( $_GET['show'] ) && $_GET['show'] == 'enter-api-key' ) {
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   137
		$show_key_form = true;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   138
	}
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   139
	
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   140
	if ( $show_key_form ) {
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   141
		//check current key status
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   142
		//only get this if showing the key form otherwise takes longer for page to load for new user
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   143
		//no need to get it if we already know it and its valid
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   144
		if ( in_array( $key_status, array( 'invalid', 'failed', 'empty' ) ) ) {
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   145
			$key = get_option('wordpress_api_key');
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   146
			if ( empty( $key ) ) {
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   147
				//no key saved yet - maybe connection to Akismet down?
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   148
				if ( in_array( $key_status, array( 'invalid', 'empty' ) ) ) {
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   149
					if ( akismet_verify_key( '1234567890ab' ) == 'failed' )
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   150
						$ms[] = 'no_connection';
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   151
				}
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   152
			} 
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   153
			else
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   154
				$key_status = akismet_verify_key( $key );			
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   155
		}
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   156
		
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   157
		if ( !isset( $_POST['submit'] ) ) {
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   158
			if ( $key_status == 'invalid' )
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   159
				$ms[] = 'key_invalid';
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   160
			elseif ( !empty( $key ) && $key_status == 'failed' )
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   161
				$ms[] = 'key_failed';
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   162
		}
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   163
	}	
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   164
		
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   165
	$key_status_strings = array( 
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   166
	 	'empty'   => __( 'Empty' ), 
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   167
		'valid'   => __( 'Valid' ), 
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   168
		'invalid' => __( 'Invalid' ), 
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   169
		'failed'  => __( 'Failed' ), 
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   170
 	);
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   171
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   172
	$messages = array(
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   173
		'new_key_empty'   => array( 'class' => 'updated fade', 'text' => __('Your key has been cleared.' ) ),
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   174
		'new_key_valid'   => array( 'class' => 'updated fade', 'text' => __('Your Akismet account has been successfully set up and activated. Happy blogging!' ) ),
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   175
		'new_key_invalid' => array( 'class' => 'error',        'text' => __('The key you entered is invalid. Please double-check it.' ) ),
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   176
		'new_key_failed'  => array( 'class' => 'error',        'text' => __('The key you entered could not be verified because a connection to akismet.com could not be established. Please check your server configuration.' ) ),
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   177
		'no_connection'   => array( 'class' => 'error',        'text' => __('There was a problem connecting to the Akismet server. Please check your server configuration.' ) ),
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   178
		'key_empty'       => array( 'class' => 'updated fade', 'text' => __('Please enter an API key' ) ),
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   179
		'key_invalid'     => array( 'class' => 'error',        'text' => __('This key is invalid.' ) ),
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   180
		'key_failed'      => array( 'class' => 'error',        'text' => __('The key below was previously validated but a connection to akismet.com can not be established at this time. Please check your server configuration.' ) ),
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   181
		'bad_home_url'    => array( 'class' => 'error',        'text' => sprintf( __('Your WordPress home URL %s is invalid.  Please fix the <a href="%s">home option</a>.'), esc_html( get_bloginfo('url') ), admin_url('options.php#home') ) )
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   182
	);
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   183
?>
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   184
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   185
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   186
<div class="wrap">
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   187
	<?php if ( !$api_key ) : ?>
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   188
	<h2 class="ak-header"><?php _e('Akismet'); ?></h2>
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   189
	<?php else: ?>
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   190
	<h2 class="ak-header"><?php printf( __( 'Akismet <a href="%s" class="add-new-h2">Stats</a>' ), $stats_link ); ?></h2>
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   191
	<?php endif; ?>
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   192
	<div class="no-key <?php echo $show_key_form ? 'hidden' : '';?>">
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   193
		<p><?php _e('Akismet eliminates the comment and trackback spam you get on your site. To use Akismet you may need to sign up for an API key. Click the button below to get started.'); ?></p>
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   194
		<form name="akismet_activate" action="https://akismet.com/get/" method="POST"> 
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   195
			<input type="hidden" name="return" value="1"/> 
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   196
			<input type="hidden" name="jetpack" value="<?php echo (string) class_exists( 'Jetpack' );?>"/>
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   197
			<input type="hidden" name="user" value="<?php echo esc_attr( $current_user->user_login );?>"/>
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   198
			<input type="submit" class="button button-primary" value="<?php esc_attr_e( 'Create a new Akismet Key' ); ?>"/>
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   199
		</form>
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   200
		<br/>
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   201
		<a href="<?php echo $config_link;?>"><?php _e('I already have a key'); ?></a>
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   202
	</div>
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   203
	<div class="have-key <?php echo $show_key_form ? '' : 'hidden';?>">
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   204
		<?php if ( !empty($_POST['submit'] ) && $saved_ok ) : ?>
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   205
		<div id="message" class="updated fade"><p><strong><?php _e('Settings saved.') ?></strong></p></div>
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   206
		<?php endif; ?>
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   207
		<?php if ( isset($_GET['message']) && $_GET['message'] == 'success' ) : ?>
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   208
		<div id="message" class="updated fade"><p><?php _e('<strong>Sign up success!</strong> Please check your email for your Akismet API Key and enter it below.') ?></p></div>
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   209
		<?php endif; ?>
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   210
		<?php foreach( $ms as $m ) : ?>
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   211
		<div class="<?php echo $messages[$m]['class']; ?>"><p><strong><?php echo $messages[$m]['text']; ?></strong></p></div>
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   212
		<?php endforeach; ?>		
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   213
		<form action="" method="post" id="akismet-conf">
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   214
			<table class="form-table">
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   215
				<tbody>
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   216
					<tr>
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   217
						<th><label for="key"><?php _e('Akismet API Key');?></label></th>
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   218
						<td>
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   219
							<input id="key" name="key" type="text" size="15" maxlength="12" value="<?php echo esc_attr( get_option('wordpress_api_key') ); ?>" class="regular-text code <?php echo $key_status;?>"><div class="under-input key-status <?php echo $key_status;?>"><?php echo isset( $key_status_strings[ $key_status ] ) ? $key_status_strings[ $key_status ] : '';?></div>
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   220
							<p class="need-key description"><?php printf( __('You must enter a valid Akismet API key here. If you need an API key, you can <a href="%s">create one here</a>'), '#' );?></p>
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   221
						</td>
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   222
					</tr>
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   223
					<?php if ( $api_key ):?>
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   224
					<tr valign="top">
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   225
						<th scope="row"><?php _e('Settings');?></th>
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   226
						<td>
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   227
							<fieldset><legend class="screen-reader-text"><span><?php _e('Settings');?></span></legend>
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   228
							<label for="akismet_discard_month" title="<?php esc_attr_e( 'Auto-detete old spam' ); ?>"><input name="akismet_discard_month" id="akismet_discard_month" value="true" type="checkbox" <?php echo get_option('akismet_discard_month') == 'true' ? 'checked="checked"':''; ?>> <span><?php _e('Auto-delete spam submitted on posts more than a month old.'); ?></span></label><br>
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   229
							<label for="akismet_show_user_comments_approved" title="<?php esc_attr_e( 'Show approved comments' ); ?>"><input name="akismet_show_user_comments_approved" id="akismet_show_user_comments_approved" value="true" type="checkbox" <?php echo get_option('akismet_show_user_comments_approved') == 'true' ? 'checked="checked"':''; ?>> <span><?php _e('Show the number of comments you\'ve approved beside each comment author.'); ?></span></label>
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   230
							</fieldset>
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   231
						</td>
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   232
					</tr>
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   233
					<?php endif; ?>
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   234
				</tbody>
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   235
			</table>
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   236
			<?php akismet_nonce_field($akismet_nonce) ?>
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   237
			<p class="submit">
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   238
				<input type="submit" name="submit" id="submit" class="button button-primary" value="<?php _e('Save Changes');?>">
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   239
			</p>
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   240
		</form>	
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   241
		
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   242
		<?php if ( $api_key ) : ?>
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   243
		<h3><?php _e('Server Connectivity'); ?></h3>
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   244
		<form action="" method="post" id="akismet-connectivity">
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   245
			<table class="form-table">
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   246
				<tbody>
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   247
					<tr>
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   248
						<th><label for="key"><?php _e('Server Status');?></label></th>
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   249
						<td>
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   250
						<?php if ( !function_exists('fsockopen') || !function_exists('gethostbynamel') ) : ?>
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   251
							<p class="key-status failed"><?php _e('Network functions are disabled.'); ?></p>
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   252
							<p class="description"><?php echo sprintf( __('Your web host or server administrator has disabled PHP\'s <code>fsockopen</code> or <code>gethostbynamel</code> functions.  <strong>Akismet cannot work correctly until this is fixed.</strong>  Please contact your web host or firewall administrator and give them <a href="%s" target="_blank">this information about Akismet\'s system requirements</a>.'), 'http://blog.akismet.com/akismet-hosting-faq/'); ?></p>
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   253
							<?php else :
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   254
									$servers    = akismet_get_server_connectivity();
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   255
									$fail_count = count( $servers ) - count( array_filter( $servers ) );
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   256
									if ( is_array( $servers ) && count( $servers ) > 0 ) { 
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   257
										if ( $fail_count > 0 && $fail_count < count( $servers ) ) { // some connections work, some fail ?>
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   258
							<p class="key-status some"><?php _e('Unable to reach some Akismet servers.'); ?></p>
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   259
							<p class="description"><?php echo sprintf( __('A network problem or firewall is blocking some connections from your web server to Akismet.com.  Akismet is working but this may cause problems during times of network congestion.  Please contact your web host or firewall administrator and give them <a href="%s" target="_blank">this information about Akismet and firewalls</a>.'), 'http://blog.akismet.com/akismet-hosting-faq/'); ?></p>
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   260
									<?php } elseif ( $fail_count > 0 ) { // all connections fail ?>
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   261
							<p class="key-status failed"><?php _e('Unable to reach any Akismet servers.'); ?></p>
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   262
							<p class="description"><?php echo sprintf( __('A network problem or firewall is blocking all connections from your web server to Akismet.com.  <strong>Akismet cannot work correctly until this is fixed.</strong>  Please contact your web host or firewall administrator and give them <a href="%s" target="_blank">this information about Akismet and firewalls</a>.'), 'http://blog.akismet.com/akismet-hosting-faq/'); ?></p>
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   263
									<?php } else { // all connections work ?>
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   264
							<p class="key-status valid"><?php  _e('All Akismet servers are available.'); ?></p>
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   265
							<p class="description"><?php _e('Akismet is working correctly.  All servers are accessible.'); ?></p>
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   266
									<?php }
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   267
									} else { //can't connect to any server ?>
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   268
							<p class="key-status failed"><?php _e('Unable to find Akismet servers.'); ?></p>
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   269
							<p class="description"><?php echo sprintf( __('A DNS problem or firewall is preventing all access from your web server to Akismet.com.  <strong>Akismet cannot work correctly until this is fixed.</strong>  Please contact your web host or firewall administrator and give them <a href="%s" target="_blank">this information about Akismet and firewalls</a>.'), 'http://blog.akismet.com/akismet-hosting-faq/'); ?></p>
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   270
								<?php }
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   271
							endif; ?>							
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   272
						</td>
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   273
					</tr>
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   274
					<?php if ( !empty( $servers ) ) : ?>
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   275
					<tr valign="top">
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   276
						<th scope="row"><?php _e('Network Status');?></th>
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   277
						<td>
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   278
							<table class="network-status">
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   279
								<thead>
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   280
										<th><?php _e('Akismet server'); ?></th><th><?php _e('Network Status'); ?></th>
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   281
								</thead>
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   282
								<tbody>
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   283
								<?php
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   284
										asort($servers);
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   285
										foreach ( $servers as $ip => $status ) : ?>
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   286
										<tr>
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   287
											<td align="center"><?php echo esc_html( $ip ); ?></td>
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   288
											<td class="key-status <?php echo $status ? 'valid' : 'failed'; ?>"><?php echo $status ? __('Accessible') : __('Re-trying'); ?></td>
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   289
										</tr>										
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   290
									<?php endforeach; ?>
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   291
								</tbody>
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   292
							</table>
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   293
							<br/>
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   294
							<input type="submit" name="check" id="submit" class="button" style="margin-left: 13.3em;" value="<?php _e('Check Network Status');?>">
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   295
						</td>
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   296
					</tr>
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   297
					<?php endif; ?>
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   298
					<tr valign="top">
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   299
						<th scope="row"><?php _e('Last Checked');?></th>
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   300
						<td>
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   301
							<p><strong><?php echo get_option('akismet_connectivity_time') ? sprintf( __('%s Ago'), ucwords( human_time_diff( get_option('akismet_connectivity_time') ) ) ) : __( 'Not yet' ); ?></strong></p>
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   302
							<p class="description"><?php printf( __('You can confirm that Akismet.com is up by <a href="%s" target="_blank">clicking here</a>.'), 'http://status.automattic.com/9931/136079/Akismet-API' ); ?></p>
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   303
						</td>
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   304
				</tbody>
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   305
			</table>
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   306
			<?php akismet_nonce_field($akismet_nonce) ?>
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   307
		</form>
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   308
		<?php endif;?>
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   309
	</div>
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   310
</div>
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   311
<?php
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   312
}
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   313
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   314
function akismet_stats_display() {
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   315
	global $akismet_api_host, $akismet_api_port;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   316
	
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   317
	$blog        = urlencode( get_bloginfo('url') );
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   318
	$api_key     = akismet_get_key();
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   319
	$config_link = esc_url( add_query_arg( array( 'page' => 'akismet-key-config' ), class_exists( 'Jetpack' ) ? admin_url( 'admin.php' ) : admin_url( 'plugins.php' ) ) );?>
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   320
	
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   321
<div class="wrap"><?php	
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   322
	if ( !$api_key ) :?>
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   323
	<div id="akismet-warning" class="updated fade"><p><strong><?php _e('Akismet is almost ready.');?></strong> <?php printf( __( 'You must <a href="%1$s">enter your Akismet API key</a> for it to work.' ), $config_link );?></p></div><?php
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   324
	else :?>
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   325
	<iframe src="<?php echo esc_url( sprintf( '%s://akismet.com/web/1.0/user-stats.php?blog=%s&api_key=%s', is_ssl()?'https':'http', $blog, $api_key ) ); ?>" width="100%" height="2500px" frameborder="0" id="akismet-stats-frame"></iframe><?php
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   326
	endif;?>
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   327
</div><?php
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   328
}
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   329
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   330
function akismet_stats() {
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   331
	if ( !function_exists('did_action') || did_action( 'rightnow_end' ) ) // We already displayed this info in the "Right Now" section
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   332
		return;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   333
	if ( !$count = get_option('akismet_spam_count') )
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   334
		return;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   335
	$path = plugin_basename(__FILE__);
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   336
	echo '<h3>' . _x( 'Spam', 'comments' ) . '</h3>';
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   337
	global $submenu;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   338
	if ( isset( $submenu['edit-comments.php'] ) )
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   339
		$link = 'edit-comments.php';
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   340
	else
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   341
		$link = 'edit.php';
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   342
	echo '<p>'.sprintf( _n( '<a href="%1$s">Akismet</a> has protected your site from <a href="%2$s">%3$s spam comments</a>.', '<a href="%1$s">Akismet</a> has protected your site from <a href="%2$s">%3$s spam comments</a>.', $count ), 'http://akismet.com/?return=true', clean_url("$link?page=akismet-admin"), number_format_i18n($count) ).'</p>';
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   343
}
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   344
add_action('activity_box_end', 'akismet_stats');
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   345
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   346
function akismet_admin_warnings() {
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   347
	global $wpcom_api_key, $pagenow;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   348
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   349
	if (
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   350
		$pagenow == 'edit-comments.php'
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   351
		|| ( !empty( $_GET['page'] ) && $_GET['page'] == 'akismet-key-config' )
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   352
		|| ( !empty( $_GET['page'] ) && $_GET['page'] == 'akismet-stats-display' )
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   353
	) {
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   354
		if ( get_option( 'akismet_alert_code' ) ) {
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   355
			function akismet_alert() {
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   356
				$alert = array(
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   357
					'code' => (int) get_option( 'akismet_alert_code' ),
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   358
					'msg' => get_option( 'akismet_alert_msg' )
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   359
				);
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   360
			?>
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   361
				<div class='error'>
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   362
					<p><strong><?php _e( 'Akismet Error Code');?>: <?php echo $alert['code']; ?></strong></p>
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   363
					<p><?php esc_html_e( $alert['msg'] ); ?></p>
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   364
					<p><?php //FIXME: need to revert this to using __() in next version
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   365
						printf( translate( 'For more information:' ) . ' <a href="%s">%s</a>' , 'https://akismet.com/errors/'.$alert['code'], 'https://akismet.com/errors/'.$alert['code'] );?>
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   366
					</p>
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   367
				</div>
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   368
			<?php
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   369
			}
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   370
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   371
			add_action( 'admin_notices', 'akismet_alert' );
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   372
		}
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   373
	}
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   374
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   375
	if ( !get_option('wordpress_api_key') && !$wpcom_api_key && !isset($_POST['submit']) ) {
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   376
		function akismet_warning() {
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   377
			global $hook_suffix, $current_user;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   378
				
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   379
			if ( $hook_suffix == 'plugins.php' ) {              
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   380
               	echo '  
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   381
				<div class="updated" style="padding: 0; margin: 0; border: none; background: none;">  
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   382
					<style type="text/css">  
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   383
.akismet_activate{min-width:825px;border:1px solid #4F800D;padding:5px;margin:15px 0;background:#83AF24;background-image:-webkit-gradient(linear,0% 0,80% 100%,from(#83AF24),to(#4F800D));background-image:-moz-linear-gradient(80% 100% 120deg,#4F800D,#83AF24);-moz-border-radius:3px;border-radius:3px;-webkit-border-radius:3px;position:relative;overflow:hidden}.akismet_activate .aa_a{position:absolute;top:-5px;right:10px;font-size:140px;color:#769F33;font-family:Georgia, "Times New Roman", Times, serif;z-index:1}.akismet_activate .aa_button{font-weight:bold;border:1px solid #029DD6;border-top:1px solid #06B9FD;font-size:15px;text-align:center;padding:9px 0 8px 0;color:#FFF;background:#029DD6;background-image:-webkit-gradient(linear,0% 0,0% 100%,from(#029DD6),to(#0079B1));background-image:-moz-linear-gradient(0% 100% 90deg,#0079B1,#029DD6);-moz-border-radius:2px;border-radius:2px;-webkit-border-radius:2px}.akismet_activate .aa_button:hover{text-decoration:none !important;border:1px solid #029DD6;border-bottom:1px solid #00A8EF;font-size:15px;text-align:center;padding:9px 0 8px 0;color:#F0F8FB;background:#0079B1;background-image:-webkit-gradient(linear,0% 0,0% 100%,from(#0079B1),to(#0092BF));background-image:-moz-linear-gradient(0% 100% 90deg,#0092BF,#0079B1);-moz-border-radius:2px;border-radius:2px;-webkit-border-radius:2px}.akismet_activate .aa_button_border{border:1px solid #006699;-moz-border-radius:2px;border-radius:2px;-webkit-border-radius:2px;background:#029DD6;background-image:-webkit-gradient(linear,0% 0,0% 100%,from(#029DD6),to(#0079B1));background-image:-moz-linear-gradient(0% 100% 90deg,#0079B1,#029DD6)}.akismet_activate .aa_button_container{cursor:pointer;display:inline-block;background:#DEF1B8;padding:5px;-moz-border-radius:2px;border-radius:2px;-webkit-border-radius:2px;width:266px}.akismet_activate .aa_description{position:absolute;top:22px;left:285px;margin-left:25px;color:#E5F2B1;font-size:15px;z-index:1000}.akismet_activate .aa_description strong{color:#FFF;font-weight:normal}
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   384
					</style>                       
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   385
					<form name="akismet_activate" action="'.esc_url( add_query_arg( array( 'page' => 'akismet-key-config' ), class_exists( 'Jetpack' ) ? admin_url( 'admin.php' ) : admin_url( 'plugins.php' ) ) ).'" method="POST"> 
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   386
						<input type="hidden" name="return" value="1"/>
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   387
						<input type="hidden" name="jetpack" value="'.(string) class_exists( 'Jetpack' ).'"/>
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   388
						<input type="hidden" name="user" value="'.esc_attr( $current_user->user_login ).'"/>
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   389
						<div class="akismet_activate">  
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   390
							<div class="aa_a">A</div>     
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   391
							<div class="aa_button_container" onclick="document.akismet_activate.submit();">  
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   392
								<div class="aa_button_border">          
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   393
									<div class="aa_button">'.__('Activate your Akismet account').'</div>  
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   394
								</div>  
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   395
							</div>  
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   396
							<div class="aa_description">'.__('<strong>Almost done</strong> - activate your account and say goodbye to comment spam').'</div>  
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   397
						</div>  
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   398
					</form>  
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   399
				</div>  
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   400
               ';      
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   401
   			}
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   402
		}
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   403
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   404
		add_action('admin_notices', 'akismet_warning');
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   405
		return;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   406
	} elseif ( ( empty($_SERVER['SCRIPT_FILENAME']) || basename($_SERVER['SCRIPT_FILENAME']) == 'edit-comments.php' ) &&  wp_next_scheduled('akismet_schedule_cron_recheck') ) {
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   407
		function akismet_warning() {
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   408
			global $wpdb;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   409
				akismet_fix_scheduled_recheck();
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   410
				$waiting = $wpdb->get_var( "SELECT COUNT(*) FROM $wpdb->commentmeta WHERE meta_key = 'akismet_error'" );
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   411
				$next_check = wp_next_scheduled('akismet_schedule_cron_recheck');
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   412
				if ( $waiting > 0 && $next_check > time() )
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   413
					echo '
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   414
			<div id="akismet-warning" class="updated fade"><p><strong>'.__('Akismet has detected a problem.').'</strong> '.sprintf(__('Some comments have not yet been checked for spam by Akismet. They have been temporarily held for moderation. Please check your <a href="%s">Akismet configuration</a> and contact your web host if problems persist.'), 'admin.php?page=akismet-key-config').'</p></div>
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   415
			';
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   416
		}
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   417
		add_action('admin_notices', 'akismet_warning');
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   418
		return;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   419
	}
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   420
}
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   421
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   422
// FIXME placeholder
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   423
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   424
function akismet_comment_row_action( $a, $comment ) {
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   425
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   426
	// failsafe for old WP versions
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   427
	if ( !function_exists('add_comment_meta') )
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   428
		return $a;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   429
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   430
	$akismet_result = get_comment_meta( $comment->comment_ID, 'akismet_result', true );
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   431
	$akismet_error  = get_comment_meta( $comment->comment_ID, 'akismet_error', true );
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   432
	$user_result    = get_comment_meta( $comment->comment_ID, 'akismet_user_result', true);
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   433
	$comment_status = wp_get_comment_status( $comment->comment_ID );
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   434
	$desc = null;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   435
	if ( $akismet_error ) {
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   436
		$desc = __( 'Awaiting spam check' );
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   437
	} elseif ( !$user_result || $user_result == $akismet_result ) {
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   438
		// Show the original Akismet result if the user hasn't overridden it, or if their decision was the same
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   439
		if ( $akismet_result == 'true' && $comment_status != 'spam' && $comment_status != 'trash' )
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   440
			$desc = __( 'Flagged as spam by Akismet' );
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   441
		elseif ( $akismet_result == 'false' && $comment_status == 'spam' )
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   442
			$desc = __( 'Cleared by Akismet' );
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   443
	} else {
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   444
		$who = get_comment_meta( $comment->comment_ID, 'akismet_user', true );
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   445
		if ( $user_result == 'true' )
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   446
			$desc = sprintf( __('Flagged as spam by %s'), $who );
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   447
		else
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   448
			$desc = sprintf( __('Un-spammed by %s'), $who );
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   449
	}
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   450
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   451
	// add a History item to the hover links, just after Edit
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   452
	if ( $akismet_result ) {
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   453
		$b = array();
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   454
		foreach ( $a as $k => $item ) {
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   455
			$b[ $k ] = $item;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   456
			if (
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   457
				$k == 'edit'
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   458
				|| ( $k == 'unspam' && $GLOBALS['wp_version'] >= 3.4 )
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   459
			) {
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   460
				$b['history'] = '<a href="comment.php?action=editcomment&amp;c='.$comment->comment_ID.'#akismet-status" title="'. esc_attr__( 'View comment history' ) . '"> '. __('History') . '</a>';
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   461
			}
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   462
		}
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   463
		
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   464
		$a = $b;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   465
	}
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   466
		
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   467
	if ( $desc )
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   468
		echo '<span class="akismet-status" commentid="'.$comment->comment_ID.'"><a href="comment.php?action=editcomment&amp;c='.$comment->comment_ID.'#akismet-status" title="' . esc_attr__( 'View comment history' ) . '">'.esc_html( $desc ).'</a></span>';
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   469
		
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   470
	if ( apply_filters( 'akismet_show_user_comments_approved', get_option('akismet_show_user_comments_approved') ) == 'true' ) {
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   471
		$comment_count = akismet_get_user_comments_approved( $comment->user_id, $comment->comment_author_email, $comment->comment_author, $comment->comment_author_url );
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   472
		$comment_count = intval( $comment_count );
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   473
		echo '<span class="akismet-user-comment-count" commentid="'.$comment->comment_ID.'" style="display:none;"><br><span class="akismet-user-comment-counts">'.sprintf( _n( '%s approved', '%s approved', $comment_count ), number_format_i18n( $comment_count ) ) . '</span></span>';
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   474
	}
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   475
	
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   476
	return $a;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   477
}
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   478
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   479
add_filter( 'comment_row_actions', 'akismet_comment_row_action', 10, 2 );
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   480
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   481
function akismet_comment_status_meta_box($comment) {
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   482
	$history = akismet_get_comment_history( $comment->comment_ID );
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   483
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   484
	if ( $history ) {
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   485
		echo '<div class="akismet-history" style="margin: 13px;">';
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   486
		foreach ( $history as $row ) {
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   487
			$time = date( 'D d M Y @ h:i:m a', $row['time'] ) . ' GMT';
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   488
			echo '<div style="margin-bottom: 13px;"><span style="color: #999;" alt="' . $time . '" title="' . $time . '">' . sprintf( __('%s ago'), human_time_diff( $row['time'] ) ) . '</span> - ';
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   489
			echo esc_html( $row['message'] ) . '</div>';
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   490
		}
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   491
		
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   492
		echo '</div>';
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   493
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   494
	}
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   495
}
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   496
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   497
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   498
// add an extra column header to the comments screen
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   499
function akismet_comments_columns( $columns ) {
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   500
	$columns[ 'akismet' ] = __( 'Akismet' );
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   501
	return $columns;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   502
}
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   503
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   504
#add_filter( 'manage_edit-comments_columns', 'akismet_comments_columns' );
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   505
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   506
// Show stuff in the extra column
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   507
function akismet_comment_column_row( $column, $comment_id ) {
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   508
	if ( $column != 'akismet' )
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   509
		return;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   510
		
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   511
	$history = akismet_get_comment_history( $comment_id );
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   512
	
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   513
	if ( $history ) {
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   514
		echo '<dl class="akismet-history">';
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   515
		foreach ( $history as $row ) {
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   516
			echo '<dt>' . sprintf( __('%s ago'), human_time_diff( $row['time'] ) ) . '</dt>';
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   517
			echo '<dd>' . esc_html( $row['message'] ) . '</dd>';
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   518
		}
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   519
		
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   520
		echo '</dl>';
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   521
	}
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   522
}
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   523
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   524
#add_action( 'manage_comments_custom_column', 'akismet_comment_column_row', 10, 2 );
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   525
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   526
// END FIXME
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   527
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   528
// call out URLS in comments
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   529
function akismet_text_add_link_callback( $m ) {	
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   530
	// bare link?
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   531
	if ( $m[4] == $m[2] )
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   532
		return '<a '.$m[1].' href="'.$m[2].'" '.$m[3].' class="comment-link">'.$m[4].'</a>';
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   533
	else
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   534
	    return '<span title="'.$m[2].'" class="comment-link"><a '.$m[1].' href="'.$m[2].'" '.$m[3].' class="comment-link">'.$m[4].'</a></span>';
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   535
}
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   536
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   537
function akismet_text_add_link_class( $comment_text ) {
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   538
	return preg_replace_callback( '#<a ([^>]*)href="([^"]+)"([^>]*)>(.*?)</a>#i', 'akismet_text_add_link_callback', $comment_text );
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   539
}
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   540
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   541
add_filter('comment_text', 'akismet_text_add_link_class');
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   542
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   543
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   544
// WP 2.5+
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   545
function akismet_rightnow() {
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   546
	global $submenu, $wp_db_version;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   547
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   548
	if ( 8645 < $wp_db_version  ) // 2.7
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   549
		$link = 'edit-comments.php?comment_status=spam';
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   550
	elseif ( isset( $submenu['edit-comments.php'] ) )
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   551
		$link = 'edit-comments.php?page=akismet-admin';
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   552
	else
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   553
		$link = 'edit.php?page=akismet-admin';
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   554
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   555
	if ( $count = get_option('akismet_spam_count') ) {
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   556
		$intro = sprintf( _n(
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   557
			'<a href="%1$s">Akismet</a> has protected your site from %2$s spam comment already. ',
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   558
			'<a href="%1$s">Akismet</a> has protected your site from %2$s spam comments already. ',
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   559
			$count
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   560
		), 'http://akismet.com/?return=true', number_format_i18n( $count ) );
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   561
	} else {
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   562
		$intro = sprintf( __('<a href="%1$s">Akismet</a> blocks spam from getting to your blog. '), 'http://akismet.com/?return=true' );
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   563
	}
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   564
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   565
	$link = function_exists( 'esc_url' ) ? esc_url( $link ) : clean_url( $link );
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   566
	if ( $queue_count = akismet_spam_count() ) {
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   567
		$queue_text = sprintf( _n(
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   568
			'There\'s <a href="%2$s">%1$s comment</a> in your spam queue right now.',
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   569
			'There are <a href="%2$s">%1$s comments</a> in your spam queue right now.',
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   570
			$queue_count
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   571
		), number_format_i18n( $queue_count ), $link );
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   572
	} else {
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   573
		$queue_text = sprintf( __( "There's nothing in your <a href='%1\$s'>spam queue</a> at the moment." ), $link );
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   574
	}
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   575
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   576
	$text = $intro . '<br />' . $queue_text;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   577
	echo "<p class='akismet-right-now'>$text</p>\n";
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   578
}
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   579
	
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   580
add_action('rightnow_end', 'akismet_rightnow');
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   581
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   582
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   583
// For WP >= 2.5
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   584
function akismet_check_for_spam_button($comment_status) {
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   585
	if ( 'approved' == $comment_status )
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   586
		return;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   587
	if ( function_exists('plugins_url') )
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   588
		$link = 'admin.php?action=akismet_recheck_queue';
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   589
	else
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   590
		$link = 'edit-comments.php?page=akismet-admin&amp;recheckqueue=true&amp;noheader=true';
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   591
	echo "</div><div class='alignleft'><a class='button-secondary checkforspam' href='$link'>" . __('Check for Spam') . "</a>";
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   592
}
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   593
add_action('manage_comments_nav', 'akismet_check_for_spam_button');
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   594
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   595
function akismet_submit_nonspam_comment ( $comment_id ) {
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   596
	global $wpdb, $akismet_api_host, $akismet_api_port, $current_user, $current_site;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   597
	$comment_id = (int) $comment_id;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   598
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   599
	$comment = $wpdb->get_row("SELECT * FROM $wpdb->comments WHERE comment_ID = '$comment_id'");
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   600
	if ( !$comment ) // it was deleted
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   601
		return;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   602
		
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   603
	// use the original version stored in comment_meta if available	
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   604
	$as_submitted = get_comment_meta( $comment_id, 'akismet_as_submitted', true);
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   605
	if ( $as_submitted && is_array($as_submitted) && isset($as_submitted['comment_content']) ) {
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   606
		$comment = (object) array_merge( (array)$comment, $as_submitted );
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   607
	}
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   608
	
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   609
	$comment->blog = get_bloginfo('url');
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   610
	$comment->blog_lang = get_locale();
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   611
	$comment->blog_charset = get_option('blog_charset');
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   612
	$comment->permalink = get_permalink($comment->comment_post_ID);
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   613
	if ( is_object($current_user) ) {
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   614
	    $comment->reporter = $current_user->user_login;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   615
	}
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   616
	if ( is_object($current_site) ) {
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   617
		$comment->site_domain = $current_site->domain;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   618
	}
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   619
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   620
	$comment->user_role = '';
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   621
	if ( isset( $comment->user_ID ) )
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   622
		$comment->user_role = akismet_get_user_roles($comment->user_ID);
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   623
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   624
	if ( akismet_test_mode() )
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   625
		$comment->is_test = 'true';
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   626
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   627
	$post = get_post( $comment->comment_post_ID );
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   628
	$comment->comment_post_modified_gmt = $post->post_modified_gmt;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   629
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   630
	$query_string = '';
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   631
	foreach ( $comment as $key => $data )
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   632
		$query_string .= $key . '=' . urlencode( stripslashes($data) ) . '&';
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   633
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   634
	$response = akismet_http_post($query_string, $akismet_api_host, "/1.1/submit-ham", $akismet_api_port);
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   635
	if ( $comment->reporter ) {
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   636
		akismet_update_comment_history( $comment_id, sprintf( __('%s reported this comment as not spam'), $comment->reporter ), 'report-ham' );
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   637
		update_comment_meta( $comment_id, 'akismet_user_result', 'false' );
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   638
		update_comment_meta( $comment_id, 'akismet_user', $comment->reporter );
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   639
	}
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   640
	
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   641
	do_action('akismet_submit_nonspam_comment', $comment_id, $response[1]);
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   642
}
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   643
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   644
function akismet_submit_spam_comment ( $comment_id ) {
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   645
	global $wpdb, $akismet_api_host, $akismet_api_port, $current_user, $current_site;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   646
	$comment_id = (int) $comment_id;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   647
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   648
	$comment = $wpdb->get_row("SELECT * FROM $wpdb->comments WHERE comment_ID = '$comment_id'");
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   649
	if ( !$comment ) // it was deleted
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   650
		return;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   651
	if ( 'spam' != $comment->comment_approved )
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   652
		return;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   653
	
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   654
	// use the original version stored in comment_meta if available	
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   655
	$as_submitted = get_comment_meta( $comment_id, 'akismet_as_submitted', true);
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   656
	if ( $as_submitted && is_array($as_submitted) && isset($as_submitted['comment_content']) ) {
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   657
		$comment = (object) array_merge( (array)$comment, $as_submitted );
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   658
	}
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   659
	
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   660
	$comment->blog = get_bloginfo('url');
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   661
	$comment->blog_lang = get_locale();
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   662
	$comment->blog_charset = get_option('blog_charset');
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   663
	$comment->permalink = get_permalink($comment->comment_post_ID);
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   664
	if ( is_object($current_user) ) {
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   665
	    $comment->reporter = $current_user->user_login;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   666
	}
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   667
	if ( is_object($current_site) ) {
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   668
		$comment->site_domain = $current_site->domain;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   669
	}
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   670
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   671
	$comment->user_role = '';
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   672
	if ( isset( $comment->user_ID ) )
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   673
		$comment->user_role = akismet_get_user_roles($comment->user_ID);
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   674
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   675
	if ( akismet_test_mode() )
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   676
		$comment->is_test = 'true';
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   677
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   678
	$post = get_post( $comment->comment_post_ID );
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   679
	$comment->comment_post_modified_gmt = $post->post_modified_gmt;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   680
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   681
	$query_string = '';
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   682
	foreach ( $comment as $key => $data )
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   683
		$query_string .= $key . '=' . urlencode( stripslashes($data) ) . '&';
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   684
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   685
	$response = akismet_http_post($query_string, $akismet_api_host, "/1.1/submit-spam", $akismet_api_port);
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   686
	if ( $comment->reporter ) {
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   687
		akismet_update_comment_history( $comment_id, sprintf( __('%s reported this comment as spam'), $comment->reporter ), 'report-spam' );
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   688
		update_comment_meta( $comment_id, 'akismet_user_result', 'true' );
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   689
		update_comment_meta( $comment_id, 'akismet_user', $comment->reporter );
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   690
	}
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   691
	do_action('akismet_submit_spam_comment', $comment_id, $response[1]);
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   692
}
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   693
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   694
// For WP 2.7+
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   695
function akismet_transition_comment_status( $new_status, $old_status, $comment ) {
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   696
	if ( $new_status == $old_status )
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   697
		return;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   698
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   699
	# we don't need to record a history item for deleted comments
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   700
	if ( $new_status == 'delete' )
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   701
		return;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   702
		
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   703
	if ( !is_admin() )
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   704
		return;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   705
		
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   706
	if ( !current_user_can( 'edit_post', $comment->comment_post_ID ) && !current_user_can( 'moderate_comments' ) )
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   707
		return;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   708
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   709
	if ( defined('WP_IMPORTING') && WP_IMPORTING == true )
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   710
		return;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   711
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   712
	// if this is present, it means the status has been changed by a re-check, not an explicit user action
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   713
	if ( get_comment_meta( $comment->comment_ID, 'akismet_rechecking' ) )
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   714
		return;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   715
		
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   716
	global $current_user;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   717
	$reporter = '';
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   718
	if ( is_object( $current_user ) )
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   719
		$reporter = $current_user->user_login;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   720
	
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   721
	// Assumption alert:
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   722
	// We want to submit comments to Akismet only when a moderator explicitly spams or approves it - not if the status
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   723
	// is changed automatically by another plugin.  Unfortunately WordPress doesn't provide an unambiguous way to
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   724
	// determine why the transition_comment_status action was triggered.  And there are several different ways by which
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   725
	// to spam and unspam comments: bulk actions, ajax, links in moderation emails, the dashboard, and perhaps others.
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   726
	// We'll assume that this is an explicit user action if POST or GET has an 'action' key.
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   727
	if ( isset($_POST['action']) || isset($_GET['action']) ) {
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   728
		if ( $new_status == 'spam' && ( $old_status == 'approved' || $old_status == 'unapproved' || !$old_status ) ) {
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   729
				return akismet_submit_spam_comment( $comment->comment_ID );
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   730
		} elseif ( $old_status == 'spam' && ( $new_status == 'approved' || $new_status == 'unapproved' ) ) {
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   731
				return akismet_submit_nonspam_comment( $comment->comment_ID );
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   732
		}
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   733
	}
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   734
	
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   735
	akismet_update_comment_history( $comment->comment_ID, sprintf( __('%s changed the comment status to %s'), $reporter, $new_status ), 'status-' . $new_status );
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   736
}
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   737
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   738
add_action( 'transition_comment_status', 'akismet_transition_comment_status', 10, 3 );
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   739
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   740
// Total spam in queue
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   741
// get_option( 'akismet_spam_count' ) is the total caught ever
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   742
function akismet_spam_count( $type = false ) {
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   743
	global $wpdb;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   744
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   745
	if ( !$type ) { // total
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   746
		$count = wp_cache_get( 'akismet_spam_count', 'widget' );
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   747
		if ( false === $count ) {
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   748
			if ( function_exists('wp_count_comments') ) {
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   749
				$count = wp_count_comments();
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   750
				$count = $count->spam;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   751
			} else {
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   752
				$count = (int) $wpdb->get_var("SELECT COUNT(comment_ID) FROM $wpdb->comments WHERE comment_approved = 'spam'");
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   753
			}
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   754
			wp_cache_set( 'akismet_spam_count', $count, 'widget', 3600 );
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   755
		}
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   756
		return $count;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   757
	} elseif ( 'comments' == $type || 'comment' == $type ) { // comments
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   758
		$type = '';
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   759
	} else { // pingback, trackback, ...
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   760
		$type  = $wpdb->escape( $type );
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   761
	}
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   762
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   763
	return (int) $wpdb->get_var("SELECT COUNT(comment_ID) FROM $wpdb->comments WHERE comment_approved = 'spam' AND comment_type='$type'");
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   764
}
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   765
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   766
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   767
function akismet_recheck_queue() {
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   768
	global $wpdb, $akismet_api_host, $akismet_api_port;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   769
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   770
	akismet_fix_scheduled_recheck();
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   771
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   772
	if ( ! ( isset( $_GET['recheckqueue'] ) || ( isset( $_REQUEST['action'] ) && 'akismet_recheck_queue' == $_REQUEST['action'] ) ) )
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   773
		return;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   774
		
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   775
	$moderation = $wpdb->get_results( "SELECT * FROM $wpdb->comments WHERE comment_approved = '0'", ARRAY_A );
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   776
	foreach ( (array) $moderation as $c ) {
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   777
		$c['user_ip']    = $c['comment_author_IP'];
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   778
		$c['user_agent'] = $c['comment_agent'];
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   779
		$c['referrer']   = '';
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   780
		$c['blog']       = get_bloginfo('url');
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   781
		$c['blog_lang']  = get_locale();
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   782
		$c['blog_charset'] = get_option('blog_charset');
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   783
		$c['permalink']  = get_permalink($c['comment_post_ID']);
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   784
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   785
		$c['user_role'] = '';
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   786
		if ( isset( $c['user_ID'] ) )
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   787
			$c['user_role']  = akismet_get_user_roles($c['user_ID']);
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   788
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   789
		if ( akismet_test_mode() )
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   790
			$c['is_test'] = 'true';
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   791
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   792
		$id = (int) $c['comment_ID'];
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   793
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   794
		$query_string = '';
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   795
		foreach ( $c as $key => $data )
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   796
		$query_string .= $key . '=' . urlencode( stripslashes($data) ) . '&';
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   797
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   798
		add_comment_meta( $c['comment_ID'], 'akismet_rechecking', true );
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   799
		$response = akismet_http_post($query_string, $akismet_api_host, '/1.1/comment-check', $akismet_api_port);
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   800
		if ( 'true' == $response[1] ) {
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   801
			wp_set_comment_status($c['comment_ID'], 'spam');
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   802
			update_comment_meta( $c['comment_ID'], 'akismet_result', 'true' );
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   803
			delete_comment_meta( $c['comment_ID'], 'akismet_error' );
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   804
			akismet_update_comment_history( $c['comment_ID'], __('Akismet re-checked and caught this comment as spam'), 'check-spam' );
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   805
		
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   806
		} elseif ( 'false' == $response[1] ) {
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   807
			update_comment_meta( $c['comment_ID'], 'akismet_result', 'false' );
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   808
			delete_comment_meta( $c['comment_ID'], 'akismet_error' );
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   809
			akismet_update_comment_history( $c['comment_ID'], __('Akismet re-checked and cleared this comment'), 'check-ham' );
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   810
		// abnormal result: error
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   811
		} else {
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   812
			update_comment_meta( $c['comment_ID'], 'akismet_result', 'error' );
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   813
			akismet_update_comment_history( $c['comment_ID'], sprintf( __('Akismet was unable to re-check this comment (response: %s)'), substr($response[1], 0, 50)), 'check-error' );
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   814
		}
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   815
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   816
		delete_comment_meta( $c['comment_ID'], 'akismet_rechecking' );
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   817
	}
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   818
	$redirect_to = isset( $_SERVER['HTTP_REFERER'] ) ? $_SERVER['HTTP_REFERER'] : admin_url( 'edit-comments.php' );
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   819
	wp_safe_redirect( $redirect_to );
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   820
	exit;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   821
}
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   822
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   823
add_action('admin_action_akismet_recheck_queue', 'akismet_recheck_queue');
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   824
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   825
// Adds an 'x' link next to author URLs, clicking will remove the author URL and show an undo link
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   826
function akismet_remove_comment_author_url() {
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   827
    if ( !empty($_POST['id'] ) && check_admin_referer( 'comment_author_url_nonce' ) ) {
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   828
        global $wpdb;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   829
        $comment = get_comment( intval($_POST['id']), ARRAY_A );
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   830
        if (current_user_can('edit_comment', $comment['comment_ID'])) {
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   831
            $comment['comment_author_url'] = '';
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   832
            do_action( 'comment_remove_author_url' );
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   833
            print(wp_update_comment( $comment ));
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   834
            die();
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   835
        }
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   836
    }
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   837
}
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   838
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   839
add_action('wp_ajax_comment_author_deurl', 'akismet_remove_comment_author_url');
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   840
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   841
function akismet_add_comment_author_url() {
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   842
    if ( !empty( $_POST['id'] ) && !empty( $_POST['url'] ) && check_admin_referer( 'comment_author_url_nonce' ) ) {
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   843
        global $wpdb;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   844
        $comment = get_comment( intval($_POST['id']), ARRAY_A );
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   845
        if (current_user_can('edit_comment', $comment['comment_ID'])) {
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   846
            $comment['comment_author_url'] = esc_url($_POST['url']);
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   847
            do_action( 'comment_add_author_url' );
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   848
            print(wp_update_comment( $comment ));
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   849
            die();
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   850
        }
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   851
    }
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   852
}
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   853
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   854
add_action('wp_ajax_comment_author_reurl', 'akismet_add_comment_author_url');
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   855
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   856
// Check connectivity between the WordPress blog and Akismet's servers.
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   857
// 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).
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   858
function akismet_check_server_connectivity() {
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   859
	global $akismet_api_host, $akismet_api_port, $wpcom_api_key;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   860
	
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   861
	$test_host = 'rest.akismet.com';
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   862
	
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   863
	// Some web hosts may disable one or both functions
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   864
	if ( !function_exists('fsockopen') || !function_exists('gethostbynamel') )
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   865
		return array();
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   866
	
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   867
	$ips = gethostbynamel($test_host);
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   868
	if ( !$ips || !is_array($ips) || !count($ips) )
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   869
		return array();
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   870
		
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   871
	$servers = array();
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   872
	foreach ( $ips as $ip ) {
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   873
		$response = akismet_verify_key( akismet_get_key(), $ip );
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   874
		// even if the key is invalid, at least we know we have connectivity
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   875
		if ( $response == 'valid' || $response == 'invalid' )
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   876
			$servers[$ip] = true;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   877
		else
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   878
			$servers[$ip] = false;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   879
	}
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   880
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   881
	return $servers;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   882
}
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   883
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   884
// Check the server connectivity and store the results in an option.
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   885
// Cached results will be used if not older than the specified timeout in seconds; use $cache_timeout = 0 to force an update.
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   886
// Returns the same associative array as akismet_check_server_connectivity()
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   887
function akismet_get_server_connectivity( $cache_timeout = 86400 ) {
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   888
	$servers = get_option('akismet_available_servers');
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   889
	if ( (time() - get_option('akismet_connectivity_time') < $cache_timeout) && $servers !== false )
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   890
		return $servers;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   891
	
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   892
	// There's a race condition here but the effect is harmless.
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   893
	$servers = akismet_check_server_connectivity();
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   894
	update_option('akismet_available_servers', $servers);
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   895
	update_option('akismet_connectivity_time', time());
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   896
	return $servers;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   897
}
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   898
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   899
// Returns true if server connectivity was OK at the last check, false if there was a problem that needs to be fixed.
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   900
function akismet_server_connectivity_ok() {
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   901
	// skip the check on WPMU because the status page is hidden
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   902
	global $wpcom_api_key;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   903
	if ( $wpcom_api_key )
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   904
		return true;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   905
	$servers = akismet_get_server_connectivity();
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   906
	return !( empty($servers) || !count($servers) || count( array_filter($servers) ) < count($servers) );
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   907
}
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   908
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   909
function akismet_admin_menu() {
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   910
	if ( class_exists( 'Jetpack' ) ) {
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   911
		add_action( 'jetpack_admin_menu', 'akismet_load_menu' );
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   912
	} else {
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   913
		akismet_load_menu();
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   914
	}
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   915
}
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   916
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   917
function akismet_load_menu() {	
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   918
	if ( class_exists( 'Jetpack' ) ) {
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   919
		add_submenu_page( 'jetpack', __( 'Akismet' ), __( 'Akismet' ), 'manage_options', 'akismet-key-config', 'akismet_conf' );
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   920
		add_submenu_page( 'jetpack', __( 'Akismet Stats' ), __( 'Akismet Stats' ), 'manage_options', 'akismet-stats-display', 'akismet_stats_display' );
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   921
	} else {
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   922
		add_submenu_page('plugins.php', __('Akismet'), __('Akismet'), 'manage_options', 'akismet-key-config', 'akismet_conf');
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   923
		add_submenu_page('index.php', __('Akismet Stats'), __('Akismet Stats'), 'manage_options', 'akismet-stats-display', 'akismet_stats_display');
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   924
	}
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   925
}