- 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
TASK: Adjust Neos.Utility.Arrays Neos.Utility.Files Neos.Utility.Lock Neos.Utility.MediaTypes Neos.Utility.ObjectHandling Neos.Utility.OpcodeCache Neos.Utility.Pdo Neos.Utility.Schema Neos.Utility.Unicode paths in composer.json
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! -->
- [ ] Code follows the PSR-2 coding style
- [ ] Tests have been created, run and adjusted as needed
- [ ] The PR is created against the [lowest maintained branch](https://www.neos.io/features/release-roadmap.html)
- 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! -->
- [ ] Code follows the PSR-2 coding style
- [ ] Tests have been created, run and adjusted as needed
- [ ] The PR is created against the [lowest maintained branch](https://www.neos.io/features/release-roadmap.html)
- 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 staticcreateWithOptions(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 toNeos\\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.