====================
2.1.0-beta1
====================

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Base Distribution
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

[TASK] Fix version requirements on packages
-----------------------------------------------------------------------------------------

* Commit: `243a603 <https://git.typo3.org/Flow/Distributions/Base.git/commit/243a6033b3126cae30d8cd28b5aa7e6467373e13>`_

[TASK] Update composer manifest
-----------------------------------------------------------------------------------------

See http://ci.typo3.robertlemke.net/job/typo3-flow-branch/3/

* Commit: `9ad8d71 <https://git.typo3.org/Flow/Distributions/Base.git/commit/9ad8d7129c684dfacc5b6f7318e86b1165bff4fb>`_

[BUGFIX] Fix commit links in create-changelog.sh script
-----------------------------------------------------------------------------------------

Link to correct URI for git.typo3.org commit details.

* Commit: `7a84b99 <https://git.typo3.org/Flow/Distributions/Base.git/commit/7a84b99e197517a16da9de63ff8f9151e5cd6ab9>`_

[TASK] Tweak to create-changelog.sh script
-----------------------------------------------------------------------------------------

Also link FLOW-SA-… bulletins

* Commit: `953bb77 <https://git.typo3.org/Flow/Distributions/Base.git/commit/953bb776da163c59d82e4274bb239430e3a32694>`_

[TASK] Add installer scripts for package installs
-----------------------------------------------------------------------------------------

Add configuration to manifest that calls scripts on every package
install.

See also I06a2c5e35004f400291e7697c215bea8e685266b.

* Commit: `a15031c <https://git.typo3.org/Flow/Distributions/Base.git/commit/a15031ca269f4767c39a0bdcbf8b68792afab04c>`_

[TASK] Update vfsstream requirement to 1.2.*
-----------------------------------------------------------------------------------------

This updates the requirement for mikey179/vfsstream from 1.1.* to 1.2.*.
* Commit: `976ee75 <https://git.typo3.org/Flow/Distributions/Base.git/commit/976ee75848e65d1915d173cc10cdaf94de77abaa>`_

[TASK] Tweak scripts to help with releases and branching
-----------------------------------------------------------------------------------------

* Commit: `a7a335b <https://git.typo3.org/Flow/Distributions/Base.git/commit/a7a335bfd31e0c83eb0526de777fea05b1688452>`_

[TASK] Add scripts to help with releases and branching
-----------------------------------------------------------------------------------------

This adds a number of scripts specific to the Flow distribution to aid
with creating new branches and for releasing new versions.

* Commit: `543b408 <https://git.typo3.org/Flow/Distributions/Base.git/commit/543b40811c6017ed16b58bacf768847406e81f12>`_

[BUGFIX] Use @dev version of TYPO3.Eel
-----------------------------------------------------------------------------------------

* Related: `#42176 <http://forge.typo3.org/issues/42176>`_
* Commit: `0346b3e <https://git.typo3.org/Flow/Distributions/Base.git/commit/0346b3eff6d4350a05dd8a2138318c87d3e22791>`_

[TASK] Add suggestion for pdo_sqlite to composer manifest
-----------------------------------------------------------------------------------------

For running the functional tests out-of-the-box pdo_sqlite is required,
so inform about that during installation.

* Commit: `26b5162 <https://git.typo3.org/Flow/Distributions/Base.git/commit/26b5162135508e319a00632305c0a54d4c4ee0db>`_

[TASK] Removed minimum stability setting
-----------------------------------------------------------------------------------------

This removes the minimum-stability so tagged releases of dependencies
are used. It explicitly allows dev versions for typo3/fluid, typo3/party
(because we want to use them as dev-master) and doctrine/migrations
(because no suitable stable release exists).

This change speeds up installation (because zip archives will be used
instead of git clones) and avoids surprises due to possibly unstable
3rd party code being pulled in.

* Related: `#47808 <http://forge.typo3.org/issues/47808>`_
* Commit: `b748f0e <https://git.typo3.org/Flow/Distributions/Base.git/commit/b748f0eeb00fa56293cfb88eef92c9d01a8d2008>`_

[TASK] Remove Jenkins repository from  composer manifest
-----------------------------------------------------------------------------------------

Since our packages are on Packagist now, the Satis repository on Jenkins
should no longer be used by the public.

* Resolves: `#44022 <http://forge.typo3.org/issues/44022>`_
* Commit: `035be38 <https://git.typo3.org/Flow/Distributions/Base.git/commit/035be380eb7d38e92d206f5743fa74e1bafd09e0>`_

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
TYPO3.Eel
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

No changes

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
TYPO3.Flow
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

[TASK] Update references in documentation
-----------------------------------------------------------------------------------------

See http://ci.typo3.robertlemke.net/job/typo3-flow-release/4/

* Commit: `ae6e2b9 <https://git.typo3.org/Packages/TYPO3.Flow.git/commit/ae6e2b9ba3f1fd0c224a07b862876eada6eaf098>`_

[TASK] Fix version requirement on Fluid, Party, Eel
-----------------------------------------------------------------------------------------

* Commit: `0734892 <https://git.typo3.org/Packages/TYPO3.Flow.git/commit/073489208b48e69b728fa22aa325c3176d3dd9c2>`_

[TASK] Update composer manifest
-----------------------------------------------------------------------------------------

See http://ci.typo3.robertlemke.net/job/typo3-flow-branch/3/

* Commit: `47f7996 <https://git.typo3.org/Packages/TYPO3.Flow.git/commit/47f7996ef3288a0a73acc6f9b129db7b798a7922>`_

[TASK] Update Readme.txt and Upgrading.txt for 2.1
-----------------------------------------------------------------------------------------

* Commit: `03bc52c <https://git.typo3.org/Packages/TYPO3.Flow.git/commit/03bc52c2dbe30bce34050b7b2a81053a00c56833>`_

[!!!][FEATURE] Deprecated base tag
-----------------------------------------------------------------------------------------

Currently the ``UriBuilder`` creates relative URLs with relative paths
in the form "some/path.html" by default.
This change adjusts the ``UriBuilder`` to prefix URLs with the scripts
request path (usually "/" or "/document-root/").

This makes the ``<base />`` tag redundant for most scenarios, even
when working with relative URLs.

This is not a breaking change per se, because using the base tag
doesn't break the behavior. But it has an impact on all relative URLs
created by the ``UriBuilder``.

If you expect the rendered HTML to contain URLs in the form
"some/path.html" (that is: without leading slash) you might need to
adjust your code or set the compatibilty flag that is introduced with
this change::

 TYPO3:
   Flow:
     compatibility:
       uriBuilder:
         createRelativePaths: TRUE

NOTE: This flag will be deprecated with version 2.2 and removed with
version 3.0 of Flow. It's recommended to adjust your code so that it
does not rely on the generated URLs

* Resolves: `#53827 <http://forge.typo3.org/issues/53827>`_
* Commit: `5d1a49f <https://git.typo3.org/Packages/TYPO3.Flow.git/commit/5d1a49f7e15158c97e2418ba48e10c20473c8106>`_

[FEATURE] Support injecting Settings through annotation
-----------------------------------------------------------------------------------------

This change extends the existing inject annotation with two new
options.

* setting: to specify a path to a setting that should be injected into that property
* package: the package to load the setting from, by default the package that the class belongs to

The main goal is to make the access to settings more convenient, because
you currently need to inject the configurationManager and get the setting
manually from it, even if you only need one simple string.

As a best practice the user should add an setter for it's settings as well, but
this is only to make more portable. This change does not need a setter.

Example::

    /**
     * @var string
     * @Flow\\Inject(setting="my.setting")
     */
     protected $foo;

    /**
     * @var string
     * @Flow\\Inject(setting="core.phpBinaryPathAndFilename", package="TYPO3.Flow")
     */
    protected $phpBinary;

* Commit: `4637831 <https://git.typo3.org/Packages/TYPO3.Flow.git/commit/46378319ee337260d6f6eea259028dcf80486d1f>`_

[BUGFIX] Fix IdentityRoutePart unit tests
-----------------------------------------------------------------------------------------

This fixes unit tests that fail since merging
of I071ae923924f3a98c673b79ef969a9a31c3f4942

* Commit: `b143947 <https://git.typo3.org/Packages/TYPO3.Flow.git/commit/b1439475e5873e1faab5a31a6a041314e2796ca9>`_

[BUGFIX] Package Manager needs to sort active packages in dependency order
-----------------------------------------------------------------------------------------

Problem: If being in production context and the configuration cache is still empty,
it might happen that $this->activePackages is not sorted in the correct order of
package dependencies, but $this->packages is. This leads to wrongly merged configuration,
which is then cached.

This problem might also occur in development context, but only on first hit. After
a reload it is gone.

This change is a fix which makes sure the order in activePackages is the same
as in packages.

* Commit: `4554800 <https://git.typo3.org/Packages/TYPO3.Flow.git/commit/455480019a912332d84b61d7b2d011ec4fa22f1b>`_

[FEATURE] documentation of the authentication process
-----------------------------------------------------------------------------------------

* Commit: `184a0ec <https://git.typo3.org/Packages/TYPO3.Flow.git/commit/184a0ecad5f70f245963d1c34468a8195d0e2cd4>`_

[BUGFIX] Composer installer scripts create a .Packages folder
-----------------------------------------------------------------------------------------

The composer installer scripts create a .Packages folder inside
the root of the Flow project. This is incorrect as the created
directory should be inside the Packages folder.

* Related: `#53961 <http://forge.typo3.org/issues/53961>`_
* Commit: `340139c <https://git.typo3.org/Packages/TYPO3.Flow.git/commit/340139ccaf6d3a060eeda9195e01fb572ab267e6>`_

[BUGFIX] ActionRequest should not serialize parent HTTP request
-----------------------------------------------------------------------------------------

When working with WebRedirects and authentication, the intercepted
request is serialized with the security context. While it makes sense
to do so, we should *not* include the reference to the base HTTP request
in this case, as this includes lots of cruft like $_SERVER etc.

In order to test this, just look at the serialized session files
when a web redirect is taking place.

* Resolves: `#53931 <http://forge.typo3.org/issues/53931>`_
* Commit: `6ec233e <https://git.typo3.org/Packages/TYPO3.Flow.git/commit/6ec233ef27a1c903617a48947026512e5098bf15>`_

[BUGFIX] Fix wrong order of conditions for Request port check
-----------------------------------------------------------------------------------------

In the last patch set of change I4fae171d701c060841b154362644611602b60da0
I broke the actual functionality be choosing the wrong order for the
if conditions.

* Commit: `9f3b313 <https://git.typo3.org/Packages/TYPO3.Flow.git/commit/9f3b3132236fd76af1b0c25823452904ad14ba13>`_

[FEATURE] Acknowledge X-FORWARDED-PORT header sent by proxy
-----------------------------------------------------------------------------------------

This adjusts Http\\Uri and Http\\Request to detect and acknowledge an
X-FORWARDED-PORT header sent by a proxy. It also introduces a new
method getPort() to the Request object.

* Commit: `6949e14 <https://git.typo3.org/Packages/TYPO3.Flow.git/commit/6949e14c7d74b48bacefcabd094459c30896ab28>`_

[TASK] Remove persistAll() from IdentityRoutePart
-----------------------------------------------------------------------------------------

Having IdentityRoutePart call persistAll() could have very weird and
unexpected side effects, not even mentioning “safe request”.

This change limits the persist operation to the items managed by the
ObjectPathMappingRepository.

* Commit: `6dad43e <https://git.typo3.org/Packages/TYPO3.Flow.git/commit/6dad43efc78885d442cc3527813e134aa1258b19>`_

[BUGFIX] Fix broken unit test for ConfigurationManager
-----------------------------------------------------------------------------------------

Fixes a unit test that broke with a previous commit

* Commit: `52e2d76 <https://git.typo3.org/Packages/TYPO3.Flow.git/commit/52e2d76cce391bc6935afff45d3e961da55cb119>`_

[TASK] Add additional safeguard for corrupt user sessions
-----------------------------------------------------------------------------------------

This adds an additional check into Context->getPartyByType() to avoid
"called member function on a non-object" errors if a user seems to be
authenticated but, for some reason, the token could not provide the
respective account.

* Commit: `b8cec90 <https://git.typo3.org/Packages/TYPO3.Flow.git/commit/b8cec90f5eb2849459c65f037e56b1b652a1c3bb>`_

[TASK] Remove left over PHP closing tags
-----------------------------------------------------------------------------------------

* Commit: `2e1edd6 <https://git.typo3.org/Packages/TYPO3.Flow.git/commit/2e1edd65d91250ad29a03b1c316106e4eaab7aa9>`_

[BUGFIX] Fix wrong exception class name
-----------------------------------------------------------------------------------------

In change I048360fc8883942d6561be92c2d0ad915e9f164e an exception was moved
around and not adjusted in all places.

* Commit: `3fd5ad9 <https://git.typo3.org/Packages/TYPO3.Flow.git/commit/3fd5ad97665cd1686a6147691455daf1435f3870>`_

[TASK] Remove unused use statements
-----------------------------------------------------------------------------------------

* Commit: `5e1a859 <https://git.typo3.org/Packages/TYPO3.Flow.git/commit/5e1a8591abbdddd49b78f1c4168e4cfaee1a801b>`_

[TASK] CGL Fixes
-----------------------------------------------------------------------------------------

* Removes indent from inline comments
* Fixes several docblock issues
* Fixes inline conditions
* Commit: `e53648c <https://git.typo3.org/Packages/TYPO3.Flow.git/commit/e53648c8720c72feae8b989b2fae5c13a6e1c7b8>`_

[TASK] Mention PHP closing tag omission in CGL
-----------------------------------------------------------------------------------------

This updates the Coding Guidelines to omit the PHP closing tag.

* Commit: `d9d6ff9 <https://git.typo3.org/Packages/TYPO3.Flow.git/commit/d9d6ff986703c0022b10b87e4e0f41a790cc85a0>`_

[TASK] Remove PHP closing tag
-----------------------------------------------------------------------------------------

* Commit: `181a01b <https://git.typo3.org/Packages/TYPO3.Flow.git/commit/181a01b06f38ad1f9069ede75bc3ee45a524e842>`_

[BUGFIX] var_dump() is unstyled if Flow is not in docroot
-----------------------------------------------------------------------------------------

If TYPO3 Flow is not directly in the document root the var_dump
output is unstyled as the path to the external CSS can not be
loaded. By loading all CSS inline and replacing the background
image by CSS there's no need to load external resources anymore.

* Related: `#52711 <http://forge.typo3.org/issues/52711>`_
* Commit: `e7499ac <https://git.typo3.org/Packages/TYPO3.Flow.git/commit/e7499ac2f4eb4f8c1ed5734c9405250f9156c3f8>`_

[BUGFIX] Safeguard against illegal filenames below Classes
-----------------------------------------------------------------------------------------

If a filename below Classes in a package contains dots, Flow breaks
when it tries to flush caches during startup.

See https://phpexcel.codeplex.com/workitem/20336 for an example of such
a filename, even though PSR-0 does not allow such names.

* Commit: `cebda03 <https://git.typo3.org/Packages/TYPO3.Flow.git/commit/cebda033e438f51e93d5145854c27a953fba39ec>`_

[TASK] Update commit message documentation
-----------------------------------------------------------------------------------------

Tweaks the documentation for proper git commit messages
and adds some examples.

* Commit: `7534a58 <https://git.typo3.org/Packages/TYPO3.Flow.git/commit/7534a582c6bf6a573e5956201834a3bb4cf32b71>`_

[TASK] Improve documentation for excludeClasses setting
-----------------------------------------------------------------------------------------

* Commit: `be54ffb <https://git.typo3.org/Packages/TYPO3.Flow.git/commit/be54ffb5219cc1f4f7a3b3871bfdb6b88e5fc86c>`_

[BUGFIX] Request::getRelativePath() must not return FALSE
-----------------------------------------------------------------------------------------

This makes sure that ``Request::getRelativePath()`` always returns
a string.

This getter has been introduced with
I48548b6f1465d6b509298d42cff39242040e7782, but it returned FALSE if
the base URI path was longer or as long as the current URI path which
is the case for the root URI.

* Commit: `2955be4 <https://git.typo3.org/Packages/TYPO3.Flow.git/commit/2955be47ece8007dddb9cf67cb91edb4340d2914>`_

[BUGFIX] Expose more details in MappingExceptions
-----------------------------------------------------------------------------------------

This adds a try/catch block to the FlowAnnotationDriver adding the
affected class name to the message of the thrown exception.

