From d4187760955a218ac0f3ccbf0d8404309b509d24 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Albrecht=20Ko=CC=88hnlein?= Date: Wed, 24 May 2023 16:50:10 +0200 Subject: [PATCH 01/37] Fix return type in DocBlock --- Neos.Flow/Classes/Session/SessionInterface.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Neos.Flow/Classes/Session/SessionInterface.php b/Neos.Flow/Classes/Session/SessionInterface.php index f1de419ff6..fdfbb1418e 100644 --- a/Neos.Flow/Classes/Session/SessionInterface.php +++ b/Neos.Flow/Classes/Session/SessionInterface.php @@ -66,7 +66,7 @@ public function renewId(); * Returns the contents (array) associated with the given key. * * @param string $key An identifier for the content stored in the session. - * @return array The contents associated with the given key + * @return mixed The contents associated with the given key * @throws Exception\SessionNotStartedException */ public function getData($key); From 68edb95d8bffb2a98c2a5b61e54c0e70a8d183f7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Albrecht=20K=C3=B6hnlein?= Date: Fri, 9 Jun 2023 17:19:05 +0200 Subject: [PATCH 02/37] Update description in docblock Co-authored-by: Simon Krull --- Neos.Flow/Classes/Session/SessionInterface.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Neos.Flow/Classes/Session/SessionInterface.php b/Neos.Flow/Classes/Session/SessionInterface.php index fdfbb1418e..0f97acae4f 100644 --- a/Neos.Flow/Classes/Session/SessionInterface.php +++ b/Neos.Flow/Classes/Session/SessionInterface.php @@ -63,7 +63,7 @@ public function getId(); public function renewId(); /** - * Returns the contents (array) associated with the given key. + * Returns the content (mixed) associated with the given key. * * @param string $key An identifier for the content stored in the session. * @return mixed The contents associated with the given key From 8c39d0305979df9928356b21d3e08dcce8b879ac Mon Sep 17 00:00:00 2001 From: Soren Malling Date: Thu, 22 Jun 2023 16:56:51 +0200 Subject: [PATCH 03/37] Publish static collection, only if collection is present --- Neos.Flow/Classes/Package.php | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/Neos.Flow/Classes/Package.php b/Neos.Flow/Classes/Package.php index 058004f6ab..725cbed0b7 100644 --- a/Neos.Flow/Classes/Package.php +++ b/Neos.Flow/Classes/Package.php @@ -107,7 +107,9 @@ public function boot(Core\Bootstrap $bootstrap) } $objectManager = $bootstrap->getObjectManager(); $resourceManager = $objectManager->get(ResourceManager::class); - $resourceManager->getCollection(ResourceManager::DEFAULT_STATIC_COLLECTION_NAME)->publish(); + if ($staticCollection = $resourceManager->getCollection(ResourceManager::DEFAULT_STATIC_COLLECTION_NAME)) { + $staticCollection->publish(); + } }; $dispatcher->connect(Monitor\FileMonitor::class, 'filesHaveChanged', $publishResources); From 655ac768f2eac5bd4805a1fcf1442cc968554e5e Mon Sep 17 00:00:00 2001 From: mhsdesign <85400359+mhsdesign@users.noreply.github.com> Date: Sun, 14 May 2023 20:31:18 +0200 Subject: [PATCH 04/37] BUGFIX: ConfigurationManager with disabled cache doesn't replace environment variables in settings (no cache mode is technically possible by not setting $temporaryDirectoryPath via `setTemporaryDirectoryPath`) --- Neos.Flow/Classes/Configuration/ConfigurationManager.php | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/Neos.Flow/Classes/Configuration/ConfigurationManager.php b/Neos.Flow/Classes/Configuration/ConfigurationManager.php index 207c12c96e..a283311477 100644 --- a/Neos.Flow/Classes/Configuration/ConfigurationManager.php +++ b/Neos.Flow/Classes/Configuration/ConfigurationManager.php @@ -423,6 +423,11 @@ protected function processConfigurationType(string $configurationType) $this->writeConfigurationCacheFile($cachePathAndFilename, $configurationType); $this->replaceConfigurationForConfigurationType($configurationType, $cachePathAndFilename); @unlink($cachePathAndFilename); + } else { + // in case the cache is disabled (implicitly, because temporaryDirectoryPath is null) + // we need to still handle replacing the environment variables like `%FLOW_PATH_ROOT%` in the configuration + $configuration = $this->unprocessedConfiguration[$configurationType]; + $this->configurations[$configurationType] = eval('return ' . $this->replaceVariablesInPhpString(var_export($configuration, true)) . ';'); } } From fcb549a2203a978f2b286aaac5eaeed18d5036e0 Mon Sep 17 00:00:00 2001 From: mhsdesign <85400359+mhsdesign@users.noreply.github.com> Date: Fri, 14 Jul 2023 11:59:53 +0200 Subject: [PATCH 05/37] BUGFIX: Proper uncached configurationManager mode It is purposely not allowed to disable the cache at runtime (when you have a configuration manager at hand) The usage to create a configuration manager without caching, you need to have your own request handler and boot only this step: ``` Scripts::initializeConfiguration($this->bootstrap, false); ``` --- .../Configuration/ConfigurationManager.php | 16 +++++++++++----- Neos.Flow/Classes/Core/Booting/Scripts.php | 6 ++++-- 2 files changed, 15 insertions(+), 7 deletions(-) diff --git a/Neos.Flow/Classes/Configuration/ConfigurationManager.php b/Neos.Flow/Classes/Configuration/ConfigurationManager.php index a283311477..6b822f082e 100644 --- a/Neos.Flow/Classes/Configuration/ConfigurationManager.php +++ b/Neos.Flow/Classes/Configuration/ConfigurationManager.php @@ -152,7 +152,7 @@ class ConfigurationManager protected $cacheNeedsUpdate = false; /** - * An absolute file path to store configuration caches in. If null no cache will be active. + * An absolute file path to store configuration caches in. If not set, no cache will be active. * * @var string */ @@ -174,12 +174,18 @@ public function __construct(ApplicationContext $context) } /** - * Set an absolute file path to store configuration caches in. If null no cache will be active. + * Set an absolute file path to store configuration caches in. + * + * If never called no cache will be active. * * @param string $temporaryDirectoryPath */ public function setTemporaryDirectoryPath(string $temporaryDirectoryPath): void { + if (!is_dir($temporaryDirectoryPath)) { + throw new \RuntimeException(sprintf('Cannot set temporaryDirectoryPath to "%s" for the ConfigurationManager cache, as it must be a valid directory.', $temporaryDirectoryPath)); + } + $this->temporaryDirectoryPath = $temporaryDirectoryPath; $this->loadConfigurationsFromCache(); @@ -394,7 +400,7 @@ protected function loadConfigurationsFromCache(): void public function flushConfigurationCache(): void { $this->configurations = [self::CONFIGURATION_TYPE_SETTINGS => []]; - if ($this->temporaryDirectoryPath === null) { + if (!isset($this->temporaryDirectoryPath)) { return; } @@ -414,7 +420,7 @@ public function flushConfigurationCache(): void */ protected function processConfigurationType(string $configurationType) { - if ($this->temporaryDirectoryPath !== null) { + if (isset($this->temporaryDirectoryPath)) { // to avoid issues regarding concurrency and invalid filesystem characters // the configurationType is encoded as a uniqueid $configurationTypeId = \uniqid(\sprintf('%x', \crc32($configurationType)), true); @@ -447,7 +453,7 @@ protected function saveConfigurationCache(): void } } - if ($this->temporaryDirectoryPath === null) { + if (!isset($this->temporaryDirectoryPath)) { return; } diff --git a/Neos.Flow/Classes/Core/Booting/Scripts.php b/Neos.Flow/Classes/Core/Booting/Scripts.php index d111ab30e8..b0d8e9c49b 100644 --- a/Neos.Flow/Classes/Core/Booting/Scripts.php +++ b/Neos.Flow/Classes/Core/Booting/Scripts.php @@ -197,7 +197,7 @@ public static function initializePackageManagement(Bootstrap $bootstrap) * @return void * @throws FlowException */ - public static function initializeConfiguration(Bootstrap $bootstrap) + public static function initializeConfiguration(Bootstrap $bootstrap, bool $enableCache = true) { $context = $bootstrap->getContext(); $environment = new Environment($context); @@ -209,7 +209,9 @@ public static function initializeConfiguration(Bootstrap $bootstrap) $configurationManager = new ConfigurationManager($context); $configurationManager->setPackages($packageManager->getFlowPackages()); - $configurationManager->setTemporaryDirectoryPath($environment->getPathToTemporaryDirectory()); + if ($enableCache) { + $configurationManager->setTemporaryDirectoryPath($environment->getPathToTemporaryDirectory()); + } $yamlSource = new YamlSource(); $configurationManager->registerConfigurationType(ConfigurationManager::CONFIGURATION_TYPE_CACHES, new MergeLoader($yamlSource, ConfigurationManager::CONFIGURATION_TYPE_CACHES)); From 50254b8a4cd2ec842af3e7b184fbfdf70c145b94 Mon Sep 17 00:00:00 2001 From: mhsdesign <85400359+mhsdesign@users.noreply.github.com> Date: Fri, 14 Jul 2023 15:18:51 +0200 Subject: [PATCH 06/37] WE HATE PSALM --- .../Classes/Configuration/ConfigurationManager.php | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/Neos.Flow/Classes/Configuration/ConfigurationManager.php b/Neos.Flow/Classes/Configuration/ConfigurationManager.php index 6b822f082e..9e15e9f872 100644 --- a/Neos.Flow/Classes/Configuration/ConfigurationManager.php +++ b/Neos.Flow/Classes/Configuration/ConfigurationManager.php @@ -154,9 +154,9 @@ class ConfigurationManager /** * An absolute file path to store configuration caches in. If not set, no cache will be active. * - * @var string + * @var ?string */ - protected $temporaryDirectoryPath; + protected $temporaryDirectoryPath = null; /** * @var array @@ -400,7 +400,7 @@ protected function loadConfigurationsFromCache(): void public function flushConfigurationCache(): void { $this->configurations = [self::CONFIGURATION_TYPE_SETTINGS => []]; - if (!isset($this->temporaryDirectoryPath)) { + if ($this->temporaryDirectoryPath === null) { return; } @@ -420,7 +420,7 @@ public function flushConfigurationCache(): void */ protected function processConfigurationType(string $configurationType) { - if (isset($this->temporaryDirectoryPath)) { + if ($this->temporaryDirectoryPath !== null) { // to avoid issues regarding concurrency and invalid filesystem characters // the configurationType is encoded as a uniqueid $configurationTypeId = \uniqid(\sprintf('%x', \crc32($configurationType)), true); @@ -453,7 +453,7 @@ protected function saveConfigurationCache(): void } } - if (!isset($this->temporaryDirectoryPath)) { + if ($this->temporaryDirectoryPath === null) { return; } From 9175de0227bcf9642669a402a995a10c18ead0d8 Mon Sep 17 00:00:00 2001 From: mhsdesign <85400359+mhsdesign@users.noreply.github.com> Date: Fri, 14 Jul 2023 20:12:39 +0200 Subject: [PATCH 07/37] TASK: Use PolicyLoader without cache if ConfigurationManager is also without cache --- Neos.Flow/Classes/Configuration/ConfigurationManager.php | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/Neos.Flow/Classes/Configuration/ConfigurationManager.php b/Neos.Flow/Classes/Configuration/ConfigurationManager.php index 9e15e9f872..4b58f91390 100644 --- a/Neos.Flow/Classes/Configuration/ConfigurationManager.php +++ b/Neos.Flow/Classes/Configuration/ConfigurationManager.php @@ -252,7 +252,9 @@ private function convertLegacyProcessingType(string $configurationType, string $ return new ObjectsLoader(new YamlSource()); case self::CONFIGURATION_PROCESSING_TYPE_POLICY: $policyLoader = new PolicyLoader(new YamlSource()); - $policyLoader->setTemporaryDirectoryPath($this->temporaryDirectoryPath); + if ($this->temporaryDirectoryPath) { + $policyLoader->setTemporaryDirectoryPath($this->temporaryDirectoryPath); + } return $policyLoader; case self::CONFIGURATION_PROCESSING_TYPE_ROUTES: return new RoutesLoader(new YamlSource(), $this); From 74dae7da3913351d7d6bfc549cbf08e335c74f27 Mon Sep 17 00:00:00 2001 From: Karsten Dambekalns Date: Mon, 17 Jul 2023 17:29:01 +0200 Subject: [PATCH 08/37] TASK: Update actions/checkout in add-pr-labels action MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Switches to a version that uses Node 16. The same is needed for the `actions-ecosystem/action-add-labels`, but that has not been released since 2020… --- .github/workflows/add-pr-labels.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/add-pr-labels.yml b/.github/workflows/add-pr-labels.yml index 1c492a3dd0..50e6cbfbe4 100644 --- a/.github/workflows/add-pr-labels.yml +++ b/.github/workflows/add-pr-labels.yml @@ -9,7 +9,7 @@ jobs: runs-on: ubuntu-latest steps: - name: Checkout - uses: actions/checkout@v2 + uses: actions/checkout@v3 with: fetch-depth: 0 - name: Maybe remove base branch label From 8327012776139e3b445a941170ee79d43c1bf249 Mon Sep 17 00:00:00 2001 From: Jenkins Date: Mon, 17 Jul 2023 15:37:49 +0000 Subject: [PATCH 09/37] TASK: Update references [skip ci] --- .../TheDefinitiveGuide/PartV/AnnotationReference.rst | 2 +- .../Documentation/TheDefinitiveGuide/PartV/CommandReference.rst | 2 +- .../Documentation/TheDefinitiveGuide/PartV/SignalsReference.rst | 2 +- .../TheDefinitiveGuide/PartV/TypeConverterReference.rst | 2 +- .../TheDefinitiveGuide/PartV/ValidatorReference.rst | 2 +- 5 files changed, 5 insertions(+), 5 deletions(-) diff --git a/Neos.Flow/Documentation/TheDefinitiveGuide/PartV/AnnotationReference.rst b/Neos.Flow/Documentation/TheDefinitiveGuide/PartV/AnnotationReference.rst index bc92ccf15e..cba07a84d3 100644 --- a/Neos.Flow/Documentation/TheDefinitiveGuide/PartV/AnnotationReference.rst +++ b/Neos.Flow/Documentation/TheDefinitiveGuide/PartV/AnnotationReference.rst @@ -3,7 +3,7 @@ Flow Annotation Reference ========================= -This reference was automatically generated from code on 2023-06-29 +This reference was automatically generated from code on 2023-07-17 .. _`Flow Annotation Reference: After`: diff --git a/Neos.Flow/Documentation/TheDefinitiveGuide/PartV/CommandReference.rst b/Neos.Flow/Documentation/TheDefinitiveGuide/PartV/CommandReference.rst index e1fb704c3e..7666b325f4 100644 --- a/Neos.Flow/Documentation/TheDefinitiveGuide/PartV/CommandReference.rst +++ b/Neos.Flow/Documentation/TheDefinitiveGuide/PartV/CommandReference.rst @@ -19,7 +19,7 @@ commands that may be available, use:: ./flow help -The following reference was automatically generated from code on 2023-06-29 +The following reference was automatically generated from code on 2023-07-17 .. _`Flow Command Reference: NEOS.FLOW`: diff --git a/Neos.Flow/Documentation/TheDefinitiveGuide/PartV/SignalsReference.rst b/Neos.Flow/Documentation/TheDefinitiveGuide/PartV/SignalsReference.rst index b11125706a..7a0e4eb3d3 100644 --- a/Neos.Flow/Documentation/TheDefinitiveGuide/PartV/SignalsReference.rst +++ b/Neos.Flow/Documentation/TheDefinitiveGuide/PartV/SignalsReference.rst @@ -3,7 +3,7 @@ Flow Signals Reference ====================== -This reference was automatically generated from code on 2023-06-29 +This reference was automatically generated from code on 2023-07-17 .. _`Flow Signals Reference: AbstractAdvice (``Neos\Flow\Aop\Advice\AbstractAdvice``)`: diff --git a/Neos.Flow/Documentation/TheDefinitiveGuide/PartV/TypeConverterReference.rst b/Neos.Flow/Documentation/TheDefinitiveGuide/PartV/TypeConverterReference.rst index 215d507ad0..72d78768f9 100644 --- a/Neos.Flow/Documentation/TheDefinitiveGuide/PartV/TypeConverterReference.rst +++ b/Neos.Flow/Documentation/TheDefinitiveGuide/PartV/TypeConverterReference.rst @@ -3,7 +3,7 @@ Flow TypeConverter Reference ============================ -This reference was automatically generated from code on 2023-06-29 +This reference was automatically generated from code on 2023-07-17 .. _`Flow TypeConverter Reference: ArrayConverter`: diff --git a/Neos.Flow/Documentation/TheDefinitiveGuide/PartV/ValidatorReference.rst b/Neos.Flow/Documentation/TheDefinitiveGuide/PartV/ValidatorReference.rst index 798e522df5..f235319413 100644 --- a/Neos.Flow/Documentation/TheDefinitiveGuide/PartV/ValidatorReference.rst +++ b/Neos.Flow/Documentation/TheDefinitiveGuide/PartV/ValidatorReference.rst @@ -3,7 +3,7 @@ Flow Validator Reference ======================== -This reference was automatically generated from code on 2023-06-29 +This reference was automatically generated from code on 2023-07-17 .. _`Flow Validator Reference: AggregateBoundaryValidator`: From 68d6b34b0590a709fbcea7adee259c3d3a6eb50a Mon Sep 17 00:00:00 2001 From: Jenkins Date: Mon, 17 Jul 2023 15:38:37 +0000 Subject: [PATCH 10/37] TASK: Update references [skip ci] --- .../TheDefinitiveGuide/PartV/AnnotationReference.rst | 2 +- .../Documentation/TheDefinitiveGuide/PartV/CommandReference.rst | 2 +- .../Documentation/TheDefinitiveGuide/PartV/SignalsReference.rst | 2 +- .../TheDefinitiveGuide/PartV/TypeConverterReference.rst | 2 +- .../TheDefinitiveGuide/PartV/ValidatorReference.rst | 2 +- 5 files changed, 5 insertions(+), 5 deletions(-) diff --git a/Neos.Flow/Documentation/TheDefinitiveGuide/PartV/AnnotationReference.rst b/Neos.Flow/Documentation/TheDefinitiveGuide/PartV/AnnotationReference.rst index bc92ccf15e..cba07a84d3 100644 --- a/Neos.Flow/Documentation/TheDefinitiveGuide/PartV/AnnotationReference.rst +++ b/Neos.Flow/Documentation/TheDefinitiveGuide/PartV/AnnotationReference.rst @@ -3,7 +3,7 @@ Flow Annotation Reference ========================= -This reference was automatically generated from code on 2023-06-29 +This reference was automatically generated from code on 2023-07-17 .. _`Flow Annotation Reference: After`: diff --git a/Neos.Flow/Documentation/TheDefinitiveGuide/PartV/CommandReference.rst b/Neos.Flow/Documentation/TheDefinitiveGuide/PartV/CommandReference.rst index e1fb704c3e..7666b325f4 100644 --- a/Neos.Flow/Documentation/TheDefinitiveGuide/PartV/CommandReference.rst +++ b/Neos.Flow/Documentation/TheDefinitiveGuide/PartV/CommandReference.rst @@ -19,7 +19,7 @@ commands that may be available, use:: ./flow help -The following reference was automatically generated from code on 2023-06-29 +The following reference was automatically generated from code on 2023-07-17 .. _`Flow Command Reference: NEOS.FLOW`: diff --git a/Neos.Flow/Documentation/TheDefinitiveGuide/PartV/SignalsReference.rst b/Neos.Flow/Documentation/TheDefinitiveGuide/PartV/SignalsReference.rst index b11125706a..7a0e4eb3d3 100644 --- a/Neos.Flow/Documentation/TheDefinitiveGuide/PartV/SignalsReference.rst +++ b/Neos.Flow/Documentation/TheDefinitiveGuide/PartV/SignalsReference.rst @@ -3,7 +3,7 @@ Flow Signals Reference ====================== -This reference was automatically generated from code on 2023-06-29 +This reference was automatically generated from code on 2023-07-17 .. _`Flow Signals Reference: AbstractAdvice (``Neos\Flow\Aop\Advice\AbstractAdvice``)`: diff --git a/Neos.Flow/Documentation/TheDefinitiveGuide/PartV/TypeConverterReference.rst b/Neos.Flow/Documentation/TheDefinitiveGuide/PartV/TypeConverterReference.rst index 215d507ad0..72d78768f9 100644 --- a/Neos.Flow/Documentation/TheDefinitiveGuide/PartV/TypeConverterReference.rst +++ b/Neos.Flow/Documentation/TheDefinitiveGuide/PartV/TypeConverterReference.rst @@ -3,7 +3,7 @@ Flow TypeConverter Reference ============================ -This reference was automatically generated from code on 2023-06-29 +This reference was automatically generated from code on 2023-07-17 .. _`Flow TypeConverter Reference: ArrayConverter`: diff --git a/Neos.Flow/Documentation/TheDefinitiveGuide/PartV/ValidatorReference.rst b/Neos.Flow/Documentation/TheDefinitiveGuide/PartV/ValidatorReference.rst index 798e522df5..f235319413 100644 --- a/Neos.Flow/Documentation/TheDefinitiveGuide/PartV/ValidatorReference.rst +++ b/Neos.Flow/Documentation/TheDefinitiveGuide/PartV/ValidatorReference.rst @@ -3,7 +3,7 @@ Flow Validator Reference ======================== -This reference was automatically generated from code on 2023-06-29 +This reference was automatically generated from code on 2023-07-17 .. _`Flow Validator Reference: AggregateBoundaryValidator`: From f2531b850830ccf46274dd45cadd03edffdbc073 Mon Sep 17 00:00:00 2001 From: Jenkins Date: Mon, 17 Jul 2023 15:39:24 +0000 Subject: [PATCH 11/37] TASK: Update references [skip ci] --- .../TheDefinitiveGuide/PartV/AnnotationReference.rst | 2 +- .../Documentation/TheDefinitiveGuide/PartV/CommandReference.rst | 2 +- .../Documentation/TheDefinitiveGuide/PartV/SignalsReference.rst | 2 +- .../TheDefinitiveGuide/PartV/TypeConverterReference.rst | 2 +- .../TheDefinitiveGuide/PartV/ValidatorReference.rst | 2 +- 5 files changed, 5 insertions(+), 5 deletions(-) diff --git a/Neos.Flow/Documentation/TheDefinitiveGuide/PartV/AnnotationReference.rst b/Neos.Flow/Documentation/TheDefinitiveGuide/PartV/AnnotationReference.rst index bc92ccf15e..cba07a84d3 100644 --- a/Neos.Flow/Documentation/TheDefinitiveGuide/PartV/AnnotationReference.rst +++ b/Neos.Flow/Documentation/TheDefinitiveGuide/PartV/AnnotationReference.rst @@ -3,7 +3,7 @@ Flow Annotation Reference ========================= -This reference was automatically generated from code on 2023-06-29 +This reference was automatically generated from code on 2023-07-17 .. _`Flow Annotation Reference: After`: diff --git a/Neos.Flow/Documentation/TheDefinitiveGuide/PartV/CommandReference.rst b/Neos.Flow/Documentation/TheDefinitiveGuide/PartV/CommandReference.rst index e1fb704c3e..7666b325f4 100644 --- a/Neos.Flow/Documentation/TheDefinitiveGuide/PartV/CommandReference.rst +++ b/Neos.Flow/Documentation/TheDefinitiveGuide/PartV/CommandReference.rst @@ -19,7 +19,7 @@ commands that may be available, use:: ./flow help -The following reference was automatically generated from code on 2023-06-29 +The following reference was automatically generated from code on 2023-07-17 .. _`Flow Command Reference: NEOS.FLOW`: diff --git a/Neos.Flow/Documentation/TheDefinitiveGuide/PartV/SignalsReference.rst b/Neos.Flow/Documentation/TheDefinitiveGuide/PartV/SignalsReference.rst index b11125706a..7a0e4eb3d3 100644 --- a/Neos.Flow/Documentation/TheDefinitiveGuide/PartV/SignalsReference.rst +++ b/Neos.Flow/Documentation/TheDefinitiveGuide/PartV/SignalsReference.rst @@ -3,7 +3,7 @@ Flow Signals Reference ====================== -This reference was automatically generated from code on 2023-06-29 +This reference was automatically generated from code on 2023-07-17 .. _`Flow Signals Reference: AbstractAdvice (``Neos\Flow\Aop\Advice\AbstractAdvice``)`: diff --git a/Neos.Flow/Documentation/TheDefinitiveGuide/PartV/TypeConverterReference.rst b/Neos.Flow/Documentation/TheDefinitiveGuide/PartV/TypeConverterReference.rst index 215d507ad0..72d78768f9 100644 --- a/Neos.Flow/Documentation/TheDefinitiveGuide/PartV/TypeConverterReference.rst +++ b/Neos.Flow/Documentation/TheDefinitiveGuide/PartV/TypeConverterReference.rst @@ -3,7 +3,7 @@ Flow TypeConverter Reference ============================ -This reference was automatically generated from code on 2023-06-29 +This reference was automatically generated from code on 2023-07-17 .. _`Flow TypeConverter Reference: ArrayConverter`: diff --git a/Neos.Flow/Documentation/TheDefinitiveGuide/PartV/ValidatorReference.rst b/Neos.Flow/Documentation/TheDefinitiveGuide/PartV/ValidatorReference.rst index 798e522df5..f235319413 100644 --- a/Neos.Flow/Documentation/TheDefinitiveGuide/PartV/ValidatorReference.rst +++ b/Neos.Flow/Documentation/TheDefinitiveGuide/PartV/ValidatorReference.rst @@ -3,7 +3,7 @@ Flow Validator Reference ======================== -This reference was automatically generated from code on 2023-06-29 +This reference was automatically generated from code on 2023-07-17 .. _`Flow Validator Reference: AggregateBoundaryValidator`: From 740c9a730bd290e2427000439eafef56482643d9 Mon Sep 17 00:00:00 2001 From: Jenkins Date: Mon, 17 Jul 2023 15:40:10 +0000 Subject: [PATCH 12/37] TASK: Update references [skip ci] --- .../TheDefinitiveGuide/PartV/AnnotationReference.rst | 2 +- .../Documentation/TheDefinitiveGuide/PartV/CommandReference.rst | 2 +- .../Documentation/TheDefinitiveGuide/PartV/SignalsReference.rst | 2 +- .../TheDefinitiveGuide/PartV/TypeConverterReference.rst | 2 +- .../TheDefinitiveGuide/PartV/ValidatorReference.rst | 2 +- 5 files changed, 5 insertions(+), 5 deletions(-) diff --git a/Neos.Flow/Documentation/TheDefinitiveGuide/PartV/AnnotationReference.rst b/Neos.Flow/Documentation/TheDefinitiveGuide/PartV/AnnotationReference.rst index bc92ccf15e..cba07a84d3 100644 --- a/Neos.Flow/Documentation/TheDefinitiveGuide/PartV/AnnotationReference.rst +++ b/Neos.Flow/Documentation/TheDefinitiveGuide/PartV/AnnotationReference.rst @@ -3,7 +3,7 @@ Flow Annotation Reference ========================= -This reference was automatically generated from code on 2023-06-29 +This reference was automatically generated from code on 2023-07-17 .. _`Flow Annotation Reference: After`: diff --git a/Neos.Flow/Documentation/TheDefinitiveGuide/PartV/CommandReference.rst b/Neos.Flow/Documentation/TheDefinitiveGuide/PartV/CommandReference.rst index 209a79db59..e550db4db4 100644 --- a/Neos.Flow/Documentation/TheDefinitiveGuide/PartV/CommandReference.rst +++ b/Neos.Flow/Documentation/TheDefinitiveGuide/PartV/CommandReference.rst @@ -19,7 +19,7 @@ commands that may be available, use:: ./flow help -The following reference was automatically generated from code on 2023-06-29 +The following reference was automatically generated from code on 2023-07-17 .. _`Flow Command Reference: NEOS.FLOW`: diff --git a/Neos.Flow/Documentation/TheDefinitiveGuide/PartV/SignalsReference.rst b/Neos.Flow/Documentation/TheDefinitiveGuide/PartV/SignalsReference.rst index b11125706a..7a0e4eb3d3 100644 --- a/Neos.Flow/Documentation/TheDefinitiveGuide/PartV/SignalsReference.rst +++ b/Neos.Flow/Documentation/TheDefinitiveGuide/PartV/SignalsReference.rst @@ -3,7 +3,7 @@ Flow Signals Reference ====================== -This reference was automatically generated from code on 2023-06-29 +This reference was automatically generated from code on 2023-07-17 .. _`Flow Signals Reference: AbstractAdvice (``Neos\Flow\Aop\Advice\AbstractAdvice``)`: diff --git a/Neos.Flow/Documentation/TheDefinitiveGuide/PartV/TypeConverterReference.rst b/Neos.Flow/Documentation/TheDefinitiveGuide/PartV/TypeConverterReference.rst index 215d507ad0..72d78768f9 100644 --- a/Neos.Flow/Documentation/TheDefinitiveGuide/PartV/TypeConverterReference.rst +++ b/Neos.Flow/Documentation/TheDefinitiveGuide/PartV/TypeConverterReference.rst @@ -3,7 +3,7 @@ Flow TypeConverter Reference ============================ -This reference was automatically generated from code on 2023-06-29 +This reference was automatically generated from code on 2023-07-17 .. _`Flow TypeConverter Reference: ArrayConverter`: diff --git a/Neos.Flow/Documentation/TheDefinitiveGuide/PartV/ValidatorReference.rst b/Neos.Flow/Documentation/TheDefinitiveGuide/PartV/ValidatorReference.rst index ceb122deb2..93a080bcdb 100644 --- a/Neos.Flow/Documentation/TheDefinitiveGuide/PartV/ValidatorReference.rst +++ b/Neos.Flow/Documentation/TheDefinitiveGuide/PartV/ValidatorReference.rst @@ -3,7 +3,7 @@ Flow Validator Reference ======================== -This reference was automatically generated from code on 2023-06-29 +This reference was automatically generated from code on 2023-07-17 .. _`Flow Validator Reference: AggregateBoundaryValidator`: From ecd180c650a2b28e346677d32f1ecff31dd3da76 Mon Sep 17 00:00:00 2001 From: Karsten Dambekalns Date: Mon, 17 Jul 2023 18:45:28 +0200 Subject: [PATCH 13/37] TASK: Fix settings for reference rendering Since 4.0.0 the `neos/doctools` package expects the configuration in a different way. This lead to "hidden" errors during reference renedering on Jenkins. --- Neos.FluidAdaptor/Configuration/Settings.yaml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Neos.FluidAdaptor/Configuration/Settings.yaml b/Neos.FluidAdaptor/Configuration/Settings.yaml index 2ef4e2e885..7296052602 100644 --- a/Neos.FluidAdaptor/Configuration/Settings.yaml +++ b/Neos.FluidAdaptor/Configuration/Settings.yaml @@ -26,8 +26,8 @@ Neos: collections: 'Flow': references: - - 'TYPO3Fluid:ViewHelpers' - - 'Flow:FluidAdaptorViewHelpers' + 'TYPO3Fluid:ViewHelpers': true + 'Flow:FluidAdaptorViewHelpers': true commandReferences: 'Flow:FlowCommands': From f8655f1b68094151608b73aea66efbb97da1d47c Mon Sep 17 00:00:00 2001 From: Jenkins Date: Mon, 17 Jul 2023 16:59:50 +0000 Subject: [PATCH 14/37] TASK: Add changelog for 7.3.14 [skip ci] See https://jenkins.neos.io/job/flow-release/412/ --- .../PartV/ChangeLogs/7314.rst | 47 +++++++++++++++++++ 1 file changed, 47 insertions(+) create mode 100644 Neos.Flow/Documentation/TheDefinitiveGuide/PartV/ChangeLogs/7314.rst diff --git a/Neos.Flow/Documentation/TheDefinitiveGuide/PartV/ChangeLogs/7314.rst b/Neos.Flow/Documentation/TheDefinitiveGuide/PartV/ChangeLogs/7314.rst new file mode 100644 index 0000000000..eeb1303e39 --- /dev/null +++ b/Neos.Flow/Documentation/TheDefinitiveGuide/PartV/ChangeLogs/7314.rst @@ -0,0 +1,47 @@ +`7.3.14 (2023-07-17) `_ +================================================================================================ + +Overview of merged pull requests +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +`BUGFIX: If bytes to read is not > 0, return empty string `_ +--------------------------------------------------------------------------------------------------------------------------- + +* Fixes: `#2929 `_ + +**Upgrade instructions** + +**Review instructions** + + +* Packages: ``Flow`` ``Cache`` + +`TASK: PHP 8.1 deprecations compatibility `_ +----------------------------------------------------------------------------------------------------------- + +This tweaks the code so that it runs without deprecations on PHP 8.1. + +**Upgrade instructions** + +None. + +**Review instructions** + +None. + + +* Packages: ``Flow`` + +`TASK: Apply fixes from StyleCI `_ +------------------------------------------------------------------------------------------------- + +This pull request applies code style fixes from an analysis carried out by `StyleCI `_. + +--- + +For more information, click `here `_. + +* Packages: ``Flow`` ``Utility.ObjectHandling`` + +`Detailed log `_ +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ From b2a955f957f8fb4e8255e1cd9fe8605eae8094f7 Mon Sep 17 00:00:00 2001 From: Jenkins Date: Mon, 17 Jul 2023 17:00:50 +0000 Subject: [PATCH 15/37] TASK: Add changelog for 8.0.11 [skip ci] See https://jenkins.neos.io/job/flow-release/413/ --- .../PartV/ChangeLogs/8011.rst | 45 +++++++++++++++++++ 1 file changed, 45 insertions(+) create mode 100644 Neos.Flow/Documentation/TheDefinitiveGuide/PartV/ChangeLogs/8011.rst diff --git a/Neos.Flow/Documentation/TheDefinitiveGuide/PartV/ChangeLogs/8011.rst b/Neos.Flow/Documentation/TheDefinitiveGuide/PartV/ChangeLogs/8011.rst new file mode 100644 index 0000000000..be90cb62a8 --- /dev/null +++ b/Neos.Flow/Documentation/TheDefinitiveGuide/PartV/ChangeLogs/8011.rst @@ -0,0 +1,45 @@ +`8.0.11 (2023-07-17) `_ +================================================================================================ + +Overview of merged pull requests +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +`BUGFIX: If bytes to read is not > 0, return empty string `_ +--------------------------------------------------------------------------------------------------------------------------- + +* Fixes: `#2929 `_ + +**Upgrade instructions** + + +* Packages: ``Flow`` ``Cache`` + +`TASK: PHP 8.1 deprecations compatibility `_ +----------------------------------------------------------------------------------------------------------- + +This tweaks the code so that it runs without deprecations on PHP 8.1. + +**Upgrade instructions** + +None. + +**Review instructions** + +None. + + +* Packages: ``Flow`` + +`TASK: Apply fixes from StyleCI `_ +------------------------------------------------------------------------------------------------- + +This pull request applies code style fixes from an analysis carried out by `StyleCI `_. + +--- + +For more information, click `here `_. + +* Packages: ``Flow`` ``Utility.ObjectHandling`` + +`Detailed log `_ +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ From 16d941734ddb5e6ca6cc5763cadec32ba544fcff Mon Sep 17 00:00:00 2001 From: Jenkins Date: Mon, 17 Jul 2023 17:01:45 +0000 Subject: [PATCH 16/37] TASK: Add changelog for 8.1.7 [skip ci] See https://jenkins.neos.io/job/flow-release/414/ --- .../PartV/ChangeLogs/817.rst | 45 +++++++++++++++++++ 1 file changed, 45 insertions(+) create mode 100644 Neos.Flow/Documentation/TheDefinitiveGuide/PartV/ChangeLogs/817.rst diff --git a/Neos.Flow/Documentation/TheDefinitiveGuide/PartV/ChangeLogs/817.rst b/Neos.Flow/Documentation/TheDefinitiveGuide/PartV/ChangeLogs/817.rst new file mode 100644 index 0000000000..e1805b58cf --- /dev/null +++ b/Neos.Flow/Documentation/TheDefinitiveGuide/PartV/ChangeLogs/817.rst @@ -0,0 +1,45 @@ +`8.1.7 (2023-07-17) `_ +============================================================================================== + +Overview of merged pull requests +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +`BUGFIX: If bytes to read is not > 0, return empty string `_ +--------------------------------------------------------------------------------------------------------------------------- + +* Fixes: `#2929 `_ + +**Upgrade instructions** + + +* Packages: ``Flow`` ``Cache`` + +`TASK: PHP 8.1 deprecations compatibility `_ +----------------------------------------------------------------------------------------------------------- + +This tweaks the code so that it runs without deprecations on PHP 8.1. + +**Upgrade instructions** + +None. + +**Review instructions** + +None. + + +* Packages: ``Flow`` + +`TASK: Apply fixes from StyleCI `_ +------------------------------------------------------------------------------------------------- + +This pull request applies code style fixes from an analysis carried out by `StyleCI `_. + +--- + +For more information, click `here `_. + +* Packages: ``Flow`` ``Utility.ObjectHandling`` + +`Detailed log `_ +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ From 65c05347f1882b508322fa5063f495b87aa3b0b7 Mon Sep 17 00:00:00 2001 From: Jenkins Date: Mon, 17 Jul 2023 17:02:42 +0000 Subject: [PATCH 17/37] TASK: Add changelog for 8.2.5 [skip ci] See https://jenkins.neos.io/job/flow-release/415/ --- .../PartV/ChangeLogs/825.rst | 45 +++++++++++++++++++ 1 file changed, 45 insertions(+) create mode 100644 Neos.Flow/Documentation/TheDefinitiveGuide/PartV/ChangeLogs/825.rst diff --git a/Neos.Flow/Documentation/TheDefinitiveGuide/PartV/ChangeLogs/825.rst b/Neos.Flow/Documentation/TheDefinitiveGuide/PartV/ChangeLogs/825.rst new file mode 100644 index 0000000000..cb3997701f --- /dev/null +++ b/Neos.Flow/Documentation/TheDefinitiveGuide/PartV/ChangeLogs/825.rst @@ -0,0 +1,45 @@ +`8.2.5 (2023-07-17) `_ +============================================================================================== + +Overview of merged pull requests +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +`BUGFIX: If bytes to read is not > 0, return empty string `_ +--------------------------------------------------------------------------------------------------------------------------- + +* Fixes: `#2929 `_ + +**Upgrade instructions** + + +* Packages: ``Flow`` ``Cache`` + +`TASK: PHP 8.1 deprecations compatibility `_ +----------------------------------------------------------------------------------------------------------- + +This tweaks the code so that it runs without deprecations on PHP 8.1. + +**Upgrade instructions** + +None. + +**Review instructions** + +None. + + +* Packages: ``Flow`` + +`TASK: Apply fixes from StyleCI `_ +------------------------------------------------------------------------------------------------- + +This pull request applies code style fixes from an analysis carried out by `StyleCI `_. + +--- + +For more information, click `here `_. + +* Packages: ``Flow`` ``Utility.ObjectHandling`` + +`Detailed log `_ +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ From a9018104435d692ba0fe919654ac668b101b5148 Mon Sep 17 00:00:00 2001 From: Jenkins Date: Tue, 18 Jul 2023 06:50:37 +0000 Subject: [PATCH 18/37] TASK: Update references [skip ci] --- .../PartV/AnnotationReference.rst | 2 +- .../PartV/CommandReference.rst | 2 +- .../PartV/FluidAdaptorViewHelperReference.rst | 2 +- .../PartV/SignalsReference.rst | 2 +- .../PartV/TYPO3FluidViewHelperReference.rst | 1488 +++++++++++++++++ .../PartV/TypeConverterReference.rst | 2 +- .../PartV/ValidatorReference.rst | 2 +- 7 files changed, 1494 insertions(+), 6 deletions(-) create mode 100644 Neos.Flow/Documentation/TheDefinitiveGuide/PartV/TYPO3FluidViewHelperReference.rst diff --git a/Neos.Flow/Documentation/TheDefinitiveGuide/PartV/AnnotationReference.rst b/Neos.Flow/Documentation/TheDefinitiveGuide/PartV/AnnotationReference.rst index cba07a84d3..f15b1878d2 100644 --- a/Neos.Flow/Documentation/TheDefinitiveGuide/PartV/AnnotationReference.rst +++ b/Neos.Flow/Documentation/TheDefinitiveGuide/PartV/AnnotationReference.rst @@ -3,7 +3,7 @@ Flow Annotation Reference ========================= -This reference was automatically generated from code on 2023-07-17 +This reference was automatically generated from code on 2023-07-18 .. _`Flow Annotation Reference: After`: diff --git a/Neos.Flow/Documentation/TheDefinitiveGuide/PartV/CommandReference.rst b/Neos.Flow/Documentation/TheDefinitiveGuide/PartV/CommandReference.rst index cddc62f8a9..76caa7af2b 100644 --- a/Neos.Flow/Documentation/TheDefinitiveGuide/PartV/CommandReference.rst +++ b/Neos.Flow/Documentation/TheDefinitiveGuide/PartV/CommandReference.rst @@ -19,7 +19,7 @@ commands that may be available, use:: ./flow help -The following reference was automatically generated from code on 2023-07-17 +The following reference was automatically generated from code on 2023-07-18 .. _`Flow Command Reference: NEOS.FLOW`: diff --git a/Neos.Flow/Documentation/TheDefinitiveGuide/PartV/FluidAdaptorViewHelperReference.rst b/Neos.Flow/Documentation/TheDefinitiveGuide/PartV/FluidAdaptorViewHelperReference.rst index 3c1f8eeb85..9a24efd991 100644 --- a/Neos.Flow/Documentation/TheDefinitiveGuide/PartV/FluidAdaptorViewHelperReference.rst +++ b/Neos.Flow/Documentation/TheDefinitiveGuide/PartV/FluidAdaptorViewHelperReference.rst @@ -3,7 +3,7 @@ FluidAdaptor ViewHelper Reference ================================= -This reference was automatically generated from code on 2022-08-30 +This reference was automatically generated from code on 2023-07-18 .. _`FluidAdaptor ViewHelper Reference: f:debug`: diff --git a/Neos.Flow/Documentation/TheDefinitiveGuide/PartV/SignalsReference.rst b/Neos.Flow/Documentation/TheDefinitiveGuide/PartV/SignalsReference.rst index bfb3f32ac7..94be207675 100644 --- a/Neos.Flow/Documentation/TheDefinitiveGuide/PartV/SignalsReference.rst +++ b/Neos.Flow/Documentation/TheDefinitiveGuide/PartV/SignalsReference.rst @@ -3,7 +3,7 @@ Flow Signals Reference ====================== -This reference was automatically generated from code on 2023-07-17 +This reference was automatically generated from code on 2023-07-18 .. _`Flow Signals Reference: AbstractAdvice (``Neos\Flow\Aop\Advice\AbstractAdvice``)`: diff --git a/Neos.Flow/Documentation/TheDefinitiveGuide/PartV/TYPO3FluidViewHelperReference.rst b/Neos.Flow/Documentation/TheDefinitiveGuide/PartV/TYPO3FluidViewHelperReference.rst new file mode 100644 index 0000000000..f1389efc88 --- /dev/null +++ b/Neos.Flow/Documentation/TheDefinitiveGuide/PartV/TYPO3FluidViewHelperReference.rst @@ -0,0 +1,1488 @@ +.. _`TYPO3 Fluid ViewHelper Reference`: + +TYPO3 Fluid ViewHelper Reference +================================ + +This reference was automatically generated from code on 2023-07-18 + + +.. _`TYPO3 Fluid ViewHelper Reference: f:alias`: + +f:alias +------- + +Declares new variables which are aliases of other variables. +Takes a "map"-Parameter which is an associative array which defines the shorthand mapping. + +The variables are only declared inside the ``...`` tag. After the +closing tag, all declared variables are removed again. + +Using this ViewHelper can be a sign of weak architecture. If you end up +using it extensively you might want to fine-tune your "view model" (the +data you assign to the view). + +Examples +======== + +Single alias +------------ + +:: + + {x} + +Output:: + + foo + +Multiple mappings +----------------- + +:: + + + {x.name} or {y} + + +Output:: + + [name] or [name] + +Depending on ``{foo.bar.baz}``. + +:Implementation: TYPO3Fluid\\Fluid\\ViewHelpers\\AliasViewHelper + + + + +Arguments +********* + +* ``map`` (array): Array that specifies which variables should be mapped to which alias + + + + +.. _`TYPO3 Fluid ViewHelper Reference: f:cache.disable`: + +f:cache.disable +--------------- + +ViewHelper to disable template compiling + +Inserting this ViewHelper at any point in the template, +including inside conditions which do not get rendered, +will forcibly disable the caching/compiling of the full +template file to a PHP class. + +Use this if for whatever reason your platform is unable +to create or load PHP classes (for example on read-only +file systems or when using an incompatible default cache +backend). + +Passes through anything you place inside the ViewHelper, +so can safely be used as container tag, as self-closing +or with inline syntax - all with the same result. + +Examples +======== + +Self-closing +------------ + +:: + + + +Inline mode +----------- + +:: + + {f:cache.disable()} + + +Container tag +------------- + +:: + + + Some output or Fluid code + + +Additional output is also not compilable because of the ViewHelper + +:Implementation: TYPO3Fluid\\Fluid\\ViewHelpers\\Cache\\DisableViewHelper + + + + + +.. _`TYPO3 Fluid ViewHelper Reference: f:cache.static`: + +f:cache.static +-------------- + +ViewHelper to force compiling to a static string + +Used around chunks of template code where you want the +output of said template code to be compiled to a static +string (rather than a collection of compiled nodes, as +is the usual behavior). + +The effect is that none of the child ViewHelpers or nodes +used inside this tag will be evaluated when rendering the +template once it is compiled. It will essentially replace +all logic inside the tag with a plain string output. + +Works by turning the ``compile`` method into a method that +renders the child nodes and returns the resulting content +directly as a string variable. + +You can use this with great effect to further optimise the +performance of your templates: in use cases where chunks of +template code depend on static variables (like thoese in +``{settings}`` for example) and those variables never change, +and the template uses no other dynamic variables, forcing +the template to compile that chunk to a static string can +save a lot of operations when rendering the compiled template. + +NB: NOT TO BE USED FOR CACHING ANYTHING OTHER THAN STRING- +COMPATIBLE OUTPUT! + +USE WITH CARE! WILL PRESERVE EVERYTHING RENDERED, INCLUDING +POTENTIALLY SENSITIVE DATA CONTAINED IN OUTPUT! + +Examples +======== + +Usage and effect +---------------- + +:: + + Is always evaluated also when compiled + + + Will only be evaluated once and this output will be + cached as a static string with no logic attached. + The compiled template will not contain neither the + condition ViewHelperNodes or the variable accessor + that are used inside this node. + + + +This is also evaluated when compiled (static node is closed):: + + Also evaluated; is outside static node + +:Implementation: TYPO3Fluid\\Fluid\\ViewHelpers\\Cache\\StaticViewHelper + + + + + +.. _`TYPO3 Fluid ViewHelper Reference: f:cache.warmup`: + +f:cache.warmup +-------------- + +ViewHelper to insert variables which only apply during +cache warmup and only apply if no other variables are +specified for the warmup process. + +If a chunk of template code is impossible to compile +without additional variables, for example when rendering +sections or partials using dynamic names, you can use this +ViewHelper around that chunk and specify a set of variables +which will be assigned only while compiling the template +and only when this is done as part of cache warmup. The +template chunk can then be compiled using those default +variables. + +This does not imply that only those variable values will +be used by the compiled template. It only means that +DEFAULT values of vital variables will be present during +compiling. + +If you find yourself completely unable to properly warm up +a specific template file even with use of this ViewHelper, +then you can consider using +``f:cache.disable`` ViewHelper +to prevent the template compiler from even attempting to +compile it. + +USE WITH CARE! SOME EDGE CASES OF FOR EXAMPLE VIEWHELPERS +WHICH REQUIRE SPECIAL VARIABLE TYPES MAY NOT BE SUPPORTED +HERE DUE TO THE RUDIMENTARY NATURE OF VARIABLES YOU DEFINE. + +Examples +======== + +Usage and effect +---------------- + +:: + + + Template code depending on {foo} variable which is not + assigned when warming up Fluid's caches. {foo} is only + assigned if the variable does not already exist and the + assignment only happens if Fluid is in warmup mode. + + +:Implementation: TYPO3Fluid\\Fluid\\ViewHelpers\\Cache\\WarmupViewHelper + + + + +Arguments +********* + +* ``variables`` (array, *optional*): Array of variables to assign ONLY when compiling. See main class documentation. + + + + +.. _`TYPO3 Fluid ViewHelper Reference: f:case`: + +f:case +------ + +Case ViewHelper that is only usable within the ``f:switch`` ViewHelper. + +:Implementation: TYPO3Fluid\\Fluid\\ViewHelpers\\CaseViewHelper + + + + +Arguments +********* + +* ``value`` (mixed): Value to match in this case + + + + +.. _`TYPO3 Fluid ViewHelper Reference: f:comment`: + +f:comment +--------- + +This ViewHelper prevents rendering of any content inside the tag. + +Contents of the comment will still be **parsed** thus throwing an +Exception if it contains syntax errors. You can put child nodes in +CDATA tags to avoid this. + +Using this ViewHelper won't have a notable effect on performance, +especially once the template is parsed. However it can lead to reduced +readability. You can use layouts and partials to split a large template +into smaller parts. Using self-descriptive names for the partials can +make comments redundant. + +Examples +======== + +Commenting out fluid code +------------------------- + +:: + + Before + + This is completely hidden. + This does not get rendered + + After + +Output:: + + Before + After + +Prevent parsing +--------------- + +:: + + + ]]> + +Output: + +Will be nothing. + +:Implementation: TYPO3Fluid\\Fluid\\ViewHelpers\\CommentViewHelper + + + + + +.. _`TYPO3 Fluid ViewHelper Reference: f:count`: + +f:count +------- + +This ViewHelper counts elements of the specified array or countable object. + +Examples +======== + +Count array elements +-------------------- + +:: + + + +Output:: + + 4 + +inline notation +--------------- + +:: + + {objects -> f:count()} + +Output:: + + 10 (depending on the number of items in ``{objects}``) + +:Implementation: TYPO3Fluid\\Fluid\\ViewHelpers\\CountViewHelper + + + + +Arguments +********* + +* ``subject`` (array, *optional*): Countable subject, array or \Countable + + + + +.. _`TYPO3 Fluid ViewHelper Reference: f:cycle`: + +f:cycle +------- + +This ViewHelper cycles through the specified values. +This can be often used to specify CSS classes for example. + +To achieve the "zebra class" effect in a loop you can also use the +"iteration" argument of the **for** ViewHelper. + +Examples +======== + +These examples could also be achieved using the "iteration" argument +of the ForViewHelper. + +Simple +------ + +:: + + + + {cycle} + + + +Output:: + + foobarbazfoo + +Alternating CSS class +--------------------- + +:: + +
    + + +
  • {foo}
  • +
    +
    +
+ +Output:: + +
    +
  • 1
  • +
  • 2
  • +
  • 3
  • +
  • 4
  • +
+ +:Implementation: TYPO3Fluid\\Fluid\\ViewHelpers\\CycleViewHelper + + + + +Arguments +********* + +* ``values`` (array, *optional*): The array or object implementing \ArrayAccess (for example \SplObjectStorage) to iterated over + +* ``as`` (strong): The name of the iteration variable + + + + +.. _`TYPO3 Fluid ViewHelper Reference: f:debug`: + +f:debug +------- + +This ViewHelper is only meant to be used during development. + +Examples +======== + +Inline notation and custom title +-------------------------------- + +:: + + {object -> f:debug(title: 'Custom title')} + +Output:: + + all properties of {object} nicely highlighted (with custom title) + +Only output the type +-------------------- + +:: + + {object -> f:debug(typeOnly: true)} + +Output:: + + the type or class name of {object} + +:Implementation: TYPO3Fluid\\Fluid\\ViewHelpers\\DebugViewHelper + + + + +Arguments +********* + +* ``typeOnly`` (boolean, *optional*): If TRUE, debugs only the type of variables + +* ``levels`` (integer, *optional*): Levels to render when rendering nested objects/arrays + +* ``html`` (boolean, *optional*): Render HTML. If FALSE, output is indented plaintext + + + + +.. _`TYPO3 Fluid ViewHelper Reference: f:defaultCase`: + +f:defaultCase +------------- + +A ViewHelper which specifies the "default" case when used within the ``f:switch`` ViewHelper. + +:Implementation: TYPO3Fluid\\Fluid\\ViewHelpers\\DefaultCaseViewHelper + + + + + +.. _`TYPO3 Fluid ViewHelper Reference: f:else`: + +f:else +------ + +Else-Branch of a condition. Only has an effect inside of ``f:if``. +See the ``f:if`` ViewHelper for documentation. + +Examples +======== + +Output content if condition is not met +-------------------------------------- + +:: + + + + condition was not true + + + +Output:: + + Everything inside the "else" tag is displayed if the condition evaluates to FALSE. + Otherwise nothing is outputted in this example. + +:Implementation: TYPO3Fluid\\Fluid\\ViewHelpers\\ElseViewHelper + + + + +Arguments +********* + +* ``if`` (boolean, *optional*): Condition expression conforming to Fluid boolean rules + + + + +.. _`TYPO3 Fluid ViewHelper Reference: f:for`: + +f:for +----- + +Loop ViewHelper which can be used to iterate over arrays. +Implements what a basic PHP ``foreach()`` does. + +Examples +======== + +Simple Loop +----------- + +:: + + {foo} + +Output:: + + 1234 + +Output array key +---------------- + +:: + +
    + +
  • {label}: {fruit}
  • +
    +
+ +Output:: + +
    +
  • fruit1: apple
  • +
  • fruit2: pear
  • +
  • fruit3: banana
  • +
  • fruit4: cherry
  • +
+ +Iteration information +--------------------- + +:: + +
    + +
  • Index: {fooIterator.index} Cycle: {fooIterator.cycle} Total: {fooIterator.total}{f:if(condition: fooIterator.isEven, then: ' Even')}{f:if(condition: fooIterator.isOdd, then: ' Odd')}{f:if(condition: fooIterator.isFirst, then: ' First')}{f:if(condition: fooIterator.isLast, then: ' Last')}
  • +
    +
+ +Output:: + +
    +
  • Index: 0 Cycle: 1 Total: 4 Odd First
  • +
  • Index: 1 Cycle: 2 Total: 4 Even
  • +
  • Index: 2 Cycle: 3 Total: 4 Odd
  • +
  • Index: 3 Cycle: 4 Total: 4 Even Last
  • +
+ +:Implementation: TYPO3Fluid\\Fluid\\ViewHelpers\\ForViewHelper + + + + +Arguments +********* + +* ``each`` (array): The array or \SplObjectStorage to iterated over + +* ``as`` (string): The name of the iteration variable + +* ``key`` (string, *optional*): Variable to assign array key to + +* ``reverse`` (boolean, *optional*): If TRUE, iterates in reverse + +* ``iteration`` (string, *optional*): The name of the variable to store iteration information (index, cycle, isFirst, isLast, isEven, isOdd) + + + + +.. _`TYPO3 Fluid ViewHelper Reference: f:format.cdata`: + +f:format.cdata +-------------- + +Outputs an argument/value without any escaping and wraps it with CDATA tags. + +PAY SPECIAL ATTENTION TO SECURITY HERE (especially Cross Site Scripting), +as the output is NOT SANITIZED! + +Examples +======== + +Child nodes +----------- + +:: + + {string} + +Output:: + + + +Value attribute +--------------- + +:: + + + +Output:: + + + +Inline notation +--------------- + +:: + + {string -> f:format.cdata()} + +Output:: + + + +:Implementation: TYPO3Fluid\\Fluid\\ViewHelpers\\Format\\CdataViewHelper + + + + +Arguments +********* + +* ``value`` (mixed, *optional*): The value to output + + + + +.. _`TYPO3 Fluid ViewHelper Reference: f:format.htmlspecialchars`: + +f:format.htmlspecialchars +------------------------- + +Applies PHP ``htmlspecialchars()`` escaping to a value. + +See http://www.php.net/manual/function.htmlspecialchars.php + +Examples +======== + +Default notation +---------------- + +:: + + {text} + +Output:: + + Text with & " ' < > * replaced by HTML entities (htmlspecialchars applied). + +Inline notation +--------------- + +:: + + {text -> f:format.htmlspecialchars(encoding: 'ISO-8859-1')} + +Output:: + + Text with & " ' < > * replaced by HTML entities (htmlspecialchars applied). + +:Implementation: TYPO3Fluid\\Fluid\\ViewHelpers\\Format\\HtmlspecialcharsViewHelper + + + + +Arguments +********* + +* ``value`` (string, *optional*): Value to format + +* ``keepQuotes`` (boolean, *optional*): If TRUE quotes will not be replaced (ENT_NOQUOTES) + +* ``encoding`` (string, *optional*): Encoding + +* ``doubleEncode`` (boolean, *optional*): If FALSE html entities will not be encoded + + + + +.. _`TYPO3 Fluid ViewHelper Reference: f:format.printf`: + +f:format.printf +--------------- + +A ViewHelper for formatting values with printf. Either supply an array for +the arguments or a single value. + +See http://www.php.net/manual/en/function.sprintf.php + +Examples +======== + +Scientific notation +------------------- + +:: + + %.3e + +Output:: + + 3.625e+8 + +Argument swapping +----------------- + +:: + + %2$s is great, TYPO%1$d too. Yes, TYPO%1$d is great and so is %2$s! + +Output:: + + Kasper is great, TYPO3 too. Yes, TYPO3 is great and so is Kasper! + +Single argument +--------------- + +:: + + We love %s + + +Output:: + + We love TYPO3 + +Inline notation +--------------- + +:: + + {someText -> f:format.printf(arguments: {1: 'TYPO3'})} + + +Output:: + + We love TYPO3 + +:Implementation: TYPO3Fluid\\Fluid\\ViewHelpers\\Format\\PrintfViewHelper + + + + +Arguments +********* + +* ``value`` (string, *optional*): String to format + +* ``arguments`` (array, *optional*): The arguments for vsprintf + + + + +.. _`TYPO3 Fluid ViewHelper Reference: f:format.raw`: + +f:format.raw +------------ + +Outputs an argument/value without any escaping. Is normally used to output +an ObjectAccessor which should not be escaped, but output as-is. + +PAY SPECIAL ATTENTION TO SECURITY HERE (especially Cross Site Scripting), +as the output is NOT SANITIZED! + +Examples +======== + +Child nodes +----------- + +:: + + {string} + +Output:: + + (Content of ``{string}`` without any conversion/escaping) + +Value attribute +--------------- + +:: + + + +Output:: + + (Content of ``{string}`` without any conversion/escaping) + +Inline notation +--------------- + +:: + + {string -> f:format.raw()} + +Output:: + + (Content of ``{string}`` without any conversion/escaping) + +:Implementation: TYPO3Fluid\\Fluid\\ViewHelpers\\Format\\RawViewHelper + + + + +Arguments +********* + +* ``value`` (mixed, *optional*): The value to output + + + + +.. _`TYPO3 Fluid ViewHelper Reference: f:groupedFor`: + +f:groupedFor +------------ + +Grouped loop ViewHelper. +Loops through the specified values. + +The groupBy argument also supports property paths. + +Using this ViewHelper can be a sign of weak architecture. If you end up +using it extensively you might want to fine-tune your "view model" (the +data you assign to the view). + +Examples +======== + +Simple +------ + +:: + + + + {fruit.name} + + + +Output:: + + apple cherry strawberry banana + +Two dimensional list +-------------------- + +:: + +
    + +
  • + {color} fruits: +
      + +
    • {label}: {fruit.name}
    • +
      +
    +
  • +
    +
+ +Output:: + +
    +
  • green fruits +
      +
    • 0: apple
    • +
    +
  • +
  • red fruits +
      +
    • 1: cherry
    • +
    +
      +
    • 3: strawberry
    • +
    +
  • +
  • yellow fruits +
      +
    • 2: banana
    • +
    +
  • +
+ +:Implementation: TYPO3Fluid\\Fluid\\ViewHelpers\\GroupedForViewHelper + + + + +Arguments +********* + +* ``each`` (array): The array or \SplObjectStorage to iterated over + +* ``as`` (string): The name of the iteration variable + +* ``groupBy`` (string): Group by this property + +* ``groupKey`` (string, *optional*): The name of the variable to store the current group + + + + +.. _`TYPO3 Fluid ViewHelper Reference: f:if`: + +f:if +---- + +This ViewHelper implements an if/else condition. + +Conditions: + +As a condition is a boolean value, you can just use a boolean argument. +Alternatively, you can write a boolean expression there. +Boolean expressions have the following form: + +XX Comparator YY + +Comparator is one of: ==, !=, <, <=, >, >= and % +The % operator converts the result of the % operation to boolean. + +XX and YY can be one of: + +- number +- Object Accessor +- Array +- a ViewHelper +- string + +:: + + + Will be shown if rank is > 100 + + + Will be shown if rank % 2 != 0. + + + Checks if rank is equal to the result of the ViewHelper "k:bar" + + + Will result in true if {foo.bar}'s represented value equals 'stringToCompare'. + + +Examples +======== + +Basic usage +----------- + +:: + + + This is being shown in case the condition matches + + +Output:: + + Everything inside the tag is being displayed if the condition evaluates to TRUE. + +If / then / else +---------------- + +:: + + + + This is being shown in case the condition matches. + + + This is being displayed in case the condition evaluates to FALSE. + + + +Output:: + + Everything inside the "then" tag is displayed if the condition evaluates to TRUE. + Otherwise, everything inside the "else"-tag is displayed. + +inline notation +--------------- + +:: + + {f:if(condition: someCondition, then: 'condition is met', else: 'condition is not met')} + +Output:: + + The value of the "then" attribute is displayed if the condition evaluates to TRUE. + Otherwise, everything the value of the "else"-attribute is displayed. + +:Implementation: TYPO3Fluid\\Fluid\\ViewHelpers\\IfViewHelper + + + + +Arguments +********* + +* ``then`` (mixed, *optional*): Value to be returned if the condition if met. + +* ``else`` (mixed, *optional*): Value to be returned if the condition if not met. + +* ``condition`` (boolean, *optional*): Condition expression conforming to Fluid boolean rules + + + + +.. _`TYPO3 Fluid ViewHelper Reference: f:inline`: + +f:inline +-------- + +Inline Fluid rendering ViewHelper + +Renders Fluid code stored in a variable, which you normally would +have to render before assigning it to the view. Instead you can +do the following (note, extremely simplified use case):: + + $view->assign('variable', 'value of my variable'); + $view->assign('code', 'My variable: {variable}'); + +And in the template:: + + {code -> f:inline()} + +Which outputs:: + + My variable: value of my variable + +You can use this to pass smaller and dynamic pieces of Fluid code +to templates, as an alternative to creating new partial templates. + +:Implementation: TYPO3Fluid\\Fluid\\ViewHelpers\\InlineViewHelper + + + + +Arguments +********* + +* ``code`` (string, *optional*): Fluid code to be rendered as if it were part of the template rendering it. Can be passed as inline argument or tag content + + + + +.. _`TYPO3 Fluid ViewHelper Reference: f:layout`: + +f:layout +-------- + +With this tag, you can select a layout to be used for the current template. + +Examples +======== + +:: + + + +Output:: + + (no output) + +:Implementation: TYPO3Fluid\\Fluid\\ViewHelpers\\LayoutViewHelper + + + + +Arguments +********* + +* ``name`` (string, *optional*): Name of layout to use. If none given, "Default" is used. + + + + +.. _`TYPO3 Fluid ViewHelper Reference: f:or`: + +f:or +---- + +If content is empty use alternative text + +:Implementation: TYPO3Fluid\\Fluid\\ViewHelpers\\OrViewHelper + + + + +Arguments +********* + +* ``content`` (mixed, *optional*): Content to check if empty + +* ``alternative`` (mixed, *optional*): Alternative if content is empty + +* ``arguments`` (array, *optional*): Arguments to be replaced in the resulting string, using sprintf + + + + +.. _`TYPO3 Fluid ViewHelper Reference: f:render`: + +f:render +-------- + +A ViewHelper to render a section, a partial, a specified section in a partial +or a delegate ParsedTemplateInterface implementation. + +Examples +======== + +Rendering partials +------------------ + +:: + + + +Output:: + + the content of the partial "SomePartial". The content of the variable {someVariable} will be available in the partial as {foo} + +Rendering sections +------------------ + +:: + + This is a section. {foo} + + +Output:: + + the content of the section "someSection". The content of the variable {someVariable} will be available in the partial as {foo} + +Rendering recursive sections +---------------------------- + +:: + + +
    + +
  • + {menuItem.text} + + + +
  • +
    +
+
+ + +Output:: + +
    +
  • menu1 +
      +
    • menu1a
    • +
    • menu1b
    • +
    +
  • + [...] + (depending on the value of {menu}) + + +Passing all variables to a partial +---------------------------------- + +:: + + + +Output:: + + the content of the partial "somePartial". + Using the reserved keyword "_all", all available variables will be passed along to the partial + + +Rendering via a delegate ParsedTemplateInterface implementation w/ custom arguments +----------------------------------------------------------------------------------- + +:: + + + +This will output whichever output was generated by calling ``My\Special\ParsedTemplateImplementation->render()`` +with cloned RenderingContextInterface $renderingContext as only argument and content of arguments +assigned in VariableProvider of cloned context. Supports all other input arguments including +recursive rendering, contentAs argument, default value etc. + +Note that while ParsedTemplateInterface supports returning a Layout name, this Layout will not +be respected when rendering using this method. Only the ``render()`` method will be called! + +:Implementation: TYPO3Fluid\\Fluid\\ViewHelpers\\RenderViewHelper + + + + +Arguments +********* + +* ``section`` (string, *optional*): Section to render - combine with partial to render section in partial + +* ``partial`` (string, *optional*): Partial to render, with or without section + +* ``delegate`` (string, *optional*): Optional PHP class name of a permanent, included-in-app ParsedTemplateInterface implementation to override partial/section + +* ``renderable`` (TYPO3Fluid\Fluid\Core\Rendering\RenderableInterface, *optional*): Instance of a RenderableInterface implementation to be rendered + +* ``arguments`` (array, *optional*): Array of variables to be transferred. Use {_all} for all variables + +* ``optional`` (boolean, *optional*): If TRUE, considers the *section* optional. Partial never is. + +* ``default`` (mixed, *optional*): Value (usually string) to be displayed if the section or partial does not exist + +* ``contentAs`` (string, *optional*): If used, renders the child content and adds it as a template variable with this name for use in the partial/section + + + + +.. _`TYPO3 Fluid ViewHelper Reference: f:section`: + +f:section +--------- + +A ViewHelper to declare sections in templates for later use with e.g. the ``f:render`` ViewHelper. + +Examples +======== + +Rendering sections +------------------ + +:: + + This is a section. {foo} + + +Output:: + + the content of the section "someSection". The content of the variable {someVariable} will be available in the partial as {foo} + +Rendering recursive sections +---------------------------- + +:: + + +
      + +
    • + {menuItem.text} + + + +
    • +
      +
    +
    + + +Output:: + +
      +
    • menu1 +
        +
      • menu1a
      • +
      • menu1b
      • +
      +
    • + [...] + (depending on the value of {menu}) + +:Implementation: TYPO3Fluid\\Fluid\\ViewHelpers\\SectionViewHelper + + + + +Arguments +********* + +* ``name`` (string): Name of the section + + + + +.. _`TYPO3 Fluid ViewHelper Reference: f:spaceless`: + +f:spaceless +----------- + +Space Removal ViewHelper + +Removes redundant spaces between HTML tags while +preserving the whitespace that may be inside HTML +tags. Trims the final result before output. + +Heavily inspired by Twig's corresponding node type. + +Usage of f:spaceless +==================== + +:: + + +
      +
      +
      text + + text
      +
      +
      +
      + +Output:: + +
      text + + text
      + +:Implementation: TYPO3Fluid\\Fluid\\ViewHelpers\\SpacelessViewHelper + + + + + +.. _`TYPO3 Fluid ViewHelper Reference: f:switch`: + +f:switch +-------- + +Switch ViewHelper which can be used to render content depending on a value or expression. +Implements what a basic PHP ``switch()`` does. + +An optional default case can be specified which is rendered if none of the +``case`` conditions matches. + +Using this ViewHelper can be a sign of weak architecture. If you end up using it extensively +you might want to consider restructuring your controllers/actions and/or use partials and sections. +E.g. the above example could be achieved with :html:`` +and the partials "title.male.html", "title.female.html", ... +Depending on the scenario this can be easier to extend and possibly contains less duplication. + +Examples +======== + +Simple Switch statement +----------------------- + +:: + + + Mr. + Mrs. + Mr. / Mrs. + + +Output:: + + "Mr.", "Mrs." or "Mr. / Mrs." (depending on the value of {person.gender}) + +:Implementation: TYPO3Fluid\\Fluid\\ViewHelpers\\SwitchViewHelper + + + + +Arguments +********* + +* ``expression`` (mixed): Expression to switch + + + + +.. _`TYPO3 Fluid ViewHelper Reference: f:then`: + +f:then +------ + +``f:then`` only has an effect inside of ``f:if``. See the ``f:if`` ViewHelper for documentation. + +:Implementation: TYPO3Fluid\\Fluid\\ViewHelpers\\ThenViewHelper + + + + + +.. _`TYPO3 Fluid ViewHelper Reference: f:variable`: + +f:variable +---------- + +Variable assigning ViewHelper + +Assigns one template variable which will exist also +after the ViewHelper is done rendering, i.e. adds +template variables. + +If you require a variable assignment which does not +exist in the template after a piece of Fluid code +is rendered, consider using ``f:alias`` ViewHelper instead. + +Usages: + +:: + + {f:variable(name: 'myvariable', value: 'some value')} + some value + {oldvariable -> f:format.htmlspecialchars() -> f:variable(name: 'newvariable')} + {oldvariable} + +:Implementation: TYPO3Fluid\\Fluid\\ViewHelpers\\VariableViewHelper + + + + +Arguments +********* + +* ``value`` (mixed, *optional*): Value to assign. If not in arguments then taken from tag content + +* ``name`` (string): Name of variable to create + + + diff --git a/Neos.Flow/Documentation/TheDefinitiveGuide/PartV/TypeConverterReference.rst b/Neos.Flow/Documentation/TheDefinitiveGuide/PartV/TypeConverterReference.rst index 72d78768f9..93e70407dc 100644 --- a/Neos.Flow/Documentation/TheDefinitiveGuide/PartV/TypeConverterReference.rst +++ b/Neos.Flow/Documentation/TheDefinitiveGuide/PartV/TypeConverterReference.rst @@ -3,7 +3,7 @@ Flow TypeConverter Reference ============================ -This reference was automatically generated from code on 2023-07-17 +This reference was automatically generated from code on 2023-07-18 .. _`Flow TypeConverter Reference: ArrayConverter`: diff --git a/Neos.Flow/Documentation/TheDefinitiveGuide/PartV/ValidatorReference.rst b/Neos.Flow/Documentation/TheDefinitiveGuide/PartV/ValidatorReference.rst index f235319413..307551c672 100644 --- a/Neos.Flow/Documentation/TheDefinitiveGuide/PartV/ValidatorReference.rst +++ b/Neos.Flow/Documentation/TheDefinitiveGuide/PartV/ValidatorReference.rst @@ -3,7 +3,7 @@ Flow Validator Reference ======================== -This reference was automatically generated from code on 2023-07-17 +This reference was automatically generated from code on 2023-07-18 .. _`Flow Validator Reference: AggregateBoundaryValidator`: From fa366b1b24ec9614ac540a8010dccd478a760698 Mon Sep 17 00:00:00 2001 From: Karsten Dambekalns Date: Tue, 18 Jul 2023 09:05:00 +0200 Subject: [PATCH 19/37] TASK: Add changelog for 8.3.3 [skip ci] This was added manually, as adding it failed in CI. See https://jenkins.neos.io/job/flow-release/416/ --- .../PartV/ChangeLogs/833.rst | 33 +++++++++++++++++++ 1 file changed, 33 insertions(+) create mode 100644 Neos.Flow/Documentation/TheDefinitiveGuide/PartV/ChangeLogs/833.rst diff --git a/Neos.Flow/Documentation/TheDefinitiveGuide/PartV/ChangeLogs/833.rst b/Neos.Flow/Documentation/TheDefinitiveGuide/PartV/ChangeLogs/833.rst new file mode 100644 index 0000000000..0316e9bc91 --- /dev/null +++ b/Neos.Flow/Documentation/TheDefinitiveGuide/PartV/ChangeLogs/833.rst @@ -0,0 +1,33 @@ +`8.3.3 (2023-07-17) `_ +============================================================================================== + +Overview of merged pull requests +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +`BUGFIX: If bytes to read is not > 0, return empty string `_ +--------------------------------------------------------------------------------------------------------------------------- + +* Fixes: `#2929 `_ + +* Packages: ``Flow`` ``Cache`` + +`TASK: PHP 8.1 deprecations compatibility `_ +----------------------------------------------------------------------------------------------------------- + +This tweaks the code so that it runs without deprecations on PHP 8.1. + +* Packages: ``Flow`` + +`TASK: Apply fixes from StyleCI `_ +------------------------------------------------------------------------------------------------- + +This pull request applies code style fixes from an analysis carried out by `StyleCI `_. + +--- + +For more information, click `here `_. + +* Packages: ``Flow`` ``Utility.ObjectHandling`` + +`Detailed log `_ +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ From 4358297c60a0b6266900e447757a3de2388b2fb8 Mon Sep 17 00:00:00 2001 From: Jenkins Date: Tue, 18 Jul 2023 07:06:09 +0000 Subject: [PATCH 20/37] TASK: Update references [skip ci] --- .../TheDefinitiveGuide/PartV/AnnotationReference.rst | 2 +- .../Documentation/TheDefinitiveGuide/PartV/CommandReference.rst | 2 +- .../Documentation/TheDefinitiveGuide/PartV/SignalsReference.rst | 2 +- .../TheDefinitiveGuide/PartV/TypeConverterReference.rst | 2 +- .../TheDefinitiveGuide/PartV/ValidatorReference.rst | 2 +- 5 files changed, 5 insertions(+), 5 deletions(-) diff --git a/Neos.Flow/Documentation/TheDefinitiveGuide/PartV/AnnotationReference.rst b/Neos.Flow/Documentation/TheDefinitiveGuide/PartV/AnnotationReference.rst index cba07a84d3..f15b1878d2 100644 --- a/Neos.Flow/Documentation/TheDefinitiveGuide/PartV/AnnotationReference.rst +++ b/Neos.Flow/Documentation/TheDefinitiveGuide/PartV/AnnotationReference.rst @@ -3,7 +3,7 @@ Flow Annotation Reference ========================= -This reference was automatically generated from code on 2023-07-17 +This reference was automatically generated from code on 2023-07-18 .. _`Flow Annotation Reference: After`: diff --git a/Neos.Flow/Documentation/TheDefinitiveGuide/PartV/CommandReference.rst b/Neos.Flow/Documentation/TheDefinitiveGuide/PartV/CommandReference.rst index e550db4db4..09554fa155 100644 --- a/Neos.Flow/Documentation/TheDefinitiveGuide/PartV/CommandReference.rst +++ b/Neos.Flow/Documentation/TheDefinitiveGuide/PartV/CommandReference.rst @@ -19,7 +19,7 @@ commands that may be available, use:: ./flow help -The following reference was automatically generated from code on 2023-07-17 +The following reference was automatically generated from code on 2023-07-18 .. _`Flow Command Reference: NEOS.FLOW`: diff --git a/Neos.Flow/Documentation/TheDefinitiveGuide/PartV/SignalsReference.rst b/Neos.Flow/Documentation/TheDefinitiveGuide/PartV/SignalsReference.rst index 7a0e4eb3d3..b8b7df5c56 100644 --- a/Neos.Flow/Documentation/TheDefinitiveGuide/PartV/SignalsReference.rst +++ b/Neos.Flow/Documentation/TheDefinitiveGuide/PartV/SignalsReference.rst @@ -3,7 +3,7 @@ Flow Signals Reference ====================== -This reference was automatically generated from code on 2023-07-17 +This reference was automatically generated from code on 2023-07-18 .. _`Flow Signals Reference: AbstractAdvice (``Neos\Flow\Aop\Advice\AbstractAdvice``)`: diff --git a/Neos.Flow/Documentation/TheDefinitiveGuide/PartV/TypeConverterReference.rst b/Neos.Flow/Documentation/TheDefinitiveGuide/PartV/TypeConverterReference.rst index 72d78768f9..93e70407dc 100644 --- a/Neos.Flow/Documentation/TheDefinitiveGuide/PartV/TypeConverterReference.rst +++ b/Neos.Flow/Documentation/TheDefinitiveGuide/PartV/TypeConverterReference.rst @@ -3,7 +3,7 @@ Flow TypeConverter Reference ============================ -This reference was automatically generated from code on 2023-07-17 +This reference was automatically generated from code on 2023-07-18 .. _`Flow TypeConverter Reference: ArrayConverter`: diff --git a/Neos.Flow/Documentation/TheDefinitiveGuide/PartV/ValidatorReference.rst b/Neos.Flow/Documentation/TheDefinitiveGuide/PartV/ValidatorReference.rst index 93a080bcdb..d2bfc7ab34 100644 --- a/Neos.Flow/Documentation/TheDefinitiveGuide/PartV/ValidatorReference.rst +++ b/Neos.Flow/Documentation/TheDefinitiveGuide/PartV/ValidatorReference.rst @@ -3,7 +3,7 @@ Flow Validator Reference ======================== -This reference was automatically generated from code on 2023-07-17 +This reference was automatically generated from code on 2023-07-18 .. _`Flow Validator Reference: AggregateBoundaryValidator`: From 9d106b16d25773980ac53e095f443bd415ede42e Mon Sep 17 00:00:00 2001 From: mhsdesign <85400359+mhsdesign@users.noreply.github.com> Date: Tue, 18 Jul 2023 12:38:24 +0200 Subject: [PATCH 21/37] BUGFIX: Catch stderr output, in case phpPathAndBinary is not found previously on windows: ``` .\flow.bat configuration:show Das System kann den angegebenen Pfad nicht finden. Das System kann den angegebenen Pfad nicht finden. Type: Neos\Flow\Core\Booting\Exception\SubProcessException Code: 1355480641 File: Packages\Framework\Neos.Flow\Classes\Core\Booting\Scripts.php Line: 716 Open Data/Logs/Exceptions/20230715100927f65665.txt for a full stack trace. ``` notice the duplicated echo'd `Das System kann den angegebenen Pfad nicht finden.` afterwards, the first echo will be gone. --- Neos.Flow/Classes/Core/Booting/Scripts.php | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Neos.Flow/Classes/Core/Booting/Scripts.php b/Neos.Flow/Classes/Core/Booting/Scripts.php index d111ab30e8..646d7dc575 100644 --- a/Neos.Flow/Classes/Core/Booting/Scripts.php +++ b/Neos.Flow/Classes/Core/Booting/Scripts.php @@ -835,7 +835,7 @@ protected static function ensureCLISubrequestsUseCurrentlyRunningPhpBinary($phpB } // Try to resolve which binary file PHP is pointing to - exec($phpBinaryPathAndFilename . ' -r "echo realpath(PHP_BINARY);"', $output, $result); + exec($phpBinaryPathAndFilename . ' -r "echo realpath(PHP_BINARY);" 2>&1', $output, $result); if ($result === 0 && sizeof($output) === 1) { // Resolve any wrapper $configuredPhpBinaryPathAndFilename = $output[0]; @@ -879,7 +879,7 @@ protected static function ensureWebSubrequestsUseCurrentlyRunningPhpVersion($php return; } - exec($phpCommand . ' -r "echo PHP_VERSION;"', $output, $result); + exec($phpCommand . ' -r "echo PHP_VERSION;" 2>&1', $output, $result); if ($result !== 0) { return; From 8edba3614f53def063383fa6f1622ccdae5c06af Mon Sep 17 00:00:00 2001 From: mhsdesign <85400359+mhsdesign@users.noreply.github.com> Date: Tue, 18 Jul 2023 12:50:07 +0200 Subject: [PATCH 22/37] BUGFIX: Make `Scripts::buildPhpCommand` throw on invalid phpBinaryPathAndFilename otherwise this fails to late when the command is being executed --- Neos.Flow/Classes/Core/Booting/Scripts.php | 27 ++++++++++++---------- 1 file changed, 15 insertions(+), 12 deletions(-) diff --git a/Neos.Flow/Classes/Core/Booting/Scripts.php b/Neos.Flow/Classes/Core/Booting/Scripts.php index 646d7dc575..bac3b5368a 100644 --- a/Neos.Flow/Classes/Core/Booting/Scripts.php +++ b/Neos.Flow/Classes/Core/Booting/Scripts.php @@ -771,7 +771,7 @@ protected static function buildSubprocessCommand(string $commandIdentifier, arra /** * @param array $settings The Neos.Flow settings * @return string A command line command for PHP, which can be extended and then exec()uted - * @throws FlowException + * @throws Exception\SubProcessException in case the phpBinaryPathAndFilename is incorrect */ public static function buildPhpCommand(array $settings): string { @@ -820,7 +820,7 @@ public static function buildPhpCommand(array $settings): string * This avoids config errors where users forget to set Neos.Flow.core.phpBinaryPathAndFilename in CLI. * * @param string $phpBinaryPathAndFilename - * @throws FlowException + * @throws Exception\SubProcessException in case the php binary doesn't exist / is a different one for the current cli request */ protected static function ensureCLISubrequestsUseCurrentlyRunningPhpBinary($phpBinaryPathAndFilename) { @@ -829,14 +829,14 @@ protected static function ensureCLISubrequestsUseCurrentlyRunningPhpBinary($phpB return; } - // Ensure the actual PHP binary is known before checking if it is correct. If empty, we ignore it because it is checked later in the script. - if (strlen($phpBinaryPathAndFilename) === 0) { - return; + // Ensure the actual PHP binary is known before checking if it is correct. + if (!$phpBinaryPathAndFilename || strlen($phpBinaryPathAndFilename) === 0) { + throw new Exception\SubProcessException('"Neos.Flow.core.phpBinaryPathAndFilename" is not set.', 1689676816060); } // Try to resolve which binary file PHP is pointing to exec($phpBinaryPathAndFilename . ' -r "echo realpath(PHP_BINARY);" 2>&1', $output, $result); - if ($result === 0 && sizeof($output) === 1) { + if ($result === 0 && count($output) === 1) { // Resolve any wrapper $configuredPhpBinaryPathAndFilename = $output[0]; } else { @@ -844,15 +844,18 @@ protected static function ensureCLISubrequestsUseCurrentlyRunningPhpBinary($phpB $configuredPhpBinaryPathAndFilename = realpath($phpBinaryPathAndFilename); } - // if the configured PHP binary is empty here, the file does not exist. We ignore that here because it is checked later in the script. + // if the configured PHP binary is empty here, the file does not exist. if ($configuredPhpBinaryPathAndFilename === false || strlen($configuredPhpBinaryPathAndFilename) === 0) { - return; + throw new Exception\SubProcessException( + sprintf('The configured PHP binary "%s" via setting the "Neos.Flow.core.phpBinaryPathAndFilename" doesnt exist.', $phpBinaryPathAndFilename), + 1689676923331 + ); } exec(PHP_BINARY . ' -r "echo realpath(PHP_BINARY);"', $output); $realPhpBinary = $output[0]; if (strcmp($realPhpBinary, $configuredPhpBinaryPathAndFilename) !== 0) { - throw new FlowException(sprintf( + throw new Exception\SubProcessException(sprintf( 'You are running the Flow CLI with a PHP binary different from the one Flow is configured to use internally. ' . 'Flow has been run with "%s", while the PHP version Flow is configured to use for subrequests is "%s". Make sure to configure Flow to ' . 'use the same PHP binary by setting the "Neos.Flow.core.phpBinaryPathAndFilename" configuration option to "%s". Flush the ' . @@ -870,7 +873,7 @@ protected static function ensureCLISubrequestsUseCurrentlyRunningPhpBinary($phpB * server. * * @param string $phpCommand the completely build php string that is used to execute subrequests - * @throws FlowException + * @throws Exception\SubProcessException in case the php binary doesn't exist, or is not suitable for cli usage, or its version doesn't match */ protected static function ensureWebSubrequestsUseCurrentlyRunningPhpVersion($phpCommand) { @@ -882,12 +885,12 @@ protected static function ensureWebSubrequestsUseCurrentlyRunningPhpVersion($php exec($phpCommand . ' -r "echo PHP_VERSION;" 2>&1', $output, $result); if ($result !== 0) { - return; + throw new Exception\SubProcessException(sprintf('PHP binary might not exist or is not suitable for cli usage. Command `%s` didnt succeed.', $phpCommand), 1689676967447); } $configuredPHPVersion = $output[0]; if (array_slice(explode('.', $configuredPHPVersion), 0, 2) !== array_slice(explode('.', PHP_VERSION), 0, 2)) { - throw new FlowException(sprintf( + throw new Exception\SubProcessException(sprintf( 'You are executing Neos/Flow with a PHP version different from the one Flow is configured to use internally. ' . 'Flow is running with with PHP "%s", while the PHP version Flow is configured to use for subrequests is "%s". Make sure to configure Flow to ' . 'use the same PHP version by setting the "Neos.Flow.core.phpBinaryPathAndFilename" configuration option to a PHP-CLI binary of the version ' . From ec0cc6961145b761d143132d64f3f5820efce0c8 Mon Sep 17 00:00:00 2001 From: mhsdesign <85400359+mhsdesign@users.noreply.github.com> Date: Tue, 18 Jul 2023 13:00:53 +0200 Subject: [PATCH 23/37] BUGFIX: Handle possible fast cgi in `phpBinaryPathAndFilename`: send empty stdin to close possible fast cgi server in case the phpBinaryPathAndFilename points to a fast cgi php binary we will get caught in an endless process the fast cgi will expect input from the stdin and otherwise continue listening to close the stdin we send an empty string related https://bugs.php.net/bug.php?id=71209 --- Neos.Flow/Classes/Core/Booting/Scripts.php | 57 +++++++++++++++++++--- 1 file changed, 50 insertions(+), 7 deletions(-) diff --git a/Neos.Flow/Classes/Core/Booting/Scripts.php b/Neos.Flow/Classes/Core/Booting/Scripts.php index bac3b5368a..aea5aacda6 100644 --- a/Neos.Flow/Classes/Core/Booting/Scripts.php +++ b/Neos.Flow/Classes/Core/Booting/Scripts.php @@ -834,8 +834,25 @@ protected static function ensureCLISubrequestsUseCurrentlyRunningPhpBinary($phpB throw new Exception\SubProcessException('"Neos.Flow.core.phpBinaryPathAndFilename" is not set.', 1689676816060); } + $command = []; + if (PHP_OS_FAMILY !== 'Windows') { + // Handle possible fast cgi: send empty stdin to close possible fast cgi server + // + // in case the phpBinaryPathAndFilename points to a fast cgi php binary we will get caught in an endless process + // the fast cgi will expect input from the stdin and otherwise continue listening + // to close the stdin we send an empty string + // related https://bugs.php.net/bug.php?id=71209 + $command[] = 'echo "" | '; + } + $command[] = $phpBinaryPathAndFilename; + $command[] = <<<'EOF' + -r "echo realpath(PHP_BINARY);" + EOF; + $command[] = '2>&1'; // Output errors in response + // Try to resolve which binary file PHP is pointing to - exec($phpBinaryPathAndFilename . ' -r "echo realpath(PHP_BINARY);" 2>&1', $output, $result); + exec(join(' ', $command), $output, $result); + if ($result === 0 && count($output) === 1) { // Resolve any wrapper $configuredPhpBinaryPathAndFilename = $output[0]; @@ -882,21 +899,47 @@ protected static function ensureWebSubrequestsUseCurrentlyRunningPhpVersion($php return; } - exec($phpCommand . ' -r "echo PHP_VERSION;" 2>&1', $output, $result); + $command = []; + if (PHP_OS_FAMILY !== 'Windows') { + // Handle possible fast cgi: send empty stdin to close possible fast cgi server + // + // in case the phpBinaryPathAndFilename points to a fast cgi php binary we will get caught in an endless process + // the fast cgi will expect input from the stdin and otherwise continue listening + // to close the stdin we send an empty string + // related https://bugs.php.net/bug.php?id=71209 + $command[] = 'echo "" | '; + } + $command[] = $phpCommand; + $command[] = <<<'EOF' + -r "echo json_encode(['sapi' => PHP_SAPI, 'version' => PHP_VERSION]);" + EOF; + $command[] = '2>&1'; // Output errors in response - if ($result !== 0) { + exec(join(' ', $command), $output, $result); + + $phpInformation = json_decode($output[0] ?? '{}', true) ?: []; + + if ($result !== 0 || ($phpInformation['sapi'] ?? null) !== 'cli') { throw new Exception\SubProcessException(sprintf('PHP binary might not exist or is not suitable for cli usage. Command `%s` didnt succeed.', $phpCommand), 1689676967447); } - $configuredPHPVersion = $output[0]; - if (array_slice(explode('.', $configuredPHPVersion), 0, 2) !== array_slice(explode('.', PHP_VERSION), 0, 2)) { - throw new Exception\SubProcessException(sprintf( + /** + * Checks if two (php) versions equal by comparing major and minor. + * Differences in the patch level will be ignored. + * + * versionsAlmostEqual(8.1.0, 8.1.1) === true + */ + $versionsAlmostEqual = fn (string $oneVersion, string $otherVersion): bool + => array_slice(explode('.', $oneVersion), 0, 2) === array_slice(explode('.', $otherVersion), 0, 2); + + if (!$versionsAlmostEqual($phpInformation['version'], PHP_VERSION)) { + throw new FlowException(sprintf( 'You are executing Neos/Flow with a PHP version different from the one Flow is configured to use internally. ' . 'Flow is running with with PHP "%s", while the PHP version Flow is configured to use for subrequests is "%s". Make sure to configure Flow to ' . 'use the same PHP version by setting the "Neos.Flow.core.phpBinaryPathAndFilename" configuration option to a PHP-CLI binary of the version ' . '%s. Flush the caches by removing the folder Data/Temporary before executing Flow/Neos again.', PHP_VERSION, - $configuredPHPVersion, + $phpInformation['version'], PHP_VERSION ), 1536563428); } From 1390d88103a6be6ddfa827eb834b0f666f5ea67b Mon Sep 17 00:00:00 2001 From: Karsten Dambekalns Date: Tue, 18 Jul 2023 13:02:15 +0200 Subject: [PATCH 24/37] TASK: Avoid potential deprecation warning in StringHelper `str_replace()` expects strings, but Eel with it's loose typing might pass in different types. --- Neos.Eel/Classes/Helper/StringHelper.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Neos.Eel/Classes/Helper/StringHelper.php b/Neos.Eel/Classes/Helper/StringHelper.php index 3a004cf190..ca77d142cb 100755 --- a/Neos.Eel/Classes/Helper/StringHelper.php +++ b/Neos.Eel/Classes/Helper/StringHelper.php @@ -326,7 +326,7 @@ public function pregSplit($string, $pattern, $limit = -1) */ public function replace($string, $search, $replace) { - return str_replace($search, $replace, (string)$string); + return str_replace((string)$search, (string)$replace, (string)$string); } /** From e21fa7e56d45b1b9f30d559993d88cdfbc4378bc Mon Sep 17 00:00:00 2001 From: mhsdesign <85400359+mhsdesign@users.noreply.github.com> Date: Tue, 18 Jul 2023 18:04:17 +0200 Subject: [PATCH 25/37] BUGFIX: 3112 `Scripts::executeCommand` fix api --- Neos.Flow/Classes/Core/Booting/Scripts.php | 15 ++++++++------- 1 file changed, 8 insertions(+), 7 deletions(-) diff --git a/Neos.Flow/Classes/Core/Booting/Scripts.php b/Neos.Flow/Classes/Core/Booting/Scripts.php index d111ab30e8..26481639aa 100644 --- a/Neos.Flow/Classes/Core/Booting/Scripts.php +++ b/Neos.Flow/Classes/Core/Booting/Scripts.php @@ -673,16 +673,16 @@ public static function initializeResources(Bootstrap $bootstrap) * * @param string $commandIdentifier E.g. neos.flow:cache:flush * @param array $settings The Neos.Flow settings - * @param boolean $outputResults if false the output of this command is only echoed if the execution was not successful + * @param boolean $outputResults Echo the commands output on success * @param array $commandArguments Command arguments - * @return boolean true if the command execution was successful (exit code = 0) + * @param array|null &$output If the output argument is present, then the specified array will be filled with every line of output from the command. {@see exec()} + * @return true Legacy return value. Will always be true. A failure is expressed as a thrown exception + * @throws Exception\SubProcessException The execution of the sub process failed * @api - * @throws Exception\SubProcessException if execution of the sub process failed */ - public static function executeCommand(string $commandIdentifier, array $settings, bool $outputResults = true, array $commandArguments = []): bool + public static function executeCommand(string $commandIdentifier, array $settings, bool $outputResults = true, array $commandArguments = [], ?array &$output = []): bool { $command = self::buildSubprocessCommand($commandIdentifier, $settings, $commandArguments); - $output = []; // Output errors in response $command .= ' 2>&1'; exec($command, $output, $result); @@ -696,11 +696,11 @@ public static function executeCommand(string $commandIdentifier, array $settings // If anything else goes wrong, it may as well not produce any $output, but might do so when run on an interactive // shell. Thus we dump the command next to the exception dumps. $exceptionMessage .= ' Try to run the command manually, to hopefully get some hint on the actual error.'; - if (!file_exists(FLOW_PATH_DATA . 'Logs/Exceptions')) { Files::createDirectoryRecursively(FLOW_PATH_DATA . 'Logs/Exceptions'); } if (file_exists(FLOW_PATH_DATA . 'Logs/Exceptions') && is_dir(FLOW_PATH_DATA . 'Logs/Exceptions') && is_writable(FLOW_PATH_DATA . 'Logs/Exceptions')) { + // Logs the command string `php ./flow foo:bar` inside `Logs/Exceptions/123-command.txt` $referenceCode = date('YmdHis', $_SERVER['REQUEST_TIME']) . substr(md5(rand()), 0, 6); $errorDumpPathAndFilename = FLOW_PATH_DATA . 'Logs/Exceptions/' . $referenceCode . '-command.txt'; file_put_contents($errorDumpPathAndFilename, $command); @@ -714,7 +714,8 @@ public static function executeCommand(string $commandIdentifier, array $settings if ($outputResults) { echo implode(PHP_EOL, $output); } - return $result === 0; + // Legacy return value + return true; } /** From 8208fda059e5d6bdb6863486d070a91842756928 Mon Sep 17 00:00:00 2001 From: mhsdesign <85400359+mhsdesign@users.noreply.github.com> Date: Tue, 18 Jul 2023 19:19:51 +0200 Subject: [PATCH 26/37] TASK: Guard against `temporaryDirectoryPath == null` --- Neos.Flow/Classes/Configuration/ConfigurationManager.php | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/Neos.Flow/Classes/Configuration/ConfigurationManager.php b/Neos.Flow/Classes/Configuration/ConfigurationManager.php index 4b58f91390..4d239e823f 100644 --- a/Neos.Flow/Classes/Configuration/ConfigurationManager.php +++ b/Neos.Flow/Classes/Configuration/ConfigurationManager.php @@ -382,6 +382,9 @@ protected function replaceConfigurationForConfigurationType(string $configuratio */ protected function loadConfigurationsFromCache(): void { + if ($this->temporaryDirectoryPath === null) { + return; + } $cachePathAndFilename = $this->constructConfigurationCachePath(); /** @noinspection UsingInclusionReturnValueInspection */ $configurations = @include $cachePathAndFilename; @@ -553,6 +556,7 @@ protected function replaceVariablesInPhpString(string $phpString): string */ protected function constructConfigurationCachePath(): string { + assert($this->temporaryDirectoryPath !== null, 'ConfigurationManager::$temporaryDirectoryPath must not be null.'); $configurationCachePath = $this->temporaryDirectoryPath . 'Configuration/'; return $configurationCachePath . str_replace('/', '_', (string)$this->context) . 'Configurations.php'; } From ab90ed61b66b2f88aadb2a8e9ba88ec64ee26ef4 Mon Sep 17 00:00:00 2001 From: mhsdesign <85400359+mhsdesign@users.noreply.github.com> Date: Wed, 19 Jul 2023 10:47:48 +0200 Subject: [PATCH 27/37] TASK: Try to fix test --- .../ConfigurationManagerTest.php | 28 +++++++++---------- 1 file changed, 14 insertions(+), 14 deletions(-) diff --git a/Neos.Flow/Tests/Unit/Configuration/ConfigurationManagerTest.php b/Neos.Flow/Tests/Unit/Configuration/ConfigurationManagerTest.php index 9ee4a72b92..a6708d7c18 100644 --- a/Neos.Flow/Tests/Unit/Configuration/ConfigurationManagerTest.php +++ b/Neos.Flow/Tests/Unit/Configuration/ConfigurationManagerTest.php @@ -584,24 +584,24 @@ public function packageCachesCallback() */ public function loadConfigurationCacheLoadsConfigurationsFromCacheIfACacheFileExists() { - vfsStream::setup('Flow/Cache'); - - $configurationsCode = <<< "EOD" - 'touched'); -?> -EOD; - - $cachedConfigurationsPathAndFilename = vfsStream::url('Flow/Cache/Configurations.php'); - file_put_contents($cachedConfigurationsPathAndFilename, $configurationsCode); + vfsStream::setup('Temporary', null, [ + 'Configuration' => [ + 'TestingConfigurations.php' => <<< "PHP" + 'touched'); + ?> + PHP + ], + 'Empty' => [] + ]); - $configurationManager = $this->getAccessibleConfigurationManager(['postProcessConfigurationType', 'constructConfigurationCachePath', 'refreshConfiguration']); - $configurationManager->expects(self::any())->method('constructConfigurationCachePath')->willReturn('notfound.php', $cachedConfigurationsPathAndFilename); + $configurationManager = $this->getAccessibleConfigurationManager(['postProcessConfigurationType', 'refreshConfiguration']); + $configurationManager->_set('context', new ApplicationContext('Testing')); $configurationManager->_set('configurations', ['foo' => 'untouched']); - $configurationManager->_call('loadConfigurationsFromCache'); + $configurationManager->setTemporaryDirectoryPath(vfsStream::url('Temporary/Empty/')); self::assertSame(['foo' => 'untouched'], $configurationManager->_get('configurations')); - $configurationManager->_call('loadConfigurationsFromCache'); + $configurationManager->setTemporaryDirectoryPath(vfsStream::url('Temporary/')); self::assertSame(['bar' => 'touched'], $configurationManager->_get('configurations')); } From 4d190a7fed727d9ae521bd8163cbd3a9361f5a71 Mon Sep 17 00:00:00 2001 From: mhsdesign <85400359+mhsdesign@users.noreply.github.com> Date: Wed, 19 Jul 2023 10:49:44 +0200 Subject: [PATCH 28/37] TASK: Revert `executeCommand` &$output --- Neos.Flow/Classes/Core/Booting/Scripts.php | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Neos.Flow/Classes/Core/Booting/Scripts.php b/Neos.Flow/Classes/Core/Booting/Scripts.php index 26481639aa..066b750eb6 100644 --- a/Neos.Flow/Classes/Core/Booting/Scripts.php +++ b/Neos.Flow/Classes/Core/Booting/Scripts.php @@ -675,16 +675,16 @@ public static function initializeResources(Bootstrap $bootstrap) * @param array $settings The Neos.Flow settings * @param boolean $outputResults Echo the commands output on success * @param array $commandArguments Command arguments - * @param array|null &$output If the output argument is present, then the specified array will be filled with every line of output from the command. {@see exec()} * @return true Legacy return value. Will always be true. A failure is expressed as a thrown exception * @throws Exception\SubProcessException The execution of the sub process failed * @api */ - public static function executeCommand(string $commandIdentifier, array $settings, bool $outputResults = true, array $commandArguments = [], ?array &$output = []): bool + public static function executeCommand(string $commandIdentifier, array $settings, bool $outputResults = true, array $commandArguments = []): bool { $command = self::buildSubprocessCommand($commandIdentifier, $settings, $commandArguments); // Output errors in response $command .= ' 2>&1'; + $output = []; exec($command, $output, $result); if ($result !== 0) { if (count($output) > 0) { From 7a8b6e021efc732a03f5713993eb05ea1d48b637 Mon Sep 17 00:00:00 2001 From: mhsdesign <85400359+mhsdesign@users.noreply.github.com> Date: Thu, 20 Jul 2023 10:09:09 +0200 Subject: [PATCH 29/37] TASK: Test configuration manager with disabled cache --- .../ConfigurationManagerTest.php | 35 +++++++++++++++++++ 1 file changed, 35 insertions(+) diff --git a/Neos.Flow/Tests/Unit/Configuration/ConfigurationManagerTest.php b/Neos.Flow/Tests/Unit/Configuration/ConfigurationManagerTest.php index a6708d7c18..29ac7d6a75 100644 --- a/Neos.Flow/Tests/Unit/Configuration/ConfigurationManagerTest.php +++ b/Neos.Flow/Tests/Unit/Configuration/ConfigurationManagerTest.php @@ -1676,6 +1676,41 @@ public function load(array $packages, ApplicationContext $context): array self::assertArrayHasKey('SomeKey', $configuration); } + /** + * Test the disabled cache and that we still replace env variables. + * + * {@see ConfigurationManager::$temporaryDirectoryPath} === null + * + * @test + */ + public function configurationManagerWithDisabledCache(): void + { + $configurationManager = new ConfigurationManager(new ApplicationContext('Testing')); + + // we don't invoke $configurationManager->setTemporaryDirectoryPath();, and thus the cache is disabled + + $mockLoader = $this->getMockBuilder(LoaderInterface::class)->getMock(); + + $mockLoader->method('load')->willReturn( + [ + 'plainSetting' => '123', + 'envSetting' => '%PHP_BINARY%' + ] + ); + + $configurationManager->registerConfigurationType('MockType', $mockLoader); + + $configuration = $configurationManager->getConfiguration('MockType'); + + self::assertSame( + [ + 'plainSetting' => '123', + 'envSetting' => PHP_BINARY + ], + $configuration + ); + } + /** * A callback as stand in configruation source for above test. * From 4235487e3c4c57170ecd5a251a85f1a02636db78 Mon Sep 17 00:00:00 2001 From: Marc Henry Schultz <85400359+mhsdesign@users.noreply.github.com> Date: Fri, 21 Jul 2023 09:36:15 +0200 Subject: [PATCH 30/37] BUGFIX: 3121 filebackend time format --- Neos.Flow.Log/Classes/Backend/FileBackend.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Neos.Flow.Log/Classes/Backend/FileBackend.php b/Neos.Flow.Log/Classes/Backend/FileBackend.php index a98b77dda6..f6d37215b9 100644 --- a/Neos.Flow.Log/Classes/Backend/FileBackend.php +++ b/Neos.Flow.Log/Classes/Backend/FileBackend.php @@ -241,7 +241,7 @@ public function append(string $message, int $severity = LOG_INFO, $additionalDat } $ipAddress = ($this->logIpAddress === true) ? str_pad(($_SERVER['REMOTE_ADDR'] ?? ''), 15) : ''; $severityLabel = $this->severityLabels[$severity] ?? 'UNKNOWN '; - $output = (new \DateTime())->format('y-m-d H:m:i') . $processId . ' ' . $ipAddress . $severityLabel . ' ' . str_pad((string)$packageKey, 20) . ' ' . $message; + $output = (new \DateTime())->format('y-m-d H:i:s') . $processId . ' ' . $ipAddress . $severityLabel . ' ' . str_pad((string)$packageKey, 20) . ' ' . $message; if ($this->logMessageOrigin === true && ($className !== null || $methodName !== null)) { $output .= ' [logged in ' . $className . '::' . $methodName . '()]'; From dc838ab6a112cd4951551430ac2cb7e7ad058d74 Mon Sep 17 00:00:00 2001 From: Denny Lubitz Date: Tue, 1 Aug 2023 22:24:18 +0200 Subject: [PATCH 31/37] BUGFIX: Allow passing paths as array for settings migrations --- Neos.Flow/Scripts/Migrations/AbstractMigration.php | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/Neos.Flow/Scripts/Migrations/AbstractMigration.php b/Neos.Flow/Scripts/Migrations/AbstractMigration.php index 41be56e2c9..75a0454a24 100644 --- a/Neos.Flow/Scripts/Migrations/AbstractMigration.php +++ b/Neos.Flow/Scripts/Migrations/AbstractMigration.php @@ -340,8 +340,8 @@ function ($pathAndFileName) use ($configurationType) { /** * Move a settings path from "source" to "destination"; best to be used when package names change. * - * @param string $sourcePath - * @param string $destinationPath + * @param array|string $sourcePath + * @param array|string $destinationPath */ protected function moveSettingsPaths($sourcePath, $destinationPath) { @@ -368,7 +368,7 @@ function (array &$configuration) use ($sourcePath, $destinationPath) { $configuration = Arrays::unsetValueByPath($configuration, $sourcePath); // remove empty keys before our removed key (if it exists) - $sourcePathExploded = explode('.', $sourcePath); + $sourcePathExploded = !is_array($sourcePath) ? explode('.', $sourcePath) : $sourcePath; for ($length = count($sourcePathExploded) - 1; $length > 0; $length--) { $temporaryPath = array_slice($sourcePathExploded, 0, $length); $valueAtPath = Arrays::getValueByPath($configuration, $temporaryPath); From f4a768d5d70d033107f1d97db6a1b5deb07320ac Mon Sep 17 00:00:00 2001 From: Denny Lubitz Date: Wed, 2 Aug 2023 08:54:05 +0200 Subject: [PATCH 32/37] BUGFIX: Test pin doctrine/orm --- composer.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/composer.json b/composer.json index 855973c080..0ea3f00a5b 100644 --- a/composer.json +++ b/composer.json @@ -21,7 +21,7 @@ "psr/http-server-middleware": "^1.0", "psr/http-server-handler": "^1.0", "ramsey/uuid": "^3.0 || ^4.0", - "doctrine/orm": "^2.9.3", + "doctrine/orm": "^2.9.3 <2.16.0", "doctrine/migrations": "^3.0", "doctrine/dbal": "^2.13", "doctrine/common": "^3.0.3", From 674d9337e64362a04dc06f469b75f30055e3ade4 Mon Sep 17 00:00:00 2001 From: Jenkins Date: Wed, 2 Aug 2023 09:22:35 +0000 Subject: [PATCH 33/37] TASK: Update references [skip ci] --- .../TheDefinitiveGuide/PartV/AnnotationReference.rst | 2 +- .../Documentation/TheDefinitiveGuide/PartV/CommandReference.rst | 2 +- .../PartV/FluidAdaptorViewHelperReference.rst | 2 +- .../Documentation/TheDefinitiveGuide/PartV/SignalsReference.rst | 2 +- .../TheDefinitiveGuide/PartV/TYPO3FluidViewHelperReference.rst | 2 +- .../TheDefinitiveGuide/PartV/TypeConverterReference.rst | 2 +- .../TheDefinitiveGuide/PartV/ValidatorReference.rst | 2 +- 7 files changed, 7 insertions(+), 7 deletions(-) diff --git a/Neos.Flow/Documentation/TheDefinitiveGuide/PartV/AnnotationReference.rst b/Neos.Flow/Documentation/TheDefinitiveGuide/PartV/AnnotationReference.rst index f15b1878d2..88fa74da06 100644 --- a/Neos.Flow/Documentation/TheDefinitiveGuide/PartV/AnnotationReference.rst +++ b/Neos.Flow/Documentation/TheDefinitiveGuide/PartV/AnnotationReference.rst @@ -3,7 +3,7 @@ Flow Annotation Reference ========================= -This reference was automatically generated from code on 2023-07-18 +This reference was automatically generated from code on 2023-08-02 .. _`Flow Annotation Reference: After`: diff --git a/Neos.Flow/Documentation/TheDefinitiveGuide/PartV/CommandReference.rst b/Neos.Flow/Documentation/TheDefinitiveGuide/PartV/CommandReference.rst index 76caa7af2b..fd6f239d41 100644 --- a/Neos.Flow/Documentation/TheDefinitiveGuide/PartV/CommandReference.rst +++ b/Neos.Flow/Documentation/TheDefinitiveGuide/PartV/CommandReference.rst @@ -19,7 +19,7 @@ commands that may be available, use:: ./flow help -The following reference was automatically generated from code on 2023-07-18 +The following reference was automatically generated from code on 2023-08-02 .. _`Flow Command Reference: NEOS.FLOW`: diff --git a/Neos.Flow/Documentation/TheDefinitiveGuide/PartV/FluidAdaptorViewHelperReference.rst b/Neos.Flow/Documentation/TheDefinitiveGuide/PartV/FluidAdaptorViewHelperReference.rst index 9a24efd991..8397a8eabc 100644 --- a/Neos.Flow/Documentation/TheDefinitiveGuide/PartV/FluidAdaptorViewHelperReference.rst +++ b/Neos.Flow/Documentation/TheDefinitiveGuide/PartV/FluidAdaptorViewHelperReference.rst @@ -3,7 +3,7 @@ FluidAdaptor ViewHelper Reference ================================= -This reference was automatically generated from code on 2023-07-18 +This reference was automatically generated from code on 2023-08-02 .. _`FluidAdaptor ViewHelper Reference: f:debug`: diff --git a/Neos.Flow/Documentation/TheDefinitiveGuide/PartV/SignalsReference.rst b/Neos.Flow/Documentation/TheDefinitiveGuide/PartV/SignalsReference.rst index 94be207675..9ce3fb7f6e 100644 --- a/Neos.Flow/Documentation/TheDefinitiveGuide/PartV/SignalsReference.rst +++ b/Neos.Flow/Documentation/TheDefinitiveGuide/PartV/SignalsReference.rst @@ -3,7 +3,7 @@ Flow Signals Reference ====================== -This reference was automatically generated from code on 2023-07-18 +This reference was automatically generated from code on 2023-08-02 .. _`Flow Signals Reference: AbstractAdvice (``Neos\Flow\Aop\Advice\AbstractAdvice``)`: diff --git a/Neos.Flow/Documentation/TheDefinitiveGuide/PartV/TYPO3FluidViewHelperReference.rst b/Neos.Flow/Documentation/TheDefinitiveGuide/PartV/TYPO3FluidViewHelperReference.rst index f1389efc88..baa8f1cfe6 100644 --- a/Neos.Flow/Documentation/TheDefinitiveGuide/PartV/TYPO3FluidViewHelperReference.rst +++ b/Neos.Flow/Documentation/TheDefinitiveGuide/PartV/TYPO3FluidViewHelperReference.rst @@ -3,7 +3,7 @@ TYPO3 Fluid ViewHelper Reference ================================ -This reference was automatically generated from code on 2023-07-18 +This reference was automatically generated from code on 2023-08-02 .. _`TYPO3 Fluid ViewHelper Reference: f:alias`: diff --git a/Neos.Flow/Documentation/TheDefinitiveGuide/PartV/TypeConverterReference.rst b/Neos.Flow/Documentation/TheDefinitiveGuide/PartV/TypeConverterReference.rst index 93e70407dc..618048a491 100644 --- a/Neos.Flow/Documentation/TheDefinitiveGuide/PartV/TypeConverterReference.rst +++ b/Neos.Flow/Documentation/TheDefinitiveGuide/PartV/TypeConverterReference.rst @@ -3,7 +3,7 @@ Flow TypeConverter Reference ============================ -This reference was automatically generated from code on 2023-07-18 +This reference was automatically generated from code on 2023-08-02 .. _`Flow TypeConverter Reference: ArrayConverter`: diff --git a/Neos.Flow/Documentation/TheDefinitiveGuide/PartV/ValidatorReference.rst b/Neos.Flow/Documentation/TheDefinitiveGuide/PartV/ValidatorReference.rst index 307551c672..79acf16ef5 100644 --- a/Neos.Flow/Documentation/TheDefinitiveGuide/PartV/ValidatorReference.rst +++ b/Neos.Flow/Documentation/TheDefinitiveGuide/PartV/ValidatorReference.rst @@ -3,7 +3,7 @@ Flow Validator Reference ======================== -This reference was automatically generated from code on 2023-07-18 +This reference was automatically generated from code on 2023-08-02 .. _`Flow Validator Reference: AggregateBoundaryValidator`: From b96486c479935b1b14688db6ecc4a13c9dbdfb75 Mon Sep 17 00:00:00 2001 From: Marc Henry Schultz <85400359+mhsdesign@users.noreply.github.com> Date: Thu, 3 Aug 2023 13:00:25 +0200 Subject: [PATCH 34/37] Fix php doc --- Neos.Flow/Classes/Configuration/ConfigurationManager.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Neos.Flow/Classes/Configuration/ConfigurationManager.php b/Neos.Flow/Classes/Configuration/ConfigurationManager.php index 4d239e823f..2f98451bdd 100644 --- a/Neos.Flow/Classes/Configuration/ConfigurationManager.php +++ b/Neos.Flow/Classes/Configuration/ConfigurationManager.php @@ -154,7 +154,7 @@ class ConfigurationManager /** * An absolute file path to store configuration caches in. If not set, no cache will be active. * - * @var ?string + * @var string|null */ protected $temporaryDirectoryPath = null; From 9e59c15a010dee19aafa29e2e6eb9f213cedceaa Mon Sep 17 00:00:00 2001 From: Jenkins Date: Fri, 4 Aug 2023 07:17:24 +0000 Subject: [PATCH 35/37] TASK: Update references [skip ci] --- .../TheDefinitiveGuide/PartV/AnnotationReference.rst | 2 +- .../Documentation/TheDefinitiveGuide/PartV/CommandReference.rst | 2 +- .../PartV/FluidAdaptorViewHelperReference.rst | 2 +- .../Documentation/TheDefinitiveGuide/PartV/SignalsReference.rst | 2 +- .../TheDefinitiveGuide/PartV/TYPO3FluidViewHelperReference.rst | 2 +- .../TheDefinitiveGuide/PartV/TypeConverterReference.rst | 2 +- .../TheDefinitiveGuide/PartV/ValidatorReference.rst | 2 +- 7 files changed, 7 insertions(+), 7 deletions(-) diff --git a/Neos.Flow/Documentation/TheDefinitiveGuide/PartV/AnnotationReference.rst b/Neos.Flow/Documentation/TheDefinitiveGuide/PartV/AnnotationReference.rst index 88fa74da06..b85789412a 100644 --- a/Neos.Flow/Documentation/TheDefinitiveGuide/PartV/AnnotationReference.rst +++ b/Neos.Flow/Documentation/TheDefinitiveGuide/PartV/AnnotationReference.rst @@ -3,7 +3,7 @@ Flow Annotation Reference ========================= -This reference was automatically generated from code on 2023-08-02 +This reference was automatically generated from code on 2023-08-04 .. _`Flow Annotation Reference: After`: diff --git a/Neos.Flow/Documentation/TheDefinitiveGuide/PartV/CommandReference.rst b/Neos.Flow/Documentation/TheDefinitiveGuide/PartV/CommandReference.rst index fd6f239d41..8b1a5e2ce8 100644 --- a/Neos.Flow/Documentation/TheDefinitiveGuide/PartV/CommandReference.rst +++ b/Neos.Flow/Documentation/TheDefinitiveGuide/PartV/CommandReference.rst @@ -19,7 +19,7 @@ commands that may be available, use:: ./flow help -The following reference was automatically generated from code on 2023-08-02 +The following reference was automatically generated from code on 2023-08-04 .. _`Flow Command Reference: NEOS.FLOW`: diff --git a/Neos.Flow/Documentation/TheDefinitiveGuide/PartV/FluidAdaptorViewHelperReference.rst b/Neos.Flow/Documentation/TheDefinitiveGuide/PartV/FluidAdaptorViewHelperReference.rst index 8397a8eabc..cedb84b7dc 100644 --- a/Neos.Flow/Documentation/TheDefinitiveGuide/PartV/FluidAdaptorViewHelperReference.rst +++ b/Neos.Flow/Documentation/TheDefinitiveGuide/PartV/FluidAdaptorViewHelperReference.rst @@ -3,7 +3,7 @@ FluidAdaptor ViewHelper Reference ================================= -This reference was automatically generated from code on 2023-08-02 +This reference was automatically generated from code on 2023-08-04 .. _`FluidAdaptor ViewHelper Reference: f:debug`: diff --git a/Neos.Flow/Documentation/TheDefinitiveGuide/PartV/SignalsReference.rst b/Neos.Flow/Documentation/TheDefinitiveGuide/PartV/SignalsReference.rst index 9ce3fb7f6e..5e8ab6d09d 100644 --- a/Neos.Flow/Documentation/TheDefinitiveGuide/PartV/SignalsReference.rst +++ b/Neos.Flow/Documentation/TheDefinitiveGuide/PartV/SignalsReference.rst @@ -3,7 +3,7 @@ Flow Signals Reference ====================== -This reference was automatically generated from code on 2023-08-02 +This reference was automatically generated from code on 2023-08-04 .. _`Flow Signals Reference: AbstractAdvice (``Neos\Flow\Aop\Advice\AbstractAdvice``)`: diff --git a/Neos.Flow/Documentation/TheDefinitiveGuide/PartV/TYPO3FluidViewHelperReference.rst b/Neos.Flow/Documentation/TheDefinitiveGuide/PartV/TYPO3FluidViewHelperReference.rst index baa8f1cfe6..e468b79aa7 100644 --- a/Neos.Flow/Documentation/TheDefinitiveGuide/PartV/TYPO3FluidViewHelperReference.rst +++ b/Neos.Flow/Documentation/TheDefinitiveGuide/PartV/TYPO3FluidViewHelperReference.rst @@ -3,7 +3,7 @@ TYPO3 Fluid ViewHelper Reference ================================ -This reference was automatically generated from code on 2023-08-02 +This reference was automatically generated from code on 2023-08-04 .. _`TYPO3 Fluid ViewHelper Reference: f:alias`: diff --git a/Neos.Flow/Documentation/TheDefinitiveGuide/PartV/TypeConverterReference.rst b/Neos.Flow/Documentation/TheDefinitiveGuide/PartV/TypeConverterReference.rst index 618048a491..c4661c18fd 100644 --- a/Neos.Flow/Documentation/TheDefinitiveGuide/PartV/TypeConverterReference.rst +++ b/Neos.Flow/Documentation/TheDefinitiveGuide/PartV/TypeConverterReference.rst @@ -3,7 +3,7 @@ Flow TypeConverter Reference ============================ -This reference was automatically generated from code on 2023-08-02 +This reference was automatically generated from code on 2023-08-04 .. _`Flow TypeConverter Reference: ArrayConverter`: diff --git a/Neos.Flow/Documentation/TheDefinitiveGuide/PartV/ValidatorReference.rst b/Neos.Flow/Documentation/TheDefinitiveGuide/PartV/ValidatorReference.rst index 79acf16ef5..7c7a1d88d4 100644 --- a/Neos.Flow/Documentation/TheDefinitiveGuide/PartV/ValidatorReference.rst +++ b/Neos.Flow/Documentation/TheDefinitiveGuide/PartV/ValidatorReference.rst @@ -3,7 +3,7 @@ Flow Validator Reference ======================== -This reference was automatically generated from code on 2023-08-02 +This reference was automatically generated from code on 2023-08-04 .. _`Flow Validator Reference: AggregateBoundaryValidator`: From e0f4aa0bd69982bc8bf03724070821ad3e9f39f1 Mon Sep 17 00:00:00 2001 From: mhsdesign <85400359+mhsdesign@users.noreply.github.com> Date: Fri, 4 Aug 2023 15:18:35 +0200 Subject: [PATCH 36/37] TASK: Adjust code to be 7.3 compatible / remove arrow function --- Neos.Flow/Classes/Core/Booting/Scripts.php | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/Neos.Flow/Classes/Core/Booting/Scripts.php b/Neos.Flow/Classes/Core/Booting/Scripts.php index adf4e94696..74c9cf6d9a 100644 --- a/Neos.Flow/Classes/Core/Booting/Scripts.php +++ b/Neos.Flow/Classes/Core/Booting/Scripts.php @@ -932,8 +932,9 @@ protected static function ensureWebSubrequestsUseCurrentlyRunningPhpVersion($php * * versionsAlmostEqual(8.1.0, 8.1.1) === true */ - $versionsAlmostEqual = fn (string $oneVersion, string $otherVersion): bool - => array_slice(explode('.', $oneVersion), 0, 2) === array_slice(explode('.', $otherVersion), 0, 2); + $versionsAlmostEqual = function (string $oneVersion, string $otherVersion): bool { + return array_slice(explode('.', $oneVersion), 0, 2) === array_slice(explode('.', $otherVersion), 0, 2); + }; if (!$versionsAlmostEqual($phpInformation['version'], PHP_VERSION)) { throw new FlowException(sprintf( From 604c04eb7ffd508d13c4b4560b3ea9fda1f2fffe Mon Sep 17 00:00:00 2001 From: Jenkins Date: Sat, 5 Aug 2023 08:53:58 +0000 Subject: [PATCH 37/37] TASK: Update references [skip ci] --- .../TheDefinitiveGuide/PartV/AnnotationReference.rst | 2 +- .../Documentation/TheDefinitiveGuide/PartV/CommandReference.rst | 2 +- .../PartV/FluidAdaptorViewHelperReference.rst | 2 +- .../Documentation/TheDefinitiveGuide/PartV/SignalsReference.rst | 2 +- .../TheDefinitiveGuide/PartV/TYPO3FluidViewHelperReference.rst | 2 +- .../TheDefinitiveGuide/PartV/TypeConverterReference.rst | 2 +- .../TheDefinitiveGuide/PartV/ValidatorReference.rst | 2 +- 7 files changed, 7 insertions(+), 7 deletions(-) diff --git a/Neos.Flow/Documentation/TheDefinitiveGuide/PartV/AnnotationReference.rst b/Neos.Flow/Documentation/TheDefinitiveGuide/PartV/AnnotationReference.rst index b85789412a..d5607b9240 100644 --- a/Neos.Flow/Documentation/TheDefinitiveGuide/PartV/AnnotationReference.rst +++ b/Neos.Flow/Documentation/TheDefinitiveGuide/PartV/AnnotationReference.rst @@ -3,7 +3,7 @@ Flow Annotation Reference ========================= -This reference was automatically generated from code on 2023-08-04 +This reference was automatically generated from code on 2023-08-05 .. _`Flow Annotation Reference: After`: diff --git a/Neos.Flow/Documentation/TheDefinitiveGuide/PartV/CommandReference.rst b/Neos.Flow/Documentation/TheDefinitiveGuide/PartV/CommandReference.rst index 8b1a5e2ce8..303cefee07 100644 --- a/Neos.Flow/Documentation/TheDefinitiveGuide/PartV/CommandReference.rst +++ b/Neos.Flow/Documentation/TheDefinitiveGuide/PartV/CommandReference.rst @@ -19,7 +19,7 @@ commands that may be available, use:: ./flow help -The following reference was automatically generated from code on 2023-08-04 +The following reference was automatically generated from code on 2023-08-05 .. _`Flow Command Reference: NEOS.FLOW`: diff --git a/Neos.Flow/Documentation/TheDefinitiveGuide/PartV/FluidAdaptorViewHelperReference.rst b/Neos.Flow/Documentation/TheDefinitiveGuide/PartV/FluidAdaptorViewHelperReference.rst index cedb84b7dc..0baa5d6173 100644 --- a/Neos.Flow/Documentation/TheDefinitiveGuide/PartV/FluidAdaptorViewHelperReference.rst +++ b/Neos.Flow/Documentation/TheDefinitiveGuide/PartV/FluidAdaptorViewHelperReference.rst @@ -3,7 +3,7 @@ FluidAdaptor ViewHelper Reference ================================= -This reference was automatically generated from code on 2023-08-04 +This reference was automatically generated from code on 2023-08-05 .. _`FluidAdaptor ViewHelper Reference: f:debug`: diff --git a/Neos.Flow/Documentation/TheDefinitiveGuide/PartV/SignalsReference.rst b/Neos.Flow/Documentation/TheDefinitiveGuide/PartV/SignalsReference.rst index 5e8ab6d09d..a1fffbeae3 100644 --- a/Neos.Flow/Documentation/TheDefinitiveGuide/PartV/SignalsReference.rst +++ b/Neos.Flow/Documentation/TheDefinitiveGuide/PartV/SignalsReference.rst @@ -3,7 +3,7 @@ Flow Signals Reference ====================== -This reference was automatically generated from code on 2023-08-04 +This reference was automatically generated from code on 2023-08-05 .. _`Flow Signals Reference: AbstractAdvice (``Neos\Flow\Aop\Advice\AbstractAdvice``)`: diff --git a/Neos.Flow/Documentation/TheDefinitiveGuide/PartV/TYPO3FluidViewHelperReference.rst b/Neos.Flow/Documentation/TheDefinitiveGuide/PartV/TYPO3FluidViewHelperReference.rst index e468b79aa7..8666553a01 100644 --- a/Neos.Flow/Documentation/TheDefinitiveGuide/PartV/TYPO3FluidViewHelperReference.rst +++ b/Neos.Flow/Documentation/TheDefinitiveGuide/PartV/TYPO3FluidViewHelperReference.rst @@ -3,7 +3,7 @@ TYPO3 Fluid ViewHelper Reference ================================ -This reference was automatically generated from code on 2023-08-04 +This reference was automatically generated from code on 2023-08-05 .. _`TYPO3 Fluid ViewHelper Reference: f:alias`: diff --git a/Neos.Flow/Documentation/TheDefinitiveGuide/PartV/TypeConverterReference.rst b/Neos.Flow/Documentation/TheDefinitiveGuide/PartV/TypeConverterReference.rst index c4661c18fd..e3ad5015cb 100644 --- a/Neos.Flow/Documentation/TheDefinitiveGuide/PartV/TypeConverterReference.rst +++ b/Neos.Flow/Documentation/TheDefinitiveGuide/PartV/TypeConverterReference.rst @@ -3,7 +3,7 @@ Flow TypeConverter Reference ============================ -This reference was automatically generated from code on 2023-08-04 +This reference was automatically generated from code on 2023-08-05 .. _`Flow TypeConverter Reference: ArrayConverter`: diff --git a/Neos.Flow/Documentation/TheDefinitiveGuide/PartV/ValidatorReference.rst b/Neos.Flow/Documentation/TheDefinitiveGuide/PartV/ValidatorReference.rst index 7c7a1d88d4..e479f10c64 100644 --- a/Neos.Flow/Documentation/TheDefinitiveGuide/PartV/ValidatorReference.rst +++ b/Neos.Flow/Documentation/TheDefinitiveGuide/PartV/ValidatorReference.rst @@ -3,7 +3,7 @@ Flow Validator Reference ======================== -This reference was automatically generated from code on 2023-08-04 +This reference was automatically generated from code on 2023-08-05 .. _`Flow Validator Reference: AggregateBoundaryValidator`: