15 KiB
Changelog
All notable changes to this project will be documented in this file, in reverse chronological order by release.
2.10.3 - 2018-08-01
Added
- Nothing.
Changed
-
This release modifies how
Zend\Feed\Pubsubhubbub\AbstractCallback::_detectCallbackUrl()marshals the request URI. In prior releases, we would attempt to inspect theX-Rewrite-UrlandX-Original-Urlheaders, using their values, if present. These headers are issued by the ISAPI_Rewrite module for IIS (developed by HeliconTech). However, we have no way of guaranteeing that the module is what issued the headers, making it an unreliable source for discovering the URI. As such, we have removed this feature in this release.The method is not called internally. If you are calling the method from your own extension and need support for ISAPI_Rewrite, you will need to override the method as follows:
protected function _detectCallbackUrl() { $callbackUrl = null; if (isset($_SERVER['HTTP_X_REWRITE_URL'])) { $callbackUrl = $_SERVER['HTTP_X_REWRITE_URL']; } if (isset($_SERVER['HTTP_X_ORIGINAL_URL'])) { $callbackUrl = $_SERVER['HTTP_X_ORIGINAL_URL']; } return $callbackUrl ?: parent::__detectCallbackUrl(); }If you use an approach such as the above, make sure you also instruct your web server to strip any incoming headers of the same name so that you can guarantee they are issued by the ISAPI_Rewrite module.
Deprecated
- Nothing.
Removed
- Nothing.
Fixed
- Nothing.
2.10.2 - 2018-06-18
Added
- Nothing.
Changed
- Nothing.
Deprecated
- Nothing.
Removed
- Nothing.
Fixed
-
#81 updates the
Zend\Feed\Reader\ReaderandZend\Feed\Writer\Writerclasses to conditionally register their respective "GooglePlayPodcast" extensions only if their extension managers are aware of it. This is done due to the fact that existingExtensionManagerInterfaceimplementations may not register it by default as the extension did not exist in releases prior to 2.10.0. By having the registration conditional, we prevent an exception from being raised; users are not impacted by its absence, as the extension features were not exposed previously.Both
ReaderandWriteremit anE_USER_NOTICEwhen the extension is not found in the extension manager, indicating that theExtensionManagerInterfaceimplementation should be updated to add entries for the "GooglePlayPodcast" entry, feed, and/or renderer classes.
2.10.1 - 2018-06-05
Added
- Nothing.
Changed
- Nothing.
Deprecated
- Nothing.
Removed
- Nothing.
Fixed
- #79 fixes an issue in the
setType()method of the iTunes feed renderer whereby it was setting the DOM content with an uninitialized variable.
2.10.0 - 2018-05-24
Added
-
#78 adds support for the Google Play Podcasts 1.0 DTD in both the Reader and Writer subcomponents. The following new classes provide the support:
Zend\Feed\Reader\Extension\GooglePlayPodcast\EntryZend\Feed\Reader\Extension\GooglePlayPodcast\FeedZend\Feed\Writer\Extension\GooglePlayPodcast\EntryZend\Feed\Writer\Extension\GooglePlayPodcast\FeedZend\Feed\Writer\Extension\GooglePlayPodcast\Renderer\EntryZend\Feed\Writer\Extension\GooglePlayPodcast\Renderer\Feed
The extensions are registered by default with both
Zend\Feed\Reader\ReaderandZend\Feed\Writer\Writer. -
#77 adds support for
itunes:imagefor each of:Zend\Feed\Reader\Extension\Podcast\Entry, viagetItunesImage(); previously only theFeedsupported it.Zend\Feed\Writer\Extension\ITunes\Entry, viasetItunesImage(); previously only theFeedsupported it.Zend\Feed\Writer\Extension\ITunes\Renderer\Entry; previously on theFeedsupported it.
-
#75 adds
Zend\Feed\Writer\Extension\ITunes\Entry::setItunesSeason(), corresponding to theitunes:seasontag, and allowing setting the season number of the episode the entry represents. -
#75 adds
Zend\Feed\Writer\Extension\ITunes\Entry::setItunesIsClosedCaptioned(), corresponding to theitunes:isClosedCaptionedtag, and allowing setting the status of closed captioning support in the episode the entry represents. -
#75 adds
Zend\Feed\Writer\Extension\ITunes\Entry::setItunesEpisodeType(), corresponding to theitunes:episodeTypetag, and allowing setting the type of episode the entry represents (one of "full", "trailer", or "bonus", and defaulting to "full"). -
#75 adds
Zend\Feed\Writer\Extension\ITunes\Entry::setEpisode(), corresponding to theitunes:episodetag, and allowing setting the number of the episode the entry represents. -
#75 adds
Zend\Feed\Writer\Extension\ITunes\Feed::setItunesComplete(), corresponding to theitunes:completetag. It allows setting a boolean flag, indicating whether or not the podcast is complete (will not air new episodes). -
#75 adds
Zend\Feed\Writer\Extension\ITunes\Feed::setItunesType(), corresponding to theitunes:typetag, and allowing setting the podcast type (one of "serial" or "episodic"). -
#75 adds
Zend\Feed\Reader\Extension\Podcast\Entry::getEpisodeType(), corresponding to theitunes:episodeTypetag, and returning the type of episode the entry represents (one of "full", "trailer", or "bonus", and defaulting to "full"). -
#75 adds
Zend\Feed\Reader\Extension\Podcast\Entry::getSeason(), corresponding to theitunes:seasontag, and returning the season number of the episode the entry represents. -
#75 adds
Zend\Feed\Reader\Extension\Podcast\Entry::isClsoedCaptioned(), corresponding to theitunes:isClosedCaptionedtag, and returning the status of closed captioning in the episode the entry represents. -
#75 adds
Zend\Feed\Reader\Extension\Podcast\Entry::getEpisode(), corresponding to theitunes:episodetag, and returning the number of the episode the entry represents. -
#75 adds
Zend\Feed\Reader\Extension\Podcast\Feed::isComplete(), corresponding to theitunes:completetag. It returns a boolean, indicating whether or not the podcast is complete (will not air new episodes). -
#75 adds
Zend\Feed\Reader\Extension\Podcast\Feed::getPodcastType(), corresponding to theitunes:typetag, and providing the podcast type (one of "serial" or "episodic", defaulting to the latter).
Changed
- #77 updates URI validation for
Zend\Feed\Writer\Extension\ITunes\Feed::setItunesImage()to first check that we have received a string value before proceeding.
Deprecated
- #75 deprecates each of:
Zend\Feed\Reader\Extension\Podcast\Entry::getKeywords()Zend\Feed\Reader\Extension\Podcast\Feed::getKeywords()Zend\Feed\Writer\Extension\ITunes\Entry::setKeywords()Zend\Feed\Writer\Extension\ITunes\Feed::setKeywords()as the iTunes Podcast RSS specification no longer supports keywords.
Removed
- Nothing.
Fixed
- Nothing.
2.9.1 - 2018-05-14
Added
- Nothing.
Changed
- #16 updates the
Zend\Feed\Pubsubhubbub\AbstractCallbackto no longer use the$GLOBALS['HTTP_RAW_POST_DATA']value as a fallback whenphp://inputis empty. The fallback existed because, prior to PHP 5.6,php://inputcould only be read once. As we now require PHP 5.6, the fallback is unnecessary, and best removed as the globals value is deprecated.
Deprecated
- Nothing.
Removed
- Nothing.
Fixed
-
#68 fixes the behavior of
Zend\Feed\Writer\AbstractFeed::setTitle()andZend\Feed\Writer\Entry::setTitle()to accept the string"0". -
#68 updates both
Zend\Feed\Writer\AbstractFeedandZend\Feed\Writer\Entryto no longer throw an exception for entry titles which have a string value of0.
2.9.0 - 2017-12-04
Added
-
#52 adds support for PHP 7.2
-
#53 adds a number of additional aliases to the
Writer\ExtensionPluginManagerto ensure plugins will be pulled as expected. -
#63 adds the feed title to the attributes incorporated in the
FeedSetinstance, per what was already documented. -
#55 makes two API additions to the
StandaloneExtensionManagerimplementations of both the reader and writer subcomponents:$manager->add($name, $class)will add an extension class using the provided name.$manager->remove($name)will remove an existing extension by the provided name.
Changed
- Nothing.
Deprecated
- Nothing.
Removed
- #52 removes support for HHVM.
Fixed
- #50 fixes a few issues
in the PubSubHubbub
Subscriptionmodel where counting was being performed on uncountable data; this ensures the subcomponent will work correctly under PHP 7.2.
2.8.0 - 2017-04-02
Added
- #27 adds a documentation
chapter demonstrating wrapping a PSR-7 client to use with
Zend\Feed\Reader. - #22 adds missing ExtensionManagerInterface on Writer\ExtensionPluginManager.
- #32 adds missing ExtensionManagerInterface on Reader\ExtensionPluginManager.
Deprecated
- Nothing.
Removed
- #38 dropped php 5.5 support
Fixed
- #35 fixed "A non-numeric value encountered" in php 7.1
- #39 fixed protocol relative link absolutisation
- #40 fixed service manager v3 compatibility aliases in extension plugin managers
2.7.0 - 2016-02-11
Added
- #21 edits, revises, and prepares the documentation for publication at https://zendframework.github.io/zend-feed/
Deprecated
- Nothing.
Removed
- Nothing.
Fixed
- #20 makes the two zend-servicemanager extension manager implementations forwards compatible with version 3, and the overall code base forwards compatible with zend-stdlib v3.
2.6.0 - 2015-11-24
Added
- #13 introduces
Zend\Feed\Writer\StandaloneExtensionManager, an implementation ofZend\Feed\Writer\ExtensionManagerInterfacethat has no dependencies.Zend\Feed\Writer\ExtensionManagernow composes this by default, instead ofZend\Feed\Writer\ExtensionPluginManager, for managing the various feed and entry extensions. If you relied onExtensionPluginManagerpreviously, you will need to create an instance manually and inject it into theWriterinstance. - #14 introduces:
Zend\Feed\Reader\Http\HeaderAwareClientInterface, which extendsClientInterfaceand adds an optional argument to theget()method,array $headers = []; this argument allows specifying request headers for the client to send.$headersshould have header names for keys, and the values should be arrays of strings/numbers representing the header values (if only a single value is necessary, it should be represented as an single value array).Zend\Feed\Reader\Http\HeaderAwareResponseInterface, which extendsResponseInterfaceand adds the methodgetHeader($name, $default = null). Clients may return either aResponseInterfaceorHeaderAwareResponseInterfaceinstance.Zend\Feed\Reader\Http\Response, which is an implementation ofHeaderAwareResponseInterface. Its constructor accepts the status code, body, and, optionally, headers.Zend\Feed\Reader\Http\Psr7ResponseDecorator, which is an implementation ofHeaderAwareResponseInterface. Its constructor accepts a PSR-7 response instance, and the various methdos then proxy to those methods. This should make creating wrappers for PSR-7 HTTP clients trivial.Zend\Feed\Reader\Http\ZendHttpClientDecorator, which decorates aZend\Http\Clientinstance, implementsHeaderAwareClientInterface, and returns aResponseinstance seeded from the zend-http response upon callingget(). The class exposes agetDecoratedClient()method to allow retrieval of the decorated zend-http client instance.
Deprecated
- Nothing.
Removed
- Nothing.
Fixed
- #5 fixes the enclosure length check to allow zero and integer strings.
- #2 ensures that the
routine for "absolutising" a link in
Reader\FeedSetalways generates a URI with a scheme. - #14 makes the following
changes to fix behavior around HTTP clients used within
Zend\Feed\Reader\Reader:setHttpClient()now ensures that the passed client is either aZend\Feed\Reader\Http\ClientInterfaceorZend\Http\Client, raising anInvalidArgumentExceptionif neither. If aZend\Http\Clientis passed, it is passed to the constructor ofZend\Feed\Reader\Http\ZendHttpClientDecorator, and the decorator instance is used.getHttpClient()now always returns aZend\Feed\Reader\Http\ClientInterfaceinstance. If no instance is currently registered, it lazy loads aZendHttpClientDecoratorinstance.import()was updated to consume aClientInterfaceinstance; when caches are in play, it checks the client againstHeaderAwareClientInterfaceto determine if it can check for HTTP caching headers, and, if so, to retrieve them.findFeedLinks()was updated to consume aClientInterface.