Before if ``evaluatePropertyAnnotations`` threw an exception during
the ``flow:doctrine:compileproxies`` command the exception did not
contain details about the affected class (see #52907).

* Fixes: `#52907 <http://forge.typo3.org/issues/52907>`_
* Commit: `7e0c425 <https://git.typo3.org/Packages/TYPO3.Flow.git/commit/7e0c425ceefd06252ef00b9addcd9389f1e7d950>`_

[FEATURE] Add tagging to router cache
-----------------------------------------------------------------------------------------

This adjusts the RouterCachingService to tag every Routing cache entry
with any UUID the routeValues/matchResult contain.

This will make it possible to flush caches only for affected entities.

* Related: `#29972 <http://forge.typo3.org/issues/29972>`_
* Commit: `2b702b0 <https://git.typo3.org/Packages/TYPO3.Flow.git/commit/2b702b0f5716e10b8a5fcf7b86f2652e8850ce7e>`_

[TASK] Get rid of RouterCachingAspect
-----------------------------------------------------------------------------------------

This moves code from the RouterCache AOP aspect to the Router itself
making the aspect redundant.

Before the cache handling of the Routing Framework has been extracted
to an AOP aspect in order to keep the Router code simple. Since the
introduction of the RouterCachingService (#52452) this is no longer
required.

* Resolves: `#52704 <http://forge.typo3.org/issues/52704>`_
* Related: `#52452 <http://forge.typo3.org/issues/52452>`_

* Commit: `d645b05 <https://git.typo3.org/Packages/TYPO3.Flow.git/commit/d645b051ad3d8adb849649ff4076c7759c9c006f>`_

[TASK] Cleanup RouterCachingService
-----------------------------------------------------------------------------------------

Some (mostly cosmetic) adjustments to our CGL and some
renamings to increase readability.

This also renames the misleading method Route::getMatchingUri()
by Route::getResolvedUriPath(). The old method is still available as
deprecated alias.

* Related: `#52452 <http://forge.typo3.org/issues/52452>`_
* Commit: `2a4a7f4 <https://git.typo3.org/Packages/TYPO3.Flow.git/commit/2a4a7f466b84be88aba72ec06d3765832aff5a7c>`_

[TASK] Move isConnected from role repository to persistence manager
-----------------------------------------------------------------------------------------

To make isConnected api, we have to move it to some central
place. The persistence manager seems to be a lot better place,
than the persistence repository, as it is not reference as much
in user code.

* Resolves: `#52846 <http://forge.typo3.org/issues/52846>`_
* Commit: `2df9c7c <https://git.typo3.org/Packages/TYPO3.Flow.git/commit/2df9c7cf79d664544fddbe654976b061c7fb6913>`_

[BUGFIX] Role handling depends on an active database connection
-----------------------------------------------------------------------------------------

The PolicyService now depends on having an active database connection.
This connection is not always available (like in the Neos setup) and
is not required at all for authentication using in memory roles like
the system roles.

This change updates the PolicyService to ignore synchronization if
the RoleRepository has no active database connection, and makes the
FileBasedSimpleKeyProvider use a Role object which only exists in
memory.

* Commit: `3ba15f0 <https://git.typo3.org/Packages/TYPO3.Flow.git/commit/3ba15f0158d645b68a6f9e4d1059f810ce6b2c6e>`_

[BUGFIX] Don't catch security exceptions during property mapping
-----------------------------------------------------------------------------------------

As security exceptions will be handled by the security
framework, we have to let them bubble up instead of
converting them into an property mapping exception.

* Commit: `5438318 <https://git.typo3.org/Packages/TYPO3.Flow.git/commit/5438318bfd58b77481387893c6c49c14af3d983d>`_

[TASK] Cleanup usage of return value on @return void method
-----------------------------------------------------------------------------------------

The renderStatically() method does not return a value, and thus the
echo can be removed.

* Commit: `39cfef5 <https://git.typo3.org/Packages/TYPO3.Flow.git/commit/39cfef54913b1c5bdbe9dcb312701048f8e45103>`_

[BUGFIX] HTTP_X_HTTP_METHOD_OVERRIDE is incorrect
-----------------------------------------------------------------------------------------

In the test the HTTP_X_HTTP_METHOD header is not set, but the
HTTP_X_HTTP_METHOD_OVERRIDE is set twice. This causes the test to
prove that HTTP_X_HTTP_METHOD_OVERRIDE is used, but not necessarily
means that HTTP_X_HTTP_METHOD is overridden.

* Commit: `932eb5e <https://git.typo3.org/Packages/TYPO3.Flow.git/commit/932eb5eeb1439f3d2b9911b4b3aa421b6d516b35>`_

[BUGFIX] Roles are not always correctly initialized
-----------------------------------------------------------------------------------------

Due to #47975 it happens, that packageKey
and name are not correctly set in role objects. This
change is a quick workaround, which can be removed
once the above issues are solved.

* Commit: `e566a56 <https://git.typo3.org/Packages/TYPO3.Flow.git/commit/e566a56db823edb01bc572fed9c13b1eb2bdc1a4>`_

[BUGFIX] Injected properties are not available in initializeObject()
-----------------------------------------------------------------------------------------

This fixes an issue where properties injected to the parent class A
were not available when the initializeObject() method of sub class B
was called.

The root cause of this bug was that, in order to avoid double injection,
injectProperties() was only called in the constructor of sub class B
and not in the constructor of parent class A. The initializeObject()
methods however, were still executed in both constructors.

* Resolves: `#43659 <http://forge.typo3.org/issues/43659>`_
* Commit: `6d2ea6b <https://git.typo3.org/Packages/TYPO3.Flow.git/commit/6d2ea6b3fc5db90f3c7e6ccd0dea5304ec32ef5e>`_

[FEATURE] Add a new system role "AuthenticatedUser"
-----------------------------------------------------------------------------------------

This role will always be active as soon as some token could be
authenticated.

* Commit: `875bc80 <https://git.typo3.org/Packages/TYPO3.Flow.git/commit/875bc80c9c168ba6ae8489d67532f83ea0d024fe>`_

[TASK] Add getter for relative path to Http\\Request class
-----------------------------------------------------------------------------------------

Also refactors the routing to use this getter.

* Commit: `0583f79 <https://git.typo3.org/Packages/TYPO3.Flow.git/commit/0583f79649d0a457f7fb0a7c4f54b078d5608882>`_

[BUGFIX] Append Views configurations instead of merging them
-----------------------------------------------------------------------------------------

Configurations from Views.yaml are merged together leading to mixed
up configurations and invalid options.

This adds a new processing type CONFIGURATION_PROCESSING_TYPE_APPEND
that does not merge configurations from packages & contexts
recursively but appends them into a flat array.

* Fixes: `#52635 <http://forge.typo3.org/issues/52635>`_
* Commit: `dbd2f26 <https://git.typo3.org/Packages/TYPO3.Flow.git/commit/dbd2f265bfed7ae512519d378842be321639f51c>`_

[BUGFIX] Wrong media type on non-lower case filenames
-----------------------------------------------------------------------------------------

This fixes an issue in the getMediaTypeFromFilename() function which
returned application/octet-stream on any filename specified which
contained a non-lowercase file extension.

* Commit: `6b6ae5a <https://git.typo3.org/Packages/TYPO3.Flow.git/commit/6b6ae5a09909847acb5e8942093da42d6759316f>`_

[BUGFIX] Object Route Parts fall back to technical identifier
-----------------------------------------------------------------------------------------

As described in the routing section of the documentation, the
`Object Route Parts`` should use the technical identifier to
represent an object if no uriPattern is specified and the
specified object does not contain any identity properties.

Instead an exception was thrown if no uriPattern could be
determined because ``ClassSchema::getIdentityProperties()``
doesn't return the property name of the technical identifier.

This change fixes this by falling back by skipping the
ObjectPathMapping if no uriPattern is defined.

* Fixes: `#51082 <http://forge.typo3.org/issues/51082>`_
* Commit: `3ca2385 <https://git.typo3.org/Packages/TYPO3.Flow.git/commit/3ca238501129a075a4b1dfe67b536e9df2fb2081>`_

[BUGFIX] Respect case-sensitivity in object routing
-----------------------------------------------------------------------------------------

By default dynamic route parts are lower-cased unless the
"toLowerCase" flag is set to TRUE for the route or a single
route part.
This change makes sure that this flag is actually taken into
account for routes using the ObjectPathMapping.

* Fixes: `#44521 <http://forge.typo3.org/issues/44521>`_
* Commit: `9ec9717 <https://git.typo3.org/Packages/TYPO3.Flow.git/commit/9ec9717a5ba73e7dab90f74fc9e167333930ed87>`_

[BUGFIX] "Required option" flag in AbstractValidator works correct
-----------------------------------------------------------------------------------------

This fix adds a boolean condition to the "Required option" flag
condition. With this fix the flag can also be FALSE.

* Fixes: `#52425 <http://forge.typo3.org/issues/52425>`_
* Commit: `9e5f2e4 <https://git.typo3.org/Packages/TYPO3.Flow.git/commit/9e5f2e40226a8e3e4ecf5ebc2072ee3b7e82076d>`_

[BUGFIX] Skip csrf protection for authenticate action
-----------------------------------------------------------------------------------------

As the authenticate action is usually called by a
POST request, this request is considered a non safe
request. However, as you are most likely not logged in
when calling authenticate, csrf protection is neither
working nor needed.

* Commit: `02d5c01 <https://git.typo3.org/Packages/TYPO3.Flow.git/commit/02d5c019135e3d278b298f0f4a4406dd3d1216f7>`_

[BUGFIX] Do not calculate effective privileges, if runtime evaluations are in place
-----------------------------------------------------------------------------------------

In this case the effective privileges can not be calculated.
Therefore we have to skip it.

* Commit: `5518aad <https://git.typo3.org/Packages/TYPO3.Flow.git/commit/5518aadd3ffc93fa452d67c50f5292966f29db20>`_

[BUGFIX] Security has to be bypassed if testableSecurity is disabled
-----------------------------------------------------------------------------------------

If testable security is not switched on in a functional test, skip any
checks by overriding in the AccessDecisionManager.

* Commit: `f5fcc77 <https://git.typo3.org/Packages/TYPO3.Flow.git/commit/f5fcc776c220e04da9e5aef36f5ad360f3a27185>`_

[TASK] initializeAction methods have to be protected
-----------------------------------------------------------------------------------------

* Commit: `7ebecd4 <https://git.typo3.org/Packages/TYPO3.Flow.git/commit/7ebecd48fb5a2f5d3f4a0c053bd7f35da79277b5>`_

[!!!][TASK] Add method "hasAccessToResource" to the access decision manager
-----------------------------------------------------------------------------------------

This is a convenience method to avoid a try/catch in userland code.

Breaking only for those who implemented AccessDecisionManagerInterface
on their own.

* Commit: `85b1d10 <https://git.typo3.org/Packages/TYPO3.Flow.git/commit/85b1d10c228b465bae789d99adbe81b2649b9ae5>`_

[!!!][TASK] Refactor and clarify the database exception handling
-----------------------------------------------------------------------------------------

This change differentiates between connection errors and missing
tables in the database which were before handled equally.
It also writes the full exception to the log for debugging.

The former DatabaseConnectionException has been moved to
Exception\\DatabaseConnectionException, a code migration is
provided with the change.

* Commit: `0591fcd <https://git.typo3.org/Packages/TYPO3.Flow.git/commit/0591fcd14ccf5a2e6ecaf0ee9f4fddab5d080ad4>`_

[TASK]  Replace some leftover FLOW3 in tests
-----------------------------------------------------------------------------------------

* Commit: `4e6ce44 <https://git.typo3.org/Packages/TYPO3.Flow.git/commit/4e6ce4424cbe61f0d473aa82b5ad0a42b571417d>`_

[TASK] Warn that a package is not available on (de)activate
-----------------------------------------------------------------------------------------

Flow now specifically warns about a package not being available
when the activate or deactivate command for a package is called.

* Commit: `c9776cf <https://git.typo3.org/Packages/TYPO3.Flow.git/commit/c9776cf15abc92714cd52d74c5890a1a6bb02146>`_

[TASK] Refactor router caching logic into a service
-----------------------------------------------------------------------------------------

This change removes most of the logic from the
RouterCachingAspect and introduces it in the form of a new
RouterCachingService.

* Resolves: `#52452 <http://forge.typo3.org/issues/52452>`_
* Commit: `a60ef3c <https://git.typo3.org/Packages/TYPO3.Flow.git/commit/a60ef3c8672ff70b62f799ff6ea6ad1323f18a85>`_

[BUGFIX] Fix case resolving for methods in security commands
-----------------------------------------------------------------------------------------

We are now using reflection classes to resolve the
case sensitive method names, as this more reliably
includes really all methods of the given class including
inherited methods.

* Commit: `963ecb3 <https://git.typo3.org/Packages/TYPO3.Flow.git/commit/963ecb32e208f7a78289a863c578172551e4a04f>`_

[FEATURE] Add command to list methods matched by a policy resource
-----------------------------------------------------------------------------------------

Using this command one can list methods that are included in a resource
definition::

  ./flow security:showmethodsforresource TYPO3_Neos_Service

* Commit: `0adfb88 <https://git.typo3.org/Packages/TYPO3.Flow.git/commit/0adfb8876862f47e57d099c1e1d7ad12fdc13af1>`_

[FEATURE] Add Package Filtering by Path and Type
-----------------------------------------------------------------------------------------

This makes getting a particular kind of package, by path or type, or
first class Flow feature. The docs say that you can put packages in any
subdirectory of Packages/, but if you want to get a list of packages in
any one of those directories, you had to do your own filter the list of
packages yourself.

For example:

Neos can use this to get typo3-flow-site packages in Packages/Sites/.
Builders can use this to get a list of typo3-flow-boilerplate packages.

This change is backwards compatible since it doesn't change any
behavior, it just adds some additional methods to the PackageManager.

* Commit: `d95e1c0 <https://git.typo3.org/Packages/TYPO3.Flow.git/commit/d95e1c0c030ab5738738650201da609cdaf0bac2>`_

[BUGFIX] FileBasedSimpleKeyProvider has to authenticate an account with roles
-----------------------------------------------------------------------------------------

To be able to use real role based authorization with the
FileBasedSimpleKeyProvider, we have to authenticate an
account which holds existing roles.

* Commit: `d3f504f <https://git.typo3.org/Packages/TYPO3.Flow.git/commit/d3f504f7ee13e5b647130eb34409c7593dcfc2ab>`_

[BUGFIX] Fix validation if nested properties of same type are present
-----------------------------------------------------------------------------------------

The performance optimization in #46340
changed the isValid() method of the
GenericObjectValidator to use the result
property while recursing through the properties
of the to be validated object.

Since GenericObjectValidator is reused, it could
be the case that this result set is reset to
empty value.

Revert this change and set the result property
*after* all properties of the to be validated
object are validated.

* Resolves: `#50585 <http://forge.typo3.org/issues/50585>`_
* Related: `#46340 <http://forge.typo3.org/issues/46340>`_

* Commit: `09756f3 <https://git.typo3.org/Packages/TYPO3.Flow.git/commit/09756f36380d948ac84916419e71465a54bd7c2f>`_

[FEATURE] Add policy analysis commands
-----------------------------------------------------------------------------------------

With the new commands it is possible to check for unprotected commands
and see the effective policy rules for a given role::

  ./flow security:showunprotectedactions
  ./flow security:showeffectivepolicy

* Commit: `77e8282 <https://git.typo3.org/Packages/TYPO3.Flow.git/commit/77e8282fe7f4fbe0b39bf1e867d45e3a7475132e>`_

[TASK] Clarify Configuration subdirectory usage
-----------------------------------------------------------------------------------------

* Commit: `7e9e3d7 <https://git.typo3.org/Packages/TYPO3.Flow.git/commit/7e9e3d795892857ec2412f315b696ac2e493ec65>`_

[BUGFIX] Transient Properties should not be serialized
-----------------------------------------------------------------------------------------

Properties annoated with the \\TYPO3\\Flow\\Annotations\\Transient
annotation should not be serialized in the autogenerated __sleep
method.

* Fixes: `#52448 <http://forge.typo3.org/issues/52448>`_
* Commit: `791b570 <https://git.typo3.org/Packages/TYPO3.Flow.git/commit/791b57041971f80a50bcbc3194be2bbba698a033>`_

[TASK] Allow package installer actions / scripts
-----------------------------------------------------------------------------------------

Allow packages to register scripts and resources to be executed or
installed upon composer install and update.

* Commit: `0dd80fb <https://git.typo3.org/Packages/TYPO3.Flow.git/commit/0dd80fb832dd1cb58ca3e8d241f6413c32493053>`_

[TASK] PhpFrontend has a method to return original code
-----------------------------------------------------------------------------------------

With this change the PhpFrontend has the added method
getWrappend(), which returns the code including the
automatically added php opening tag and ending line.
The method get() returns exactly the same string that was stored
in the cache.

* Resolves: `#50474 <http://forge.typo3.org/issues/50474>`_
* Commit: `bdebde0 <https://git.typo3.org/Packages/TYPO3.Flow.git/commit/bdebde07f3fc0a78db022900c4446c3fac6d9dbd>`_

[BUGFIX] UUID Validator rejects too long UUIDs
-----------------------------------------------------------------------------------------

Now the validation regex has start- and end of string
boundaries, hence rejecting strings which only
contain a valid UUID, but having extraordinary strings
before or behind.

* Fixes: `#52311 <http://forge.typo3.org/issues/52311>`_
* Commit: `52b1862 <https://git.typo3.org/Packages/TYPO3.Flow.git/commit/52b186222419828dd5a888b700cca609a0cec32d>`_

[TASK] Remove arbitrary limit on Resource filename/extension
-----------------------------------------------------------------------------------------

The DB columns for those properties are VARCHAR(255), so the validation
limit of 100 makes no sense.

* Commit: `9b0a1a3 <https://git.typo3.org/Packages/TYPO3.Flow.git/commit/9b0a1a37653f677e11f1a0a9f377566abb995705>`_

[FEATURE] Flexible array sorter
-----------------------------------------------------------------------------------------

Introduces a new utility class ``PositionalArraySorter`` that can be used to sort
an array based on a "position string".

This feature is especially useful for sorting configuration options with
multiple sources.
Example::

	SomeSetting:
	  'key1':
	    foo: 'bar'
	    position: 'start'
	  'key2':
	    foo: 'baz'
	    position: 'after key1'
	  'key3':
	    foo: 'quux'
	    position: 'end'

possible position strings are:
*  start (<weight>)
*  end (<weight>)
*  before <key> (<weight>)
*  after <key> (<weight>)
*  <numerical-order>

Usage::

	$arraySorter = new PositionalArraySorter($unorderedArray);
	$orderedArray = $arraySorter->toArray();

* Resolves: `#52074 <http://forge.typo3.org/issues/52074>`_
* Commit: `69bd32c <https://git.typo3.org/Packages/TYPO3.Flow.git/commit/69bd32c6c0af1bb4ad10b73178a8a4a595db1777>`_

[FEATURE] Add AnsiConsoleBackend for logging
-----------------------------------------------------------------------------------------

Taken from TYPO3.Surf.

* Commit: `637d173 <https://git.typo3.org/Packages/TYPO3.Flow.git/commit/637d173661ef03513d6d96fea2b043cabd0a05ab>`_

[BUGFIX] Dynamic RouteParts should be urldecoded
-----------------------------------------------------------------------------------------

This makes sure that request path segments are urldecoded
during matching and urlencoded during resolving of Routes.

Previously An URI ``/some.package/sub%5Csomecontroller`` was
not decoded correctly leading to a 404.
Now the value is correctly decoded to "sub\\somecontroller".

* Resolves: `#46449 <http://forge.typo3.org/issues/46449>`_
* Commit: `b4c6e7e <https://git.typo3.org/Packages/TYPO3.Flow.git/commit/b4c6e7ed40a97964673ccbf8f6f91625a40d5c9b>`_

[BUGFIX] Fix resolving of relative namespaces in parent classes
-----------------------------------------------------------------------------------------

With I28fd7c7993ea79714cc62032fcc332ac8cf9d4bc the ReflectionService
resolves relative and aliased namespaces automatically.
This doesn't work for inherited classes though because the code only
considered the current class, not it's parents.

With this change code like this will work::

	use TYPO3\\Flow\\Security\\Context;

	class SomeParentClass {

	  /**
	  * @var Context
	  * @Flow\\Inject
	  */
	  protected $securityContext;

	  // ...
	}

	class SomeChildClass extends SomeParentClass {
	}

* Fixes: `#50909 <http://forge.typo3.org/issues/50909>`_
* Related: `#46008 <http://forge.typo3.org/issues/46008>`_

* Commit: `751b4b5 <https://git.typo3.org/Packages/TYPO3.Flow.git/commit/751b4b55594ebaa334a007d8c98999dba04aafb1>`_

Revert "[BUGFIX] Published resources don't support symlinks"
-----------------------------------------------------------------------------------------

This reverts commit 64480cd47066458bfd9a15a9a10f1760e5a0a3b4

* Commit: `b7ac599 <https://git.typo3.org/Packages/TYPO3.Flow.git/commit/b7ac599a27ee59ce1cc6d433816a0792209565b7>`_

[TASK] More meaningful error message for connection errors
-----------------------------------------------------------------------------------------

This patch provides more meaning full exception messages for
database connection errors. Now the message distinguishes
between "no database selected", "wrong credentials" and
"unknown" database.

* Commit: `35936c5 <https://git.typo3.org/Packages/TYPO3.Flow.git/commit/35936c58c3aabb400f8d630ef1e24543c50eb236>`_

[FEATURE] Let cache:warmup warm up every configured configuration type
-----------------------------------------------------------------------------------------

When having done a flow:cache:warmup, the Configuration Manager only cached
the configurations which were necessary during the CLI command invocation,
so, for example, Routes, Views, NodeTypes etc. were not cached.

This change introduces a SignalSlot listening to the warmupCache signal,
and touching every configured configuration type in order to make it
present in the configurations array, ready for later storing.

* Resolves: `#51652 <http://forge.typo3.org/issues/51652>`_
* Commit: `88dd9ed <https://git.typo3.org/Packages/TYPO3.Flow.git/commit/88dd9edb9b54c9f89e27cbfaf984a68c6e2f2ea7>`_

[BUGFIX] Ignore unreflectable classes
-----------------------------------------------------------------------------------------

Classes that cannot be reflected will make the automatic configuration choke.
This happens quite often when using 3rd party components.

Make the reflection system mark the class unconfigurable, to allow the configurator
to ignore the class.

* Commit: `ad7fbeb <https://git.typo3.org/Packages/TYPO3.Flow.git/commit/ad7fbeb9a096393bc73249e85312438f408184c2>`_

[FEATURE] Improve rendering of large exceptions
-----------------------------------------------------------------------------------------

Splits exception messages containting multiple sentences and/or
line breaks into "subject" and "body" and renders the body with
nl2br().

* Resolves: `#51713 <http://forge.typo3.org/issues/51713>`_
* Commit: `ebfb00b <https://git.typo3.org/Packages/TYPO3.Flow.git/commit/ebfb00bfbc91cdbeabb47da0488ad72680a74665>`_

[BUGFIX] Published resources don't support symlinks
-----------------------------------------------------------------------------------------

Fixes an issue with the publication of persistent resources which
resulted in inaccessible resources after a few deployments with
TYPO3.Surf.

TYPO3.Surf heavily relies on symbolic links for pointing to the
currently active release. The key problem was that the symbolic
link which is put into the Web/_Resources folder used an absolute
path (realpath) to the resource file in Data/Persistent/ rather than
a possible symbolic link. This worked fine as long as the actual
directory (previous release) exists, but breaks as soon as old
releases have been removed.

* Resolves: `#51676 <http://forge.typo3.org/issues/51676>`_
* Commit: `64480cd <https://git.typo3.org/Packages/TYPO3.Flow.git/commit/64480cd47066458bfd9a15a9a10f1760e5a0a3b4>`_

[FEATURE] Allow String source for ArrayConverter
-----------------------------------------------------------------------------------------

ArrayConverter can now convert strings to arrays. It uses
explode internally with a default delimiter of ",".
The delimiter is configurable with the key "stringDelimiter" in
propertyMapping configuration for the ArrayConverter.

* Resolves: `#48148 <http://forge.typo3.org/issues/48148>`_
* Commit: `af81029 <https://git.typo3.org/Packages/TYPO3.Flow.git/commit/af810292032f7adf7437bc9fd385a8dc2ec04339>`_

[FEATURE] Allow arbitrary request methods in HTTP\\Request
-----------------------------------------------------------------------------------------

This patch removes a check in the HTTP Request class which
previously disallowed custom HTTP request methods such as "COPY".

* Resolves: `#50637 <http://forge.typo3.org/issues/50637>`_
* Commit: `1b756e9 <https://git.typo3.org/Packages/TYPO3.Flow.git/commit/1b756e93cc136bf28d8a7360cb1facf28de78487>`_

[BUGFIX] BooleanConverter considers "false" TRUE
-----------------------------------------------------------------------------------------

The BooleanConverter provided by Flow simply casts the $source
to a boolean using boxing.
With this change a string "false" (case insensitive) is considered FALSE.

* Fixes: `#51255 <http://forge.typo3.org/issues/51255>`_
* Fixes: `#51385 <http://forge.typo3.org/issues/51385>`_

* Commit: `8207a13 <https://git.typo3.org/Packages/TYPO3.Flow.git/commit/8207a1309efca3d47dc21555e008147ec098a130>`_

[BUGFIX] CurlEngine tries to rewind stream
-----------------------------------------------------------------------------------------

This fixes an issue with the CurlEngine which executes a
rewind() if the given request content is a stream resource.

This is not necessary and is especially harmful if a stream
resource is provided which does not support seek operations.

* Resolves: `#50636 <http://forge.typo3.org/issues/50636>`_
* Commit: `5d9b98f <https://git.typo3.org/Packages/TYPO3.Flow.git/commit/5d9b98f0c65743a8858e1f7caf6bab60983d369b>`_

[BUGFIX] Test fails since I72b943a63a88bd1620951b1d12c648b4433339db
-----------------------------------------------------------------------------------------

Change I72b943a63a88bd1620951b1d12c648b4433339db broke one of the unit
tests.

* Commit: `03df9d1 <https://git.typo3.org/Packages/TYPO3.Flow.git/commit/03df9d1b6a150d0f47dacfcc2657327d4450fa05>`_

[FEATURE] Catch and log exceptions occurring in echoExceptionWeb
-----------------------------------------------------------------------------------------

If, during the rather complex process of custom exception renderings,
again an exception occurs, this exception is again caught silently
and logged. In such a case there won't be anything output (white page),
but still a 500 Internal Server Error is sent, and the actual reason
for the exception can still be found in the log.

* Commit: `ac9f348 <https://git.typo3.org/Packages/TYPO3.Flow.git/commit/ac9f348334d836345860335cb7e40aa72db5ab1b>`_

[BUGFIX] Treat namespaces with underscores correctly
-----------------------------------------------------------------------------------------

The actual classloading does not handle the presence of underscores in namespaces
correctly.

* Fixes: `#49847 <http://forge.typo3.org/issues/49847>`_
* Commit: `ced8e0b <https://git.typo3.org/Packages/TYPO3.Flow.git/commit/ced8e0bed7bbc10745f69a95f901adb2e1701300>`_

[TASK] Improved error message for unresolved route
-----------------------------------------------------------------------------------------

This change adds information about the request method and the
originally called URI to the error message which is displayed when
no route matched.

* Commit: `09f3030 <https://git.typo3.org/Packages/TYPO3.Flow.git/commit/09f30305ef49030618aa42371aba3750362fc6f7>`_

[BUGFIX] RoutePath command shows the format name again
-----------------------------------------------------------------------------------------

This is just a minor fix. Instead of printing out whether the
format is set or not, the actual name is now shown again.

This was introduced by 07ab7988577c6a2c8656707820d8db1a5f08545b.

* Fixes: `#51257 <http://forge.typo3.org/issues/51257>`_
* Commit: `0a35aa5 <https://git.typo3.org/Packages/TYPO3.Flow.git/commit/0a35aa5ec1a4bcb9094593f08576cf42f6737bb5>`_

[TASK] Clean up tests and fix for PHPUnit 3.8
-----------------------------------------------------------------------------------------

* Commit: `600bf48 <https://git.typo3.org/Packages/TYPO3.Flow.git/commit/600bf48027ecb8334d9f4776bda89a0f497ddab4>`_

[BUGFIX] buildSubprocessCommand fails with multiple arguments
-----------------------------------------------------------------------------------------

Fixes an issue where the buildSubprocessCommand() function returned
an invalid command line which lacked spaces between command options.

* Resolves: `#49503 <http://forge.typo3.org/issues/49503>`_
* Commit: `c016792 <https://git.typo3.org/Packages/TYPO3.Flow.git/commit/c01679271fc3faa25bf41d666e21bf36f0c5da98>`_

[FEATURE] Files::removeEmptyDirectoriesOnPath()
-----------------------------------------------------------------------------------------

This change introduces a new utility function which removes all
empty directories on a given path.

* Commit: `7765d86 <https://git.typo3.org/Packages/TYPO3.Flow.git/commit/7765d86cfdf8cddb029be9d575339278b3af495e>`_

[TASK] Fix typo in name of "Joel on Software"
-----------------------------------------------------------------------------------------

* Commit: `c720e84 <https://git.typo3.org/Packages/TYPO3.Flow.git/commit/c720e847226e8d5a6ecc661d6675f8446c37c427>`_

[BUGFIX] Fix a serialization problem with intercepted request
-----------------------------------------------------------------------------------------

This change fixes a recursive serialization problem where the
ActionRequest is serialized multiple times in a session entry.

* Resolves: `#49289 <http://forge.typo3.org/issues/49289>`_
* Commit: `65fa532 <https://git.typo3.org/Packages/TYPO3.Flow.git/commit/65fa532130fcb59446f321598912a6e9eee42f4e>`_

[TASK] Fix license in file level docblocks
-----------------------------------------------------------------------------------------

* Related: `#50835 <http://forge.typo3.org/issues/50835>`_
* Commit: `1c315de <https://git.typo3.org/Packages/TYPO3.Flow.git/commit/1c315deb84b13e88433659dd5a8a799bf50cbf2e>`_

[TASK] Cosmetic & typographical fixes in documentation
-----------------------------------------------------------------------------------------

Fixes some spelling errors in the ModelViewController chapter
and adjusts the indention of a YAML example.

* Commit: `623ff49 <https://git.typo3.org/Packages/TYPO3.Flow.git/commit/623ff4971a48f52dff23f3afd97e6d8721feb4be>`_

[BUGFIX] Broken annotation in documentation
-----------------------------------------------------------------------------------------

* Commit: `a9b92c7 <https://git.typo3.org/Packages/TYPO3.Flow.git/commit/a9b92c7d3049b1f82495ae051b502e5b13cd6ee3>`_

[BUGFIX] Replace wrong keyword in documentation
-----------------------------------------------------------------------------------------

* Commit: `8f1d91f <https://git.typo3.org/Packages/TYPO3.Flow.git/commit/8f1d91f52dd24d94e25494a8b1df4bc3e7851df3>`_

[FEATURE] New Doctrine data type "objectarray"
-----------------------------------------------------------------------------------------

This type should be used for any array properties that might contain
objects. It has two advantages over the standard Doctrine array type:

* stores only type/identifier for persisted objects
* uses BLOB on the database level instead of CLOB

The latter makes it actually work with PostgreSQL (or other RDBMS that
do not allow NUL bytes in CLOB columns).

* Resolves: `#42167 <http://forge.typo3.org/issues/42167>`_
* Commit: `c78cf9a <https://git.typo3.org/Packages/TYPO3.Flow.git/commit/c78cf9a3ad288788c7cfcde354ce6f6e528e952d>`_

[FEATURE] Allow view configuration via Views.yaml
-----------------------------------------------------------------------------------------

This patch adds a new Configuration called ``Views.yaml``
to set/override various settings for Views, just
like the template path to use or controller options.

Example ``Views.yaml``::

	-
	  requestFilter: 'isPackage("My.Package")'
	  viewClassName: 'TYPO3\\TypoScript\\View\\TypoScriptView'
	  options:
	    typoScriptPathPattern: 'resource://My.Package/Private/TypoScripts'

Change I7596f6fc7f8349f3c43d05e6b5916b7946d412d5 in
Fluid takes care about this with rearranging the TemplateView.

Additionally this change introduces a dependency to TYPO3.Eel.

* Resolves: `#42176 <http://forge.typo3.org/issues/42176>`_
* Commit: `dc39b58 <https://git.typo3.org/Packages/TYPO3.Flow.git/commit/dc39b58dabe448f69ed6b896572e9b3bbbff14e7>`_

[BUGFIX] Corrected Security documentation regarding EntryPoints
-----------------------------------------------------------------------------------------

This updates the section about the WebRedirect EntryPoint and mentions
the obsolescence of the uri key and its superseding option
routeValues.

* Commit: `74c2023 <https://git.typo3.org/Packages/TYPO3.Flow.git/commit/74c20238ea9d2dbec67f8c1ce176d5df292ac550>`_

[TASK] use 'note' to make statement more catching
-----------------------------------------------------------------------------------------

* Commit: `568b614 <https://git.typo3.org/Packages/TYPO3.Flow.git/commit/568b614b7df4e82b17d9dc38243499254c39fcbf>`_

[TASK] Fix broken links in documentation
-----------------------------------------------------------------------------------------

* Commit: `2abf69b <https://git.typo3.org/Packages/TYPO3.Flow.git/commit/2abf69b9253af090b5feb3ef8f8a146bca5e1d28>`_

[TASK] Add CGL PDF to Flow package
-----------------------------------------------------------------------------------------

Includes the "TYPO3 Flow Coding Guidelines on one page" PDF
as asset to the Flow documentation.

This also links the CGL thumbnail with the PDF and moves images
two levels up in the directory structure.

* Commit: `e8e4976 <https://git.typo3.org/Packages/TYPO3.Flow.git/commit/e8e497600ca0d73d7c7f3b2dc56763dcadf84f61>`_

[BUGFIX] Fix index number regarding upload fields in definitiv guide
-----------------------------------------------------------------------------------------

The docs state a wrong number on the generated tags.

Though this is small, the docs state that

<f:form.upload property="attachments.0.originalResource" />
<f:form.upload property="attachments.1.originalResource" />

translates to
<input type="file" name="formObject[attachments][0][originalResource]">
<input type="file" name="formObject[attachments][0][originalResource]">

Obviously, this is not the case. Second index is 1.

* Resolves: `#50181 <http://forge.typo3.org/issues/50181>`_
* Commit: `d4448a6 <https://git.typo3.org/Packages/TYPO3.Flow.git/commit/d4448a680e46d7a5849743900624acc837293f46>`_

[TASK] Fix documentation version
-----------------------------------------------------------------------------------------

Sets the version of this documentation to "2.1" so that it is rendered
correctly at docs.typo3.org

* Commit: `8e65980 <https://git.typo3.org/Packages/TYPO3.Flow.git/commit/8e65980bd8ea1df07cf6787e8f95e7af1eca1bea>`_

[TASK] Update documentation CGL Thumbnail
-----------------------------------------------------------------------------------------

* Commit: `e1591ea <https://git.typo3.org/Packages/TYPO3.Flow.git/commit/e1591ea92f1c60e112ecd3b0ed9a33b4a51330ec>`_

[TASK] Update Coding Guidelines on One Page
-----------------------------------------------------------------------------------------

Updates Coding Guidelines on One Page to include information on
relative namespaces and other CGL changes from:
Idd4f6a5ea2f24ccd6368c3e43bff57355c5baa4b

Also updates the coloring and styles to match the code hiliting
on docs.typo3.org, as well as using TYPO3 Orange instead of red.

* Commit: `24bb59a <https://git.typo3.org/Packages/TYPO3.Flow.git/commit/24bb59a026884a49c15e805bfe7b741c4ccebda9>`_

[TASK] Update version branch to dev-master
-----------------------------------------------------------------------------------------

This updates the constant FLOW_VERSION_BRANCH to
version "dev-master".

* Commit: `0640b2a <https://git.typo3.org/Packages/TYPO3.Flow.git/commit/0640b2a74100d61d6f9ebfe98c08299c846fa027>`_

[TASK] Update CGL to recent changes
-----------------------------------------------------------------------------------------

Adjusts the "PHP Coding Guidelines & Best Practices" to additions that
have been agreed on during our "TYPO3 Neos Technical Discussion" meetup.

In addition this tweaks and fixes some parts of the existing guidelines.

* Resolves: `#50032 <http://forge.typo3.org/issues/50032>`_
* Commit: `3fb0ca3 <https://git.typo3.org/Packages/TYPO3.Flow.git/commit/3fb0ca37ff9f9eaba2aa68d7a4dd5cb090d203c8>`_

[FEATURE] Resolve relative namespaces and use statements in @var & @param annotations
-----------------------------------------------------------------------------------------

Reflection should expand shortened or namespaced @var & @param annotations
to their fully qualified class name.

This has a direct benefit in the following areas (all covered by tests):

* Reflection returns the fully qualified class name for @var and @param annotations
* Reflection returns the fully qualified property types for Domain Models
  inside the class schema
* Dependency Injection using @Flow\\Inject works with shortened class names
* Property mapping works for shortened class names in type hint & @param annotation

* Resolves: `#46008 <http://forge.typo3.org/issues/46008>`_
* Commit: `bc8f716 <https://git.typo3.org/Packages/TYPO3.Flow.git/commit/bc8f7164dea7331823b6170aa76833ffdc6c9658>`_

[BUGFIX] ControllerContext constructor has 4 arguments
-----------------------------------------------------------------------------------------

ControllerContext constructor has no flashMessageContainer
argument, 5th argument.

* Fixes: `#49923 <http://forge.typo3.org/issues/49923>`_
* Commit: `d905ae0 <https://git.typo3.org/Packages/TYPO3.Flow.git/commit/d905ae0e7296a231b81435bac12308a379736b5c>`_

[BUGFIX] Allow arbitrary setters in PersistentObjectConverter
-----------------------------------------------------------------------------------------

This change supports additional setters in entities by implementing a
fallback to the reflection service if the class schema does not contain
a property.

* Resolves: `#49815 <http://forge.typo3.org/issues/49815>`_
* Commit: `8c28a58 <https://git.typo3.org/Packages/TYPO3.Flow.git/commit/8c28a5866d3fab7389bb034f4f4cc192564420ae>`_

[TASK] Use better matching 'note' instead of 'tip' in documentation
-----------------------------------------------------------------------------------------

* Commit: `0f5de19 <https://git.typo3.org/Packages/TYPO3.Flow.git/commit/0f5de1984be014f7a705bdb3a2b0f503ea58cb13>`_

[BUGFIX] Use consistent spelling of dependency to avoid confusion
-----------------------------------------------------------------------------------------

* Commit: `a092959 <https://git.typo3.org/Packages/TYPO3.Flow.git/commit/a0929592f1eebabfe87dbb0cf1d3c6e7bbeac9e9>`_

[BUGFIX] Write TYPO3 CMS instead of just TYPO3 in documentation
-----------------------------------------------------------------------------------------

* Commit: `7b108b5 <https://git.typo3.org/Packages/TYPO3.Flow.git/commit/7b108b5af28ddfefb5c5802958fa77753b7a8872>`_

[FEATURE] Allow configurable doctrine event subscribers
-----------------------------------------------------------------------------------------

This change allows doctrine event subscribers and listeners to be configured
via the options TYPO3.Flow.persistence.doctrine.eventSubscribers and
TYPO3.Flow.persistence.doctrine.eventListeners respectively.

This feature allows doctrine extensions to be used with Flow, that depend on
the doctrine event system, like the gedmo behavioral extension.

* Resolves: `#47228 <http://forge.typo3.org/issues/47228>`_
* Commit: `5540b3c <https://git.typo3.org/Packages/TYPO3.Flow.git/commit/5540b3c3a8ebba602410d869fdc88cd5f1f133a5>`_

[TASK] Fix broken links in documentation
-----------------------------------------------------------------------------------------

This fixes links that were mostly broken due to the renamed
git repositories / Flow packages.

* Resolves: `#49963 <http://forge.typo3.org/issues/49963>`_
* Commit: `4061f2b <https://git.typo3.org/Packages/TYPO3.Flow.git/commit/4061f2bafdd8a16a51bb8d3805f16e96ec5b315a>`_

[BUGFIX] Behave silently if no translation unit elements are present
-----------------------------------------------------------------------------------------

If a translation source does not contain any translationUnit elements,
which is allowed in XLIFF for <trans-unit> elements inside //file/body,
now there is no Undefined Index error anymore, but the incident is
silently logged to the system logger as every other translation-related
incident.

* Fixes: `#47058 <http://forge.typo3.org/issues/47058>`_
* Commit: `06a1694 <https://git.typo3.org/Packages/TYPO3.Flow.git/commit/06a1694dec79a67e8e195ede97c3a9ffccc4aacb>`_

[TASK] Extract MediaType handling from HTTP request
-----------------------------------------------------------------------------------------

Currently the HTTP Request contains several methods interacting
with media types (aka MIME types).

This change extract those methods to the MediaTypes utility class
to purge the request class and to make media type handling easier
reusable for other components.

* Resolves: `#48615 <http://forge.typo3.org/issues/48615>`_
* Commit: `19cf544 <https://git.typo3.org/Packages/TYPO3.Flow.git/commit/19cf544d222968f650065ae91e67efeccc672e30>`_

[TASK] Add 'www-data' (debian,ubuntu) to examples of webserver users in documentation
-----------------------------------------------------------------------------------------

* Commit: `20636f1 <https://git.typo3.org/Packages/TYPO3.Flow.git/commit/20636f11afae288f5126b1cc7d9696bef92be6e7>`_

[BUGFIX] Roles are not synchronized after database migrate
-----------------------------------------------------------------------------------------

The roles are not synchronized from the Policy.yaml files to the
database after the database migration, but only after rebuilding
the cache. This causes problems in the setup package where the
database migration is run and the next step fails in reading the
roles from the database.

By adding a signal to the doctrine migration command we can run
the synchronization after database migration so the roles in the
database will always be up to date after migration.

This change makes the initializeRolesFromPolicy method public
which does not cause issues as the method won't perform any
actions if the rolesFromPolicyUpToDate flag in the cache is set.

* Commit: `43fe1a3 <https://git.typo3.org/Packages/TYPO3.Flow.git/commit/43fe1a383622bcc9aa6d153b9bd793db582bf99a>`_

[BUGFIX] Cache Management Exception when files changed but no classes
-----------------------------------------------------------------------------------------

When classes did not change, but other files did, an exception occurs
because $modifiedClassNamesWithUnderscores does not exist, as it can
be seen when reading the source code.

* Resolves: `#49571 <http://forge.typo3.org/issues/49571>`_
* Commit: `dce0d7b <https://git.typo3.org/Packages/TYPO3.Flow.git/commit/dce0d7becda1150b38de3153b387da856cfc0add>`_

[BUGFIX] Use deterministic join aliases
-----------------------------------------------------------------------------------------

Before this change, we used uniqid() for building join aliases. This prevented
the doctrine DQL cache to work correctly.

We found this change during profiling TYPO3 Neos, where it led to about
10% performance increase in frontend rendering.

* Resolves: `#49569 <http://forge.typo3.org/issues/49569>`_
* Commit: `4b2e5ca <https://git.typo3.org/Packages/TYPO3.Flow.git/commit/4b2e5ca6f4496e480ecaa14ab2e6077f215fdfeb>`_

[FEATURE] Bind routes to HTTP request methods
-----------------------------------------------------------------------------------------

This change allows routes to be limited to certain request methods.
This is especially useful for REST services where you often need the
same URI to invoke different actions depending on the HTTP method.

Usage::

	-
	  uriPattern: 'foo/bar'
	  defaults:
	    '@package':    'Some.Package'
	    '@controller': 'Standard'
	    '@action':     'first'
	  httpMethods: ['GET']

	-
	  uriPattern: 'foo/bar'
	  defaults:
	    '@package':    'Some.Package'
	    '@controller': 'Standard'
	    '@action':     'second'
	  httpMethods: ['POST', 'PUT']

* Resolves: `#27117 <http://forge.typo3.org/issues/27117>`_
* Commit: `07ab798 <https://git.typo3.org/Packages/TYPO3.Flow.git/commit/07ab7988577c6a2c8656707820d8db1a5f08545b>`_

[BUGFIX] ORM fails on databases with low maximum length for table names
-----------------------------------------------------------------------------------------

This fixes a bug that creates too long database identifiers on
systems where maxIdentifierLength is less than 31 as Oracle has.

This patch fixes the bug in a backwards compatible way.

* Fixes: `#49007 <http://forge.typo3.org/issues/49007>`_
* Commit: `e7f4df6 <https://git.typo3.org/Packages/TYPO3.Flow.git/commit/e7f4df662c2589219990c3986bc646b1c71b0a94>`_

[BUGFIX] Exception in ProxyClassBuilder cannot be thrown because wrong exception message
-----------------------------------------------------------------------------------------

This leads to weird exceptions such as:

  Notice: Undefined variable: TYPO3\\Flow\\Command\\ConfigurationCommandController

* Resolves: `#49370 <http://forge.typo3.org/issues/49370>`_
* Commit: `54ed453 <https://git.typo3.org/Packages/TYPO3.Flow.git/commit/54ed453a823f5f004098244351abf2259f5d2797>`_

[FEATURE] Iterator support for APC cache backend
-----------------------------------------------------------------------------------------

This adds support for iterating over entries of an APC cache.

* Related: `#49185 <http://forge.typo3.org/issues/49185>`_
* Commit: `119ac7c <https://git.typo3.org/Packages/TYPO3.Flow.git/commit/119ac7c58e4e2d0b9dba57c139b9f0e543dd053d>`_

[BUGFIX] Session storage has poor performance for hundreds of sessions
-----------------------------------------------------------------------------------------

Fixes an issue with the storage backend for sessions which resulted in
a bad overall performance when hundreds of sessions were active
simultaneously. The improved implementation is now based on two separate
cache storages and a new garbage collector which allows for more fine
grained tuning.

If you previously used a different than the default cache backend for
sessions, you will need to adjust your configuration because this
implementation is based on two distinct cache backend configurations
(see updated Caches.yaml).

The option name for setting the garbage collection probability has
changed: the settings now come with a dedicated section for garbage
collection which contains the probability and, added by this patch, the
maximum number of old sessions which may be removed by the garbage
collector during one invocation.

You need to flush caches with --force after applying this change set.

* Fixes: `#49189 <http://forge.typo3.org/issues/49189>`_
* Resolves: `#49190 <http://forge.typo3.org/issues/49190>`_

* Commit: `d84108f <https://git.typo3.org/Packages/TYPO3.Flow.git/commit/d84108f8e6a52c946f8465793a41ca4e4fe26081>`_

[FEATURE] Iterator support for Cache Frontends / Backends
-----------------------------------------------------------------------------------------

This adds support for iterating over entries of a cache. In this
particular patch only support for the VariableFrontend and the file
based backends is included. Further implementations will be part of
separate commits.

* Resolves: `#49185 <http://forge.typo3.org/issues/49185>`_
* Commit: `ebb8851 <https://git.typo3.org/Packages/TYPO3.Flow.git/commit/ebb885123b6e328f555d7971f0dc75590902c80b>`_

[BUGFIX] Session garbage collection is non-functional
-----------------------------------------------------------------------------------------

Fixes an issue with the newly introduced session handling which resulted
in a big amount of orphaned cache entries due to a non-functional
garbage collection. In combination with a non-optimized implementation
of the garbage collector, this resulted in very long request times if
thousands of entries existed.

* Resolves: `#49021 <http://forge.typo3.org/issues/49021>`_
* Commit: `f243be4 <https://git.typo3.org/Packages/TYPO3.Flow.git/commit/f243be48c3c14e87e4493ec37edf5f4183c52d0b>`_

[BUGFIX] Property introduction is broken
-----------------------------------------------------------------------------------------

This change fixes property introduction through aspects by adding
missing checks for available property introductions.

* Fixes: `#39413 <http://forge.typo3.org/issues/39413>`_
* Commit: `915b71c <https://git.typo3.org/Packages/TYPO3.Flow.git/commit/915b71ce7346b7c6cc33e95ccb9d628f7023bbb1>`_

[BUGFIX] Provide working apache settings in documentation
-----------------------------------------------------------------------------------------

The provided AllowOverride is now matching the needs of Flow.

* Fixes: `#48951 <http://forge.typo3.org/issues/48951>`_
* Commit: `f91bbc8 <https://git.typo3.org/Packages/TYPO3.Flow.git/commit/f91bbc8ccf811a4d235c2c21d6749e8609ab4ab9>`_

[TASK] Small documentation correction
-----------------------------------------------------------------------------------------

* Commit: `cf9e888 <https://git.typo3.org/Packages/TYPO3.Flow.git/commit/cf9e8888c9cfb55ed1f1321aa1e2afb6c163f46b>`_

[TASK] Tiny CGL cleanup
-----------------------------------------------------------------------------------------

* Commit: `83d2cad <https://git.typo3.org/Packages/TYPO3.Flow.git/commit/83d2cadd8141f59151e21ec5da738b8a92cb19be>`_

[BUGFIX] Cache is not flushed for changes in sub routes
-----------------------------------------------------------------------------------------

The CacheManager automatically flushes routing caches in
Development context if a Routes.yaml file was changed.
This extends the behavior to flush caches even if a custom
sub route (Routes.xyz.yaml) was modified.

* Fixes: `#47255 <http://forge.typo3.org/issues/47255>`_
* Related: `#43966 <http://forge.typo3.org/issues/43966>`_

* Commit: `7ca72da <https://git.typo3.org/Packages/TYPO3.Flow.git/commit/7ca72da7866f754237a4280bce453651c0f119e5>`_

[BUGFIX] Validation is not reset in functional tests
-----------------------------------------------------------------------------------------

If using the internal request engine (= in functional tests) the ValidationResolver
that contains a 1st level cache for validated objects is not properly reset.

This change fixes this by introducing a reset() method that is called by
InternalRequestEngine::sendRequest()

* Fixes: `#46715 <http://forge.typo3.org/issues/46715>`_
* Commit: `8f0041d <https://git.typo3.org/Packages/TYPO3.Flow.git/commit/8f0041d50cb85dd85aee0adea53989e8a8865241>`_

[BUGFIX] Doctrine DocParser ignores Flow autoloader
-----------------------------------------------------------------------------------------

The Doctrine DocParser does not utilize the autoloaders
registered into spl_autoload. This change registers
the Flow autoloader into Doctrines AnnotionRegistry so
it will be used in the lookup.

The error only occurs in Production context, but
it's hard to say how this change can be verified as
it seems to be very specific when the error occurs
and does not have to occur for all controller /
action combinations in the application.

* Resolves: `#48551 <http://forge.typo3.org/issues/48551>`_
* Commit: `ec698a0 <https://git.typo3.org/Packages/TYPO3.Flow.git/commit/ec698a03696491c499ad75e5ee664682edd8aee1>`_

[BUGFIX] Comment now references to the correct method name
-----------------------------------------------------------------------------------------

* Fixes: `#48557 <http://forge.typo3.org/issues/48557>`_
* Commit: `20216da <https://git.typo3.org/Packages/TYPO3.Flow.git/commit/20216daec85c0b41ddadfaed7969aab8d04595f4>`_

[BUGFIX] Broken inheritance type handling in FlowAnnotationDriver
-----------------------------------------------------------------------------------------

This reverts commit 93fbe9fc8d789547f05eec2b4945eb6c565fa3fa because
it broke more than it was supposed to fix.

The failing test that led to the original "fix" was in fact broken and
is fixed with this change.

* Related: `#48231 <http://forge.typo3.org/issues/48231>`_
* Commit: `69c6576 <https://git.typo3.org/Packages/TYPO3.Flow.git/commit/69c6576f25069a7f9915dd260089d490cedcd5ec>`_

[BUGFIX] remove obsolete PackageManagerControllerTest
-----------------------------------------------------------------------------------------

… the original has been removed at I3f7e287d4dca234f77a727ec113960b3fd215b33
-- breaking the unit tests

* Commit: `2ac620e <https://git.typo3.org/Packages/TYPO3.Flow.git/commit/2ac620e6e10f1cef33d7d3eda66ffdfaaf24f30b>`_

[TASK] Make code migration checking roles in policies more robust
-----------------------------------------------------------------------------------------

The migration checking for the use of globally defined roles identifier
was a bit too eager in working on packages without Policy.yaml and/or
role definitions, plus it did not skip local roles in ACLs.

* Commit: `35ec586 <https://git.typo3.org/Packages/TYPO3.Flow.git/commit/35ec586bf09490fce1e2399dbca8f2f8d6ba57d2>`_

[FEATURE] Allow use of callback function in regex search/replace
-----------------------------------------------------------------------------------------

Since using the e modifier for preg_replace() is no longer recommended
(deprecated as of PHP 5.5) this is an alternative. If the $replace
argument given to searchAndReplaceRegex() in code migrations is an
anonymous function it will be passed to preg_replace_callback() and
thus allows custom replace operations.

* Commit: `12d815d <https://git.typo3.org/Packages/TYPO3.Flow.git/commit/12d815db47ae371e66218bddfa1a6adfc06e6896>`_

[TASK] Add german translation for validation error messages
-----------------------------------------------------------------------------------------

This adds german translatsions for bundled validation error messages.

* Resolves: `#48254 <http://forge.typo3.org/issues/48254>`_
* Related: `#45279 <http://forge.typo3.org/issues/45279>`_

* Commit: `9808fb2 <https://git.typo3.org/Packages/TYPO3.Flow.git/commit/9808fb28b3cf2ea4671c0d4474c13dcf086908f2>`_

[BUGFIX] Allow access to resources GRANTED to "Everybody"
-----------------------------------------------------------------------------------------

PolicyEnforcement does no longer throw an AccessDenied exception
if not logged in before checking the actual ACLs for the
resource in question. This allows creating resources and
granting access to them for "Everybody" which was not possible
before.

* Fixes: `#46036 <http://forge.typo3.org/issues/46036>`_
* Commit: `1efc101 <https://git.typo3.org/Packages/TYPO3.Flow.git/commit/1efc1016d89c87bf34bc51cdce5bb7dbff3b8f5f>`_

[TASK] Remove leftover package manager controller for CLI
-----------------------------------------------------------------------------------------

This one was replaced by a command controller some time ago.

* Commit: `277ff08 <https://git.typo3.org/Packages/TYPO3.Flow.git/commit/277ff08c8cf7180253626bcfa0aaa4fccfe6c114>`_

[TASK] Document translated validation error messages
-----------------------------------------------------------------------------------------

This adds documentation on how to use translated validation error
messages.

* Resolves: `#48251 <http://forge.typo3.org/issues/48251>`_
* Commit: `f445b78 <https://git.typo3.org/Packages/TYPO3.Flow.git/commit/f445b78d02b2de93e5b92480a3a2ade6e6419ad1>`_

[BUGFIX] Ignoring of inheritance type in FlowAnnotationDriver broken
-----------------------------------------------------------------------------------------

Due to weird circumstances the tests for the FlowAnnotationDriver were
skipped for a while, and change Ie6e46efa858a651b2f1fe4b08d78039249504dea
broke the functionality to disable inheritance of no subclasses exist
for a class annotated with an InheritanceType annotation.

This changes fixes that.

* Fixes: `#48231 <http://forge.typo3.org/issues/48231>`_
* Commit: `93fbe9f <https://git.typo3.org/Packages/TYPO3.Flow.git/commit/93fbe9fc8d789547f05eec2b4945eb6c565fa3fa>`_

[TASK] Re-enable and fix FlowAnnotationDriver tests
-----------------------------------------------------------------------------------------

* Commit: `6a310a1 <https://git.typo3.org/Packages/TYPO3.Flow.git/commit/6a310a17f75cb992ed4ce78d9e5108453149c938>`_

[TASK] Fix mailing list URI on first guide page
-----------------------------------------------------------------------------------------

* Commit: `b3a9b13 <https://git.typo3.org/Packages/TYPO3.Flow.git/commit/b3a9b132339c59aadd59b438c7f2d69e53244b54>`_

[TASK] Update CLI command reference
-----------------------------------------------------------------------------------------

This updates the CLI command reference in the guide. The change looks
bigger than it is, because the commands are now sorted by package key
and identifier.

* Commit: `04b484a <https://git.typo3.org/Packages/TYPO3.Flow.git/commit/04b484a78d574e8c9558709844eeb2f78a638224>`_

[BUGFIX] Fix failing ValidatorResolverTest
-----------------------------------------------------------------------------------------

The PolyTypeObjectValidator change broke a number of changes, because
it was not adjusted to the static method result compilation changes
merged since it was created.

* Related: `#45167 <http://forge.typo3.org/issues/45167>`_
* Commit: `3761b8f <https://git.typo3.org/Packages/TYPO3.Flow.git/commit/3761b8f9b20947d6fd2a2a745dccdd8c829536d1>`_

[TASK] Fix rST markup in ObjectManagement chapter
-----------------------------------------------------------------------------------------

A note block was not correctly marked up.

* Commit: `59f5443 <https://git.typo3.org/Packages/TYPO3.Flow.git/commit/59f544398bd93c1c5c5d945e0be971e0bd7185f0>`_

[TASK] Fix rST markup in Routing chapter
-----------------------------------------------------------------------------------------

Some code blocks were not correctly marked up, leading to block quotes
instead of code listings.

* Commit: `150d2cd <https://git.typo3.org/Packages/TYPO3.Flow.git/commit/150d2cdbfae25b2cf465408b0a8570d21d109302>`_

[BUGFIX] Add missing "search" ACL to file permission script
-----------------------------------------------------------------------------------------

* Resolves: `#48133 <http://forge.typo3.org/issues/48133>`_
* Commit: `3613438 <https://git.typo3.org/Packages/TYPO3.Flow.git/commit/361343830e95ed2aeaecffa0c035c778a9a0617c>`_

[BUGFIX] Controllers must not be of scope singleton
-----------------------------------------------------------------------------------------

Removes the scope("singleton") annotation from the
provided base controllers.

Background:
Usually the scope of a controller doesn't really make a difference,
because they are only instantiated once per request.
But if the same controller is used multiple times
(e.g. within two plugin/widget instances on one page) the side
effects could be very confusing.

* Related: `#45647 <http://forge.typo3.org/issues/45647>`_
* Commit: `7f89b1b <https://git.typo3.org/Packages/TYPO3.Flow.git/commit/7f89b1bad66a1ef0940e86869389adb94f904ab4>`_

[BUGFIX] Authentication does not work any longer without redirects
-----------------------------------------------------------------------------------------

This fixes a regression that made the authenticated roles only available
in the security context after a redirect following authentication.

Background:

This is a regression introduced with the 1st level cache added in
Id256b168ff9c6aa4cac8da8957ada237f9236c71 but the actual problem is
that the PersistenceQueryRewritingAspect initializes the security
context if it was not initialized before (since change
I44838de1503cbe49cf3fee51921b731bfaa0cfc5) when intercepting QOM
queries setting the context roles to "Anonymous" and "Everybody".

This change adds a new method Context::withoutAuthorizationChecks()
that allows you temporarily disable authorization related interceptors
e.g. PolicyEnforcement and PersistenceQueryRewriting aspects in order
to be able to circumvent authorization in low level operations (for
example to fetch the current account in an AuthenticationProvider).

Usage::

 $this->securityContext->withoutAuthorizationChecks(
   function ($accountRepository, $username, $providerName, &$account) {
     // this will disable the PersistenceQueryRewritingAspect for this one call
     $account = $accountRepository
       ->findActiveByAccountIdentifierAndAuthenticationProviderName($username, $providerName)
   }
 );

* Related: `#46352 <http://forge.typo3.org/issues/46352>`_
* Fixes: `#46636 <http://forge.typo3.org/issues/46636>`_

* Commit: `e06e0f2 <https://git.typo3.org/Packages/TYPO3.Flow.git/commit/e06e0f2dd6eb565f00ae535c780ab13b74de8f92>`_

[TASK] Adjust dependencies to doctrine packages
-----------------------------------------------------------------------------------------

This changes the dependencies to doctrine/migrations (so it explicitly
points to dev-master) and doctrine/data-fixtures (so it becomes a
suggestion instead of a requirement).

* Related: `#47808 <http://forge.typo3.org/issues/47808>`_
* Commit: `14d6b5c <https://git.typo3.org/Packages/TYPO3.Flow.git/commit/14d6b5c3ff82c67d92d50112fd1221aebefbea94>`_

[BUGFIX] ReflectionService works for non-Entity inheritance members
-----------------------------------------------------------------------------------------

As soon as a class which is *not* an entity was present as an
ancestor of an Entity (with at least one Entity descendant in
between), there was an Undefined Index error because the
ReflectionService proceeded on the assumption that everything
was an Entity, hence present in the ->classSchemata array.

This adds an additional check for the actual presence of
such an array index and proofs this behavior with a
Functional Test Fixture.

* Fixes: `#47809 <http://forge.typo3.org/issues/47809>`_
* Commit: `4c52078 <https://git.typo3.org/Packages/TYPO3.Flow.git/commit/4c5207896059e9a3e5d841ddb564f387c51cb634>`_

[BUGFIX] Handle open basedir properly during file upload
-----------------------------------------------------------------------------------------

This solves the issues of uploading files when using open_basedir
restriction. Instead of having to add the temporary upload
directory (upload_tmp_dir) in the open_basedir configuration,
which is a bad idea, this ensures that it works even though the
open basedir restricts access to the temporary upload directory.

Make sure that the temporary upload directory is writable to test
this issue.

* Resolves: `#45936 <http://forge.typo3.org/issues/45936>`_
* Commit: `6fb381b <https://git.typo3.org/Packages/TYPO3.Flow.git/commit/6fb381bc6665e65bd0b68dec8ee027c644188d86>`_

[BUGFIX] Allow variable name references in @var annotations
-----------------------------------------------------------------------------------------

This change loosens the strictness of the @var annotation parsing, where
it would throw an exception when the annotation contained the variable
name it referred to.

So this is now possible::

 /**
  * @var integer $variable
  */

* Fixes: `#47114 <http://forge.typo3.org/issues/47114>`_
* Commit: `4395bcb <https://git.typo3.org/Packages/TYPO3.Flow.git/commit/4395bcba3a3b49abb16388e05c3ba2e176dd8915>`_

[FEATURE] Allow using own I18n formatters
-----------------------------------------------------------------------------------------

Internationalization's placeholder formatters do not need
to be placed under the TYPO3\\Flow namespace anymore, making
it possible to use very own formatters in own packages.

* Commit: `d836376 <https://git.typo3.org/Packages/TYPO3.Flow.git/commit/d836376a1571a0c70d2815de42afbef9217f5575>`_

[TASK] Update configuration schemas
-----------------------------------------------------------------------------------------

This change updates the configuration schemas to the latest merges.

On top, it allows for configuration of doctrine connection
wrappers and the MasterSlaveConnection wrapper, that allows to setup
a master/slave database connection.

* Resolves: `#47346 <http://forge.typo3.org/issues/47346>`_
* Commit: `3b554c9 <https://git.typo3.org/Packages/TYPO3.Flow.git/commit/3b554c967324ec4c59a657452ff031c7e83becd2>`_

[BUGFIX] Support BCrypt validation of hashes with different cost
-----------------------------------------------------------------------------------------

In the current implementation of the BCryptHashingStrategy a password is
hashed with crypt and the hash contains the algorithm and parameters
with the salt that was used to hash the password.

This change updates the validation to also take the cost from the stored
hash and allow changes to the cost setting.

* Fixes: `#47725 <http://forge.typo3.org/issues/47725>`_
* Commit: `8872a65 <https://git.typo3.org/Packages/TYPO3.Flow.git/commit/8872a65bc437cd3d1d2275b9657ceb92ad19e492>`_

[BUGFIX] ClassLoader does not handle underscore correctly
-----------------------------------------------------------------------------------------

For class names containing an underscore the ClassLoader now correctly
replaces that with a directory separator when loading classes.

This fixes compatibility with some PSR-0 compatible composer packages.

* Fixes: `#47675 <http://forge.typo3.org/issues/47675>`_
* Commit: `24e15e4 <https://git.typo3.org/Packages/TYPO3.Flow.git/commit/24e15e460535f5002d9b2fdb6a700618b0e9a85a>`_

[TASK] Fix spelling error related to static method advice test
-----------------------------------------------------------------------------------------

This was introduced with I15817e357d98eb78de8984a78582de5cdf16064e

* Related: `#47371 <http://forge.typo3.org/issues/47371>`_
* Commit: `ff13988 <https://git.typo3.org/Packages/TYPO3.Flow.git/commit/ff139888dc3ee3a509b9bfcb3a12f5c24dfbcf9a>`_

[BUGFIX] Lazy DI causes endless loop for certain session objects
-----------------------------------------------------------------------------------------

Fixes an issue with the Lazy Dependency Injection mechanism which caused
and endless loop if session-scoped objects were unserialized and later on
injected lazily.

Background:

when a session is resumed (rather early in the HTTP Request Handler), the
objects contained in the session are unserialized and register their
instance automatically at the Object Manager. If
such an object, for example the Security Context, is later on injected
lazily into another class, the generated proxy code will overwrite the
instance which was previously set at the Object Manager.

In the reported case the RequestHandler retrieved the Security Context
via ObjectManager->get() and received a DependencyProxy instead of the
expected real instance. On using it, the DependencyProxy called the
ObjectManager->get() method to retrieve the real instance which resulted
in a recursion.

This patch corrects the generated proxy code to check for an existing
real instance before trying to generate a Dependency Proxy.

* Resolves: `#46424 <http://forge.typo3.org/issues/46424>`_
* Commit: `a532ede <https://git.typo3.org/Packages/TYPO3.Flow.git/commit/a532ede63163c3b059d9d5f12fb3573c16a1d17c>`_

[BUGFIX] AOP erroneously allows to advise static methods
-----------------------------------------------------------------------------------------

Fixes an issue with the AOP proxy builder which erroneously allowed to
advise static methods which resulted in a PHP fatal error as soon as
such a method was called.

* Fixes: `#47371 <http://forge.typo3.org/issues/47371>`_
* Commit: `86620ec <https://git.typo3.org/Packages/TYPO3.Flow.git/commit/86620ec8cead8ba3773a554aab7763d436de9c8a>`_

[BUGFIX] unpublishPersistentResource deletes only intended Resource
-----------------------------------------------------------------------------------------

When calling ``unpublishPersistentResource``, now only the actually
intended Resource gets deleted, rather than the whole publishing
target directory.

Since vfsStream does not support the necessary glob() operation,
the appropriate UnitTest is rebuilt to use the real filesystem.

* Commit: `7278fbb <https://git.typo3.org/Packages/TYPO3.Flow.git/commit/7278fbb207accc06b5cc853b6418b74bd76bc379>`_

[BUGFIX] generateUUID() creates uppercase characters in UUIDs
-----------------------------------------------------------------------------------------

The UUIDs generated by that method were always lowercase, now they are
uppercase (since change I1237fdfbee75cbfca2f2082cf30a69383dbc7fd5). As
soon as you do a case-sensitive comparison on those UUIDs as strings,
this will now break, even if the UUIDs are the same semantically.

This change makes them lowercase again.

* Fixes: `#47534 <http://forge.typo3.org/issues/47534>`_
* Related: `#46862 <http://forge.typo3.org/issues/46862>`_

* Commit: `654e0f4 <https://git.typo3.org/Packages/TYPO3.Flow.git/commit/654e0f4bb2c557b066538bc53588461c1c3aad28>`_

[BUGFIX] Fix PolicyService->createRole to use the Role object
-----------------------------------------------------------------------------------------

* Fixes: `#47500 <http://forge.typo3.org/issues/47500>`_
* Commit: `c1774f1 <https://git.typo3.org/Packages/TYPO3.Flow.git/commit/c1774f1b389c42a928b61ef11f9d1ad934402a52>`_

[BUGFIX] initializeObject is no longer executed twice
-----------------------------------------------------------------------------------------

In every session-scope object initializeObject() was
called twice as soon as the session is started.
Now initializeObject() is only called once.

* Fixes: `#45609 <http://forge.typo3.org/issues/45609>`_
* Commit: `609de0d <https://git.typo3.org/Packages/TYPO3.Flow.git/commit/609de0dadd1574ab3779f1fb79b80844faf74f32>`_

[BUGFIX] setParentRoles() fails if passed roles contain duplicates
-----------------------------------------------------------------------------------------

Fixes an issue where Doctrine failed inserting parent roles if the array
passed to Role->setParentRoles() contained duplicates.

Even though getParentRoles() does return roles without duplicates,
setParentRoles() did not filter duplicates and caused the SQL error
mentioned in the related issue ticket.

* Resolves: `#47473 <http://forge.typo3.org/issues/47473>`_
* Commit: `30124b2 <https://git.typo3.org/Packages/TYPO3.Flow.git/commit/30124b2021fcd7eed4938218d0422b5b23bff73e>`_

[BUGFIX] ActionController throws warning because of short method names
-----------------------------------------------------------------------------------------

Fixes an issue in ActionController which caused a PHP warning if the
concrete ActionController implementation contained methods whose name
was shorter than 7 characters.

* Resolves: `#47469 <http://forge.typo3.org/issues/47469>`_
* Commit: `54d4b68 <https://git.typo3.org/Packages/TYPO3.Flow.git/commit/54d4b684fe5ffba936c32b98513e6d299604eb25>`_

[TASK] Complete documentation for Error Rendering Groups
-----------------------------------------------------------------------------------------

This adds a section about how to configure and use the custom error
views resp. rendering groups.

* Related: `#39423 <http://forge.typo3.org/issues/39423>`_
* Commit: `fcfbc32 <https://git.typo3.org/Packages/TYPO3.Flow.git/commit/fcfbc329a7a1b480f9cb548d9e91933e6d272bf9>`_

[BUGFIX] Add hasRole() to PolicyService
-----------------------------------------------------------------------------------------

The PolicyService needs hasRole() to allow checks for existing roles
without workarounds.

* Fixes: `#47416 <http://forge.typo3.org/issues/47416>`_
* Commit: `43f3584 <https://git.typo3.org/Packages/TYPO3.Flow.git/commit/43f35845e10d127dc216a4163a3a14f1b52c0e46>`_

[BUGFIX] generateUUID can be broken by seeding mt_rand
-----------------------------------------------------------------------------------------

Use randomizer which cannot be seeded / configured by userspace code.

* Resolves: `#46862 <http://forge.typo3.org/issues/46862>`_
* Commit: `3ad59e9 <https://git.typo3.org/Packages/TYPO3.Flow.git/commit/3ad59e9b377520299822c7a907f2134a5407d8a3>`_

[!!!][FEATURE] Skip automatic persistence and CSRF protection for "safe" requests
-----------------------------------------------------------------------------------------

This change set introduces an important behavior for Flow applications:
HTTP request methods which are, by definition, considered to be "safe"
(that is, "read-only") are now treated as such.

In practice it means that GET requests will not trigger a persistAll() call
anymore and CSRF protection for actions is not checked anymore if
the request is a GET request.

Please adjust your applications to cleanly observe this principle since
more optimizations in this direction are planned for later versions of
TYPO3 Flow.

This patch contains the corresponding documentation.

* Resolves: `#47252 <http://forge.typo3.org/issues/47252>`_
* Commit: `f3d285c <https://git.typo3.org/Packages/TYPO3.Flow.git/commit/f3d285c368ce916765721cde523c4b023375f76a>`_

[BUGFIX] Fix exception header in InternalRequestEngine
-----------------------------------------------------------------------------------------

When using the virtual browser in functional tests, the
InternalRequestEngine communicates any exceptions
which occurred during the request by adding special
headers to the HTTP response.

Previously the "X-Flow-ExceptionCode" header contained
exception codes like "#1222268609: ". This patch fixes
the rendering to just the code, like "1222268609".

* Commit: `a5be4aa <https://git.typo3.org/Packages/TYPO3.Flow.git/commit/a5be4aa6daf98ec57d0c3b54e6ef3fb6808abcff>`_

[BUGFIX] Property mapper can again map account roles
-----------------------------------------------------------------------------------------

Due to the type hint in the setter method of roles, the property
mapper was unable to set the converted property.

* Resolves: `#47232 <http://forge.typo3.org/issues/47232>`_
* Commit: `71ba4e0 <https://git.typo3.org/Packages/TYPO3.Flow.git/commit/71ba4e0fa243a7425b00f61554c5dd0ba753ad0a>`_

[BUGFIX] Flow Exception shouldn't be in use statement
-----------------------------------------------------------------------------------------

* Fixes: `#47253 <http://forge.typo3.org/issues/47253>`_
* Commit: `ee91e3f <https://git.typo3.org/Packages/TYPO3.Flow.git/commit/ee91e3f15d5b906aef4e3dbf280cbcc2659b54df>`_

[BUGFIX] System roles don't get a package namespace
-----------------------------------------------------------------------------------------

The role change I39f335baa01fbe9b883e98e85cb1f063bbaf5744
introduced the automatic prepend of the package namespace
where the role has been defined; except for system roles
which are at the moment Anonymous and Everybody.

For ACLs, however, the package namespace has been prepended
also for the system roles. This fixes that behavior.

* Fixes: `#47229 <http://forge.typo3.org/issues/47229>`_
* Related: `#28862 <http://forge.typo3.org/issues/28862>`_

* Commit: `f71d9f1 <https://git.typo3.org/Packages/TYPO3.Flow.git/commit/f71d9f1cd5ccbf7932db166a40fe58db24130bb1>`_

[FEATURE] HTTP method tunneling
-----------------------------------------------------------------------------------------

This change allows the HTTP method to be overridden by the client.
This is especially useful for clients that only support a subset of the
supported methods (e.g. browsers).

The request method can be overridden by specifying a ``__method``
argument. Additionally Flow now respects the ``X-HTTP-Method``
respectively ``X-HTTP-Method-Override`` header.

usage::

	<form method="POST">
		<input type="hidden" name="__method" value="DELETE" />
	</form>

Note::

	The HTTP request method can only be changed for POST requests

* Resolves: `#47137 <http://forge.typo3.org/issues/47137>`_
* Commit: `a297b17 <https://git.typo3.org/Packages/TYPO3.Flow.git/commit/a297b170fba8e97836dc4173cf0a90dbb12d31a1>`_

[!!!][TASK] Adjust logException() signature in LoggerInterface
-----------------------------------------------------------------------------------------

This adds the $additionalData parameter to the signature of the
logException() method.

* Commit: `2f4a691 <https://git.typo3.org/Packages/TYPO3.Flow.git/commit/2f4a691102d19a1fef8a85ceb0c40299c653722d>`_

[TASK] Remove @-operator again in SimpleFileBackend and ClassLoader
-----------------------------------------------------------------------------------------

This change removes the shut-up operator again from include_once()
calls in the ClassLoader and SimpleFileBackend in order to provide
meaningful error messages to the developer if class files or cache
entries were not found.

* Related: `#46689 <http://forge.typo3.org/issues/46689>`_
* Commit: `f04343e <https://git.typo3.org/Packages/TYPO3.Flow.git/commit/f04343e10cef18e3e76bb302b840c1313225b57e>`_

[FEATURE] Static compilation of compile time data
-----------------------------------------------------------------------------------------

Implement a CompileStatic annotation for static methods that will be
evaluated by the proxy builder in production. Update bootstrap and some
classes to enable efficient caching of reflection information and lazy
loading of the reflection service.

Note: It is not possible to give a type hint to those static methods,
since it could be a DependencyProxy that is actually passed.

* Related: `#46371 <http://forge.typo3.org/issues/46371>`_
* Commit: `c632956 <https://git.typo3.org/Packages/TYPO3.Flow.git/commit/c63295652b7f620395266c495e71aa2977ff9837>`_

[TASK] Throw exception on lacking @var annotation
-----------------------------------------------------------------------------------------

In the Validation\\ValidationResolver now an
exception is thrown if the validated
property does not have an @var annotation
which is mandatory.

This prevents a Notice exception when
accessing the not present 'var' key
on the tag values array, and gives instead
a more helpful exception message.

* Commit: `eacd75d <https://git.typo3.org/Packages/TYPO3.Flow.git/commit/eacd75db3f2ec8cd6ddf35f1c986a6aef8d86276>`_

[TASK] Re-add Testing Routes.yaml
-----------------------------------------------------------------------------------------

This partly reverts I9aa80105cf05e675fbb6ca26bd99f377f52254c8
which rendered functional routing tests useless (they are skipped if
the testing routes are not available).

Now, if Flow Subroutes are included in a distribution, Routing tests
will be executed again.

* Commit: `259a6e8 <https://git.typo3.org/Packages/TYPO3.Flow.git/commit/259a6e88078b70cd5164ea7cd106e22ebcef3334>`_

[BUGFIX] Initialize $roleRepository correctly
-----------------------------------------------------------------------------------------

The $roleRepository is set "manually" in initializeRolesFromPolicy() -
only if caches are outdated. But the $roleRepository is needed even if
the caches are up to date, so this breaks.

This change moves the initialization outside the check.

* Fixes: `#47115 <http://forge.typo3.org/issues/47115>`_
* Commit: `ae01fce <https://git.typo3.org/Packages/TYPO3.Flow.git/commit/ae01fce3d26b85934fcec897e0783bc0007e7f88>`_

[BUGFIX] PropertyMapper now normalizes simple types
-----------------------------------------------------------------------------------------

This fixes a bug where the property mapper was unable to find a
valid typeconverter for properties annotated with int or bool.

* Fixes: `#47054 <http://forge.typo3.org/issues/47054>`_
* Commit: `8eca52b <https://git.typo3.org/Packages/TYPO3.Flow.git/commit/8eca52b6c44787b60a210dec1c653ca532326aff>`_

[!!!][FEATURE] Handle roles consistently as objects
-----------------------------------------------------------------------------------------

With this change roles are consistently used as objects.

To prevent naming conflicts between roles from different packages the
package key is added to the role names.

The handling of roles now is more strict and does not allow the use of
not configured (non-existent) roles anymore.

Roles are now referenced as real instances instead of their string
identifiers in models. Roles which were defined in policies are now
automatically mirrored to the RoleRepository (usually stored as a
table in a database).

The getRoles() method has been removed from TokenInterface.

* Resolves: `#28862 <http://forge.typo3.org/issues/28862>`_
* Resolves: `#43578 <http://forge.typo3.org/issues/43578>`_
* Related: `#37451 <http://forge.typo3.org/issues/37451>`_
* Related: `#27698 <http://forge.typo3.org/issues/27698>`_

* Commit: `f0776fb <https://git.typo3.org/Packages/TYPO3.Flow.git/commit/f0776fb3e7c561940617b0011ce36fc3609084f5>`_

[TASK] Cleaned up configuration:validate command
-----------------------------------------------------------------------------------------

* Related: `#44990 <http://forge.typo3.org/issues/44990>`_
* Commit: `3ece55d <https://git.typo3.org/Packages/TYPO3.Flow.git/commit/3ece55dbba9a4dab4ce25ae9d92c3c7f6096e360>`_

[FEATURE] Allow split configuration sources
-----------------------------------------------------------------------------------------

With this change it is possible to allow split configuration sources
when defining a custom configuration type. This allows to use multiple
YAML for a type (when using the bundled YamlSource), which will be
merged together.

* Related: `#37854 <http://forge.typo3.org/issues/37854>`_
* Commit: `fae1b9d <https://git.typo3.org/Packages/TYPO3.Flow.git/commit/fae1b9d96cf4eb9101ff75139e5510f99c450042>`_

[FEATURE] Support for sessionless authentication
-----------------------------------------------------------------------------------------

This feature enables authentication without the need of a session to
be started. This is useful for stateless services (e.g. REST) where
you don't want Flow to create a session cookie.

Authentication tokens which don't rely on a session simply implement
the SessionlessTokenInterface marker interface.

This patch reverts parts of the first implementation of sessionless
authentication introduced in https://review.typo3.org/#/c/18388
(commit I5f86cb7a3a3fff3220d61d705f216e1b1d4f2369).
The original implementation was a breaking change with a few
unresolved side effects.

The implementation contained in this change set is backwards
compatible with already existing authentication tokens which
relied on sessions.

This patch also contains a small speed optimization for the CSRF
Protection pattern which assumes that no account has been
authenticated yet if the Authentication Manager is still a Dependency
Proxy.

* Resolves: `#45282 <http://forge.typo3.org/issues/45282>`_
* Resolves: `#46428 <http://forge.typo3.org/issues/46428>`_

* Commit: `9feb590 <https://git.typo3.org/Packages/TYPO3.Flow.git/commit/9feb5902e1c4ed1b32278b28b6edc0a41a6bb7b9>`_

[BUGFIX] Session: add safeguard against incompatible request handlers
-----------------------------------------------------------------------------------------

This adds additional checks and throws an exception if a session should be
started but the currently active request handler does not implement the
HttpRequestHandlerInterface.

* Resolves: `#44087 <http://forge.typo3.org/issues/44087>`_
* Commit: `9a0715c <https://git.typo3.org/Packages/TYPO3.Flow.git/commit/9a0715c231f715d193c26db1ea8a008727e51adb>`_

[BUGFIX] Reduce side effects of sessions used in functional tests
-----------------------------------------------------------------------------------------

This patch makes sure that once a session has been closed or
destroyed, it will rebuild information determined from the request /
response in case it is started again.

While this scenario (a session is closed and started again during
the same PHP request) is uncommon in real world projects, it may
happen during functional tests. Therefore this is mainly a fix to
reduce side effects in functional tests.

A concrete side effect Flow has without this patch is that session
cookies are set to the HTTP response only when a session was
started the first time.

This patch also adds an explanation about starting / resuming
sessions to the class doc comment.

* Resolves: `#46703 <http://forge.typo3.org/issues/46703>`_
* Resolves: `#44202 <http://forge.typo3.org/issues/44202>`_

* Commit: `2fdafb6 <https://git.typo3.org/Packages/TYPO3.Flow.git/commit/2fdafb69fa403e2bc55c10f9f1d28808dcd0fc6f>`_

[FEATURE] Set packageType when creating new package
-----------------------------------------------------------------------------------------

When calling packageManager->createPackage you have
no way to define what package type you are creating.

This allows for ex. SiteKickstarter to set correct
package type in composer manifest

* Resolves: `#44258 <http://forge.typo3.org/issues/44258>`_
* Commit: `bb742c5 <https://git.typo3.org/Packages/TYPO3.Flow.git/commit/bb742c5ae1ce9060769ac82e27b410a40b36fbca>`_

[BUGFIX] Avoid side effects in APC cache backend
-----------------------------------------------------------------------------------------

When more than one cache was using the APC cache backend, use of the
same entry identifiers would cause side effects, as the frontends would
access the same entries.

This is fixed by including the cache identifier in the prefix hash.

* Fixes: `#44471 <http://forge.typo3.org/issues/44471>`_
* Related: `#38135 <http://forge.typo3.org/issues/38135>`_

* Commit: `b09ea99 <https://git.typo3.org/Packages/TYPO3.Flow.git/commit/b09ea9951de50206ef48ef2f334de6129b0e1a61>`_

[BUGFIX] Fix variable type declaration in Security\\Context
-----------------------------------------------------------------------------------------

The $request member is annotated as being Http\\Request but must be
Mvc\\ActionRequest instead.

* Fixes: `#44743 <http://forge.typo3.org/issues/44743>`_
* Commit: `0a10bdf <https://git.typo3.org/Packages/TYPO3.Flow.git/commit/0a10bdf0db0d285735a98545bf7ca06d55a5f22b>`_

[TASK] Adjust tests to rewritten URLs in functional tests
-----------------------------------------------------------------------------------------

The resolution for #44434 makes Flow behave as if mod_rewrite was
available during functional tests. Some tests checking against
generated URLs need to be adjusted, so they no longer expect it  to
produce links with embedded "index.php".

* Related: `#44434 <http://forge.typo3.org/issues/44434>`_
* Commit: `5d1ed40 <https://git.typo3.org/Packages/TYPO3.Flow.git/commit/5d1ed40f65de3c1d1e1878f7a1207c79dff42d8b>`_

[!!!][BUGFIX] Enable settings override with empty array value
-----------------------------------------------------------------------------------------

This change updates the behavior of arrayMergeRecursiveOverrule such
that empty arrays are also treated as empty values. If you used this
function before it can lead to different results after the change.

Before the change an empty array value was always merged
into the first array, even if emptyValuesOverride was set to TRUE.
With the new behavior an empty array value overrides a given input
value if emptyValuesOverride is set. This allows to override settings
with an empty array in the settings hierarchy.

This change is breaking if your settings hierarchy depends on
empty array values not overriding a parent configuration.

* Resolves: `#36720 <http://forge.typo3.org/issues/36720>`_
* Commit: `abdffa8 <https://git.typo3.org/Packages/TYPO3.Flow.git/commit/abdffa83a03ae660b9a850d87209312cb9843c08>`_

Revert "[FEATURE] Make ArrayConverter map only allowed properties"
-----------------------------------------------------------------------------------------

This reverts commit ed875023d0a980b4192bc01e7307db9efc7d2071
The feature is breaking if you rely on Arrays being converted
as is and it breaks some functional tests. Until a backwards
compatible solution is found the feature is reverted.

* Commit: `bb48029 <https://git.typo3.org/Packages/TYPO3.Flow.git/commit/bb48029a51b1b1c0c1d11e284fb61f8c1448ac3c>`_

[BUGFIX] Reintroduce support for entities with custom id properties
-----------------------------------------------------------------------------------------

This adjusts the pointcut expressions of the PersistenceMagicAspect
to introduce UUID identifiers only to entities that do not contain custom
identifier properties (annotated with @ORM\\Id).

This change also refactors the unit tests and adds functional tests for
the aspect.

* Fixes: `#46883 <http://forge.typo3.org/issues/46883>`_
* Commit: `cd38544 <https://git.typo3.org/Packages/TYPO3.Flow.git/commit/cd38544b443e44eb81b6791f58519588d77f5e68>`_

[TASK] Remove leading backslash in use statement(s)
-----------------------------------------------------------------------------------------

* Commit: `b3473de <https://git.typo3.org/Packages/TYPO3.Flow.git/commit/b3473de3dc4b838f0e111d733fa3805490ae3e77>`_

[TASK] Update contributors list in guide
-----------------------------------------------------------------------------------------

* Commit: `5c96eb1 <https://git.typo3.org/Packages/TYPO3.Flow.git/commit/5c96eb1ed635764b86b6834d14a9edf0fc86e5a7>`_

[TASK] Code cleanup in Error classes
-----------------------------------------------------------------------------------------

* Make proper use of namespace
* Fixes a number of CGL violations
* Fixes other small issues
* Commit: `331b66a <https://git.typo3.org/Packages/TYPO3.Flow.git/commit/331b66a99a8ae24563e8dfe167a028694e777604>`_

[TASK] Two tweaks to the documentation
-----------------------------------------------------------------------------------------

Add a hint on setting the default collation for MySQL and tweak the
installation instructions a tiny bit.

* Commit: `12d062b <https://git.typo3.org/Packages/TYPO3.Flow.git/commit/12d062b88fd9179c4ef2a47fa2b67728cd781718>`_

[BUGFIX] StringLengthValidator should use UTF-8 safe function
-----------------------------------------------------------------------------------------

StringLengthValidator no longer uses strlen to determine the
length of the string to be validated but uses the
Utility\\Unicode\\Functions::strlen method which relies on
mb_string internally.

* Fixes: `#36159 <http://forge.typo3.org/issues/36159>`_
* Commit: `e32d5e6 <https://git.typo3.org/Packages/TYPO3.Flow.git/commit/e32d5e69a6765b36682554c39bb1e4facb8db618>`_

[TASK] Improved exception message for compilation errors
-----------------------------------------------------------------------------------------

This removes the "Execution of subprocess failed with exit code …"
as it distracts from the real problem which only appears later in the
message. Most likely the user / developer is not interested in possible
bugs of the compiler / subprocess.

* Commit: `a18996b <https://git.typo3.org/Packages/TYPO3.Flow.git/commit/a18996b353fe985de686d15856daef7ee9cd4120>`_

[BUGFIX] Allow upload of files without file extension
-----------------------------------------------------------------------------------------

This change allows upload of files without a file extension. The upload
of PHP-Files is still not allowed. The method importUploadedResource
does not have a unit test, since it is not testable through the use of
move_uploaded_file.

* Resolves: `#46536 <http://forge.typo3.org/issues/46536>`_
* Commit: `d17b53c <https://git.typo3.org/Packages/TYPO3.Flow.git/commit/d17b53c61e66ef6555e3f53424cb571b77c048ed>`_

[FEATURE] Support arguments in Scripts::executeCommand
-----------------------------------------------------------------------------------------

Previously it was not supported to have command arguments in a CLI
subcommand. This patch solves this issue by adding a $commandArguments
parameter to the executeCommand() method.

* Resolves: `#46072 <http://forge.typo3.org/issues/46072>`_
* Commit: `aa3f832 <https://git.typo3.org/Packages/TYPO3.Flow.git/commit/aa3f832d698af044aece2f258f2d7af916ac3db1>`_

[TASK] Fix typo in method name
-----------------------------------------------------------------------------------------

The method forceFlushCachesIfNeccessary() is spelled incorrectly, it
should be forceFlushCachesIfNecessary().

* Commit: `34971c3 <https://git.typo3.org/Packages/TYPO3.Flow.git/commit/34971c3ed58f805e127a21281cb8a0610898644d>`_

[BUGFIX] Undefined index breaks logger setup in Production
-----------------------------------------------------------------------------------------

With I6da4763fb94798b1d1647b6108457996a48aa128 the logger used for the
system log was made configurable. In Production context, when cached
settings are used, this breaks after an update - and even --force with a
cache flush does not help.

This change adds a safeguard against the settings not being there.

* Related: `#40738 <http://forge.typo3.org/issues/40738>`_
* Related: `#46053 <http://forge.typo3.org/issues/46053>`_

* Commit: `c3f0cdb <https://git.typo3.org/Packages/TYPO3.Flow.git/commit/c3f0cdbfd21491e8dbd1d1b9240b1a09041dad5d>`_

[BUGFIX] ObjectAccess::getProperty() breaks on \\stdClass due to cache
-----------------------------------------------------------------------------------------

When using getProperty() on \\stdClass instances, the accessor cache
leads to false results - because the class name alone in this case does
not tell anything about the availability of a property.

With this change getProperty() does not use the cache for \\stdClass
anymore.

* Fixes: `#46465 <http://forge.typo3.org/issues/46465>`_
* Commit: `d1fdd2a <https://git.typo3.org/Packages/TYPO3.Flow.git/commit/d1fdd2a3af1a24160e236b15b7529b1e2245c3a4>`_

[BUGFIX] fix ObjectAccess::getProperty() for getters in ArrayAccess objects
-----------------------------------------------------------------------------------------

With I2abbbd5924cd0177ad8a31cb01c2953dd5ba39fd a regression was introduced
that prevented ObjectAccess::getProperty() to work on objects implementing ArrayAccess
and providing custom getters.

Code to reproduce:
\\TYPO3\\Flow\\Reflection\\ObjectAccess::getProperty(new \\ArrayObject(), 'iteratorClass')

expected: "ArrayIterator"
actual: *Exception*

This change fixes this by checking arrays and ArrayAccess objects separately.

* Fixes: `#46491 <http://forge.typo3.org/issues/46491>`_
* Related: `#42723 <http://forge.typo3.org/issues/42723>`_

* Commit: `392020a <https://git.typo3.org/Packages/TYPO3.Flow.git/commit/392020a6c50a832b778423b0e2d8a17a9f2e5d09>`_

[FEATURE] Allow PolyType custom validators to be used
-----------------------------------------------------------------------------------------

This introduces a new PolyTypeObjactValidatorInterface. When building
base validator conjunctions for a type, all implementations of that
interface will be asked if they canValidate() the type.

This enables the writing of custom validators that act on multiple
types.

* Resolves: `#45167 <http://forge.typo3.org/issues/45167>`_
* Commit: `7f51878 <https://git.typo3.org/Packages/TYPO3.Flow.git/commit/7f51878cb4cad29a86fcc4ca64aee1f7b444920f>`_

[BUGFIX] Make the AbstractExceptionHandler check for error_reporting()
-----------------------------------------------------------------------------------------

When the shut-up operator is used in PHP the error_reporting level is
temporarly lowered to 0. The AbstractExceptionHandler does not check
for this, and outputs the exception whenever it is called.

This is a problem when the set_exception_handler method is used, as
PHP will still call those exception handlers even if the shut-up
operator is used. This is why the AbstractExceptionHandler should
check for error_reporting() === 0 and ignore the exception if so.

This change fixes the exit code 255 error during the compile run
which is thrown in the Testing context where we set E_WARNING to
be an exceptional error.

* Resolves: `#46485 <http://forge.typo3.org/issues/46485>`_
* Commit: `f4d459b <https://git.typo3.org/Packages/TYPO3.Flow.git/commit/f4d459b7a1996a8776e5bde760561bcc58ae32d4>`_

[TASK] CGL cleanup of TYPO3.Flow
-----------------------------------------------------------------------------------------

Fixes a list of CGL issues in Flow.

* Commit: `516c3e2 <https://git.typo3.org/Packages/TYPO3.Flow.git/commit/516c3e210ea073fc55466ec1e2b4ee136ade6d98>`_

[!!!][TASK] Cache result of isAuthenticated in AuthenticationProviderManager
-----------------------------------------------------------------------------------------

This change will calculate the result of the authentication in
authenticate() and respect the authentication strategy for the result.
The authenticate() method will be called lazily if not done before.

This is breaking since isAuthenticated() before would behave like the
"at least one token" strategy was used, even the strategy was set to
"all tokens".

* Commit: `44f1409 <https://git.typo3.org/Packages/TYPO3.Flow.git/commit/44f14091dc3fe0bf0982a144705da4026ec563e5>`_

[TASK] Add Unit Tests for Utility\\Algorithms
-----------------------------------------------------------------------------------------

This adds Unit Tests for the Utility\\Algorithms class and its functions.

* Commit: `936ffe9 <https://git.typo3.org/Packages/TYPO3.Flow.git/commit/936ffe938c27361bab71f34c3e7bafbbc2319dad>`_

[TASK] Add default route in functional test for security
-----------------------------------------------------------------------------------------

If the Flow framework routes were not mounted some functional tests
failed due to the request matcher of the TestingProvider. This change
adds the required route programatically. Since the Routes.yaml for
functional tests is not needed anymore it can be removed.

* Commit: `60c09a2 <https://git.typo3.org/Packages/TYPO3.Flow.git/commit/60c09a2b61ba9823d92bf598435dc113b56f3b14>`_

[FEATURE] Make System Logger frontend configurable
-----------------------------------------------------------------------------------------

Move hard coded TYPO3\\FLOW3\\Log\\Logger to Settings.yaml instead. This
allows a user to fully replace the logger instead of just adding or
removing backends.

* Resolves: `#40738 <http://forge.typo3.org/issues/40738>`_ #46053
* Commit: `0c1046e <https://git.typo3.org/Packages/TYPO3.Flow.git/commit/0c1046e9235d55f9273474de8333118ef578bea1>`_

[TASK] Keep roles until tokens get updated
-----------------------------------------------------------------------------------------

* Resolves: `#46352 <http://forge.typo3.org/issues/46352>`_
* Commit: `5241493 <https://git.typo3.org/Packages/TYPO3.Flow.git/commit/5241493c41d0829cb67066e1bfc0cf9d7b1ef8bc>`_

[BUGFIX] Fix getIdentifierByObject for lazy doctrine proxy
-----------------------------------------------------------------------------------------

This bug was introduces with Ib6e1eda1ac38677e84c46a441d099b2c5c1e6e24
and causes the content security functional test to fail. There was no
unit test or other indication for this behaviour, so this change adds
a unit test for the Doctrine persistence manager.

* Commit: `4226319 <https://git.typo3.org/Packages/TYPO3.Flow.git/commit/42263198f3c0ebf3db8d5905638ab6dea8ebc595>`_

[TASK] Remove cache has call in router caching aspect
-----------------------------------------------------------------------------------------

This change removes a call to "has" on the cache frontend, which is not
needed if we want to use the entry with "get". This improves the
performance when building a larger number of URIs.

* Commit: `f614a36 <https://git.typo3.org/Packages/TYPO3.Flow.git/commit/f614a3671acf22c8b2a322a34824daf382a7afe9>`_

[FEATURE] A boolean value Validator
-----------------------------------------------------------------------------------------

A new Validator for validating if a value is a specific
boolean value (TRUE or FALSE). Used with no options it
expects TRUE.
Mainly useful for validating mandatory checkboxes in
forms (like Terms and Conditions).

* Resolves: `#45553 <http://forge.typo3.org/issues/45553>`_
* Commit: `d46b153 <https://git.typo3.org/Packages/TYPO3.Flow.git/commit/d46b153a646fe12fb4eb988d46a277ec366cda40>`_

[TASK] Optimize Validation to improve performance
-----------------------------------------------------------------------------------------

The validation result object traverses the whole result-
tree everytime someone checks for errors, notices or
warnings.

This patch refactors the Result object to cache the result
internally and propagate changes to the parent result object.

In addition the heavy merge actions use this cached
information to prevent unneccesary operations.

Furthermore the validators are reworked to prevent
superfluous object creation.

* Resolves: `#46340 <http://forge.typo3.org/issues/46340>`_
* Commit: `90b4bc4 <https://git.typo3.org/Packages/TYPO3.Flow.git/commit/90b4bc42ab87eaf7ed78a9b0f1fcbc54b3ea304e>`_

[TASK] Use property injection where possible
-----------------------------------------------------------------------------------------

This change refactors setter injection to property injection to allow
lazy dependency injection.

* Commit: `9ed19b5 <https://git.typo3.org/Packages/TYPO3.Flow.git/commit/9ed19b5ced8edf727bdf4b523e7f1fbdb514c865>`_

[TASK] Optimize I18N service
-----------------------------------------------------------------------------------------

This change makes the I18N service usable for lazy loading by removing
it from the default runtime. Additionally the Locale class is marked
as non-proxyable to prevent calls to the wakeup function.

* Commit: `9c2f9ee <https://git.typo3.org/Packages/TYPO3.Flow.git/commit/9c2f9ee7d1dcffb19f11a7f2470adc4562474e28>`_

[!!!][FEATURE] Lazy Dependency Injection
-----------------------------------------------------------------------------------------

This introduces lazy dependency injection for dependencies injected
through Property Injection. Instead of loading the respective class
and instantiating the dependency right away, a proxy object is
injected which automatically replaces itself with the real dependency
once a method is called on it.

The @Inject annotation now accepts an optional argument "lazy" which
allows for turning off lazy dependency injection in specific cases.

Please read the new section in the Object Management chapter of
the Flow manual, included in this change set.

* Resolves: `#43819 <http://forge.typo3.org/issues/43819>`_
* Commit: `ff8608f <https://git.typo3.org/Packages/TYPO3.Flow.git/commit/ff8608f1c296d7cfe8865e629f6d0cdf07a67e61>`_

[TASK] Remove file_get_contents call in Cache FileBackend
-----------------------------------------------------------------------------------------

* Fixes: `#46343 <http://forge.typo3.org/issues/46343>`_
* Commit: `4607e58 <https://git.typo3.org/Packages/TYPO3.Flow.git/commit/4607e589f45ac501c7308d483a84b467ac155938>`_

[TASK] Change order of accessing identity in getIdentifierByObject
-----------------------------------------------------------------------------------------

This change improves the performance of getIdentifierByObject since
the EntityManager contains method is rather slow.

* Commit: `4b4548f <https://git.typo3.org/Packages/TYPO3.Flow.git/commit/4b4548f84a8f2820c4ef29dc145397dda37e1eb8>`_

[TASK] Use include with shutup instead of file_exists
-----------------------------------------------------------------------------------------

This change uses include with shutup operator instead of file_exists
checks for optimized performance.

* Fixes: `#46337 <http://forge.typo3.org/issues/46337>`_
* Commit: `70a092b <https://git.typo3.org/Packages/TYPO3.Flow.git/commit/70a092b9b7bfa4ae904bbc027135fec7f2df00d5>`_

[BUGFIX] Compile original and proxy class into one file
-----------------------------------------------------------------------------------------

Reduce amount of file inclusions by combining original class
code and proxy class code into the same file as both need to
be loaded anyway.

* Fixes: `#46338 <http://forge.typo3.org/issues/46338>`_
* Commit: `7a00ec8 <https://git.typo3.org/Packages/TYPO3.Flow.git/commit/7a00ec8a46f4ce549513303fbbe749fd38c51d98>`_

[BUGFIX] Remove unneeded filesystem calls
-----------------------------------------------------------------------------------------

This change removes a call to is_dir in the FileMonitor
which is duplicate as the ReadDirectoryRecursively does
exactly the same and throws an error in this case.

Also 2 calls to file_exists are removed as they're not
necessary at this point as filemtime() will just return
FALSE if something goes wrong.

* Resolves: `#46290 <http://forge.typo3.org/issues/46290>`_
* Commit: `203534c <https://git.typo3.org/Packages/TYPO3.Flow.git/commit/203534c808fc5514829692be63c031ed2126bca9>`_

[BUGFIX] Add Flow-Doctrine cache adapter
-----------------------------------------------------------------------------------------

This adds a cache adapter for Doctrine. It is used for the Doctrine ORM
metadata and query cache instead of the ArrayCache used until now.

Until now the cache implementations of Doctrine that could be configured
were not usable. This change fixes that, so that actually a cache for
metadata and query caching is used.

* Fixes: `#45264 <http://forge.typo3.org/issues/45264>`_
* Commit: `5e5ebf3 <https://git.typo3.org/Packages/TYPO3.Flow.git/commit/5e5ebf31970c572b49fc73f87832f351248f899f>`_

[BUGFIX] Flow Bootstrap now works if PhpUnit is used as Phar file
-----------------------------------------------------------------------------------------

If PhpUnit was used as a Phar file, the Flow Core Bootstrap failed
during initialization in Testing context because it tried to find
PhpUnit's autoloader. Since autoloading is already in effect when
using the Phar version, a simple check for the existence of a
PhpUnit class is sufficient.

* Commit: `7b9a935 <https://git.typo3.org/Packages/TYPO3.Flow.git/commit/7b9a93553ac9e6dacf3f9aa0c7075f8f31b3daf7>`_

[TASK] Make Aspects singletons
-----------------------------------------------------------------------------------------

* Commit: `90cdde4 <https://git.typo3.org/Packages/TYPO3.Flow.git/commit/90cdde464b91bfebcbbea276415a134676f41b56>`_

[TASK] Allow package key wildcards for excludeClasses
-----------------------------------------------------------------------------------------

The object.excludeClasses setting can now handle a trailing * as a
wildcard character in the package key.

* Commit: `a381478 <https://git.typo3.org/Packages/TYPO3.Flow.git/commit/a381478b3eddbfdc5f253f7111f504eba808e04f>`_

[BUGFIX] Exception thrown in TypeHandling (follow up)
-----------------------------------------------------------------------------------------

When using isCollectionType() on an string, a warning is thrown.
The change id Iae59221cbd72677e6c18ad0a383792a798447253 introduced this.

* Resolves: `#45876 <http://forge.typo3.org/issues/45876>`_
* Commit: `5772372 <https://git.typo3.org/Packages/TYPO3.Flow.git/commit/5772372b5dcb5e3c7b1a24443a8db12a76bd0766>`_

[TASK] Some cleanup to cache related classes
-----------------------------------------------------------------------------------------

Non-functional changes to enhance CGL compliance and fix some typos.

* Commit: `258afd3 <https://git.typo3.org/Packages/TYPO3.Flow.git/commit/258afd36f20e3735e9b7b9ff753880938073151f>`_

[BUGFIX] Flow CLI again works for Windows command prompt
-----------------------------------------------------------------------------------------

Probably introduced with Ibd70e2dc8ff3a958a33ad0eb422060dc0fd8b799,
the Flow CLI call via the provided .bat file didn't work anymore
because the used ``$_SERVER['PHP_SELF']`` will behave differently
for the flow shell and the flow.bat file: in case of the shell,
the actual ``Scripts/flow.php`` file will be *included*, while in
case of the .bat file, the ``Scripts/flow.php`` file is immediately
called with PHP. This results in a different PHP_SELF value.

The ``FLOW_ROOTPATH`` value which has to be determined, now is built
manually in case of a ``DIRECTORY_SEPARATOR`` equaling a
Windows one.

Additionally, in order to still allow calling the flow executable
from arbitrary locations also for Windows, the flow.bat file
is adjusted a bit in order to not rely on being at the root
path when calling the file.

* Fixes: `#44000 <http://forge.typo3.org/issues/44000>`_
* Related: `#31642 <http://forge.typo3.org/issues/31642>`_

* Commit: `6a4c6df <https://git.typo3.org/Packages/TYPO3.Flow.git/commit/6a4c6dfbb624a10fc4c73e37a0c53a63e60979bd>`_

[TASK] Use composer/installers instead of own fork
-----------------------------------------------------------------------------------------

* Commit: `1721c14 <https://git.typo3.org/Packages/TYPO3.Flow.git/commit/1721c1423fd3cb8f4228019af4bb504e2233aeaa>`_

[BUGFIX] Exception thrown in TypeHandling
-----------------------------------------------------------------------------------------

When using isCollectionType() on an unknown class, an exception is
caused by a warning PHP gives about that class being unknown.

The issue has been introduced together with the patch
I007b0faf486680ecfb2fe7c753ef4cabcf6d618c

This adds a check that the element is a known class before using
is_subclass_of() to prevent the exception.

* Fixes: `#45876 <http://forge.typo3.org/issues/45876>`_
* Commit: `57a78d3 <https://git.typo3.org/Packages/TYPO3.Flow.git/commit/57a78d3b789f24393f66a996faa62f28b469fefe>`_

[TASK] Remove Configuration\\Source\\SourceInterface
-----------------------------------------------------------------------------------------

It is unused and switching sources is not supported any longer.

* Commit: `34f5d44 <https://git.typo3.org/Packages/TYPO3.Flow.git/commit/34f5d44b126078fffb16a941e7536c2dc2d9d7d8>`_

[TASK] Tweak some unit tests
-----------------------------------------------------------------------------------------

Basically a non-functional change that simply gets rid of some
warnings and a skipped test.

* Commit: `a25a8b5 <https://git.typo3.org/Packages/TYPO3.Flow.git/commit/a25a8b59ad7b5b98cf8d323317c509b2c4ec4ea9>`_

[FEATURE] Make ArrayConverter map only allowed properties
-----------------------------------------------------------------------------------------

With this change the ArrayConverter only maps allowed and not skipped
keys from source to target. Of no PropertyMappingConfiguration is given,
it returns the unchanged source array (as before).

* Resolves: `#46061 <http://forge.typo3.org/issues/46061>`_
* Commit: `ed87502 <https://git.typo3.org/Packages/TYPO3.Flow.git/commit/ed875023d0a980b4192bc01e7307db9efc7d2071>`_

[FEATURE] Allow unknown / disallowed properties to be skipped
-----------------------------------------------------------------------------------------

This adds skipUnknownProperties() and skipProperties() to the
PropertyMappingConfiguration. If configured to skip all unknown or the
given properties, the PropertyMapper will not throw an error if they
are found in the source when doing property mapping.

* Resolves: `#46048 <http://forge.typo3.org/issues/46048>`_
* Commit: `162f676 <https://git.typo3.org/Packages/TYPO3.Flow.git/commit/162f676d59931b67a5e591ff87981a2a7bb17253>`_

[BUGFIX] Keep array keys with nested _descendAll in JsonView
-----------------------------------------------------------------------------------------

When nesting _descendAll the JsonView discards array keys. This change
fixes that.

* Fixes: `#46046 <http://forge.typo3.org/issues/46046>`_
* Commit: `090dd30 <https://git.typo3.org/Packages/TYPO3.Flow.git/commit/090dd30ba8b6b8e34993a5cb3bbe393f2f77e145>`_

[TASK] Tiny tweaks to security documentation
-----------------------------------------------------------------------------------------

Some markup fixes to the security chapter.

* Commit: `9296c2e <https://git.typo3.org/Packages/TYPO3.Flow.git/commit/9296c2e94e749d08d887e89d7bdeeb13b6ba4683>`_

[BUGFIX] Fix security related functional tests
-----------------------------------------------------------------------------------------

With the fix related to "sessionless authentication"
(I5f86cb7a3a3fff3220d61d705f216e1b1d4f2369) settings have been
adjusted in order to use the testing provider & token only for requests
matching a ControllerObjectName of "TYPO3\\Flow\\Tests\\.*".

This change adjusts the tests accordingly.

* Related: `#45282 <http://forge.typo3.org/issues/45282>`_
* Resolves: `#45953 <http://forge.typo3.org/issues/45953>`_

* Commit: `bd46c61 <https://git.typo3.org/Packages/TYPO3.Flow.git/commit/bd46c6127889ae27c6b9848d624bcfbb89ef1433>`_

[TASK] Some translation corrections and addition of French
-----------------------------------------------------------------------------------------

* Add new trans-unit id and new target-language fr translation
  for ValidationErrors.xlf

* Add new file and new target-language fr for translation
  for Main.xlf

* Resolves: `#45279 <http://forge.typo3.org/issues/45279>`_
* Commit: `f35d572 <https://git.typo3.org/Packages/TYPO3.Flow.git/commit/f35d572f2462377403090835a52091bc6a67ed36>`_

[BUGFIX] Constants use in YAML Configuration maintains type
-----------------------------------------------------------------------------------------

If a constant expression in the YAML configuration is used,
for example ``foo: '%PHP_VERSION_ID%'``, and the value
exclusively represents this constant (i.e. no additional string
concatenation like ``path: '%FLOW_PATH_DATA%Logs/Exception'``),
the value is substituted directly in order to maintain the initial
type of the constant.

Prior to this, a ``str_replace`` was done which resulted in a string
in every case no matter if the constant was meant to be an integer,
for example.

* Fixes: `#45864 <http://forge.typo3.org/issues/45864>`_
* Commit: `e2e7e50 <https://git.typo3.org/Packages/TYPO3.Flow.git/commit/e2e7e50c30ac512393095ee3bca008c4fc13e4fb>`_

[FEATURE] Routing: Nested SubRoutes
-----------------------------------------------------------------------------------------

With this change it's possible to load SubRoutes from other SubRoutes.
The syntax is the same as before with two additions:

1. You can specify a ``suffix`` in order to load a SubRoute from
    a different file than the default ``Routes.yaml``
2. You can set ``variables`` that will be replaced in the merged SubRoutes

Usage::

  -
    name: 'Product'
    uriPattern: 'products/<EntitySubroutes>'
    defaults:
      '@package':    'My.Package'
      '@controller': 'Product'
    subRoutes:
      'EntitySubroutes':
        package: 'MyPackage.RestTest'
         # load SubRoutes from My.Package/Configuration/Routes.Entity.yaml
        suffix:  'Entity'
         # replace placeholder "<entityName>" with "product":
        variables:
          'entityName': 'product'

* Resolves: `#43966 <http://forge.typo3.org/issues/43966>`_
* Commit: `15788c4 <https://git.typo3.org/Packages/TYPO3.Flow.git/commit/15788c42ed75d02ed48f277a58fb8f4748ff3677>`_

[!!!][FEATURE] Support for "sessionless authentication"
-----------------------------------------------------------------------------------------

This feature enables authentication without the need of a session to be started.
This is useful for stateless services (e.g. REST) where you don't want Flow to create
a session cookie.

This is a breaking change if you created a custom authentication provider or -token
and relied on the fact that AuthenticationProvider::authenticate() started a session.
With this change the session is started when AuthenticationToken::updateCredentials() is
called. This way the token can decide if it needs a session.
Just add a @Flow\\Session(autoStart=true) to the updateCredentials() method if your custom
token relies on a session.

* Resolves: `#45282 <http://forge.typo3.org/issues/45282>`_
* Commit: `7d79b80 <https://git.typo3.org/Packages/TYPO3.Flow.git/commit/7d79b800d4237a359d3876a69538078dc2298d18>`_

[BUGFIX] Routing includes object arguments even though it should not
-----------------------------------------------------------------------------------------

Route::resolve() considered "__identity" arguments as internal and ignored them,
if they were not part of the respective Route defaults or uriPattern.
This change fixes this by only iterating through sub requests (marked with a "--")

* Fixes: `#45463 <http://forge.typo3.org/issues/45463>`_
* Commit: `85ceb84 <https://git.typo3.org/Packages/TYPO3.Flow.git/commit/85ceb84ea05f54a77748f2f55b521a712eebbd6d>`_

[TASK] Clean up JsonView and JsonViewTest internals
-----------------------------------------------------------------------------------------

Fix docblock and add array type hint to $configuration argument of
transformValue() and transformObject(); fix language in JsonViewTest
test names.

A tiny, non-functional change to Http\\Message is included.

* Commit: `70bd32e <https://git.typo3.org/Packages/TYPO3.Flow.git/commit/70bd32eb6242f47f1075b2d5438dd30993f29eec>`_

[BUGFIX] Fix composer requirements
-----------------------------------------------------------------------------------------

This fixes some requirements that were a bit too relaxed (due to a
misunderstanding when introducing composer to Flow).

* Commit: `5d68589 <https://git.typo3.org/Packages/TYPO3.Flow.git/commit/5d68589e8244eba5e6e7ca2e9c040673770f55b2>`_

[BUGFIX] Account's expirationDate can be set NULL
-----------------------------------------------------------------------------------------

After setting the expirationDate once, it's impossible to set it
NULL again due to the typehint in the function parameters.

* Fixes: `#45629 <http://forge.typo3.org/issues/45629>`_
* Commit: `f350533 <https://git.typo3.org/Packages/TYPO3.Flow.git/commit/f350533c6f15e35dacd038e601e56443eae14a97>`_

[BUGFIX] Flow should work with PHP versions lower than 5.3.9
-----------------------------------------------------------------------------------------

The change Ia42e374202845dfe5e95c72512e9fefb4f00e789 introduced
usage of is_a() with 3 arguments which is only implemented from
PHP 5.3.9. This change replaces the call with a manual check for
inheritance.

* Related: `#32829 <http://forge.typo3.org/issues/32829>`_
* Commit: `45ea227 <https://git.typo3.org/Packages/TYPO3.Flow.git/commit/45ea227709db707db3165e4b46c68834e8b671d8>`_

[BUGFIX] Mapping to subtype with [__type] fails
-----------------------------------------------------------------------------------------

The type of a target object can be manipulated by setting __type in the
form (or during action initialization when saving the form). This
however fails if the target subclass contains fields that the original
class does not have, because the property mapping is done before the
final class is extracted from the __type request variable.

To get this working, the process of getting the final class name is
moved before the property mapping.

If you wrote your own type converters, you might need to implement the
new getTargetTypeForSource() method if you do not extend the provided
AbstractTypeConverter of Flow.

* Fixes: `#32829 <http://forge.typo3.org/issues/32829>`_
* Commit: `8199795 <https://git.typo3.org/Packages/TYPO3.Flow.git/commit/81997950b7819d9bc7938ee79dcc9aaedab6dcdc>`_

[BUGFIX] Correctly handle boolean values with property injection
-----------------------------------------------------------------------------------------

This change fixes a bug in the property injection where an empty string
or 1 are used for representing a boolean value. This change forces the
value to be TRUE or FALSE when the value configured in Objects.yaml
is a boolean value.

* Resolves: `#45413 <http://forge.typo3.org/issues/45413>`_
* Commit: `206c737 <https://git.typo3.org/Packages/TYPO3.Flow.git/commit/206c7371dac8d67fec6180a24098cff6cbf42f4f>`_

[FEATURE] Allow influencing ini usage for sub process
-----------------------------------------------------------------------------------------

With a newly introduced configuration directive
``TYPO3.Flow.core.subRequestPhpIniPathAndFilename`` it
is now possible to control whether to use an ini file
or not for sub processes. The allowed values for this
setting might either be NULL or not set to use the
parent process' ini file; or might be a path to a
specific ini file.

If this setting is set to ``false``, no explicit ini file
will be used for sub processes.

Additionally, this patch refactory the actual command
generation out of the execution method in order to make
it unit-testable, which is also included in this patch.

* Resolves: `#45178 <http://forge.typo3.org/issues/45178>`_
* Commit: `577d51c <https://git.typo3.org/Packages/TYPO3.Flow.git/commit/577d51cc4fd89d4c6274b713b346cb8e07650685>`_

[TASK] Cosmetic cleanup of security sub package
-----------------------------------------------------------------------------------------

Non-functional adjustments adding type hints & fixing doc comments
in order to reduce code warnings in Security sub package.

* Commit: `d74b086 <https://git.typo3.org/Packages/TYPO3.Flow.git/commit/d74b0863d6555925275b17d364f646c79c18a5c1>`_

[FEATURE] Command to list registered type converters
-----------------------------------------------------------------------------------------

For debugging and informational purposes, this provides
a command ``flow:typeconverter:list`` that lists the
currently active type converters known to the Flow
instance.

* Commit: `3b17b18 <https://git.typo3.org/Packages/TYPO3.Flow.git/commit/3b17b1835c082405ba738fd9bbd29ea3fe3fdc19>`_

[BUGFIX] Dependency Injection: safeguard for malformed DocBlocks
-----------------------------------------------------------------------------------------

This adds a safeguard to the Dependency Injection Proxy Class Builder
which previously ended with a fatal error if client code contained a
malformed DocBlock

* Resolves: `#45219 <http://forge.typo3.org/issues/45219>`_
* Commit: `abcdf94 <https://git.typo3.org/Packages/TYPO3.Flow.git/commit/abcdf940f2236db11ddec3d478fa43e377253ff6>`_

[BUGFIX] Correct method listing of cache FrontendInterface
-----------------------------------------------------------------------------------------

The documented listing of the method the cache's FrontendIterface
supports is now in sync with the actually supported methods.

* Commit: `867ecc7 <https://git.typo3.org/Packages/TYPO3.Flow.git/commit/867ecc74d7124048e92dfcab9990e848adf86c32>`_

[!!!][TASK] Remove canValidate() from GenericObjectValidator
-----------------------------------------------------------------------------------------

The canValidate() method on the GenericObjectValidator has been around
for years in various forms, but is not used anymore.

Marked as breaking because it had been annotated as @api for no real
reason.

* Commit: `7d466f2 <https://git.typo3.org/Packages/TYPO3.Flow.git/commit/7d466f2a5b1bd44aa9c09178b9ce7690710f672a>`_

[TASK] Fix rendering date in documentation index
-----------------------------------------------------------------------------------------

The change in I6de5923f7277b728debd29f29a43e4f8aac2b99d did nest markup,
so the "today" was not expanded.

* Commit: `753b6cd <https://git.typo3.org/Packages/TYPO3.Flow.git/commit/753b6cdf61a3231e7bbdd99e18363d0f91f86657>`_

[TASK] Add custom configuration types documentation
-----------------------------------------------------------------------------------------

In change I16b1de8e7c3ec826240c273a87c5e2a095815a86 the option to use
custom configuration types was added.

This change adds the missing documentation for that feature.

* Related: `#37854 <http://forge.typo3.org/issues/37854>`_
* Commit: `9c5e31b <https://git.typo3.org/Packages/TYPO3.Flow.git/commit/9c5e31b69e6e3a48d03f2ffa682fc69579b20e48>`_

[TASK] Add rendering date to documentation index
-----------------------------------------------------------------------------------------

* Commit: `9815a45 <https://git.typo3.org/Packages/TYPO3.Flow.git/commit/9815a450cc7d8a574d9f0fad1580235df0c6acb1>`_

[BUGFIX] Redirect instead of raising "Entity not found" exception
-----------------------------------------------------------------------------------------

If you are logged in into a secured Flow project and delete the
corresponding db user (for whatever reasons) an exception "Entity not
found" is raised and not caught.

With this change the exception is caught and instead PolicyEnforcement
will throw an AuthenticationRequiredException, usually calling a
redirect to the configured login page.

* Resolves: `#29907 <http://forge.typo3.org/issues/29907>`_
* Commit: `940f56d <https://git.typo3.org/Packages/TYPO3.Flow.git/commit/940f56d124705ba86d13a3ff0bfc48b406b0c42c>`_

[!!!][BUGFIX] Expose timezone in JsonView's DateTime output
-----------------------------------------------------------------------------------------

This corrects the string formatting in JsonView regarding
DateTime objects. The additionally required Timezone offset
is appended as of ISO 8601 in order to not lead into timezone
issues after transferring the resulting JSON.

This is breaking in cases where the original incorrect behaviour
was worked around by subsequent processing of the transmitted
timestamp.

* Fixes: `#44997 <http://forge.typo3.org/issues/44997>`_
* Commit: `e5ed0ff <https://git.typo3.org/Packages/TYPO3.Flow.git/commit/e5ed0ff7d36706c4e13bcb4789392dfe99f3759e>`_

[FEATURE] Add unique entity validator
-----------------------------------------------------------------------------------------

This adds a validator for ensuring uniqueness of submitted
entities. It uses the entity identity properties to determine
the uniqueness of the entity. Made with intended use in create
& update actions using the action parameter validation.

* Resolves: `#44622 <http://forge.typo3.org/issues/44622>`_
* Commit: `7ee3832 <https://git.typo3.org/Packages/TYPO3.Flow.git/commit/7ee3832c0769511f6804bafd9f770d4b6c1e322e>`_

[TASK] Tweak figures used in documentation
-----------------------------------------------------------------------------------------

Tweaks image inclusions in the sources and fixes some tiny markup
errors along the way.

* Related: `#44885 <http://forge.typo3.org/issues/44885>`_
* Commit: `b944d91 <https://git.typo3.org/Packages/TYPO3.Flow.git/commit/b944d9190e44484723eb2a65186add12ae341085>`_

[BUGFIX] Fix security-related functional test failures, part 2
-----------------------------------------------------------------------------------------

The change I724c1b352dd1807ba53b1e336f2d90e90360ff4d introduced some
test failures. This change takes care of the failing functional tests.

It does that by:

* setting the "current request" again after a call to clearContext() in
  ContentSecurityTest
* adjusting the expected exception in MethodSecurityTest in two places

This is a followup to I353e2cba11473cf9ddef82f96b6a79d9d6fefbba which
was broken after having fixed those already.

* Related: `#42601 <http://forge.typo3.org/issues/42601>`_
* Fixes: `#44765 <http://forge.typo3.org/issues/44765>`_

* Commit: `56c6d85 <https://git.typo3.org/Packages/TYPO3.Flow.git/commit/56c6d852cdc7bc3faea8070708be6cd68bfc5cb9>`_

[BUGFIX] Fix security-related functional test failures
-----------------------------------------------------------------------------------------

The change I724c1b352dd1807ba53b1e336f2d90e90360ff4d introduced some
test failures. This change takes care of the failing functional tests.

It does that by:

* changing the order in which security is set up in the
  FunctionalTestCase provided by Flow.
* setting the "current request" again after a call to clearContext() in
  ContentSecurityTest
* adjusting the expected exception in MethodSecurityTest in two places
* Fixes: `#44765 <http://forge.typo3.org/issues/44765>`_
* Related: `#42601 <http://forge.typo3.org/issues/42601>`_
* Commit: `55a312f <https://git.typo3.org/Packages/TYPO3.Flow.git/commit/55a312f28997fc4a06914ba0279db4ae57219de4>`_

[TASK] Adjust reST documentation for docs.typo3.org
-----------------------------------------------------------------------------------------

Moves images around, adjust sources as needed, add Settings.yml.

Some source syntax fixes along the way.

* Resolves: `#44885 <http://forge.typo3.org/issues/44885>`_
* Commit: `60d8f31 <https://git.typo3.org/Packages/TYPO3.Flow.git/commit/60d8f3191819cdf70d21dae5cb23c96bde51a24f>`_

[TASK] Add @api tags for methods in Resource
-----------------------------------------------------------------------------------------

This just adds missing @api tags to those methods we support as part of
the API.

* Commit: `5e248b0 <https://git.typo3.org/Packages/TYPO3.Flow.git/commit/5e248b0e79fa1ff978ba2c26bed3b6b1edc40c7c>`_

[BUGFIX] Fix high memory consumption of renderObjectDump()
-----------------------------------------------------------------------------------------

This change reduces the maximum recursion level for Doctrine Collection
dumps from 12 to 3. This reduces memory consumption during exception
handling and when using \\TYPO3\\Flow\\var_dump().

* Fixes: `#44278 <http://forge.typo3.org/issues/44278>`_
* Commit: `261af72 <https://git.typo3.org/Packages/TYPO3.Flow.git/commit/261af722510782a060ca78f49f7d730709e27064>`_

[BUGFIX] Throw exception when using options with singleton validators
-----------------------------------------------------------------------------------------

Validators being singleton must not be called with options because
the options are then inherent properties of the Validator and cannot
be executed subsequently with other options.

An exception is thrown if such a case occurs because it is then
a design mistake of the developer.

Besides, this improves the namespace use a bit.

* Fixes: `#34872 <http://forge.typo3.org/issues/34872>`_
* Commit: `5f1f59b <https://git.typo3.org/Packages/TYPO3.Flow.git/commit/5f1f59bda711607bcaf7bf63098ba53ff6c159af>`_

[BUGFIX] Fix security-related unit test failures
-----------------------------------------------------------------------------------------

The change I724c1b352dd1807ba53b1e336f2d90e90360ff4d introduced some
test failures. This change takes care of the failing unit tests.

* Related: `#42601 <http://forge.typo3.org/issues/42601>`_
* Commit: `9a3433d <https://git.typo3.org/Packages/TYPO3.Flow.git/commit/9a3433d938110b57052d2a6bce81963368d7eeb2>`_

[TASK] Adds a documentation tip to keep type hinting
-----------------------------------------------------------------------------------------

This adds a tip to the PropertyMapping documentation
in relation to the MVC stack; mentioning how to not
lose type hinting capabilities due to index-accessing
controller's ``arguments`` array.

* Commit: `5fb83bd <https://git.typo3.org/Packages/TYPO3.Flow.git/commit/5fb83bd67dc25762ae356ce8344ec9a6855e6524>`_

[FEATURE] Support streams as Request content
-----------------------------------------------------------------------------------------

This patch enhances the setContent() method of the HTTP Request class
to accept stream resources, additionally to plain strings. Additionally
the CurlEngine now detects a stream and takes advantage of cURL's INFILE
feature.

That way (bigger) files can bypass PHP when sent through a request with
cURL.

* Resolves: `#44730 <http://forge.typo3.org/issues/44730>`_
* Commit: `c958024 <https://git.typo3.org/Packages/TYPO3.Flow.git/commit/c958024417ffc8ee2fb7104a338f51ba7b1a541e>`_

[BUGFIX] The security context is only allowed to be initialized after routing took place
-----------------------------------------------------------------------------------------

This bugfix solves the root-cause for the following two symptoms:

* two logins needed in Neos until the Site is shown
* if the Flow_Mvc_Routing_FindMatchResults cache is deactivated completely,
  the login does not work at all.

The problem is as follows:

* The security context needs the current *request* for working properly;
  such that it can separate the active and inactive tokens correctly in
  \\TYPO3\\Flow\\Security\\Context::separateActiveAndInactiveTokens()

* The current request is built during *routing*. Thus, the routing mechanism
  (f.e. RoutePart handlers) is not allowed to access the Security Context
  in any way. If it does (like in this example), things might break in various
  ways.

* For Neos, the following call chain takes place:

	* Routing
	* FrontendNodeRoutePartHandler->matchValue line 51
	* NodeService->getNodeByContextNodePath() line 57
	* new ContentContext() calls "initializeObject"
	* ContentContext->initializeObject does $this->domainRepository->findByHost()
	* this internally uses Repository->findAll()
	* this executes the *TYPO3\\Flow\\Security\\Aspect\\PersistenceQueryRewritingAspect->rewriteQomQuery*
	* because Neos has policy entries for entities (TYPO3\\TYPO3CR\\Domain\\Model\\Node),
	  $this->securityContext->initialize() is called, WITHOUT HAVING A
	  REQUEST SET BEFORE.

	* This results in a half- and wrongly-initialized Security Context
	  set up, with activeTokens not properly set, and also only the
	  standard roles assigned ("Everybody").
	* Thus, the check in TYPO3\\Neos\\Controller\\Frontend\\NodeController->showAction() fails:
	    $this->accessDecisionManager->decideOnResource('TYPO3_Neos_Backend_BackendController');
	* This redirects the user back to the login ($this->redirect('index', 'Login'))

	* Now, if the routing cache is activated, the aspect kicks in (in
	  the second iteration) and directly returns the match result, without
	  triggering a database query before.

Thus, we need to enforce that the security context is not initialized during
the routing phase.

The attached patch is just a quick fix; with not really the clean solution.
But at least it works and the problem is properly described ;-)

This is a follow-up to issue #42601; where the according code has been
implemented.

* Commit: `ce08c30 <https://git.typo3.org/Packages/TYPO3.Flow.git/commit/ce08c301e116f3e775657a977c3f1bc3ee4fcad3>`_

[BUGFIX] Adjust YAML schemas to latest changes
-----------------------------------------------------------------------------------------

the CLI command "./flow configuration:validate" currently reports
invalid configuration for type "Settings" and "Objects" due to
outdated schema files.
This adjust respective schemas to recent Flow changes.

* Fixes: `#44602 <http://forge.typo3.org/issues/44602>`_
* Commit: `911e281 <https://git.typo3.org/Packages/TYPO3.Flow.git/commit/911e281962d0c2312d0718daa29a8c8d44bce064>`_

[BUGFIX] Check inheritance in TypeHandling::isCollectionType()
-----------------------------------------------------------------------------------------

With this change TypeHandling::isCollectionType() does consider
inheritance when it comes to the checking it does. Thus a subclass of
SplObjectStorage or an implementation of Doctrine's Collection interface
will now be seen as a collection type.

* Fixes: `#44535 <http://forge.typo3.org/issues/44535>`_
* Commit: `54d4fe9 <https://git.typo3.org/Packages/TYPO3.Flow.git/commit/54d4fe931c3038d7da960a849ecda932e2f13dcc>`_

[BUGFIX] Implement case-sensitivity switch for Query::equals()
-----------------------------------------------------------------------------------------

That was left as a todo and never done. Now it is possible to check
case-insensitive. Checking case-sensitive works depending on database
support, it can only be done if the database allows for case-sensitive
checking.

The change also trivially solves a todo about NULL checking in equals().

* Fixes: `#44520 <http://forge.typo3.org/issues/44520>`_
* Commit: `61ae445 <https://git.typo3.org/Packages/TYPO3.Flow.git/commit/61ae4455c6c403e20f34af0e1c49f6ce83ad8ee0>`_

[BUGFIX] Make use of DateTimeValidator possible
-----------------------------------------------------------------------------------------

When one used Validate(type="DateTime") the ValidatorResolver would try
to use DateTime as the validator itself. This change fixes that.

* Fixes: `#40449 <http://forge.typo3.org/issues/40449>`_
* Commit: `0a4f1ca <https://git.typo3.org/Packages/TYPO3.Flow.git/commit/0a4f1ca4260156fd981bf642048e3f825158887a>`_

[FEATURE] Add setOption() to CurlEngine
-----------------------------------------------------------------------------------------

This allows to configure cURL in the CurlEngine. Examples for use are
proxy server settings or SSL certification handling::

 $engine = new CurlEngine();
 $engine->setOption(CURLOPT_PROXY, '127.0.0.1');
 $engine->setOption(CURLOPT_PROXYPORT, 8888);

In addition the singleton scope of the CurlEngine is removed.

* Resolves: `#43903 <http://forge.typo3.org/issues/43903>`_
* Commit: `1c2e454 <https://git.typo3.org/Packages/TYPO3.Flow.git/commit/1c2e454ee4a4572f909536b2141caf70b088c938>`_

[FEATURE] API to access prefixed identifier in cache backend
-----------------------------------------------------------------------------------------

In case where we need to share cache between different application, it's
needed to access the prefixed identifier to allow the other application
to access the cache entry.

* Resolves: `#43960 <http://forge.typo3.org/issues/43960>`_
* Commit: `0bc3465 <https://git.typo3.org/Packages/TYPO3.Flow.git/commit/0bc34652f314b93cec8719b47889d627ac9bb724>`_

[BUGFIX] Fix git error with "core:migrate --status" command
-----------------------------------------------------------------------------------------

Obviously there are some different ways git handles the --grep option
to the log command. This changes should make it work everywhere, and
uses the syntax actually spelled out in the help text.

* Fixes: `#44280 <http://forge.typo3.org/issues/44280>`_
* Commit: `a898458 <https://git.typo3.org/Packages/TYPO3.Flow.git/commit/a898458de778bb748dcaff1ec9ae526dd7f3a747>`_

[BUGFIX] Exclude Doctrine Annotations and Collections from reflection
-----------------------------------------------------------------------------------------

Doctrine split Annotations and Collections from the Common package,
now the exclusion of those packages from reflection is updated.

* Fixes: `#44496 <http://forge.typo3.org/issues/44496>`_
* Commit: `2bc1a61 <https://git.typo3.org/Packages/TYPO3.Flow.git/commit/2bc1a6158704f57bf26578baa4e791b7e7df7c94>`_

[FEATURE] Allow custom custom configuration files in ConfigurationManager
-----------------------------------------------------------------------------------------

Using the added methods it is possible to register new "types" of
configuration. The set of processing types remains constant, but one
can now e.g. register "Assets" as configuration type and use the
"Settings" processing rule for that. This way it it possible to move
settings for assets into a dedicated file, "Assets.yaml".

The change adds

- resolveConfigurationProcessingType() method
- registerConfigurationType() method
- 2 tests to add a new ConfigurationType
- emitConfigurationManagerReady() to register new ConfigurationTypes during boot

* Resolves: `#37854 <http://forge.typo3.org/issues/37854>`_
* Commit: `8378b19 <https://git.typo3.org/Packages/TYPO3.Flow.git/commit/8378b191783f0909ffc9368af80e97b9b9507b65>`_

[TASK] Ignore Libraries in core:migrate commands
-----------------------------------------------------------------------------------------

This change makes the core:migrate commands ignore the folder
Packages/Libraries to avoid unintended side effects.

* Resolves: `#44398 <http://forge.typo3.org/issues/44398>`_
* Commit: `c2a7d73 <https://git.typo3.org/Packages/TYPO3.Flow.git/commit/c2a7d73232178f4bbb15de3646a3dcad16426fed>`_

[TASK] Adjust suggested folder structure in Package Management section
-----------------------------------------------------------------------------------------

I7772051938a4306328108bacde34710c54fc3a69 introduced suggested
names for directories under Resources/Public.

This adjusts the suggested folder names as discussed and adds a link
to the ResourceManagement chapter.

* Related: `#42726 <http://forge.typo3.org/issues/42726>`_
* Resolves: `#13694 <http://forge.typo3.org/issues/13694>`_

* Commit: `4d72543 <https://git.typo3.org/Packages/TYPO3.Flow.git/commit/4d72543cd7aced3b58cd5b01843cc6877fe58ff8>`_

[BUGFIX] Actually do regex search/replace in code migrations
-----------------------------------------------------------------------------------------

Actually makes searchAndReplaceRegex() in code migrations do something
with the target files.

* Fixes: `#44402 <http://forge.typo3.org/issues/44402>`_
* Commit: `df259e5 <https://git.typo3.org/Packages/TYPO3.Flow.git/commit/df259e527d4f02ec85757acf249d6dccf40610d4>`_

[BUGFIX] Fix code migration status command
-----------------------------------------------------------------------------------------

Calling flow:core:migrate --status is fixed by this change.

* Fixes: `#44397 <http://forge.typo3.org/issues/44397>`_
* Commit: `5b4cd7c <https://git.typo3.org/Packages/TYPO3.Flow.git/commit/5b4cd7c7ff5572f88a4ca9785fca8826f5c48f4e>`_

[BUGFIX] Prevent UriBuilder adding current namespaced arguments
-----------------------------------------------------------------------------------------

UriBuilder no longer removes namespaced arguments from the
parent request causing all arguments of namespaced sub request to
be added to new request even though addQueryString isn't set.

The bug was introduced in Iba56bfffa9d8f47670afb1297575607b1b0023a8

* Fixes: `#44139 <http://forge.typo3.org/issues/44139>`_
* Commit: `1c35754 <https://git.typo3.org/Packages/TYPO3.Flow.git/commit/1c357548c59929d12ba370992c0579ce8b414fb2>`_

[TASK] Some documentation fixes regarding Caching
-----------------------------------------------------------------------------------------

This corrects an incorrect mentioned of ``Settings.yaml``
(which must be ``Objects.yaml`` correctly), and some
occurrences of an unnecessary additional colon in a
literal block (``::``)

* Commit: `6c48a05 <https://git.typo3.org/Packages/TYPO3.Flow.git/commit/6c48a05edb69c4644f58f447f4d074e256418639>`_

[BUGFIX] Fix migration error on missing Configuration directory
-----------------------------------------------------------------------------------------

For packages having no Configuration directory the core migration tool
died with an error message when trying to process configuration. This
is solved by checking for existence before trying to read any files.

* Fixes: `#43948 <http://forge.typo3.org/issues/43948>`_
* Commit: `dec4182 <https://git.typo3.org/Packages/TYPO3.Flow.git/commit/dec41821d0259156b37205c21e6be420b4c19df0>`_

[TASK] Some documentation fixes
-----------------------------------------------------------------------------------------

* Commit: `6d825e9 <https://git.typo3.org/Packages/TYPO3.Flow.git/commit/6d825e960679dab83d0d53f505e183a399b9b442>`_

[TASK] Update link and thumbnail for one-page CGL
-----------------------------------------------------------------------------------------

* Related: `#43882 <http://forge.typo3.org/issues/43882>`_
* Commit: `51d5a7a <https://git.typo3.org/Packages/TYPO3.Flow.git/commit/51d5a7a874fd172ef7a0750a2e99ef30198d5590>`_

[FEATURE] Allow exposing the class name of an object in JsonView
-----------------------------------------------------------------------------------------

Besides telling the identifier of a persisted object, it's now
additionally possible to expose the class name of this object.

For convenience, it's possible to output only the unqualified class
name rather than the fully qualified one.

* Resolves: `#42784 <http://forge.typo3.org/issues/42784>`_
* Commit: `5aa5283 <https://git.typo3.org/Packages/TYPO3.Flow.git/commit/5aa52833fd9658daf30c5ccc8bdfdef1372377e6>`_

[BUGFIX] Silence warning on writing PackageStates.php
-----------------------------------------------------------------------------------------

When the file permissions on for example the configuration folder are
not correct a PHP warning is shown. This is shown on top of the
friendly error TYPO3.Setup message and should be hidden.

The only way to silence this is to use the shut-up operator in
sortAndSavePackageStates() inside PackageManager. Any exception or
error code thrown at that point are not catchable by a (setup)
controller.

* Fixes: `#42202 <http://forge.typo3.org/issues/42202>`_
* Commit: `f1c8c38 <https://git.typo3.org/Packages/TYPO3.Flow.git/commit/f1c8c38f57c72522499749ad4ce1eecff10983fc>`_

[TASK] Adjust routing documentation to recent changes
-----------------------------------------------------------------------------------------

This fixes the routing examples provided with the definitive guide.

* Related: `#43589 <http://forge.typo3.org/issues/43589>`_
* Commit: `4e32723 <https://git.typo3.org/Packages/TYPO3.Flow.git/commit/4e3272312043e885a985e95196e66ee3d001335d>`_

[FEATURE] Improve executeCommand exception message
-----------------------------------------------------------------------------------------

If a subprocess command could not be executed, the exception
message now clearly says what command that actually is.

Besides, the message formatting is a bit nicer and an exception
number (timestamp) has been added.

* Commit: `1e7af08 <https://git.typo3.org/Packages/TYPO3.Flow.git/commit/1e7af086ba23f91b50c0523d20f012c5db6bf009>`_

[TASK] Add Runtime Cache to Reflection\\ObjectAccess
-----------------------------------------------------------------------------------------

Using Reflection\\ObjectAccess during validation or f.e. JsonView in an
extensive way you soon will end up with thousands of calls to functions
of that class.

By adding a runtime cache this can be sped up.

* Resolves: `#42723 <http://forge.typo3.org/issues/42723>`_
* Commit: `3f17618 <https://git.typo3.org/Packages/TYPO3.Flow.git/commit/3f1761886d9764e16f67297e226dc9620eabe22c>`_

[BUGFIX] Handle constant correctly in Doctrine\\Service
-----------------------------------------------------------------------------------------

The runDql() method in Persistence\\Doctrine\\Service didn't
use the passed by value for the hydrationMode correctly.

Now that value is considered to be an already resolved constant
as annotated and noted down in the method's signature.

* Fixes: `#44049 <http://forge.typo3.org/issues/44049>`_
* Commit: `a3f587b <https://git.typo3.org/Packages/TYPO3.Flow.git/commit/a3f587b179a92a9c1d126ae1616c35b71265ad1d>`_

[TASK] Various cleanup changes to tests and a Files method
-----------------------------------------------------------------------------------------

Fixes a number of docblocks, two test names. The Utility\\Files method
createDirectoryRecursively now throws a dedicated exception if a file
exists already where a directory should be created.

* Commit: `451f9b3 <https://git.typo3.org/Packages/TYPO3.Flow.git/commit/451f9b3377cd587f806116785ee12eb001530d61>`_

[TASK] Add ChangeLog for 2.0 beta 1
-----------------------------------------------------------------------------------------

* Commit: `9083bed <https://git.typo3.org/Packages/TYPO3.Flow.git/commit/9083bed19de3b5ed42fa8b54ac946ad7d27d3d0b>`_

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
TYPO3.Fluid
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

[TASK] Fix version requirement on Flow
-----------------------------------------------------------------------------------------

* Commit: `4422c51 <https://git.typo3.org/Packages/TYPO3.Fluid.git/commit/4422c5196a25c8593a265c8df9c04ea55548164d>`_

[TASK] Update composer manifest
-----------------------------------------------------------------------------------------

See http://ci.typo3.robertlemke.net/job/typo3-flow-branch/3/

* Commit: `3d3ebdb <https://git.typo3.org/Packages/TYPO3.Fluid.git/commit/3d3ebdb803ae67d88f20160ea4e3e02a8ecb2667>`_

[TASK] Adjust to "Deprecated base tag"
-----------------------------------------------------------------------------------------

This adjusts code and documentation to the recent change in Flow,
namely the deprecation of base tags.

* Related: `#53827 <http://forge.typo3.org/issues/53827>`_
* Commit: `102fcfa <https://git.typo3.org/Packages/TYPO3.Fluid.git/commit/102fcfa94c6018742c2b2d10c4f881e9115f3b4e>`_

[TASK] Allow link ViewHelper to generate relative URIs
-----------------------------------------------------------------------------------------

This re-introduces the ``absolute`` argument to the ``link.action``
ViewHelper that has been removed in revision
I85fdff19e54c70eb8b16ffb247e6c171fa5bac04.

But its default value is now ``TRUE`` for backwards compatibility
reasons.
So in order to render relative URIs, the argument has to be set
explicitly::

 <f:link.action action="foo" absolute="false" />

* Related: `#53827 <http://forge.typo3.org/issues/53827>`_
* Commit: `5d6d51d <https://git.typo3.org/Packages/TYPO3.Fluid.git/commit/5d6d51d2f5829d50fa81a34dd59faa957aa84329>`_

[BUGFIX] Flush template cache on ViewHelper changes
-----------------------------------------------------------------------------------------

Changing the signature of the render method in a ViewHelper leads to
stale cached templates that throw exceptions. This change uses the
file monitoring to flush the template cache on a change to a ViewHelper
class.

* Fixes: `#54135 <http://forge.typo3.org/issues/54135>`_
* Commit: `ced8f40 <https://git.typo3.org/Packages/TYPO3.Fluid.git/commit/ced8f4086a75bc8fd3937796b1801d093c33d606>`_

[BUGFIX] Fix IfAccessViewHelper tests
-----------------------------------------------------------------------------------------

Fixes the unit tests for the ``security.ifAccess`` ViewHelper
that broke with I39abae46be9e553954e3967ecabe229124acb551

* Commit: `352fcdd <https://git.typo3.org/Packages/TYPO3.Fluid.git/commit/352fcddf8cac03141edc86c652e38bee5ae416d3>`_

[TASK] Regard system role AuthenticatedUser in IfHasRole VH
-----------------------------------------------------------------------------------------

This patch makes the ViewHelper regard the new system role
`AuthenticatedUser` which was introduced in
Ia00bea27e81b2e4a172ad4f998dfa30581dd71dd.

* Resolves: `#53800 <http://forge.typo3.org/issues/53800>`_
* Commit: `db33e39 <https://git.typo3.org/Packages/TYPO3.Fluid.git/commit/db33e39a5b565b47ec9d0191c7d0ef8267231bc9>`_

[TASK] IfAccessViewHelper now avoids exceptions in Security.log
-----------------------------------------------------------------------------------------

Previously this view helper was just calling decideOnResource() in
order to find out if a resource was accessible and caught any exception
thrown by that method. Now the correct method hasAccessToResource() is
called instead.

Because the logging aspect registered even caught exceptions, any call
to this view helper resulted in an Access Denied entry in Security.log

* Commit: `f556da2 <https://git.typo3.org/Packages/TYPO3.Fluid.git/commit/f556da2eeb24826dbd8367c971063bec8cec13c5>`_

[TASK] CGL Fixes
-----------------------------------------------------------------------------------------

* Removes indent from inline comments
* Fixes several docblock issues
* Fixes incorrect spacing
* Fixes several other CGL issues

* Commit: `77c3225 <https://git.typo3.org/Packages/TYPO3.Fluid.git/commit/77c32254fdb3689b10ff527d6f48e9fdf27c9885>`_

[TASK] Remove PHP closing tag
-----------------------------------------------------------------------------------------

* Commit: `def4ec6 <https://git.typo3.org/Packages/TYPO3.Fluid.git/commit/def4ec62d0a75a1d7c315e2e16ea254af4d0b365>`_

[BUGFIX] Form ViewHelpers throw exception if no formObject is set
-----------------------------------------------------------------------------------------

When using forms with object binding Fluid throws an exception for FormField
ViewHelpers bound to nested properties if no form object is available.
This is the case for example in newAction() where the object is usually NULL::

	<f:form action="create" objectName="user">
	  <f:form.textfield property="name.firstName" />
	</f:form>

* Related: `#29290 <http://forge.typo3.org/issues/29290>`_
* Commit: `b074081 <https://git.typo3.org/Packages/TYPO3.Fluid.git/commit/b074081871f2e302ef30f83b9216c7cc28c6a724>`_

[TASK] initializeAction methods have to be protected
-----------------------------------------------------------------------------------------

* Commit: `d53af17 <https://git.typo3.org/Packages/TYPO3.Fluid.git/commit/d53af1787879b8c2c84e5b446d0448913871dab4>`_

[BUGFIX] Additional Identity Properties not set on mapping error
-----------------------------------------------------------------------------------------

When binding Fluid forms to nested objects, Fluid automatically adds
hidden fields with the identifiers of all affected objects so that
the persistence layer can update all objects correctly.

When a form was redisplayed due to property mapping errors, the
identity fields for the nested sub objects were no longer created.

This change fixes this by making sure all identity fields are rendered
recursively also after property mapping errors.

Example code to verify this::

	<f:form action="update" object="{user}" objectName="user">
	  <f:form.textfield property="firstName" />
	  <f:for each="{user.invoices}" as="invoice" iteration="iteration">
	    {iteration.cycle}:
	    <f:form.textfield property="invoices.{iteration.index}.subject" />
	  </f:for>
	  <f:form.submit value="update" />
	</f:form>

When submitting the form with validation errors, the redisplayed form
should contain a div with a hidden field named
"user[__identity]" for the user and one for each invoice.

* Fixes: `#29290 <http://forge.typo3.org/issues/29290>`_
* Commit: `3a56759 <https://git.typo3.org/Packages/TYPO3.Fluid.git/commit/3a56759eb8548783d540dd757b24cfa6c244c46b>`_

[BUGFIX] Don't use folders as templates, partials and layouts
-----------------------------------------------------------------------------------------

The PHP function ``file_exists()`` returns TRUE for files as well as
directories.
This change adjusts Template- and StandaloneView to use ``is_file()``
instead.

* Fixes: `#47188 <http://forge.typo3.org/issues/47188>`_
* Commit: `b1041e1 <https://git.typo3.org/Packages/TYPO3.Fluid.git/commit/b1041e1c0b1f38fe321096b5130ac0baf1df4e45>`_

[FEATURE] Introduce TemplateObjectAccessInterface
-----------------------------------------------------------------------------------------

This change is needed to handle TypoScript objects, simple types and
Eel expressions in the same way.

With the additional call to $node->objectAccess() for implementations of
TemplateObjectAccessInterface the evaluation of TypoScript objects can
be deferred until the actual rendering to be as lazy as possible.

* Related: `#48359 <http://forge.typo3.org/issues/48359>`_
* Commit: `7c7ea0a <https://git.typo3.org/Packages/TYPO3.Fluid.git/commit/7c7ea0a239c7ffb9ecfc4a3d1a46c50eea469281>`_

[TASK] Fix license in file level docblocks
-----------------------------------------------------------------------------------------

* Related: `#50835 <http://forge.typo3.org/issues/50835>`_
* Commit: `0cabe77 <https://git.typo3.org/Packages/TYPO3.Fluid.git/commit/0cabe77c38f959c9b02f1063c579fe2d70722f4f>`_

[TASK] Major cosmetic cleanup
-----------------------------------------------------------------------------------------

This adjusts the package to recent CGL changes, fixes loads of
minor spelling and includes further cleanups:

* Fix package key in class doc comments
* Import namespaces in order to avoid FQNs
* Add inline @var annotations for better maintainability
* Remove deprecated ViewHelpers "identity.json", "link.widget" & "uri.widget"
* Remove obsolete DocbookGenerator (use XsdGenerator instead)
* Fix unit and functional tests!

* Commit: `4578833 <https://git.typo3.org/Packages/TYPO3.Fluid.git/commit/4578833bb95f8d66c54043dbed481d4f64485a22>`_

[FEATURE] Add supportedOptions to templateView
-----------------------------------------------------------------------------------------

This changes the templateView to make use of the new
way to set options by the view configuration change.
See I93acc3ed3d9578a5d00d494b367aa7201138255b

* Resolves: `#42176 <http://forge.typo3.org/issues/42176>`_
* Commit: `eec91b0 <https://git.typo3.org/Packages/TYPO3.Fluid.git/commit/eec91b0bff9f46fe742ec5065773d23b25e44a72>`_

[FEATURE] Fallback paths
-----------------------------------------------------------------------------------------

With this change it will be possible to define multiple values
for the ``template``, ``partial`` and ``layout`` root path configuration.

Each of the respective options will now have a corresponding setter
that enables configuration of multiple paths to look up when loading a
Fluid template file::

	$view->setTemplateRootPaths(array('first/path', 'second/path', …));

The old setters will be kept and they overrule the fallback paths. So::

	$view->setTemplateRootPath('some/path');

would disable the fallback paths of the previous example. The same is true
for ``setPartialRootPath()`` and ``setLayoutRootPath()``.

The rootPath-getters have been deprecated in favor of
``getTemplateRootPaths()``, ``getPartialRootPaths()`` and
``getLayoutRootPaths()``.

* Resolves: `#39870 <http://forge.typo3.org/issues/39870>`_
* Commit: `a117389 <https://git.typo3.org/Packages/TYPO3.Fluid.git/commit/a1173897ceb00aa20669f8dd14b8cc4f795cb620>`_

[BUGFIX] Base64-encode widget context
-----------------------------------------------------------------------------------------

In order to avoid various null-byte-issues as they occur
when serializing an object with protected members (see
[1]); for example with Suhosin or some reverse proxy
implementations; the context object is transferred
in a Base64 encoded state now.

As there is no need to urlencode it anymore, this additionally
saves some bytes.

[1] http://php.net/serialize section "Parameters", subsection Note

* Fixes: `#35090 <http://forge.typo3.org/issues/35090>`_
* Commit: `f53ee1c <https://git.typo3.org/Packages/TYPO3.Fluid.git/commit/f53ee1c679c828874d5ffec565b6eb202ade9040>`_

[FEATURE] Added autofocus attribute to textfield and textarea
-----------------------------------------------------------------------------------------

The ViewHelpers f:form.textfield and f:form.textarea were lacking the
HTML5 "autofocus" attribute. It is available for button, input and
textarea. Now Fluid reflects this correctly by adding this attribute to
the initializeArguments methods for TextareaViewHelper and
TextfieldViewHelper.

* Resolves: `#49726 <http://forge.typo3.org/issues/49726>`_
* Commit: `c763e75 <https://git.typo3.org/Packages/TYPO3.Fluid.git/commit/c763e759de10e329963465b1a3e06e1fdf4bc286>`_

[BUGFIX] format.bytes ViewHelper: add peta-byte and support large numbers
-----------------------------------------------------------------------------------------

In the row of prefixes for multiples "peta" is missing between
"tera" and "exa".

pow() will use float if the numbers require it (too large). So we
also need to allow float-values to support larger numbers.

* Fixes: `#49143 <http://forge.typo3.org/issues/49143>`_
* Commit: `27e6ebe <https://git.typo3.org/Packages/TYPO3.Fluid.git/commit/27e6ebe6c40fac69acedf7692b470a7438a91cca>`_

[FEATURE] ViewHelper to display file sizes
-----------------------------------------------------------------------------------------

Simple ViewHelper that converts the size of a file to a human
readable string.

Usage:
{fileSize -> f:format.bytes()}

* Resolves: `#49128 <http://forge.typo3.org/issues/49128>`_
* Commit: `96c3108 <https://git.typo3.org/Packages/TYPO3.Fluid.git/commit/96c31080b5b1f928717c981541a0721869b7fe48>`_

[BUGFIX] Typo in SwitchViewHelper code example
-----------------------------------------------------------------------------------------

Fixes a typo in the usage example introduced with
Ibec7b1acc4555a8f69ea7465023a2cf2b06e63aa

* Fixes: `#48856 <http://forge.typo3.org/issues/48856>`_
* Related: `#33817 <http://forge.typo3.org/issues/33817>`_

* Commit: `88edf89 <https://git.typo3.org/Packages/TYPO3.Fluid.git/commit/88edf89ef5f2e2dd20f51fec613beeee414f9f3f>`_

[TASK] Add hints to ViewHelpers
-----------------------------------------------------------------------------------------

This adds some developer notes to commonly used ViewHelpers
that should prevent over- or misusage.

* Commit: `eb510ff <https://git.typo3.org/Packages/TYPO3.Fluid.git/commit/eb510fff282ce112c79b7b8a54579ef470345cad>`_

[FEATURE] Switch View Helper
-----------------------------------------------------------------------------------------

Simple view helper that allows you to render content depending
on a given value or expression.
It bahaves similar to a basic switch statement in PHP.

Usage::

  <f:switch expression="{person.gender}">
    <f:case case="male">Mr.</f:case>
    <f:case case="female">Mrs.</f:case>
  </f:switch>

* Resolves: `#33817 <http://forge.typo3.org/issues/33817>`_
* Commit: `4fd6714 <https://git.typo3.org/Packages/TYPO3.Fluid.git/commit/4fd6714dd228e34fe2603dd1920ea2684c602eef>`_

[TASK] Optimize number_format calls
-----------------------------------------------------------------------------------------

This change optimizes number_format calls in ViewHelpers by
explicitly casting the number argument to float.
A benchmark shows this increases performance of the number_format
call by a factor of 2-3.

* Resolves: `#36207 <http://forge.typo3.org/issues/36207>`_
* Commit: `48e3cf0 <https://git.typo3.org/Packages/TYPO3.Fluid.git/commit/48e3cf06a385f3b11f5b4acbd2b5aae949071f59>`_

[BUGFIX] Declare ObjectManager property
-----------------------------------------------------------------------------------------

The objectManager is injected and used but the property is not
declared in the class.

* Fixes: `#47968 <http://forge.typo3.org/issues/47968>`_
* Commit: `1779aeb <https://git.typo3.org/Packages/TYPO3.Fluid.git/commit/1779aeb9d2cdfa58ce322b724ef82fe6dfacc04a>`_

[FEATURE] CSRF token ViewHelper
-----------------------------------------------------------------------------------------

With I9d667aa451a7510cf12ab13be745fed1f7ca477e CSRF tokens
are not added to URIs any longer.

Therefore you need to add the token yourself for "unsafe" requests
(POST, PUT, DELETE, ...).

This is not true for fluid forms where the token is added automatically
if the form does not have method="get" set
(see Ic600a9e591d047ca9bbd39d352c4f337bcfaa6a9).

For other forms or AJAX requests the ViewHelper can be used like this::

  <form action="<someAction>" method="post">
    ...
    <input type="hidden" name="__csrfToken" value="{f:security.csrfToken()}" />
  </form>

* Related: `#47252 <http://forge.typo3.org/issues/47252>`_
* Commit: `480bbef <https://git.typo3.org/Packages/TYPO3.Fluid.git/commit/480bbefbe7d77233e9e2df821b4a55d266b6665d>`_

[!!!][TASK] CSRF protection for "safe" request methods
-----------------------------------------------------------------------------------------

This change set adjusts URL related view helpers in Fluid to
an important behavior for Flow applications: HTTP request
methods which are, by definition, considered to be "safe"
(that is, "read-only") are now treated as such.

The Fluid Link and Uri view helpers will not generate CSRF tokens
anymore, since we assume that you are using them for GET requests.
The FormViewHelper however, will enable link protection if the
form does not have method="get" set.

Please adjust your applications to cleanly observe this principle since
more optimizations in this direction are planned for later versions of
TYPO3 Flow.

* Related: `#47252 <http://forge.typo3.org/issues/47252>`_
* Commit: `e1ca2a7 <https://git.typo3.org/Packages/TYPO3.Fluid.git/commit/e1ca2a73bed86aa028d8289b0130eec7983a4779>`_

[TASK] Add packageKey attribute to ifHasRole view helper
-----------------------------------------------------------------------------------------

This change adds support for handling a packageKey to the ifHasRole
view helper. It can be used in three ways:

1) The 'old' way, with just a string like 'Administrator'
   This will result in a check for the Administrator role within
   the current package (fetched from the controllerContext)
