WordPress.org

Make WordPress Core

Ticket #2933: 2933.diff

File 2933.diff, 2.4 KB (added by Denis-de-Bernardy, 5 years ago)
  • wp-includes/comment.php

     
    13811381 */ 
    13821382function generic_ping($post_id = 0) { 
    13831383        $services = get_option('ping_sites'); 
     1384        $update_services = false; 
     1385         
     1386        $errors = get_transient('ping_errors'); 
     1387        $update_errors = false; 
     1388         
     1389        if ( false === $errors ) { 
     1390                $update_errors = true; 
     1391                $errors = array(); 
     1392        } 
    13841393 
    13851394        $services = explode("\n", $services); 
    1386         foreach ( (array) $services as $service ) { 
     1395        foreach ( (array) $services as $i => $service ) { 
    13871396                $service = trim($service); 
    1388                 if ( '' != $service ) 
    1389                         weblog_ping($service); 
     1397                if ( '' != $service ) { 
     1398                        if ( !isset($errors[$service]) ) 
     1399                                $errors[$service] = array('count' => 0, 'time' => 0); 
     1400                        $success = weblog_ping($service); 
     1401                        if ( !$success ) { 
     1402                                if ( time() - $errors[$service]['time'] > 86400 ) { // count failures once per day at most 
     1403                                        $update_errors = true; 
     1404                                        $errors[$service]['time'] = time(); 
     1405                                        $errors[$service]['count']++; 
     1406                                        // Pings have consistently failed for 14 seperate days 
     1407                                        if ( $errors[$services]['count'] > 14 ) { 
     1408                                                $update_services = true; 
     1409                                                unset($services[$i]); 
     1410                                        } 
     1411                                } 
     1412                        } elseif ( $errors[$service]['count'] ) { 
     1413                                // reset counter 
     1414                                $update_errors = true; 
     1415                                $errors[$service]['time'] = time(); 
     1416                                $errors[$service]['count'] = 0; 
     1417                        } 
     1418                } 
    13901419        } 
     1420         
     1421        if ( $update_services ) 
     1422                update_option('ping_sites', implode("\n", $services)); 
     1423         
     1424        if ( $udpate_errors ) { 
     1425                // the user may remove services from the admin interface, so we filter out invalid ones here 
     1426                foreach ( array_keys($errors) as $service ) { 
     1427                        if ( !in_array($service, $services) ) 
     1428                                unset($errors[$service]); 
     1429                } 
     1430                 
     1431                set_transient('ping_errors', $errors); 
     1432        } 
    13911433 
    13921434        return $post_id; 
    13931435} 
     
    15311573 * 
    15321574 * @param string $server Host of blog to connect to. 
    15331575 * @param string $path Path to send the ping. 
     1576 * @return bool $success Whether the ping was successful 
    15341577 */ 
    15351578function weblog_ping($server = '', $path = '') { 
    15361579        global $wp_version; 
     
    15461589        $home = trailingslashit( get_option('home') ); 
    15471590        if ( !$client->query('weblogUpdates.extendedPing', get_option('blogname'), $home, get_bloginfo('rss2_url') ) ) // then try a normal ping 
    15481591                $client->query('weblogUpdates.ping', get_option('blogname'), $home); 
     1592         
     1593        return !$client->isError(); 
    15491594} 
    15501595 
    15511596//