[TASK] Implement case insensitive like() in the Query object

This change implements the missing case insensitive like() into
the Query object which was still documented as todo.

Change-Id: I53cd80e145eb49bcf8251f0045b9f3ec4fd61105
Releases: master, 2.2, 2.1, 2.0
[BUGFIX] FunctionalTestcase->registerRoute() does not allow httpMethods

The FunctionalTestcase->registerRoute() did not allow configurable httpMethods.
This change adds an httpMethods argument to this method, and adds a simple
test to verify the behavior.

Change-Id: If804afe39b941428c75cc0e1197ff23ad683ed23
Releases: master, 2.0, 2.1, 2.2
Fixes: #58959
[TASK] Allow request body to be send in CurlEngine for e.g. DELETE requests

This change enables sending post fields in custom HTTP methods like for example DELETE.

Resolves: FLOW-14
Releases: master
Change-Id: I6af1e90d161c2407fee2687dd9959e94c54ed53d
[FEATURE] Configurable Doctrine DQL Custom Functions

This adds the possibility to add custom DQL functions
to Doctrine via configuration. Such a setting would,
for example look like the following::

	TYPO3:
	  Flow:
	    persistence:
	      doctrine:
	        dql:
	          customStringFunctions:
	            'SOMEFUNCTION': 'Acme\Demo\Ast\SomeFunction'
	          customNumericFunctions:
	            'FLOOR': 'Acme\Demo\Ast\Floor'
	            'CEIL': 'Acme\Demo\Ast\Ceil'
	          customDatetimeFunctions:
	            'UTCDIFF': 'Acme\Demo\Ast\UtcDiff'

Releases: master
Change-Id: Ibaf592dee13e0ebf14b5490daea12383d4f69bd3
Merge "[TASK] Implement case insensitive like() in the Query object"
[TASK] Use Unicode-aware strtolower in equals()

The implementation of equals() in Doctrine\Query used plain strtolower()
instead of a Unicode-aware function to lowercase the parameter. This
changes fixes that by using the Unicode\Functions::strtolower() method.

Change-Id: I78f004d3b4313d0508e46ca99bbd824b5c27a4fe
Releases: master, 2.2, 2.1, 2.0
Merge changes I6af1e90d,If804afe3

* changes:
  [TASK] Allow request body to be send in CurlEngine for e.g. DELETE requests
  [BUGFIX] FunctionalTestcase->registerRoute() does not allow httpMethods
[TASK] Use @requires to check for test requirements

Instead of using extension_loaded() and function() exists in setUp() of
test classes, use the @requires annotation provided by PHPUnit to check
for requirements.

Change-Id: I49ae25af3fff5af342cb9d12c5ef812b470c1871
Releases: master
Merge "[FEATURE] Configurable Doctrine DQL Custom Functions"
[!!!][FEATURE] Flexible parsing of request body arguments

Parsing of body arguments (e.g. xml, json) currently takes place in
``Http\Request`` and is hard-coded there.

This change extracts the decoding of body arguments from the request
class to a TypeConverter that is invoked by the ActionRequest only
if accessed.

The TypeConverter is referred to via a new marker interface
``MediaTypeConverterInterface``. In order to extend the media type
conversion, this interface has to be implemented by a custom
TypeConverter and set as default implementation in Objects.yaml::

  TYPO3\Flow\Property\TypeConverter\MediaTypeConverterInterface:
    className: 'Some\Custom\MediaTypeConverter'

This change also deprecates ``Http\Request::createActionRequest()``
in favor of ``$actionRequest = new ActionRequest($httpRequest);``

This is a breaking change in the rare case that
``Http\Request::getArguments()`` is expected to contain the parsed
request body already.
If you require to access those body arguments either use/create
an ActionRequest instance or parse the body arguments manually,
for example by using the PropertyMapper.

Change-Id: I1d192231810757f38aecfc3f7dc520b118ee3feb
Resolves: #45293
Releases: master
[TASK] Raise cURL timeout

This change raises the default cURL timeout to 30 seconds.

Change-Id: I705e8da205e53ca1ce4001cf7027cafeaefc62d0
Releases: master, 2.2
[!!!][FEATURE] HTTP components for handling requests

Currently the only way to hook into the request handling process
one has to create a custom ``RequestHandler`` (in order to intercept
the default application flow very early) or use AOP (e.g. to capture
Fluid AJAX-Widget requests).

With this change request handling in Flow is much more modular and
flexible as it allows packages to modify the default request chain by
providing or configuring "HTTP components".

Background:

This is not a breaking change strictly speaking as it doesn't affect
the public API. It's marked as such though because it quite likely
breaks Flow applications with custom request handling.

If you created a custom ``RequestHandler`` make sure that it still
works as expected and check if its still needed or if a HTTP
component could replace it. The same is true if you hooked into the
request handling via AOP.

Change-Id: Iac1bd27cd1f2869e597b696c896633f14703ec40
Resolves: #52064
Releases: master
Merge "[!!!][FEATURE] Flexible parsing of request body arguments"
Merge "[!!!][FEATURE] HTTP components for handling requests"
[TASK] Remove link to forge from DebugExceptionHandler output

The link to create an issue from the exception screen was not used much
and since we moved away from forge it would link to the wrong tracker.

I consider this experiment a failure and thus this change removes the
link (generation code) from the DebugExceptionHandler.

Change-Id: I2d5a4b2ad15240a4f767756d85a3563df8896c21
Releases: master, 2.2
[FEATURE] Allow logging of exceptions to be switched off

The AbstractExceptionHandler logs all exceptions before passing control
to the concrete ExceptionHandler. This means that even if an exception
is handled with a custom template (e.g. for exceptions grouped as 404
status errors) the error log is filled with exceptions and the traces
fill up the Data/Logs/Exceptions directory.

Now the new option ``logException`` can be used to switch that off. Flow
sets this to FALSE for the ``notFoundExceptions`` rendering group by
default.

Change-Id: Id6e523aeebcfdd366b7831f20c7a4634b494962b
Releases: master, 2.2
[BUGFIX] Proxy compiler should only remove opening php tag

Without this change the proxy compiler throws away the full line
containing the opening php tag, but that is not correct as this
first line could contain important information like the namepace
declaration.

This change just removed the opening php tag and all following
whitespace but leaves anything else in the line unchanged.

Change-Id: I42867963468c23a3dd11512c31ab1bff0ba3db1c
Releases: master, 2.2, 2.1
Fixes: FLOW-3
Merge "[FEATURE] Allow logging of exceptions to be switched off"
[BUGFIX] Fix exception handling in CLI

This removes the CommandExceptionHandler introduced in change
https://review.typo3.org/12019. Instead the echoExceptionCli() method in
the (Production|Debug)ExceptionHandler is used and has been updated a
bit to produce better output.

Change-Id: If47f3c32b38fbd5a91cf530508d50d1b6ca9c121
Fixes: FLOW-39
Releases: master
[TASK] Redis cache backend improvements

This change contains a drop-in replacement for the current Redis cache backend.
The new backend implements TaggableBackendInterface,
IterableBackendInterface and FreezableBackendInterface, which allows usage for
various caches (like Flow_Session_*, Flow_Reflection_*, Flow_Mvc_*,
Flow_Security_*).

Change-Id: I6eb369c2a9b18ff44206360ef7c948fa9f98e54b
Releases: master