From a349837896628462bf8c9bdc27d1477a10fe03eb Mon Sep 17 00:00:00 2001 From: "Edward Z. Yang" Date: Thu, 10 Apr 2014 18:04:30 -0700 Subject: [PATCH] WordPress 3.8.2 Signed-off-by: Edward Z. Yang --- readme.html | 2 +- wp-admin/about.php | 6 +- .../includes/class-wp-posts-list-table.php | 2 +- wp-admin/includes/class-wp-upgrader.php | 32 +++- wp-admin/includes/post.php | 56 +++++- wp-admin/themes.php | 8 +- wp-content/plugins/akismet/admin.php | 60 ++++--- wp-content/plugins/akismet/akismet.css | 2 +- wp-content/plugins/akismet/akismet.js | 133 +++++++++------ wp-content/plugins/akismet/akismet.php | 159 ++++++++++++++---- wp-content/plugins/akismet/readme.txt | 12 +- .../languages/twentyfourteen.pot | 6 +- .../languages/twentythirteen.pot | 6 +- .../twentytwelve/languages/twentytwelve.pot | 6 +- wp-includes/bookmark.php | 4 +- wp-includes/class-wp-xmlrpc-server.php | 7 + .../js/plupload/plupload.silverlight.xap | Bin 44139 -> 44156 bytes wp-includes/pluggable.php | 2 +- wp-includes/post-template.php | 22 ++- wp-includes/query.php | 6 +- wp-includes/update.php | 22 ++- wp-includes/version.php | 2 +- 22 files changed, 400 insertions(+), 155 deletions(-) diff --git a/readme.html b/readme.html index ac85e53c..35172352 100644 --- a/readme.html +++ b/readme.html @@ -9,7 +9,7 @@

WordPress -
Version 3.8.1 +
Version 3.8.2

Semantic Personal Publishing Platform

diff --git a/wp-admin/about.php b/wp-admin/about.php index 86018503..aa8a1069 100644 --- a/wp-admin/about.php +++ b/wp-admin/about.php @@ -39,7 +39,11 @@ include( ABSPATH . 'wp-admin/admin-header.php' );
-

+

+

Version %1$s addressed some security issues and fixed %2$s bug.', + 'Version %1$s addressed some security issues and fixed %2$s bugs.', 9 ), '3.8.2', number_format_i18n( 9 ) ); ?> + the release notes.' ), 'http://codex.wordpress.org/Version_3.8.2' ); ?> +

