diff -r 34716fd837a4 -r be944660c56a wp/wp-includes/comment.php
--- a/wp/wp-includes/comment.php Tue Dec 15 15:52:01 2020 +0100
+++ b/wp/wp-includes/comment.php Wed Sep 21 18:19:35 2022 +0200
@@ -192,7 +192,7 @@
* respectively. Default OBJECT.
* @return WP_Comment|array|null Depends on $output value.
*/
-function get_comment( &$comment = null, $output = OBJECT ) {
+function get_comment( $comment = null, $output = OBJECT ) {
if ( empty( $comment ) && isset( $GLOBALS['comment'] ) ) {
$comment = $GLOBALS['comment'];
}
@@ -218,11 +218,11 @@
*/
$_comment = apply_filters( 'get_comment', $_comment );
- if ( OBJECT == $output ) {
+ if ( OBJECT === $output ) {
return $_comment;
- } elseif ( ARRAY_A == $output ) {
+ } elseif ( ARRAY_A === $output ) {
return $_comment->to_array();
- } elseif ( ARRAY_N == $output ) {
+ } elseif ( ARRAY_N === $output ) {
return array_values( $_comment->to_array() );
}
return $_comment;
@@ -454,7 +454,7 @@
* @param mixed $meta_value Metadata value. Must be serializable if non-scalar.
* @param bool $unique Optional. Whether the same key should not be added.
* Default false.
- * @return int|bool Meta ID on success, false on failure.
+ * @return int|false Meta ID on success, false on failure.
*/
function add_comment_meta( $comment_id, $meta_key, $meta_value, $unique = false ) {
return add_metadata( 'comment', $comment_id, $meta_key, $meta_value, $unique );
@@ -493,10 +493,12 @@
* @param string $key Optional. The meta key to retrieve. By default,
* returns data for all keys.
* @param bool $single Optional. Whether to return a single value.
- * This parameter has no effect if $key is not specified.
+ * This parameter has no effect if `$key` is not specified.
* Default false.
- * @return mixed An array if $single is false. The value of meta data field
- * if $single is true. False for an invalid $comment_id.
+ * @return mixed An array of values if `$single` is false.
+ * The value of meta data field if `$single` is true.
+ * False for an invalid `$comment_id` (non-numeric, zero, or negative value).
+ * An empty string if a valid but non-existing comment ID is passed.
*/
function get_comment_meta( $comment_id, $key = '', $single = false ) {
return get_metadata( 'comment', $comment_id, $key, $single );
@@ -615,9 +617,10 @@
*
* @param string $author_cookie The comment author name cookie.
*/
- $comment_author = apply_filters( 'pre_comment_author_name', $_COOKIE[ 'comment_author_' . COOKIEHASH ] );
- $comment_author = wp_unslash( $comment_author );
- $comment_author = esc_attr( $comment_author );
+ $comment_author = apply_filters( 'pre_comment_author_name', $_COOKIE[ 'comment_author_' . COOKIEHASH ] );
+ $comment_author = wp_unslash( $comment_author );
+ $comment_author = esc_attr( $comment_author );
+
$_COOKIE[ 'comment_author_' . COOKIEHASH ] = $comment_author;
}
@@ -632,9 +635,10 @@
*
* @param string $author_email_cookie The comment author email cookie.
*/
- $comment_author_email = apply_filters( 'pre_comment_author_email', $_COOKIE[ 'comment_author_email_' . COOKIEHASH ] );
- $comment_author_email = wp_unslash( $comment_author_email );
- $comment_author_email = esc_attr( $comment_author_email );
+ $comment_author_email = apply_filters( 'pre_comment_author_email', $_COOKIE[ 'comment_author_email_' . COOKIEHASH ] );
+ $comment_author_email = wp_unslash( $comment_author_email );
+ $comment_author_email = esc_attr( $comment_author_email );
+
$_COOKIE[ 'comment_author_email_' . COOKIEHASH ] = $comment_author_email;
}
@@ -649,8 +653,9 @@
*
* @param string $author_url_cookie The comment author URL cookie.
*/
- $comment_author_url = apply_filters( 'pre_comment_author_url', $_COOKIE[ 'comment_author_url_' . COOKIEHASH ] );
- $comment_author_url = wp_unslash( $comment_author_url );
+ $comment_author_url = apply_filters( 'pre_comment_author_url', $_COOKIE[ 'comment_author_url_' . COOKIEHASH ] );
+ $comment_author_url = wp_unslash( $comment_author_url );
+
$_COOKIE[ 'comment_author_url_' . COOKIEHASH ] = $comment_author_url;
}
}
@@ -1254,7 +1259,7 @@
if ( ! is_array( $col_length ) && (int) $col_length > 0 ) {
$max_length = (int) $col_length;
- } elseif ( is_array( $col_length ) && isset( $col_length['length'] ) && intval( $col_length['length'] ) > 0 ) {
+ } elseif ( is_array( $col_length ) && isset( $col_length['length'] ) && (int) $col_length['length'] > 0 ) {
$max_length = (int) $col_length['length'];
if ( ! empty( $col_length['type'] ) && 'byte' === $col_length['type'] ) {
@@ -1922,6 +1927,8 @@
* Used to allow the commenter to see their pending comment.
*
* @since 5.1.0
+ * @since 5.7.0 The window within which the author email for an unapproved comment
+ * can be retrieved was extended to 10 minutes.
*
* @return string The unapproved comment author's email (when supplied).
*/
@@ -1933,8 +1940,8 @@
$comment = get_comment( $comment_id );
if ( $comment && hash_equals( $_GET['moderation-hash'], wp_hash( $comment->comment_date_gmt ) ) ) {
- // The comment will only be viewable by the comment author for 1 minute.
- $comment_preview_expires = strtotime( $comment->comment_date_gmt . '+1 minute' );
+ // The comment will only be viewable by the comment author for 10 minutes.
+ $comment_preview_expires = strtotime( $comment->comment_date_gmt . '+10 minutes' );
if ( time() < $comment_preview_expires ) {
$commenter_email = $comment->comment_author_email;
@@ -2188,10 +2195,19 @@
$prefiltered_user_id = ( isset( $commentdata['user_id'] ) ) ? (int) $commentdata['user_id'] : 0;
+ if ( ! isset( $commentdata['comment_author_IP'] ) ) {
+ $commentdata['comment_author_IP'] = $_SERVER['REMOTE_ADDR'];
+ }
+
+ if ( ! isset( $commentdata['comment_agent'] ) ) {
+ $commentdata['comment_agent'] = isset( $_SERVER['HTTP_USER_AGENT'] ) ? $_SERVER['HTTP_USER_AGENT'] : '';
+ }
+
/**
* Filters a comment's data before it is sanitized and inserted into the database.
*
* @since 1.5.0
+ * @since 5.6.0 Comment data includes the `comment_agent` and `comment_author_IP` values.
*
* @param array $commentdata Comment data.
*/
@@ -2211,14 +2227,8 @@
$commentdata['comment_parent'] = ( 'approved' === $parent_status || 'unapproved' === $parent_status ) ? $commentdata['comment_parent'] : 0;
- if ( ! isset( $commentdata['comment_author_IP'] ) ) {
- $commentdata['comment_author_IP'] = $_SERVER['REMOTE_ADDR'];
- }
$commentdata['comment_author_IP'] = preg_replace( '/[^0-9a-fA-F:., ]/', '', $commentdata['comment_author_IP'] );
- if ( ! isset( $commentdata['comment_agent'] ) ) {
- $commentdata['comment_agent'] = isset( $_SERVER['HTTP_USER_AGENT'] ) ? $_SERVER['HTTP_USER_AGENT'] : '';
- }
$commentdata['comment_agent'] = substr( $commentdata['comment_agent'], 0, 254 );
if ( empty( $commentdata['comment_date'] ) ) {
@@ -2398,14 +2408,14 @@
$comment = get_comment( $comment_old->comment_ID );
/**
- * Fires immediately before transitioning a comment's status from one to another
- * in the database.
+ * Fires immediately after transitioning a comment's status from one to another in the database
+ * and removing the comment from the object cache, but prior to all status transition hooks.
*
* @since 1.5.0
*
- * @param int $comment_id Comment ID.
- * @param string|bool $comment_status Current comment status. Possible values include
- * 'hold', 'approve', 'spam', 'trash', or false.
+ * @param int $comment_id Comment ID.
+ * @param string $comment_status Current comment status. Possible values include
+ * 'hold', '0', 'approve', '1', 'spam', and 'trash'.
*/
do_action( 'wp_set_comment_status', $comment->comment_ID, $comment_status );
@@ -2713,7 +2723,7 @@
* @since 1.5.0
*
* @param string $url URL to ping.
- * @param int $deprecated Not Used.
+ * @param string $deprecated Not Used.
* @return string|false String containing URI on success, false on failure.
*/
function discover_pingback_server_uri( $url, $deprecated = '' ) {
@@ -2797,13 +2807,23 @@
* Perform all pingbacks, enclosures, trackbacks, and send to pingback services.
*
* @since 2.1.0
- *
- * @global wpdb $wpdb WordPress database abstraction object.
+ * @since 5.6.0 Introduced `do_all_pings` action hook for individual services.
*/
function do_all_pings() {
- global $wpdb;
-
- // Do pingbacks.
+ /**
+ * Fires immediately after the `do_pings` event to hook services individually.
+ *
+ * @since 5.6.0
+ */
+ do_action( 'do_all_pings' );
+}
+
+/**
+ * Perform all pingbacks.
+ *
+ * @since 5.6.0
+ */
+function do_all_pingbacks() {
$pings = get_posts(
array(
'post_type' => get_post_types(),
@@ -2818,8 +2838,14 @@
delete_post_meta( $ping, '_pingme' );
pingback( null, $ping );
}
-
- // Do enclosures.
+}
+
+/**
+ * Perform all enclosures.
+ *
+ * @since 5.6.0
+ */
+function do_all_enclosures() {
$enclosures = get_posts(
array(
'post_type' => get_post_types(),
@@ -2834,8 +2860,14 @@
delete_post_meta( $enclosure, '_encloseme' );
do_enclose( null, $enclosure );
}
-
- // Do trackbacks.
+}
+
+/**
+ * Perform all trackbacks.
+ *
+ * @since 5.6.0
+ */
+function do_all_trackbacks() {
$trackbacks = get_posts(
array(
'post_type' => get_post_types(),
@@ -2850,9 +2882,6 @@
delete_post_meta( $trackback, '_trackbackme' );
do_trackbacks( $trackback );
}
-
- // Do Update Services/Generic Pings.
- generic_ping();
}
/**
@@ -3232,7 +3261,7 @@
$non_cached_ids = _get_non_cached_ids( $comment_ids, 'comment' );
if ( ! empty( $non_cached_ids ) ) {
- $fresh_comments = $wpdb->get_results( sprintf( "SELECT $wpdb->comments.* FROM $wpdb->comments WHERE comment_ID IN (%s)", join( ',', array_map( 'intval', $non_cached_ids ) ) ) );
+ $fresh_comments = $wpdb->get_results( sprintf( "SELECT $wpdb->comments.* FROM $wpdb->comments WHERE comment_ID IN (%s)", implode( ',', array_map( 'intval', $non_cached_ids ) ) ) );
update_comment_cache( $fresh_comments, $update_meta_cache );
}
@@ -3625,7 +3654,7 @@
case 'comment_link':
$value = get_comment_link( $comment->comment_ID );
$value = sprintf(
- '%s',
+ '%s',
esc_url( $value ),
esc_html( $value )
);