WordPress.org

Make WordPress Core

Ticket #2933: ping-3.patch

File ping-3.patch, 3.3 KB (added by c960657, 11 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?>