7.1.0 (2021-05-02)
Overview of merged pull requests
!!! FEATURE: Enable URL Rewriting by default
This flips the default behavior for the FLOW_REWRITEURLS
environment
variable: If it is _not_ specified (or contains a value other than 0
)
URL rewriting will be enabled.
Previously URL rewriting was enabled with a corresponding SetEnv
configuration
for Apache.
For other servers and CLI a corresponding configuration (or a
putenv('FLOW_REWRITEURLS=1')
call at runtime) was required in order to
activate URL rewriting.
This could be a breaking change in case you relied on the previous behavior.
For example: Using the UriBuilder
in CLI previously created URLs in the format /index.php/some/path
. Now it will lead to /some/path
by default.
To re-establish the former behavior, the FLOW_REWRITEURLS
can be set to 0 explicitly, for example via putenv('FLOW_REWRITEURLS=1');
.
Packages:
Flow
FEATURE: Allow flushing caches by compiled classes
This adds a signal to the proxy compiler when classes have been compiled and a slot to the a new AnnotationsCacheFlusher
class that checks the compiled classes for existing annotations and flushes matching configured caches.
This is required when annotations are used to change configuration, like the @Flow\\Route
or @Flow\\Privilege
annotations.
Related to https://github.com/neos/flow-development-collection/pull/2421 Related to https://github.com/neos/flow-development-collection/pull/2412
Packages:
Flow
FEATURE: Make rendering of request in exception log configurable
With this it is possible to configure if the request data should be rendered into exception stack traces with the newly added configuration setting Neos.Flow.log.throwables.renderRequestInformation
.
Related: #2360
Packages:
Flow
FEATURE: Cli ProgressBar is public accessible
What I did
The access modifier for getProgressBar()
in ConsoleOutput.php
is now public.
I’m using reflection to access the progressbar in a project to use symfonie’s time estimation for a long running command. I think there shouldn’t be much harm in just making getProgressBar()
public.
Maybe this could go into the 7.1 release?
Packages:
Flow
FEATURE: Add fusion template support
With this it is possible to specify the option --generate-fusion
for the kickstart:actioncontroller
command, which will generate .fusion
files instead of Fluid templates and a Root.fusion
in the according folders.
Depends on https://github.com/neos/neos-development-collection/pull/3255
Packages:
Flow
Kickstarter
FEATURE: Add rfc6750 bearer token
Adds the bearer token class to extract a rfc6750 bearer token from the HTTP header.
Packages:
Flow
FEATURE: Introduce ability to add Fluid namespaces via configuration
What I did Added the ability to add Fluid namespaces via configuration.
How I did it By adding a new configuration option: ``` Neos:
- FluidAdaptor:
namespaces:
``` This configuration is used, to add namespaces inside the ViewHelperResolver.
How to verify it Add a default namespace in Settings.yaml and try to use its view helpers in any template, without including the namespace there.
Resolves: #2375
Packages:
Flow
FluidAdaptor
FEATURE: Expose array_values() in Array eelHelper
related to: https://github.com/neos/neos-development-collection/issues/3287
Packages:
Flow
Eel
BUGFIX: Ignore annotation properties that start with underscore when rendering
This fixes an error when using annotations that use internal public properties starting with an underscore, like zircote/swagger-php. This is only a workaround for the more generic problem of rendering annotations that contain publicly accessible internal state. Optimally rendering annotations for proxies would only be based on the information provided by the original annotation, like PHP 8 Attributes do. Alternatively docblocks would not be altered in proxies at all and just copied, but this would potentially be a breaking change.
Resolves: #2387
Packages:
Flow
BUGFIX: Support nested fluid variables by using the original fluid method
With this patch it’s possible to use the fluid variable nesting feature as well as a specific accessor per element on the path.
How to use it
Create a fluid template with nested variables that access an array value:
`html
{config.{type}.value.{flavor}}
`
Assign an array and the two keys:
`php
$this->view->assign('type', 'thing');
$this->view->assign('flavor', 'yellow');
$this->view->assign('config', ['thing' => ['value' => ['yellow' => 'Okayish']]]);
`
Packages:
Flow
FluidAdaptor
BUGFIX: Null coalesce content type in ActionResponse getter
The current PHP typehint of : string
will cause this method to throw an error when setContentType()
was not called before with a valid string. In Flow 7 we lifted the typehint to ?string
, but IMO that does only complicate the API unnecessarily, because ''
is not a valid content type any way and hence indistinguishable from “did not set content type” for any useful means and purposes.
Hence I suggest using null coalescing instead (and changing the 7+ typehint back to string
, though that would be breaking).
See also discussion in https://github.com/neos/flow-development-collection/pull/2180#discussion_r550197400
Packages:
Flow
BUGFIX: Clarify regex syntax for Uri request pattern
Packages:
Flow
BUGFIX: ActionResponse contains negotiated media type as content-type
This sets the negotiated media type from the Controller in the ActionResponse
if nothing was set in the action.
Follow-up to #2005
Packages:
Flow
BUGFIX: Add TTL to tags in RedisBackend
Previously the tags did not expire with their key, so they were never removed from Redis. Now the same lifetime as their corresponding entries is added to tags set by the RedisBackend
This is a continuation of #1194. To prevent race conditions when two processes write to the same cache tags at the same time, the list of keys that will be written is `watched <https://redis.io/commands/watch>``_ before and during the transaction. If the key is modified during that time, the transaction ``exec` will fail and the TTL is calculated again (up to 4 retries).
Packages:
Flow
TASK: Make JsonView datetime format configurable
This allows to override the badly chosen default format of DateTimeInterface::ISO8601 which is not really compatible to ISO8601 in the JsonView options datetimeFormat
- see https://www.php.net/manual/en/class.datetimeinterface.php#datetime.constants.iso8601
Packages:
Flow
TASK: Make ActionResponse::getContentType non-nullable
This removes the nullability of the getContentType()
getter on the ActionResponse
, which was only added to technically fit the possibility that the value is null
without thinking about the API.
A content type of empty string is already enough to denote a “not set/unspecified” case and an additional null
only makes the API more complex than needed.
This change is not technically breaking, even though it changes a return type, since the new return type is more strict. It could be breaking if you check for a null
return value only without handling an empty string case. You should use the hasContentType()
method before calling the getter.
Follow-up to #2458 <https://github.com/neos/flow-development-collection/issues/2458>``_which is a follow-up to ``#2180
Packages:
Flow
TASK: Remove generic persistence left-overs
This removes some left-over namespace imports and the signal/slot connection for allObjectsPersisted
on the generic persistence.
Packages:
Flow
TASK: Tweak polyfill replacements
The replacements added according to the symfony/polyfill README (and tweaked recently to actually appear in the split manifest) lead to an installation issue (#9834)
Thus this removes the PHP 5 polyfills (those not being replaced should not be an issue) to fix that. Also, since we require PHP 7.1, the 7.2 polyfill must not be replaced.
Packages:
Flow
Utility.Unicode
TASK: Add test that covers signal arguments by reference passing
These tests verify that our current signal/slot dispatching works with byReference arguments.
Related to: #2412
Packages:
Flow
TASK: Replace deprecated Guzzle functions
Resolves: #2383
Packages:
Flow
TASK: Support header title for table output in console
The Symfony Console Table components supports settings a header title for a table.
So should we :-)
Packages:
Flow
TASK: Fix unit tests
Fixes the RequestInformationHelperTest
that fails since 441b61b4b5b7a9b9340f77ea992c323a40d2f13c
Packages:
Flow
TASK: JsonView code cleanup
Some code cleanup
usage of NullCoalescing
Hardening the JSON encoding
no further functional changes
Packages:
Flow
TASK: Persistent caches will have a defaultLifetime of 0
Persistent caches, even non-file backends, should be pretty persistent. This is the way.
Related to: #2345
Packages:
Flow
TASK: Use GH actions for builds
Still WIP, needs to be backported to lowest maintained branch once finished, but I want to get psalm running too and that’s not in <6.0
Packages:
.github