Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

OP-558: Sylius 2 upgrade #71

Open
wants to merge 74 commits into
base: main
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
74 commits
Select commit Hold shift + click to select a range
f27a33f
OP-558: init
jkindly Sep 30, 2024
9a5c8ac
OP-558: Sylius 2 upgrade
jkindly Oct 4, 2024
bbb2228
OP-558: Sylius 2 upgrade
jkindly Oct 9, 2024
08fe848
OP-558: Build
jkindly Oct 9, 2024
19965bc
OP-558: Coding standard
jkindly Oct 9, 2024
31ddd4a
OP-558: actions/upload-artifact
jkindly Oct 9, 2024
7db610f
OP-558: composer
jkindly Oct 9, 2024
0e34a49
OP-558: composer
jkindly Oct 9, 2024
e5778f9
OP-558: composer
jkindly Oct 9, 2024
aee8ba9
OP-558: behat
jkindly Oct 9, 2024
3f334ad
OP-558 - update blacklist plugin to sylus 2 - edit composer.json and …
dariusz-rup Jan 8, 2025
762873f
OP-558 - update blacklist plugin to sylus 2 - remove jquery and fix f…
dariusz-rup Jan 8, 2025
28148e1
OP-558 - update blacklist plugin to sylus 2 - move src/Resources/view…
dariusz-rup Jan 8, 2025
64a6a58
OP-558 - change composer.json to sylius 2, update bundles.php, change…
dariusz-rup Jan 8, 2025
010a1fa
OP-558 - change composer.json to sylius 2, update kernel and yaml fil…
dariusz-rup Jan 9, 2025
bdac93e
OP-558 - update plugin to Sylius 2, update composer.json, yaml files …
dariusz-rup Jan 9, 2025
1b1223f
OP-558 - update plugin to Sylius 2 - fix errors in twigs
dariusz-rup Jan 9, 2025
6b0ee9b
OP-558 - update plugin to Sylius 2 - update components and templates …
dariusz-rup Jan 10, 2025
4d13a78
OP-558 - update plugin to Sylius 2 - change state machine to symfony …
dariusz-rup Jan 10, 2025
18d5547
OP-558 - update plugin to Sylius 2 - fix phpspec tests
dariusz-rup Jan 13, 2025
7805483
OP-558 - update plugin to Sylius 2 - fix workflow, fix services
dariusz-rup Jan 13, 2025
ee6b8ee
OP-558 - update plugin to Sylius 2 - fix ecs
dariusz-rup Jan 13, 2025
c4dcacb
OP-558 - update plugin to Sylius 2 - fix workflow and configuration
dariusz-rup Jan 13, 2025
f5e26f9
OP-558 - update plugin to Sylius 2 - change sylius.address_comparator…
dariusz-rup Jan 13, 2025
5f601c5
OP-558 - update plugin to Sylius 2 - change version min-selenium2-dri…
dariusz-rup Jan 14, 2025
3097fba
OP-558 - update plugin to Sylius 2 - code refactor for some class
dariusz-rup Jan 14, 2025
0b40f18
OP-558 - update plugin to Sylius 2 - ecs fix
dariusz-rup Jan 14, 2025
9f22063
OP-558 - update plugin to Sylius 2 - fix error in order template
dariusz-rup Jan 14, 2025
5d6966b
OP-558 - update plugin to Sylius 2 - fix behat test
dariusz-rup Jan 14, 2025
062ae3c
OP-558 - update plugin to Sylius 2 - fix validator in checkout
dariusz-rup Jan 15, 2025
39980c4
OP-558 - update plugin to Sylius 2 - code refactor
dariusz-rup Jan 15, 2025
2c298ab
OP-558 - update plugin to Sylius 2 - fix checkout address validator
dariusz-rup Jan 15, 2025
6011bd4
OP-558 - update plugin to Sylius 2 - ecs
dariusz-rup Jan 15, 2025
380361c
OP-558 - update plugin to Sylius 2 - fix phpstan + ecs
dariusz-rup Jan 16, 2025
ddb8ea8
OP-558 - update plugin to Sylius 2 - update security to sylius 2
dariusz-rup Jan 16, 2025
185dc61
OP-558 - update plugin to Sylius 2 - update components id
dariusz-rup Jan 16, 2025
87cb0ef
OP-558 - update plugin to Sylius 2 - remove unused packages from comp…
dariusz-rup Jan 16, 2025
1f6c689
OP-558 - update plugin to Sylius 2 - update composer.json, delete som…
dariusz-rup Jan 19, 2025
ce3f5d1
OP-558 - update plugin to Sylius 2 - update build.yml and coding_stan…
dariusz-rup Jan 19, 2025
cd23cab
OP-558 - update plugin to Sylius 2 - remove comments
dariusz-rup Jan 20, 2025
cd1f6c6
OP-558 - update plugin to Sylius 2 - fix security, fix code style com…
dariusz-rup Jan 20, 2025
35d6ac8
OP-558 - update plugin to Sylius 2 - fix formatting
dariusz-rup Jan 20, 2025
0c3d1c3
OP-558 - update plugin to Sylius 2 - reverse comment
dariusz-rup Jan 20, 2025
e5f953c
OP-558 - update plugin to Sylius 2 - back payum
dariusz-rup Jan 20, 2025
3f57934
OP-558 - update plugin to Sylius 2 - fix phpdocs and comparission
dariusz-rup Jan 20, 2025
26a48ad
OP-558 - update plugin to Sylius 2 - update package, webpack
dariusz-rup Jan 20, 2025
1e41a2d
OP-558 - update plugin to Sylius 2 - update README, composer.json and…
dariusz-rup Jan 21, 2025
df006ab
OP-558 - update plugin to Sylius 2 - fix phpstan
dariusz-rup Jan 21, 2025
fdf0f24
OP-558 - update plugin to Sylius 2 - fix ecs
dariusz-rup Jan 21, 2025
7335306
OP-558 - update plugin to Sylius 2 - remove configuration for sylius …
dariusz-rup Jan 21, 2025
3cfdcec
OP-558 - update plugin to Sylius 2 - add readonly property, code refa…
dariusz-rup Jan 22, 2025
71cdfc5
OP-558 - update plugin to Sylius 2 - fix ecs
dariusz-rup Jan 22, 2025
6cd0500
OP-558 - update plugin to Sylius 2 - update readme and delete unused …
dariusz-rup Jan 23, 2025
e65028d
OP-558 - update plugin to Sylius 2 - update composer.json
dariusz-rup Jan 24, 2025
567f683
OP-558 - update plugin to Sylius 2 - add parameters to _sylius.yaml
dariusz-rup Jan 24, 2025
3d77b94
OP-558 - update plugin to Sylius 2 - set twig_hooks, move templates t…
dariusz-rup Jan 24, 2025
22a5a80
OP-558 - update plugin to Sylius 2 - update readme
dariusz-rup Jan 24, 2025
c19e649
OP-558 - update plugin to Sylius 2 - update build.yml, resolve conflicts
dariusz-rup Jan 24, 2025
43ec2f2
OP-558 - update plugin to Sylius 2 - update templates in twig_hooks
dariusz-rup Jan 27, 2025
2e65c93
OP-558 - update plugin to Sylius 2 - code refactor
dariusz-rup Jan 27, 2025
545e16a
OP-558 - update plugin to Sylius 2 - ecs fix
dariusz-rup Jan 28, 2025
f2dd1f3
OP-558 - update plugin to Sylius 2 - delete symfony configuration path
dariusz-rup Jan 28, 2025
40052d8
OP-558 - update plugin to Sylius 2 - refactoring _construct, add read…
dariusz-rup Jan 29, 2025
73274ed
OP-558 - update plugin to Sylius 2 - fix ecs
dariusz-rup Jan 29, 2025
56f26fd
OP-558 - code refactoring - add consts
dariusz-rup Jan 29, 2025
fb586be
OP-558 - formatting adjustment for customer.yaml in Symfony workflow
dariusz-rup Jan 29, 2025
ae23695
OP-558 - introduce FraudSuspicionCommonDTO and refactor converter
dariusz-rup Jan 29, 2025
fcdbc44
OP-558 - fix phpstan and ecs
dariusz-rup Jan 29, 2025
9a38e41
OP-558 - update UPGRADE-2.0.md readme
dariusz-rup Jan 29, 2025
a7d096a
OP-558 - update documentation
dariusz-rup Jan 29, 2025
6bdf8b1
OP-558 - update file UPGRADE-2.0.md
dariusz-rup Jan 29, 2025
2cecaa0
OP-448 - code refactor
dariusz-rup Jan 30, 2025
e8f8663
OP-558 - update artifact
dariusz-rup Jan 30, 2025
ac19d79
OP-558 - update documentation
dariusz-rup Jan 30, 2025
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
21 changes: 7 additions & 14 deletions .github/workflows/build.yml
Original file line number Diff line number Diff line change
Expand Up @@ -21,19 +21,12 @@ jobs:
strategy:
fail-fast: false
matrix:
php: ["8.0", "8.1", "8.2", "8.3"]
symfony: ["^5.4", "^6.4"]
sylius: ["~1.12.0", "~1.13.0", "~1.14.0"]
node: ["^18.0", "^20.0"]
mysql: ["8.0"]
exclude:
- sylius: "~1.13.0"
php: 8.0
- sylius: "~1.14.0"
php: 8.0
- sylius: "~1.12.0"
php: 8.0
symfony: ^6.4
php: [ "8.2", "8.3" ]
symfony: [ "^6.4", "^7.1" ]
sylius: [ "~2.0.0" ]
node: [ "20.x" ]
mysql: ["8.4"]
state_machine_adapter: ["symfony_workflow"]

