[BUGFIX] Unresolvable dependency if composer.json lacks version

This change fixes a problem which occurs under these circumstances:

* Extension A depends on Extension B
* Extension B is currently installed
* Extension A is not currently installed
* Extension B has composer.json file
* Extension B composer.json file contains no "version" attribute
  or this attribute is empty.

When installing Extension A in this case, EM will fail with an
error saying "could not resolve dependency for xyz" which is a
bit too vague to be helpful. This change fixes this murky error
by throwing a much more specific error saying exactly that the
error stems from the composer.json file missing a "version" no.

Releases: 6.2
Resolves: #57216
Change-Id: I39ab18d6cf35b69600663524827422c732b813cf
Reviewed-on: https://review.typo3.org/28683
Reviewed-by: Alexander Opitz
Tested-by: Alexander Opitz
Reviewed-by: Markus Klein
Tested-by: Markus Klein
[BUGFIX] Invalid argument supplied for foreach in ExtensionModelUtility

Dependecies might be given as empty string, e.g.
array (
	'depends' =>
		array (
			'typo3' => '4.5.0-6.2.99',
		),
	'conflicts' => '',
	'suggests' =>
		array (
		),
),

This is how the kickstarter used to generate it.

Resolves: #57207
Releases: 6.2
Change-Id: I314249f8883ee82fdfa9ee81aca7a526716ccade
Reviewed-on: https://review.typo3.org/28671
Reviewed-by: Alexander Opitz
Tested-by: Alexander Opitz
Reviewed-by: Ernesto Baschny
Reviewed-by: Markus Klein
Tested-by: Markus Klein
[BUGFIX] ClassLoader exits early for invalid class names

Instead of doing calculations if an invalid
class name could still be found and implementing
safeguards that our caching layer does not
fail with invalid identifiers, we exit early
if we find an invalid class name.

Maybe PHP will be smart enough at some point
not calling an autoloader at all if the class name
is invalid anyway so we could the remove this check.

By doing a comprehensive check upfront, we can
remove the safeguard code for the caching layer.

The performance impact of this change breaks down
to be lower than 1ms for a regular TYPO3 request.

Resolves: #57183
Releases: 6.2
Change-Id: Id38bea6b85fbfd280417adca325411410cd9fb63
Reviewed-on: https://review.typo3.org/28553
Reviewed-by: Thomas Maroschik
Reviewed-by: Sebastian Fischer
Reviewed-by: Alexander Stehlik
Reviewed-by: Markus Klein
Tested-by: Markus Klein
Reviewed-by: Alexander Opitz
Tested-by: Alexander Opitz
Reviewed-by: Ernesto Baschny
Tested-by: Ernesto Baschny
[BUGFIX] IRRE bidirectional relation not highlighted

Currently the user is not able to recognize that he is working on
record relations. These records may be used in several places in
the system and the user should be aware of that specific behaviour.

In previous versions of TYPO3 there has been a wrapper which
highlighted input fields, but had no explanation. This was removed
later. To restore the functionality and make it understandable to the
user why he should edit the fields wisely, the wrapper has been replaced
by a flash message. This explains to the user what happens when the
record gets changed.

Resolves: #55553
Releases: 6.2
Change-Id: Ic8a41cdb251cfc8d0134e2b53927ff71ddd5e594
Reviewed-on: https://review.typo3.org/27235
Reviewed-by: Stefan Froemken
Tested-by: Stefan Froemken
Reviewed-by: Markus Klein
Tested-by: Markus Klein
[TASK] Reduce JavaScript dependency in workspace module

The workspace module in the backend has a check and dependency to
the page module in the top frame. To ease debugging of this
backend module in a separate browser process, this dependency is
encapsulated since JavaScript errors are thrown.

Resolves: #57176
Releases: 6.2
Change-Id: I79b4d79ad23d89a70014602d4a04360f709fcab5
Reviewed-on: https://review.typo3.org/28632
Reviewed-by: Oliver Hader
Tested-by: Oliver Hader
[FEATURE] Add complete opcode cache reset

This adds the possibility to reset the complete opcode cache in the
install tool. This functionality may be needed if you update extensions
not via EM and the cache does not stat the files.

Resolves: #56987
Releases: 6.2
Change-Id: I540a31a939fdc6305ad0aff9d39f7e424404925d
Reviewed-on: https://review.typo3.org/28520
Reviewed-by: Stefan Neufeind
Reviewed-by: Ernesto Baschny
Tested-by: Ernesto Baschny
Reviewed-by: Xavier Perseguers
Tested-by: Xavier Perseguers
Reviewed-by: Markus Klein
Tested-by: Markus Klein
[BUGFIX] Typo in Extbase localization file

