[FEATURE] Run CommandController commands through Scheduler

This feature allows any Extbase CommandController command to be
executed through the scheduler. Argument values are fully supported
and both action and argument names can be translated through
locallang. Task name and arguments are displayed in the Task
overview.

Change-Id: I91cf580db97da50fb34d8f9c64b453d96b21f303
Resolves: #32107
Merge "[BUGFIX] Invalid LOCAL_LANG overlay for non-existing languages"
Merge "[FEATURE] Run CommandController commands through Scheduler"
[BUGFIX] Fatal error on matching non-existing column, DB Backend

This change prevents a fatal error by checking the returned column
map before calling a method. Instead, utilizes the existing
exception code 1267832524, Unsupported relation for contains() -
but replaces the exception message with "Unsupported/non-existing
column name used in relation matching" which also covers other
error cases well.

Fixes: #7798
Change-Id: I7c36140bb0a736c7783acd55db5410f73eee0e33
[CLEANUP] Performance in Reflection Service's cache handling

This avoids a superflous call to $this->dataCache->has() - instead
uses ->get() directly and uses return value for checking if cache
exists.

Thanks to Raphael Riel for providing the patch!

Change-Id: I01bbc99c5e64d2b264f5508187739439e299397a
Fixes: #28558
[+CLEANUP] correct sql statement building

In the storage backend buildQuery() builds the sql query very basic.
To have a clean structure, we should build the queries as neat as
possible.

First step is, to use table aliases (if any) and build correct
sources.

Change-Id: Idf42bc2119c52e9662bd8086957fa688b59ef901
[TASK] Backported FLOW3 Debugger

This is an improved version of the FLOW3 debugger
for enhanced object debugging i.e. debugging also private
properties through reflection. It is invoked by
Tx_Extbase_Utility_Debugger::var_dump($blog). The method
has several configuration options.

Change-Id: I06b626a9bf419fe50e54a0fd750648e6ee8a868e
Resolves: #32734
[BUGFIX] adjust SignalSlotDispatcher's unit-tests

Since the last backport of FLOW3's changes to the SignalSlotDispatcher
the unit-tests were broken due to unchanged arguments.

Change-Id: Iaf19234c8025bfbd907cbc546cc502f51657f66d
[BUGFIX] Child objects are now fetched only by uid (pid and sys_language_uid are ignored).

$query->getQuerySettings()->setRespectSysLanguage(FALSE) was added.

Change-Id: I30bde0511986f593fb7aebeb96b6fbe2b5ab89f2
Resloves: #31847
Releases: 1.4
[BUGFIX] Repository replace() does not replace unpersisted objects

This adds an additional case to check $this->addedObjects even if
$existingObject has an UID. Without this, adding, persisting and
replacing an object in the same controller action would cause the
replace() command to have no effect.

Thanks to Balisky Christophe for reporting.

Change-Id: Id297b1d5ae261a88aad485b718ea1a3e8be76f3e
Fixes: #7571
Merge "[BUGFIX] Repository replace() does not replace unpersisted objects"
[BUGFIX] Enable some support for workspace previews

The Extbase DB Backend does a versioning overlay, however due to the
relevant table almost never being "pages" the relevant uid is saved
to "_ORIG_uid" instead of applying it to the row. This page writes
back "_ORIG_uid" in those cases, which seems to enable previews to a
usable level.

Thanks to Patrick Schriner.

Change-Id: I4de65643057da6d8cc2b0dc608ed69be4fc73ea7
Resolves: #26732
Relates: #7078
[BUGFIX] Reset LazyObjectStorage array pointer at initialization

This allows current() operation on a still lazy ObjectStorage
without causing errors.

Thanks to Franz Koch for reporting!

Change-Id: Ic5b59b821fce4f1299b714c801fbeddeddf778fd
Fixes: #13256
Releases: 1.2, 1.3, 1.4
Merge "[BUGFIX] Reset LazyObjectStorage array pointer at initialization"
Merge "[BUGFIX] Child objects are now fetched only by uid (pid and sys_language_uid are ignored)."
Merge "[TASK] Backported FLOW3 Debugger"
Revert "[BUGFIX] keep PersistentObjectConverterTest from cloning objects"

Sorry that I let this slip through... The problem now is the following:

If deactivating *clone*, the automatic persistence would find changes even
if the controller decides that the object should not be saved. Thus, this
is a breaking change which can also have a huge security impact. That's
why I am reverting it now.

Thus, we have two possibilities to solve the issue:

1) we revert the patch, clone the objects and the user has to call
   $this->myRepository->update()...
   -> that's what I did now...

2) we could change the behavior as follows, as it is done in FLOW3 now:

- we remove the "clone"
- automatic persistence of objects will be COMPLETELY deactivated
- the user *explicitely* has to save a changed aggregate root into ...Repository->update()
- everything which is part of this aggregate will be saved with it, but referenced other aggregate roots will not be.

The second concept is implemented in FLOW3, and is much more consistent
and a lot faster (in fact, I consider the automagic persistence a design fault
of the early FLOW3 as of now...)

As 2) would not be backwards compatible we'd need to activate it using
a feature flag.

This reverts commit cf1b620b53118eaa89e1817043c0c0f313343520
Conflicts:

	Classes/Property/TypeConverter/PersistentObjectConverter.php

Change-Id: Ie6937e68cd87783f8b64942bdf862a08b572de89
[+FEATURE] make DI work without inject-methods

As in FLOW3 it would be great to use dependency injection without
the inject methods. PHP 5.3 allows to set even protected properties
via the reflection API so we can make use of that.

Change-Id: Ie143a7bba53060769ff0a868d758f754275768c5
Resolves: #32404
Releases: 1.5
[BUGFIX] Set default storagePageUid to current page in BE context

This change sets the default storage page UID for persistence to
the currently selected page if we are in a backend context. Can
still be overridden through TS and still falls back to PID zero.

Change-Id: Ia9c4d380c4f193eea41d69f7acc9c2f3b6a86930
Fixes: #11167
Releases: 1.5
[FEATURE] Shorthand syntax for foreign Validators

This change allows the annotation @validate myext:MyValidator for
properties in Model Objects. The above example is identical to using
@validate Tx_Myext_Validation_Validator_MyValidator - just shorter.

Thanks for Martin Kutschker for reporting and inspiring patch.

Change-Id: Id11022db8317edaf55093a991a3ce90624be78f3
Resolves: #8052
Releases: 1.5