WordPress.org

Make WordPress Core

Ticket #2933: ping-3.patch

File ping-3.patch, 3.3 KB (added by c960657, 9 years ago)

Updated patch (the old had bitrotted)

  • wp-admin/options-writing.php

     
    101101 
    102102<textarea name="ping_sites" id="ping_sites" style="width: 98%;" rows="3" cols="50"><?php form_option('ping_sites'); ?></textarea> 
    103103 
     104<p><?php _e('These update services failed your last update. You should consider removing these services from the list above.') ?></p> 
     105<dl> 
     106<?php 
     107$has_errors = false; 
     108$services = get_option('ping_sites'); 
     109foreach (get_option('ping_errors') as $service => $error) : 
     110if (preg_match('/(^|\s)' . preg_quote($service, '/') . '($|\s)/', $services)) : 
     111echo "<dt>" . htmlspecialchars($service) . "</dt>"; 
     112echo "<dd>"; 
     113if ($error['count'] > 1) : 
     114printf(__('Failed %d times. Last error message was: '), $error['count']); 
     115endif; 
     116echo htmlspecialchars($error['last_message']); 
     117echo "</dd>"; 
     118$has_errors = true; 
     119endif; 
     120endforeach; 
     121 
     122if (!$has_errors) : 
     123echo "<dd><em>" . __('No errors') . "</em></dd>"; 
     124endif; 
     125?> 
     126</dl> 
     127 
    104128<?php else : ?> 
    105129 
    106130        <p><?php printf(__('WordPress is not notifying any <a href="http://codex.wordpress.org/Update_Services">Update Services</a> because of your blog\'s <a href="%s">privacy settings</a>'), 'options-privacy.php'); ?> 
     
    117141</form> 
    118142</div> 
    119143 
    120 <?php include('./admin-footer.php') ?> 
    121  No newline at end of file 
     144<?php include('./admin-footer.php') ?> 
  • wp-includes/comment.php

     
    653653 
    654654 
    655655function generic_ping($post_id = 0) { 
     656        $errors = get_option('ping_errors'); 
     657        if ( !is_array($errors) ) 
     658                $errors = array(); 
    656659        $services = get_option('ping_sites'); 
    657660        $services = preg_replace("|(\s)+|", '$1', $services); // Kill dupe lines 
    658661        $services = trim($services); 
    659662        if ( '' != $services ) { 
     663                $update_ping_sites = false; 
    660664                $services = explode("\n", $services); 
    661665                foreach ( (array) $services as $service ) 
    662                         weblog_ping($service); 
     666                        $error = weblog_ping($service); 
     667                        if ( $error ) { 
     668                                if ( !isset($errors[$service]) ) 
     669                                        $errors[$service] = array('count' => 0); 
     670                                $errors[$service]['count']++; 
     671                                $errors[$service]['last_message'] = $error; 
     672                                if ( $errors[$service]['count'] > 25 || 
     673                                     $errors[$service]['count'] > 2 && $error == "DO NOT PING THIS SERVICE AGAIN!" ) { 
     674                                        unset($services[$i]); 
     675                                        $update_ping_sites = true; 
     676                                } 
     677                        } else { 
     678                                unset($errors[$service]); 
     679                        } 
     680                if ($update_ping_sites) 
     681                        update_option('ping_sites', implode("\n", $services)); 
    663682        } 
     683        update_option('ping_errors', $errors); 
    664684 
    665685        return $post_id; 
    666686} 
     
    811831        $home = trailingslashit( get_option('home') ); 
    812832        if ( !$client->query('weblogUpdates.extendedPing', get_option('blogname'), $home, get_bloginfo('rss2_url') ) ) // then try a normal ping 
    813833                $client->query('weblogUpdates.ping', get_option('blogname'), $home); 
     834 
     835        $error = false; 
     836        if ( $client->isError() ) { 
     837                $error = $client->getErrorMessage(); 
     838        } else { 
     839                $response = $client->getResponse(); 
     840                if ( !isset($response['flerror']) || $response['flerror'] ) { 
     841                        $error = isset($response['message']) && $response['message'] 
     842                            ? $response['message'] : 'Invalid response'; 
     843                } 
     844        } 
     845        return $error; 
    814846} 
    815847 
    816848?>