Version %1$s addressed %2$s bug.', 'Version %1$s addressed %2$s bugs.', 31 ), '3.8.1', number_format_i18n( 31 ) ); ?> the release notes.' ), 'http://codex.wordpress.org/Version_3.8.1' ); ?> diff --git a/wp-admin/includes/class-wp-posts-list-table.php b/wp-admin/includes/class-wp-posts-list-table.php index 24536187..50054111 100644 --- a/wp-admin/includes/class-wp-posts-list-table.php +++ b/wp-admin/includes/class-wp-posts-list-table.php @@ -839,7 +839,7 @@ class WP_Posts_List_Table extends WP_List_Table {

diff --git a/wp-admin/includes/class-wp-upgrader.php b/wp-admin/includes/class-wp-upgrader.php index 1d35c248..af00d4ae 100644 --- a/wp-admin/includes/class-wp-upgrader.php +++ b/wp-admin/includes/class-wp-upgrader.php @@ -1871,18 +1871,21 @@ class WP_Automatic_Updater { if ( ! $this->should_update( $type, $item, $context ) ) return false; + $upgrader_item = $item; switch ( $type ) { case 'core': $skin->feedback( __( 'Updating to WordPress %s' ), $item->version ); $item_name = sprintf( __( 'WordPress %s' ), $item->version ); break; case 'theme': - $theme = wp_get_theme( $item ); + $upgrader_item = $item->theme; + $theme = wp_get_theme( $upgrader_item ); $item_name = $theme->Get( 'Name' ); $skin->feedback( __( 'Updating theme: %s' ), $item_name ); break; case 'plugin': - $plugin_data = get_plugin_data( $context . '/' . $item ); + $upgrader_item = $item->plugin; + $plugin_data = get_plugin_data( $context . '/' . $upgrader_item ); $item_name = $plugin_data['Name']; $skin->feedback( __( 'Updating plugin: %s' ), $item_name ); break; @@ -1894,7 +1897,7 @@ class WP_Automatic_Updater { } // Boom, This sites about to get a whole new splash of paint! - $upgrade_result = $upgrader->upgrade( $item, array( + $upgrade_result = $upgrader->upgrade( $upgrader_item, array( 'clear_update_cache' => false, 'pre_check_md5' => false, /* always use partial builds if possible for core updates */ 'attempt_rollback' => true, /* only available for core updates */ @@ -1968,7 +1971,7 @@ class WP_Automatic_Updater { wp_update_plugins(); // Check for Plugin updates $plugin_updates = get_site_transient( 'update_plugins' ); if ( $plugin_updates && !empty( $plugin_updates->response ) ) { - foreach ( array_keys( $plugin_updates->response ) as $plugin ) { + foreach ( $plugin_updates->response as $plugin ) { $this->update( 'plugin', $plugin ); } // Force refresh of plugin update information @@ -1979,8 +1982,8 @@ class WP_Automatic_Updater { wp_update_themes(); // Check for Theme updates $theme_updates = get_site_transient( 'update_themes' ); if ( $theme_updates && !empty( $theme_updates->response ) ) { - foreach ( array_keys( $theme_updates->response ) as $theme ) { - $this->update( 'theme', $theme ); + foreach ( $theme_updates->response as $theme ) { + $this->update( 'theme', (object) $theme ); } // Force refresh of theme update information wp_clean_themes_cache(); @@ -1995,8 +1998,21 @@ class WP_Automatic_Updater { // Clean up, and check for any pending translations // (Core_Upgrader checks for core updates) - wp_update_themes(); // Check for Theme updates - wp_update_plugins(); // Check for Plugin updates + $theme_stats = array(); + if ( isset( $this->update_results['theme'] ) ) { + foreach ( $this->update_results['theme'] as $upgrade ) { + $theme_stats[ $upgrade->item->theme ] = ( true === $upgrade->result ); + } + } + wp_update_themes( $theme_stats ); // Check for Theme updates + + $plugin_stats = array(); + if ( isset( $this->update_results['plugin'] ) ) { + foreach ( $this->update_results['plugin'] as $upgrade ) { + $plugin_stats[ $upgrade->item->plugin ] = ( true === $upgrade->result ); + } + } + wp_update_plugins( $plugin_stats ); // Check for Plugin updates // Finally, Process any new translations $language_updates = wp_get_translation_updates(); diff --git a/wp-admin/includes/post.php b/wp-admin/includes/post.php index 983e4e70..bd624979 100644 --- a/wp-admin/includes/post.php +++ b/wp-admin/includes/post.php @@ -100,6 +100,10 @@ function _wp_translate_postdata( $update = false, $post_data = null ) { $post_id = false; $previous_status = $post_id ? get_post_field( 'post_status', $post_id ) : false; + if ( isset( $post_data['post_status'] ) && 'private' == $post_data['post_status'] && ! current_user_can( $ptype->cap->publish_posts ) ) { + $post_data['post_status'] = $previous_status ? $previous_status : 'pending'; + } + $published_statuses = array( 'publish', 'future' ); // Posts 'submitted for approval' present are submitted to $_POST the same as if they were being published. @@ -111,6 +115,10 @@ function _wp_translate_postdata( $update = false, $post_data = null ) { if ( ! isset($post_data['post_status']) ) $post_data['post_status'] = $previous_status; + if ( isset( $post_data['post_password'] ) && ! current_user_can( $ptype->cap->publish_posts ) ) { + unset( $post_data['post_password'] ); + } + if (!isset( $post_data['comment_status'] )) $post_data['comment_status'] = 'closed'; @@ -170,6 +178,14 @@ function edit_post( $post_data = null ) { $post_data['post_type'] = $post->post_type; $post_data['post_mime_type'] = $post->post_mime_type; + if ( ! empty( $post_data['post_status'] ) ) { + $post_data['post_status'] = sanitize_key( $post_data['post_status'] ); + + if ( 'inherit' == $post_data['post_status'] ) { + unset( $post_data['post_status'] ); + } + } + $ptype = get_post_type_object($post_data['post_type']); if ( !current_user_can( 'edit_post', $post_ID ) ) { if ( 'page' == $post_data['post_type'] ) @@ -187,9 +203,6 @@ function edit_post( $post_data = null ) { _wp_upgrade_revisions_of_post( $post, wp_get_post_revisions( $post_ID ) ); } - $post_data = _wp_translate_postdata( true, $post_data ); - if ( is_wp_error($post_data) ) - wp_die( $post_data->get_error_message() ); if ( ( empty( $post_data['action'] ) || 'autosave' != $post_data['action'] ) && 'auto-draft' == $post_data['post_status'] ) { $post_data['post_status'] = 'draft'; } @@ -210,6 +223,10 @@ function edit_post( $post_data = null ) { } } + $post_data = _wp_translate_postdata( true, $post_data ); + if ( is_wp_error($post_data) ) + wp_die( $post_data->get_error_message() ); + // Post Formats if ( isset( $post_data['post_format'] ) ) set_post_format( $post_ID, $post_data['post_format'] ); @@ -332,6 +349,14 @@ function bulk_edit_posts( $post_data = null ) { } unset($post_data['_status']); + if ( ! empty( $post_data['post_status'] ) ) { + $post_data['post_status'] = sanitize_key( $post_data['post_status'] ); + + if ( 'inherit' == $post_data['post_status'] ) { + unset( $post_data['post_status'] ); + } + } + $post_IDs = array_map( 'intval', (array) $post_data['post'] ); $reset = array( @@ -422,11 +447,26 @@ function bulk_edit_posts( $post_data = null ) { unset( $post_data['tax_input']['category'] ); } + $post_data['post_type'] = $post->post_type; $post_data['post_mime_type'] = $post->post_mime_type; $post_data['guid'] = $post->guid; + foreach ( array( 'comment_status', 'ping_status', 'post_author' ) as $field ) { + if ( ! isset( $post_data[ $field ] ) ) { + $post_data[ $field ] = $post->$field; + } + } + $post_data['ID'] = $post_ID; - $updated[] = wp_update_post( $post_data ); + $post_data['post_ID'] = $post_ID; + + $translated_post_data = _wp_translate_postdata( true, $post_data ); + if ( is_wp_error( $translated_post_data ) ) { + $skipped[] = $post_ID; + continue; + } + + $updated[] = wp_update_post( $translated_post_data ); if ( isset( $post_data['sticky'] ) && current_user_can( $ptype->cap->edit_others_posts ) ) { if ( 'sticky' == $post_data['sticky'] ) @@ -569,10 +609,6 @@ function wp_write_post() { if ( isset( $_POST['post_ID'] ) ) return edit_post(); - $translated = _wp_translate_postdata( false ); - if ( is_wp_error($translated) ) - return $translated; - if ( isset($_POST['visibility']) ) { switch ( $_POST['visibility'] ) { case 'public' : @@ -589,6 +625,10 @@ function wp_write_post() { } } + $translated = _wp_translate_postdata( false ); + if ( is_wp_error($translated) ) + return $translated; + // Create the post. $post_ID = wp_insert_post( $_POST ); if ( is_wp_error( $post_ID ) ) diff --git a/wp-admin/themes.php b/wp-admin/themes.php index 448931d1..d4a65e7e 100644 --- a/wp-admin/themes.php +++ b/wp-admin/themes.php @@ -142,7 +142,7 @@ endif; $ct = wp_get_theme(); if ( $ct->errors() && ( ! is_multisite() || current_user_can( 'manage_network_themes' ) ) ) { - echo '

' . sprintf( __( 'ERROR: %s' ), $ct->errors()->get_error_message() ) . '

'; + echo '

' . sprintf( __( 'ERROR: %s' ), $ct->errors()->get_error_message() ) . '

'; } /* @@ -312,9 +312,9 @@ if ( ! is_multisite() && current_user_can('edit_themes') && $broken_themes = wp_
- - - + + +
diff --git a/wp-content/plugins/akismet/admin.php b/wp-content/plugins/akismet/admin.php index f8071916..56d8c92d 100644 --- a/wp-content/plugins/akismet/admin.php +++ b/wp-content/plugins/akismet/admin.php @@ -39,13 +39,20 @@ function akismet_load_js_and_css() { 'plugins_page_akismet-key-config', 'jetpack_page_akismet-key-config', ) ) ) { - wp_register_style( 'akismet.css', AKISMET_PLUGIN_URL . 'akismet.css', array(), '2.5.9' ); + wp_register_style( 'akismet.css', AKISMET_PLUGIN_URL . 'akismet.css', array(), AKISMET_VERSION ); wp_enqueue_style( 'akismet.css'); - wp_register_script( 'akismet.js', AKISMET_PLUGIN_URL . 'akismet.js', array('jquery'), '2.5.9' ); + wp_register_script( 'akismet.js', AKISMET_PLUGIN_URL . 'akismet.js', array('jquery'), AKISMET_VERSION ); wp_enqueue_script( 'akismet.js' ); wp_localize_script( 'akismet.js', 'WPAkismet', array( - 'comment_author_url_nonce' => wp_create_nonce( 'comment_author_url_nonce' ) + 'comment_author_url_nonce' => wp_create_nonce( 'comment_author_url_nonce' ), + 'strings' => array( + 'Remove this URL' => __( 'Remove this URL' ), + 'Removing...' => __( 'Removing...' ), + 'URL removed' => __( 'URL removed' ), + '(undo)' => __( '(undo)' ), + 'Re-adding...' => __( 'Re-adding...' ), + ) ) ); } } @@ -335,11 +342,7 @@ function akismet_stats() { $path = plugin_basename(__FILE__); echo '

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

'; global $submenu; - if ( isset( $submenu['edit-comments.php'] ) ) - $link = 'edit-comments.php'; - else - $link = 'edit.php'; - echo '

'.sprintf( _n( 'Akismet has protected your site from %3$s spam comments.', 'Akismet has protected your site from %3$s spam comments.', $count ), 'http://akismet.com/?return=true', clean_url("$link?page=akismet-admin"), number_format_i18n($count) ).'

'; + echo '

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

'; } add_action('activity_box_end', 'akismet_stats'); @@ -546,11 +549,11 @@ function akismet_rightnow() { global $submenu, $wp_db_version; if ( 8645 < $wp_db_version ) // 2.7 - $link = 'edit-comments.php?comment_status=spam'; + $link = add_query_arg( array( 'comment_status' => 'spam' ), admin_url( 'edit-comments.php' ) ); elseif ( isset( $submenu['edit-comments.php'] ) ) - $link = 'edit-comments.php?page=akismet-admin'; + $link = add_query_arg( array( 'page' => 'akismet-admin' ), admin_url( 'edit-comments.php' ) ); else - $link = 'edit.php?page=akismet-admin'; + $link = add_query_arg( array( 'page' => 'akismet-admin' ), admin_url( 'edit.php' ) ); if ( $count = get_option('akismet_spam_count') ) { $intro = sprintf( _n( @@ -581,14 +584,17 @@ add_action('rightnow_end', 'akismet_rightnow'); // For WP >= 2.5 -function akismet_check_for_spam_button($comment_status) { +function akismet_check_for_spam_button( $comment_status ) { if ( 'approved' == $comment_status ) return; + if ( function_exists('plugins_url') ) - $link = 'admin.php?action=akismet_recheck_queue'; + $link = add_query_arg( array( 'action' => 'akismet_recheck_queue' ), admin_url( 'admin.php' ) ); else - $link = 'edit-comments.php?page=akismet-admin&recheckqueue=true&noheader=true'; - echo "
" . __('Check for Spam') . ""; + $link = add_query_arg( array( 'page' => 'akismet-admin', 'recheckqueue' => 'true', 'noheader' => 'true' ), admin_url( 'edit-comments.php' ) ); + + echo '
' . esc_html__('Check for Spam') . ''; + echo ''; } add_action('manage_comments_nav', 'akismet_check_for_spam_button'); @@ -771,8 +777,12 @@ function akismet_recheck_queue() { if ( ! ( isset( $_GET['recheckqueue'] ) || ( isset( $_REQUEST['action'] ) && 'akismet_recheck_queue' == $_REQUEST['action'] ) ) ) return; - - $moderation = $wpdb->get_results( "SELECT * FROM $wpdb->comments WHERE comment_approved = '0'", ARRAY_A ); + + $paginate = ''; + if ( isset( $_POST['limit'] ) && isset( $_POST['offset'] ) ) { + $paginate = $wpdb->prepare( " LIMIT %d OFFSET %d", array( $_POST['limit'], $_POST['offset'] ) ); + } + $moderation = $wpdb->get_results( "SELECT * FROM {$wpdb->comments} WHERE comment_approved = '0'{$paginate}", ARRAY_A ); foreach ( (array) $moderation as $c ) { $c['user_ip'] = $c['comment_author_IP']; $c['user_agent'] = $c['comment_agent']; @@ -780,7 +790,7 @@ function akismet_recheck_queue() { $c['blog'] = get_bloginfo('url'); $c['blog_lang'] = get_locale(); $c['blog_charset'] = get_option('blog_charset'); - $c['permalink'] = get_permalink($c['comment_post_ID']); + $c['permalink'] = get_permalink($c['comment_post_ID']); $c['user_role'] = ''; if ( isset( $c['user_ID'] ) ) @@ -815,12 +825,20 @@ function akismet_recheck_queue() { delete_comment_meta( $c['comment_ID'], 'akismet_rechecking' ); } - $redirect_to = isset( $_SERVER['HTTP_REFERER'] ) ? $_SERVER['HTTP_REFERER'] : admin_url( 'edit-comments.php' ); - wp_safe_redirect( $redirect_to ); - exit; + if ( defined( 'DOING_AJAX' ) && DOING_AJAX ) { + wp_send_json( array( + 'processed' => count((array) $moderation), + )); + } + else { + $redirect_to = isset( $_SERVER['HTTP_REFERER'] ) ? $_SERVER['HTTP_REFERER'] : admin_url( 'edit-comments.php' ); + wp_safe_redirect( $redirect_to ); + exit; + } } add_action('admin_action_akismet_recheck_queue', 'akismet_recheck_queue'); +add_action('wp_ajax_akismet_recheck_queue', 'akismet_recheck_queue'); // Adds an 'x' link next to author URLs, clicking will remove the author URL and show an undo link function akismet_remove_comment_author_url() { diff --git a/wp-content/plugins/akismet/akismet.css b/wp-content/plugins/akismet/akismet.css index e96bc8a5..5126449d 100644 --- a/wp-content/plugins/akismet/akismet.css +++ b/wp-content/plugins/akismet/akismet.css @@ -1 +1 @@ -#submitted-on{position:relative}#the-comment-list .author .akismet-user-comment-count{display:inline}#the-comment-list .author a span{text-decoration:none;color:#999}#the-comment-list .remove_url{margin-left:3px;color:#999;padding:2px 3px 2px 0}#the-comment-list .remove_url:hover{color:#A7301F;font-weight:bold;padding:2px 2px 2px 0}#dashboard_recent_comments .akismet-status{display:none}.akismet-status{float:right}.akismet-status a{color:#AAA;font-style:italic}span.comment-link a{text-decoration:underline}span.comment-link:after{content:" "attr(title) " ";color:#aaa;text-decoration:none}.mshot-arrow{width:0;height:0;border-top:10px solid transparent;border-bottom:10px solid transparent;border-right:10px solid #5C5C5C;position:absolute;left:-6px;top:91px}.mshot-container{background:#5C5C5C;position:absolute;top:-94px;padding:7px;width:450px;height:338px;z-index:20000;-moz-border-radius:6px;border-radius:6px;-webkit-border-radius:6px}h2.ak-header{padding-left:38px;background:url('img/logo.png') no-repeat 0 9px;margin-bottom:14px;line-height:32px}.key-status{padding:0.4em 1em;color:#fff;font-weight:bold;text-align:center;-webkit-border-radius:3px;border-radius:3px;border-width:1px;border-style:solid;max-width:23.3em}input#key{width:25.3em !important}input#key.valid{border-color:#4F800D}input#key.invalid,input#key.failed{border-color:#888}.key-status.under-input{margin-top:-5px;padding-bottom:0px}.key-status.invalid,.key-status.failed{background-color:#888}.key-status.valid{background-color:#4F800D}.key-status.some{background-color:#993300}.key-status.empty{display:none}table.network-status th,table.network-status td{padding:0.4em;margin:0;text-align:center}table.network-status{border-color:#dfdfdf;border-width:0 0 1px 1px;border-style:solid;border-spacing:0;width:25.6em}table.network-status th,table.network-status td{border-color:#dfdfdf;border-width:1px 1px 0 0;border-style:solid;margin:0;border-spacing:0}table.network-status td.key-status{border-radius:0px;-webkit-border-radius:0px} \ No newline at end of file +#submitted-on{position:relative}#the-comment-list .author .akismet-user-comment-count{display:inline}#the-comment-list .author a span{text-decoration:none;color:#999}#the-comment-list .remove_url{margin-left:3px;color:#999;padding:2px 3px 2px 0}#the-comment-list .remove_url:hover{color:#A7301F;font-weight:bold;padding:2px 2px 2px 0}#dashboard_recent_comments .akismet-status{display:none}.akismet-status{float:right}.akismet-status a{color:#AAA;font-style:italic}span.comment-link a{text-decoration:underline}span.comment-link:after{content:" "attr(title) " ";color:#aaa;text-decoration:none}.mshot-arrow{width:0;height:0;border-top:10px solid transparent;border-bottom:10px solid transparent;border-right:10px solid #5C5C5C;position:absolute;left:-6px;top:91px}.mshot-container{background:#5C5C5C;position:absolute;top:-94px;padding:7px;width:450px;height:338px;z-index:20000;-moz-border-radius:6px;border-radius:6px;-webkit-border-radius:6px}h2.ak-header{padding-left:38px;background:url('img/logo.png') no-repeat 0 9px;margin-bottom:14px;line-height:32px}.key-status{padding:0.4em 1em;color:#fff;font-weight:bold;text-align:center;-webkit-border-radius:3px;border-radius:3px;border-width:1px;border-style:solid;max-width:23.3em}input#key{width:25.3em !important}input#key.valid{border-color:#4F800D}input#key.invalid,input#key.failed{border-color:#888}.key-status.under-input{margin-top:-5px;padding-bottom:0px}.key-status.invalid,.key-status.failed{background-color:#888}.key-status.valid{background-color:#4F800D}.key-status.some{background-color:#993300}.key-status.empty{display:none}table.network-status th,table.network-status td{padding:0.4em;margin:0;text-align:center}table.network-status{border-color:#dfdfdf;border-width:0 0 1px 1px;border-style:solid;border-spacing:0;width:25.6em}table.network-status th,table.network-status td{border-color:#dfdfdf;border-width:1px 1px 0 0;border-style:solid;margin:0;border-spacing:0}table.network-status td.key-status{border-radius:0px;-webkit-border-radius:0px}.checkforspam{display:inline-block !important;}.checkforspam-spinner{display:none;margin-top:10px;} \ No newline at end of file diff --git a/wp-content/plugins/akismet/akismet.js b/wp-content/plugins/akismet/akismet.js index f3da8fd6..2db61ebf 100644 --- a/wp-content/plugins/akismet/akismet.js +++ b/wp-content/plugins/akismet/akismet.js @@ -1,114 +1,154 @@ -jQuery(document).ready(function () { - jQuery( '.switch-have-key' ).click( function() { - var no_key = jQuery( this ).parents().find('div.no-key'); - var have_key = jQuery( this ).parents().find('div.have-key'); +jQuery( function ( $ ) { + $( '.switch-have-key' ).click( function() { + var no_key = $( this ).parents().find('div.no-key'); + var have_key = $( this ).parents().find('div.have-key'); no_key.addClass( 'hidden' ); have_key.removeClass( 'hidden' ); return false; }); - jQuery( 'p.need-key a' ).click( function(){ + $( 'p.need-key a' ).click( function(){ document.akismet_activate.submit(); }); - jQuery('.akismet-status').each(function () { - var thisId = jQuery(this).attr('commentid'); - jQuery(this).prependTo('#comment-' + thisId + ' .column-comment div:first-child'); + $('.akismet-status').each(function () { + var thisId = $(this).attr('commentid'); + $(this).prependTo('#comment-' + thisId + ' .column-comment div:first-child'); }); - jQuery('.akismet-user-comment-count').each(function () { - var thisId = jQuery(this).attr('commentid'); - jQuery(this).insertAfter('#comment-' + thisId + ' .author strong:first').show(); + $('.akismet-user-comment-count').each(function () { + var thisId = $(this).attr('commentid'); + $(this).insertAfter('#comment-' + thisId + ' .author strong:first').show(); }); - jQuery('#the-comment-list tr.comment .column-author a[title ^= "http://"]').each(function () { - var thisTitle = jQuery(this).attr('title'); - thisCommentId = jQuery(this).parents('tr:first').attr('id').split("-"); + $('#the-comment-list').find('tr.comment, tr[id ^= "comment-"]').find('.column-author a[title ^= "http://"]').each(function () { + var thisTitle = $(this).attr('title'); + thisCommentId = $(this).parents('tr:first').attr('id').split("-"); - jQuery(this).attr("id", "author_comment_url_"+ thisCommentId[1]); + $(this).attr("id", "author_comment_url_"+ thisCommentId[1]); if (thisTitle) { - jQuery(this).after(' x'); + $(this).after( + $( 'x' ) + .attr( 'commentid', thisCommentId[1] ) + .attr( 'title', WPAkismet.strings['Remove this URL'] ) + ); } }); - jQuery('.remove_url').live('click', function () { - var thisId = jQuery(this).attr('commentid'); + $('.remove_url').live('click', function () { + var thisId = $(this).attr('commentid'); var data = { action: 'comment_author_deurl', _wpnonce: WPAkismet.comment_author_url_nonce, id: thisId }; - jQuery.ajax({ + $.ajax({ url: ajaxurl, type: 'POST', data: data, beforeSend: function () { // Removes "x" link - jQuery("a[commentid='"+ thisId +"']").hide(); + $("a[commentid='"+ thisId +"']").hide(); // Show temp status - jQuery("#author_comment_url_"+ thisId).html('Removing...'); + $("#author_comment_url_"+ thisId).html( $( '' ).text( WPAkismet.strings['Removing...'] ) ); }, success: function (response) { if (response) { // Show status/undo link - jQuery("#author_comment_url_"+ thisId).attr('cid', thisId).addClass('akismet_undo_link_removal').html('URL removed (undo)'); - } + $("#author_comment_url_"+ thisId) + .attr('cid', thisId) + .addClass('akismet_undo_link_removal') + .html( + $( '' ).text( WPAkismet.strings['URL removed'] ) + ) + .append( ' ' ) + .append( + $( '' ) + .text( WPAkismet.strings['(undo)'] ) + .addClass( 'akismet-span-link' ) + ); + } } }); return false; }); - jQuery('.akismet_undo_link_removal').live('click', function () { - var thisId = jQuery(this).attr('cid'); - var thisUrl = jQuery(this).attr('href').replace("http://www.", "").replace("http://", ""); + $('.akismet_undo_link_removal').live('click', function () { + var thisId = $(this).attr('cid'); + var thisUrl = $(this).attr('href').replace("http://www.", "").replace("http://", ""); var data = { action: 'comment_author_reurl', _wpnonce: WPAkismet.comment_author_url_nonce, id: thisId, url: thisUrl }; - jQuery.ajax({ + $.ajax({ url: ajaxurl, type: 'POST', data: data, beforeSend: function () { // Show temp status - jQuery("#author_comment_url_"+ thisId).html('Re-adding…'); + $("#author_comment_url_"+ thisId).html( $( '' ).text( WPAkismet.strings['Re-adding...'] ) ); }, success: function (response) { if (response) { // Add "x" link - jQuery("a[commentid='"+ thisId +"']").show(); + $("a[commentid='"+ thisId +"']").show(); // Show link - jQuery("#author_comment_url_"+ thisId).removeClass('akismet_undo_link_removal').html(thisUrl); + $("#author_comment_url_"+ thisId).removeClass('akismet_undo_link_removal').html(thisUrl); } } }); return false; }); - jQuery('a[id^="author_comment_url"]').mouseover(function () { + $('a[id^="author_comment_url"], tr.pingback td.column-author a:first-of-type').mouseover(function () { var wpcomProtocol = ( 'https:' === location.protocol ) ? 'https://' : 'http://'; // Need to determine size of author column - var thisParentWidth = jQuery(this).parent().width(); + var thisParentWidth = $(this).parent().width(); // It changes based on if there is a gravatar present - thisParentWidth = (jQuery(this).parent().find('.grav-hijack').length) ? thisParentWidth - 42 + 'px' : thisParentWidth + 'px'; - if (jQuery(this).find('.mShot').length == 0 && !jQuery(this).hasClass('akismet_undo_link_removal')) { - var thisId = jQuery(this).attr('id').replace('author_comment_url_', ''); - jQuery('.widefat td').css('overflow', 'visible'); - jQuery(this).css('position', 'relative'); - var thisHref = jQuery.URLEncode(jQuery(this).attr('href')); - jQuery(this).append('
'); + thisParentWidth = ($(this).parent().find('.grav-hijack').length) ? thisParentWidth - 42 + 'px' : thisParentWidth + 'px'; + if ($(this).find('.mShot').length == 0 && !$(this).hasClass('akismet_undo_link_removal')) { + var self = $( this ); + $('.widefat td').css('overflow', 'visible'); + $(this).css('position', 'relative'); + var thisHref = $.URLEncode( $(this).attr('href') ); + $(this).append('
'); setTimeout(function () { - jQuery('.mshot-image_'+thisId).attr('src', wpcomProtocol+'s0.wordpress.com/mshots/v1/'+thisHref+'?w=450&r=2'); + self.find( '.mshot-image' ).attr('src', '//s0.wordpress.com/mshots/v1/'+thisHref+'?w=450&r=2'); }, 6000); setTimeout(function () { - jQuery('.mshot-image_'+thisId).attr('src', wpcomProtocol+'s0.wordpress.com/mshots/v1/'+thisHref+'?w=450&r=3'); + self.find( '.mshot-image' ).attr('src', '//s0.wordpress.com/mshots/v1/'+thisHref+'?w=450&r=3'); }, 12000); } else { - jQuery(this).find('.mShot').css('left', thisParentWidth).show(); + $(this).find('.mShot').css('left', thisParentWidth).show(); } }).mouseout(function () { - jQuery(this).find('.mShot').hide(); + $(this).find('.mShot').hide(); }); + $('.checkforspam:not(.button-disabled)').click( function(e) { + $('.checkforspam:not(.button-disabled)').addClass('button-disabled'); + $('.checkforspam-spinner').show(); + akismet_check_for_spam(0, 100); + e.preventDefault(); + }); + + function akismet_check_for_spam(offset, limit) { + $.post( + ajaxurl, + { + 'action': 'akismet_recheck_queue', + 'offset': offset, + 'limit': limit + }, + function(result) { + if (result.processed < limit) { + window.location.reload(); + } + else { + akismet_check_for_spam(offset + limit, limit); + } + } + ); + } }); // URL encode plugin jQuery.extend({URLEncode:function(c){var o='';var x=0;c=c.toString();var r=/(^[a-zA-Z0-9_.]*)/; @@ -117,10 +157,3 @@ jQuery.extend({URLEncode:function(c){var o='';var x=0;c=c.toString();var r=/(^[a }else{if(c[x]==' ')o+='+';else{var d=c.charCodeAt(x);var h=d.toString(16); o+='%'+(h.length<2?'0':'')+h.toUpperCase();}x++;}}return o;} }); -// Preload mshot images after everything else has loaded -jQuery(window).load(function() { - var wpcomProtocol = ( 'https:' === location.protocol ) ? 'https://' : 'http://'; - jQuery('a[id^="author_comment_url"]').each(function () { - jQuery.get(wpcomProtocol+'s0.wordpress.com/mshots/v1/'+jQuery.URLEncode(jQuery(this).attr('href'))+'?w=450'); - }); -}); diff --git a/wp-content/plugins/akismet/akismet.php b/wp-content/plugins/akismet/akismet.php index 919ea0e7..4fff8bb6 100644 --- a/wp-content/plugins/akismet/akismet.php +++ b/wp-content/plugins/akismet/akismet.php @@ -6,7 +6,7 @@ Plugin Name: Akismet Plugin URI: http://akismet.com/?return=true Description: Used by millions, Akismet is quite possibly the best way in the world to protect your blog from comment and trackback spam. It keeps your site protected from spam even while you sleep. To get started: 1) Click the "Activate" link to the left of this description, 2) Sign up for an Akismet API key, and 3) Go to your Akismet configuration page, and save your API key. -Version: 2.5.9 +Version: 2.6.0 Author: Automattic Author URI: http://automattic.com/wordpress-plugins/ License: GPLv2 or later @@ -34,8 +34,9 @@ if ( !function_exists( 'add_action' ) ) { exit; } -define('AKISMET_VERSION', '2.5.9'); +define('AKISMET_VERSION', '2.6.0'); define('AKISMET_PLUGIN_URL', plugin_dir_url( __FILE__ )); +define('AKISMET_DELETE_LIMIT', 10000); /** If you hardcode a WP.com API key here, all key config screens will be hidden */ if ( defined('WPCOM_API_KEY') ) @@ -197,17 +198,26 @@ function akismet_http_post($request, $host, $path, $port = 80, $ip=null) { // filter handler used to return a spam result to pre_comment_approved function akismet_result_spam( $approved ) { + static $just_once = false; + if ( $just_once ) + return $approved; + // bump the counter here instead of when the filter is added to reduce the possibility of overcounting if ( $incr = apply_filters('akismet_spam_count_incr', 1) ) update_option( 'akismet_spam_count', get_option('akismet_spam_count') + $incr ); + // this is a one-shot deal - remove_filter( 'pre_comment_approved', 'akismet_result_spam' ); + $just_once = true; return 'spam'; } function akismet_result_hold( $approved ) { + static $just_once = false; + if ( $just_once ) + return $approved; + // once only - remove_filter( 'pre_comment_approved', 'akismet_result_hold' ); + $just_once = true; return '0'; } @@ -321,7 +331,7 @@ function akismet_auto_check_comment( $commentdata ) { global $akismet_api_host, $akismet_api_port, $akismet_last_comment; $comment = $commentdata; - $comment['user_ip'] = $_SERVER['REMOTE_ADDR']; + $comment['user_ip'] = akismet_get_ip_address(); $comment['user_agent'] = isset($_SERVER['HTTP_USER_AGENT']) ? $_SERVER['HTTP_USER_AGENT'] : null; $comment['referrer'] = isset($_SERVER['HTTP_REFERER']) ? $_SERVER['HTTP_REFERER'] : null; $comment['blog'] = get_option('home'); @@ -422,58 +432,70 @@ function akismet_auto_check_comment( $commentdata ) { add_action('preprocess_comment', 'akismet_auto_check_comment', 1); +function akismet_get_ip_address() { + foreach( array( 'HTTP_CLIENT_IP', 'HTTP_X_FORWARDED_FOR', 'HTTP_X_FORWARDED', 'HTTP_X_CLUSTER_CLIENT_IP', 'HTTP_FORWARDED_FOR', 'HTTP_FORWARDED', 'REMOTE_ADDR' ) as $key ) { + if ( array_key_exists( $key, $_SERVER ) === true ) { + foreach ( explode( ',', $_SERVER[$key] ) as $ip ) { + $ip = trim($ip); + + if ( filter_var( $ip, FILTER_VALIDATE_IP, FILTER_FLAG_NO_PRIV_RANGE | FILTER_FLAG_NO_RES_RANGE) !== false ) { + return $ip; + } + } + } + } + return null; +} + function akismet_delete_old() { global $wpdb; - $now_gmt = current_time('mysql', 1); - $comment_ids = $wpdb->get_col("SELECT comment_id FROM $wpdb->comments WHERE DATE_SUB('$now_gmt', INTERVAL 15 DAY) > comment_date_gmt AND comment_approved = 'spam'"); - if ( empty( $comment_ids ) ) - return; + + while( $comment_ids = $wpdb->get_col( $wpdb->prepare( "SELECT comment_id FROM {$wpdb->comments} WHERE DATE_SUB(NOW(), INTERVAL 15 DAY) > comment_date_gmt AND comment_approved = 'spam' LIMIT %d", defined( 'AKISMET_DELETE_LIMIT' ) ? AKISMET_DELETE_LIMIT : 10000 ) ) ) { + if ( empty( $comment_ids ) ) + return; - $comma_comment_ids = implode( ', ', array_map('intval', $comment_ids) ); + $wpdb->queries = array(); - do_action( 'delete_comment', $comment_ids ); - $wpdb->query("DELETE FROM $wpdb->comments WHERE comment_id IN ( $comma_comment_ids )"); - $wpdb->query("DELETE FROM $wpdb->commentmeta WHERE comment_id IN ( $comma_comment_ids )"); - clean_comment_cache( $comment_ids ); - $n = mt_rand(1, 5000); - if ( apply_filters('akismet_optimize_table', ($n == 11)) ) // lucky number - $wpdb->query("OPTIMIZE TABLE $wpdb->comments"); + do_action( 'delete_comment', $comment_ids ); + + $comma_comment_ids = implode( ', ', array_map('intval', $comment_ids) ); + + $wpdb->query("DELETE FROM {$wpdb->comments} WHERE comment_id IN ( $comma_comment_ids )"); + $wpdb->query("DELETE FROM {$wpdb->commentmeta} WHERE comment_id IN ( $comma_comment_ids )"); + + clean_comment_cache( $comment_ids ); + } + if ( apply_filters( 'akismet_optimize_table', ( mt_rand(1, 5000) == 11) ) ) // lucky number + $wpdb->query("OPTIMIZE TABLE {$wpdb->comments}"); } function akismet_delete_old_metadata() { global $wpdb; - $now_gmt = current_time( 'mysql', 1 ); $interval = apply_filters( 'akismet_delete_commentmeta_interval', 15 ); # enfore a minimum of 1 day $interval = absint( $interval ); - if ( $interval < 1 ) { - return; - } + if ( $interval < 1 ) + $interval = 1; // akismet_as_submitted meta values are large, so expire them // after $interval days regardless of the comment status - while ( TRUE ) { - $comment_ids = $wpdb->get_col( "SELECT $wpdb->comments.comment_id FROM $wpdb->commentmeta INNER JOIN $wpdb->comments USING(comment_id) WHERE meta_key = 'akismet_as_submitted' AND DATE_SUB('$now_gmt', INTERVAL {$interval} DAY) > comment_date_gmt LIMIT 10000" ); - - if ( empty( $comment_ids ) ) { - return; - } - + while ( $comment_ids = $wpdb->get_col( $wpdb->prepare( "SELECT m.comment_id FROM {$wpdb->commentmeta} as m INNER JOIN {$wpdb->comments} as c USING(comment_id) WHERE m.meta_key = 'akismet_as_submitted' AND DATE_SUB(NOW(), INTERVAL %d DAY) > c.comment_date_gmt LIMIT 10000", $interval ) ) ) { + if ( empty( $comment_ids ) ) + return; + + $wpdb->queries = array(); + foreach ( $comment_ids as $comment_id ) { delete_comment_meta( $comment_id, 'akismet_as_submitted' ); } } - - /* - $n = mt_rand( 1, 5000 ); - if ( apply_filters( 'akismet_optimize_table', ( $n == 11 ), 'commentmeta' ) ) { // lucky number - $wpdb->query( "OPTIMIZE TABLE $wpdb->commentmeta" ); - } - */ -} + + if ( apply_filters( 'akismet_optimize_table', ( mt_rand(1, 5000) == 11) ) ) // lucky number + $wpdb->query("OPTIMIZE TABLE {$wpdb->comments}"); +} add_action('akismet_scheduled_delete', 'akismet_delete_old'); add_action('akismet_scheduled_delete', 'akismet_delete_old_metadata'); @@ -588,6 +610,71 @@ $akismet_comment_nonce_option = apply_filters( 'akismet_comment_nonce', get_opti if ( $akismet_comment_nonce_option == 'true' || $akismet_comment_nonce_option == '' ) add_action( 'comment_form', 'akismet_add_comment_nonce' ); +function akismet_pingback_forwarded_for( $r, $url ) { + static $urls = array(); + + // Call this with $r == null to prime the callback to add headers on a specific URL + if ( is_null( $r ) && !in_array( $url, $urls ) ) { + $urls[] = $url; + } + + // Add X-Pingback-Forwarded-For header, but only for requests to a specific URL (the apparent pingback source) + if ( is_array( $r ) && is_array( $r['headers'] ) && !isset( $r['headers']['X-Pingback-Forwarded-For'] ) && in_array( $url, $urls ) ) { + $remote_ip = preg_replace( '/[^a-fx0-9:.,]/i', '', $_SERVER['REMOTE_ADDR'] ); + + // Note: this assumes REMOTE_ADDR is correct, and it may not be if a reverse proxy or CDN is in use + $r['headers']['X-Pingback-Forwarded-For'] = $remote_ip; + + // Also identify the request as a pingback verification in the UA string so it appears in logs + $r['user-agent'] .= '; verifying pingback from ' . $remote_ip; + } + + return $r; +} + +function akismet_pre_check_pingback( $method ) { + + if ( $method !== 'pingback.ping' ) + return; + + global $wp_xmlrpc_server; + + if ( !is_object( $wp_xmlrpc_server ) ) + return false; + + // Lame: tightly coupled with the IXR class. + $args = $wp_xmlrpc_server->message->params; + + if ( !empty( $args[1] ) ) { + $post_id = url_to_postid( $args[1] ); + + // If this gets through the pre-check, make sure we properly identify the outbound request as a pingback verification + akismet_pingback_forwarded_for( null, $args[0] ); + add_filter( 'http_request_args', 'akismet_pingback_forwarded_for', 10, 2 ); + + $comment = array( + 'comment_author_url' => $args[0], + 'comment_post_ID' => $post_id, + 'comment_author' => '', + 'comment_author_email' => '', + 'comment_content' => '', + 'comment_type' => 'pingback', + 'akismet_pre_check' => '1', + 'comment_pingback_target' => $args[1], + ); + + $comment = akismet_auto_check_comment( $comment ); + + if ( isset( $comment['akismet_result'] ) && 'true' == $comment['akismet_result'] ) { + // Lame: tightly coupled with the IXR classes. Unfortunately the action provides no context and no way to return anything. + $wp_xmlrpc_server->error( new IXR_Error( 0, 'Invalid discovery target' ) ); + } + } +} + +// Run this early in the pingback call, before doing a remote fetch of the source uri +add_action( 'xmlrpc_call', 'akismet_pre_check_pingback' ); + global $wp_version; if ( '3.0.5' == $wp_version ) { remove_filter( 'comment_text', 'wp_kses_data' ); diff --git a/wp-content/plugins/akismet/readme.txt b/wp-content/plugins/akismet/readme.txt index d0094d20..fca32ab7 100644 --- a/wp-content/plugins/akismet/readme.txt +++ b/wp-content/plugins/akismet/readme.txt @@ -2,8 +2,8 @@ Contributors: matt, ryan, andy, mdawaffe, tellyworth, josephscott, lessbloat, eoigal, automattic Tags: akismet, comments, spam Requires at least: 3.0 -Tested up to: 3.6 -Stable tag: 2.5.9 +Tested up to: 3.8.1 +Stable tag: 2.6.0 License: GPLv2 or later Akismet checks your comments against the Akismet web service to see if they look like spam or not. @@ -31,6 +31,14 @@ Upload the Akismet plugin to your blog, Activate it, then enter your [Akismet.co == Changelog == += 2.6.0 = +* Add ajax paging to the check for spam button to handle large volumes of comments +* Optimize javascript and add localization support +* Fix bug in link to spam comments from right now dashboard widget +* Fix bug with deleting old comments to avoid timeouts dealing with large volumes of comments +* Include X-Pingback-Forwarded-For header in outbound WordPress pingback verifications +* Add pre-check for pingbacks, to stop spam before an outbound verification request is made + = 2.5.9 = * Update 'Already have a key' link to redirect page rather than depend on javascript * Fix some non-translatable strings to be translatable diff --git a/wp-content/themes/twentyfourteen/languages/twentyfourteen.pot b/wp-content/themes/twentyfourteen/languages/twentyfourteen.pot index 58e61c9f..ad22e646 100644 --- a/wp-content/themes/twentyfourteen/languages/twentyfourteen.pot +++ b/wp-content/themes/twentyfourteen/languages/twentyfourteen.pot @@ -1,14 +1,14 @@ -# Copyright (C) 2013 the WordPress team +# Copyright (C) 2014 the WordPress team # This file is distributed under the GNU General Public License v2 or later. msgid "" msgstr "" "Project-Id-Version: Twenty Fourteen 1.0\n" "Report-Msgid-Bugs-To: http://wordpress.org/tags/twentyfourteen\n" -"POT-Creation-Date: 2013-12-12 05:25:07+00:00\n" +"POT-Creation-Date: 2014-03-18 19:16:26+00:00\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"PO-Revision-Date: 2013-MO-DA HO:MI+ZONE\n" +"PO-Revision-Date: 2014-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/wp-content/themes/twentythirteen/languages/twentythirteen.pot b/wp-content/themes/twentythirteen/languages/twentythirteen.pot index 6f877365..9f56bcc6 100644 --- a/wp-content/themes/twentythirteen/languages/twentythirteen.pot +++ b/wp-content/themes/twentythirteen/languages/twentythirteen.pot @@ -1,14 +1,14 @@ -# Copyright (C) 2013 the WordPress team +# Copyright (C) 2014 the WordPress team # This file is distributed under the GNU General Public License v2 or later. msgid "" msgstr "" "Project-Id-Version: Twenty Thirteen 1.1\n" "Report-Msgid-Bugs-To: http://wordpress.org/tags/twentythirteen\n" -"POT-Creation-Date: 2013-10-24 20:32:06+00:00\n" +"POT-Creation-Date: 2014-03-18 19:16:26+00:00\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"PO-Revision-Date: 2013-MO-DA HO:MI+ZONE\n" +"PO-Revision-Date: 2014-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/wp-content/themes/twentytwelve/languages/twentytwelve.pot b/wp-content/themes/twentytwelve/languages/twentytwelve.pot index a504372e..4f35f4ab 100644 --- a/wp-content/themes/twentytwelve/languages/twentytwelve.pot +++ b/wp-content/themes/twentytwelve/languages/twentytwelve.pot @@ -1,14 +1,14 @@ -# Copyright (C) 2013 the WordPress team +# Copyright (C) 2014 the WordPress team # This file is distributed under the GNU General Public License v2 or later. msgid "" msgstr "" "Project-Id-Version: Twenty Twelve 1.3\n" "Report-Msgid-Bugs-To: http://wordpress.org/tags/twentytwelve\n" -"POT-Creation-Date: 2013-10-24 20:32:05+00:00\n" +"POT-Creation-Date: 2014-03-18 19:16:25+00:00\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"PO-Revision-Date: 2013-MO-DA HO:MI+ZONE\n" +"PO-Revision-Date: 2014-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/wp-includes/bookmark.php b/wp-includes/bookmark.php index af418167..86ea3d22 100644 --- a/wp-includes/bookmark.php +++ b/wp-includes/bookmark.php @@ -226,8 +226,8 @@ function get_bookmarks($args = '') { $join = " INNER JOIN $wpdb->term_relationships AS tr ON ($wpdb->links.link_id = tr.object_id) INNER JOIN $wpdb->term_taxonomy as tt ON tt.term_taxonomy_id = tr.term_taxonomy_id"; } - if ( $show_updated && get_option('links_recently_updated_time') ) { - $recently_updated_test = ", IF (DATE_ADD(link_updated, INTERVAL " . get_option('links_recently_updated_time') . " MINUTE) >= NOW(), 1,0) as recently_updated "; + if ( $show_updated ) { + $recently_updated_test = ", IF (DATE_ADD(link_updated, INTERVAL 120 MINUTE) >= NOW(), 1,0) as recently_updated "; } else { $recently_updated_test = ''; } diff --git a/wp-includes/class-wp-xmlrpc-server.php b/wp-includes/class-wp-xmlrpc-server.php index 1ab005b8..255a29c4 100644 --- a/wp-includes/class-wp-xmlrpc-server.php +++ b/wp-includes/class-wp-xmlrpc-server.php @@ -5390,11 +5390,18 @@ class wp_xmlrpc_server extends IXR_Server { // very stupid, but gives time to the 'from' server to publish ! sleep(1); + $remote_ip = preg_replace( '/[^0-9a-fA-F:., ]/', '', $_SERVER['REMOTE_ADDR'] ); + $user_agent = apply_filters( 'http_headers_useragent', 'WordPress/' . $GLOBALS['wp_version'] . '; ' . get_bloginfo( 'url' ) ); + // Let's check the remote site $http_api_args = array( 'timeout' => 10, 'redirection' => 0, 'limit_response_size' => 153600, // 150 KB + 'user-agent' => "$user_agent; verifying pingback from $remote_ip", + 'headers' => array( + 'X-Pingback-Forwarded-For' => $remote_ip, + ), ); $linea = wp_remote_retrieve_body( wp_safe_remote_get( $pagelinkedfrom, $http_api_args ) ); diff --git a/wp-includes/js/plupload/plupload.silverlight.xap b/wp-includes/js/plupload/plupload.silverlight.xap index e1584d3b1a9960ed66af1d9b9980126bceb5cc70..20c8fd82bd140c4ac7f54bbf73598a935e26cc77 100644 GIT binary patch delta 39662 zcmV)IK)k=}*aH060)J3T0|XQR00;;GS5EapHuweg+yDRog8={l5C8xGL2z(QVQy(= zWpi{ccwud9g^$fj12GhZ_d?$x30{h#oaJoea~hgpd|nfwd$mK&qwUAPss%Fk4U;v;E>E4$L&TbI zLoujBi_l#B>liuP_dXkkFPO*#U-Mg#u#orjB}l%S-7q#;42?>ee$-LFG&qT@R6FJH zTA8QNCw=7#tr;DMiF20tBWxIrqMq zmk_M|{=WbJ=lA*i9mu)&oO|!N+qviN_Z{2*BPKJ(obY$x0Ao8C|FyAy|Jw+E{>Vdq zc7Lz?S3`CrCFW~^YcYaB$! zpUm3MCxq}oo*uB}p%M5V%{bp(@<5q%Fn=!?>yr*PnEeMoNS|gyHNcOw;q_~}&R7HH zdE-UC+8lio##t<^PiNAdV5hV#6n>6(^zjF!(N>@C>Pdk|uShfbTX>MasqDMocfap` z-~GP(efRtB_ucQi-*><7e&7AR`~Cm&x3Hbh5pixRF&Arlg0YD|Va%F2KKmGBXMf25 z8Bb@wKh5@6#qv{na&y6-BJ2V2S0&aKB#{WsMz_0Lek^}ZTO4+Olo@AX;_vA9Ck^l? zH_GfnYaWgZBUS$d5G`g*-&hXZBKjru5W0HT1rFwnmLPeMo&5bgd9a;)VV+!JCts8& zSK7%x$de;LuBnuwrGV4~8=b6+r+?j$q5u_1&W#2ilAH-Tn35ZV_RI_5kQPbURR%Zaw&yup3oqyEh;7}_o zb(<8(vqbS@p5;1EdK~%oVV(UbD1J&EAZk&nXZO6X3dQBmYg-A#Q$ z$hjsA;>=MP3_js97(C)F_N(<_;rcc`nY;5om;S)nJ%<%qL}0 zKos+8C6v$=l9TxFO%FPtq^RcAYAE4Rg+oo;7FW#}fjkdLHwbSw&VPkC8$)v_lyi&= zR}jh)M4i{I8F$GMH`K@-g&Ns_O-t_0HDKa44CY83Ar%~{C!~@iwP0+Bke$opga*_S zWYrZCO;kI_!QW-@*Wx5sD$gvIN>dXrJ*%Qd=Bta_lV&P}}Ra?ddw86LZ#(Ou4WyONfe|c_mCZh0 NfQrCPsQSh?%6t0k2pP^i0E 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 diff --git a/wp-includes/pluggable.php b/wp-includes/pluggable.php index aca94f36..d84cb0a2 100644 --- a/wp-includes/pluggable.php +++ b/wp-includes/pluggable.php @@ -543,7 +543,7 @@ function wp_validate_auth_cookie($cookie = '', $scheme = '') { $key = wp_hash($username . $pass_frag . '|' . $expiration, $scheme); $hash = hash_hmac('md5', $username . '|' . $expiration, $key); - if ( $hmac != $hash ) { + if ( hash_hmac( 'md5', $hmac, $key ) !== hash_hmac( 'md5', $hash, $key ) ) { do_action('auth_cookie_bad_hash', $cookie_elements); return false; } diff --git a/wp-includes/post-template.php b/wp-includes/post-template.php index 522ad3e1..37290d5b 100644 --- a/wp-includes/post-template.php +++ b/wp-includes/post-template.php @@ -1248,8 +1248,7 @@ function get_the_password_form( $post = 0 ) { $label = 'pwbox-' . ( empty($post->ID) ? rand() : $post->ID ); $output = '

' . __( 'This content is password protected. To view it please enter your password below:' ) . '

-

- +

'; return apply_filters( 'the_password_form', $output ); } @@ -1443,3 +1442,22 @@ function wp_list_post_revisions( $post_id = 0, $type = 'all' ) { echo $rows; echo ""; } + +/** + * Dashboard CSS fixes for 3.8.2. + * + * This function cheaply fixes #WP27082 and #WP26910 in lieu of + * changing the massive wp-admin.css file in a point release. + * This lucky includes file was already receiving an update. + * + * @since 3.8.2 + * @access private + */ +function wp_382_css_hotfix() { + echo ' +'; +} +add_action( 'admin_print_styles', 'wp_382_css_hotfix', 30 ); diff --git a/wp-includes/query.php b/wp-includes/query.php index 8bf292e1..446cebca 100644 --- a/wp-includes/query.php +++ b/wp-includes/query.php @@ -3273,7 +3273,11 @@ class WP_Query { $term = get_term_by( 'slug', $this->get( 'category_name' ), 'category' ); } } elseif ( $this->is_tag ) { - $term = get_term( $this->get( 'tag_id' ), 'post_tag' ); + if ( $this->get( 'tag_id' ) ) { + $term = get_term( $this->get( 'tag_id' ), 'post_tag' ); + } elseif ( $this->get( 'tag' ) ) { + $term = get_term_by( 'slug', $this->get( 'tag' ), 'post_tag' ); + } } else { $tax_query_in_and = wp_list_filter( $this->tax_query->queries, array( 'operator' => 'NOT IN' ), 'NOT' ); $query = reset( $tax_query_in_and ); diff --git a/wp-includes/update.php b/wp-includes/update.php index c670f9d0..ead8e398 100644 --- a/wp-includes/update.php +++ b/wp-includes/update.php @@ -168,9 +168,10 @@ function wp_version_check( $extra_stats = array(), $force_check = false ) { * @since 2.3.0 * @uses $wp_version Used to notify the WordPress version. * + * @param array $extra_stats Extra statistics to report to the WordPress.org API. * @return mixed Returns null if update is unsupported. Returns false if check is too soon. */ -function wp_update_plugins() { +function wp_update_plugins( $extra_stats = array() ) { include ABSPATH . WPINC . '/version.php'; // include an unmodified $wp_version if ( defined('WP_INSTALLING') ) @@ -209,7 +210,7 @@ function wp_update_plugins() { $time_not_changed = isset( $current->last_checked ) && $timeout > ( time() - $current->last_checked ); - if ( $time_not_changed ) { + if ( $time_not_changed && ! $extra_stats ) { $plugin_changed = false; foreach ( $plugins as $file => $p ) { $new_option->checked[ $file ] = $p['Version']; @@ -258,6 +259,10 @@ function wp_update_plugins() { 'user-agent' => 'WordPress/' . $wp_version . '; ' . get_bloginfo( 'url' ) ); + if ( $extra_stats ) { + $options['body']['update_stats'] = json_encode( $extra_stats ); + } + $url = $http_url = 'http://api.wordpress.org/plugins/update-check/1.1/'; if ( $ssl = wp_http_supports( array( 'ssl' ) ) ) $url = set_url_scheme( $url, 'https' ); @@ -299,9 +304,10 @@ function wp_update_plugins() { * @since 2.7.0 * @uses $wp_version Used to notify the WordPress version. * + * @param array $extra_stats Extra statistics to report to the WordPress.org API. * @return mixed Returns null if update is unsupported. Returns false if check is too soon. */ -function wp_update_themes() { +function wp_update_themes( $extra_stats = array() ) { include ABSPATH . WPINC . '/version.php'; // include an unmodified $wp_version if ( defined( 'WP_INSTALLING' ) ) @@ -351,7 +357,7 @@ function wp_update_themes() { $time_not_changed = isset( $last_update->last_checked ) && $timeout > ( time() - $last_update->last_checked ); - if ( $time_not_changed ) { + if ( $time_not_changed && ! $extra_stats ) { $theme_changed = false; foreach ( $checked as $slug => $v ) { if ( !isset( $last_update->checked[ $slug ] ) || strval($last_update->checked[ $slug ]) !== strval($v) ) @@ -398,6 +404,10 @@ function wp_update_themes() { 'user-agent' => 'WordPress/' . $wp_version . '; ' . get_bloginfo( 'url' ) ); + if ( $extra_stats ) { + $options['body']['update_stats'] = json_encode( $extra_stats ); + } + $url = $http_url = 'http://api.wordpress.org/themes/update-check/1.1/'; if ( $ssl = wp_http_supports( array( 'ssl' ) ) ) $url = set_url_scheme( $url, 'https' ); @@ -610,14 +620,14 @@ add_action( 'load-update.php', 'wp_update_plugins' ); add_action( 'load-update-core.php', 'wp_update_plugins' ); add_action( 'admin_init', '_maybe_update_plugins' ); add_action( 'wp_update_plugins', 'wp_update_plugins' ); -add_action( 'upgrader_process_complete', 'wp_update_plugins' ); +add_action( 'upgrader_process_complete', 'wp_update_plugins', 10, 0 ); add_action( 'load-themes.php', 'wp_update_themes' ); add_action( 'load-update.php', 'wp_update_themes' ); add_action( 'load-update-core.php', 'wp_update_themes' ); add_action( 'admin_init', '_maybe_update_themes' ); add_action( 'wp_update_themes', 'wp_update_themes' ); -add_action( 'upgrader_process_complete', 'wp_update_themes' ); +add_action( 'upgrader_process_complete', 'wp_update_themes', 10, 0 ); add_action( 'wp_maybe_auto_update', 'wp_maybe_auto_update' ); diff --git a/wp-includes/version.php b/wp-includes/version.php index b9e99e27..b2496327 100644 --- a/wp-includes/version.php +++ b/wp-includes/version.php @@ -4,7 +4,7 @@ * * @global string $wp_version */ -$wp_version = '3.8.1'; +$wp_version = '3.8.2'; /** * Holds the WordPress DB revision, increments when changes are made to the WordPress DB schema. -- 2.44.0