WordPress.org

Make WordPress Core

Ticket #9247: 9247.diff

File 9247.diff, 3.8 KB (added by DD32, 6 years ago)
  • wp-includes/class-feed.php

     
    22 
    33require_once (ABSPATH . WPINC . '/simplepie.inc'); 
    44 
    5 class WP_Feed_Cache extends SimplePie_Cache 
    6 { 
     5class WP_Feed_Cache extends SimplePie_Cache { 
    76        /** 
    87         * Don't call the constructor. Please. 
    98         * 
    109         * @access private 
    1110         */ 
    12         function WP_Feed_Cache() 
    13         { 
     11        function WP_Feed_Cache() { 
    1412                trigger_error('Please call SimplePie_Cache::create() instead of the constructor', E_USER_ERROR); 
    1513        } 
    1614 
     
    2018         * @static 
    2119         * @access public 
    2220         */ 
    23         function create($location, $filename, $extension) 
    24         { 
     21        function create($location, $filename, $extension) { 
    2522                return new WP_Feed_Cache_Transient($location, $filename, $extension); 
    2623        } 
    2724} 
    2825 
    29 class WP_Feed_Cache_Transient 
    30 { 
     26class WP_Feed_Cache_Transient { 
    3127        var $location; 
    3228        var $filename; 
    3329        var $extension; 
    3430        var $name; 
    3531 
    36         function WP_Feed_Cache_Transient($location, $filename, $extension) 
    37         { 
     32        function WP_Feed_Cache_Transient($location, $filename, $extension) { 
    3833                //$this->location = $location; 
    3934                //$this->filename = rawurlencode($filename); 
    4035                //$this->extension = rawurlencode($extension); 
     
    4338                $this->mod_name = 'feed_mod_' . $filename; 
    4439        } 
    4540 
    46         function save($data) 
    47         { 
    48                 if (is_a($data, 'SimplePie')) 
    49                 { 
     41        function save($data) { 
     42                if ( is_a($data, 'SimplePie') ) 
    5043                        $data = $data->data; 
    51                 } 
    5244 
    5345                set_transient($this->name, $data, 43200); 
    5446                set_transient($this->mod_name, time(), 43200); 
    5547                return true; 
    5648        } 
    5749 
    58         function load() 
    59         { 
     50        function load() { 
    6051                return get_transient($this->name); 
    6152        } 
    6253 
    63         function mtime() 
    64         { 
     54        function mtime() { 
    6555                return get_transient($this->mod_name); 
    6656        } 
    6757 
    68         function touch() 
    69         { 
     58        function touch() { 
    7059                return set_transient($this->mod_name, time(), 43200); 
    7160        } 
    7261 
    73         function unlink() 
    74         { 
     62        function unlink() { 
    7563                delete_transient($this->name); 
    7664                delete_transient($this->mod_name); 
    7765                return true; 
    7866        } 
    7967} 
     68 
     69class WP_SimplePie_File extends SimplePie_File { 
     70 
     71        function WP_SimplePie_File($url, $timeout = 10, $redirects = 5, $headers = null, $useragent = null, $force_fsockopen = false) { 
     72                $this->url = $url; 
     73                $this->timeout = $timeout; 
     74                $this->redirects = $redirects; 
     75                $this->headers = $headers; 
     76                $this->useragent = $useragent; 
     77 
     78                $this->method = SIMPLEPIE_FILE_SOURCE_REMOTE; 
     79 
     80                if ( preg_match('/^http(s)?:\/\//i', $url) ) { 
     81                        $args = array( 'timeout' => $this->timeout, 'redirection' => $this->redirects); 
     82 
     83                        if ( !empty($this->headers) ) 
     84                                $args['headers'] = $this->headers; 
     85 
     86                        if ( SIMPLEPIE_USERAGENT != $this->useragent ) //Use default WP user agent unless custom has been specified 
     87                                $args['user-agent'] = $this->useragent; 
     88 
     89                        $res = wp_remote_request($url, $args); 
     90 
     91                        if ( is_wp_error($res) ) { 
     92                                $this->error = 'WP HTTP Error: ' . $res->get_error_message(); 
     93                                $this->success = false; 
     94                        } else { 
     95                                $this->headers = $res['headers']; 
     96                                $this->body = $res['body']; 
     97                                $this->status_code = $res['response']['code']; 
     98                        } 
     99                } else { 
     100                        if ( ! $this->body = file_get_contents($url) ) { 
     101                                $this->error = 'file_get_contents could not read the file'; 
     102                                $this->success = false; 
     103                        } 
     104                } 
     105        } 
     106} 
     107 No newline at end of file 
  • wp-includes/feed.php

     
    548548        $feed = new SimplePie(); 
    549549        $feed->set_feed_url($url); 
    550550        $feed->set_cache_class('WP_Feed_Cache'); 
     551        $feed->set_file_class('WP_SimplePie_File'); 
    551552        $feed->set_cache_duration(43200); 
    552         $feed->set_useragent('WordPress/' . $GLOBALS['wp_version']); 
    553553        $feed->init(); 
    554554        $feed->handle_content_type(); 
    555555 
     
    558558 
    559559        return $feed; 
    560560} 
    561  
    562 ?>