Fixes: #57238
Releases: 6.2, 6.1, 6.0
Change-Id: Icca7e1637387e2ad31a1368abcd59b1bd443255f
Reviewed-on: https://review.typo3.org/28705
Reviewed-by: Wouter Wolters
Tested-by: Wouter Wolters
Reviewed-by: Xavier Perseguers
Tested-by: Xavier Perseguers
[TASK] Make show_rechis.php mod.php dispatched

The patch adds a new module for the record history view. All calls to
the show_rechis.php script are rewritten to use
BackendUtility::getModuleUrl() to ensure CSRF protection.

Resolves: #56632
Releases: 6.2
Change-Id: I2466c1b08afdd7d987ef38a29500f02641156c07
Reviewed-on: https://review.typo3.org/28205
Reviewed-by: Markus Klein
Tested-by: Markus Klein
[BUGFIX] Don't access property if subject is scalar

Trying to access a property if the subject is
a string, causes the class loader to be triggered
as is_callable is invoked.

We can avoid that by checking if the subject
is an object or array. We can neglect that
is_scalar also returns false for resource types
as this will not really happen in practice.

Resolves: #56993
Releases: 6.2
Change-Id: I94754cd919acc857cd9a8b8e486080c0bf567112
Reviewed-on: https://review.typo3.org/28586
Reviewed-by: Alexander Opitz
Tested-by: Alexander Opitz
Reviewed-by: Christian Weiske
Tested-by: Christian Weiske
Reviewed-by: Christian Kuhn
Tested-by: Christian Kuhn
[BUGFIX] Queries with NULL don't work anymore

See change: I517c0500cad75cae96fd739f2ff7222db80b42a5
At the end of the Typo3DbQueryParser::parseComparison() method the updated
operator for NULL values was no longer passed to the parseDynamicOperand,
generating = NULL instead of IS NULL.

Solved the issue by adding the operator parameter again.

Change-Id: I13c3cecf0bf4c95789032f31ead192b945794484
Resolves: #57130
Related: #55167
Releases: 6.2
Reviewed-on: https://review.typo3.org/28592
Reviewed-by: Markus Klein
Reviewed-by: Felix Oertel
Tested-by: Felix Oertel
[BUGFIX] Fix extension installation process

The download queue is build recursively, but if an
extension is marked for download, it is added
to the queue before its dependencies have been
resolved, which leads to a wrong download and
installation order of extensions.

We also need to add dependency resolving when
marking an extension for installation to fix
the exact same problem when extensions already
reside in the system.

Lastly we must take care of flushed class loader
caches and trigger a rebuild to avoid fatals.
This is done by introducing a signal and registering
a method in package manager as slot that set the
packages for the class loader to trigger a rebuild
of the caches.

The parts of this patch that fix dependency handling
should be backported to older 6.x branches.

Resolves: #57199
Releases: 6.2
Change-Id: Iab343c544bfe2e3e19cbf4c05090eb4994df57b1
Reviewed-on: https://review.typo3.org/28660
Reviewed-by: Sebastian Fischer
Reviewed-by: Philipp Gampe
Tested-by: Philipp Gampe
Reviewed-by: Christian Kuhn
Reviewed-by: Xavier Perseguers
Tested-by: Xavier Perseguers
Reviewed-by: Markus Klein
Tested-by: Markus Klein
[TASK] Add Link to wiki page for opcode cache

Add a link to http://wiki.typo3.org/Opcode_Cache in installers
system environment check messages.

Resolves: #56526
Releases: 6.2
Change-Id: If7314d52426729ce092e281697fbbd67bd6ae9d7
Reviewed-on: https://review.typo3.org/28712
Reviewed-by: Markus Klein
Tested-by: Markus Klein
Reviewed-by: Jigal van Hemert
Tested-by: Jigal van Hemert
[TASK] Add single view for distributions in EM

In order to know what is going to be installed, the
distribution manager should display more information
about a single extension, also with a link to configure
the distribution, if possible.

Releases: 6.2
Resolves: #57212
Change-Id: Ia092ec7b2c5162b33f4fce614415de07ffa2ca47
Reviewed-on: https://review.typo3.org/28677
Reviewed-by: Xavier Perseguers
Tested-by: Xavier Perseguers
Reviewed-by: Helmut Hummel
Tested-by: Helmut Hummel
[BUGFIX] Fix tests according to changes in #57199

