CHANGELOG.md 30 KB

Changelog

All notable changes to this project will be documented in this file.

The format is based on Keep a Changelog, and this project adheres to Semantic Versioning.

Unreleased

Added

Nothing yet.

Changed

Nothing yet.

Fixed

Nothing yet.

Deprecated

  • SimplePie\SimplePie::set_item_limit() is deprecated since it only affects multi-feed mode, which has been deprecated in SimplePie 1.9 (by @jtojnar in #954)

1.9.0 - 2025-09-12

Added

  • New method SimplePie\SimplePie::set_http_client() for providing PSR-18 HTTP client and PSR-17 factories (by @Art4 in #777)
  • New method SimplePie\Locator::set_http_client() for providing PSR-18 HTTP client and PSR-17 factories (by @Art4 in #777)
  • New method SimplePie\Sanitize::set_http_client() for providing PSR-18 HTTP client and PSR-17 factories (by @Art4 in #777)

Changed

  • Use idn_to_ascii function instead of idna_convert library (requires intl extension or a polyfill) (by @jtojnar in #785)
  • Improve precision of type annotations and increased the PHPStan checks to level 8 (by @jtojnar in #837)
  • Use native gzdecode function instead of internal PHP implementation (by @jtojnar in #882)
  • SimplePie\SimplePie::set_curl_options([CURLOPT_HTTPHEADER => …]) will no longer prevent the following headers defined by SimplePie from being sent: Accept, if-modified-since, if-none-match and X-FORWARDED-FOR. (by @Alkarex in #912)

Fixed

  • Do not crash when Content-Type header is missing (by @Art4 in #774)
  • Correct SimplePie\File::$permanent_url when multiple redirects are chained (by @jtojnar in #812)
  • Improve PHP 8.4 compatibility (by @jrfnl in #880, #881, @jtojnar in #837, @Girgias in #851)
  • Fix regression from 1.8.0 in cache invalidation (by @Alkarex in #883)
  • SimplePie\SimplePie::strip_htmltags() correctly propagates $encode argument to Sanitize (by @jtojnar in #894)
  • Stop SimplePie\File from mangling UTF-16 and UTF-32 encoded feeds (by @Alkarex in #916 and #917)

Removed

  • Third-party idna_convert library is no longer part of the repository (by @jtojnar in #785)

Deprecated

  • Most public properties on SimplePie\File are deprecated in favour of new methods. (by @jtojnar in 26e0d18d67c24fa2611cdd4f27d1d7158ef9a913)

    • SimplePie\File::$url is deprecated, use SimplePie\File::get_final_requested_uri() instead
    • SimplePie\File::$useragent is deprecated, pass the user agent in constructor instead
    • SimplePie\File::$body is deprecated, use SimplePie\File::get_body_content() instead
    • SimplePie\File::$headers is deprecated, use SimplePie\File::get_headers() instead
    • SimplePie\File::$status_code is deprecated, use SimplePie\File::get_status_code() instead
    • SimplePie\File::$method is deprecated, no replacement: backend is implementation detail which you should not care about; to see if the file was retrieved over HTTP, check the protocol of SimplePie\File::get_final_requested_uri().
    • SimplePie\File::$permanent_url is deprecated, use SimplePie\File::get_permanent_uri() instead
  • The following SimplePie\Misc methods are deprecated without replacement:

    • SimplePie\Misc::element_implode() is deprecated
    • SimplePie\Misc::parse_str() is deprecated
    • SimplePie\Misc::percent_encoding_normalization() is deprecated
    • SimplePie\Misc::strip_comments() is deprecated
    • SimplePie\Misc::uncomment_rfc822() is deprecated

If you need any of them, consider copying the function to your codebase. (by @jtojnar in #899)

  • The method SimplePie\SimplePie::set_file() is deprecated, use SimplePie\SimplePie::set_http_client() or SimplePie\SimplePie::set_raw_data() instead (by @Art4 in #777)
  • The method SimplePie\Sanitize::pass_file_data() is deprecated, use SimplePie\Sanitize::set_http_client() instead (by @Art4 in #774)
  • Passing multiple URLs to SimplePie\SimplePie::set_feed_url() is deprecated. You can create separate SimplePie instance per feed and then use SimplePie::merge_items() to get a single list of items. (#795)
  • The SimplePie\Gzdecode class is deprecated. You can use native gzdecode function (by @jtojnar in #882)

1.8.1 - 2024-10-01

Changed

Fixed

1.8.0 - 2023-01-20

Added

  • New method SimplePie\SimplePie::set_cache() for providing a PSR-16 cache implementation (by @Art4 in #742)
  • New method SimplePie\SimplePie::set_cache_namefilter() for customize the cache key in #762
  • New class SimplePie\Cache\CallableNameFilter to provide a callable to customize the cache key in #762
  • New interface SimplePie\RegistryAware to inject the Registry instance into classes created by Registry (by @Art4 in #760)
  • update PHP versions in GH Actions workflows (by @jrfnl in #767)
  • Registry: Allow using class-strings instead of magic strings (by @jtojnar and @Art4 in #766)

Changed

  • Clarify branching strategy (by @Art4 in #751)
  • Use native array_replace_recursive() (by @Alkarex in #749)
  • PHP 7.2 or newer is now required (by @Art4 in #743)
  • SimplePie\Parse\Date::date_w3cdtf(): Clean up regex structure (by @jtojnar in #765)
  • Declare strict_types=1 in every file (by @Art4 in #763)

Fixed

  • Item::get_date(): fix return type on unparsable date (by @jtojnar in #753)
  • Fix error handling for PHP 8.1 (by @cedric-anne in #747)
  • The method SimplePie\SimplePie::get_image_height() returns the pixel number as int instead of float (by @Art4 in #763)
  • The method SimplePie\SimplePie::get_image_width() returns the pixel number as int instead of float (by @Art4 in #763)
  • No URL Decode for enclosure links (by @Alkarex in #768)
  • Sanitize thumbnail URL (by @Alkarex in #770)
  • Fix case of multiple RSS2.0 enclosures (by @Alkarex in #769)
  • Fix broken phpdoc references (by @jtojnar in #771)

Deprecated

  • The method SimplePie\Misc::array_merge_recursive() is deprecated, use native array_replace_recursive() instead
  • The method SimplePie\SimplePie::set_cache_name_function() is deprecated, use SimplePie\SimplePie::set_cache_namefilter() instead
  • The method SimplePie\SimplePie::set_cache_location() is deprecated, use SimplePie\SimplePie::set_cache() instead
  • The method SimplePie\SimplePie::force_cache_fallback() is deprecated, expired cache will not be used anymore
  • The class SimplePie\Cache is deprecated, use implementation of SimplePie\SimplePie::set_cache() instead
  • The class SimplePie\Cache\DB is deprecated, use implementation of Psr\SimpleCache\CacheInterface instead
  • The class SimplePie\Cache\File is deprecated, use implementation of Psr\SimpleCache\CacheInterface instead
  • The class SimplePie\Cache\Memcache is deprecated, use implementation of Psr\SimpleCache\CacheInterface instead
  • The class SimplePie\Cache\Memcached is deprecated, use implementation of Psr\SimpleCache\CacheInterface instead
  • The class SimplePie\Cache\MySQL is deprecated, use implementation of Psr\SimpleCache\CacheInterface instead
  • The class SimplePie\Cache\Redis is deprecated, use implementation of Psr\SimpleCache\CacheInterface instead
  • The interface SimplePie\Cache\Base is deprecated, use interface Psr\SimpleCache\CacheInterface instead

Removed

  • ROADMAP.md removed (by @Art4 in #748)
  • remove check for E_USER_DEPRECATED definition (by @Art4 in #750)
  • remove broken BC code in Registry (by @Art4 in #764)

1.7.0 - 2022-09-30

Added

  • New class SimplePie\SimplePie as a replacement for class SimplePie
  • New method SimplePie\Misc::get_default_useragent() as a replacement for constant SIMPLEPIE_USERAGENT

Changed

  • Do not use magic values for state machine state (by @jtojnar in #735)
  • Use PSR-4 classes in Registry (by @Art4 in #736)
  • GH Actions: run tests against PHP 8.2 (by @jrfnl in #739)
  • Change code style to PSR-12 (by @Art4 in #738)

Fixed

Deprecated

  • The class SimplePie is deprecated, use class SimplePie\SimplePie instead
  • The use of PSR-0 classes (all classes without namespaces in the library directory) is deprecated, use PSR-4 classes (see src directory) instead
  • The constant SIMPLEPIE_BUILD is deprecated, use SimplePie\Misc::get_build() instead
  • The constant SIMPLEPIE_USERAGENT is deprecated, use SimplePie\Misc::get_default_useragent() instead
  • All global constants are deprecated, use the constants from the class SimplePie\SimplePie instead (e.g. replace SIMPLEPIE_VERSION with SimplePie\SimplePie::VERSION)

1.6.0 - 2022-04-21

Added

  • New methods SimplePie::rename_attributes() and SimplePie_Sanitize::rename_attributes() allow renaming attributes (by @math-GH in #717)
  • Add audio, video @src elements/attribute for URL resolution (by @rdalverny in #716)
  • Added new namespaced aliases and PSR-4 support for every class (by @Art4 in #711)
  • Add .editorconfig (by @Alkarex in #724)
  • Upload compiled file as release asset (by @Art4 in #725)

Changed

  • GH Actions: version update for ramsey/composer-install (by @jrfnl in #713)

Fixed

  • Bugfix in MySQL cache (by @Art4 in #720)
  • Re-enable xml:base for all supported RSS formats (by @Alkarex in #723)

1.5.8 - 2021-12-24

Changed

  • Update CHANGELOG.md, follow keepachangelog format (by @Art4 in #709)

Fixed

  • Fix a small typo in the error() function Docblock (by @audrasjb in #712)
  • Fix/708 version bump for constant SIMPLEPIE_VERSION for 1.5.8 release (by @faisal-alvi in #710)

1.5.7 - 2021-12-19

  • Fix PHP8 crash due to insufficient isset test (by @Alkarex in #670)
  • gitignore tests (by @Alkarex in #671)
  • Reduce memory when parsing large feeds (by @Alkarex in #672)
  • PHP8 catch ValueError for loadHTML() (by @Alkarex in #673)
  • Provide access to HTTP status code (by @Alkarex in #674)
  • Fix wrong type hint (by @Alkarex in #678)
  • Force HTTPS for selected domains (by @Alkarex in #676)
  • Prevent cache pollution (by @Alkarex in #675)
  • Fix typo in comment (by @Alkarex in #680)
  • Remove HTTP credentials in HTTP Referer (by @Alkarex in #681)
  • CI: switch to GH Actions (by @jrfnl in #688)
  • PHP 8.1: fix "passing null to non-nullable" deprecation notice (by @jrfnl in #689)
  • Tests: PHPUnit cross-version compatibility (by @jrfnl in #690)
  • Tests: use strict assertions (by @jrfnl in #692)
  • CacheTest: handle different exceptions PHP cross-version (by @jrfnl in #691)
  • GH Actions: don't allow builds to fail on PHP 8.0 or 8.1 (by @jrfnl in #693)
  • Tests: use the correct parameter order (by @jrfnl in #694)
  • PHPUnit: update configuration (by @jrfnl in #696)
  • fix: better deal with proxy returning proxy headers (in response to cURL's Proxy-Connection header) (by @shunf4 in #698)
  • Handle multiple Link headers (by @voegelas in #700)
  • PHP 8.2: explicitly declare properties (by @jrfnl in #705)
  • New Contributor: @shunf4 made their first contribution in #698
  • New Contributor: @voegelas made their first contribution in #700

1.5.6 - 2020-10-14

  • PHP 8.0: prevent ValueError for invalid encoding #657
  • Travis: test against more recent PHP versions #653
  • PHP 8.0: handle removal of get_magic_quotes_gpc() #654
  • PHP 7.4/8.0: curly brace array access deprecated & removed #655
  • PHP 8.0: required parameters are no longer allowed after optional parameters #656
  • Fix permanent_url for HTTP 301 #660
  • Fix typo in MIME type in Content_Type_Sniffer #661

1.5.5 - 2020-05-01

  • Ensure that feeds retrieved with force_feed do not share the same cache as those retrieved without. #643
  • Removed references to removed PHP directives and some PHP < 5.6 checks. #645
  • Corrected incorrect alumni name. #638

1.5.4 - 2019-12-17

  • PHP 5.6 or newer is now required. #625
  • Fixed invalid docblock parameter types #633
  • Added support for German short forms for weekdays and months. #632
  • PHP 7.4 support: Fixed instances of accessing array offset on null type values. #628
  • Return an effective feed URL when asking for non-permanent subscribe_url. #627

1.5.3 - 2019-09-22

  • Replaced pow() call with ** operator (micro performance optimization). #622
  • Match links containing feed in the Locator class. #621
  • PHP 7.4 support: Ensure the proper argument order for implode() calls. #617
  • Added support for Russian dates. #607
  • Preemptively changed is_writeable() calls to is_writable() in case the former is deprecated in PHP. #604

1.5.2 - 2018-08-02

  • Added support for PHPUnit 6. #565
  • Added PHP module requirements to Composer. #590
  • Added support for Redis password and database. #589
  • Changed the spelling of writeable to writable within inline documentation. #586
  • Fixed various issues in the test suite and Travis. #576
  • Removed ambiguous tests failing on usort() in PHP 7. #578
  • Simplified logic for some function returns. #573
  • Fixed inline documentation for return value types for accuracy. #570
  • Fixed Travis to run composer install. #567
  • Removed unnecessary elses when a value has already been returned. #566
  • Fixed a bug where URL fragments are included when SimplePie_File normalizes URLs when really old versions of cURL are used. #564
  • Updated SimplePie_Locator to respect cURL options specified. #561

1.5.1 - 2017-11-17

  • Fixed photos so they are not added if the URL is empty. #530
  • Fixed issues with retrieving feeds from behind a proxy. #512/#548
  • Updated favicon URL in get_favicon(). #525
  • Fixed inline documentation typo. #540
  • Removed extra closing <a> tag. #537
  • Removed and updated feed URLs in the demo. #535
  • Improvements to microformat feed parsing. #533
  • Switched from regex to xpath for microformats discovery. #536
  • Update the registry if the Sanitize class has been changed. #532
  • Changed the sanitization type for author and category back to text from HTML. #531

1.5 - 2017-04-17

  • Introduced SimplePie_Category->get_type() for retrieving category type. #492
  • Added $enable_exceptions to the class property declarations for SimplePie class. #504
  • Titles are now parsed for ATOM10 enclosure links. #507
  • $item->get_id() can now be forced to return the supplied ID instead of generating a new one. #509

1.4.3 - 2016-11-26

  • Removed support for PHP 5.2. #469
  • Added support for the PHP UConverter class. #485
  • PHP 7.1 Support: Fixed PHP error when trying to use a non-numeric value in round(). #458
  • PHP 7 Support: Fixed deprecated message for old style constructors. #489
  • Fixed the error message shown when a feed has an empty body. #487
  • Added an error message when the XML or PCRE PHP extensions are missing. #468
  • Check the result of sanitize before returning in get_content() and get_description(). #494
  • Use saveHTML() to fix issues with non UTF-8 characters. #470
  • Stop passing compressed data through trim(). #455
  • Refactored the UTF-8 conversion error message. #467
  • Updated the readme file. #486
  • Added command line support for compayibility test. #481
  • Added PHP 7.1 to the testing matrix. #462
  • Use the latest HHVM version in testing (3.15.2). #480
  • Added PHPUnit as a dev-dependency in Composer. #463
  • Added mf2/mf2 as a suggestion in Composer for use with microformats. #491
  • Fixed misspelled occurrences of "separated". #459
  • Improvements to the compatibility test and error messages. #488

1.4.2 - 2016-06-14

  • Fixed a bug with IRI parsing.
  • More cleanly separates discovery of microformats and parsing when php-mf2 is not present.

1.4.1 - 2016-06-02

  • Fixed inconsistent hash results in SimplePie_Item->get_id().
  • Leading and trailing whitespace is now trimmed from XML feed content to prevent errors. #445
  • Improved support for microformat feeds.

1.4.0 - 2016-04-25

  • Dropped support for PHP 5.2. #348
  • Serialized data is now used for hashing in SimplePie_Item->get_id(). #348
  • Added support for PHP 5.5 and 5.6. #348
  • Added the add_attributes() method to SimplePie. #394
  • Added the force_cache_fallback() method to SimplePie to allow an expired cache to be used when a feed is unavailable. #389
  • Added Memcached. #386
  • Added set_curl_options() method to SimplePie to allow custom options. #348
  • Added Redis Caching. #348
  • Added the CEST timezone. #380
  • Added support for HTTP 301 Moved Permanently. #348
  • Added support for application/x-rss+xml in SimplePie_Locator. #348
  • Added photo de-duping in microformats. #348
  • Added decoding for special characters in MAYBE_HTML. #400
  • Added SimplePie_Exception for internally reporting errors. Also, use this to show an error when trying to load the class instead of causing a failure. #241
  • Added sanitization of the </html> and </body> tags. #348
  • Added support for media thumbnails through SimplePie_Item->get_thumbnail(). #348
  • Added the feed_url to a returned error message. #348
  • Added cache purging after a specified period of time when using MySQL cache. #329
  • Added backwards compatibility for removed subscribe_*() and enable_xml_dump() methods. #348
  • Re-added the deprecated get/set_favicon() methods for backwards compatibility.
  • Charsets are now compared without case sensitivity to avoid duplicates. #352
  • Fixed encoding of ampersands in SimplePie->subscribe_url(). #348
  • The feed URL is now updated based on the URL returned by cURL. #348
  • Explicitly use UTF-8 in SimplePie_Misc->get_element() and Simple_ie_Misc->element_implode(). #348
  • Improved support, feed and authorship discovery, and parsing for microformats. #348
  • rss:pubDate is now used over atom:updated when determining the posting date. #288
  • Simplified the use of mtime() and touch(). #403
  • All items are now forced to have a timestamp. #348
  • Fixed typo in the date parser that incorrectly identified September as month 8. #348
  • Fixed backwards compatibility with cache subclasses. #243
  • Fixed a bug where the updated date was not fetched correctly. #239
  • Fixed the datatype for items.data to be more appropriate in when using MySQL cache. #302
  • Fixed cURL not failing when the server returns an error. #425
  • Fixed an error caused when trying to instantiate a SimplePie_File object with a bad URI. #272
  • Fixed a PHP notice that occurs when a date starts with (. #348
  • Fixed uninitialized string offeset PHP notices. #353
  • Fixed call to non-existent property in Memcache. #311
  • Fixed a bug where MySQL statements were not being passed through prepare(). #348
  • Fixed an instance where an error message in SimplePie was not being triggered correctly. #348
  • Fixed a bug with Russian feeds. #348
  • Fixed an issue with memory leaks. #287
  • Fixed use of DOMElement as array. #315
  • Improved the error message when a feed cannot be found. #348