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.
Nothing yet.
Nothing yet.
Nothing yet.
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
- 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)
- Use
idn_to_asciifunction instead ofidna_convertlibrary (requiresintlextension 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
gzdecodefunction 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-matchandX-FORWARDED-FOR. (by @Alkarex in #912)
- Do not crash when
Content-Typeheader is missing (by @Art4 in #774) - Correct
SimplePie\File::$permanent_urlwhen 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$encodeargument toSanitize(by @jtojnar in #894)- Stop
SimplePie\Filefrom mangling UTF-16 and UTF-32 encoded feeds (by @Alkarex in #916 and #917)
- Third-party
idna_convertlibrary is no longer part of the repository (by @jtojnar in #785)
-
Most public properties on
SimplePie\Fileare deprecated in favour of new methods. (by @jtojnar in 26e0d18d67c24fa2611cdd4f27d1d7158ef9a913)SimplePie\File::$urlis deprecated, useSimplePie\File::get_final_requested_uri()insteadSimplePie\File::$useragentis deprecated, pass the user agent in constructor insteadSimplePie\File::$bodyis deprecated, useSimplePie\File::get_body_content()insteadSimplePie\File::$headersis deprecated, useSimplePie\File::get_headers()insteadSimplePie\File::$status_codeis deprecated, useSimplePie\File::get_status_code()insteadSimplePie\File::$methodis 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 ofSimplePie\File::get_final_requested_uri().SimplePie\File::$permanent_urlis deprecated, useSimplePie\File::get_permanent_uri()instead
-
The following
SimplePie\Miscmethods are deprecated without replacement:SimplePie\Misc::element_implode()is deprecatedSimplePie\Misc::parse_str()is deprecatedSimplePie\Misc::percent_encoding_normalization()is deprecatedSimplePie\Misc::strip_comments()is deprecatedSimplePie\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, useSimplePie\SimplePie::set_http_client()orSimplePie\SimplePie::set_raw_data()instead (by @Art4 in #777) -
The method
SimplePie\Sanitize::pass_file_data()is deprecated, useSimplePie\Sanitize::set_http_client()instead (by @Art4 in #774) -
Passing multiple URLs to
SimplePie\SimplePie::set_feed_url()is deprecated. You can create separateSimplePieinstance per feed and then useSimplePie::merge_items()to get a single list of items. (#795) -
The
SimplePie\Gzdecodeclass is deprecated. You can use nativegzdecodefunction (by @jtojnar in #882)
1.8.1 - 2024-10-01
- Fixes for PHP 8.4 deprecations (by @Girgias, @jrfnl and @jtojnar, backported in #875)
- Fix locator with website missing
Content-Typeheader (by @jtojnar in #891) - Fix
encodeargument ofSimplePie::strip_htmltags()@jtojnar in #894, backported in #898 - Reverted
strict_typesonly on theone-dot-eightbranch (by @jtojnar in #842)
1.8.0 - 2023-01-20
- 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\CallableNameFilterto provide acallableto customize the cache key in #762 - New interface
SimplePie\RegistryAwareto inject theRegistryinstance into classes created byRegistry(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)
- 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=1in every file (by @Art4 in #763)
- 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 asintinstead offloat(by @Art4 in #763) - The method
SimplePie\SimplePie::get_image_width()returns the pixel number asintinstead offloat(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)
- The method
SimplePie\Misc::array_merge_recursive()is deprecated, use nativearray_replace_recursive()instead - The method
SimplePie\SimplePie::set_cache_name_function()is deprecated, useSimplePie\SimplePie::set_cache_namefilter()instead - The method
SimplePie\SimplePie::set_cache_location()is deprecated, useSimplePie\SimplePie::set_cache()instead - The method
SimplePie\SimplePie::force_cache_fallback()is deprecated, expired cache will not be used anymore - The class
SimplePie\Cacheis deprecated, use implementation ofSimplePie\SimplePie::set_cache()instead - The class
SimplePie\Cache\DBis deprecated, use implementation ofPsr\SimpleCache\CacheInterfaceinstead - The class
SimplePie\Cache\Fileis deprecated, use implementation ofPsr\SimpleCache\CacheInterfaceinstead - The class
SimplePie\Cache\Memcacheis deprecated, use implementation ofPsr\SimpleCache\CacheInterfaceinstead - The class
SimplePie\Cache\Memcachedis deprecated, use implementation ofPsr\SimpleCache\CacheInterfaceinstead - The class
SimplePie\Cache\MySQLis deprecated, use implementation ofPsr\SimpleCache\CacheInterfaceinstead - The class
SimplePie\Cache\Redisis deprecated, use implementation ofPsr\SimpleCache\CacheInterfaceinstead - The interface
SimplePie\Cache\Baseis deprecated, use interfacePsr\SimpleCache\CacheInterfaceinstead
- 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
- New class
SimplePie\SimplePieas a replacement for classSimplePie - New method
SimplePie\Misc::get_default_useragent()as a replacement for constantSIMPLEPIE_USERAGENT
- 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)
- Fix status_code type (by @Alkarex in #728)
- Fix parsing of HTTP Links (by @Alkarex in #729)
- Fix using the best base link for an item content (by @Alkarex in #744)
- Fix .editorconfig regression (by @Alkarex in #745)
- The class
SimplePieis deprecated, use classSimplePie\SimplePieinstead - The use of PSR-0 classes (all classes without namespaces in the
librarydirectory) is deprecated, use PSR-4 classes (seesrcdirectory) instead - The constant
SIMPLEPIE_BUILDis deprecated, useSimplePie\Misc::get_build()instead - The constant
SIMPLEPIE_USERAGENTis deprecated, useSimplePie\Misc::get_default_useragent()instead - All global constants are deprecated, use the constants from the class
SimplePie\SimplePieinstead (e.g. replaceSIMPLEPIE_VERSIONwithSimplePie\SimplePie::VERSION)
1.6.0 - 2022-04-21
- New methods
SimplePie::rename_attributes()andSimplePie_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)
- GH Actions: version update for ramsey/composer-install (by @jrfnl in #713)
- 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
- Update CHANGELOG.md, follow keepachangelog format (by @Art4 in #709)
- Fix a small typo in the error() function Docblock (by @audrasjb in #712)
- Fix/708 version bump for constant
SIMPLEPIE_VERSIONfor 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_feeddo 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
feedin 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 tois_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
writeabletowritablewithin 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_Filenormalizes URLs when really old versions of cURL are used. #564 - Updated
SimplePie_Locatorto 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_exceptionsto the class property declarations forSimplePieclass. #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
UConverterclass. #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()andget_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-dependencyin Composer. #463 - Added
mf2/mf2as 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 toSimplePie. #394 - Added the
force_cache_fallback()method toSimplePieto allow an expired cache to be used when a feed is unavailable. #389 - Added Memcached. #386
- Added
set_curl_options()method toSimplePieto 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+xmlinSimplePie_Locator. #348 - Added photo de-duping in microformats. #348
- Added decoding for special characters in MAYBE_HTML. #400
- Added
SimplePie_Exceptionfor 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_urlto 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_*()andenable_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()andSimple_ie_Misc->element_implode(). #348 - Improved support, feed and authorship discovery, and parsing for microformats. #348
rss:pubDateis now used overatom:updatedwhen determining the posting date. #288- Simplified the use of
mtime()andtouch(). #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.datato 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_Fileobject 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
SimplePiewas not being triggered correctly. #348 - Fixed a bug with Russian feeds. #348
- Fixed an issue with memory leaks. #287
- Fixed use of
DOMElementas array. #315 - Improved the error message when a feed cannot be found. #348