2) With a full role identifier like 'Foo.MyPackage:Administrator'
3) Using both, the role attribute and packageKey attribute

This was once Iae92119bf9f8d6125211d1e4b1e42a0a513d804b but had to be
reverted after an accidental merge.

* Related: `#37451 <http://forge.typo3.org/issues/37451>`_
* Commit: `3a7966b <https://git.typo3.org/Packages/TYPO3.Fluid.git/commit/3a7966ba7a0b49aa53292719c873c82c68edbe99>`_

[TASK] Revert: "Add packageKey attribute to ifHasRole view helper"
-----------------------------------------------------------------------------------------

This reverts commit 806a29a4dabd5a7a90b55d819a39782a0a807cff
The change was merged too early by mistake. Related changes need to
be merged first.
see: https://review.typo3.org/#/q/status:merged+branch:master+topic:roles,n,z

* Related: `#37451 <http://forge.typo3.org/issues/37451>`_
* Commit: `b2153d8 <https://git.typo3.org/Packages/TYPO3.Fluid.git/commit/b2153d8801ec0d9795c445b8fabe5fe5a52c874e>`_

[TASK] Remove leading backslash in use statement(s)
-----------------------------------------------------------------------------------------

* Commit: `0f4d1d4 <https://git.typo3.org/Packages/TYPO3.Fluid.git/commit/0f4d1d41e9e9eaf55ad04293cd6ec3c9e144b0a6>`_

