Ticket #2469: future-pings-final2.diff

File future-pings-final2.diff, 5.0 KB (added by masquerade, 6 years ago)
  • wp-includes/default-filters.php

     
    9292add_action('do_feed_rss', 'do_feed_rss', 10, 1); 
    9393add_action('do_feed_rss2', 'do_feed_rss2', 10, 1); 
    9494add_action('do_feed_atom', 'do_feed_atom', 10, 1); 
     95add_action('do_pings', 'do_all_pings', 10, 1); 
    9596?> 
  • wp-includes/functions-post.php

     
    199199                                (post_id,meta_key,meta_value)  
    200200                                VALUES ('$post_ID','_encloseme','1') 
    201201                        "); 
    202                         spawn_pinger(); 
     202                        wp_schedule_single_event(time(), 'do_pings'); 
    203203                } 
    204204        } else if ($post_type == 'page') { 
    205205                wp_cache_delete('all_page_ids', 'pages'); 
     
    10021002        return array('file' => $new_file, 'url' => $url, 'error' => false); 
    10031003} 
    10041004 
     1005function do_all_pings() { 
     1006        global $wpdb; 
     1007 
     1008        // Do pingbacks 
     1009        while ($ping = $wpdb->get_row("SELECT * FROM {$wpdb->posts}, {$wpdb->postmeta} WHERE {$wpdb->posts}.ID = {$wpdb->postmeta}.post_id AND {$wpdb->postmeta}.meta_key = '_pingme' LIMIT 1")) { 
     1010                $wpdb->query("DELETE FROM {$wpdb->postmeta} WHERE post_id = {$ping->ID} AND meta_key = '_pingme';"); 
     1011                pingback($ping->post_content, $ping->ID); 
     1012        } 
     1013         
     1014        // Do Enclosures 
     1015        while ($enclosure = $wpdb->get_row("SELECT * FROM {$wpdb->posts}, {$wpdb->postmeta} WHERE {$wpdb->posts}.ID = {$wpdb->postmeta}.post_id AND {$wpdb->postmeta}.meta_key = '_encloseme' LIMIT 1")) { 
     1016                $wpdb->query("DELETE FROM {$wpdb->postmeta} WHERE post_id = {$enclosure->ID} AND meta_key = '_encloseme';"); 
     1017                do_enclose($enclosure->post_content, $enclosure->ID); 
     1018        } 
     1019 
     1020        // Do Trackbacks 
     1021        $trackbacks = $wpdb->get_results("SELECT ID FROM $wpdb->posts WHERE CHAR_LENGTH(TRIM(to_ping)) > 7 AND post_status = 'publish'"); 
     1022        if ( is_array($trackbacks) ) { 
     1023                foreach ( $trackbacks as $trackback ) { 
     1024                        do_trackbacks($trackback->ID); 
     1025                } 
     1026        } 
     1027 
     1028        //Do Update Services/Generic Pings 
     1029        generic_ping(); 
     1030} 
    10051031?> 
  • wp-includes/functions.php

     
    11181118        } 
    11191119} 
    11201120 
    1121 function spawn_pinger() { 
    1122         global $wpdb; 
    1123         $doping = false; 
    1124         if ( $wpdb->get_var("SELECT ID FROM $wpdb->posts WHERE TRIM(to_ping) != '' LIMIT 1") ) 
    1125                 $doping = true; 
    1126  
    1127         if ( $wpdb->get_var("SELECT post_id FROM $wpdb->postmeta WHERE meta_key = '_pingme' OR meta_key = '_encloseme' LIMIT 1") ) 
    1128                 $doping = true; 
    1129  
    1130         if ( substr(php_sapi_name(), 0, 3) == 'cgi' ) 
    1131                 return $doping; 
    1132  
    1133         if ( $doping ) { 
    1134                 $ping_url = get_settings('siteurl') .'/wp-admin/execute-pings.php'; 
    1135                 $parts = parse_url($ping_url); 
    1136                 $argyle = @ fsockopen($parts['host'], $_SERVER['SERVER_PORT'], $errno, $errstr, 0.01); 
    1137                 if ( $argyle ) 
    1138                         fputs($argyle, "GET {$parts['path']}?time=".time()." HTTP/1.0\r\nHost: {$_SERVER['HTTP_HOST']}\r\n\r\n"); 
    1139        } 
    1140 } 
    1141  
    11421121function do_enclose( $content, $post_ID ) { 
    11431122        global $wp_version, $wpdb; 
    11441123        include_once (ABSPATH . WPINC . '/class-IXR.php'); 
  • wp-admin/execute-pings.php

     
    1 <?php 
    2  
    3 require_once('../wp-config.php'); 
    4  
    5 // Do pingbacks 
    6 while ($ping = $wpdb->get_row("SELECT * FROM {$wpdb->posts}, {$wpdb->postmeta} WHERE {$wpdb->posts}.ID = {$wpdb->postmeta}.post_id AND {$wpdb->postmeta}.meta_key = '_pingme' LIMIT 1")) { 
    7         $wpdb->query("DELETE FROM {$wpdb->postmeta} WHERE post_id = {$ping->ID} AND meta_key = '_pingme';"); 
    8         pingback($ping->post_content, $ping->ID); 
    9 } 
    10  
    11 // Do Enclosures 
    12 while ($enclosure = $wpdb->get_row("SELECT * FROM {$wpdb->posts}, {$wpdb->postmeta} WHERE {$wpdb->posts}.ID = {$wpdb->postmeta}.post_id AND {$wpdb->postmeta}.meta_key = '_encloseme' LIMIT 1")) { 
    13         $wpdb->query("DELETE FROM {$wpdb->postmeta} WHERE post_id = {$enclosure->ID} AND meta_key = '_encloseme';"); 
    14         do_enclose($enclosure->post_content, $enclosure->ID); 
    15 } 
    16  
    17 // Do Trackbacks 
    18 $trackbacks = $wpdb->get_results("SELECT ID FROM $wpdb->posts WHERE CHAR_LENGTH(TRIM(to_ping)) > 7 AND post_status = 'publish'"); 
    19 if ( is_array($trackbacks) ) { 
    20         foreach ( $trackbacks as $trackback ) { 
    21                 do_trackbacks($trackback->ID); 
    22         } 
    23 } 
    24  
    25 generic_ping(); 
    26  
    27 ?> 
  • wp-admin/admin-footer.php

     
    99<?php do_action('admin_footer', ''); ?> 
    1010<script type="text/javascript">if(typeof wpOnload=='function')wpOnload();</script> 
    1111 
    12 <?php 
    13 if ( (substr(php_sapi_name(), 0, 3) == 'cgi') && spawn_pinger() ) { 
    14         echo '<iframe id="pingcheck" src="' . get_settings('siteurl') .'/wp-admin/execute-pings.php?time=' . time() . '" style="border:none;width:1px;height:1px;"></iframe>'; 
    15 } 
    16 ?> 
    17  
    1812</body> 
    1913</html>