WordPress.org

Make WordPress Core

Ticket #9247: 9247.diff

File 9247.diff, 3.8 KB (added by DD32, 9 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 ?>