[TASK] Add packageKey attribute to ifHasRole view helper
-----------------------------------------------------------------------------------------

This change adds support for handling a packageKey to the ifHasRole
view helper. It can be used in three ways:

1) The 'old' way, with just a string like 'Administrator'
   This will result in a check for the Administrator role within
   the current package (fetched from the controllerContext)
2) With a full role identifier like 'Foo.MyPackage.Administrator'
3) Using both, the role attribute and packageKey attribute

* Related: `#37451 <http://forge.typo3.org/issues/37451>`_
* Commit: `806a29a <https://git.typo3.org/Packages/TYPO3.Fluid.git/commit/806a29a4dabd5a7a90b55d819a39782a0a807cff>`_

[BUGFIX] GroupedFor ViewHelper to support DateTime objects
-----------------------------------------------------------------------------------------

The groupedFor view helper can group by DateTime objects as defined
in the properties of an object. It uses \\DateTime::RFC850 format to
group by internally, so the the subsequent groupKey can use it to
format a valid date again.

* Fixes: `#44826 <http://forge.typo3.org/issues/44826>`_
* Commit: `c7b4af7 <https://git.typo3.org/Packages/TYPO3.Fluid.git/commit/c7b4af75c6330fca3dcad3798fec0cc7f55d0d24>`_