Unit tests have been forgotten to be adapted,
so fix them now to make travis happy again.

Also remove the superfluous constructor
in InstallUtility, as both dependencies
are injected anyway.

Resolves: #57247
Related: #57199
Releases: 6.2
Change-Id: I40c39705c2db546b38d94936feac2c8757eed8da
Reviewed-on: https://review.typo3.org/28722
Reviewed-by: Helmut Hummel
Tested-by: Helmut Hummel
[TASK] Make section index from hidden headers work again

Before version 4.7 you could build up a section index with
links to content elements with hidden headers.
Since version 4.7 elements with a hidden header type are sorted
out for the section index, overriding the extra flag "sectionIndex",
which is especially integrated for this.

This patch adds a extra flag for menu configuration sectionIndex
named "includeHiddenHeaders" to make it possible to re-enable
the behaviour of versions before 4.7.

Resolves: #52928
Related: #31767
Documentation: #53699
Releases: 6.2
Change-Id: Iee7f20cfc317c2b624dfc440811c5edc0a367a1e
Reviewed-on: https://review.typo3.org/24876
Reviewed-by: Markus Klein
Tested-by: Markus Klein
Reviewed-by: Wouter Wolters
Reviewed-by: Sebastian Fischer
Reviewed-by: Jigal van Hemert
Tested-by: Jigal van Hemert
[TASK] BasicFileUtility::init is not deprecated yet

Until we fully remove usage of BasicFileUtility throughout the core
(i.e. DataHandler, Import/Export module, ElementBrowser and others),
the core should not pollute the deprecation log with it.

We just individually deprecate methods which are not used anymore.
Methods which are still used in the core are marked as @deprecated
(to visualize this in the IDE) but they won't write to the
deprecation log yet.

Resolves: #57209
Releases: 6.2
Change-Id: I41d7f6c8b7c3c4df77791ce3e6f3f69140d1935d
Reviewed-on: https://review.typo3.org/28674
Reviewed-by: Xavier Perseguers
Reviewed-by: Jigal van Hemert
Tested-by: Jigal van Hemert
Reviewed-by: Wouter Wolters
Tested-by: Wouter Wolters
[BUGFIX] Fix operator "in" for cached queries

This a follow up fix for the extbase query cache. On reusing an already
build query, it was missed to evaluate the multi valued operator and
provide it as array for resolving the parameter placeholders.

Resolves: #57104
Releases: 6.2
Change-Id: I06abbf5279ee05382a7ba314948f7d3f075d84e6
Reviewed-on: https://review.typo3.org/28695
Reviewed-by: Alexander Stehlik
Tested-by: Alexander Stehlik
Tested-by: Wouter Wolters
Reviewed-by: Felix Oertel
Tested-by: Felix Oertel
[BUGFIX] FOLLOWUP Queries with NULL don't work

In https://review.typo3.org/28592 we apparently did not 
fix the whole problem. This followup will deal with
the edge-case of using a similar built statement, which
results in the same hash being generated from the
QueryParser.

Resolves: #57130
Related: #55167
Releases: 6.2
Change-Id: I02a478fcabb89d11054f8f0a3c800965edfd7844
Reviewed-on: https://review.typo3.org/28715
Reviewed-by: Marc Bastian Heinrichs
Tested-by: Marc Bastian Heinrichs
Reviewed-by: Markus Klein
Tested-by: Markus Klein
[TASK] Add warning in Reports module if content adapter is active

The setting [FE][activateContentAdapter] has a large impact on
performance. A warning in the Reports module will encourage
integrators to adapt TypoScript to increase performance.

Resolves: #57249
Releases: 6.2
Change-Id: I935b86ba701d3b0dbac3b807a1ae9312bff223fc
Reviewed-on: https://review.typo3.org/28724
Reviewed-by: Wouter Wolters
Reviewed-by: Alexander Opitz
Tested-by: Alexander Opitz
Reviewed-by: Markus Klein
Tested-by: Markus Klein
[BUGFIX] Fix usage of preparedStatement object in $query->statement

This is a follow-up fix for the integration of preparedStatements in
Extbase. Due to a wrong comparison, an own preparedStatement object
used in $query->statement() would never be executed.

Resolves: #57254
Releases: 6.2
Change-Id: I3176339be309530b50ff89410affa386d7f6f8e8
Reviewed-on: https://review.typo3.org/28726
Reviewed-by: Felix Oertel
Reviewed-by: Markus Klein
Tested-by: Markus Klein