Skip to content

Commit dd8a4a1

Browse files
authored
Merge pull request #1 from relthyg/knallcharge-master
2 parents 642be39 + 9a15328 commit dd8a4a1

25 files changed

Lines changed: 199 additions & 246 deletions

.github/workflows/tests.yml

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -16,8 +16,8 @@ jobs:
1616
env:
1717
SYMFONY_REQUIRE: ${{ matrix.symfony }}
1818
SYMFONY_DEPRECATIONS_HELPER: ${{ matrix.symfony-deprecations }}
19-
DB_DSN_MYSQL: mysql://test:test@127.0.0.1/craue_form_flow_tests
20-
DB_DSN_POSTGRESQL: pgsql://test:test@127.0.0.1/craue_form_flow_tests
19+
DB_DSN_MYSQL: mysql://test:test@127.0.0.1/craue_form_flow_tests?serverVersion=8.0.44
20+
DB_DSN_POSTGRESQL: pgsql://test:test@127.0.0.1/craue_form_flow_tests?serverVersion=18.1
2121
DB_DSN_SQLITE: sqlite:///sqlite.db
2222

2323
strategy:
@@ -45,7 +45,7 @@ jobs:
4545

4646
services:
4747
mysql:
48-
image: mysql:${{ (matrix.php == '7.3' && '5.7') || '8.0' }}
48+
image: mysql:8.0.44
4949
env:
5050
MYSQL_USER: test
5151
MYSQL_PASSWORD: test
@@ -60,7 +60,7 @@ jobs:
6060
- 3306:3306
6161

6262
postgres:
63-
image: postgres
63+
image: postgres:18.1
6464
env:
6565
POSTGRES_USER: test
6666
POSTGRES_PASSWORD: test

CraueFormFlowBundle.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@ class CraueFormFlowBundle extends Bundle {
1515
/**
1616
* @return void
1717
*/
18-
public function boot() {
18+
public function boot(): void {
1919
/*
2020
* Removes all temporary files created while handling file uploads.
2121
* Use a shutdown function to clean up even in case of a fatal error.

DependencyInjection/CraueFormFlowExtension.php

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@
77
use Symfony\Component\DependencyInjection\Compiler\CompilerPassInterface;
88
use Symfony\Component\DependencyInjection\ContainerBuilder;
99
use Symfony\Component\DependencyInjection\Extension\Extension;
10-
use Symfony\Component\DependencyInjection\Loader\XmlFileLoader;
10+
use Symfony\Component\DependencyInjection\Loader\PhpFileLoader;
1111

1212
/**
1313
* Registration of the extension via DI.
@@ -23,19 +23,19 @@ class CraueFormFlowExtension extends Extension implements CompilerPassInterface
2323
/**
2424
* @return void
2525
*/
26-
public function load(array $config, ContainerBuilder $container) {
27-
$loader = new XmlFileLoader($container, new FileLocator(__DIR__.'/../Resources/config'));
28-
$loader->load('form_flow.xml');
29-
$loader->load('twig.xml');
30-
$loader->load('util.xml');
26+
public function load(array $config, ContainerBuilder $container): void {
27+
$loader = new PhpFileLoader($container, new FileLocator(__DIR__.'/../Resources/config'));
28+
$loader->load('form_flow.php');
29+
$loader->load('twig.php');
30+
$loader->load('util.php');
3131

3232
$container->registerForAutoconfiguration(FormFlowInterface::class)->addTag(self::FORM_FLOW_TAG);
3333
}
3434

3535
/**
3636
* @return void
3737
*/
38-
public function process(ContainerBuilder $container) {
38+
public function process(ContainerBuilder $container): void {
3939
$baseFlowDefinitionMethodCalls = $container->getDefinition('craue.form.flow')->getMethodCalls();
4040

4141
foreach (array_keys($container->findTaggedServiceIds(self::FORM_FLOW_TAG)) as $id) {

Form/FormFlow.php

Lines changed: 7 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -538,9 +538,10 @@ protected function getRequestedStepNumber() {
538538
case 'POST':
539539
return intval($request->request->get($this->getFormStepKey(), $defaultStepNumber));
540540
case 'GET':
541-
return $this->allowDynamicStepNavigation || $this->allowRedirectAfterSubmit ?
542-
intval($request->get($this->dynamicStepNavigationStepParameter, $defaultStepNumber)) :
543-
$defaultStepNumber;
541+
$result = $request->attributes->get($this->dynamicStepNavigationStepParameter, $request);
542+
$var = ($request !== $result) ? $result : $request->query->get($this->dynamicStepNavigationStepParameter, (string)$defaultStepNumber);
543+
544+
return ($this->allowDynamicStepNavigation || $this->allowRedirectAfterSubmit) ? (int)$var : $defaultStepNumber;
544545
}
545546

546547
return $defaultStepNumber;
@@ -625,7 +626,8 @@ protected function determineInstanceId() {
625626
$instanceId = null;
626627

627628
if ($this->allowDynamicStepNavigation || $this->allowRedirectAfterSubmit) {
628-
$instanceId = $request->get($this->getDynamicStepNavigationInstanceParameter());
629+
$requestData = in_array($request->getMethod(), ['POST', 'PUT'], true) ? $request->request : $request->query;
630+
$instanceId = $requestData->get($this->getDynamicStepNavigationInstanceParameter());
629631
}
630632

631633
if ($instanceId === null) {
@@ -652,7 +654,7 @@ protected function bindFlow() {
652654
$reset = true;
653655
}
654656

655-
if (in_array($request->getMethod(), ['POST', 'PUT'], true) && $request->get($this->getFormStepKey()) !== null && !$this->dataManager->exists($this)) {
657+
if (in_array($request->getMethod(), ['POST', 'PUT'], true) && $request->request->get($this->getFormStepKey()) !== null && !$this->dataManager->exists($this)) {
656658
// flow is expired, drop posted data and reset
657659
$request->request->replace();
658660
$reset = true;

Resources/config/form_flow.php

Lines changed: 47 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,47 @@
1+
<?php
2+
3+
namespace Symfony\Component\DependencyInjection\Loader\Configurator;
4+
5+
return static function (ContainerConfigurator $container) {
6+
$services = $container->services();
7+
$parameters = $container->parameters();
8+
$parameters->set('craue.form.flow.class', \Craue\FormFlowBundle\Form\FormFlow::class);
9+
$parameters->set('craue.form.flow.storage.class', \Craue\FormFlowBundle\Storage\SessionStorage::class);
10+
$parameters->set('craue.form.flow.event_listener.previous_step_invalid.class', \Craue\FormFlowBundle\EventListener\PreviousStepInvalidEventListener::class);
11+
$parameters->set('craue.form.flow.event_listener.previous_step_invalid.event', \Craue\FormFlowBundle\Form\FormFlowEvents::PREVIOUS_STEP_INVALID);
12+
$parameters->set('craue.form.flow.event_listener.flow_expired.class', \Craue\FormFlowBundle\EventListener\FlowExpiredEventListener::class);
13+
$parameters->set('craue.form.flow.event_listener.flow_expired.event', \Craue\FormFlowBundle\Form\FormFlowEvents::FLOW_EXPIRED);
14+
15+
$services->set('craue.form.flow.storage_default', '%craue.form.flow.storage.class%')
16+
->private()
17+
->args([service('request_stack')]);
18+
19+
$services->alias('craue.form.flow.storage', 'craue.form.flow.storage_default')
20+
->public();
21+
22+
$services->set('craue.form.flow.data_manager_default', \Craue\FormFlowBundle\Storage\DataManager::class)
23+
->private()
24+
->args([service('craue.form.flow.storage')]);
25+
26+
$services->alias('craue.form.flow.data_manager', 'craue.form.flow.data_manager_default');
27+
28+
$services->set('craue.form.flow', '%craue.form.flow.class%')
29+
->call('setDataManager', [service('craue.form.flow.data_manager')])
30+
->call('setFormFactory', [service('form.factory')])
31+
->call('setRequestStack', [service('request_stack')])
32+
->call('setEventDispatcher', [service('event_dispatcher')->ignoreOnInvalid()]);
33+
34+
$services->set('craue.form.flow.form_extension', \Craue\FormFlowBundle\Form\Extension\FormFlowFormExtension::class)
35+
->tag('form.type_extension', ['extended_type' => \Symfony\Component\Form\Extension\Core\Type\FormType::class]);
36+
37+
$services->set('craue.form.flow.hidden_field_extension', \Craue\FormFlowBundle\Form\Extension\FormFlowHiddenFieldExtension::class)
38+
->tag('form.type_extension', ['extended_type' => \Symfony\Component\Form\Extension\Core\Type\HiddenType::class]);
39+
40+
$services->set('craue.form.flow.event_listener.previous_step_invalid', '%craue.form.flow.event_listener.previous_step_invalid.class%')
41+
->tag('kernel.event_listener', ['event' => '%craue.form.flow.event_listener.previous_step_invalid.event%', 'method' => 'onPreviousStepInvalid'])
42+
->call('setTranslator', [service('translator')]);
43+
44+
$services->set('craue.form.flow.event_listener.flow_expired', '%craue.form.flow.event_listener.flow_expired.class%')
45+
->tag('kernel.event_listener', ['event' => '%craue.form.flow.event_listener.flow_expired.event%', 'method' => 'onFlowExpired'])
46+
->call('setTranslator', [service('translator')]);
47+
};

Resources/config/form_flow.xml

Lines changed: 0 additions & 71 deletions
This file was deleted.

Resources/config/twig.php

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
<?php
2+
3+
namespace Symfony\Component\DependencyInjection\Loader\Configurator;
4+
5+
return static function (ContainerConfigurator $container) {
6+
$services = $container->services();
7+
$parameters = $container->parameters();
8+
$parameters->set('craue_twig_extensions.formflow.class', \Craue\FormFlowBundle\Twig\Extension\FormFlowExtension::class);
9+
10+
$services->set('twig.extension.craue_formflow', '%craue_twig_extensions.formflow.class%')
11+
->tag('twig.extension')
12+
->call('setFormFlowUtil', [service('craue_formflow_util')]);
13+
};

Resources/config/twig.xml

Lines changed: 0 additions & 23 deletions
This file was deleted.

Resources/config/util.php

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
<?php
2+
3+
namespace Symfony\Component\DependencyInjection\Loader\Configurator;
4+
5+
return static function (ContainerConfigurator $container) {
6+
$services = $container->services();
7+
$parameters = $container->parameters();
8+
$parameters->set('craue_formflow.util.class', \Craue\FormFlowBundle\Util\FormFlowUtil::class);
9+
10+
$services->set('craue_formflow_util', '%craue_formflow.util.class%')
11+
->public();
12+
13+
$services->alias(\Craue\FormFlowBundle\Util\FormFlowUtil::class, 'craue_formflow_util')
14+
->private();
15+
};

Resources/config/util.xml

Lines changed: 0 additions & 21 deletions
This file was deleted.

0 commit comments

Comments
 (0)