[FEATURE] Add a Format.Case ViewHelper
-----------------------------------------------------------------------------------------

This adds a Format.Case ViewHelper that changes
a string's case in various manners like uppercase,
lowercase, (un-)capitalization and
each-word-capitalization.

* Resolves: `#44572 <http://forge.typo3.org/issues/44572>`_
* Commit: `770f32c <https://git.typo3.org/Packages/TYPO3.Fluid.git/commit/770f32c48fbc82b0d364eb3e2e8105834bca3dd2>`_

[TASK] Adjust Fluid to Lazy Dependency Injection
-----------------------------------------------------------------------------------------

This adjusts the ViewHelperNode and AbstractWidgetViewHelper
to Lazy Dependency Injection introduced in Flow 2.0

* Related: `#43819 <http://forge.typo3.org/issues/43819>`_
* Commit: `cd8dbb1 <https://git.typo3.org/Packages/TYPO3.Fluid.git/commit/cd8dbb130be69be6ed10e4bd6c9e826c3ba98971>`_

[TASK] filemtime is namespaced in TemplateView.php
-----------------------------------------------------------------------------------------

* Resolves: `#45987 <http://forge.typo3.org/issues/45987>`_
* Commit: `8490172 <https://git.typo3.org/Packages/TYPO3.Fluid.git/commit/84901723b9055e8b6293b09673562e647f191d04>`_

