09667c886b690d38a7deb9063290983b87d2b07c
[yaffs-website] / vendor / zendframework / zend-feed / CHANGELOG.md
1 # Changelog
2
3 All notable changes to this project will be documented in this file, in reverse chronological order by release.
4
5 ## 2.10.3 - 2018-08-01
6
7 ### Added
8
9 - Nothing.
10
11 ### Changed
12
13 - This release modifies how `Zend\Feed\Pubsubhubbub\AbstractCallback::_detectCallbackUrl()`
14   marshals the request URI. In prior releases, we would attempt to inspect the
15   `X-Rewrite-Url` and `X-Original-Url` headers, using their values, if present.
16   These headers are issued by the ISAPI_Rewrite module for IIS (developed by
17   HeliconTech). However, we have no way of guaranteeing that the module is what
18   issued the headers, making it an unreliable source for discovering the URI. As
19   such, we have removed this feature in this release.
20
21   The method is not called internally. If you are calling the method from your
22   own extension and need support for ISAPI_Rewrite, you will need to override
23   the method as follows:
24
25   ```php
26   protected function _detectCallbackUrl()
27   {
28       $callbackUrl = null;
29       if (isset($_SERVER['HTTP_X_REWRITE_URL'])) {
30           $callbackUrl = $_SERVER['HTTP_X_REWRITE_URL'];
31       }
32       if (isset($_SERVER['HTTP_X_ORIGINAL_URL'])) {
33           $callbackUrl = $_SERVER['HTTP_X_ORIGINAL_URL'];
34       }
35
36       return $callbackUrl ?: parent::__detectCallbackUrl();
37   }
38   ```
39
40   If you use an approach such as the above, make sure you also instruct your web
41   server to strip any incoming headers of the same name so that you can
42   guarantee they are issued by the ISAPI_Rewrite module.
43
44 ### Deprecated
45
46 - Nothing.
47
48 ### Removed
49
50 - Nothing.
51
52 ### Fixed
53
54 - Nothing.
55
56 ## 2.10.2 - 2018-06-18
57
58 ### Added
59
60 - Nothing.
61
62 ### Changed
63
64 - Nothing.
65
66 ### Deprecated
67
68 - Nothing.
69
70 ### Removed
71
72 - Nothing.
73
74 ### Fixed
75
76 - [#81](https://github.com/zendframework/zend-feed/pull/81) updates the `Zend\Feed\Reader\Reader` and `Zend\Feed\Writer\Writer` classes to
77   conditionally register their respective "GooglePlayPodcast" extensions only if
78   their extension managers are aware of it. This is done due to the fact that
79   existing `ExtensionManagerInterface` implementations may not register it by
80   default as the extension did not exist in releases prior to 2.10.0. By having
81   the registration conditional, we prevent an exception from being raised; users
82   are not impacted by its absence, as the extension features were not exposed
83   previously.
84   
85   Both `Reader` and `Writer` emit an `E_USER_NOTICE` when the extension is not
86   found in the extension manager, indicating that the
87   `ExtensionManagerInterface` implementation should be updated to add entries
88   for the "GooglePlayPodcast" entry, feed, and/or renderer classes.
89
90 ## 2.10.1 - 2018-06-05
91
92 ### Added
93
94 - Nothing.
95
96 ### Changed
97
98 - Nothing.
99
100 ### Deprecated
101
102 - Nothing.
103
104 ### Removed
105
106 - Nothing.
107
108 ### Fixed
109
110 - [#79](https://github.com/zendframework/zend-feed/pull/79) fixes an issue in the `setType()` method of the iTunes feed renderer whereby it was setting
111   the DOM content with an uninitialized variable.
112
113 ## 2.10.0 - 2018-05-24
114
115 ### Added
116
117 - [#78](https://github.com/zendframework/zend-feed/pull/78) adds support for the Google Play Podcasts 1.0 DTD in both the Reader and
118   Writer subcomponents. The following new classes provide the support:
119
120   - `Zend\Feed\Reader\Extension\GooglePlayPodcast\Entry`
121   - `Zend\Feed\Reader\Extension\GooglePlayPodcast\Feed`
122   - `Zend\Feed\Writer\Extension\GooglePlayPodcast\Entry`
123   - `Zend\Feed\Writer\Extension\GooglePlayPodcast\Feed`
124   - `Zend\Feed\Writer\Extension\GooglePlayPodcast\Renderer\Entry`
125   - `Zend\Feed\Writer\Extension\GooglePlayPodcast\Renderer\Feed`
126
127   The extensions are registered by default with both `Zend\Feed\Reader\Reader`
128   and `Zend\Feed\Writer\Writer`.
129
130 - [#77](https://github.com/zendframework/zend-feed/pull/77) adds support for `itunes:image` for each of:
131   - `Zend\Feed\Reader\Extension\Podcast\Entry`, via `getItunesImage()`; previously only the `Feed` supported it.
132   - `Zend\Feed\Writer\Extension\ITunes\Entry`, via `setItunesImage()`; previously only the `Feed` supported it.
133   - `Zend\Feed\Writer\Extension\ITunes\Renderer\Entry`; previously on the `Feed` supported it.
134
135 - [#75](https://github.com/zendframework/zend-feed/pull/75) adds `Zend\Feed\Writer\Extension\ITunes\Entry::setItunesSeason()`, corresponding to the
136   `itunes:season` tag, and allowing setting the season number of the episode the
137   entry represents.
138
139 - [#75](https://github.com/zendframework/zend-feed/pull/75) adds `Zend\Feed\Writer\Extension\ITunes\Entry::setItunesIsClosedCaptioned()`, corresponding to the
140   `itunes:isClosedCaptioned` tag, and allowing setting the status of closed
141   captioning support in the episode the entry represents.
142
143 - [#75](https://github.com/zendframework/zend-feed/pull/75) adds `Zend\Feed\Writer\Extension\ITunes\Entry::setItunesEpisodeType()`, corresponding to the
144   `itunes:episodeType` tag, and allowing setting the type of episode the entry represents
145   (one of "full", "trailer", or "bonus", and defaulting to "full").
146
147 - [#75](https://github.com/zendframework/zend-feed/pull/75) adds `Zend\Feed\Writer\Extension\ITunes\Entry::setEpisode()`, corresponding to the
148   `itunes:episode` tag, and allowing setting the number of the episode the entry represents.
149
150 - [#75](https://github.com/zendframework/zend-feed/pull/75) adds `Zend\Feed\Writer\Extension\ITunes\Feed::setItunesComplete()`, corresponding to the
151   `itunes:complete` tag. It allows setting a boolean flag, indicating whether or not the
152   podcast is complete (will not air new episodes).
153
154 - [#75](https://github.com/zendframework/zend-feed/pull/75) adds `Zend\Feed\Writer\Extension\ITunes\Feed::setItunesType()`, corresponding to the
155   `itunes:type` tag, and allowing setting the podcast type (one of "serial" or "episodic").
156
157 - [#75](https://github.com/zendframework/zend-feed/pull/75) adds `Zend\Feed\Reader\Extension\Podcast\Entry::getEpisodeType()`, corresponding to the
158   `itunes:episodeType` tag, and returning the type of episode the entry represents
159   (one of "full", "trailer", or "bonus", and defaulting to "full").
160
161 - [#75](https://github.com/zendframework/zend-feed/pull/75) adds `Zend\Feed\Reader\Extension\Podcast\Entry::getSeason()`, corresponding to the
162   `itunes:season` tag, and returning the season number of the episode the entry represents.
163
164 - [#75](https://github.com/zendframework/zend-feed/pull/75) adds `Zend\Feed\Reader\Extension\Podcast\Entry::isClsoedCaptioned()`, corresponding to the
165   `itunes:isClosedCaptioned` tag, and returning the status of closed captioning
166   in the episode the entry represents.
167
168 - [#75](https://github.com/zendframework/zend-feed/pull/75) adds `Zend\Feed\Reader\Extension\Podcast\Entry::getEpisode()`, corresponding to the
169   `itunes:episode` tag, and returning the number of the episode the entry represents.
170
171 - [#75](https://github.com/zendframework/zend-feed/pull/75) adds `Zend\Feed\Reader\Extension\Podcast\Feed::isComplete()`, corresponding to the
172   `itunes:complete` tag. It returns a boolean, indicating whether or not the podcast is
173   complete (will not air new episodes).
174
175 - [#75](https://github.com/zendframework/zend-feed/pull/75) adds `Zend\Feed\Reader\Extension\Podcast\Feed::getPodcastType()`, corresponding to the
176   `itunes:type` tag, and providing the podcast type (one of "serial" or "episodic", defaulting
177   to the latter).
178
179 ### Changed
180
181 - [#77](https://github.com/zendframework/zend-feed/pull/77) updates URI validation for `Zend\Feed\Writer\Extension\ITunes\Feed::setItunesImage()` to
182   first check that we have received a string value before proceeding.
183
184 ### Deprecated
185
186 - [#75](https://github.com/zendframework/zend-feed/pull/75) deprecates each of:
187   - `Zend\Feed\Reader\Extension\Podcast\Entry::getKeywords()`
188   - `Zend\Feed\Reader\Extension\Podcast\Feed::getKeywords()`
189   - `Zend\Feed\Writer\Extension\ITunes\Entry::setKeywords()`
190   - `Zend\Feed\Writer\Extension\ITunes\Feed::setKeywords()`
191   as the iTunes Podcast RSS specification no longer supports keywords.
192
193 ### Removed
194
195 - Nothing.
196
197 ### Fixed
198
199 - Nothing.
200
201 ## 2.9.1 - 2018-05-14
202
203 ### Added
204
205 - Nothing.
206
207 ### Changed
208
209 - [#16](https://github.com/zendframework/zend-feed/pull/16) updates the `Zend\Feed\Pubsubhubbub\AbstractCallback` to no longer use the
210   `$GLOBALS['HTTP_RAW_POST_DATA']` value as a fallback when `php://input` is
211   empty. The fallback existed because, prior to PHP 5.6, `php://input` could
212   only be read once. As we now require PHP 5.6, the fallback is unnecessary,
213   and best removed as the globals value is deprecated.
214
215 ### Deprecated
216
217 - Nothing.
218
219 ### Removed
220
221 - Nothing.
222
223 ### Fixed
224
225 - [#68](https://github.com/zendframework/zend-feed/pull/68) fixes the behavior of `Zend\Feed\Writer\AbstractFeed::setTitle()` and
226   `Zend\Feed\Writer\Entry::setTitle()` to accept the string `"0"`.
227
228 - [#68](https://github.com/zendframework/zend-feed/pull/68) updates both `Zend\Feed\Writer\AbstractFeed` and `Zend\Feed\Writer\Entry`
229   to no longer throw an exception for entry titles which have a string value of `0`.
230
231 ## 2.9.0 - 2017-12-04
232
233 ### Added
234
235 - [#52](https://github.com/zendframework/zend-feed/pull/52) adds support for PHP
236   7.2
237
238 - [#53](https://github.com/zendframework/zend-feed/pull/53) adds a number of
239   additional aliases to the `Writer\ExtensionPluginManager` to ensure plugins
240   will be pulled as expected.
241
242 - [#63](https://github.com/zendframework/zend-feed/pull/63) adds the feed title
243   to the attributes incorporated in the `FeedSet` instance, per what was already
244   documented.
245
246 - [#55](https://github.com/zendframework/zend-feed/pull/55) makes two API
247   additions to the `StandaloneExtensionManager` implementations of both the reader
248   and writer subcomponents:
249
250   - `$manager->add($name, $class)` will add an extension class using the
251     provided name.
252   - `$manager->remove($name)` will remove an existing extension by the provided
253     name.
254
255 ### Changed
256
257 - Nothing.
258
259 ### Deprecated
260
261 - Nothing.
262
263 ### Removed
264
265 - [#52](https://github.com/zendframework/zend-feed/pull/52) removes support for
266   HHVM.
267
268 ### Fixed
269
270 - [#50](https://github.com/zendframework/zend-feed/pull/50) fixes a few issues
271   in the PubSubHubbub `Subscription` model where counting was being performed on
272   uncountable data; this ensures the subcomponent will work correctly under PHP
273   7.2.
274
275 ## 2.8.0 - 2017-04-02
276
277 ### Added
278
279 - [#27](https://github.com/zendframework/zend-feed/pull/27) adds a documentation
280   chapter demonstrating wrapping a PSR-7 client to use with `Zend\Feed\Reader`.
281 - [#22](https://github.com/zendframework/zend-feed/pull/22) adds missing
282   ExtensionManagerInterface on Writer\ExtensionPluginManager.
283 - [#32](https://github.com/zendframework/zend-feed/pull/32) adds missing
284   ExtensionManagerInterface on Reader\ExtensionPluginManager.
285
286 ### Deprecated
287
288 - Nothing.
289
290 ### Removed
291
292 - [#38](https://github.com/zendframework/zend-feed/pull/38) dropped php 5.5
293   support
294
295 ### Fixed
296
297 - [#35](https://github.com/zendframework/zend-feed/pull/35) fixed
298   "A non-numeric value encountered" in php 7.1
299 - [#39](https://github.com/zendframework/zend-feed/pull/39) fixed protocol
300   relative link absolutisation
301 - [#40](https://github.com/zendframework/zend-feed/pull/40) fixed service
302   manager v3 compatibility aliases in extension plugin managers
303
304 ## 2.7.0 - 2016-02-11
305
306 ### Added
307
308 - [#21](https://github.com/zendframework/zend-feed/pull/21) edits, revises, and
309   prepares the documentation for publication at https://zendframework.github.io/zend-feed/
310
311 ### Deprecated
312
313 - Nothing.
314
315 ### Removed
316
317 - Nothing.
318
319 ### Fixed
320
321 - [#20](https://github.com/zendframework/zend-feed/pull/20) makes the two
322   zend-servicemanager extension manager implementations forwards compatible
323   with version 3, and the overall code base forwards compatible with zend-stdlib
324   v3.
325
326 ## 2.6.0 - 2015-11-24
327
328 ### Added
329
330 - [#13](https://github.com/zendframework/zend-feed/pull/13) introduces
331   `Zend\Feed\Writer\StandaloneExtensionManager`, an implementation of
332   `Zend\Feed\Writer\ExtensionManagerInterface` that has no dependencies.
333   `Zend\Feed\Writer\ExtensionManager` now composes this by default, instead of
334   `Zend\Feed\Writer\ExtensionPluginManager`, for managing the various feed and
335   entry extensions. If you relied on `ExtensionPluginManager` previously, you
336   will need to create an instance manually and inject it into the `Writer`
337   instance.
338 - [#14](https://github.com/zendframework/zend-feed/pull/14) introduces:
339   - `Zend\Feed\Reader\Http\HeaderAwareClientInterface`, which extends
340     `ClientInterface` and adds an optional argument to the `get()` method,
341     `array $headers = []`; this argument allows specifying request headers for
342     the client to send. `$headers` should have header names for keys, and the
343     values should be arrays of strings/numbers representing the header values
344     (if only a single value is necessary, it should be represented as an single
345     value array).
346   - `Zend\Feed\Reader\Http\HeaderAwareResponseInterface`, which extends
347     `ResponseInterface` and adds the method `getHeader($name, $default = null)`.
348     Clients may return either a `ResponseInterface` or
349     `HeaderAwareResponseInterface` instance.
350   - `Zend\Feed\Reader\Http\Response`, which is an implementation of
351     `HeaderAwareResponseInterface`. Its constructor accepts the status code,
352     body, and, optionally, headers.
353   - `Zend\Feed\Reader\Http\Psr7ResponseDecorator`, which is an implementation of
354     `HeaderAwareResponseInterface`. Its constructor accepts a PSR-7 response
355     instance, and the various methdos then proxy to those methods. This should
356     make creating wrappers for PSR-7 HTTP clients trivial.
357   - `Zend\Feed\Reader\Http\ZendHttpClientDecorator`, which decorates a
358     `Zend\Http\Client` instance, implements `HeaderAwareClientInterface`, and
359     returns a `Response` instance seeded from the zend-http response upon
360     calling `get()`. The class exposes a `getDecoratedClient()` method to allow
361     retrieval of the decorated zend-http client instance.
362
363 ### Deprecated
364
365 - Nothing.
366
367 ### Removed
368
369 - Nothing.
370
371 ### Fixed
372
373 - [#5](https://github.com/zendframework/zend-feed/pull/5) fixes the enclosure
374   length check to allow zero and integer strings.
375 - [#2](https://github.com/zendframework/zend-feed/pull/2) ensures that the
376   routine for "absolutising" a link in `Reader\FeedSet` always generates a URI
377   with a scheme.
378 - [#14](https://github.com/zendframework/zend-feed/pull/14) makes the following
379   changes to fix behavior around HTTP clients used within
380   `Zend\Feed\Reader\Reader`:
381   - `setHttpClient()` now ensures that the passed client is either a
382     `Zend\Feed\Reader\Http\ClientInterface` or `Zend\Http\Client`, raising an
383     `InvalidArgumentException` if neither. If a `Zend\Http\Client` is passed, it
384     is passed to the constructor of `Zend\Feed\Reader\Http\ZendHttpClientDecorator`,
385     and the decorator instance is used.
386   - `getHttpClient()` now *always* returns a `Zend\Feed\Reader\Http\ClientInterface`
387     instance. If no instance is currently registered, it lazy loads a
388     `ZendHttpClientDecorator` instance.
389   - `import()` was updated to consume a `ClientInterface` instance; when caches
390     are in play, it checks the client against `HeaderAwareClientInterface` to
391     determine if it can check for HTTP caching headers, and, if so, to retrieve
392     them.
393   - `findFeedLinks()` was updated to consume a `ClientInterface`.