Skip to content

Latest commit

 

History

History
1054 lines (683 loc) · 52.9 KB

File metadata and controls

1054 lines (683 loc) · 52.9 KB

Overview of merged pull requests

  • Packages: Flow

Replaces boot step names starting with typo3.flow with the renamed ones starting with neos.flow in all PHP files.

  • Packages: Flow

This replaces further occurrences of "TYPO3" with "Neos".

Addresses #823

  • Packages: Eel Flow

Only in the following paths: * Classes/* * Configuration/* * Resources/* * Scripts/*

Especially the tests aren't migrated yet.

  • Packages: Flow

This change removes some further TYPO3 occurrences and replaces them by Neos.

Relates to #823

  • Packages: Files Flow

This change set the offset to 0 (default value in file_get_contents.)

PHP 7.1 changed the behaviour of file_get_contents regarding negative offset (support for negative offsets has been added.)

Without this change the sites Root.fusion is not loaded, so that Files::getFileContents return an empty string. Tested on PHP 7.1.0 and 7.0.12 (worked without this fix).

  • Packages: Files

This change adjusts the path used for the POST argument used for authentication with username and password to the new vendor namespace.

Any application - and especially its Fluid templates and JavaScript - relying on the old path needs to be updated.

This change provides a core migration which carries out these changes.

Resolves #837

  • Packages: Flow

Related to #823

  • Packages: Arrays Files Lock MediaTypes ObjectHandling OpcodeCache Pdo Schema Unicode

The old resource management pre Flow 3.0 used the ResourcePublisher as main service to get public URLs to resources and the ResourcePointer to keep track of unique resources. Both became unnecessary and were deprecated with Flow 3.0 and are therefore removed with this major release.

  • Packages: Flow

Previously a query object like

$query->logicalAnd($query->equals('related.property', 'foo'), $query->equals('related.otherProperty', 'bar'));

would generate an SQL statement with two joins to the related entity, one for each condition, translating to

"get all objects that have any related entity with a property 'foo' and any related entity with otherProperty 'bar'".

With this change, it will only generate a single join and reuse the join for multiple conditionals, therefore translating the above query object to the more common

"get all objects that have a related entity with both a property 'foo' and otherProperty 'bar'"

This also improves performance of such queries by avoiding unnecessary joins.

  • Packages: Flow

Removes a check for an old configuration value that was deprecated since several versions.

  • Packages: Flow

Removed the long-deprecated compat flag for relative uri paths and the according code in the UriBuilder and UriBuilder test.

  • Packages: Flow

Just two small fixes sponsored by phpstan/phpstan.

  • Packages: FluidAdaptor

We used our own workaround to render a section directly without rendering the surrounding template. Now that this is implemented in Fluid core we can remove the code, but still need some small adaption code in order to have assigned view variables available in the section when no variables were given to the renderSection method. In the future we should probably deprecate this behaviour and give the necessary variables directly to the method.

  • Packages: FluidAdaptor
  • Packages: Flow

null

  • Packages: Files

This adds doctrine migrations for MySQL and Postgresql to adjust foreign key and index names to the renamed package Neos.Flow.

Background: Apparently the renamed indexes/keys were not catered for in neos/flow-development-collection@`3b6d38c1b5aa5ab8a51d3f657a720d0d17ae8700 <https://github.com/neos/flow-development-collection/commit/3b6d38c1b5aa5ab8a51d3f657a720d0d17ae8700>`_

Related: neos/neos-development-collection#1374

  • Packages: Flow

null

  • Packages: Flow

null

  • Packages: Flow

in the environmental class "Neos\Cache\EnvironmentConfiguration" is a minor bug (PR #810). in the moment the bug is fixed the parameter $maximumPathLength has not to be set if its equal to the php constant PHP_MAXPATHLEN. In this case it can be removed from the constructor call

<!-- Thanks for your contribution, we appreciate it!

Please read through our pull request guidelines, there are some interesting things there: https://discuss.neos.io/t/creating-a-pull-request/506

And one more thing... Don't forget about the tests! -->

  • Packages: Flow

As mentioned in the github/neos/cache is the decalaration of the property maximumPathLength with a value and then requiring a value for that property inside the constructor that overwrites the declared value EVERY time a minor bug. So the parameter for the constructor should be changed to an optional with the deault value as set for declaration

<!-- Thanks for your contribution, we appreciate it!

Please read through our pull request guidelines, there are some interesting things there: https://discuss.neos.io/t/creating-a-pull-request/506

And one more thing... Don't forget about the tests! -->

  • Packages: Cache

null

  • Packages: Cache

null

  • Packages: Cache

null

  • Packages: Cache

This change also cache the context value, to avoid too much call of the md5 functions.

  • Packages: Cache

This allows to fetch the parser configuration after creating a view to configure interceptors.

  • Packages: Eel Flow FluidAdaptor Kickstarter

This changes the CSS styling of exceptions screens to be better readable (less contract).

  • Packages: Flow
  • Packages: Flow

This change, after thorough discussion, fixes the following issues:

  • When somebody specified "flow core:migrate" without arguments, or mis-spells the package-key argument ("flow core:migrate package=foo"), he now gets an error message instead of all packages which are non-core-packages being migrated.
  • We remove one migration which does not apply cleanly; which was part of Flow 3.x. This migration is also not needed anymore; as people are usually upgrading from Flow 3.2/3.3 where this migration was already applied.

This now also fixes the case that if you upgrade a package which was created for Flow 3.3 to 4.0, all old migrations are run -- and a fatal error existed at the Fluid migration step.

  • Packages: Flow FluidAdaptor

This change fixes a couple of code style issues which slipped in through prior pull requests.

  • Packages: Cache Unicode

ViewHelper render method arguments with multiple type defintions in the docblock are now correctly registered as mixed type arguments.

Fixes: #748

  • Packages: FluidAdaptor

This fix makes sure that the package type is always set in composer manifests created via PackageManager::createPackage() in order to prevent newly created packages (i.e. via the Kickstarter) to be ignored from Flows object management.

Fixes: #782

  • Packages: Flow

With the move to TYPO3Fluid the behavior of the AbstractConditionViewHelper has been changed (see #746). This fix adjusts the validation.ifHasErrors ViewHelper accordingly and adds some minor cosmetic fixes. Other condition ViewHelpers have been adjusted already.

Fixes: #747

  • Packages: FluidAdaptor

The CacheFactoryTest left a folder behind because it didn't use the virtual file system because the mocked environment configuration didn't return the right path.

This change fixes it and prevents the folder being created in the actual filesystem.

  • Packages: Flow

Since the changes to the ConfigurationManager, using flushConfigurationCache leaves an empty configuration behind which is only helpful when you really only want to flush caches.

In case a change was detected refreshConfiguration is more appropriate as it leaves the ConfigurationManager in a usable state afterwards.

  • Packages: Flow

The configuration is now cached with php expressions that read environment variables and constants at runtime to allow writing the configuration cache on a different environment.

  • Packages: Flow

This check if the current target type is an entity or a value object and skip the type converter in this case to avoid nasty side effect.

  • Packages: Flow

This adapts the styling of the \\Neos\\Flow\\var_dump and debug exception handler to match our current CI more. Additionally overhauls the markup of the debug exception handler to a more semantic structure and without inline styles.

  • Packages: Flow

This change fixe a couple of stale reference to classes which have been moved around recently.

  • Packages: Flow

This avoids using external locks, which are prone to platform issues (race conditions and tombstones for lock files or missing semaphore extension) and instead directly uses the file locking mechanism of PHP to lock the cache files.

This should noticeably improve performance for the FileBackend caches and avoid having thousands of Lock files which clobber the file system.

  • Packages: Cache Flow

The setting TYPO3.Flow.utility.environment.temporaryDirectoryBase was deprecated and with this change finally removed.

The temporary path defaults to FLOW_PATH_ROOT . 'Data/Temporary', but you can always override the temporary path via the environment variable FLOW_PATH_TEMPORARY_BASE instead.

Note that in either case a sub path will be created based on the current application context.

  • Packages: Flow

Currently the behaviour of a Scope annotation on an interface depends on the amount of implementations. If there are multiple implementations for the interface, then the configured interface scope is used all the time. When there is only a single implementation, then that implementation will override the configured interface scope.

This breaks for example in case of the SystemLoggerInterface. This interface is marked singleton but the implementation is not because it is reused for other loggers. The expected result is that the configured scope of the interface is kept.

This change adjusts the behaviour and makes sure the Scope defined in an interface is always respected.

  • Packages: Flow

The PersistentResource object retained a couple of getters and setters from 2.x versions of Flow that were deprecated and are now bound for removal.

  • Packages: Flow

\\Neos\\FluidAdaptor\\ViewHelpers\\Form\\AbstractFormFieldViewHelper has a hasMappingErrorOccured which was replaced with corrected spelling as hasMappingErrorOccurred and is deprecated since quite some time.

The wrongly spelled method is removed by this.

  • Packages: FluidAdaptor

In earlier versions of Flow the setting Neos.Flow.reflection.ignoredTags allowed for a simple list of tags. Due to merging and unset issues this was changed to a key/value list, with the key being the tag name and values being boolean to indicate ignorance of the tag.

The old format is now no longer taken into account.

  • Packages: Flow

The method was deprecated with the rewrite for Flow 3.0 and is now bound for removal.

  • Packages: Flow FluidAdaptor

The PropertyMappingConfigurationBuilder class was deprecated and is bound to be removed.

It can be fully replaced by calling PropertyMapper::buildPropertyMappingConfiguration from now on.

Usage in tests is replaced in the same manner.

  • Packages: Flow

The method was deprecated and removed from the interface some time ago and now will finally not be called anymore. That also allows removal of the PersistenceManager factory method in Bootstrap.

  • Packages: Flow

The Argument::isValid method has been deprecated since some time and is no longer in use.

It is therefore removed without replacement. Instead check the validation result returned by Argument::getValidationResults for possible errors.

  • Packages: Flow

The static method was deprecated since Flow 2.3 and is due for removal. Instead create an instance of ActionRequest via the new keyword.

  • Packages: Flow

The media type methods in the HTTP request class have been deprecated since Flow 2.1 and are bound to be removed in this release.

They were replaced by the dedicated MediaTypes utility.

  • Packages: Flow

The CacheManager::getClassTag method was unused since quite some time and became deprecated in previous releases. It is therefore bound for removal in this major version. Additionally the unused tagging constants in the FrontendInterface are removed as they are also no longer needed.

  • Packages: Cache Flow

This introduces a simple type converter which can convert a scalar value (string, integer, float or boolean) into an object by passing that value to the class constructor.

This converter helps developers using Value Objects (not managed by the persistence framework) or other Data Transfer Objects in places where type conversion is supported. One common case is to use Value Object class names as a type hint for arguments in a command line controller method.

  • Packages: Flow
  • Packages: Flow

Now that PHP 7.1 is released, we should make sure we are compatible.

  • Packages: github

See neos/neos-development-collection#1240

  • Packages: Flow

This fixes a problem with old core migrations which were touched accidentally during the Neos vendor namespace change. These migrations shouldn't have been touched since they are executed before the vendor name change.

Now the old migrations may rest in peace with their old vendor name.

  • Packages: Flow

Related to neos/neos-development-collection#1241

Adjusts the Package API and classes to the pending breaking changes to interfaces and removes deprecated classes.

This change adds support for caching PHP code in more cache backends.

With this change you can cache Eel expressions and Fluid templates to any supported backend. Flow proxy class can not use this new feature. If you use in-memory caches for your dynamic PHP code, you need to understand that opcache is disabled with those cache backends!

To use this feature you need to enable allow_url_include = On in your php.ini.

Since 3.0 something like a Party is not attached to the account directly anymore. Fetch your user/party/organization etc. instance on your own using Domain Services or Repositories.

One example is TYPO3\Party\Domain\Service\PartyService.

Adds a way to configure packages to be loaded before via composer.json besides using require in a backwards compatible way.

The configuration option is documented and additionally package key configuration is clarified.

In neos/flow-development-collection#722 the namespace was changed but the classes extending it were not adjusted. Cough, cough.

This fixes that.

  • Packages: FluidAdaptor

Add functional test that validates the different configuration-types of the neos-core in different contexts.

The packages where the validated configuration is loaded from are limited to avoid failing of functional tests if the local configuration has errors. Also the list of packages that is used to find schema files is limited:

  • contexts: Development, Production, Testing
  • configurationTypes: = Caches, Objects, Policy, Routes, Settings
  • configurationPackageKeys: TYPO3.Flow, TYPO3.Fluid, TYPO3.Eel, TYPO3.Kickstart
  • schemaPackageKeys: TYPO3.Flow

The supported contexts, configurationTypes, configurationPackageKeys and schemaPackageKeys are defined as class variables to be overwritten in tests-classed derived from this one.

It seems like that during the switch to the Fluid Adaptor, some namespaces in test were not properly adapted

  • Packages: FluidAdaptor

Despite the fact that Flow technically doesn't depend on Fluid anymore we require it as the majority of projects including Neos uses it anyway. Otherwise developers would need to require it themselves in Flow projects.

This renames the class Resource to ResourceObject and renames the namespaces TYPO3\Flow\Object and TYPO3\Flow\Resource to TYPO3\Flow\ObjectManagement and TYPO3\Flow\ResourceManagement respectively.

A Doctrine migration and two core migrations to help with adjusting code are added.

Resolves neos/flow-development-collection#719

Before this the higher weighted requestFilters were merged into the lower-weighted ones which placed the array-properties of the higher weighted filters last in the merged configuration. This made it impossible to add a new path templatePath that would be considered before.

This patch removes the merging of view-configurations entirely since this lead to confusion in the integration because the merging was unexpected.

This is breaking if you have multiple configurations with filters that apply to the same request and expect some option from one of the configurations to still be present despite another configuration having a higher weight.

  • Packages: MediaTypes

MediaTypes::getMediaTypeFromFileContent() can be used to return the media type from a given file content.

  • Packages: MediaTypes

Since the Request and Response instances are supposed to change inside the ComponentChain, it is error-prone to keep a reference to the initial instances inside the RequestHandler. This change removes the class properties $request and $response and instead uses local variables.

This is marked breaking only for the reason that some RequestHandler implementations could exist that still somehow depend on this internal detail. It is not really breaking as those properties were never part of the public api though.

Adds a new getter method to the AuthenticationManagerInterface, that has to return all provided authentication providers.

When run in a Neos setup, the test would fail, since that uses Neos_Session.

!!!TASK: Extract caching to separate package

Splits off the caching framework into a separate package. All classes and tests have been decoupled and depend only on the independent utilities. Tests have been adapted and run with PHPUnit only.

With the CacheManager, an extended CacheFactory and the (now) deprecated AbstractCacheBackend, remaining in Flow there should be no breaking changes to any public API.

This is marked breaking as it deprecates the @api marked AbstractCacheBackend. Instead cache backends should now extend from the Neos\\Cache\\Backend\\AbstractBackend and adapt to the new constructor.

  • Packages: Cache FluidAdaptor

Replaces TYPO3.Fluid with Neos.FluidAdaptor integrating standalone fluid.

This change brings the following:

  • Standalone Fluid integration (see https://github.com/typo3/fluid)
  • Flow no longer depends on Fluid, the default View is configurable
  • Partials can be called with a package prefix "Vendor.Package:Path/Partial"

Standalone Fluid in general is faster and many of the Flow specific ViewHelpers were rewritten to take advantage of compiling as well to make it even faster.

The change is breaking because:

  • Standalone Fluid is a major rewrite, it might react differently for edge cases
  • Notably escaping now also escapes single quotes.
  • The ViewInterface got a new static createWithOptions(array $options) construct

method, which needs to be implemented by custom view classes to have a defined way to instantiate views.

  • Flow no longer depends on Fluid, which means you might need to require it yourself in your
distribution or package(s)
  • TYPO3\\Fluid\\* classes have moved to Neos\\FluidAdaptor\\* and a lot of classes are gone and instead to be used from the standalone fluid package if needed.
  • Boilerplate code to create Fluid views is slightly different and might need to be adapted in projects.
  • Packages: FluidAdaptor

With this helper it is possible to flip the keys and values from an array.

Array.flip(array)

Creating a new TypeConverter can have major side-effects on existing applications. This change allows TypeConverters to have a negative priority in order to mark them "internal". Internal TypeConverters will be skipped from PropertyMapping by default.

To use them explicitly the PropertyMappingConfiguration can be used:

$configuration = new PropertyMappingConfiguration();
$configuration->setTypeConverter(new SomeInternalTypeConverter());
$this->propertyMapper->convert($source, $targetType, $configuration);

Resolves: #695

As a followup to neos/flow-welcome#4 this change removes the routing rules and have them included if the TYPO3.Welcome package is active.

All this to avoud The SubRoute Package "TYPO3.Welcome" referenced in Route "Welcome" is not available. when you start a new installation

Solves neos/flow-development-collection#698

In order to match/resolve unambiguously for every dynamic optional route part a corresponding default value has to be specified:

``` -

uriPattern: 'foo/({bar})' defaults:

'bar': 'without-this-it-wont-work'

```

With this change an exception is thrown when a route with optional dynamic parts without corresponding defaults is configured.

Resolves: #683

This removes the fallback for password hashing strategies.

This is a breaking change for installations that had accounts created with a Flow version lower than 1.1 (and whose passwords were never updated since then). In that case make sure to add the prefix to the corresponding accounts in the accounts table. For the default configuration the corresponding SQL query would be:

` UPDATE typo3_flow_security_account SET credentialssource = CONCAT('bcrypt=>', credentialssource) `

Background:

Due to some problems caused by older Flow installations that migrated from 1.0, a fallback mechanism for the password hashing strategies was implemented for password hashes that don't contain the strategy prefix (i.e. "bcrypt=>").

As a result the default strategy for HashService::hashPassword() is a different one than for HashService::validatePassword() unless specified explicitly because for the latter the configured fallback strategy would be used rather than the default.

Fixes: #681

This removes the deprecated injection of settings via the @Flow\Inject annotation.

This extends DateTimeConverter and StringConverter so that they support any class implementing the \DateTimeInterface (including \DateTimeImmutable).

Resolves: #677

With this change static methods annotated @Flow\CompileStatic can now be protected allowing for more concise public APIs.

If the annotated method is private or not static an exception is thrown during compile time in Production context.

As a side-effect this change adds a new API method ReflectionService:: getMethodsAnnotatedWith() that allows for retrieval of all method names of a class that are annotated with a given annotation.

Related: #662

Hi there,

This PR is just to make the kickstart code generators more in tune with the usage of fully qualified class names throughout the rest of the codebases of Neos and Flow.

Small change for $source parameter documentation. We can set path to the source file but it was not clear if we should use . or / as a directory separator. This change adds information that slash should be used.

This adds support for proxied final classes.

Previously those were always skipped from proxy building disallowing Dependency Injection. Besides final classes could not be targeted by AOP advices.

With this change, final classes are now also proxied by default. To _disable_ AOP/DI for those the already existing Proxy annotation can be used:

```

use TYPO3\Flow\Annotations as Flow;

/**
  • @Flow\Proxy(false)

*/