[TASK] Remove dependency on installer
-----------------------------------------------------------------------------------------

Rely on implicit dependency through TYPO3.Flow

* Commit: `9c58d28 <https://git.typo3.org/Packages/TYPO3.Fluid.git/commit/9c58d28b9a8fbccde49a9cc9cc6c44afdeb1c33e>`_

[FEATURE] Configurable prepend option for Select ViewHelper
-----------------------------------------------------------------------------------------

A common use case with select fields is to have a 'empty' option at
first position in the options list.
This change provides the possibility to add a label and (optionally)
a value, which will be rendered in the option list.

Usage:
<f:form.select prependOptionLabel="select one" />

Note: The prepended option can be translated using the "translate"
argument.

* Resolves: `#44235 <http://forge.typo3.org/issues/44235>`_
* Commit: `4c58955 <https://git.typo3.org/Packages/TYPO3.Fluid.git/commit/4c58955fad2d25e98828e05ab3f1f6f4d4ec4ab3>`_

[BUGFIX] Fix broken TemplateViewTest
-----------------------------------------------------------------------------------------

The test was broken by I6f31adc1bd493f2c818b532b2394a774c17f24b7
when some imported class names were made fully qualified (and thus
pointed to non-existing classes).

* Related: `#44710 <http://forge.typo3.org/issues/44710>`_
* Commit: `f988260 <https://git.typo3.org/Packages/TYPO3.Fluid.git/commit/f988260b36a22115a334676e8b4a19a72cba7240>`_

