4.1.0 (2017-04-27)

Overview of merged pull requests

TASK: Add release notes for 4.0.0

TODO: - [x] Fix formatting - [ ] Rephrase some too technical descriptions

Related to #869

  • Packages: Flow

TASK: Improve validation documentation to avoid infinite loops

The case that a form displaying action is not annotated to ignore validation of domain models leads to infinite dispatch loops when validation fails. This was not documented well enough.

This change adds an explicit section inside the Validation documentation about this scenario.

  • Packages: Flow

TASK: Remove usage of deprecated ``Yaml::parse`` with file path

The symfony yaml parser deprecated handing in a file path and instead expects the yaml content as string. As that is the same behavior as for the PHP YAML extension the code was adapted to read the file in all cases and pass the content to the respective parser.

Fixes: #824

TASK: Add release notes for 4.1

Fixes #917

  • Packages: Flow

FEATURE: Allow more flexible Doctrine Entity Manager configuration

Currently, we need to add new Configuration Settings for every feature of Doctrine that is configurable through the Entity Manager.

This change adds a signal that triggers before the Doctrine Entity Manager is configured to allow changing configuration settings of Doctrine programmatically.

  • Packages: Flow

BUGFIX: Attempt reconnect only if EntityManager is open

If a \Doctrine\DBAL\DBALException is thrown in persistAll(), a reconnect will be attempted, but only if EntityManager->isOpen() returns true. Otherwise the exception is re-thrown.

Before the connection to the server was sometimes never re-established, since only the specific Flow\Error\Exception was caught.

Also this will prevent hiding exceptions that result in a closed EntityManager.

Fixes #870

BUGFIX: Fix support for PHP 7.1

With PHP 7.1 the behavior of file_get_contents() has been changed allowing negative offsets to be specified.

This change adjusts the signature of TYPO3\Flow\Utility\Files::getFileContents() accordingly.

Note: This is a backport of #821 which has only been applied to the 4.0 branch

Fixes: neos/neos-development-collection#1301, #847

  • Packages: Files

TASK: Use generateRandomString() instead of uniqid()

This reduces the risk of collision on temporary filenames and other identifiers and data.

BUGFIX: Correctly document usage of ``...cookie.domain`` setting

The cookie domain was allowed to be set with a leading dot to signal that it should be valid for all subdomains. This was later changed in the current RFC 6265. Our Session implementation checks for domains without leading dot, while the comment suggested to use it. This is now matched.

Fixes: neos/neos-development-collection#813

BUGFIX: Injected configuration should also be ignored in class schema

Injected properties were always ignored in the persistence class schema as it makes no sense to persist injected properties. Same is obviously true for injected configuration, but this was never done so this change ignores properties with a InjectConfiguration annotation.

This may be breaking if you use InjectConfiguration on a property that you actually want to persist (which is not a good idea anyway). You would need to add another property with the inject annotation and pass the value over to the persisted property in initializeObject for example.

TASK: throw InvalidConfigurationException if there are no secondLevelCache settings for doctrine

#When using more than one doctrine backend, you have to make sure to set TYPO3.Flow.persistence.doctrine.secondLevelCache, or else you will get “An error occurred in the Database Abstraction Layer.” as an exception which doesn’t tell you much. By throwing an approriate exception we make clearer what the problem is.

FEATURE: Webserver group membership is checked in setfilepermissions

File permission script checks that the command line user is a member of the webserver group

  • Packages: Flow

FEATURE: Add wordCount Eel Helper

Return number of words in a string. Good for calculation of reading duration of an article

  • Packages: Eel

TASK: Add missing model annotation in documentation

  • Without this annotation it will not be possible to generate doctrine migration.

FEATURE: Add kickstarter command to create basic XLIFF translation files

This adds a command for creating initial XLIFF translation files.

Call ./flow kickstart:translation –package-key Neos.Demo –language-key de and check the created folders and files at Packages/Sites/Neos.Demo/Resources/Private/Translations.

Fixes #880

  • Packages: Kickstarter

TASK: Declare transitive dependencies

Additionally move an Object configuration to the right place.

  • Packages: Cache Eel Files Flow FluidAdaptor Kickstarter Lock MediaTypes ObjectHandling Pdo

