When updating translation packages, the local mirrors.xml.gz should be
reused instead of being fetched again and again.

The list of mirrors virtually never changes and is already updated when
fetching the list of TER extensions in Extension Manager. It should thus
be assumed that the local content is just correct and may be used safely.

Make it possible to use exiting file when uploading files directly in
content element. Finetuned the handling of existing files + loading
bar behavior. And make the modal behave correct with multiple files.

[BUGFIX] Prevent statements with COUNT() and ORDER BY parts for PostgreSQL

In PostgreSQL it's not allowed to use a COUNT statement with an ORDER BY
statement as long as the field for sorting not available in GROUP BY
clause. Therefor we have to parse the SQL and drop ORDER BY clause for
selections with a count.

Since #66597 the EM can be set offline. The value is checked in
TerUtility and Helper, but in TerUtility it's done wrong and leads to
a misleading error "Extension Manager is in offline mode"
which is not true

Currently it isn't possible to use the extension manager without any
internet connection.

This patch adds an option in the extension manager settings to switch to
an offline mode. This means, that the navigation in EM is limited to the
list view. Download of extensions and distributions is disabled.
Furthermore fetching the extension list from TER isn't possible anymore.

Adding usergroup access rights to a page in a draft workspace had no
effect on the preview, the page was still shown in menus. The other way
around didn't work either. Removing access rights would not make the page
available. Previewing wasn't possible at all.

This behavior is fixed. All draft usergroup changes are now respected
when previewing.

[TASK] Remove second argument from calls to GeneralUtility::getUserObj()

In the past GeneralUtility::getUserObj() had a second argument.
There are still calls using this. PHP doesn't mind (because
it supports dynamic number of function arguments),
but it's more correct to remove them.

[BUGFIX] OpenID service uses incorrect priorities to check returned data

OpenID servers return several identifiers that can be used for user
authentication. According to the speciciation openid.claimed_id
is authoritative for authentication if it is set. openid.identity
can be used but openid.claimed_id is more authoritative.

Usually those two identifiers are the same. But some OpenID servers
(namely UNINETT AS server) provide different values for these
identifiers. In such cases preferred value is in the
openid.claimed_id as defined by the specification. However the code
in the OpenID service fails to properly test that because of wrong
priorities during checks.

Currently the doc header title of a folder shows the full path even
if the current folder is inside a mount point. This patch prevents
showing the full path by not disabling the permission check but catch
a thrown exception and return the path inside the mount point.

Delete does not work in combination with foreign_unique,
foreign_selector and showPossibleRecordsSelector = FALSE
because JS tries to re-add the deleted option to
the selector but there is no selector available in this case.

The patch fixes a todo that was marked as code smell already.
The FormEngine class construct relies on a defined return structure
for child nodes. This must not be violated and may throw all kind
of warnings.
An edge case is fixed, where the InlineRecordContainer is called
by FormEngine ajax inline "extend" or by the InlineControlContainer,
those parents must react differently, so this communcation is now
done with an exception.