[FEATURE] Allow f:link.action to operate on parent request
-----------------------------------------------------------------------------------------

Add an useParentRequest argument to link.action, uri.action,
and form ViewHelpers to generate links using the Parent
Request instead of the current Request.

* Resolves: `#35790 <http://forge.typo3.org/issues/35790>`_
* Commit: `6b5f0d0 <https://git.typo3.org/Packages/TYPO3.Fluid.git/commit/6b5f0d051dc1863a271c45a1ebcd616f81c3bf0b>`_

[TASK] Fix some CGL issues spotted during backporting (part2)
-----------------------------------------------------------------------------------------

This patch fixes some CGL problems spotted while
syncing Flow Fluid and TYPO3 CMS Fluid
Also removed unneeded backporter tokens from code.
This will ease next backporting a lot.

* Resolves: `#44710 <http://forge.typo3.org/issues/44710>`_
* Commit: `725a552 <https://git.typo3.org/Packages/TYPO3.Fluid.git/commit/725a55219ac661b38472f1347c20aba0960d683b>`_

[TASK] Add placeholder attribute to password ViewHelper
-----------------------------------------------------------------------------------------

As a follow-up to I24bb73c5de5a494259171ff289d434892f85e16e,
this also adds the placeholder attribute to the password
ViewHelper.

