diff -r c7c34916027a -r 177826044cd9 wp/wp-admin/includes/ajax-actions.php --- a/wp/wp-admin/includes/ajax-actions.php Mon Oct 14 18:06:33 2019 +0200 +++ b/wp/wp-admin/includes/ajax-actions.php Mon Oct 14 18:28:13 2019 +0200 @@ -23,12 +23,13 @@ $response = array(); // screen_id is the same as $current_screen->id and the JS global 'pagenow'. - if ( ! empty($_POST['screen_id']) ) - $screen_id = sanitize_key($_POST['screen_id']); - else + if ( ! empty( $_POST['screen_id'] ) ) { + $screen_id = sanitize_key( $_POST['screen_id'] ); + } else { $screen_id = 'front'; - - if ( ! empty($_POST['data']) ) { + } + + if ( ! empty( $_POST['data'] ) ) { $data = wp_unslash( (array) $_POST['data'] ); /** @@ -36,20 +37,20 @@ * * @since 3.6.0 * - * @param array|object $response The no-priv Heartbeat response object or array. - * @param array $data An array of data passed via $_POST. - * @param string $screen_id The screen id. + * @param array $response The no-priv Heartbeat response. + * @param array $data The $_POST data sent. + * @param string $screen_id The screen id. */ $response = apply_filters( 'heartbeat_nopriv_received', $response, $data, $screen_id ); } /** - * Filters Heartbeat Ajax response when no data is passed. + * Filters Heartbeat Ajax response in no-privilege environments when no data is passed. * * @since 3.6.0 * - * @param array|object $response The Heartbeat response object or array. - * @param string $screen_id The screen id. + * @param array $response The no-priv Heartbeat response. + * @param string $screen_id The screen id. */ $response = apply_filters( 'heartbeat_nopriv_send', $response, $screen_id ); @@ -60,15 +61,15 @@ * * @since 3.6.0 * - * @param array|object $response The no-priv Heartbeat response. - * @param string $screen_id The screen id. + * @param array $response The no-priv Heartbeat response. + * @param string $screen_id The screen id. */ do_action( 'heartbeat_nopriv_tick', $response, $screen_id ); // Send the current time according to the server. $response['server_time'] = time(); - wp_send_json($response); + wp_send_json( $response ); } // @@ -109,7 +110,7 @@ } $taxonomy = sanitize_key( $_GET['tax'] ); - $tax = get_taxonomy( $taxonomy ); + $tax = get_taxonomy( $taxonomy ); if ( ! $tax ) { wp_die( 0 ); } @@ -121,11 +122,12 @@ $s = wp_unslash( $_GET['q'] ); $comma = _x( ',', 'tag delimiter' ); - if ( ',' !== $comma ) + if ( ',' !== $comma ) { $s = str_replace( $comma, ',', $s ); + } if ( false !== strpos( $s, ',' ) ) { $s = explode( ',', $s ); - $s = $s[count( $s ) - 1]; + $s = $s[ count( $s ) - 1 ]; } $s = trim( $s ); @@ -144,11 +146,18 @@ * Require $term_search_min_chars chars for matching (default: 2) * ensure it's a non-negative, non-zero integer. */ - if ( ( $term_search_min_chars == 0 ) || ( strlen( $s ) < $term_search_min_chars ) ){ + if ( ( $term_search_min_chars == 0 ) || ( strlen( $s ) < $term_search_min_chars ) ) { wp_die(); } - $results = get_terms( $taxonomy, array( 'name__like' => $s, 'fields' => 'names', 'hide_empty' => false ) ); + $results = get_terms( + $taxonomy, + array( + 'name__like' => $s, + 'fields' => 'names', + 'hide_empty' => false, + ) + ); echo join( $results, "\n" ); wp_die(); @@ -160,33 +169,35 @@ * @since 3.1.0 */ function wp_ajax_wp_compression_test() { - if ( !current_user_can( 'manage_options' ) ) + if ( ! current_user_can( 'manage_options' ) ) { wp_die( -1 ); - - if ( ini_get('zlib.output_compression') || 'ob_gzhandler' == ini_get('output_handler') ) { - update_site_option('can_compress_scripts', 0); + } + + if ( ini_get( 'zlib.output_compression' ) || 'ob_gzhandler' == ini_get( 'output_handler' ) ) { + update_site_option( 'can_compress_scripts', 0 ); wp_die( 0 ); } - if ( isset($_GET['test']) ) { + if ( isset( $_GET['test'] ) ) { header( 'Expires: Wed, 11 Jan 1984 05:00:00 GMT' ); header( 'Last-Modified: ' . gmdate( 'D, d M Y H:i:s' ) . ' GMT' ); header( 'Cache-Control: no-cache, must-revalidate, max-age=0' ); - header('Content-Type: application/javascript; charset=UTF-8'); - $force_gzip = ( defined('ENFORCE_GZIP') && ENFORCE_GZIP ); - $test_str = '"wpCompressionTest Lorem ipsum dolor sit amet consectetuer mollis sapien urna ut a. Eu nonummy condimentum fringilla tempor pretium platea vel nibh netus Maecenas. Hac molestie amet justo quis pellentesque est ultrices interdum nibh Morbi. Cras mattis pretium Phasellus ante ipsum ipsum ut sociis Suspendisse Lorem. Ante et non molestie. Porta urna Vestibulum egestas id congue nibh eu risus gravida sit. Ac augue auctor Ut et non a elit massa id sodales. Elit eu Nulla at nibh adipiscing mattis lacus mauris at tempus. Netus nibh quis suscipit nec feugiat eget sed lorem et urna. Pellentesque lacus at ut massa consectetuer ligula ut auctor semper Pellentesque. Ut metus massa nibh quam Curabitur molestie nec mauris congue. Volutpat molestie elit justo facilisis neque ac risus Ut nascetur tristique. Vitae sit lorem tellus et quis Phasellus lacus tincidunt nunc Fusce. Pharetra wisi Suspendisse mus sagittis libero lacinia Integer consequat ac Phasellus. Et urna ac cursus tortor aliquam Aliquam amet tellus volutpat Vestibulum. Justo interdum condimentum In augue congue tellus sollicitudin Quisque quis nibh."'; - - if ( 1 == $_GET['test'] ) { - echo $test_str; - wp_die(); - } elseif ( 2 == $_GET['test'] ) { - if ( !isset($_SERVER['HTTP_ACCEPT_ENCODING']) ) + header( 'Content-Type: application/javascript; charset=UTF-8' ); + $force_gzip = ( defined( 'ENFORCE_GZIP' ) && ENFORCE_GZIP ); + $test_str = '"wpCompressionTest Lorem ipsum dolor sit amet consectetuer mollis sapien urna ut a. Eu nonummy condimentum fringilla tempor pretium platea vel nibh netus Maecenas. Hac molestie amet justo quis pellentesque est ultrices interdum nibh Morbi. Cras mattis pretium Phasellus ante ipsum ipsum ut sociis Suspendisse Lorem. Ante et non molestie. Porta urna Vestibulum egestas id congue nibh eu risus gravida sit. Ac augue auctor Ut et non a elit massa id sodales. Elit eu Nulla at nibh adipiscing mattis lacus mauris at tempus. Netus nibh quis suscipit nec feugiat eget sed lorem et urna. Pellentesque lacus at ut massa consectetuer ligula ut auctor semper Pellentesque. Ut metus massa nibh quam Curabitur molestie nec mauris congue. Volutpat molestie elit justo facilisis neque ac risus Ut nascetur tristique. Vitae sit lorem tellus et quis Phasellus lacus tincidunt nunc Fusce. Pharetra wisi Suspendisse mus sagittis libero lacinia Integer consequat ac Phasellus. Et urna ac cursus tortor aliquam Aliquam amet tellus volutpat Vestibulum. Justo interdum condimentum In augue congue tellus sollicitudin Quisque quis nibh."'; + + if ( 1 == $_GET['test'] ) { + echo $test_str; + wp_die(); + } elseif ( 2 == $_GET['test'] ) { + if ( ! isset( $_SERVER['HTTP_ACCEPT_ENCODING'] ) ) { wp_die( -1 ); - if ( false !== stripos( $_SERVER['HTTP_ACCEPT_ENCODING'], 'deflate') && function_exists('gzdeflate') && ! $force_gzip ) { - header('Content-Encoding: deflate'); + } + if ( false !== stripos( $_SERVER['HTTP_ACCEPT_ENCODING'], 'deflate' ) && function_exists( 'gzdeflate' ) && ! $force_gzip ) { + header( 'Content-Encoding: deflate' ); $out = gzdeflate( $test_str, 1 ); - } elseif ( false !== stripos( $_SERVER['HTTP_ACCEPT_ENCODING'], 'gzip') && function_exists('gzencode') ) { - header('Content-Encoding: gzip'); + } elseif ( false !== stripos( $_SERVER['HTTP_ACCEPT_ENCODING'], 'gzip' ) && function_exists( 'gzencode' ) ) { + header( 'Content-Encoding: gzip' ); $out = gzencode( $test_str, 1 ); } else { wp_die( -1 ); @@ -195,10 +206,10 @@ wp_die(); } elseif ( 'no' == $_GET['test'] ) { check_ajax_referer( 'update_can_compress_scripts' ); - update_site_option('can_compress_scripts', 0); + update_site_option( 'can_compress_scripts', 0 ); } elseif ( 'yes' == $_GET['test'] ) { check_ajax_referer( 'update_can_compress_scripts' ); - update_site_option('can_compress_scripts', 1); + update_site_option( 'can_compress_scripts', 1 ); } } @@ -211,15 +222,17 @@ * @since 3.1.0 */ function wp_ajax_imgedit_preview() { - $post_id = intval($_GET['postid']); - if ( empty($post_id) || !current_user_can('edit_post', $post_id) ) + $post_id = intval( $_GET['postid'] ); + if ( empty( $post_id ) || ! current_user_can( 'edit_post', $post_id ) ) { wp_die( -1 ); + } check_ajax_referer( "image_editor-$post_id" ); include_once( ABSPATH . 'wp-admin/includes/image-edit.php' ); - if ( ! stream_preview_image($post_id) ) + if ( ! stream_preview_image( $post_id ) ) { wp_die( -1 ); + } wp_die(); } @@ -242,12 +255,14 @@ * @since 3.4.0 */ function wp_ajax_autocomplete_user() { - if ( ! is_multisite() || ! current_user_can( 'promote_users' ) || wp_is_large_network( 'users' ) ) + if ( ! is_multisite() || ! current_user_can( 'promote_users' ) || wp_is_large_network( 'users' ) ) { wp_die( -1 ); + } /** This filter is documented in wp-admin/user-new.php */ - if ( ! current_user_can( 'manage_network_users' ) && ! apply_filters( 'autocomplete_users_for_site_admins', false ) ) + if ( ! current_user_can( 'manage_network_users' ) && ! apply_filters( 'autocomplete_users_for_site_admins', false ) ) { wp_die( -1 ); + } $return = array(); @@ -274,16 +289,28 @@ $id = get_current_blog_id(); } - $include_blog_users = ( $type == 'search' ? get_users( array( 'blog_id' => $id, 'fields' => 'ID' ) ) : array() ); - $exclude_blog_users = ( $type == 'add' ? get_users( array( 'blog_id' => $id, 'fields' => 'ID' ) ) : array() ); - - $users = get_users( array( - 'blog_id' => false, - 'search' => '*' . $_REQUEST['term'] . '*', - 'include' => $include_blog_users, - 'exclude' => $exclude_blog_users, - 'search_columns' => array( 'user_login', 'user_nicename', 'user_email' ), - ) ); + $include_blog_users = ( $type == 'search' ? get_users( + array( + 'blog_id' => $id, + 'fields' => 'ID', + ) + ) : array() ); + $exclude_blog_users = ( $type == 'add' ? get_users( + array( + 'blog_id' => $id, + 'fields' => 'ID', + ) + ) : array() ); + + $users = get_users( + array( + 'blog_id' => false, + 'search' => '*' . $_REQUEST['term'] . '*', + 'include' => $include_blog_users, + 'exclude' => $exclude_blog_users, + 'search_columns' => array( 'user_login', 'user_nicename', 'user_email' ), + ) + ); foreach ( $users as $user ) { $return[] = array( @@ -315,9 +342,11 @@ $ip_changed = false; if ( is_wp_error( $events ) ) { - wp_send_json_error( array( - 'error' => $events->get_error_message(), - ) ); + wp_send_json_error( + array( + 'error' => $events->get_error_message(), + ) + ); } else { if ( empty( $saved_location['ip'] ) && ! empty( $events['location']['ip'] ) ) { $ip_changed = true; @@ -329,10 +358,10 @@ * The location should only be updated when it changes. The API doesn't always return * a full location; sometimes it's missing the description or country. The location * that was saved during the initial request is known to be good and complete, though. - * It should be left in tact until the user explicitly changes it (either by manually + * It should be left intact until the user explicitly changes it (either by manually * searching for a new location, or by changing their IP address). * - * If the location were updated with an incomplete response from the API, then it could + * If the location was updated with an incomplete response from the API, then it could * break assumptions that the UI makes (e.g., that there will always be a description * that corresponds to a latitude/longitude location). * @@ -360,7 +389,7 @@ } switch ( $_GET['widget'] ) { - case 'dashboard_primary' : + case 'dashboard_primary': wp_dashboard_primary(); break; } @@ -392,10 +421,10 @@ * @param int $delta */ function _wp_ajax_delete_comment_response( $comment_id, $delta = -1 ) { - $total = isset( $_POST['_total'] ) ? (int) $_POST['_total'] : 0; + $total = isset( $_POST['_total'] ) ? (int) $_POST['_total'] : 0; $per_page = isset( $_POST['_per_page'] ) ? (int) $_POST['_per_page'] : 0; - $page = isset( $_POST['_page'] ) ? (int) $_POST['_page'] : 0; - $url = isset( $_POST['_url'] ) ? esc_url_raw( $_POST['_url'] ) : ''; + $page = isset( $_POST['_page'] ) ? (int) $_POST['_page'] : 0; + $url = isset( $_POST['_url'] ) ? esc_url_raw( $_POST['_url'] ) : ''; // JS didn't send us everything we need to know. Just die with success message if ( ! $total || ! $per_page || ! $page || ! $url ) { @@ -414,32 +443,37 @@ $counts = wp_count_comments(); - $x = new WP_Ajax_Response( array( - 'what' => 'comment', - // Here for completeness - not used. - 'id' => $comment_id, - 'supplemental' => array( - 'status' => $comment_status, - 'postId' => $comment ? $comment->comment_post_ID : '', - 'time' => $time, - 'in_moderation' => $counts->moderated, - 'i18n_comments_text' => sprintf( - _n( '%s Comment', '%s Comments', $counts->approved ), - number_format_i18n( $counts->approved ) + $x = new WP_Ajax_Response( + array( + 'what' => 'comment', + // Here for completeness - not used. + 'id' => $comment_id, + 'supplemental' => array( + 'status' => $comment_status, + 'postId' => $comment ? $comment->comment_post_ID : '', + 'time' => $time, + 'in_moderation' => $counts->moderated, + 'i18n_comments_text' => sprintf( + /* translators: %s: number of comments approved */ + _n( '%s Comment', '%s Comments', $counts->approved ), + number_format_i18n( $counts->approved ) + ), + 'i18n_moderation_text' => sprintf( + /* translators: %s: number of comments in moderation */ + _n( '%s Comment in moderation', '%s Comments in moderation', $counts->moderated ), + number_format_i18n( $counts->moderated ) + ), + 'comment_link' => $comment_link, ), - 'i18n_moderation_text' => sprintf( - _nx( '%s in moderation', '%s in moderation', $counts->moderated, 'comments' ), - number_format_i18n( $counts->moderated ) - ), - 'comment_link' => $comment_link, ) - ) ); + ); $x->send(); } $total += $delta; - if ( $total < 0 ) + if ( $total < 0 ) { $total = 0; + } // Only do the expensive stuff on a page-break, and about 1 other time per page if ( 0 == $total % $per_page || 1 == mt_rand( 1, $per_page ) ) { @@ -449,17 +483,20 @@ $parsed = parse_url( $url ); if ( isset( $parsed['query'] ) ) { parse_str( $parsed['query'], $query_vars ); - if ( !empty( $query_vars['comment_status'] ) ) + if ( ! empty( $query_vars['comment_status'] ) ) { $status = $query_vars['comment_status']; - if ( !empty( $query_vars['p'] ) ) + } + if ( ! empty( $query_vars['p'] ) ) { $post_id = (int) $query_vars['p']; - if ( ! empty( $query_vars['comment_type'] ) ) + } + if ( ! empty( $query_vars['comment_type'] ) ) { $type = $query_vars['comment_type']; + } } if ( empty( $type ) ) { // Only use the comment count if not filtering by a comment_type. - $comment_count = wp_count_comments($post_id); + $comment_count = wp_count_comments( $post_id ); // We're looking for a known type of comment count. if ( isset( $comment_count->$status ) ) { @@ -470,23 +507,32 @@ } // The time since the last comment count. - $time = time(); + $time = time(); $comment = get_comment( $comment_id ); - - $x = new WP_Ajax_Response( array( - 'what' => 'comment', - // Here for completeness - not used. - 'id' => $comment_id, - 'supplemental' => array( - 'status' => $comment ? $comment->comment_approved : '', - 'postId' => $comment ? $comment->comment_post_ID : '', - 'total_items_i18n' => sprintf( _n( '%s item', '%s items', $total ), number_format_i18n( $total ) ), - 'total_pages' => ceil( $total / $per_page ), - 'total_pages_i18n' => number_format_i18n( ceil( $total / $per_page ) ), - 'total' => $total, - 'time' => $time + $counts = wp_count_comments(); + + $x = new WP_Ajax_Response( + array( + 'what' => 'comment', + 'id' => $comment_id, + 'supplemental' => array( + 'status' => $comment ? $comment->comment_approved : '', + 'postId' => $comment ? $comment->comment_post_ID : '', + /* translators: %s: number of comments */ + 'total_items_i18n' => sprintf( _n( '%s item', '%s items', $total ), number_format_i18n( $total ) ), + 'total_pages' => ceil( $total / $per_page ), + 'total_pages_i18n' => number_format_i18n( ceil( $total / $per_page ) ), + 'total' => $total, + 'time' => $time, + 'in_moderation' => $counts->moderated, + 'i18n_moderation_text' => sprintf( + /* translators: %s: number of comments in moderation */ + _n( '%s Comment in moderation', '%s Comments in moderation', $counts->moderated ), + number_format_i18n( $counts->moderated ) + ), + ), ) - ) ); + ); $x->send(); } @@ -501,27 +547,31 @@ * @since 3.1.0 */ function _wp_ajax_add_hierarchical_term() { - $action = $_POST['action']; - $taxonomy = get_taxonomy(substr($action, 4)); + $action = $_POST['action']; + $taxonomy = get_taxonomy( substr( $action, 4 ) ); check_ajax_referer( $action, '_ajax_nonce-add-' . $taxonomy->name ); - if ( !current_user_can( $taxonomy->cap->edit_terms ) ) + if ( ! current_user_can( $taxonomy->cap->edit_terms ) ) { wp_die( -1 ); - $names = explode(',', $_POST['new'.$taxonomy->name]); - $parent = isset($_POST['new'.$taxonomy->name.'_parent']) ? (int) $_POST['new'.$taxonomy->name.'_parent'] : 0; - if ( 0 > $parent ) + } + $names = explode( ',', $_POST[ 'new' . $taxonomy->name ] ); + $parent = isset( $_POST[ 'new' . $taxonomy->name . '_parent' ] ) ? (int) $_POST[ 'new' . $taxonomy->name . '_parent' ] : 0; + if ( 0 > $parent ) { $parent = 0; - if ( $taxonomy->name == 'category' ) - $post_category = isset($_POST['post_category']) ? (array) $_POST['post_category'] : array(); - else - $post_category = ( isset($_POST['tax_input']) && isset($_POST['tax_input'][$taxonomy->name]) ) ? (array) $_POST['tax_input'][$taxonomy->name] : array(); + } + if ( $taxonomy->name == 'category' ) { + $post_category = isset( $_POST['post_category'] ) ? (array) $_POST['post_category'] : array(); + } else { + $post_category = ( isset( $_POST['tax_input'] ) && isset( $_POST['tax_input'][ $taxonomy->name ] ) ) ? (array) $_POST['tax_input'][ $taxonomy->name ] : array(); + } $checked_categories = array_map( 'absint', (array) $post_category ); - $popular_ids = wp_popular_terms_checklist($taxonomy->name, 0, 10, false); + $popular_ids = wp_popular_terms_checklist( $taxonomy->name, 0, 10, false ); foreach ( $names as $cat_name ) { - $cat_name = trim($cat_name); - $category_nicename = sanitize_title($cat_name); - if ( '' === $category_nicename ) + $cat_name = trim( $cat_name ); + $category_nicename = sanitize_title( $cat_name ); + if ( '' === $category_nicename ) { continue; + } $cat_id = wp_insert_term( $cat_name, $taxonomy->name, array( 'parent' => $parent ) ); if ( ! $cat_id || is_wp_error( $cat_id ) ) { @@ -530,54 +580,78 @@ $cat_id = $cat_id['term_id']; } $checked_categories[] = $cat_id; - if ( $parent ) // Do these all at once in a second + if ( $parent ) { // Do these all at once in a second continue; + } ob_start(); - wp_terms_checklist( 0, array( 'taxonomy' => $taxonomy->name, 'descendants_and_self' => $cat_id, 'selected_cats' => $checked_categories, 'popular_cats' => $popular_ids )); + wp_terms_checklist( + 0, + array( + 'taxonomy' => $taxonomy->name, + 'descendants_and_self' => $cat_id, + 'selected_cats' => $checked_categories, + 'popular_cats' => $popular_ids, + ) + ); $data = ob_get_clean(); $add = array( - 'what' => $taxonomy->name, - 'id' => $cat_id, - 'data' => str_replace( array("\n", "\t"), '', $data), - 'position' => -1 + 'what' => $taxonomy->name, + 'id' => $cat_id, + 'data' => str_replace( array( "\n", "\t" ), '', $data ), + 'position' => -1, ); } if ( $parent ) { // Foncy - replace the parent and all its children - $parent = get_term( $parent, $taxonomy->name ); + $parent = get_term( $parent, $taxonomy->name ); $term_id = $parent->term_id; while ( $parent->parent ) { // get the top parent $parent = get_term( $parent->parent, $taxonomy->name ); - if ( is_wp_error( $parent ) ) + if ( is_wp_error( $parent ) ) { break; + } $term_id = $parent->term_id; } ob_start(); - wp_terms_checklist( 0, array('taxonomy' => $taxonomy->name, 'descendants_and_self' => $term_id, 'selected_cats' => $checked_categories, 'popular_cats' => $popular_ids)); + wp_terms_checklist( + 0, + array( + 'taxonomy' => $taxonomy->name, + 'descendants_and_self' => $term_id, + 'selected_cats' => $checked_categories, + 'popular_cats' => $popular_ids, + ) + ); $data = ob_get_clean(); $add = array( - 'what' => $taxonomy->name, - 'id' => $term_id, - 'data' => str_replace( array("\n", "\t"), '', $data), - 'position' => -1 + 'what' => $taxonomy->name, + 'id' => $term_id, + 'data' => str_replace( array( "\n", "\t" ), '', $data ), + 'position' => -1, ); } ob_start(); - wp_dropdown_categories( array( - 'taxonomy' => $taxonomy->name, 'hide_empty' => 0, 'name' => 'new'.$taxonomy->name.'_parent', 'orderby' => 'name', - 'hierarchical' => 1, 'show_option_none' => '— '.$taxonomy->labels->parent_item.' —' - ) ); + wp_dropdown_categories( + array( + 'taxonomy' => $taxonomy->name, + 'hide_empty' => 0, + 'name' => 'new' . $taxonomy->name . '_parent', + 'orderby' => 'name', + 'hierarchical' => 1, + 'show_option_none' => '— ' . $taxonomy->labels->parent_item . ' —', + ) + ); $sup = ob_get_clean(); @@ -595,43 +669,52 @@ function wp_ajax_delete_comment() { $id = isset( $_POST['id'] ) ? (int) $_POST['id'] : 0; - if ( !$comment = get_comment( $id ) ) + if ( ! $comment = get_comment( $id ) ) { wp_die( time() ); - if ( ! current_user_can( 'edit_comment', $comment->comment_ID ) ) + } + if ( ! current_user_can( 'edit_comment', $comment->comment_ID ) ) { wp_die( -1 ); + } check_ajax_referer( "delete-comment_$id" ); $status = wp_get_comment_status( $comment ); $delta = -1; - if ( isset($_POST['trash']) && 1 == $_POST['trash'] ) { - if ( 'trash' == $status ) + if ( isset( $_POST['trash'] ) && 1 == $_POST['trash'] ) { + if ( 'trash' == $status ) { wp_die( time() ); + } $r = wp_trash_comment( $comment ); - } elseif ( isset($_POST['untrash']) && 1 == $_POST['untrash'] ) { - if ( 'trash' != $status ) + } elseif ( isset( $_POST['untrash'] ) && 1 == $_POST['untrash'] ) { + if ( 'trash' != $status ) { wp_die( time() ); + } $r = wp_untrash_comment( $comment ); - if ( ! isset( $_POST['comment_status'] ) || $_POST['comment_status'] != 'trash' ) // undo trash, not in trash + if ( ! isset( $_POST['comment_status'] ) || $_POST['comment_status'] != 'trash' ) { // undo trash, not in trash $delta = 1; - } elseif ( isset($_POST['spam']) && 1 == $_POST['spam'] ) { - if ( 'spam' == $status ) + } + } elseif ( isset( $_POST['spam'] ) && 1 == $_POST['spam'] ) { + if ( 'spam' == $status ) { wp_die( time() ); + } $r = wp_spam_comment( $comment ); - } elseif ( isset($_POST['unspam']) && 1 == $_POST['unspam'] ) { - if ( 'spam' != $status ) + } elseif ( isset( $_POST['unspam'] ) && 1 == $_POST['unspam'] ) { + if ( 'spam' != $status ) { wp_die( time() ); + } $r = wp_unspam_comment( $comment ); - if ( ! isset( $_POST['comment_status'] ) || $_POST['comment_status'] != 'spam' ) // undo spam, not in spam + if ( ! isset( $_POST['comment_status'] ) || $_POST['comment_status'] != 'spam' ) { // undo spam, not in spam $delta = 1; - } elseif ( isset($_POST['delete']) && 1 == $_POST['delete'] ) { + } + } elseif ( isset( $_POST['delete'] ) && 1 == $_POST['delete'] ) { $r = wp_delete_comment( $comment ); } else { wp_die( -1 ); } - if ( $r ) // Decide if we need to send back '1' or a more complicated response including page links and comment counts + if ( $r ) { // Decide if we need to send back '1' or a more complicated response including page links and comment counts _wp_ajax_delete_comment_response( $comment->comment_ID, $delta ); + } wp_die( 0 ); } @@ -648,15 +731,17 @@ wp_die( -1 ); } - $taxonomy = !empty($_POST['taxonomy']) ? $_POST['taxonomy'] : 'post_tag'; - $tag = get_term( $tag_id, $taxonomy ); - if ( !$tag || is_wp_error( $tag ) ) + $taxonomy = ! empty( $_POST['taxonomy'] ) ? $_POST['taxonomy'] : 'post_tag'; + $tag = get_term( $tag_id, $taxonomy ); + if ( ! $tag || is_wp_error( $tag ) ) { wp_die( 1 ); - - if ( wp_delete_term($tag_id, $taxonomy)) + } + + if ( wp_delete_term( $tag_id, $taxonomy ) ) { wp_die( 1 ); - else + } else { wp_die( 0 ); + } } /** @@ -668,17 +753,20 @@ $id = isset( $_POST['id'] ) ? (int) $_POST['id'] : 0; check_ajax_referer( "delete-bookmark_$id" ); - if ( !current_user_can( 'manage_links' ) ) + if ( ! current_user_can( 'manage_links' ) ) { wp_die( -1 ); + } $link = get_bookmark( $id ); - if ( !$link || is_wp_error( $link ) ) + if ( ! $link || is_wp_error( $link ) ) { wp_die( 1 ); - - if ( wp_delete_link( $id ) ) + } + + if ( wp_delete_link( $id ) ) { wp_die( 1 ); - else + } else { wp_die( 0 ); + } } /** @@ -690,13 +778,16 @@ $id = isset( $_POST['id'] ) ? (int) $_POST['id'] : 0; check_ajax_referer( "delete-meta_$id" ); - if ( !$meta = get_metadata_by_mid( 'post', $id ) ) + if ( ! $meta = get_metadata_by_mid( 'post', $id ) ) { wp_die( 1 ); - - if ( is_protected_meta( $meta->meta_key, 'post' ) || ! current_user_can( 'delete_post_meta', $meta->post_id, $meta->meta_key ) ) + } + + if ( is_protected_meta( $meta->meta_key, 'post' ) || ! current_user_can( 'delete_post_meta', $meta->post_id, $meta->meta_key ) ) { wp_die( -1 ); - if ( delete_meta( $meta->meta_id ) ) + } + if ( delete_meta( $meta->meta_id ) ) { wp_die( 1 ); + } wp_die( 0 ); } @@ -708,21 +799,25 @@ * @param string $action Action to perform. */ function wp_ajax_delete_post( $action ) { - if ( empty( $action ) ) + if ( empty( $action ) ) { $action = 'delete-post'; + } $id = isset( $_POST['id'] ) ? (int) $_POST['id'] : 0; check_ajax_referer( "{$action}_$id" ); - if ( !current_user_can( 'delete_post', $id ) ) + if ( ! current_user_can( 'delete_post', $id ) ) { wp_die( -1 ); - - if ( !get_post( $id ) ) + } + + if ( ! get_post( $id ) ) { wp_die( 1 ); - - if ( wp_delete_post( $id ) ) + } + + if ( wp_delete_post( $id ) ) { wp_die( 1 ); - else + } else { wp_die( 0 ); + } } /** @@ -733,24 +828,29 @@ * @param string $action Action to perform. */ function wp_ajax_trash_post( $action ) { - if ( empty( $action ) ) + if ( empty( $action ) ) { $action = 'trash-post'; + } $id = isset( $_POST['id'] ) ? (int) $_POST['id'] : 0; check_ajax_referer( "{$action}_$id" ); - if ( !current_user_can( 'delete_post', $id ) ) + if ( ! current_user_can( 'delete_post', $id ) ) { wp_die( -1 ); - - if ( !get_post( $id ) ) + } + + if ( ! get_post( $id ) ) { wp_die( 1 ); - - if ( 'trash-post' == $action ) + } + + if ( 'trash-post' == $action ) { $done = wp_trash_post( $id ); - else + } else { $done = wp_untrash_post( $id ); - - if ( $done ) + } + + if ( $done ) { wp_die( 1 ); + } wp_die( 0 ); } @@ -763,32 +863,39 @@ * @param string $action Action to perform. */ function wp_ajax_untrash_post( $action ) { - if ( empty( $action ) ) + if ( empty( $action ) ) { $action = 'untrash-post'; + } wp_ajax_trash_post( $action ); } /** + * Ajax handler to delete a page. + * * @since 3.1.0 * - * @param string $action + * @param string $action Action to perform. */ function wp_ajax_delete_page( $action ) { - if ( empty( $action ) ) + if ( empty( $action ) ) { $action = 'delete-page'; + } $id = isset( $_POST['id'] ) ? (int) $_POST['id'] : 0; check_ajax_referer( "{$action}_$id" ); - if ( !current_user_can( 'delete_page', $id ) ) + if ( ! current_user_can( 'delete_page', $id ) ) { wp_die( -1 ); - - if ( ! get_post( $id ) ) + } + + if ( ! get_post( $id ) ) { wp_die( 1 ); - - if ( wp_delete_post( $id ) ) + } + + if ( wp_delete_post( $id ) ) { wp_die( 1 ); - else + } else { wp_die( 0 ); + } } /** @@ -799,20 +906,25 @@ function wp_ajax_dim_comment() { $id = isset( $_POST['id'] ) ? (int) $_POST['id'] : 0; - if ( !$comment = get_comment( $id ) ) { - $x = new WP_Ajax_Response( array( - 'what' => 'comment', - 'id' => new WP_Error('invalid_comment', sprintf(__('Comment %d does not exist'), $id)) - ) ); + if ( ! $comment = get_comment( $id ) ) { + $x = new WP_Ajax_Response( + array( + 'what' => 'comment', + /* translators: %d: comment ID */ + 'id' => new WP_Error( 'invalid_comment', sprintf( __( 'Comment %d does not exist' ), $id ) ), + ) + ); $x->send(); } - if ( ! current_user_can( 'edit_comment', $comment->comment_ID ) && ! current_user_can( 'moderate_comments' ) ) + if ( ! current_user_can( 'edit_comment', $comment->comment_ID ) && ! current_user_can( 'moderate_comments' ) ) { wp_die( -1 ); + } $current = wp_get_comment_status( $comment ); - if ( isset( $_POST['new'] ) && $_POST['new'] == $current ) + if ( isset( $_POST['new'] ) && $_POST['new'] == $current ) { wp_die( time() ); + } check_ajax_referer( "approve-comment_$id" ); if ( in_array( $current, array( 'unapproved', 'spam' ) ) ) { @@ -821,11 +933,13 @@ $result = wp_set_comment_status( $comment, 'hold', true ); } - if ( is_wp_error($result) ) { - $x = new WP_Ajax_Response( array( - 'what' => 'comment', - 'id' => $result - ) ); + if ( is_wp_error( $result ) ) { + $x = new WP_Ajax_Response( + array( + 'what' => 'comment', + 'id' => $result, + ) + ); $x->send(); } @@ -842,20 +956,22 @@ * @param string $action Action to perform. */ function wp_ajax_add_link_category( $action ) { - if ( empty( $action ) ) + if ( empty( $action ) ) { $action = 'add-link-category'; + } check_ajax_referer( $action ); $tax = get_taxonomy( 'link_category' ); if ( ! current_user_can( $tax->cap->manage_terms ) ) { wp_die( -1 ); } - $names = explode(',', wp_unslash( $_POST['newcat'] ) ); - $x = new WP_Ajax_Response(); + $names = explode( ',', wp_unslash( $_POST['newcat'] ) ); + $x = new WP_Ajax_Response(); foreach ( $names as $cat_name ) { - $cat_name = trim($cat_name); - $slug = sanitize_title($cat_name); - if ( '' === $slug ) + $cat_name = trim( $cat_name ); + $slug = sanitize_title( $cat_name ); + if ( '' === $slug ) { continue; + } $cat_id = wp_insert_term( $cat_name, 'link_category' ); if ( ! $cat_id || is_wp_error( $cat_id ) ) { @@ -864,12 +980,14 @@ $cat_id = $cat_id['term_id']; } $cat_name = esc_html( $cat_name ); - $x->add( array( - 'what' => 'link-category', - 'id' => $cat_id, - 'data' => "
", - 'position' => -1 - ) ); + $x->add( + array( + 'what' => 'link-category', + 'id' => $cat_id, + 'data' => "", + 'position' => -1, + ) + ); } $x->send(); } @@ -881,32 +999,38 @@ */ function wp_ajax_add_tag() { check_ajax_referer( 'add-tag', '_wpnonce_add-tag' ); - $taxonomy = !empty($_POST['taxonomy']) ? $_POST['taxonomy'] : 'post_tag'; - $tax = get_taxonomy($taxonomy); - - if ( !current_user_can( $tax->cap->edit_terms ) ) + $taxonomy = ! empty( $_POST['taxonomy'] ) ? $_POST['taxonomy'] : 'post_tag'; + $tax = get_taxonomy( $taxonomy ); + + if ( ! current_user_can( $tax->cap->edit_terms ) ) { wp_die( -1 ); + } $x = new WP_Ajax_Response(); - $tag = wp_insert_term($_POST['tag-name'], $taxonomy, $_POST ); - - if ( !$tag || is_wp_error($tag) || (!$tag = get_term( $tag['term_id'], $taxonomy )) ) { - $message = __('An error has occurred. Please reload the page and try again.'); - if ( is_wp_error($tag) && $tag->get_error_message() ) + $tag = wp_insert_term( $_POST['tag-name'], $taxonomy, $_POST ); + + if ( ! $tag || is_wp_error( $tag ) || ( ! $tag = get_term( $tag['term_id'], $taxonomy ) ) ) { + $message = __( 'An error has occurred. Please reload the page and try again.' ); + if ( is_wp_error( $tag ) && $tag->get_error_message() ) { $message = $tag->get_error_message(); - - $x->add( array( - 'what' => 'taxonomy', - 'data' => new WP_Error('error', $message ) - ) ); + } + + $x->add( + array( + 'what' => 'taxonomy', + 'data' => new WP_Error( 'error', $message ), + ) + ); $x->send(); } $wp_list_table = _get_list_table( 'WP_Terms_List_Table', array( 'screen' => $_POST['screen'] ) ); - $level = 0; - if ( is_taxonomy_hierarchical($taxonomy) ) { + $level = 0; + $noparents = ''; + + if ( is_taxonomy_hierarchical( $taxonomy ) ) { $level = count( get_ancestors( $tag->term_id, $taxonomy, 'taxonomy' ) ); ob_start(); $wp_list_table->single_row( $tag, $level ); @@ -917,15 +1041,19 @@ $wp_list_table->single_row( $tag ); $parents = ob_get_clean(); - $x->add( array( - 'what' => 'taxonomy', - 'supplemental' => compact('parents', 'noparents') - ) ); - $x->add( array( - 'what' => 'term', - 'position' => $level, - 'supplemental' => (array) $tag - ) ); + $x->add( + array( + 'what' => 'taxonomy', + 'supplemental' => compact( 'parents', 'noparents' ), + ) + ); + $x->add( + array( + 'what' => 'term', + 'position' => $level, + 'supplemental' => (array) $tag, + ) + ); $x->send(); } @@ -940,7 +1068,7 @@ } $taxonomy = sanitize_key( $_POST['tax'] ); - $tax = get_taxonomy( $taxonomy ); + $tax = get_taxonomy( $taxonomy ); if ( ! $tax ) { wp_die( 0 ); } @@ -949,24 +1077,40 @@ wp_die( -1 ); } - $tags = get_terms( $taxonomy, array( 'number' => 45, 'orderby' => 'count', 'order' => 'DESC' ) ); - - if ( empty( $tags ) ) + $tags = get_terms( + $taxonomy, + array( + 'number' => 45, + 'orderby' => 'count', + 'order' => 'DESC', + ) + ); + + if ( empty( $tags ) ) { wp_die( $tax->labels->not_found ); - - if ( is_wp_error( $tags ) ) + } + + if ( is_wp_error( $tags ) ) { wp_die( $tags->get_error_message() ); + } foreach ( $tags as $key => $tag ) { $tags[ $key ]->link = '#'; - $tags[ $key ]->id = $tag->term_id; + $tags[ $key ]->id = $tag->term_id; } // We need raw tag names here, so don't filter the output - $return = wp_generate_tag_cloud( $tags, array( 'filter' => 0, 'format' => 'list' ) ); - - if ( empty($return) ) + $return = wp_generate_tag_cloud( + $tags, + array( + 'filter' => 0, + 'format' => 'list', + ) + ); + + if ( empty( $return ) ) { wp_die( 0 ); + } echo $return; @@ -1015,17 +1159,20 @@ $x = new WP_Ajax_Response(); ob_start(); foreach ( $wp_list_table->items as $comment ) { - if ( ! current_user_can( 'edit_comment', $comment->comment_ID ) && 0 === $comment->comment_approved ) + if ( ! current_user_can( 'edit_comment', $comment->comment_ID ) && 0 === $comment->comment_approved ) { continue; + } get_comment( $comment ); $wp_list_table->single_row( $comment ); } $comment_list_item = ob_get_clean(); - $x->add( array( - 'what' => 'comments', - 'data' => $comment_list_item - ) ); + $x->add( + array( + 'what' => 'comments', + 'data' => $comment_list_item, + ) + ); $x->send(); } @@ -1037,56 +1184,65 @@ * @param string $action Action to perform. */ function wp_ajax_replyto_comment( $action ) { - if ( empty( $action ) ) + if ( empty( $action ) ) { $action = 'replyto-comment'; + } check_ajax_referer( $action, '_ajax_nonce-replyto-comment' ); $comment_post_ID = (int) $_POST['comment_post_ID']; - $post = get_post( $comment_post_ID ); - if ( ! $post ) + $post = get_post( $comment_post_ID ); + if ( ! $post ) { wp_die( -1 ); - - if ( !current_user_can( 'edit_post', $comment_post_ID ) ) + } + + if ( ! current_user_can( 'edit_post', $comment_post_ID ) ) { wp_die( -1 ); - - if ( empty( $post->post_status ) ) + } + + if ( empty( $post->post_status ) ) { wp_die( 1 ); - elseif ( in_array($post->post_status, array('draft', 'pending', 'trash') ) ) - wp_die( __('ERROR: you are replying to a comment on a draft post.') ); + } elseif ( in_array( $post->post_status, array( 'draft', 'pending', 'trash' ) ) ) { + wp_die( __( 'ERROR: you are replying to a comment on a draft post.' ) ); + } $user = wp_get_current_user(); if ( $user->exists() ) { - $user_ID = $user->ID; + $user_ID = $user->ID; $comment_author = wp_slash( $user->display_name ); $comment_author_email = wp_slash( $user->user_email ); $comment_author_url = wp_slash( $user->user_url ); $comment_content = trim( $_POST['content'] ); $comment_type = isset( $_POST['comment_type'] ) ? trim( $_POST['comment_type'] ) : ''; if ( current_user_can( 'unfiltered_html' ) ) { - if ( ! isset( $_POST['_wp_unfiltered_html_comment'] ) ) + if ( ! isset( $_POST['_wp_unfiltered_html_comment'] ) ) { $_POST['_wp_unfiltered_html_comment'] = ''; + } if ( wp_create_nonce( 'unfiltered-html-comment' ) != $_POST['_wp_unfiltered_html_comment'] ) { kses_remove_filters(); // start with a clean slate kses_init_filters(); // set up the filters + remove_filter( 'pre_comment_content', 'wp_filter_post_kses' ); + add_filter( 'pre_comment_content', 'wp_filter_kses' ); } } } else { wp_die( __( 'Sorry, you must be logged in to reply to a comment.' ) ); } - if ( '' == $comment_content ) + if ( '' == $comment_content ) { wp_die( __( 'ERROR: please type a comment.' ) ); + } $comment_parent = 0; - if ( isset( $_POST['comment_ID'] ) ) + if ( isset( $_POST['comment_ID'] ) ) { $comment_parent = absint( $_POST['comment_ID'] ); + } $comment_auto_approved = false; - $commentdata = compact('comment_post_ID', 'comment_author', 'comment_author_email', 'comment_author_url', 'comment_content', 'comment_type', 'comment_parent', 'user_ID'); + $commentdata = compact( 'comment_post_ID', 'comment_author', 'comment_author_email', 'comment_author_url', 'comment_content', 'comment_type', 'comment_parent', 'user_ID' ); // Automatically approve parent comment. - if ( !empty($_POST['approve_parent']) ) { + if ( ! empty( $_POST['approve_parent'] ) ) { $parent = get_comment( $comment_parent ); if ( $parent && $parent->comment_approved === '0' && $parent->comment_post_ID == $comment_post_ID ) { @@ -1094,8 +1250,9 @@ wp_die( -1 ); } - if ( wp_set_comment_status( $parent, 'approve' ) ) + if ( wp_set_comment_status( $parent, 'approve' ) ) { $comment_auto_approved = true; + } } } @@ -1105,10 +1262,12 @@ wp_die( $comment_id->get_error_message() ); } - $comment = get_comment($comment_id); - if ( ! $comment ) wp_die( 1 ); - - $position = ( isset($_POST['position']) && (int) $_POST['position'] ) ? (int) $_POST['position'] : '-1'; + $comment = get_comment( $comment_id ); + if ( ! $comment ) { + wp_die( 1 ); + } + + $position = ( isset( $_POST['position'] ) && (int) $_POST['position'] ) ? (int) $_POST['position'] : '-1'; ob_start(); if ( isset( $_REQUEST['mode'] ) && 'dashboard' == $_REQUEST['mode'] ) { @@ -1116,37 +1275,39 @@ _wp_dashboard_recent_comments_row( $comment ); } else { if ( isset( $_REQUEST['mode'] ) && 'single' == $_REQUEST['mode'] ) { - $wp_list_table = _get_list_table('WP_Post_Comments_List_Table', array( 'screen' => 'edit-comments' ) ); + $wp_list_table = _get_list_table( 'WP_Post_Comments_List_Table', array( 'screen' => 'edit-comments' ) ); } else { - $wp_list_table = _get_list_table('WP_Comments_List_Table', array( 'screen' => 'edit-comments' ) ); + $wp_list_table = _get_list_table( 'WP_Comments_List_Table', array( 'screen' => 'edit-comments' ) ); } $wp_list_table->single_row( $comment ); } $comment_list_item = ob_get_clean(); - $response = array( - 'what' => 'comment', - 'id' => $comment->comment_ID, - 'data' => $comment_list_item, - 'position' => $position + $response = array( + 'what' => 'comment', + 'id' => $comment->comment_ID, + 'data' => $comment_list_item, + 'position' => $position, ); - $counts = wp_count_comments(); + $counts = wp_count_comments(); $response['supplemental'] = array( - 'in_moderation' => $counts->moderated, - 'i18n_comments_text' => sprintf( + 'in_moderation' => $counts->moderated, + 'i18n_comments_text' => sprintf( + /* translators: %s: number of comments approved */ _n( '%s Comment', '%s Comments', $counts->approved ), number_format_i18n( $counts->approved ) ), 'i18n_moderation_text' => sprintf( - _nx( '%s in moderation', '%s in moderation', $counts->moderated, 'comments' ), + /* translators: %s: number of comments in moderation */ + _n( '%s Comment in moderation', '%s Comments in moderation', $counts->moderated ), number_format_i18n( $counts->moderated ) - ) + ), ); if ( $comment_auto_approved ) { $response['supplemental']['parent_approved'] = $parent->comment_ID; - $response['supplemental']['parent_post_id'] = $parent->comment_post_ID; + $response['supplemental']['parent_post_id'] = $parent->comment_post_ID; } $x = new WP_Ajax_Response(); @@ -1163,23 +1324,27 @@ check_ajax_referer( 'replyto-comment', '_ajax_nonce-replyto-comment' ); $comment_id = (int) $_POST['comment_ID']; - if ( ! current_user_can( 'edit_comment', $comment_id ) ) + if ( ! current_user_can( 'edit_comment', $comment_id ) ) { wp_die( -1 ); - - if ( '' == $_POST['content'] ) + } + + if ( '' == $_POST['content'] ) { wp_die( __( 'ERROR: please type a comment.' ) ); - - if ( isset( $_POST['status'] ) ) + } + + if ( isset( $_POST['status'] ) ) { $_POST['comment_status'] = $_POST['status']; + } edit_comment(); - $position = ( isset($_POST['position']) && (int) $_POST['position']) ? (int) $_POST['position'] : '-1'; - $checkbox = ( isset($_POST['checkbox']) && true == $_POST['checkbox'] ) ? 1 : 0; + $position = ( isset( $_POST['position'] ) && (int) $_POST['position'] ) ? (int) $_POST['position'] : '-1'; + $checkbox = ( isset( $_POST['checkbox'] ) && true == $_POST['checkbox'] ) ? 1 : 0; $wp_list_table = _get_list_table( $checkbox ? 'WP_Comments_List_Table' : 'WP_Post_Comments_List_Table', array( 'screen' => 'edit-comments' ) ); $comment = get_comment( $comment_id ); - if ( empty( $comment->comment_ID ) ) + if ( empty( $comment->comment_ID ) ) { wp_die( -1 ); + } ob_start(); $wp_list_table->single_row( $comment ); @@ -1187,12 +1352,14 @@ $x = new WP_Ajax_Response(); - $x->add( array( - 'what' => 'edit_comment', - 'id' => $comment->comment_ID, - 'data' => $comment_list_item, - 'position' => $position - )); + $x->add( + array( + 'what' => 'edit_comment', + 'id' => $comment->comment_ID, + 'data' => $comment_list_item, + 'position' => $position, + ) + ); $x->send(); } @@ -1205,8 +1372,9 @@ function wp_ajax_add_menu_item() { check_ajax_referer( 'add-menu_item', 'menu-settings-column-nonce' ); - if ( ! current_user_can( 'edit_theme_options' ) ) + if ( ! current_user_can( 'edit_theme_options' ) ) { wp_die( -1 ); + } require_once ABSPATH . 'wp-admin/includes/nav-menu.php'; @@ -1220,22 +1388,22 @@ 'custom' != $menu_item_data['menu-item-type'] && ! empty( $menu_item_data['menu-item-object-id'] ) ) { - switch( $menu_item_data['menu-item-type'] ) { - case 'post_type' : + switch ( $menu_item_data['menu-item-type'] ) { + case 'post_type': $_object = get_post( $menu_item_data['menu-item-object-id'] ); - break; - - case 'post_type_archive' : + break; + + case 'post_type_archive': $_object = get_post_type_object( $menu_item_data['menu-item-object'] ); - break; - - case 'taxonomy' : + break; + + case 'taxonomy': $_object = get_term( $menu_item_data['menu-item-object-id'], $menu_item_data['menu-item-object'] ); - break; + break; } $_menu_items = array_map( 'wp_setup_nav_menu_item', array( $_object ) ); - $_menu_item = reset( $_menu_items ); + $_menu_item = reset( $_menu_items ); // Restore the missing menu item properties $menu_item_data['menu-item-description'] = $_menu_item->description; @@ -1245,33 +1413,36 @@ } $item_ids = wp_save_nav_menu_items( 0, $menu_items_data ); - if ( is_wp_error( $item_ids ) ) + if ( is_wp_error( $item_ids ) ) { wp_die( 0 ); + } $menu_items = array(); foreach ( (array) $item_ids as $menu_item_id ) { $menu_obj = get_post( $menu_item_id ); if ( ! empty( $menu_obj->ID ) ) { - $menu_obj = wp_setup_nav_menu_item( $menu_obj ); + $menu_obj = wp_setup_nav_menu_item( $menu_obj ); + $menu_obj->title = empty( $menu_obj->title ) ? __( 'Menu Item' ) : $menu_obj->title; $menu_obj->label = $menu_obj->title; // don't show "(pending)" in ajax-added items - $menu_items[] = $menu_obj; + $menu_items[] = $menu_obj; } } /** This filter is documented in wp-admin/includes/nav-menu.php */ $walker_class_name = apply_filters( 'wp_edit_nav_menu_walker', 'Walker_Nav_Menu_Edit', $_POST['menu'] ); - if ( ! class_exists( $walker_class_name ) ) + if ( ! class_exists( $walker_class_name ) ) { wp_die( 0 ); + } if ( ! empty( $menu_items ) ) { $args = array( - 'after' => '', - 'before' => '', - 'link_after' => '', + 'after' => '', + 'before' => '', + 'link_after' => '', 'link_before' => '', - 'walker' => new $walker_class_name, + 'walker' => new $walker_class_name, ); echo walk_nav_menu_tree( $menu_items, 0, (object) $args ); } @@ -1285,39 +1456,44 @@ */ function wp_ajax_add_meta() { check_ajax_referer( 'add-meta', '_ajax_nonce-add-meta' ); - $c = 0; - $pid = (int) $_POST['post_id']; + $c = 0; + $pid = (int) $_POST['post_id']; $post = get_post( $pid ); - if ( isset($_POST['metakeyselect']) || isset($_POST['metakeyinput']) ) { - if ( !current_user_can( 'edit_post', $pid ) ) + if ( isset( $_POST['metakeyselect'] ) || isset( $_POST['metakeyinput'] ) ) { + if ( ! current_user_can( 'edit_post', $pid ) ) { wp_die( -1 ); - if ( isset($_POST['metakeyselect']) && '#NONE#' == $_POST['metakeyselect'] && empty($_POST['metakeyinput']) ) + } + if ( isset( $_POST['metakeyselect'] ) && '#NONE#' == $_POST['metakeyselect'] && empty( $_POST['metakeyinput'] ) ) { wp_die( 1 ); + } // If the post is an autodraft, save the post as a draft and then attempt to save the meta. if ( $post->post_status == 'auto-draft' ) { - $post_data = array(); - $post_data['action'] = 'draft'; // Warning fix - $post_data['post_ID'] = $pid; - $post_data['post_type'] = $post->post_type; + $post_data = array(); + $post_data['action'] = 'draft'; // Warning fix + $post_data['post_ID'] = $pid; + $post_data['post_type'] = $post->post_type; $post_data['post_status'] = 'draft'; - $now = current_time('timestamp', 1); + $now = time(); /* translators: 1: Post creation date, 2: Post creation time */ $post_data['post_title'] = sprintf( __( 'Draft created on %1$s at %2$s' ), date( __( 'F j, Y' ), $now ), date( __( 'g:i a' ), $now ) ); $pid = edit_post( $post_data ); if ( $pid ) { if ( is_wp_error( $pid ) ) { - $x = new WP_Ajax_Response( array( - 'what' => 'meta', - 'data' => $pid - ) ); + $x = new WP_Ajax_Response( + array( + 'what' => 'meta', + 'data' => $pid, + ) + ); $x->send(); } - if ( !$mid = add_meta( $pid ) ) + if ( ! $mid = add_meta( $pid ) ) { wp_die( __( 'Please provide a custom field value.' ) ); + } } else { wp_die( 0 ); } @@ -1326,45 +1502,55 @@ } $meta = get_metadata_by_mid( 'post', $mid ); - $pid = (int) $meta->post_id; + $pid = (int) $meta->post_id; $meta = get_object_vars( $meta ); - $x = new WP_Ajax_Response( array( - 'what' => 'meta', - 'id' => $mid, - 'data' => _list_meta_row( $meta, $c ), - 'position' => 1, - 'supplemental' => array('postid' => $pid) - ) ); + $x = new WP_Ajax_Response( + array( + 'what' => 'meta', + 'id' => $mid, + 'data' => _list_meta_row( $meta, $c ), + 'position' => 1, + 'supplemental' => array( 'postid' => $pid ), + ) + ); } else { // Update? - $mid = (int) key( $_POST['meta'] ); - $key = wp_unslash( $_POST['meta'][$mid]['key'] ); - $value = wp_unslash( $_POST['meta'][$mid]['value'] ); - if ( '' == trim($key) ) + $mid = (int) key( $_POST['meta'] ); + $key = wp_unslash( $_POST['meta'][ $mid ]['key'] ); + $value = wp_unslash( $_POST['meta'][ $mid ]['value'] ); + if ( '' == trim( $key ) ) { wp_die( __( 'Please provide a custom field name.' ) ); - if ( '' == trim($value) ) - wp_die( __( 'Please provide a custom field value.' ) ); - if ( ! $meta = get_metadata_by_mid( 'post', $mid ) ) + } + if ( ! $meta = get_metadata_by_mid( 'post', $mid ) ) { wp_die( 0 ); // if meta doesn't exist + } if ( is_protected_meta( $meta->meta_key, 'post' ) || is_protected_meta( $key, 'post' ) || ! current_user_can( 'edit_post_meta', $meta->post_id, $meta->meta_key ) || - ! current_user_can( 'edit_post_meta', $meta->post_id, $key ) ) + ! current_user_can( 'edit_post_meta', $meta->post_id, $key ) ) { wp_die( -1 ); + } if ( $meta->meta_value != $value || $meta->meta_key != $key ) { - if ( !$u = update_metadata_by_mid( 'post', $mid, $value, $key ) ) + if ( ! $u = update_metadata_by_mid( 'post', $mid, $value, $key ) ) { wp_die( 0 ); // We know meta exists; we also know it's unchanged (or DB error, in which case there are bigger problems). + } } - $x = new WP_Ajax_Response( array( - 'what' => 'meta', - 'id' => $mid, 'old_id' => $mid, - 'data' => _list_meta_row( array( - 'meta_key' => $key, - 'meta_value' => $value, - 'meta_id' => $mid - ), $c ), - 'position' => 0, - 'supplemental' => array('postid' => $meta->post_id) - ) ); + $x = new WP_Ajax_Response( + array( + 'what' => 'meta', + 'id' => $mid, + 'old_id' => $mid, + 'data' => _list_meta_row( + array( + 'meta_key' => $key, + 'meta_value' => $value, + 'meta_id' => $mid, + ), + $c + ), + 'position' => 0, + 'supplemental' => array( 'postid' => $meta->post_id ), + ) + ); } $x->send(); } @@ -1382,36 +1568,41 @@ } check_ajax_referer( $action ); - if ( ! current_user_can('create_users') ) + if ( ! current_user_can( 'create_users' ) ) { wp_die( -1 ); + } if ( ! $user_id = edit_user() ) { wp_die( 0 ); } elseif ( is_wp_error( $user_id ) ) { - $x = new WP_Ajax_Response( array( - 'what' => 'user', - 'id' => $user_id - ) ); + $x = new WP_Ajax_Response( + array( + 'what' => 'user', + 'id' => $user_id, + ) + ); $x->send(); } $user_object = get_userdata( $user_id ); - $wp_list_table = _get_list_table('WP_Users_List_Table'); + $wp_list_table = _get_list_table( 'WP_Users_List_Table' ); $role = current( $user_object->roles ); - $x = new WP_Ajax_Response( array( - 'what' => 'user', - 'id' => $user_id, - 'data' => $wp_list_table->single_row( $user_object, '', $role ), - 'supplemental' => array( - 'show-link' => sprintf( - /* translators: %s: the new user */ - __( 'User %s added' ), - '' . $user_object->user_login . '' + $x = new WP_Ajax_Response( + array( + 'what' => 'user', + 'id' => $user_id, + 'data' => $wp_list_table->single_row( $user_object, '', $role ), + 'supplemental' => array( + 'show-link' => sprintf( + /* translators: %s: the new user */ + __( 'User %s added' ), + '' . $user_object->user_login . '' + ), + 'role' => $role, ), - 'role' => $role, ) - ) ); + ); $x->send(); } @@ -1422,26 +1613,29 @@ */ function wp_ajax_closed_postboxes() { check_ajax_referer( 'closedpostboxes', 'closedpostboxesnonce' ); - $closed = isset( $_POST['closed'] ) ? explode( ',', $_POST['closed']) : array(); - $closed = array_filter($closed); - - $hidden = isset( $_POST['hidden'] ) ? explode( ',', $_POST['hidden']) : array(); - $hidden = array_filter($hidden); + $closed = isset( $_POST['closed'] ) ? explode( ',', $_POST['closed'] ) : array(); + $closed = array_filter( $closed ); + + $hidden = isset( $_POST['hidden'] ) ? explode( ',', $_POST['hidden'] ) : array(); + $hidden = array_filter( $hidden ); $page = isset( $_POST['page'] ) ? $_POST['page'] : ''; - if ( $page != sanitize_key( $page ) ) + if ( $page != sanitize_key( $page ) ) { wp_die( 0 ); - - if ( ! $user = wp_get_current_user() ) + } + + if ( ! $user = wp_get_current_user() ) { wp_die( -1 ); - - if ( is_array($closed) ) - update_user_option($user->ID, "closedpostboxes_$page", $closed, true); - - if ( is_array($hidden) ) { - $hidden = array_diff( $hidden, array('submitdiv', 'linksubmitdiv', 'manage-menu', 'create-menu') ); // postboxes that are always shown - update_user_option($user->ID, "metaboxhidden_$page", $hidden, true); + } + + if ( is_array( $closed ) ) { + update_user_option( $user->ID, "closedpostboxes_$page", $closed, true ); + } + + if ( is_array( $hidden ) ) { + $hidden = array_diff( $hidden, array( 'submitdiv', 'linksubmitdiv', 'manage-menu', 'create-menu' ) ); // postboxes that are always shown + update_user_option( $user->ID, "metaboxhidden_$page", $hidden, true ); } wp_die( 1 ); @@ -1456,11 +1650,13 @@ check_ajax_referer( 'screen-options-nonce', 'screenoptionnonce' ); $page = isset( $_POST['page'] ) ? $_POST['page'] : ''; - if ( $page != sanitize_key( $page ) ) + if ( $page != sanitize_key( $page ) ) { wp_die( 0 ); - - if ( ! $user = wp_get_current_user() ) + } + + if ( ! $user = wp_get_current_user() ) { wp_die( -1 ); + } $hidden = ! empty( $_POST['hidden'] ) ? explode( ',', $_POST['hidden'] ) : array(); update_user_option( $user->ID, "manage{$page}columnshidden", $hidden, true ); @@ -1476,8 +1672,9 @@ function wp_ajax_update_welcome_panel() { check_ajax_referer( 'welcome-panel-nonce', 'welcomepanelnonce' ); - if ( ! current_user_can( 'edit_theme_options' ) ) + if ( ! current_user_can( 'edit_theme_options' ) ) { wp_die( -1 ); + } update_user_meta( get_current_user_id(), 'show_welcome_panel', empty( $_POST['visible'] ) ? 0 : 1 ); @@ -1485,61 +1682,54 @@ } /** - * Ajax handler for updating whether to display the Try Gutenberg panel. - * - * @since 4.9.8 - */ -function wp_ajax_update_try_gutenberg_panel() { - check_ajax_referer( 'try-gutenberg-panel-nonce', 'trygutenbergpanelnonce' ); - - update_user_meta( get_current_user_id(), 'show_try_gutenberg_panel', empty( $_POST['visible'] ) ? 0 : 1 ); - - wp_die( 1 ); -} - -/** * Ajax handler for retrieving menu meta boxes. * * @since 3.1.0 */ function wp_ajax_menu_get_metabox() { - if ( ! current_user_can( 'edit_theme_options' ) ) + if ( ! current_user_can( 'edit_theme_options' ) ) { wp_die( -1 ); + } require_once ABSPATH . 'wp-admin/includes/nav-menu.php'; if ( isset( $_POST['item-type'] ) && 'post_type' == $_POST['item-type'] ) { - $type = 'posttype'; + $type = 'posttype'; $callback = 'wp_nav_menu_item_post_type_meta_box'; - $items = (array) get_post_types( array( 'show_in_nav_menus' => true ), 'object' ); + $items = (array) get_post_types( array( 'show_in_nav_menus' => true ), 'object' ); } elseif ( isset( $_POST['item-type'] ) && 'taxonomy' == $_POST['item-type'] ) { - $type = 'taxonomy'; + $type = 'taxonomy'; $callback = 'wp_nav_menu_item_taxonomy_meta_box'; - $items = (array) get_taxonomies( array( 'show_ui' => true ), 'object' ); - } - - if ( ! empty( $_POST['item-object'] ) && isset( $items[$_POST['item-object']] ) ) { + $items = (array) get_taxonomies( array( 'show_ui' => true ), 'object' ); + } + + if ( ! empty( $_POST['item-object'] ) && isset( $items[ $_POST['item-object'] ] ) ) { $menus_meta_box_object = $items[ $_POST['item-object'] ]; /** This filter is documented in wp-admin/includes/nav-menu.php */ $item = apply_filters( 'nav_menu_meta_box_object', $menus_meta_box_object ); ob_start(); - call_user_func_array($callback, array( - null, + call_user_func_array( + $callback, array( - 'id' => 'add-' . $item->name, - 'title' => $item->labels->name, - 'callback' => $callback, - 'args' => $item, + null, + array( + 'id' => 'add-' . $item->name, + 'title' => $item->labels->name, + 'callback' => $callback, + 'args' => $item, + ), ) - )); + ); $markup = ob_get_clean(); - echo wp_json_encode(array( - 'replace-id' => $type . '-' . $item->name, - 'markup' => $markup, - )); + echo wp_json_encode( + array( + 'replace-id' => $type . '-' . $item->name, + 'markup' => $markup, + ) + ); } wp_die(); @@ -1571,8 +1761,9 @@ $results = _WP_Editors::wp_link_query( $args ); - if ( ! isset( $results ) ) + if ( ! isset( $results ) ) { wp_die( 0 ); + } echo wp_json_encode( $results ); echo "\n"; @@ -1586,11 +1777,13 @@ * @since 3.1.0 */ function wp_ajax_menu_locations_save() { - if ( ! current_user_can( 'edit_theme_options' ) ) + if ( ! current_user_can( 'edit_theme_options' ) ) { wp_die( -1 ); + } check_ajax_referer( 'add-menu_item', 'menu-settings-column-nonce' ); - if ( ! isset( $_POST['menu-locations'] ) ) + if ( ! isset( $_POST['menu-locations'] ) ) { wp_die( 0 ); + } set_theme_mod( 'nav_menu_locations', array_map( 'absint', $_POST['menu-locations'] ) ); wp_die( 1 ); } @@ -1602,25 +1795,30 @@ */ function wp_ajax_meta_box_order() { check_ajax_referer( 'meta-box-order' ); - $order = isset( $_POST['order'] ) ? (array) $_POST['order'] : false; + $order = isset( $_POST['order'] ) ? (array) $_POST['order'] : false; $page_columns = isset( $_POST['page_columns'] ) ? $_POST['page_columns'] : 'auto'; - if ( $page_columns != 'auto' ) + if ( $page_columns != 'auto' ) { $page_columns = (int) $page_columns; + } $page = isset( $_POST['page'] ) ? $_POST['page'] : ''; - if ( $page != sanitize_key( $page ) ) + if ( $page != sanitize_key( $page ) ) { wp_die( 0 ); - - if ( ! $user = wp_get_current_user() ) + } + + if ( ! $user = wp_get_current_user() ) { wp_die( -1 ); - - if ( $order ) - update_user_option($user->ID, "meta-box-order_$page", $order, true); - - if ( $page_columns ) - update_user_option($user->ID, "screen_layout_$page", $page_columns, true); + } + + if ( $order ) { + update_user_option( $user->ID, "meta-box-order_$page", $order, true ); + } + + if ( $page_columns ) { + update_user_option( $user->ID, "screen_layout_$page", $page_columns, true ); + } wp_die( 1 ); } @@ -1631,8 +1829,9 @@ * @since 3.1.0 */ function wp_ajax_menu_quick_search() { - if ( ! current_user_can( 'edit_theme_options' ) ) + if ( ! current_user_can( 'edit_theme_options' ) ) { wp_die( -1 ); + } require_once ABSPATH . 'wp-admin/includes/nav-menu.php'; @@ -1648,7 +1847,7 @@ */ function wp_ajax_get_permalink() { check_ajax_referer( 'getpermalink', 'getpermalinknonce' ); - $post_id = isset($_POST['post_id'])? intval($_POST['post_id']) : 0; + $post_id = isset( $_POST['post_id'] ) ? intval( $_POST['post_id'] ) : 0; wp_die( get_preview_post_link( $post_id ) ); } @@ -1659,9 +1858,9 @@ */ function wp_ajax_sample_permalink() { check_ajax_referer( 'samplepermalink', 'samplepermalinknonce' ); - $post_id = isset($_POST['post_id'])? intval($_POST['post_id']) : 0; - $title = isset($_POST['new_title'])? $_POST['new_title'] : ''; - $slug = isset($_POST['new_slug'])? $_POST['new_slug'] : null; + $post_id = isset( $_POST['post_id'] ) ? intval( $_POST['post_id'] ) : 0; + $title = isset( $_POST['new_title'] ) ? $_POST['new_title'] : ''; + $slug = isset( $_POST['new_slug'] ) ? $_POST['new_slug'] : null; wp_die( get_sample_permalink_html( $post_id, $title, $slug ) ); } @@ -1677,21 +1876,32 @@ check_ajax_referer( 'inlineeditnonce', '_inline_edit' ); - if ( ! isset($_POST['post_ID']) || ! ( $post_ID = (int) $_POST['post_ID'] ) ) + if ( ! isset( $_POST['post_ID'] ) || ! ( $post_ID = (int) $_POST['post_ID'] ) ) { wp_die(); + } if ( 'page' == $_POST['post_type'] ) { - if ( ! current_user_can( 'edit_page', $post_ID ) ) + if ( ! current_user_can( 'edit_page', $post_ID ) ) { wp_die( __( 'Sorry, you are not allowed to edit this page.' ) ); + } } else { - if ( ! current_user_can( 'edit_post', $post_ID ) ) + if ( ! current_user_can( 'edit_post', $post_ID ) ) { wp_die( __( 'Sorry, you are not allowed to edit this post.' ) ); + } } if ( $last = wp_check_post_lock( $post_ID ) ) { - $last_user = get_userdata( $last ); + $last_user = get_userdata( $last ); $last_user_name = $last_user ? $last_user->display_name : __( 'Someone' ); - printf( $_POST['post_type'] == 'page' ? __( 'Saving is disabled: %s is currently editing this page.' ) : __( 'Saving is disabled: %s is currently editing this post.' ), esc_html( $last_user_name ) ); + + /* translators: %s: user who is currently editing the post */ + $msg_template = __( 'Saving is disabled: %s is currently editing this post.' ); + if ( $_POST['post_type'] == 'page' ) { + /* translators: %s: user who is currently editing the page */ + $msg_template = __( 'Saving is disabled: %s is currently editing this page.' ); + } + + printf( $msg_template, esc_html( $last_user_name ) ); wp_die(); } @@ -1700,7 +1910,7 @@ $post = get_post( $post_ID, ARRAY_A ); // Since it's coming from the database. - $post = wp_slash($post); + $post = wp_slash( $post ); $data['content'] = $post['post_content']; $data['excerpt'] = $post['post_excerpt']; @@ -1708,8 +1918,9 @@ // Rename. $data['user_ID'] = get_current_user_id(); - if ( isset($data['post_parent']) ) + if ( isset( $data['post_parent'] ) ) { $data['parent_id'] = $data['post_parent']; + } // Status. if ( isset( $data['keep_private'] ) && 'private' == $data['keep_private'] ) { @@ -1719,10 +1930,12 @@ $data['post_status'] = $data['_status']; } - if ( empty($data['comment_status']) ) + if ( empty( $data['comment_status'] ) ) { $data['comment_status'] = 'closed'; - if ( empty($data['ping_status']) ) + } + if ( empty( $data['ping_status'] ) ) { $data['ping_status'] = 'closed'; + } // Exclude terms from taxonomies that are not supposed to appear in Quick Edit. if ( ! empty( $data['tax_input'] ) ) { @@ -1738,7 +1951,7 @@ // Hack: wp_unique_post_slug() doesn't work for drafts, so we will fake that our post is published. if ( ! empty( $data['post_name'] ) && in_array( $post['post_status'], array( 'draft', 'pending' ) ) ) { $post['post_status'] = 'publish'; - $data['post_name'] = wp_unique_post_slug( $data['post_name'], $post['ID'], $post['post_status'], $post['post_type'], $post['post_parent'] ); + $data['post_name'] = wp_unique_post_slug( $data['post_name'], $post['ID'], $post['post_status'], $post['post_type'], $post['post_parent'] ); } // Update the post. @@ -1774,9 +1987,10 @@ check_ajax_referer( 'taxinlineeditnonce', '_inline_edit' ); $taxonomy = sanitize_key( $_POST['taxonomy'] ); - $tax = get_taxonomy( $taxonomy ); - if ( ! $tax ) + $tax = get_taxonomy( $taxonomy ); + if ( ! $tax ) { wp_die( 0 ); + } if ( ! isset( $_POST['tax_ID'] ) || ! ( $id = (int) $_POST['tax_ID'] ) ) { wp_die( -1 ); @@ -1788,27 +2002,29 @@ $wp_list_table = _get_list_table( 'WP_Terms_List_Table', array( 'screen' => 'edit-' . $taxonomy ) ); - $tag = get_term( $id, $taxonomy ); + $tag = get_term( $id, $taxonomy ); $_POST['description'] = $tag->description; - $updated = wp_update_term($id, $taxonomy, $_POST); - if ( $updated && !is_wp_error($updated) ) { + $updated = wp_update_term( $id, $taxonomy, $_POST ); + if ( $updated && ! is_wp_error( $updated ) ) { $tag = get_term( $updated['term_id'], $taxonomy ); - if ( !$tag || is_wp_error( $tag ) ) { - if ( is_wp_error($tag) && $tag->get_error_message() ) + if ( ! $tag || is_wp_error( $tag ) ) { + if ( is_wp_error( $tag ) && $tag->get_error_message() ) { wp_die( $tag->get_error_message() ); + } wp_die( __( 'Item not updated.' ) ); } } else { - if ( is_wp_error($updated) && $updated->get_error_message() ) + if ( is_wp_error( $updated ) && $updated->get_error_message() ) { wp_die( $updated->get_error_message() ); + } wp_die( __( 'Item not updated.' ) ); } - $level = 0; + $level = 0; $parent = $tag->parent; while ( $parent > 0 ) { $parent_tag = get_term( $parent, $taxonomy ); - $parent = $parent_tag->parent; + $parent = $parent_tag->parent; $level++; } $wp_list_table->single_row( $tag, $level ); @@ -1828,14 +2044,15 @@ $post_types = get_post_types( array( 'public' => true ), 'objects' ); unset( $post_types['attachment'] ); - $s = wp_unslash( $_POST['ps'] ); + $s = wp_unslash( $_POST['ps'] ); $args = array( - 'post_type' => array_keys( $post_types ), - 'post_status' => 'any', + 'post_type' => array_keys( $post_types ), + 'post_status' => 'any', 'posts_per_page' => 50, ); - if ( '' !== $s ) + if ( '' !== $s ) { $args['s'] = $s; + } $posts = get_posts( $args ); @@ -1843,25 +2060,25 @@ wp_send_json_error( __( 'No items found.' ) ); } - $html = ''.__('Title').' | '.__('Type').' | '.__('Date').' | '.__('Status').' |
---|
' . __( 'Title' ) . ' | ' . __( 'Type' ) . ' | ' . __( 'Date' ) . ' | ' . __( 'Status' ) . ' | |
---|---|---|---|---|
'; - $html .= ' | ' . esc_html( $post_types[$post->post_type]->labels->singular_name ) . ' | '.esc_html( $time ) . ' | ' . esc_html( $stat ). ' | |
'; + $html .= ' | ' . esc_html( $post_types[ $post->post_type ]->labels->singular_name ) . ' | ' . esc_html( $time ) . ' | ' . esc_html( $stat ) . ' |
' . __('An error has occurred. Please reload the page and try again.') . '
'; + $id_base = wp_unslash( $_POST['id_base'] ); + $widget_id = wp_unslash( $_POST['widget-id'] ); + $sidebar_id = $_POST['sidebar']; + $multi_number = ! empty( $_POST['multi_number'] ) ? (int) $_POST['multi_number'] : 0; + $settings = isset( $_POST[ 'widget-' . $id_base ] ) && is_array( $_POST[ 'widget-' . $id_base ] ) ? $_POST[ 'widget-' . $id_base ] : false; + $error = '' . __( 'An error has occurred. Please reload the page and try again.' ) . '
'; $sidebars = wp_get_sidebars_widgets(); - $sidebar = isset($sidebars[$sidebar_id]) ? $sidebars[$sidebar_id] : array(); + $sidebar = isset( $sidebars[ $sidebar_id ] ) ? $sidebars[ $sidebar_id ] : array(); // Delete. - if ( isset($_POST['delete_widget']) && $_POST['delete_widget'] ) { - - if ( !isset($wp_registered_widgets[$widget_id]) ) + if ( isset( $_POST['delete_widget'] ) && $_POST['delete_widget'] ) { + + if ( ! isset( $wp_registered_widgets[ $widget_id ] ) ) { wp_die( $error ); - - $sidebar = array_diff( $sidebar, array($widget_id) ); - $_POST = array('sidebar' => $sidebar_id, 'widget-' . $id_base => array(), 'the-widget-id' => $widget_id, 'delete_widget' => '1'); + } + + $sidebar = array_diff( $sidebar, array( $widget_id ) ); + $_POST = array( + 'sidebar' => $sidebar_id, + 'widget-' . $id_base => array(), + 'the-widget-id' => $widget_id, + 'delete_widget' => '1', + ); /** This action is documented in wp-admin/widgets.php */ do_action( 'delete_widget', $widget_id, $sidebar_id, $id_base ); - } elseif ( $settings && preg_match( '/__i__|%i%/', key($settings) ) ) { - if ( !$multi_number ) + } elseif ( $settings && preg_match( '/__i__|%i%/', key( $settings ) ) ) { + if ( ! $multi_number ) { wp_die( $error ); + } $_POST[ 'widget-' . $id_base ] = array( $multi_number => reset( $settings ) ); - $widget_id = $id_base . '-' . $multi_number; - $sidebar[] = $widget_id; + $widget_id = $id_base . '-' . $multi_number; + $sidebar[] = $widget_id; } $_POST['widget-id'] = $sidebar; foreach ( (array) $wp_registered_widget_updates as $name => $control ) { if ( $name == $id_base ) { - if ( !is_callable( $control['callback'] ) ) + if ( ! is_callable( $control['callback'] ) ) { continue; + } ob_start(); call_user_func_array( $control['callback'], $control['params'] ); @@ -1998,18 +2226,20 @@ } } - if ( isset($_POST['delete_widget']) && $_POST['delete_widget'] ) { - $sidebars[$sidebar_id] = $sidebar; - wp_set_sidebars_widgets($sidebars); + if ( isset( $_POST['delete_widget'] ) && $_POST['delete_widget'] ) { + $sidebars[ $sidebar_id ] = $sidebar; + wp_set_sidebars_widgets( $sidebars ); echo "deleted:$widget_id"; wp_die(); } - if ( !empty($_POST['add_new']) ) + if ( ! empty( $_POST['add_new'] ) ) { wp_die(); - - if ( $form = $wp_registered_widget_controls[$widget_id] ) + } + + if ( $form = $wp_registered_widget_controls[ $widget_id ] ) { call_user_func_array( $form['callback'], $form['params'] ); + } wp_die(); } @@ -2049,13 +2279,13 @@ $sidebars_widgets = wp_get_sidebars_widgets(); foreach ( $sidebars_widgets['wp_inactive_widgets'] as $key => $widget_id ) { - $pieces = explode( '-', $widget_id ); + $pieces = explode( '-', $widget_id ); $multi_number = array_pop( $pieces ); - $id_base = implode( '-', $pieces ); - $widget = get_option( 'widget_' . $id_base ); - unset( $widget[$multi_number] ); + $id_base = implode( '-', $pieces ); + $widget = get_option( 'widget_' . $id_base ); + unset( $widget[ $multi_number ] ); update_option( 'widget_' . $id_base, $widget ); - unset( $sidebars_widgets['wp_inactive_widgets'][$key] ); + unset( $sidebars_widgets['wp_inactive_widgets'][ $key ] ); } wp_set_sidebars_widgets( $sidebars_widgets ); @@ -2077,13 +2307,15 @@ */ if ( ! current_user_can( 'upload_files' ) ) { - echo wp_json_encode( array( - 'success' => false, - 'data' => array( - 'message' => __( 'Sorry, you are not allowed to upload files.' ), - 'filename' => $_FILES['async-upload']['name'], + echo wp_json_encode( + array( + 'success' => false, + 'data' => array( + 'message' => __( 'Sorry, you are not allowed to upload files.' ), + 'filename' => esc_html( $_FILES['async-upload']['name'] ), + ), ) - ) ); + ); wp_die(); } @@ -2091,13 +2323,15 @@ if ( isset( $_REQUEST['post_id'] ) ) { $post_id = $_REQUEST['post_id']; if ( ! current_user_can( 'edit_post', $post_id ) ) { - echo wp_json_encode( array( - 'success' => false, - 'data' => array( - 'message' => __( 'Sorry, you are not allowed to attach files to this post.' ), - 'filename' => $_FILES['async-upload']['name'], + echo wp_json_encode( + array( + 'success' => false, + 'data' => array( + 'message' => __( 'Sorry, you are not allowed to attach files to this post.' ), + 'filename' => esc_html( $_FILES['async-upload']['name'] ), + ), ) - ) ); + ); wp_die(); } @@ -2105,19 +2339,25 @@ $post_id = null; } - $post_data = isset( $_REQUEST['post_data'] ) ? $_REQUEST['post_data'] : array(); + $post_data = ! empty( $_REQUEST['post_data'] ) ? _wp_get_allowed_postdata( _wp_translate_postdata( false, (array) $_REQUEST['post_data'] ) ) : array(); + + if ( is_wp_error( $post_data ) ) { + wp_die( $post_data->get_error_message() ); + } // If the context is custom header or background, make sure the uploaded file is an image. if ( isset( $post_data['context'] ) && in_array( $post_data['context'], array( 'custom-header', 'custom-background' ) ) ) { $wp_filetype = wp_check_filetype_and_ext( $_FILES['async-upload']['tmp_name'], $_FILES['async-upload']['name'] ); if ( ! wp_match_mime_types( 'image', $wp_filetype['type'] ) ) { - echo wp_json_encode( array( - 'success' => false, - 'data' => array( - 'message' => __( 'The uploaded file is not a valid image. Please try again.' ), - 'filename' => $_FILES['async-upload']['name'], + echo wp_json_encode( + array( + 'success' => false, + 'data' => array( + 'message' => __( 'The uploaded file is not a valid image. Please try again.' ), + 'filename' => esc_html( $_FILES['async-upload']['name'] ), + ), ) - ) ); + ); wp_die(); } @@ -2126,32 +2366,39 @@ $attachment_id = media_handle_upload( 'async-upload', $post_id, $post_data ); if ( is_wp_error( $attachment_id ) ) { - echo wp_json_encode( array( - 'success' => false, - 'data' => array( - 'message' => $attachment_id->get_error_message(), - 'filename' => $_FILES['async-upload']['name'], + echo wp_json_encode( + array( + 'success' => false, + 'data' => array( + 'message' => $attachment_id->get_error_message(), + 'filename' => esc_html( $_FILES['async-upload']['name'] ), + ), ) - ) ); + ); wp_die(); } if ( isset( $post_data['context'] ) && isset( $post_data['theme'] ) ) { - if ( 'custom-background' === $post_data['context'] ) + if ( 'custom-background' === $post_data['context'] ) { update_post_meta( $attachment_id, '_wp_attachment_is_custom_background', $post_data['theme'] ); - - if ( 'custom-header' === $post_data['context'] ) + } + + if ( 'custom-header' === $post_data['context'] ) { update_post_meta( $attachment_id, '_wp_attachment_is_custom_header', $post_data['theme'] ); - } - - if ( ! $attachment = wp_prepare_attachment_for_js( $attachment_id ) ) + } + } + + if ( ! $attachment = wp_prepare_attachment_for_js( $attachment_id ) ) { wp_die(); - - echo wp_json_encode( array( - 'success' => true, - 'data' => $attachment, - ) ); + } + + echo wp_json_encode( + array( + 'success' => true, + 'data' => $attachment, + ) + ); wp_die(); } @@ -2162,29 +2409,30 @@ * @since 3.1.0 */ function wp_ajax_image_editor() { - $attachment_id = intval($_POST['postid']); - if ( empty($attachment_id) || !current_user_can('edit_post', $attachment_id) ) + $attachment_id = intval( $_POST['postid'] ); + if ( empty( $attachment_id ) || ! current_user_can( 'edit_post', $attachment_id ) ) { wp_die( -1 ); + } check_ajax_referer( "image_editor-$attachment_id" ); include_once( ABSPATH . 'wp-admin/includes/image-edit.php' ); $msg = false; switch ( $_POST['do'] ) { - case 'save' : - $msg = wp_save_image($attachment_id); - $msg = wp_json_encode($msg); + case 'save': + $msg = wp_save_image( $attachment_id ); + $msg = wp_json_encode( $msg ); wp_die( $msg ); break; - case 'scale' : - $msg = wp_save_image($attachment_id); + case 'scale': + $msg = wp_save_image( $attachment_id ); break; - case 'restore' : - $msg = wp_restore_image($attachment_id); + case 'restore': + $msg = wp_restore_image( $attachment_id ); break; } - wp_image_editor($attachment_id, $msg); + wp_image_editor( $attachment_id, $msg ); wp_die(); } @@ -2197,15 +2445,17 @@ $json = ! empty( $_REQUEST['json'] ); // New-style request $post_ID = intval( $_POST['post_id'] ); - if ( ! current_user_can( 'edit_post', $post_ID ) ) + if ( ! current_user_can( 'edit_post', $post_ID ) ) { wp_die( -1 ); + } $thumbnail_id = intval( $_POST['thumbnail_id'] ); - if ( $json ) + if ( $json ) { check_ajax_referer( "update-post_$post_ID" ); - else + } else { check_ajax_referer( "set_post_thumbnail-$post_ID" ); + } if ( $thumbnail_id == '-1' ) { if ( delete_post_thumbnail( $post_ID ) ) { @@ -2329,10 +2579,11 @@ $post = null; - if ( $post_id ) + if ( $post_id ) { $post = get_post( $post_id ); - - check_ajax_referer('update-post_' . $post_id, '_wpnonce'); + } + + check_ajax_referer( 'update-post_' . $post_id, '_wpnonce' ); $post_id = edit_post(); @@ -2350,9 +2601,11 @@ if ( $last_id = get_post_meta( $post_id, '_edit_last', true ) ) { $last_user = get_userdata( $last_id ); - $last_edited = sprintf( __('Last edited by %1$s on %2$s at %3$s'), esc_html( $last_user->display_name ), $last_date, $last_time ); + /* translators: 1: display_name of last user, 2: date of last edit, 3: time of last edit. */ + $last_edited = sprintf( __( 'Last edited by %1$s on %2$s at %3$s' ), esc_html( $last_user->display_name ), $last_date, $last_time ); } else { - $last_edited = sprintf( __('Last edited on %1$s at %2$s'), $last_date, $last_time ); + /* translators: 1: date of last edit, 2: time of last edit. */ + $last_edited = sprintf( __( 'Last edited on %1$s at %2$s' ), $last_date, $last_time ); } wp_send_json_success( array( 'last_edited' => $last_edited ) ); @@ -2364,20 +2617,24 @@ * @since 3.1.0 */ function wp_ajax_wp_remove_post_lock() { - if ( empty( $_POST['post_ID'] ) || empty( $_POST['active_post_lock'] ) ) + if ( empty( $_POST['post_ID'] ) || empty( $_POST['active_post_lock'] ) ) { wp_die( 0 ); + } $post_id = (int) $_POST['post_ID']; - if ( ! $post = get_post( $post_id ) ) + if ( ! $post = get_post( $post_id ) ) { wp_die( 0 ); + } check_ajax_referer( 'update-post_' . $post_id ); - if ( ! current_user_can( 'edit_post', $post_id ) ) + if ( ! current_user_can( 'edit_post', $post_id ) ) { wp_die( -1 ); + } $active_lock = array_map( 'absint', explode( ':', $_POST['active_post_lock'] ) ); - if ( $active_lock[1] != get_current_user_id() ) + if ( $active_lock[1] != get_current_user_id() ) { wp_die( 0 ); + } /** * Filters the post lock window duration. @@ -2399,18 +2656,20 @@ */ function wp_ajax_dismiss_wp_pointer() { $pointer = $_POST['pointer']; - if ( $pointer != sanitize_key( $pointer ) ) + if ( $pointer != sanitize_key( $pointer ) ) { wp_die( 0 ); - -// check_ajax_referer( 'dismiss-pointer_' . $pointer ); + } + + // check_ajax_referer( 'dismiss-pointer_' . $pointer ); $dismissed = array_filter( explode( ',', (string) get_user_meta( get_current_user_id(), 'dismissed_wp_pointers', true ) ) ); - if ( in_array( $pointer, $dismissed ) ) + if ( in_array( $pointer, $dismissed ) ) { wp_die( 0 ); + } $dismissed[] = $pointer; - $dismissed = implode( ',', $dismissed ); + $dismissed = implode( ',', $dismissed ); update_user_meta( get_current_user_id(), 'dismissed_wp_pointers', $dismissed ); wp_die( 1 ); @@ -2422,23 +2681,29 @@ * @since 3.5.0 */ function wp_ajax_get_attachment() { - if ( ! isset( $_REQUEST['id'] ) ) + if ( ! isset( $_REQUEST['id'] ) ) { wp_send_json_error(); - - if ( ! $id = absint( $_REQUEST['id'] ) ) + } + + if ( ! $id = absint( $_REQUEST['id'] ) ) { wp_send_json_error(); - - if ( ! $post = get_post( $id ) ) + } + + if ( ! $post = get_post( $id ) ) { wp_send_json_error(); - - if ( 'attachment' != $post->post_type ) + } + + if ( 'attachment' != $post->post_type ) { wp_send_json_error(); - - if ( ! current_user_can( 'upload_files' ) ) + } + + if ( ! current_user_can( 'upload_files' ) ) { wp_send_json_error(); - - if ( ! $attachment = wp_prepare_attachment_for_js( $id ) ) + } + + if ( ! $attachment = wp_prepare_attachment_for_js( $id ) ) { wp_send_json_error(); + } wp_send_json_success( $attachment ); } @@ -2449,13 +2714,24 @@ * @since 3.5.0 */ function wp_ajax_query_attachments() { - if ( ! current_user_can( 'upload_files' ) ) + if ( ! current_user_can( 'upload_files' ) ) { wp_send_json_error(); + } $query = isset( $_REQUEST['query'] ) ? (array) $_REQUEST['query'] : array(); - $keys = array( - 's', 'order', 'orderby', 'posts_per_page', 'paged', 'post_mime_type', - 'post_parent', 'author', 'post__in', 'post__not_in', 'year', 'monthnum' + $keys = array( + 's', + 'order', + 'orderby', + 'posts_per_page', + 'paged', + 'post_mime_type', + 'post_parent', + 'author', + 'post__in', + 'post__not_in', + 'year', + 'monthnum', ); foreach ( get_taxonomies_for_attachments( 'objects' ) as $t ) { if ( $t->query_var && isset( $query[ $t->query_var ] ) ) { @@ -2463,7 +2739,7 @@ } } - $query = array_intersect_key( $query, array_flip( $keys ) ); + $query = array_intersect_key( $query, array_flip( $keys ) ); $query['post_type'] = 'attachment'; if ( MEDIA_TRASH && ! empty( $_REQUEST['query']['post_status'] ) @@ -2473,8 +2749,9 @@ $query['post_status'] = 'inherit'; } - if ( current_user_can( get_post_type_object( 'attachment' )->cap->read_private_posts ) ) + if ( current_user_can( get_post_type_object( 'attachment' )->cap->read_private_posts ) ) { $query['post_status'] .= ',private'; + } // Filter query clauses to include filenames. if ( isset( $query['s'] ) ) { @@ -2506,37 +2783,46 @@ * @since 3.5.0 */ function wp_ajax_save_attachment() { - if ( ! isset( $_REQUEST['id'] ) || ! isset( $_REQUEST['changes'] ) ) + if ( ! isset( $_REQUEST['id'] ) || ! isset( $_REQUEST['changes'] ) ) { wp_send_json_error(); - - if ( ! $id = absint( $_REQUEST['id'] ) ) + } + + if ( ! $id = absint( $_REQUEST['id'] ) ) { wp_send_json_error(); + } check_ajax_referer( 'update-post_' . $id, 'nonce' ); - if ( ! current_user_can( 'edit_post', $id ) ) + if ( ! current_user_can( 'edit_post', $id ) ) { wp_send_json_error(); + } $changes = $_REQUEST['changes']; $post = get_post( $id, ARRAY_A ); - if ( 'attachment' != $post['post_type'] ) + if ( 'attachment' != $post['post_type'] ) { wp_send_json_error(); - - if ( isset( $changes['parent'] ) ) + } + + if ( isset( $changes['parent'] ) ) { $post['post_parent'] = $changes['parent']; - - if ( isset( $changes['title'] ) ) + } + + if ( isset( $changes['title'] ) ) { $post['post_title'] = $changes['title']; - - if ( isset( $changes['caption'] ) ) + } + + if ( isset( $changes['caption'] ) ) { $post['post_excerpt'] = $changes['caption']; - - if ( isset( $changes['description'] ) ) + } + + if ( isset( $changes['description'] ) ) { $post['post_content'] = $changes['description']; - - if ( MEDIA_TRASH && isset( $changes['status'] ) ) + } + + if ( MEDIA_TRASH && isset( $changes['status'] ) ) { $post['post_status'] = $changes['status']; + } if ( isset( $changes['alt'] ) ) { $alt = wp_unslash( $changes['alt'] ); @@ -2555,7 +2841,7 @@ } foreach ( wp_get_attachment_id3_keys( (object) $post, 'edit' ) as $key => $label ) { if ( isset( $changes[ $key ] ) ) { - $changed = true; + $changed = true; $id3data[ $key ] = sanitize_text_field( wp_unslash( $changes[ $key ] ) ); } } @@ -2580,25 +2866,30 @@ * @since 3.5.0 */ function wp_ajax_save_attachment_compat() { - if ( ! isset( $_REQUEST['id'] ) ) + if ( ! isset( $_REQUEST['id'] ) ) { + wp_send_json_error(); + } + + if ( ! $id = absint( $_REQUEST['id'] ) ) { wp_send_json_error(); - - if ( ! $id = absint( $_REQUEST['id'] ) ) + } + + if ( empty( $_REQUEST['attachments'] ) || empty( $_REQUEST['attachments'][ $id ] ) ) { wp_send_json_error(); - - if ( empty( $_REQUEST['attachments'] ) || empty( $_REQUEST['attachments'][ $id ] ) ) - wp_send_json_error(); + } $attachment_data = $_REQUEST['attachments'][ $id ]; check_ajax_referer( 'update-post_' . $id, 'nonce' ); - if ( ! current_user_can( 'edit_post', $id ) ) + if ( ! current_user_can( 'edit_post', $id ) ) { wp_send_json_error(); + } $post = get_post( $id, ARRAY_A ); - if ( 'attachment' != $post['post_type'] ) + if ( 'attachment' != $post['post_type'] ) { wp_send_json_error(); + } /** This filter is documented in wp-admin/includes/media.php */ $post = apply_filters( 'attachment_fields_to_save', $post, $attachment_data ); @@ -2611,12 +2902,14 @@ wp_update_post( $post ); foreach ( get_attachment_taxonomies( $post ) as $taxonomy ) { - if ( isset( $attachment_data[ $taxonomy ] ) ) + if ( isset( $attachment_data[ $taxonomy ] ) ) { wp_set_object_terms( $id, array_map( 'trim', preg_split( '/,+/', $attachment_data[ $taxonomy ] ) ), $taxonomy, false ); - } - - if ( ! $attachment = wp_prepare_attachment_for_js( $id ) ) + } + } + + if ( ! $attachment = wp_prepare_attachment_for_js( $id ) ) { wp_send_json_error(); + } wp_send_json_success( $attachment ); } @@ -2627,31 +2920,43 @@ * @since 3.5.0 */ function wp_ajax_save_attachment_order() { - if ( ! isset( $_REQUEST['post_id'] ) ) + if ( ! isset( $_REQUEST['post_id'] ) ) { + wp_send_json_error(); + } + + if ( ! $post_id = absint( $_REQUEST['post_id'] ) ) { wp_send_json_error(); - - if ( ! $post_id = absint( $_REQUEST['post_id'] ) ) + } + + if ( empty( $_REQUEST['attachments'] ) ) { wp_send_json_error(); - - if ( empty( $_REQUEST['attachments'] ) ) - wp_send_json_error(); + } check_ajax_referer( 'update-post_' . $post_id, 'nonce' ); $attachments = $_REQUEST['attachments']; - if ( ! current_user_can( 'edit_post', $post_id ) ) + if ( ! current_user_can( 'edit_post', $post_id ) ) { wp_send_json_error(); + } foreach ( $attachments as $attachment_id => $menu_order ) { - if ( ! current_user_can( 'edit_post', $attachment_id ) ) + if ( ! current_user_can( 'edit_post', $attachment_id ) ) { continue; - if ( ! $attachment = get_post( $attachment_id ) ) + } + if ( ! $attachment = get_post( $attachment_id ) ) { + continue; + } + if ( 'attachment' != $attachment->post_type ) { continue; - if ( 'attachment' != $attachment->post_type ) - continue; - - wp_update_post( array( 'ID' => $attachment_id, 'menu_order' => $menu_order ) ); + } + + wp_update_post( + array( + 'ID' => $attachment_id, + 'menu_order' => $menu_order, + ) + ); } wp_send_json_success(); @@ -2673,28 +2978,35 @@ $id = intval( $attachment['id'] ); - if ( ! $post = get_post( $id ) ) + if ( ! $post = get_post( $id ) ) { wp_send_json_error(); - - if ( 'attachment' != $post->post_type ) + } + + if ( 'attachment' != $post->post_type ) { wp_send_json_error(); + } if ( current_user_can( 'edit_post', $id ) ) { // If this attachment is unattached, attach it. Primarily a back compat thing. if ( 0 == $post->post_parent && $insert_into_post_id = intval( $_POST['post_id'] ) ) { - wp_update_post( array( 'ID' => $id, 'post_parent' => $insert_into_post_id ) ); + wp_update_post( + array( + 'ID' => $id, + 'post_parent' => $insert_into_post_id, + ) + ); } } $url = empty( $attachment['url'] ) ? '' : $attachment['url']; - $rel = ( strpos( $url, 'attachment_id') || get_attachment_link( $id ) == $url ); + $rel = ( strpos( $url, 'attachment_id' ) || get_attachment_link( $id ) == $url ); remove_filter( 'media_send_to_editor', 'image_media_send_to_editor' ); if ( 'image' === substr( $post->post_mime_type, 0, 5 ) ) { $align = isset( $attachment['align'] ) ? $attachment['align'] : 'none'; - $size = isset( $attachment['image-size'] ) ? $attachment['image-size'] : 'medium'; - $alt = isset( $attachment['image_alt'] ) ? $attachment['image_alt'] : ''; + $size = isset( $attachment['image-size'] ) ? $attachment['image-size'] : 'medium'; + $alt = isset( $attachment['image_alt'] ) ? $attachment['image_alt'] : ''; // No whitespace-only captions. $caption = isset( $attachment['post_excerpt'] ) ? $attachment['post_excerpt'] : ''; @@ -2703,12 +3015,12 @@ } $title = ''; // We no longer insert title tags into' . esc_html( $url ) . '
' ),
- ) );
+ wp_send_json_error(
+ array(
+ 'type' => 'not-embeddable',
+ /* translators: %s: URL which cannot be embedded, between code tags */
+ 'message' => sprintf( __( '%s failed to embed.' ), '' . esc_html( $url ) . '
' ),
+ )
+ );
}
if ( has_shortcode( $parsed, 'audio' ) || has_shortcode( $parsed, 'video' ) ) {
- $styles = '';
+ $styles = '';
$mce_styles = wpview_media_sandbox_styles();
foreach ( $mce_styles as $style ) {
$styles .= sprintf( '', $style );
@@ -3103,15 +3464,17 @@
if ( ! empty( $no_ssl_support ) || ( is_ssl() && ( preg_match( '%<(iframe|script|embed) [^>]*src="http://%', $parsed ) ||
preg_match( '%]*href="http://%', $parsed ) ) ) ) {
// Admin is ssl and the embed is not. Iframes, scripts, and other "active content" will be blocked.
- wp_send_json_error( array(
- 'type' => 'not-ssl',
- 'message' => __( 'This preview is unavailable in the editor.' ),
- ) );
+ wp_send_json_error(
+ array(
+ 'type' => 'not-ssl',
+ 'message' => __( 'This preview is unavailable in the editor.' ),
+ )
+ );
}
$return = array(
'body' => $parsed,
- 'attr' => $wp_embed->last_attr
+ 'attr' => $wp_embed->last_attr,
);
if ( strpos( $parsed, 'class="wp-embedded-content' ) ) {
@@ -3121,7 +3484,7 @@
$script_src = includes_url( 'js/wp-embed.min.js' );
}
- $return['head'] = '';
+ $return['head'] = '';
$return['sandbox'] = true;
}
@@ -3156,16 +3519,18 @@
setup_postdata( $post );
}
- $parsed = do_shortcode( $shortcode );
+ $parsed = do_shortcode( $shortcode );
if ( empty( $parsed ) ) {
- wp_send_json_error( array(
- 'type' => 'no-items',
- 'message' => __( 'No items found.' ),
- ) );
- }
-
- $head = '';
+ wp_send_json_error(
+ array(
+ 'type' => 'no-items',
+ 'message' => __( 'No items found.' ),
+ )
+ );
+ }
+
+ $head = '';
$styles = wpview_media_sandbox_styles();
foreach ( $styles as $style ) {
@@ -3188,10 +3553,12 @@
wp_print_scripts( array( 'mediaelement-vimeo', 'wp-mediaelement' ) );
}
- wp_send_json_success( array(
- 'head' => $head,
- 'body' => ob_get_clean()
- ) );
+ wp_send_json_success(
+ array(
+ 'head' => $head,
+ 'body' => ob_get_clean(),
+ )
+ );
}
/**
@@ -3210,9 +3577,11 @@
}
if ( ! $user ) {
- wp_send_json_error( array(
- 'message' => __( 'Could not log out user sessions. Please try again.' ),
- ) );
+ wp_send_json_error(
+ array(
+ 'message' => __( 'Could not log out user sessions. Please try again.' ),
+ )
+ );
}
$sessions = WP_Session_Tokens::get_instance( $user->ID );
@@ -3252,7 +3621,7 @@
switch ( $context ) {
case 'site-icon':
- require_once ABSPATH . '/wp-admin/includes/class-wp-site-icon.php';
+ require_once ABSPATH . 'wp-admin/includes/class-wp-site-icon.php';
$wp_site_icon = new WP_Site_Icon();
// Skip creating a new attachment if the attachment is a Site Icon.
@@ -3281,7 +3650,6 @@
break;
default:
-
/**
* Fires before a cropped image is saved.
*
@@ -3299,13 +3667,13 @@
$cropped = apply_filters( 'wp_create_file_in_uploads', $cropped, $attachment_id ); // For replication.
$parent_url = wp_get_attachment_url( $attachment_id );
- $url = str_replace( basename( $parent_url ), basename( $cropped ), $parent_url );
+ $url = str_replace( wp_basename( $parent_url ), wp_basename( $cropped ), $parent_url );
$size = @getimagesize( $cropped );
$image_type = ( $size ) ? $size['mime'] : 'image/jpeg';
$object = array(
- 'post_title' => basename( $cropped ),
+ 'post_title' => wp_basename( $cropped ),
'post_content' => $url,
'post_mime_type' => $image_type,
'guid' => $url,
@@ -3313,7 +3681,7 @@
);
$attachment_id = wp_insert_attachment( $object, $cropped );
- $metadata = wp_generate_attachment_metadata( $attachment_id, $cropped );
+ $metadata = wp_generate_attachment_metadata( $attachment_id, $cropped );
/**
* Filters the cropped image attachment metadata.
@@ -3378,17 +3746,19 @@
*
* @see Theme_Upgrader
*
- * @global WP_Filesystem_Base $wp_filesystem Subclass
+ * @global WP_Filesystem_Base $wp_filesystem WordPress filesystem subclass.
*/
function wp_ajax_install_theme() {
check_ajax_referer( 'updates' );
if ( empty( $_POST['slug'] ) ) {
- wp_send_json_error( array(
- 'slug' => '',
- 'errorCode' => 'no_theme_specified',
- 'errorMessage' => __( 'No theme specified.' ),
- ) );
+ wp_send_json_error(
+ array(
+ 'slug' => '',
+ 'errorCode' => 'no_theme_specified',
+ 'errorMessage' => __( 'No theme specified.' ),
+ )
+ );
}
$slug = sanitize_key( wp_unslash( $_POST['slug'] ) );
@@ -3406,10 +3776,13 @@
include_once( ABSPATH . 'wp-admin/includes/class-wp-upgrader.php' );
include_once( ABSPATH . 'wp-admin/includes/theme.php' );
- $api = themes_api( 'theme_information', array(
- 'slug' => $slug,
- 'fields' => array( 'sections' => false ),
- ) );
+ $api = themes_api(
+ 'theme_information',
+ array(
+ 'slug' => $slug,
+ 'fields' => array( 'sections' => false ),
+ )
+ );
if ( is_wp_error( $api ) ) {
$status['errorMessage'] = $api->get_error_message();
@@ -3432,7 +3805,7 @@
$status['errorCode'] = $skin->result->get_error_code();
$status['errorMessage'] = $skin->result->get_error_message();
wp_send_json_error( $status );
- } elseif ( $skin->get_errors()->get_error_code() ) {
+ } elseif ( $skin->get_errors()->has_errors() ) {
$status['errorMessage'] = $skin->get_error_messages();
wp_send_json_error( $status );
} elseif ( is_null( $result ) ) {
@@ -3442,7 +3815,7 @@
$status['errorMessage'] = __( 'Unable to connect to the filesystem. Please confirm your credentials.' );
// Pass through the error from WP_Filesystem if one was raised.
- if ( $wp_filesystem instanceof WP_Filesystem_Base && is_wp_error( $wp_filesystem->errors ) && $wp_filesystem->errors->get_error_code() ) {
+ if ( $wp_filesystem instanceof WP_Filesystem_Base && is_wp_error( $wp_filesystem->errors ) && $wp_filesystem->errors->has_errors() ) {
$status['errorMessage'] = esc_html( $wp_filesystem->errors->get_error_message() );
}
@@ -3453,24 +3826,33 @@
if ( current_user_can( 'switch_themes' ) ) {
if ( is_multisite() ) {
- $status['activateUrl'] = add_query_arg( array(
- 'action' => 'enable',
- '_wpnonce' => wp_create_nonce( 'enable-theme_' . $slug ),
- 'theme' => $slug,
- ), network_admin_url( 'themes.php' ) );
+ $status['activateUrl'] = add_query_arg(
+ array(
+ 'action' => 'enable',
+ '_wpnonce' => wp_create_nonce( 'enable-theme_' . $slug ),
+ 'theme' => $slug,
+ ),
+ network_admin_url( 'themes.php' )
+ );
} else {
- $status['activateUrl'] = add_query_arg( array(
- 'action' => 'activate',
- '_wpnonce' => wp_create_nonce( 'switch-theme_' . $slug ),
- 'stylesheet' => $slug,
- ), admin_url( 'themes.php' ) );
+ $status['activateUrl'] = add_query_arg(
+ array(
+ 'action' => 'activate',
+ '_wpnonce' => wp_create_nonce( 'switch-theme_' . $slug ),
+ 'stylesheet' => $slug,
+ ),
+ admin_url( 'themes.php' )
+ );
}
}
if ( ! is_multisite() && current_user_can( 'edit_theme_options' ) && current_user_can( 'customize' ) ) {
- $status['customizeUrl'] = add_query_arg( array(
- 'return' => urlencode( network_admin_url( 'theme-install.php', 'relative' ) ),
- ), wp_customize_url( $slug ) );
+ $status['customizeUrl'] = add_query_arg(
+ array(
+ 'return' => urlencode( network_admin_url( 'theme-install.php', 'relative' ) ),
+ ),
+ wp_customize_url( $slug )
+ );
}
/*
@@ -3487,17 +3869,19 @@
*
* @see Theme_Upgrader
*
- * @global WP_Filesystem_Base $wp_filesystem Subclass
+ * @global WP_Filesystem_Base $wp_filesystem WordPress filesystem subclass.
*/
function wp_ajax_update_theme() {
check_ajax_referer( 'updates' );
if ( empty( $_POST['slug'] ) ) {
- wp_send_json_error( array(
- 'slug' => '',
- 'errorCode' => 'no_theme_specified',
- 'errorMessage' => __( 'No theme specified.' ),
- ) );
+ wp_send_json_error(
+ array(
+ 'slug' => '',
+ 'errorCode' => 'no_theme_specified',
+ 'errorMessage' => __( 'No theme specified.' ),
+ )
+ );
}
$stylesheet = preg_replace( '/[^A-z0-9_\-]/', '', wp_unslash( $_POST['slug'] ) );
@@ -3537,7 +3921,7 @@
$status['errorCode'] = $skin->result->get_error_code();
$status['errorMessage'] = $skin->result->get_error_message();
wp_send_json_error( $status );
- } elseif ( $skin->get_errors()->get_error_code() ) {
+ } elseif ( $skin->get_errors()->has_errors() ) {
$status['errorMessage'] = $skin->get_error_messages();
wp_send_json_error( $status );
} elseif ( is_array( $result ) && ! empty( $result[ $stylesheet ] ) ) {
@@ -3561,7 +3945,7 @@
$status['errorMessage'] = __( 'Unable to connect to the filesystem. Please confirm your credentials.' );
// Pass through the error from WP_Filesystem if one was raised.
- if ( $wp_filesystem instanceof WP_Filesystem_Base && is_wp_error( $wp_filesystem->errors ) && $wp_filesystem->errors->get_error_code() ) {
+ if ( $wp_filesystem instanceof WP_Filesystem_Base && is_wp_error( $wp_filesystem->errors ) && $wp_filesystem->errors->has_errors() ) {
$status['errorMessage'] = esc_html( $wp_filesystem->errors->get_error_message() );
}
@@ -3580,17 +3964,19 @@
*
* @see delete_theme()
*
- * @global WP_Filesystem_Base $wp_filesystem Subclass
+ * @global WP_Filesystem_Base $wp_filesystem WordPress filesystem subclass.
*/
function wp_ajax_delete_theme() {
check_ajax_referer( 'updates' );
if ( empty( $_POST['slug'] ) ) {
- wp_send_json_error( array(
- 'slug' => '',
- 'errorCode' => 'no_theme_specified',
- 'errorMessage' => __( 'No theme specified.' ),
- ) );
+ wp_send_json_error(
+ array(
+ 'slug' => '',
+ 'errorCode' => 'no_theme_specified',
+ 'errorMessage' => __( 'No theme specified.' ),
+ )
+ );
}
$stylesheet = preg_replace( '/[^A-z0-9_\-]/', '', wp_unslash( $_POST['slug'] ) );
@@ -3621,7 +4007,7 @@
$status['errorMessage'] = __( 'Unable to connect to the filesystem. Please confirm your credentials.' );
// Pass through the error from WP_Filesystem if one was raised.
- if ( $wp_filesystem instanceof WP_Filesystem_Base && is_wp_error( $wp_filesystem->errors ) && $wp_filesystem->errors->get_error_code() ) {
+ if ( $wp_filesystem instanceof WP_Filesystem_Base && is_wp_error( $wp_filesystem->errors ) && $wp_filesystem->errors->has_errors() ) {
$status['errorMessage'] = esc_html( $wp_filesystem->errors->get_error_message() );
}
@@ -3650,17 +4036,19 @@
*
* @see Plugin_Upgrader
*
- * @global WP_Filesystem_Base $wp_filesystem Subclass
+ * @global WP_Filesystem_Base $wp_filesystem WordPress filesystem subclass.
*/
function wp_ajax_install_plugin() {
check_ajax_referer( 'updates' );
if ( empty( $_POST['slug'] ) ) {
- wp_send_json_error( array(
- 'slug' => '',
- 'errorCode' => 'no_plugin_specified',
- 'errorMessage' => __( 'No plugin specified.' ),
- ) );
+ wp_send_json_error(
+ array(
+ 'slug' => '',
+ 'errorCode' => 'no_plugin_specified',
+ 'errorMessage' => __( 'No plugin specified.' ),
+ )
+ );
}
$status = array(
@@ -3676,12 +4064,15 @@
include_once( ABSPATH . 'wp-admin/includes/class-wp-upgrader.php' );
include_once( ABSPATH . 'wp-admin/includes/plugin-install.php' );
- $api = plugins_api( 'plugin_information', array(
- 'slug' => sanitize_key( wp_unslash( $_POST['slug'] ) ),
- 'fields' => array(
- 'sections' => false,
- ),
- ) );
+ $api = plugins_api(
+ 'plugin_information',
+ array(
+ 'slug' => sanitize_key( wp_unslash( $_POST['slug'] ) ),
+ 'fields' => array(
+ 'sections' => false,
+ ),
+ )
+ );
if ( is_wp_error( $api ) ) {
$status['errorMessage'] = $api->get_error_message();
@@ -3706,7 +4097,7 @@
$status['errorCode'] = $skin->result->get_error_code();
$status['errorMessage'] = $skin->result->get_error_message();
wp_send_json_error( $status );
- } elseif ( $skin->get_errors()->get_error_code() ) {
+ } elseif ( $skin->get_errors()->has_errors() ) {
$status['errorMessage'] = $skin->get_error_messages();
wp_send_json_error( $status );
} elseif ( is_null( $result ) ) {
@@ -3716,7 +4107,7 @@
$status['errorMessage'] = __( 'Unable to connect to the filesystem. Please confirm your credentials.' );
// Pass through the error from WP_Filesystem if one was raised.
- if ( $wp_filesystem instanceof WP_Filesystem_Base && is_wp_error( $wp_filesystem->errors ) && $wp_filesystem->errors->get_error_code() ) {
+ if ( $wp_filesystem instanceof WP_Filesystem_Base && is_wp_error( $wp_filesystem->errors ) && $wp_filesystem->errors->has_errors() ) {
$status['errorMessage'] = esc_html( $wp_filesystem->errors->get_error_message() );
}
@@ -3724,17 +4115,20 @@
}
$install_status = install_plugin_install_status( $api );
- $pagenow = isset( $_POST['pagenow'] ) ? sanitize_key( $_POST['pagenow'] ) : '';
+ $pagenow = isset( $_POST['pagenow'] ) ? sanitize_key( $_POST['pagenow'] ) : '';
// If installation request is coming from import page, do not return network activation link.
$plugins_url = ( 'import' === $pagenow ) ? admin_url( 'plugins.php' ) : network_admin_url( 'plugins.php' );
if ( current_user_can( 'activate_plugin', $install_status['file'] ) && is_plugin_inactive( $install_status['file'] ) ) {
- $status['activateUrl'] = add_query_arg( array(
- '_wpnonce' => wp_create_nonce( 'activate-plugin_' . $install_status['file'] ),
- 'action' => 'activate',
- 'plugin' => $install_status['file'],
- ), $plugins_url );
+ $status['activateUrl'] = add_query_arg(
+ array(
+ '_wpnonce' => wp_create_nonce( 'activate-plugin_' . $install_status['file'] ),
+ 'action' => 'activate',
+ 'plugin' => $install_status['file'],
+ ),
+ $plugins_url
+ );
}
if ( is_multisite() && current_user_can( 'manage_network_plugins' ) && 'import' !== $pagenow ) {
@@ -3751,17 +4145,19 @@
*
* @see Plugin_Upgrader
*
- * @global WP_Filesystem_Base $wp_filesystem Subclass
+ * @global WP_Filesystem_Base $wp_filesystem WordPress filesystem subclass.
*/
function wp_ajax_update_plugin() {
check_ajax_referer( 'updates' );
if ( empty( $_POST['plugin'] ) || empty( $_POST['slug'] ) ) {
- wp_send_json_error( array(
- 'slug' => '',
- 'errorCode' => 'no_plugin_specified',
- 'errorMessage' => __( 'No plugin specified.' ),
- ) );
+ wp_send_json_error(
+ array(
+ 'slug' => '',
+ 'errorCode' => 'no_plugin_specified',
+ 'errorMessage' => __( 'No plugin specified.' ),
+ )
+ );
}
$plugin = plugin_basename( sanitize_text_field( wp_unslash( $_POST['plugin'] ) ) );
@@ -3803,7 +4199,7 @@
$status['errorCode'] = $skin->result->get_error_code();
$status['errorMessage'] = $skin->result->get_error_message();
wp_send_json_error( $status );
- } elseif ( $skin->get_errors()->get_error_code() ) {
+ } elseif ( $skin->get_errors()->has_errors() ) {
$status['errorMessage'] = $skin->get_error_messages();
wp_send_json_error( $status );
} elseif ( is_array( $result ) && ! empty( $result[ $plugin ] ) ) {
@@ -3837,7 +4233,7 @@
$status['errorMessage'] = __( 'Unable to connect to the filesystem. Please confirm your credentials.' );
// Pass through the error from WP_Filesystem if one was raised.
- if ( $wp_filesystem instanceof WP_Filesystem_Base && is_wp_error( $wp_filesystem->errors ) && $wp_filesystem->errors->get_error_code() ) {
+ if ( $wp_filesystem instanceof WP_Filesystem_Base && is_wp_error( $wp_filesystem->errors ) && $wp_filesystem->errors->has_errors() ) {
$status['errorMessage'] = esc_html( $wp_filesystem->errors->get_error_message() );
}
@@ -3856,17 +4252,19 @@
*
* @see delete_plugins()
*
- * @global WP_Filesystem_Base $wp_filesystem Subclass
+ * @global WP_Filesystem_Base $wp_filesystem WordPress filesystem subclass.
*/
function wp_ajax_delete_plugin() {
check_ajax_referer( 'updates' );
if ( empty( $_POST['slug'] ) || empty( $_POST['plugin'] ) ) {
- wp_send_json_error( array(
- 'slug' => '',
- 'errorCode' => 'no_plugin_specified',
- 'errorMessage' => __( 'No plugin specified.' ),
- ) );
+ wp_send_json_error(
+ array(
+ 'slug' => '',
+ 'errorCode' => 'no_plugin_specified',
+ 'errorMessage' => __( 'No plugin specified.' ),
+ )
+ );
}
$plugin = plugin_basename( sanitize_text_field( wp_unslash( $_POST['plugin'] ) ) );
@@ -3902,7 +4300,7 @@
$status['errorMessage'] = __( 'Unable to connect to the filesystem. Please confirm your credentials.' );
// Pass through the error from WP_Filesystem if one was raised.
- if ( $wp_filesystem instanceof WP_Filesystem_Base && is_wp_error( $wp_filesystem->errors ) && $wp_filesystem->errors->get_error_code() ) {
+ if ( $wp_filesystem instanceof WP_Filesystem_Base && is_wp_error( $wp_filesystem->errors ) && $wp_filesystem->errors->has_errors() ) {
$status['errorMessage'] = esc_html( $wp_filesystem->errors->get_error_message() );
}
@@ -3938,9 +4336,12 @@
}
/** @var WP_Plugins_List_Table $wp_list_table */
- $wp_list_table = _get_list_table( 'WP_Plugins_List_Table', array(
- 'screen' => get_current_screen(),
- ) );
+ $wp_list_table = _get_list_table(
+ 'WP_Plugins_List_Table',
+ array(
+ 'screen' => get_current_screen(),
+ )
+ );
$status = array();
@@ -3950,10 +4351,16 @@
}
// Set the correct requester, so pagination works.
- $_SERVER['REQUEST_URI'] = add_query_arg( array_diff_key( $_POST, array(
- '_ajax_nonce' => null,
- 'action' => null,
- ) ), network_admin_url( 'plugins.php', 'relative' ) );
+ $_SERVER['REQUEST_URI'] = add_query_arg(
+ array_diff_key(
+ $_POST,
+ array(
+ '_ajax_nonce' => null,
+ 'action' => null,
+ )
+ ),
+ network_admin_url( 'plugins.php', 'relative' )
+ );
$GLOBALS['s'] = wp_unslash( $_POST['s'] );
@@ -3981,9 +4388,12 @@
}
/** @var WP_Plugin_Install_List_Table $wp_list_table */
- $wp_list_table = _get_list_table( 'WP_Plugin_Install_List_Table', array(
- 'screen' => get_current_screen(),
- ) );
+ $wp_list_table = _get_list_table(
+ 'WP_Plugin_Install_List_Table',
+ array(
+ 'screen' => get_current_screen(),
+ )
+ );
$status = array();
@@ -3993,10 +4403,16 @@
}
// Set the correct requester, so pagination works.
- $_SERVER['REQUEST_URI'] = add_query_arg( array_diff_key( $_POST, array(
- '_ajax_nonce' => null,
- 'action' => null,
- ) ), network_admin_url( 'plugin-install.php', 'relative' ) );
+ $_SERVER['REQUEST_URI'] = add_query_arg(
+ array_diff_key(
+ $_POST,
+ array(
+ '_ajax_nonce' => null,
+ 'action' => null,
+ )
+ ),
+ network_admin_url( 'plugin-install.php', 'relative' )
+ );
$wp_list_table->prepare_items();
@@ -4017,17 +4433,21 @@
function wp_ajax_edit_theme_plugin_file() {
$r = wp_edit_theme_plugin_file( wp_unslash( $_POST ) ); // Validation of args is done in wp_edit_theme_plugin_file().
if ( is_wp_error( $r ) ) {
- wp_send_json_error( array_merge(
+ wp_send_json_error(
+ array_merge(
+ array(
+ 'code' => $r->get_error_code(),
+ 'message' => $r->get_error_message(),
+ ),
+ (array) $r->get_error_data()
+ )
+ );
+ } else {
+ wp_send_json_success(
array(
- 'code' => $r->get_error_code(),
- 'message' => $r->get_error_message(),
- ),
- (array) $r->get_error_data()
- ) );
- } else {
- wp_send_json_success( array(
- 'message' => __( 'File edited successfully.' ),
- ) );
+ 'message' => __( 'File edited successfully.' ),
+ )
+ );
}
}
@@ -4048,7 +4468,7 @@
}
if ( ! current_user_can( 'export_others_personal_data' ) ) {
- wp_send_json_error( __( 'Invalid request.' ) );
+ wp_send_json_error( __( 'Sorry, you are not allowed to perform this action.' ) );
}
check_ajax_referer( 'wp-privacy-export-personal-data-' . $request_id, 'security' );
@@ -4109,7 +4529,7 @@
}
if ( $exporter_index > count( $exporters ) ) {
- wp_send_json_error( __( 'Exporter index out of range.' ) );
+ wp_send_json_error( __( 'Exporter index is out of range.' ) );
}
if ( $page < 1 ) {
@@ -4122,33 +4542,35 @@
if ( ! is_array( $exporter ) ) {
wp_send_json_error(
- /* translators: %s: array index */
+ /* translators: %s: exporter array index */
sprintf( __( 'Expected an array describing the exporter at index %s.' ), $exporter_key )
);
}
if ( ! array_key_exists( 'exporter_friendly_name', $exporter ) ) {
wp_send_json_error(
- /* translators: %s: array index */
+ /* translators: %s: exporter array index */
sprintf( __( 'Exporter array at index %s does not include a friendly name.' ), $exporter_key )
);
}
+
+ $exporter_friendly_name = $exporter['exporter_friendly_name'];
+
if ( ! array_key_exists( 'callback', $exporter ) ) {
wp_send_json_error(
/* translators: %s: exporter friendly name */
- sprintf( __( 'Exporter does not include a callback: %s.' ), esc_html( $exporter['exporter_friendly_name'] ) )
+ sprintf( __( 'Exporter does not include a callback: %s.' ), esc_html( $exporter_friendly_name ) )
);
}
if ( ! is_callable( $exporter['callback'] ) ) {
wp_send_json_error(
/* translators: %s: exporter friendly name */
- sprintf( __( 'Exporter callback is not a valid callback: %s.' ), esc_html( $exporter['exporter_friendly_name'] ) )
+ sprintf( __( 'Exporter callback is not a valid callback: %s.' ), esc_html( $exporter_friendly_name ) )
);
}
- $callback = $exporter['callback'];
- $exporter_friendly_name = $exporter['exporter_friendly_name'];
-
+ $callback = $exporter['callback'];
$response = call_user_func( $callback, $email_address, $page );
+
if ( is_wp_error( $response ) ) {
wp_send_json_error( $response );
}
@@ -4230,7 +4652,7 @@
// Both capabilities are required to avoid confusion, see `_wp_personal_data_removal_page()`.
if ( ! current_user_can( 'erase_others_personal_data' ) || ! current_user_can( 'delete_users' ) ) {
- wp_send_json_error( __( 'Invalid request.' ) );
+ wp_send_json_error( __( 'Sorry, you are not allowed to perform this action.' ) );
}
check_ajax_referer( 'wp-privacy-erase-personal-data-' . $request_id, 'security' );
@@ -4239,7 +4661,7 @@
$request = wp_get_user_request_data( $request_id );
if ( ! $request || 'remove_personal_data' !== $request->action_name ) {
- wp_send_json_error( __( 'Invalid request ID.' ) );
+ wp_send_json_error( __( 'Invalid request type.' ) );
}
$email_address = $request->email;
@@ -4302,28 +4724,38 @@
$eraser = $erasers[ $eraser_key ];
if ( ! is_array( $eraser ) ) {
- /* translators: %d: array index */
+ /* translators: %d: eraser array index */
wp_send_json_error( sprintf( __( 'Expected an array describing the eraser at index %d.' ), $eraser_index ) );
}
+ if ( ! array_key_exists( 'eraser_friendly_name', $eraser ) ) {
+ /* translators: %d: eraser array index */
+ wp_send_json_error( sprintf( __( 'Eraser array at index %d does not include a friendly name.' ), $eraser_index ) );
+ }
+
+ $eraser_friendly_name = $eraser['eraser_friendly_name'];
+
if ( ! array_key_exists( 'callback', $eraser ) ) {
- /* translators: %d: array index */
- wp_send_json_error( sprintf( __( 'Eraser array at index %d does not include a callback.' ), $eraser_index ) );
+ wp_send_json_error(
+ sprintf(
+ /* translators: %s: eraser friendly name */
+ __( 'Eraser does not include a callback: %s.' ),
+ esc_html( $eraser_friendly_name )
+ )
+ );
}
if ( ! is_callable( $eraser['callback'] ) ) {
- /* translators: %d: array index */
- wp_send_json_error( sprintf( __( 'Eraser callback at index %d is not a valid callback.' ), $eraser_index ) );
+ wp_send_json_error(
+ sprintf(
+ /* translators: %s: eraser friendly name */
+ __( 'Eraser callback is not valid: %s.' ),
+ esc_html( $eraser_friendly_name )
+ )
+ );
}
- if ( ! array_key_exists( 'eraser_friendly_name', $eraser ) ) {
- /* translators: %d: array index */
- wp_send_json_error( sprintf( __( 'Eraser array at index %d does not include a friendly name.' ), $eraser_index ) );
- }
-
- $callback = $eraser['callback'];
- $eraser_friendly_name = $eraser['eraser_friendly_name'];
-
+ $callback = $eraser['callback'];
$response = call_user_func( $callback, $email_address, $page );
if ( is_wp_error( $response ) ) {
@@ -4333,7 +4765,7 @@
if ( ! is_array( $response ) ) {
wp_send_json_error(
sprintf(
- /* translators: 1: eraser friendly name, 2: array index */
+ /* translators: 1: eraser friendly name, 2: eraser array index */
__( 'Did not receive array from %1$s eraser (index %2$d).' ),
esc_html( $eraser_friendly_name ),
$eraser_index
@@ -4344,7 +4776,7 @@
if ( ! array_key_exists( 'items_removed', $response ) ) {
wp_send_json_error(
sprintf(
- /* translators: 1: eraser friendly name, 2: array index */
+ /* translators: 1: eraser friendly name, 2: eraser array index */
__( 'Expected items_removed key in response array from %1$s eraser (index %2$d).' ),
esc_html( $eraser_friendly_name ),
$eraser_index
@@ -4355,7 +4787,7 @@
if ( ! array_key_exists( 'items_retained', $response ) ) {
wp_send_json_error(
sprintf(
- /* translators: 1: eraser friendly name, 2: array index */
+ /* translators: 1: eraser friendly name, 2: eraser array index */
__( 'Expected items_retained key in response array from %1$s eraser (index %2$d).' ),
esc_html( $eraser_friendly_name ),
$eraser_index
@@ -4366,7 +4798,7 @@
if ( ! array_key_exists( 'messages', $response ) ) {
wp_send_json_error(
sprintf(
- /* translators: 1: eraser friendly name, 2: array index */
+ /* translators: 1: eraser friendly name, 2: eraser array index */
__( 'Expected messages key in response array from %1$s eraser (index %2$d).' ),
esc_html( $eraser_friendly_name ),
$eraser_index
@@ -4377,7 +4809,7 @@
if ( ! is_array( $response['messages'] ) ) {
wp_send_json_error(
sprintf(
- /* translators: 1: eraser friendly name, 2: array index */
+ /* translators: 1: eraser friendly name, 2: eraser array index */
__( 'Expected messages key to reference an array in response array from %1$s eraser (index %2$d).' ),
esc_html( $eraser_friendly_name ),
$eraser_index
@@ -4388,7 +4820,7 @@
if ( ! array_key_exists( 'done', $response ) ) {
wp_send_json_error(
sprintf(
- /* translators: 1: eraser friendly name, 2: array index */
+ /* translators: 1: eraser friendly name, 2: eraser array index */
__( 'Expected done flag in response array from %1$s eraser (index %2$d).' ),
esc_html( $eraser_friendly_name ),
$eraser_index
@@ -4429,3 +4861,154 @@
wp_send_json_success( $response );
}
+
+/**
+ * Ajax handler for site health checks on server communication.
+ *
+ * @since 5.2.0
+ */
+function wp_ajax_health_check_dotorg_communication() {
+ check_ajax_referer( 'health-check-site-status' );
+
+ if ( ! current_user_can( 'view_site_health_checks' ) ) {
+ wp_send_json_error();
+ }
+
+ if ( ! class_exists( 'WP_Site_Health' ) ) {
+ require_once( ABSPATH . 'wp-admin/includes/class-wp-site-health.php' );
+ }
+
+ $site_health = new WP_Site_Health();
+ wp_send_json_success( $site_health->get_test_dotorg_communication() );
+}
+
+/**
+ * Ajax handler for site health checks on debug mode.
+ *
+ * @since 5.2.0
+ */
+function wp_ajax_health_check_is_in_debug_mode() {
+ wp_verify_nonce( 'health-check-site-status' );
+
+ if ( ! current_user_can( 'view_site_health_checks' ) ) {
+ wp_send_json_error();
+ }
+
+ if ( ! class_exists( 'WP_Site_Health' ) ) {
+ require_once( ABSPATH . 'wp-admin/includes/class-wp-site-health.php' );
+ }
+
+ $site_health = new WP_Site_Health();
+ wp_send_json_success( $site_health->get_test_is_in_debug_mode() );
+}
+
+/**
+ * Ajax handler for site health checks on background updates.
+ *
+ * @since 5.2.0
+ */
+function wp_ajax_health_check_background_updates() {
+ check_ajax_referer( 'health-check-site-status' );
+
+ if ( ! current_user_can( 'view_site_health_checks' ) ) {
+ wp_send_json_error();
+ }
+
+ if ( ! class_exists( 'WP_Site_Health' ) ) {
+ require_once( ABSPATH . 'wp-admin/includes/class-wp-site-health.php' );
+ }
+
+ $site_health = new WP_Site_Health();
+ wp_send_json_success( $site_health->get_test_background_updates() );
+}
+
+
+/**
+ * Ajax handler for site health checks on loopback requests.
+ *
+ * @since 5.2.0
+ */
+function wp_ajax_health_check_loopback_requests() {
+ check_ajax_referer( 'health-check-site-status' );
+
+ if ( ! current_user_can( 'view_site_health_checks' ) ) {
+ wp_send_json_error();
+ }
+
+ if ( ! class_exists( 'WP_Site_Health' ) ) {
+ require_once( ABSPATH . 'wp-admin/includes/class-wp-site-health.php' );
+ }
+
+ $site_health = new WP_Site_Health();
+ wp_send_json_success( $site_health->get_test_loopback_requests() );
+}
+
+/**
+ * Ajax handler for site health check to update the result status.
+ *
+ * @since 5.2.0
+ */
+function wp_ajax_health_check_site_status_result() {
+ check_ajax_referer( 'health-check-site-status-result' );
+
+ if ( ! current_user_can( 'view_site_health_checks' ) ) {
+ wp_send_json_error();
+ }
+
+ set_transient( 'health-check-site-status-result', wp_json_encode( $_POST['counts'] ) );
+
+ wp_send_json_success();
+}
+
+/**
+ * Ajax handler for site health check to get directories and database sizes.
+ *
+ * @since 5.2.0
+ */
+function wp_ajax_health_check_get_sizes() {
+ check_ajax_referer( 'health-check-site-status-result' );
+
+ if ( ! current_user_can( 'view_site_health_checks' ) || is_multisite() ) {
+ wp_send_json_error();
+ }
+
+ if ( ! class_exists( 'WP_Debug_Data' ) ) {
+ require_once( ABSPATH . 'wp-admin/includes/class-wp-debug-data.php' );
+ }
+
+ $sizes_data = WP_Debug_Data::get_sizes();
+ $all_sizes = array( 'raw' => 0 );
+
+ foreach ( $sizes_data as $name => $value ) {
+ $name = sanitize_text_field( $name );
+ $data = array();
+
+ if ( isset( $value['size'] ) ) {
+ if ( is_string( $value['size'] ) ) {
+ $data['size'] = sanitize_text_field( $value['size'] );
+ } else {
+ $data['size'] = (int) $value['size'];
+ }
+ }
+
+ if ( isset( $value['debug'] ) ) {
+ if ( is_string( $value['debug'] ) ) {
+ $data['debug'] = sanitize_text_field( $value['debug'] );
+ } else {
+ $data['debug'] = (int) $value['debug'];
+ }
+ }
+
+ if ( ! empty( $value['raw'] ) ) {
+ $data['raw'] = (int) $value['raw'];
+ }
+
+ $all_sizes[ $name ] = $data;
+ }
+
+ if ( isset( $all_sizes['total_size']['debug'] ) && 'not available' === $all_sizes['total_size']['debug'] ) {
+ wp_send_json_error( $all_sizes );
+ }
+
+ wp_send_json_success( $all_sizes );
+}