WordPress.org

Make WordPress Core

Ticket #5298: 5298.patch

File 5298.patch, 5.4 KB (added by rubys, 11 years ago)

reworked and tested patch

  • wp-includes/default-filters.php

     
    134134add_filter('pre_comment_content', 'wp_rel_nofollow', 15);
    135135add_filter('comment_email', 'antispambot');
    136136
     137//Atom SSL support
     138add_filter('atom_service_url','atom_service_url_filter');
     139
    137140// Actions
    138141add_action('wp_head', 'rsd_link');
    139142add_action('wp_head', 'wlwmanifest_link');
  • wp-includes/functions.php

     
    14841484        return abs( intval( $maybeint ) );
    14851485}
    14861486
    1487 ?>
    1488  No newline at end of file
     1487/**
     1488 * Determines if the blog can be accessed over SSL
     1489 * @return bool whether of not SSL access is available
     1490 */
     1491function url_is_accessable_via_ssl($url)
     1492{
     1493        if (in_array('curl', get_loaded_extensions())) {
     1494                 $ssl = preg_replace( '/^http:\/\//', 'https://',  $url );
     1495
     1496                 $ch = curl_init();
     1497                 curl_setopt($ch, CURLOPT_URL, $ssl);
     1498                 curl_setopt($ch, CURLOPT_FAILONERROR, true);
     1499                 curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
     1500                 curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
     1501
     1502                 $data = curl_exec ($ch);
     1503
     1504                 $status = curl_getinfo($ch, CURLINFO_HTTP_CODE);
     1505                 curl_close ($ch);
     1506
     1507                 if ($status == 200 || $status == 401) {
     1508                         return true;
     1509                 }
     1510        }
     1511        return false;
     1512}
     1513
     1514function atom_service_url_filter($url)
     1515{
     1516        if ( url_is_accessable_via_ssl($url) )
     1517                return  preg_replace( '/^http:\/\//', 'https://',  $url );
     1518}
     1519?>
  • wp-app.php

     
    6868        var $MEDIA_SINGLE_PATH = "attachment";
    6969
    7070        var $params = array();
    71         var $script_name = "wp-app.php";
    7271        var $media_content_types = array('image/*','audio/*','video/*');
    7372        var $atom_content_types = array('application/atom+xml');
    7473
     
    8079        function AtomServer() {
    8180
    8281                $this->script_name = array_pop(explode('/',$_SERVER['SCRIPT_NAME']));
     82                $this->app_base = get_bloginfo('url') . '/' . $this->script_name . '/';
     83                if ( isset($_SERVER['HTTPS']) && strtolower($_SERVER['HTTPS']) == 'on' ) {
     84                        $this->app_base = preg_replace( '/^http:\/\//', 'https://', $this->app_base );
     85                }
    8386
    8487                $this->selectors = array(
    8588                        '@/service$@' =>
     
    594597                } else {
    595598                        $path = $this->ENTRIES_PATH;
    596599                }
    597                 $url = get_bloginfo('url') . '/' . $this->script_name . '/' . $path;
     600                $url = $this->app_base . $path;
    598601                if(isset($page) && is_int($page)) {
    599602                        $url .= "/$page";
    600603                }
     
    607610        }
    608611
    609612        function get_categories_url($page = NULL) {
    610                 return get_bloginfo('url') . '/' . $this->script_name . '/' . $this->CATEGORIES_PATH;
     613                return $this->app_base . $this->CATEGORIES_PATH;
    611614        }
    612615
    613616        function the_categories_url() {
     
    616619        }
    617620
    618621        function get_attachments_url($page = NULL) {
    619                 $url = get_bloginfo('url') . '/' . $this->script_name . '/' . $this->MEDIA_PATH;
     622                $url = $this->app_base . $this->MEDIA_PATH;
    620623                if(isset($page) && is_int($page)) {
    621624                        $url .= "/$page";
    622625                }
     
    629632        }
    630633
    631634        function get_service_url() {
    632                 return get_bloginfo('url') . '/' . $this->script_name . '/' . $this->SERVICE_PATH;
     635                return $this->app_base . $this->SERVICE_PATH;
    633636        }
    634637
    635638        function get_entry_url($postID = NULL) {
     
    638641                        $postID = (int) $GLOBALS['post']->ID;
    639642                }
    640643
    641                 $url = get_bloginfo('url') . '/' . $this->script_name . '/' . $this->ENTRY_PATH . "/$postID";
     644                $url = $this->app_base . $this->ENTRY_PATH . "/$postID";
    642645
    643646                log_app('function',"get_entry_url() = $url");
    644647                return $url;
     
    655658                        $postID = (int) $GLOBALS['post']->ID;
    656659                }
    657660
    658                 $url = get_bloginfo('url') . '/' . $this->script_name . '/' . $this->MEDIA_SINGLE_PATH ."/file/$postID";
     661                $url = $this->app_base . $this->MEDIA_SINGLE_PATH ."/file/$postID";
    659662
    660663                log_app('function',"get_media_url() = $url");
    661664                return $url;
     
    919922                                $ctloc = $this->get_entry_url($post_ID);
    920923                                break;
    921924                        case 'attachment':
    922                                 $edit = get_bloginfo('url') . '/' . $this->script_name . "/attachments/$post_ID";
     925                                $edit = $this->app_base . "attachments/$post_ID";
    923926                                break;
    924927                }
    925928                header("Content-Type: $this->ATOM_CONTENT_TYPE");
  • xmlrpc.php

     
    1919
    2020if ( isset( $_GET['rsd'] ) ) { // http://archipelago.phrasewise.com/rsd
    2121header('Content-Type: text/xml; charset=' . get_option('blog_charset'), true);
    22 
    2322?>
    2423<?php echo '<?xml version="1.0" encoding="'.get_option('blog_charset').'"?'.'>'; ?>
    2524<rsd version="1.0" xmlns="http://archipelago.phrasewise.com/rsd">
     
    3231      <api name="Movable Type" blogID="1" preferred="false" apiLink="<?php bloginfo_rss('wpurl') ?>/xmlrpc.php" />
    3332      <api name="MetaWeblog" blogID="1" preferred="false" apiLink="<?php bloginfo_rss('wpurl') ?>/xmlrpc.php" />
    3433      <api name="Blogger" blogID="1" preferred="false" apiLink="<?php bloginfo_rss('wpurl') ?>/xmlrpc.php" />
    35       <api name="Atom" blogID="1" preferred="false" apiLink="<?php bloginfo_rss('wpurl') ?>/wp-app.php/service" />
     34      <api name="Atom" blogID="" preferred="false" apiLink="<?php echo apply_filters('atom_service_url', (get_bloginfo('url')."/wp-app.php/service"))?>" />
    3635    </apis>
    3736  </service>
    3837</rsd>