TASK: Adjust DocTools settings

Fixes neos/neos-development-collection#1490

  • Packages: Flow

TASK: Remove requireAutoloaderForPhpUnit() from Booting\Scripts

This is legacy code in such a bad way...

  • Packages: Flow

TASK: Remove unused classes and exceptions

These classes became useless with the release of 4.0 but were overlooked and forgotten.

  • Packages: Flow

!!! TASK: Add rescanPackages() to PackageManagerInterface

This was originally scheduled for 4.0 but forgotten. It is added now, excuse the inconvenience. But you should really not be implementing your own PackageManager.

  • Packages: Flow

TASK: Fix “undefined class” warnings

Mostly fixes comments, but some use statements as well.

BUGFIX: Update docs to code changes

The PersistentResource no longer provides a __toString(), so adjust documentation to that.

  • Packages: Flow

TASK: Use PhpUnit 6

  • Packages: FluidAdaptor

TASK: Remove PhpUnit 4.8 support code

We no longer support PhpUnit 4.8 so some code could be removed.

  • Packages: Cache Flow

BUGFIX: No longer require 4.0 in master branch

This allows installation of the master branch again with the base distribution.

  • Packages: Eel Flow FluidAdaptor Kickstarter

BUGFIX: Fix 4.0 composer manifests

A number of inconsistencies and errors are in the composer manifests of the 4.0 branch:

  • some libraries pinned to strictly 4.0.0
  • outdated/wrong names and namespaces in merged collection manifest
  • inconsistent dependencies on PHP
  • inconsistent dependencies on PhpUnit

The first is an actual bug, since even with 4.0.2 of Flow, those packages are pinned to the 4.0.0 version, even though it should be 4.0.2.

While the last two might in fact be correct, the merged manifest is prone to containing wrong constraints, so this change sync the related constraints with the Flow package itself.

  • Packages: Flow

BUGFIX: Accessing in empty array in PropertyMapper

As $this->typeConverters is not filled during this method, as this method will provide the necessary information, we need to access $typeConverterMap which contains the class name already.

What I did Fix accessing empty array.

How I did it Accessing method internal existing array containing the necessary information.

How to verify it Register two TypeConverters for same conersion with same priority.


I could not find any information about Flow at the given url.

TASK: Add documentation for using PdoBackend with MySQL

When using the PdoBackend with MySQL for caching, the needed caching tables have to be created manually. This adds a hint on creating the tables to the documentation on the PdoBackend.

Solving the documentation part of neos/flow-development-collection#884

This depends on #886

TASK: Increase max-length for cache entries in PdoBackend

When not using SQLite for the PdoBackend and manually creating the cache tables by using the DDL.sql, the content column of the cache table with type TEXT could easily lead to cropped caching entries because of the length restriction. Using MEDIUMTEXT practically prevents this issue.

See also: neos/flow-development-collection#884 and neos/flow-development-collection#885

TASK: Improve documentation on Object-OrientedProgramming

Two small typo 1. doubled «is is» to «it is» 2. doubled «our our» to «our»

  • Packages: Flow

FEATURE: Skip unknown properties for ObjectConverter

This change enables the ObjectConverter (for simple PHP objects) to acknowledge the skipUnknownProperties flag of the property mapping configuration and thus ignore properties from the source which don’t exist in the target.

If a source array contains properties “foo” and “bar” and the target class constructor only contains “foo”, the array can now be mapped if skipUnknownProperties is set in the respective property mapping configuration.

  • Packages: Flow

BUGFIX: Automatic fluid namespace work with PSR-4 autoload paths

Due to the way the namespace to ViewHelpers in packages was constructed it resulted in rather strange errors trying to use one of the automatically prepared namespaces in a template. The namespaces are now constructed accordingly depending on the autoload type.

  • Packages: FluidAdaptor

BUGFIX: Fix changelog and release note rendering

This fixes a few places and adjusts some files so the 4.0 branch has proper release notes and changelog rendering.

  • Packages: Flow

BUGFIX: Consider accounts with ``expirationDate`` in the future as active

What I did

I fixed Account::isActive() behavior when an expirationDate is set.

How I did it