* Related: `#37558 <http://forge.typo3.org/issues/37558>`_
* Commit: `c8089da <https://git.typo3.org/Packages/TYPO3.Fluid.git/commit/c8089da16b68434c96f5b325a56fb2c2a11a682f>`_

[TASK] Fix CGL in TemplateParser
-----------------------------------------------------------------------------------------

This patch fixes some CGL violations found in TemplateParser

* Resolves: `#44702 <http://forge.typo3.org/issues/44702>`_
* Commit: `5e10ef2 <https://git.typo3.org/Packages/TYPO3.Fluid.git/commit/5e10ef28fbeacc84d3dc4541e0f62d680cdde081>`_

[TASK] Fix CGL issues in AbstractViewHelper
-----------------------------------------------------------------------------------------

This patch fixes some CGL issues found in AbstractViewHelper
founded when backporting fluid to TYPO3 CMS

* Resolves: `#44706 <http://forge.typo3.org/issues/44706>`_
* Commit: `62f0fbd <https://git.typo3.org/Packages/TYPO3.Fluid.git/commit/62f0fbd8f15b3b795cc2cfd46445e15b6ac0edbb>`_

[!!!][BUGFIX] urlencode viewhelper accepts objects with __toString
-----------------------------------------------------------------------------------------

This fixes a problem with the urlencode view helper. If you pass it an
object with __toString() method – for example an URI object – it is
returned as is. Now the view helper additionally checks for a
__toString() method.

This change is breaking if you rely on the viewhelper to return
values that are not a string or an object with __toString.
The viewhelper will now throw an exception in this case.

* Fixes: `#44889 <http://forge.typo3.org/issues/44889>`_
* Commit: `d8097eb <https://git.typo3.org/Packages/TYPO3.Fluid.git/commit/d8097eb1dcbed2835c8acef46cb2223ec6c36494>`_

[TASK] Fix some CGL issues spotted during backporting
-----------------------------------------------------------------------------------------

This patch fixes some cgl problems spotted while
syncing Flow Fluid and CMS Fluid

* Resolves: `#44710 <http://forge.typo3.org/issues/44710>`_
* Commit: `295eacf <https://git.typo3.org/Packages/TYPO3.Fluid.git/commit/295eacf61e4fc45b90a6707b44f7da8a3f6151af>`_

[FEATURE] Add errorClass to form.hidden VH
-----------------------------------------------------------------------------------------

For use in JS-enhanced frontends it can be useful to attach errorClass
even to hidden fields (to detect validation errors).

* Commit: `a5e0ba7 <https://git.typo3.org/Packages/TYPO3.Fluid.git/commit/a5e0ba77ff3dfc5f9b250b9f013c7101fda516ec>`_

[!!!][TASK] Clean up placeholder on textfield and text area VHs
-----------------------------------------------------------------------------------------

The form.textfield VH had a placeholder attribute as argument to the
render() method; the form.textarea VH did not support placeholder at all.

With this change the placeholder is available on both VHs but registered
as tag attribute.

If you extended TextfieldViewHelper::render() make sure to remove the
$placeholder argument, otherwise you will see

 Argument "placeholder" has already been defined, thus it should not
 be defined again.

errors from Fluid.

* Resolves: `#37558 <http://forge.typo3.org/issues/37558>`_
* Commit: `11ecf9b <https://git.typo3.org/Packages/TYPO3.Fluid.git/commit/11ecf9b2997c98a967372968dd43ff469c75ee28>`_

[BUGFIX] Add input string argument to Format.Crop ViewHelper
-----------------------------------------------------------------------------------------

The Format.Crop ViewHelper did not provide a way to pass
the input string as simple argument; this patch now allows
this. An appropriate UnitTest is added; additionally an
augmentation to the ViewHelpers' DocComment, mentioning an
inline use case, is added.

* Commit: `c3f3ca3 <https://git.typo3.org/Packages/TYPO3.Fluid.git/commit/c3f3ca32707a1d05365ea28624ddbe2014915160>`_

[BUGFIX] Adjust pagination widget to recent changes
-----------------------------------------------------------------------------------------

With #43589 the action argument of link/URI ViewHelpers is
not optional any longer.

This change adjusts the template of the provided pagination widget
to that breaking change by specifying the action argument.

Besides this adds a check to widget.link & widget.uri ViewHelpers
which throws a more meaningful exception if the action argument
was omitted.

* Fixes: `#44376 <http://forge.typo3.org/issues/44376>`_
* Related: `#43589 <http://forge.typo3.org/issues/43589>`_

* Commit: `fd3ff04 <https://git.typo3.org/Packages/TYPO3.Fluid.git/commit/fd3ff0418b46bfb529d8ab7386dcab95326826a6>`_

[BUGFIX] Tweaked the TranslateViewHelper documentation
-----------------------------------------------------------------------------------------

The DocComment part of the TranslateViewHelper contained
an example which does not work in Fluid that exactly way.
A wrapping CDATA block obviously fixes the issue in order
to prevent Fluid regarding the translation placeholder
as object literal incorrectly.

* Commit: `2afcead <https://git.typo3.org/Packages/TYPO3.Fluid.git/commit/2afcead8fbfe81aea1c7304c1fb64bd426277220>`_

[TASK] Make getTemplateRootPath() public like its setter
-----------------------------------------------------------------------------------------

The getTemplateRootPath() method in View\\TemplateView now
becomes public analogous to its setter counterpart which
already is public, too.

* Resolves: `#29303 <http://forge.typo3.org/issues/29303>`_
* Commit: `73156e7 <https://git.typo3.org/Packages/TYPO3.Fluid.git/commit/73156e7e789d4961a9fd5e6218e4962938c588dd>`_

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
TYPO3.Kickstart
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

[TASK] Fix version requirement on Flow
-----------------------------------------------------------------------------------------

* Commit: `5f55f05 <https://git.typo3.org/Packages/TYPO3.Kickstart.git/commit/5f55f0553501a9769df68a744f72b1efd5c4ba02>`_

[TASK] Update composer manifest
-----------------------------------------------------------------------------------------

See http://ci.typo3.robertlemke.net/job/typo3-flow-branch/3/

* Commit: `411856a <https://git.typo3.org/Packages/TYPO3.Kickstart.git/commit/411856a75f64cf5872b6bd536450ea7e85ae943b>`_

[TASK] CGL Fixes
-----------------------------------------------------------------------------------------

* Fixes incorrect spacing
* Commit: `93d51f2 <https://git.typo3.org/Packages/TYPO3.Kickstart.git/commit/93d51f2cb1bd9fd3d45217412855199aec4ebc3e>`_

[TASK] Remove PHP closing tag
-----------------------------------------------------------------------------------------

* Commit: `dedf7b1 <https://git.typo3.org/Packages/TYPO3.Kickstart.git/commit/dedf7b186a9f56d7da842bc6bacad63eb98d8c65>`_

[TASK] Adjust test to relative namespace handling
-----------------------------------------------------------------------------------------

* Related: `#46008 <http://forge.typo3.org/issues/46008>`_
* Commit: `df5e4c6 <https://git.typo3.org/Packages/TYPO3.Kickstart.git/commit/df5e4c657a783872eb395e28db9a5acd853a8ead>`_

[TASK] Fix license in file level docblocks
-----------------------------------------------------------------------------------------

* Related: `#50835 <http://forge.typo3.org/issues/50835>`_
* Commit: `923b8b4 <https://git.typo3.org/Packages/TYPO3.Kickstart.git/commit/923b8b4253b9dbccaed17d19ed174ad52a17ef29>`_

[BUGFIX] Kickstarter creates superfluous code
-----------------------------------------------------------------------------------------

The kickstarter creates a lot of code that is not needed.
Especially redundant doc comments are counter productive.

This change tweaks and cleans up the generator templates so
that they create less noise.

This also comes with following minor improvements:

* Remove leading slash from use statement
* Replace "<f:form name" with "<f:form objectName"
* Move formatting ViewHelpers to subdirectory for good measure
* Fixes: `#48030 <http://forge.typo3.org/issues/48030>`_

* Commit: `4de1a56 <https://git.typo3.org/Packages/TYPO3.Kickstart.git/commit/4de1a56d356203540a0c8a1ef1f20b58fbee3dc8>`_

[BUGFIX] Kickstarter creates "delete links"
-----------------------------------------------------------------------------------------

With 2.0 Flow won't persist changes automatically
for safe requests (see #47252).
This adjusts the index template accordingly so that it
creates delete forms instead of links.

* Fixes: `#48028 <http://forge.typo3.org/issues/48028>`_
* Related: `#47252 <http://forge.typo3.org/issues/47252>`_

* Commit: `cc329f3 <https://git.typo3.org/Packages/TYPO3.Kickstart.git/commit/cc329f391832ec687d421e976b9c1fddf2beb443>`_

[BUGFIX] Controllers must not be of scope singleton
-----------------------------------------------------------------------------------------

Adjusts the controller templates to create prototypes instead
of singletons.

Background:
Usually the scope of a controller doesn't really make a difference,
because they are only instantiated once per request.
But if the same controller is used multiple times
(e.g. within two plugin/widget instances on one page) the side
effects could be very confusing.

* Fixes: `#45647 <http://forge.typo3.org/issues/45647>`_
* Commit: `35bd7a3 <https://git.typo3.org/Packages/TYPO3.Kickstart.git/commit/35bd7a3aa1f9c7058ef7ddd925bf413e4756fb53>`_

[BUGFIX] Fix command controller kickstart
-----------------------------------------------------------------------------------------

When kickstarting a command controller the class/file name would lack
the "Command" part (as of Ie758c26cecd591ed240478de3f9597714060fb88).

* Fixes: `#43908 <http://forge.typo3.org/issues/43908>`_
* Commit: `568c98f <https://git.typo3.org/Packages/TYPO3.Kickstart.git/commit/568c98f34472e453559ead436eb5842ed31ddffd>`_

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
TYPO3.Party
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

[TASK] Fix version requirement on Flow
-----------------------------------------------------------------------------------------

* Commit: `1a2e276 <https://git.typo3.org/Packages/TYPO3.Party.git/commit/1a2e276c9bcb9d94c5bbacc35879fbedcaf52339>`_

[TASK] Update composer manifest
-----------------------------------------------------------------------------------------

See http://ci.typo3.robertlemke.net/job/typo3-flow-branch/3/

* Commit: `57aa36b <https://git.typo3.org/Packages/TYPO3.Party.git/commit/57aa36b593e8cf4f47a321ce2a8fd977e941d1eb>`_

[TASK] CGL Fixes
-----------------------------------------------------------------------------------------

* Removes indent from inline comments
* Commit: `2a24d32 <https://git.typo3.org/Packages/TYPO3.Party.git/commit/2a24d3221faf55ab23ad380ee89686cf97533dfe>`_

[TASK] Remove PHP closing tag
-----------------------------------------------------------------------------------------

* Commit: `4b1adcb <https://git.typo3.org/Packages/TYPO3.Party.git/commit/4b1adcb15709d90bf5e3f5b495046d7ca2c98a2e>`_

[TASK] Improve Electronic Address validators
-----------------------------------------------------------------------------------------

Improvement of the regex pattern for MSN, Yahoo and
Sip validators. This includes the removal of an
exception when trying to resolve the pattern.

In the MSN validator an outlook domain address is
now also valid in addition to msn, hotmail and live
domains.

* Fixes: `#47882 <http://forge.typo3.org/issues/47882>`_
* Commit: `c733d12 <https://git.typo3.org/Packages/TYPO3.Party.git/commit/c733d12eccd865a9f7e9ee9975ebf7e2e26163e9>`_

[BUGFIX] Add missing delimiter in IcqValidator
-----------------------------------------------------------------------------------------

* Fixes: `#47881 <http://forge.typo3.org/issues/47881>`_
* Commit: `1628866 <https://git.typo3.org/Packages/TYPO3.Party.git/commit/1628866e1a9e7f4b080a73910dc9d2838c937bcd>`_

[FEATURE] Add possibility to fetch address and usage types
-----------------------------------------------------------------------------------------

* Add the possibility to get lists of electronic address types and
  usage types.
* Add extra validation to properties
* Resolves: `#44196 <http://forge.typo3.org/issues/44196>`_

* Commit: `d9f5aeb <https://git.typo3.org/Packages/TYPO3.Party.git/commit/d9f5aeb0ef49fcdcb158c0cdcc5778f966ab4219>`_

[FEATURE] Support nested editing of electronic addresses
-----------------------------------------------------------------------------------------

A setter for electronic addresses is needed when using nested Fluid
forms.

* Commit: `55af865 <https://git.typo3.org/Packages/TYPO3.Party.git/commit/55af8656c44c59c3c36b0908857ea584d7a4fb58>`_

[TASK] Add missing validators for ElectronicAddress types
-----------------------------------------------------------------------------------------

Adds the needed validators and changes the ElectronicAddressValidator
so that it uses them.

* Fixes: `#39150 <http://forge.typo3.org/issues/39150>`_
* Commit: `a69dd90 <https://git.typo3.org/Packages/TYPO3.Party.git/commit/a69dd90273efc9795312c990eb10a1dcdd5c3db7>`_

[TASK] Remove dependency on installer
-----------------------------------------------------------------------------------------

Rely on implicit dependency thorugh TYPO3.Flow

* Commit: `f996744 <https://git.typo3.org/Packages/TYPO3.Party.git/commit/f9967440a15b50a14062b833a0a2a9881e761ba2>`_

[BUGFIX] Removing primary electronic address fails in persistence
-----------------------------------------------------------------------------------------

When removing an electronic address which is also the primary
electronic address of a Person an exception is thrown in the
persistence layer due to a property being unset and not set
to NULL when validating the object before persisting.

* Fixes: `#45459 <http://forge.typo3.org/issues/45459>`_
* Commit: `b145b95 <https://git.typo3.org/Packages/TYPO3.Party.git/commit/b145b95d8671afe8e2f976899f6f413384df96f7>`_

[TASK] Remove Gizmo as electronic address type
-----------------------------------------------------------------------------------------

Due to discontinued support as of April 3, 2011.

* Resolves: `#45276 <http://forge.typo3.org/issues/45276>`_
* Commit: `b16e70e <https://git.typo3.org/Packages/TYPO3.Party.git/commit/b16e70e2ddfa074bab25b91f87d63def2d9fa64d>`_

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
TYPO3.Welcome
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

[TASK] Fix version requirement on Flow
-----------------------------------------------------------------------------------------

* Commit: `39f81ba <https://git.typo3.org/Packages/TYPO3.Welcome.git/commit/39f81ba4e448f1d4e1c9daf7e8ed8beb3214efd7>`_

[TASK] Update composer manifest
-----------------------------------------------------------------------------------------

See http://ci.typo3.robertlemke.net/job/typo3-flow-branch/3/

* Commit: `19b018e <https://git.typo3.org/Packages/TYPO3.Welcome.git/commit/19b018e8dff02aecd4b954117df0810c6db9bc4a>`_

[BUGFIX] Switch welcome site to jQuery for consistency
-----------------------------------------------------------------------------------------

The welcome site now also uses jQuery as JavaScript library.
Additionally folder names were adapted to match the best
practice proposal we have.

* Fixes: `#44670 <http://forge.typo3.org/issues/44670>`_
* Commit: `27b3e27 <https://git.typo3.org/Packages/TYPO3.Welcome.git/commit/27b3e27f12d1ad472a8c5a9f6732f8a864a20c55>`_