env:
APP_ENV: test
Expand Down Expand Up @@ -184,7 +177,7 @@ jobs:

-
name: Upload Behat logs
uses: actions/upload-artifact@v3
uses: actions/upload-artifact@v4
if: failure()
with:
name: Behat logs
Expand Down
17 changes: 4 additions & 13 deletions .github/workflows/coding_standard.yml
Original file line number Diff line number Diff line change
Expand Up @@ -18,19 +18,10 @@ jobs:
strategy:
fail-fast: false
matrix:
php: [ "8.0", "8.1", "8.2", "8.3" ]
symfony: [ "^5.4", "^6.4" ]
sylius: ["~1.12.0", "~1.13.0", "~1.14.0"]
node: [ "18.x", "20.x" ]

exclude:
- sylius: "~1.13.0"
php: 8.0
- sylius: "~1.14.0"
php: 8.0
- sylius: "~1.12.0"
php: 8.0
symfony: ^6.4
php: [ "8.2", "8.3" ]
symfony: [ "^6.4", "^7.1" ]
sylius: [ "~2.0.0" ]
node: [ "20.x" ]

steps:
- uses: actions/checkout@v3
Expand Down
1 change: 1 addition & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -11,3 +11,4 @@
/behat.yml
/phpspec.yml
/phpunit.xml
.idea
226 changes: 226 additions & 0 deletions UPGRADE-2.0.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,226 @@
# UPGRADE FROM 1.X TO 2.0
dariusz-rup marked this conversation as resolved.
Show resolved Hide resolved