final class SomeClass {

// ...

```

Background:

Marking classes final is an important tool for framework code as it allows to define extension points more explicitly, but until now we had to avoid the final keyword in order to support DI and AOP.

Resolves #496

The createDirectoryRecursively() method now checks for an existing symlink before trying to create a directory. Before it only checked for an existing directory, sometimes leading to false negatives.

Fixes #647

  • Packages: Files

Hi there,

the fallback MVC view contained three invalid links and a couple of TYPO3 labels and css class names, that are replaced with this PR. Not sure about the wording though, so please have a look if it's okay :)

(BTW: Just for completeness, I applied the same to the LockHoldingStackPage.html)

Now the stripTags string eel helper will accept a second optional argument in form of a list of allowed tags which will not be stripped from the string.

The indentation of the examples are wrong. They cause an exception if they are copied without the knowledge of the right indentation.

  • Packages: ObjectHandling

Adds a new helper method to the string helper for splitting strings with a PREG pattern.

Example:

```

String.pregSplit("foo bar baz", "/\s+/") == ['foo', 'bar', 'baz'] ```

FLOW-404 #close

Preparations for easier namespace migration.

  • Packages: ObjectHandling

The ActionController::redirectToReferringRequest method was deprecated in 3.0 and therefore removed for 4.0.

A merge into master that was done with too little cleanup changed the branch and version numbers in a few places where they should have been left unchanged.

Also some changelog files were added that are not supposed to be in master.