Make WordPress Core


Ignore:
Timestamp:
12/20/2021 07:31:37 PM (3 years ago)
Author:
SergeyBiryukov
Message:

External Libraries: Update the SimplePie library to version 1.5.7.

This version shows significant improvements in the compatibility of SimplePie with PHP 8.0, 8.1, and even contains an initial PHP 8.2 fix. The release also contains a number of other bug fixes.

Release notes: https://github.com/simplepie/simplepie/releases/tag/1.5.7

For a full list of changes in this update, see the SimplePie GitHub:
https://github.com/simplepie/simplepie/compare/1.5.6...1.5.7

Follow-up to [47733], [49176].

Props jrf, SergeyBiryukov.
Fixes #54659.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/wp-includes/class-simplepie.php

    r49176 r52393  
    461461
    462462    /**
     463     * @var int HTTP status code
     464     * @see SimplePie::status_code()
     465     * @access private
     466     */
     467    public $status_code;
     468
     469    /**
    463470     * @var object Instance of SimplePie_Sanitize (or other class)
    464471     * @see SimplePie::set_sanitize_class()
     
    945952
    946953    /**
     954     * Return the filename (i.e. hash, without path and without extension) of the file to cache a given URL.
     955     * @param string $url The URL of the feed to be cached.
     956     * @return string A filename (i.e. hash, without path and without extension).
     957     */
     958    public function get_cache_filename($url)
     959    {
     960        // Append custom parameters to the URL to avoid cache pollution in case of multiple calls with different parameters.
     961        $url .= $this->force_feed ? '#force_feed' : '';
     962        $options = array();
     963        if ($this->timeout != 10)
     964        {
     965            $options[CURLOPT_TIMEOUT] = $this->timeout;
     966        }
     967        if ($this->useragent !== SIMPLEPIE_USERAGENT)
     968        {
     969            $options[CURLOPT_USERAGENT] = $this->useragent;
     970        }
     971        if (!empty($this->curl_options))
     972        {
     973            foreach ($this->curl_options as $k => $v)
     974            {
     975                $options[$k] = $v;
     976            }
     977        }
     978        if (!empty($options))
     979        {
     980            ksort($options);
     981            $url .= '#' . urlencode(var_export($options, true));
     982        }
     983        return call_user_func($this->cache_name_function, $url);
     984    }
     985
     986    /**
    947987     * Set whether feed items should be sorted into reverse chronological order
    948988     *
     
    11821222            $this->add_attributes(false);
    11831223            $this->set_image_handler(false);
     1224            $this->set_https_domains(array());
    11841225        }
    11851226    }
     
    12851326
    12861327    /**
     1328     * Set the list of domains for which to force HTTPS.
     1329     * @see SimplePie_Sanitize::set_https_domains()
     1330     * @param array List of HTTPS domains. Example array('biz', 'example.com', 'example.org', 'www.example.net').
     1331     */
     1332    public function set_https_domains($domains = array())
     1333    {
     1334        if (is_array($domains))
     1335        {
     1336            $this->sanitize->set_https_domains($domains);
     1337        }
     1338    }
     1339
     1340    /**
    12871341     * Set the handler to enable the display of cached images.
    12881342     *
     
    14091463            if ($this->cache && $parsed_feed_url['scheme'] !== '')
    14101464            {
    1411                 $url = $this->feed_url . ($this->force_feed ? '#force_feed' : '');
    1412                 $cache = $this->registry->call('Cache', 'get_handler', array($this->cache_location, call_user_func($this->cache_name_function, $url), 'spc'));
     1465                $filename = $this->get_cache_filename($this->feed_url);
     1466                $cache = $this->registry->call('Cache', 'get_handler', array($this->cache_location, $filename, 'spc'));
    14131467            }
    14141468
     
    15501604     *
    15511605     * If the data is already cached, attempt to fetch it from there instead
    1552      * @param SimplePie_Cache|false $cache Cache handler, or false to not load from the cache
     1606     * @param SimplePie_Cache_Base|false $cache Cache handler, or false to not load from the cache
    15531607     * @return array|true Returns true if the data was loaded from the cache, or an array of HTTP headers and sniffed type
    15541608     */
     
    16131667
    16141668                        $file = $this->registry->create('File', array($this->feed_url, $this->timeout/10, 5, $headers, $this->useragent, $this->force_fsockopen, $this->curl_options));
     1669                        $this->status_code = $file->status_code;
    16151670
    16161671                        if ($file->success)
     
    16671722            }
    16681723        }
     1724        $this->status_code = $file->status_code;
     1725
    16691726        // If the file connection has an error, set SimplePie::error to that and quit
    16701727        if (!$file->success && !($file->method & SIMPLEPIE_FILE_SOURCE_REMOTE === 0 || ($file->status_code === 200 || $file->status_code > 206 && $file->status_code < 300)))
     
    17741831
    17751832    /**
     1833     * Get the last HTTP status code
     1834     *
     1835     * @return int Status code
     1836     */
     1837    public function status_code()
     1838    {
     1839        return $this->status_code;
     1840    }
     1841
     1842    /**
    17761843     * Get the raw XML
    17771844     *
     
    26162683        }
    26172684
    2618         if (isset($this->data['headers']['link']) &&
    2619             preg_match('/<([^>]+)>; rel='.preg_quote($rel).'/',
    2620                        $this->data['headers']['link'], $match))
    2621         {
    2622             return array($match[1]);
    2623         }
    2624         else if (isset($this->data['links'][$rel]))
     2685        if (isset($this->data['headers']['link']))
     2686        {
     2687            $link_headers = $this->data['headers']['link'];
     2688            if (is_string($link_headers)) {
     2689                $link_headers = array($link_headers);
     2690            }
     2691            $matches = preg_filter('/<([^>]+)>; rel='.preg_quote($rel).'/', '$1', $link_headers);
     2692            if (!empty($matches)) {
     2693                return $matches;
     2694            }
     2695        }
     2696
     2697        if (isset($this->data['links'][$rel]))
    26252698        {
    26262699            return $this->data['links'][$rel];
Note: See TracChangeset for help on using the changeset viewer.