## General Changes

1. **Support for Sylius 2.0**: The plugin is now fully compatible with Sylius 2.0 and is the recommended version to use.
2. **Dropped Support for Sylius 1.X**: Applications must be upgraded to [Sylius 2.0](https://github.com/Sylius/Sylius/blob/2.0/UPGRADE-2.0.md) to continue using this plugin.
3. **PHP Compatibility**: The minimum supported PHP version has been increased to **8.2**.

## Structural Changes

### Directory Structure Updates

Following Symfony's latest recommendations, the directory structure has been updated:

- `@SyliusBlacklistPlugin/Resources/assets` → `@SyliusBlacklistPlugin/assets`
- `@SyliusBlacklistPlugin/Resources/config` → `@SyliusBlacklistPlugin/config`
- `@SyliusBlacklistPlugin/Resources/translations` → `@SyliusBlacklistPlugin/translations`
- `@SyliusBlacklistPlugin/Resources/views` → `@SyliusBlacklistPlugin/templates`

## Service Modifications

1. Several services have been modified to align with Sylius 2.0's structure. For example:
```xml
<service id="bitbag.sylius_blacklist_plugin.form.type.automatic_blacklisting_configuration"
class="BitBag\SyliusBlacklistPlugin\Form\Type\AutomaticBlacklistingConfigurationType">
<argument>%bitbag.sylius_blacklist_plugin.automatic_blacklisting_rules%</argument>
<argument>%bitbag_sylius_blacklist_plugin.model.automatic_blacklisting_configuration.class%</argument>
<argument>%bitbag.sylius_blacklist_plugin.form.type.validation_groups%</argument>
<tag name="form.type" />
</service>

<service id="sylius.form.type.checkout_address" class="Sylius\Bundle\CoreBundle\Form\Type\Checkout\AddressType">
<argument type="service" id="sylius.comparator.address" />
<argument>%sylius.model.order.class%</argument>
<argument>%bitbag.sylius_blacklist_plugin.form.type.checkout_address.validation_groups%</argument>
<argument type="service" id="sylius.address_comparator" />
<tag name="form.type" />
</service>

<service id="bitbag.sylius_blacklist_plugin.form.type.customer_autocomplete" class="BitBag\SyliusBlacklistPlugin\Form\Type\CustomerAutocompleteType">
<argument>%sylius.model.customer.class%</argument>
<tag name="form.type" />
<tag name="ux.entity_autocomplete_field" />
</service>

<service id="bitbag.sylius_blacklist_plugin.state_resolver.customer" class="BitBag\SyliusBlacklistPlugin\StateResolver\CustomerStateResolver">
<argument type="service" id="sm.factory" />
<argument type="service" id="sylius.manager.customer" />
<argument type="service" id="state_machine.bitbag_sylius_blacklist_plugin_customer" />
<argument type="service" id="doctrine.orm.entity_manager" />
</service>

<service id="bitbag.sylius_blacklist_plugin.twig.extension.labels.automatic_blacklisting_configuration" class="BitBag\SyliusBlacklistPlugin\Twig\AutomaticBlacklistingConfigurationLabelsExtension">
<argument>%bitbag.sylius_blacklist_plugin.automatic_blacklisting_rules%</argument>
<tag name="twig.extension"/>
</service>

(...)
```

2. Additional service modifications (template downloaded from twig_hooks):

```xml
<service id="bitbag.sylius_blacklist_plugin.twig.component.automatic_blacklisting_configuration.form" class="Sylius\Bundle\UiBundle\Twig\Component\ResourceFormComponent">
<argument type="service" id="bitbag_sylius_blacklist_plugin.repository.automatic_blacklisting_configuration" />
<argument type="service" id="form.factory" />
<argument>%bitbag_sylius_blacklist_plugin.model.automatic_blacklisting_configuration.class%</argument>
<argument>BitBag\SyliusBlacklistPlugin\Form\Type\AutomaticBlacklistingConfigurationType</argument>
<tag name="sylius.live_component.admin" key="sylius_admin:automatic_blacklisting_configuration:form"/>
</service>

<service id="bitbag.sylius_blacklist_plugin.twig.component.blacklisting_rule.form" class="Sylius\Bundle\UiBundle\Twig\Component\ResourceFormComponent">
<argument type="service" id="bitbag_sylius_blacklist_plugin.repository.blacklisting_rule" />
<argument type="service" id="form.factory" />
<argument>%bitbag_sylius_blacklist_plugin.model.blacklisting_rule.class%</argument>
<argument>BitBag\SyliusBlacklistPlugin\Form\Type\BlacklistingRuleType</argument>
<tag name="sylius.live_component.admin" key="sylius_admin:blacklisting_rule:form"/>
</service>

<service id="bitbag.sylius_blacklist_plugin.twig.component.fraud_suspicion.form" class="Sylius\Bundle\UiBundle\Twig\Component\ResourceFormComponent">
<argument type="service" id="bitbag_sylius_blacklist_plugin.repository.fraud_suspicion" />
<argument type="service" id="form.factory" />
<argument>%bitbag_sylius_blacklist_plugin.model.fraud_suspicion.class%</argument>
<argument>BitBag\SyliusBlacklistPlugin\Form\Type\FraudSuspicionType</argument>
<tag name="sylius.live_component.admin" key="sylius_admin:fraud_suspicion:form"/>
</service>
```

3. **Container Service Visibility Changes**: The visibility of services has been set to `private` by default, following Symfony best practices. Services used in controllers and event listeners remain public where necessary.


## Routing Updates

1. The route **bitbag_sylius_blacklist_plugin_admin_fraud_suspicion_show** has been replaced with **sylius_admin_fraud_suspicion_show**. Update your routes configuration accordingly:

```yaml
sylius_admin_fraud_suspicion_show:
path: /admin/fraud-suspicion/{id}
controller: BitBag\SyliusBlacklistPlugin\Controller\FraudSuspicionController::showAction
```

## Admin Panel Adjustments

1. **No need to overwrite templates**:
Thanks to the use of Twig Hooks and the refactoring of templates, you no longer need to overwrite templates to use plugin features.

## Twig Hook Integrations

```yaml
sylius_twig_hooks:
hooks:
'sylius_admin.automatic_blacklisting_configuration.create.content':
form:
component: 'sylius_admin:automatic_blacklisting_configuration:form'
props:
resource: '@=_context.resource'
form: '@=_context.form'
template: '@BitBagSyliusBlacklistPlugin/AutomaticBlacklistingConfiguration/Admin/form.html.twig'
configuration:
render_rest: false
```

More Twig Hooks are available for different contexts, including:

- `sylius_admin.automatic_blacklisting_configuration.update.content`
- `sylius_admin.blacklisting_rule.create.content`
- `sylius_admin.blacklisting_rule.update.content`
- `sylius_admin.fraud_suspicion.create.content`
- `sylius_admin.fraud_suspicion.update.content`
- `sylius_admin.fraud_suspicion.show.content`

## Overwritten Sylius Templates

```yaml
sylius_twig_hooks:
hooks:
'sylius_admin.customer.update.content.form.sections#right':
extra_information:
template: '@BitBagSyliusBlacklistPlugin/Customer/Form/Sections/extra_information.html.twig'
priority: 0

sylius_twig_hooks:
hooks:
'sylius_admin.customer.update.content.form.sections#right':
extra_information:
template: '@BitBagSyliusBlacklistPlugin/Customer/Form/Sections/extra_information.html.twig'
priority: 0

sylius_twig_hooks:
hooks:
'sylius_admin.order.show.content.header.title_block':
title:
template: '@SyliusAdmin/order/show/content/header/title_block/title.html.twig'
priority: 100
actions:
template: '@BitBagSyliusBlacklistPlugin/Order/Show/Content/Header/Title_block/actions.html.twig'
priority: 0
```

## Configuration Updates

1. **Winzou State Machine Removed**:
- The Winzou State Machine has been completely removed.
- Instead, the **Symfony Workflow** component has been introduced for managing state transitions.
- Update your configuration to use `workflow` instead of `state_machine`.

Example:
```yaml
framework:
workflows:
!php/const BitBag\SyliusBlacklistPlugin\Transitions\CustomerTransitions::GRAPH:
type: state_machine
marking_store:
property: fraudStatus
type: method
supports:
- BitBag\SyliusBlacklistPlugin\Entity\Customer\FraudStatusInterface
initial_marking:
!php/const BitBag\SyliusBlacklistPlugin\Entity\Customer\FraudStatusInterface::FRAUD_STATUS_NEUTRAL
places:
- !php/const BitBag\SyliusBlacklistPlugin\Entity\Customer\FraudStatusInterface::FRAUD_STATUS_NEUTRAL
- !php/const BitBag\SyliusBlacklistPlugin\Entity\Customer\FraudStatusInterface::FRAUD_STATUS_BLACKLISTED
- !php/const BitBag\SyliusBlacklistPlugin\Entity\Customer\FraudStatusInterface::FRAUD_STATUS_WHITELISTED
transitions:
!php/const BitBag\SyliusBlacklistPlugin\Transitions\CustomerTransitions::TRANSITION_NEUTRALIZING_PROCESS:
from:
- !php/const BitBag\SyliusBlacklistPlugin\Entity\Customer\FraudStatusInterface::FRAUD_STATUS_BLACKLISTED
to:
- !php/const BitBag\SyliusBlacklistPlugin\Entity\Customer\FraudStatusInterface::FRAUD_STATUS_NEUTRAL
!php/const BitBag\SyliusBlacklistPlugin\Transitions\CustomerTransitions::TRANSITION_BLACKLISTING_PROCESS:
from:
- !php/const BitBag\SyliusBlacklistPlugin\Entity\Customer\FraudStatusInterface::FRAUD_STATUS_NEUTRAL
to:
- !php/const BitBag\SyliusBlacklistPlugin\Entity\Customer\FraudStatusInterface::FRAUD_STATUS_BLACKLISTED
!php/const BitBag\SyliusBlacklistPlugin\Transitions\CustomerTransitions::TRANSITION_WHITELISTING_PROCESS:
from:
- !php/const BitBag\SyliusBlacklistPlugin\Entity\Customer\FraudStatusInterface::FRAUD_STATUS_NEUTRAL
to:
- !php/const BitBag\SyliusBlacklistPlugin\Entity\Customer\FraudStatusInterface::FRAUD_STATUS_WHITELISTED
```

## Removed Features

1. **Legacy Support Removed**:
- Removed compatibility layers for Sylius 1.X.
- Dropped support for deprecated interfaces and methods in Sylius 2.0.

## How to Upgrade

1. Ensure your application is upgraded to Sylius 2.0:
```bash
composer require sylius/sylius:~2.0.0 --no-update
```
2. To update the plugin, run the following command:
```bash
composer require bitbag/blacklist-plugin:^2.0 --no-update
```
3. Update your dependencies:
```bash
composer update
```
4. Verify your routes and service configurations as described above.
5. Verify your templates and hooks for any required adjustments.

After completing these steps, your Sylius Blacklist Plugin should be fully functional with Sylius 2.0.

Loading
Loading