Ticket #36824: 36824.7.diff
File 36824.7.diff, 5.4 KB (added by , 7 years ago) |
---|
-
src/wp-includes/comment.php
2579 2579 function do_all_pings() { 2580 2580 global $wpdb; 2581 2581 2582 // Determine which classes support trackbacks and pingbacks 2583 $ping_types = get_post_types_by_support( 'trackbacks' ); 2584 2582 2585 // Do pingbacks 2583 while ( $ping = $wpdb->get_row( "SELECT ID, post_content, meta_id FROM {$wpdb->posts}, {$wpdb->postmeta} WHERE {$wpdb->posts}.ID = {$wpdb->postmeta}.post_id AND {$wpdb->postmeta}.meta_key = '_pingme' LIMIT 1" ) ) { 2584 delete_metadata_by_mid( 'post', $ping->meta_id ); 2585 pingback( $ping->post_content, $ping->ID ); 2586 2587 $pings = get_posts( 2588 array( 2589 'post_type' => $ping_types, 2590 'suppress_filters' => false, 2591 'nopaging' => true, 2592 'meta_value' => '_pingme', 2593 'fields' => 'ids' 2594 ) 2595 ); 2596 foreach ( $pings as $ping ) { 2597 delete_post_meta( $ping, '_pingme' ); 2598 pingback( null, $ping ); 2586 2599 } 2587 2600 2588 2601 // Do Enclosures 2589 while ( $enclosure = $wpdb->get_row( "SELECT ID, post_content, meta_id FROM {$wpdb->posts}, {$wpdb->postmeta} WHERE {$wpdb->posts}.ID = {$wpdb->postmeta}.post_id AND {$wpdb->postmeta}.meta_key = '_encloseme' LIMIT 1" ) ) { 2590 delete_metadata_by_mid( 'post', $enclosure->meta_id ); 2591 do_enclose( $enclosure->post_content, $enclosure->ID ); 2602 $enclosures = get_posts( 2603 array( 2604 'post_type' => get_post_types( array( 'publicly_queryable' => true ) ), 2605 'suppress_filters' => false, 2606 'nopaging' => true, 2607 'meta_value' => '_encloseme', 2608 'fields' => 'ids' 2609 ) 2610 ); 2611 foreach ( $enclosures as $enclosure ) { 2612 delete_post_meta( $enclosure, '_encloseme' ); 2613 do_enclose( null, $enclosure ); 2592 2614 } 2593 2615 2594 2616 // Do Trackbacks 2595 $trackbacks = $wpdb->get_col( "SELECT ID FROM $wpdb->posts WHERE to_ping <> '' AND post_status = 'publish'" ); 2596 if ( is_array( $trackbacks ) ) { 2597 foreach ( $trackbacks as $trackback ) { 2598 do_trackbacks( $trackback ); 2599 } 2617 $trackbacks = get_posts( 2618 array( 2619 'post_type' => $ping_types, 2620 'suppress_filters' => false, 2621 'nopaging' => true, 2622 'to_ping' => true, 2623 'fields' => 'ids' 2624 ) 2625 ); 2626 foreach ( $trackbacks as $trackback ) { 2627 do_trackbacks( $trackback ); 2600 2628 } 2601 2629 2602 2630 //Do Update Services/Generic Pings -
src/wp-includes/functions.php
562 562 * pingbacks and trackbacks. 563 563 * 564 564 * @since 1.5.0 565 * @since 4.9.7 $post_id can be a WP_Post Object 565 566 * 566 567 * @global wpdb $wpdb WordPress database abstraction object. 567 568 * 568 * @param string $content Post Content. 569 * @param int $post_ID PostID.569 * @param string $content Post Content. If empty will retrieve from post. 570 * @param int|WP_Post $post_id Post object or ID. 570 571 */ 571 function do_enclose( $content, $post_ ID) {572 function do_enclose( $content, $post_id ) { 572 573 global $wpdb; 574 $post = get_post( $post_id ); 575 if ( ! $post ) { 576 return false; 577 } 578 if ( ! $content ) { 579 $content = $post->post_content; 580 } 573 581 574 582 //TODO: Tidy this ghetto code up and make the debug code optional 575 583 include_once( ABSPATH . WPINC . '/class-IXR.php' ); 576 584 577 585 $post_links = array(); 578 586 579 $pung = get_enclosed( $post _ID );587 $pung = get_enclosed( $post->ID ); 580 588 581 589 $post_links_temp = wp_extract_urls( $content ); 582 590 583 591 foreach ( $pung as $link_test ) { 584 592 if ( ! in_array( $link_test, $post_links_temp ) ) { // link no longer in post 585 $mids = $wpdb->get_col( $wpdb->prepare( "SELECT meta_id FROM $wpdb->postmeta WHERE post_id = %d AND meta_key = 'enclosure' AND meta_value LIKE %s", $post _ID, $wpdb->esc_like( $link_test ) . '%' ) );593 $mids = $wpdb->get_col( $wpdb->prepare( "SELECT meta_id FROM $wpdb->postmeta WHERE post_id = %d AND meta_key = 'enclosure' AND meta_value LIKE %s", $post->ID, $wpdb->esc_like( $link_test ) . '%' ) ); 586 594 foreach ( $mids as $mid ) { 587 595 delete_metadata_by_mid( 'post', $mid ); 588 596 } … … 591 599 592 600 foreach ( (array) $post_links_temp as $link_test ) { 593 601 if ( ! in_array( $link_test, $pung ) ) { // If we haven't pung it already 594 $test = @ parse_url( $link_test );602 $test = @wp_parse_url( $link_test ); 595 603 if ( false === $test ) { 596 604 continue; 597 605 } … … 612 620 * @since 4.4.0 613 621 * 614 622 * @param array $post_links An array of enclosure links. 615 * @param int $post_ IDPost ID.623 * @param int $post_id Post ID. 616 624 */ 617 $post_links = apply_filters( 'enclosure_links', $post_links, $post _ID );625 $post_links = apply_filters( 'enclosure_links', $post_links, $post->ID ); 618 626 619 627 foreach ( (array) $post_links as $url ) { 620 if ( $url != '' && ! $wpdb->get_var( $wpdb->prepare( "SELECT post_id FROM $wpdb->postmeta WHERE post_id = %d AND meta_key = 'enclosure' AND meta_value LIKE %s", $post _ID, $wpdb->esc_like( $url ) . '%' ) ) ) {628 if ( $url != '' && ! $wpdb->get_var( $wpdb->prepare( "SELECT post_id FROM $wpdb->postmeta WHERE post_id = %d AND meta_key = 'enclosure' AND meta_value LIKE %s", $post->ID, $wpdb->esc_like( $url ) . '%' ) ) ) { 621 629 622 630 if ( $headers = wp_get_http_headers( $url ) ) { 623 631 $len = isset( $headers['content-length'] ) ? (int) $headers['content-length'] : 0; … … 640 648 } 641 649 642 650 if ( in_array( substr( $type, 0, strpos( $type, '/' ) ), $allowed_types ) ) { 643 add_post_meta( $post _ID, 'enclosure', "$url\n$len\n$mime\n" );651 add_post_meta( $post->ID, 'enclosure', "$url\n$len\n$mime\n" ); 644 652 } 645 653 } 646 654 }