The “Now” injection is now non-lazy, thus the comparison of DateTime objects works.

How to verify it

Run the new functional test TYPO3.Flow/Tests/Functional/Security/AccountTest.php


Fixes #873

TASK: Correct Flow Quickstart docs

fix some typos in updateAction chapter

  • Packages: Flow

BUGFIX: Cleanup of reflection freezing

The reflection freezing process still used a removed method from packages, this has been refactored as the information needed is already available and just needed to be cached.

Additionally a bit of clean up was done while looking at it.

Fixes: #743

  • Packages: Flow

BUGFIX: Improve and fix type conversion

This fixes a bug when converting from array to Resource, base64-encoded data is now decoded as it should be.

On top when converting to array, the there are now the properties collectionName, relativePublicationPath, mediaType and sha1 contained in the resulting array.

  • Packages: Flow

TASK: Improve exception message for AccessDeny interceptor

Adds a custom Interceptor implementation for CSRF protection errors making it easier to debug such errors.

Fixes: #531 Fixes: #660

  • Packages: Flow

BUGFIX: Use request correctly in Fluid Views

The refactoring of Fluid to the Adaptor left some places with invalid handling of request and format inside of Views. The code couldn’t work in it’s current state and is now adapted.

Fixes: #848

  • Packages: FluidAdaptor

BUGFIX: ClassLoader should load AvailableProxies from TEMPORARY_BASE

If you have an old version of the AvailableProxyClasses in FLOW_PATH_DATA and you change FLOW_PATH_TEMPORARY_BASE, always the old proxy classes get loaded.

Resolves: #866

BUGFIX: Proxy Compiler adds newline after end of original code

As any original class might end on a comment line without newline we need to add a newline as part of the proxy building to avoid putting the proxy namespace declaration within a comment. Additionally adds a marker comment declaring the beginning of the proxy code.

Fixes: #779

BUGFIX: Use ``exec`` everywhere instead of ``system``

Instead of using both, the Flow core uses the exec function throughout now and the requirements documentation is updated accordingly.

Fixes: #634

  • Packages: Flow

BUGFIX: Peg generated parsers are excluded from proxy building

The generated parsers AbstractParser, EelParser and FizzleParser are excluded from proxy building as the include statement and the general structure of these make them unsuitable for proxy-ing. This was only a bug before if an AOP advice targeted the mentioned classes, now this cannot happen anymore.

Fixes: #796

BUGFIX: Documented correct implementation of condition ViewHelpers

With the introduction of standalone Fluid the correct way to implement custom condition ViewHelpers has changed but this was not reflected in the doc block of the AbstractConditionViewHelper. This change finally adds the missing explanation.

Fixes: #746

  • Packages: FluidAdaptor

BUGFIX: Resource setSha1() fails on uppercase hash

This change fixes an issue with the Resource object’s setSha1() method which fails if the given hexadecimal number uses uppercase characters for A-F.

On some operating systems or third party services, uppercase hashes may be used. setSha1() now accepts values containing uppercase characters and normalizes them to lowercase. Therefore, when you set a SHA1 with an uppercase hexadecimal string, getSha1() will return it in lowercase.

Related to https://github.com/flownative/flow-google-cloudstorage/issues/4

BUGFIX: Add documentation about package types

Adds a note about the package type prefixes support.

Fixes: #503

TASK: Prevent generating migrations if new migrations available

It is generally undesired to create migrations if there are still migrations that could be migrated. This is now prevented in the command controller unless the force argument is set to circumvent this security measure.

Fixes: #478

  • Packages: Flow

BUGFIX: ``ReflectionService::getClassSchema`` works with Proxies

Getting a class schema from the reflection service should work when giving a doctrine proxy object instead of the actual entity.

Fixes: #561

BUGFIX: Allow factories to build prototypes

This fix allowes to build prototypes using factories by configuring scope: prototype in the Objects.yaml Before the object manager ignores the configuration and generates singletons everytime.

TASK: Pin utility versions to 3.3 branch releases

Avoid installing breaking versions of the utilities in Flow 3.3.

  • Packages: Arrays Lock

TASK: Fix a small typo in github issue template

That one’s really easy.

  • Packages: github