Compare commits

..

30 Commits

Author SHA1 Message Date
ac6336d197 Rename concernedUsersCount to concernedPersonsCount + add missing translations 2025-10-06 14:34:33 +02:00
a46b301e44 Add export and aggregator for number of persons concerned 2025-10-06 14:29:25 +02:00
05f0443011 Translation added and templates adjusted 2025-10-06 14:02:39 +02:00
7f8d8f891e Configuration added for show concerned users number field in AsideActivity form 2025-10-06 14:02:16 +02:00
ddb932a4fa Feature: add form field concernedUsersCount in AsideActivityFormType.php 2025-10-06 13:48:25 +02:00
3a02f15bcd Feature: add property concernedUsersCount to the AsideActivity.php entity 2025-10-06 13:41:21 +02:00
bc2fbee5c6 Fix: notification edit template
form field addressesEmail removed
2025-10-06 12:14:00 +02:00
ebd10ca522 Merge branch 'fix/history-of-versions-stored-object' into 'master'
Fix the rendering of storedObject's history

See merge request Chill-Projet/chill-bundles!893
2025-10-03 20:47:06 +00:00
d3a31be412 Fix re-ordering of StoredObjectVersion in the list of versions
As some intermediate versions are remove, this may lead to situation where the indexes are not continous. In that case, the array is not a list, and is rendered as an array with numeric indexes, instead of a list of elements. The HistoryListItem component fails to render.

- Ensured proper handling of removed versions by using `array_values` to reindex items.
- Added test case to validate the result after removing a version.
- Asserted the results are a proper list in the API response.
2025-10-03 22:40:59 +02:00
d159a82f88 Update import paths in HistoryButtonListItem.vue to use aliases
- Changed types import to use `ChillDocStoreAssets/types`.
- Updated `ISOToDatetime` import to use `ChillMainAssets/chill/js/date`.
2025-10-03 22:20:51 +02:00
c2d9c73fd4 Release v4.5.1 2025-10-03 14:11:41 +02:00
0d6d15fcf7 Merge branch 'fix/conversion-exception' into 'master'
Introduce `ConversionWithSameMimeTypeException` for improved error handling in document conversion.

See merge request Chill-Projet/chill-bundles!892
2025-10-03 12:10:24 +00:00
f9ad96c78b Introduce ConversionWithSameMimeTypeException for improved error handling in document conversion.
- Added the `ConversionWithSameMimeTypeException` to handle cases where document conversion is requested for the same MIME type.
- Updated `StoredObjectToPdfConverter` to throw the new exception when encountering such cases.
- Enhanced error logging in `PostSendExternalMessageHandler` to capture these specific conversion errors.
2025-10-03 13:57:06 +02:00
fcc9529a20 Add missing javascript dependency in package.json 2025-10-03 13:56:20 +02:00
955cb817c4 Release v4.5.0 2025-10-03 12:09:17 +02:00
823f9546b9 Merge branch '421-signature-fixes' into 'master'
Signature fixes

Closes #421

See merge request Chill-Projet/chill-bundles!887
2025-10-03 09:49:34 +00:00
be39fa16e7 Signature fixes 2025-10-03 09:49:33 +00:00
c8bb7575e7 Merge branch '426-increase_nb_chars_to_14_chill_password' into 'master'
#426 Increased the number of required characters when setting a new password in Chill

Closes #426

See merge request Chill-Projet/chill-bundles!883
2025-09-19 07:03:51 +00:00
juminet
80a3734171 #426 Increased the number of required characters when setting a new password in Chill 2025-09-19 07:03:51 +00:00
ab98f3a102 Release v4.4.2 2025-09-12 12:47:06 +02:00
7516e68d77 Merge branch 'fix/docgen-after-accp-work-refacto' into 'master'
Fix document generation and workflow generation do not work on accompanying period work documents

See merge request Chill-Projet/chill-bundles!880
2025-09-12 10:42:34 +00:00
7b60b7a8af Fix document generation and workflow generation do not work on accompanying period work documents 2025-09-12 10:42:34 +00:00
d984dec7db Release v4.4.1 2025-09-11 16:26:51 +02:00
46a4dedab8 Merge branch 'missing_commit_duplicate_evaluation' into 'master'
Fix translations and close button modal for duplicate evaluation document

See merge request Chill-Projet/chill-bundles!878
2025-09-11 14:21:05 +00:00
db98519e65 Fix translations and close button modal for duplicate evaluation document 2025-09-11 14:21:05 +00:00
c39637180a Release v4.4.0 2025-09-11 13:04:50 +02:00
15f9409bc8 Merge branch '369-duplicate-evaluation-document' into 'master'
Resolve "Dupliquer une document d'une évaluation vers une autre" + "Déplacer un document vers une autre évaluation"

Closes #369

See merge request Chill-Projet/chill-bundles!813
2025-09-11 11:01:16 +00:00
5b90d23367 Resolve "Dupliquer une document d'une évaluation vers une autre" + "Déplacer un document vers une autre évaluation" 2025-09-11 11:01:16 +00:00
c48625d1cd Merge branch 'bug/1607-the-user-preferences-for-notification-in-profile-are-not-shown-correctly' into 'master'
Resolve "user notification preferences are not displayed correctly"

See merge request Chill-Projet/chill-bundles!877
2025-09-10 16:28:45 +00:00
1195b54a68 Resolve "user notification preferences are not displayed correctly" 2025-09-10 16:28:45 +00:00
1386 changed files with 9120 additions and 7032 deletions

View File

@@ -1,6 +0,0 @@
kind: Fixed
body: Fix display of 'duplicate' and 'merge' buttons in CRUD templates
time: 2025-09-09T17:36:39.960419639+02:00
custom:
Issue: ""
SchemaChange: No schema change

View File

@@ -0,0 +1,6 @@
kind: Fixed
body: Fix the rendering of list of StoredObjectVersions, where there are kept version (before converting to pdf) and intermediate versions deleted
time: 2025-10-03T22:40:44.685474863+02:00
custom:
Issue: ""
SchemaChange: No schema change

View File

@@ -0,0 +1,6 @@
kind: Fixed
body: 'Notification: fix editing of sent notification by removing form.addressesEmails, a field that no longer exists'
time: 2025-10-06T12:13:15.45905994+02:00
custom:
Issue: "434"
SchemaChange: No schema change

8
.changes/v4.4.0.md Normal file
View File

@@ -0,0 +1,8 @@
## v4.4.0 - 2025-09-11
### Feature
* ([#359](https://gitlab.com/Chill-Projet/chill-bundles/-/issues/359)) Allow the merge of two accompanying period works
* ([#369](https://gitlab.com/Chill-Projet/chill-bundles/-/issues/369)) Duplication of a document to another accompanying period work evaluation
* ([#359](https://gitlab.com/Chill-Projet/chill-bundles/-/issues/359)) Fusion of two accompanying period works
### Fixed
* Fix display of 'duplicate' and 'merge' buttons in CRUD templates
* Fix saving notification preferences in user's profile

3
.changes/v4.4.1.md Normal file
View File

@@ -0,0 +1,3 @@
## v4.4.1 - 2025-09-11
### Fixed
* fix translations in duplicate evaluation document modal and realign close modal button

3
.changes/v4.4.2.md Normal file
View File

@@ -0,0 +1,3 @@
## v4.4.2 - 2025-09-12
### Fixed
* Fix document generation and workflow generation do not work on accompanying period work documents

13
.changes/v4.5.0.md Normal file
View File

@@ -0,0 +1,13 @@
## v4.5.0 - 2025-10-03
### Feature
* Only allow delete of attachment on workflows that are not final
* Move up signature buttons on index workflow page for easier access
* Filter out document from attachment list if it is the same as the workflow document
* Block edition on attached document on workflow, if the workflow is finalized or sent external
* Convert workflow's attached document to pdf while sending them external
* After a signature is canceled or rejected, going to a waiting page until the post-process routines apply a workflow transition
### Fixed
* ([#426](https://gitlab.com/Chill-Projet/chill-bundles/-/issues/426)) Increased the number of required characters when setting a new password in Chill from 9 to 14 - GDPR compliance
* Fix permissions on storedObject which are subject by a workflow
### DX
* Introduce a WaitingScreen component to display a waiting screen

4
.changes/v4.5.1.md Normal file
View File

@@ -0,0 +1,4 @@
## v4.5.1 - 2025-10-03
### Fixed
* Add missing javascript dependency
* Add exception handling for conversion of attachment on sending external, when documens are already in pdf

2
.env
View File

@@ -86,7 +86,7 @@ ADD_ADDRESS_MAP_CENTER_Z=15
## Redis Cache & redis database ## Redis Cache & redis database
REDIS_HOST=redis REDIS_HOST=redis
REDIS_PORT=6379 REDIS_PORT=6379
REDIS_URL="redis://${REDIS_HOST}:${REDIS_PORT}" REDIS_URL=redis://${REDIS_HOST}:${REDIS_PORT}
###< chill-project/chill-bundles ### ###< chill-project/chill-bundles ###
###> symfony/ovh-cloud-notifier ### ###> symfony/ovh-cloud-notifier ###

View File

@@ -1,4 +0,0 @@
###> symfony/framework-bundle ###
APP_SECRET=72759e571285ef25677c88f967a73386
###< symfony/framework-bundle ###

View File

@@ -1,5 +1,39 @@
# define your env variables for the test env here # variables for .env environement
# those variables suits for gitlab-ci
# Run tests from root to adapt your own environment
KERNEL_CLASS='App\Kernel' KERNEL_CLASS='App\Kernel'
APP_SECRET='$ecretf0rt3st' APP_SECRET='$ecretf0rt3st'
SYMFONY_DEPRECATIONS_HELPER=999999
DEFAULT_CARRIER_CODE=TEST ADMIN_PASSWORD=password
JWT_SECRET_KEY=%kernel.project_dir%/config/jwt/private.pem
JWT_PUBLIC_KEY=%kernel.project_dir%/config/jwt/public.pem
JWT_PASSPHRASE=2a30f6ba26521a2613821da35f28386e
TWILIO_SID=~
TWILIO_SECRET=~
DEFAULT_CARRIER_CODE=BE
ADD_ADDRESS_DEFAULT_COUNTRY=BE
ADD_ADDRESS_MAP_CENTER_X=50.8443
ADD_ADDRESS_MAP_CENTER_Y=4.3523
ADD_ADDRESS_MAP_CENTER_Z=15
SHORT_MESSAGE_DSN=null://null
MESSENGER_TRANSPORT_DSN=sync://
###> doctrine/doctrine-bundle ###
# Format described at https://www.doctrine-project.org/projects/doctrine-dbal/en/latest/reference/configuration.html#connecting-using-a-url
# IMPORTANT: You MUST configure your server version, either here or in config/packages/doctrine.yaml
#
DATABASE_URL="postgresql://app:!ChangeMe!@127.0.0.1:5454/test?serverVersion=14&charset=utf8"
###< doctrine/doctrine-bundle ###
ASYNC_UPLOAD_TEMP_URL_KEY=
ASYNC_UPLOAD_TEMP_URL_BASE_PATH=
ASYNC_UPLOAD_TEMP_URL_CONTAINER=
MAILER_DSN=null://null
REDIS_HOST=127.0.0.1
REDIS_PORT=6363

2
.gitignore vendored
View File

@@ -33,7 +33,7 @@ config/packages/dev/*
###> phpunit/phpunit ### ###> phpunit/phpunit ###
/phpunit.xml /phpunit.xml
/.phpunit.cache/ .phpunit.result.cache
###< phpunit/phpunit ### ###< phpunit/phpunit ###
/.php-cs-fixer.cache /.php-cs-fixer.cache

View File

@@ -6,6 +6,42 @@ adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html),
and is generated by [Changie](https://github.com/miniscruff/changie). and is generated by [Changie](https://github.com/miniscruff/changie).
## v4.5.1 - 2025-10-03
### Fixed
* Add missing javascript dependency
* Add exception handling for conversion of attachment on sending external, when documens are already in pdf
## v4.5.0 - 2025-10-03
### Feature
* Only allow delete of attachment on workflows that are not final
* Move up signature buttons on index workflow page for easier access
* Filter out document from attachment list if it is the same as the workflow document
* Block edition on attached document on workflow, if the workflow is finalized or sent external
* Convert workflow's attached document to pdf while sending them external
* After a signature is canceled or rejected, going to a waiting page until the post-process routines apply a workflow transition
### Fixed
* ([#426](https://gitlab.com/Chill-Projet/chill-bundles/-/issues/426)) Increased the number of required characters when setting a new password in Chill from 9 to 14 - GDPR compliance
* Fix permissions on storedObject which are subject by a workflow
### DX
* Introduce a WaitingScreen component to display a waiting screen
## v4.4.2 - 2025-09-12
### Fixed
* Fix document generation and workflow generation do not work on accompanying period work documents
## v4.4.1 - 2025-09-11
### Fixed
* fix translations in duplicate evaluation document modal and realign close modal button
## v4.4.0 - 2025-09-11
### Feature
* ([#359](https://gitlab.com/Chill-Projet/chill-bundles/-/issues/359)) Allow the merge of two accompanying period works
* ([#369](https://gitlab.com/Chill-Projet/chill-bundles/-/issues/369)) Duplication of a document to another accompanying period work evaluation
* ([#359](https://gitlab.com/Chill-Projet/chill-bundles/-/issues/359)) Fusion of two accompanying period works
### Fixed
* Fix display of 'duplicate' and 'merge' buttons in CRUD templates
* Fix saving notification preferences in user's profile
## v4.3.0 - 2025-09-08 ## v4.3.0 - 2025-09-08
### Feature ### Feature
* ([#409](https://gitlab.com/Chill-Projet/chill-bundles/-/issues/409)) Add 45 and 60 min calendar ranges * ([#409](https://gitlab.com/Chill-Projet/chill-bundles/-/issues/409)) Add 45 and 60 min calendar ranges

View File

@@ -8,7 +8,7 @@
"social worker" "social worker"
], ],
"require": { "require": {
"php": "^8.3", "php": "^8.2",
"ext-dom": "*", "ext-dom": "*",
"ext-json": "*", "ext-json": "*",
"ext-openssl": "*", "ext-openssl": "*",
@@ -19,10 +19,10 @@
"doctrine/data-fixtures": "^1.8", "doctrine/data-fixtures": "^1.8",
"doctrine/doctrine-bundle": "^2.1", "doctrine/doctrine-bundle": "^2.1",
"doctrine/doctrine-migrations-bundle": "^3.0", "doctrine/doctrine-migrations-bundle": "^3.0",
"doctrine/orm": "^3.5.2", "doctrine/orm": "^2.13.0",
"erusev/parsedown": "^1.7", "erusev/parsedown": "^1.7",
"knplabs/knp-menu-bundle": "^3.0", "knplabs/knp-menu-bundle": "^3.0",
"knplabs/knp-time-bundle": "^2.0", "knplabs/knp-time-bundle": "^1.12",
"knpuniversity/oauth2-client-bundle": "^2.10", "knpuniversity/oauth2-client-bundle": "^2.10",
"league/csv": "^9.7.1", "league/csv": "^9.7.1",
"lexik/jwt-authentication-bundle": "^2.16", "lexik/jwt-authentication-bundle": "^2.16",
@@ -32,53 +32,54 @@
"ovh/ovh": "^3.0", "ovh/ovh": "^3.0",
"phpoffice/phpspreadsheet": "^1.16", "phpoffice/phpspreadsheet": "^1.16",
"ramsey/uuid-doctrine": "^1.7", "ramsey/uuid-doctrine": "^1.7",
"sensio/framework-extra-bundle": "^5.5",
"smalot/pdfparser": "^2.10", "smalot/pdfparser": "^2.10",
"spomky-labs/base64url": "^2.0", "spomky-labs/base64url": "^2.0",
"symfony/amqp-messenger": "^7.3", "symfony/asset": "^5.4",
"symfony/asset": "^7.2", "symfony/browser-kit": "^5.4",
"symfony/browser-kit": "^7.2", "symfony/cache": "^5.4",
"symfony/cache": "^7.2", "symfony/clock": "^6.2",
"symfony/clock": "^7.2", "symfony/config": "^5.4",
"symfony/config": "^7.2", "symfony/console": "^5.4",
"symfony/console": "^7.2", "symfony/css-selector": "^5.4",
"symfony/css-selector": "^7.2", "symfony/dom-crawler": "^5.4",
"symfony/dom-crawler": "^7.2", "symfony/error-handler": "^5.4",
"symfony/error-handler": "^7.2", "symfony/event-dispatcher": "^5.4",
"symfony/event-dispatcher": "^7.2", "symfony/event-dispatcher-contracts": "^2.4",
"symfony/event-dispatcher-contracts": "^3.0", "symfony/expression-language": "^5.4",
"symfony/expression-language": "^7.2", "symfony/filesystem": "^5.4",
"symfony/filesystem": "^7.2", "symfony/finder": "^5.4",
"symfony/finder": "^7.2", "symfony/form": "^5.4",
"symfony/form": "^7.2", "symfony/framework-bundle": "^5.4",
"symfony/framework-bundle": "^7.2", "symfony/http-client": "^5.4",
"symfony/http-client": "^7.2", "symfony/http-foundation": "^5.4",
"symfony/http-foundation": "^7.2", "symfony/intl": "^5.4",
"symfony/intl": "^7.2", "symfony/mailer": "^5.4",
"symfony/mailer": "^7.2", "symfony/messenger": "^5.4",
"symfony/messenger": "^7.2", "symfony/mime": "^5.4",
"symfony/mime": "^7.2",
"symfony/monolog-bundle": "^3.5", "symfony/monolog-bundle": "^3.5",
"symfony/notifier": "^7.2", "symfony/notifier": "^5.4",
"symfony/options-resolver": "^7.2", "symfony/options-resolver": "^5.4",
"symfony/ovh-cloud-notifier": "^7.2", "symfony/ovh-cloud-notifier": "^5.4",
"symfony/polyfill-intl-messageformatter": "^1.32", "symfony/process": "^5.4",
"symfony/process": "^7.2", "symfony/property-access": "^5.4",
"symfony/property-access": "^7.2", "symfony/property-info": "^5.4",
"symfony/property-info": "^7.2", "symfony/routing": "^5.4",
"symfony/routing": "^7.2", "symfony/security-bundle": "^5.4",
"symfony/security-bundle": "^7.3", "symfony/security-core": "^5.4",
"symfony/security-core": "^7.2", "symfony/security-csrf": "^5.4",
"symfony/security-csrf": "^7.2", "symfony/security-guard": "^5.4",
"symfony/security-http": "^7.2", "symfony/security-http": "^5.4",
"symfony/serializer": "^7.2", "symfony/serializer": "^5.4",
"symfony/string": "^7.2", "symfony/string": "^5.4",
"symfony/translation": "^7.2", "symfony/templating": "^5.4",
"symfony/twig-bundle": "^7.2", "symfony/translation": "^5.4",
"symfony/twig-bundle": "^5.4",
"symfony/ux-translator": "^2.22", "symfony/ux-translator": "^2.22",
"symfony/validator": "^7.2", "symfony/validator": "^5.4",
"symfony/webpack-encore-bundle": "^2.0", "symfony/webpack-encore-bundle": "^1.11",
"symfony/workflow": "^7.2", "symfony/workflow": "^5.4",
"symfony/yaml": "^7.2", "symfony/yaml": "^5.4",
"thenetworg/oauth2-azure": "^2.0", "thenetworg/oauth2-azure": "^2.0",
"twig/extra-bundle": "^3.0", "twig/extra-bundle": "^3.0",
"twig/intl-extra": "^3.0", "twig/intl-extra": "^3.0",
@@ -89,7 +90,7 @@
"require-dev": { "require-dev": {
"doctrine/doctrine-fixtures-bundle": "^3.3", "doctrine/doctrine-fixtures-bundle": "^3.3",
"fakerphp/faker": "^1.13", "fakerphp/faker": "^1.13",
"friendsofphp/php-cs-fixer": "3.88.2", "friendsofphp/php-cs-fixer": "3.65.0",
"jangregor/phpstan-prophecy": "^1.0", "jangregor/phpstan-prophecy": "^1.0",
"nelmio/alice": "^3.8", "nelmio/alice": "^3.8",
"nikic/php-parser": "^4.15", "nikic/php-parser": "^4.15",
@@ -100,15 +101,16 @@
"phpstan/phpstan-strict-rules": "^1.0", "phpstan/phpstan-strict-rules": "^1.0",
"phpunit/phpunit": "^10.5.24", "phpunit/phpunit": "^10.5.24",
"rector/rector": "^1.1.0", "rector/rector": "^1.1.0",
"symfony/debug-bundle": "^7.2", "symfony/amqp-messenger": "^5.4.45",
"symfony/dotenv": "^7.2", "symfony/debug-bundle": "^5.4",
"symfony/dotenv": "^5.4",
"symfony/flex": "^2.4", "symfony/flex": "^2.4",
"symfony/maker-bundle": "^1.20", "symfony/maker-bundle": "^1.20",
"symfony/phpunit-bridge": "^7.1", "symfony/phpunit-bridge": "^7.1",
"symfony/runtime": "^7.2", "symfony/runtime": "^5.4",
"symfony/stopwatch": "^7.2", "symfony/stopwatch": "^5.4",
"symfony/var-dumper": "^7.2", "symfony/var-dumper": "^5.4",
"symfony/web-profiler-bundle": "^7.2" "symfony/web-profiler-bundle": "^5.4"
}, },
"conflict": { "conflict": {
"symfony/symfony": "*" "symfony/symfony": "*"

View File

@@ -14,6 +14,7 @@ return [
Lexik\Bundle\JWTAuthenticationBundle\LexikJWTAuthenticationBundle::class => ['all' => true], Lexik\Bundle\JWTAuthenticationBundle\LexikJWTAuthenticationBundle::class => ['all' => true],
Nelmio\Alice\Bridge\Symfony\NelmioAliceBundle::class => ['dev' => true, 'test' => true], Nelmio\Alice\Bridge\Symfony\NelmioAliceBundle::class => ['dev' => true, 'test' => true],
Misd\PhoneNumberBundle\MisdPhoneNumberBundle::class => ['all' => true], Misd\PhoneNumberBundle\MisdPhoneNumberBundle::class => ['all' => true],
Sensio\Bundle\FrameworkExtraBundle\SensioFrameworkExtraBundle::class => ['all' => true],
Symfony\Bundle\DebugBundle\DebugBundle::class => ['dev' => true], Symfony\Bundle\DebugBundle\DebugBundle::class => ['dev' => true],
Symfony\Bundle\MakerBundle\MakerBundle::class => ['dev' => true], Symfony\Bundle\MakerBundle\MakerBundle::class => ['dev' => true],
Symfony\Bundle\MonologBundle\MonologBundle::class => ['all' => true], Symfony\Bundle\MonologBundle\MonologBundle::class => ['all' => true],

View File

@@ -120,3 +120,6 @@ chill_activity:
- -
label: '5 hours' label: '5 hours'
seconds: 18000 seconds: 18000
chill_aside_activity:
show_concerned_persons_count: true

View File

@@ -1,11 +0,0 @@
# Enable stateless CSRF protection for forms and logins/logouts
framework:
form:
csrf_protection:
token_id: submit
csrf_protection:
stateless_token_ids:
- submit
- authenticate
- logout

View File

@@ -7,7 +7,6 @@ doctrine:
#server_version: '16' #server_version: '16'
use_savepoints: true use_savepoints: true
orm: orm:
enable_lazy_ghost_objects: true
auto_generate_proxy_classes: true auto_generate_proxy_classes: true
naming_strategy: doctrine.orm.naming_strategy.default naming_strategy: doctrine.orm.naming_strategy.default
auto_mapping: true auto_mapping: true

View File

@@ -4,16 +4,6 @@ framework:
#csrf_protection: true #csrf_protection: true
http_method_override: false http_method_override: false
# Enable EntityValueResolver for automatic entity injection in controllers
# This replaces the functionality previously provided by SensioFrameworkExtraBundle
http_client:
enabled: true
request:
formats:
json: ['application/json']
# Enables session support. Note that the session will ONLY be started if you read or write from it. # Enables session support. Note that the session will ONLY be started if you read or write from it.
# Remove or comment this section to explicitly disable session support. # Remove or comment this section to explicitly disable session support.
session: session:

View File

@@ -1,5 +1,7 @@
framework: framework:
messenger: messenger:
# reset services after consuming messages
reset_on_message: true
# Uncomment this (and the failed transport below) to send failed messages to this transport for later handling. # Uncomment this (and the failed transport below) to send failed messages to this transport for later handling.
failure_transport: failed failure_transport: failed

View File

@@ -1,3 +0,0 @@
framework:
property_info:
enabled: true

View File

@@ -1,4 +1,5 @@
security: security:
enable_authenticator_manager: true
# https://symfony.com/doc/current/security.html#registering-the-user-hashing-passwords # https://symfony.com/doc/current/security.html#registering-the-user-hashing-passwords
password_hashers: password_hashers:
Symfony\Component\Security\Core\User\PasswordAuthenticatedUserInterface: 'auto' Symfony\Component\Security\Core\User\PasswordAuthenticatedUserInterface: 'auto'
@@ -27,13 +28,16 @@ security:
pattern: ^/wopi pattern: ^/wopi
provider: chill_chain_provider provider: chill_chain_provider
stateless: true stateless: true
jwt: ~ guard:
authenticators:
- lexik_jwt_authentication.jwt_token_authenticator
dav: dav:
pattern: ^/dav pattern: ^/dav
provider: chill_chain_provider provider: chill_chain_provider
stateless: true stateless: true
custom_authenticator: guard:
- Chill\DocStoreBundle\Security\Authenticator\JWTOnDavUrlAuthenticator authenticators:
- Chill\DocStoreBundle\Security\Guard\JWTOnDavUrlAuthenticator
# this firewall is the main firewall for chill. It should be the last one in the stack, # this firewall is the main firewall for chill. It should be the last one in the stack,
# unless you have specific needs # unless you have specific needs
chill_main: chill_main:
@@ -59,7 +63,7 @@ security:
# Note: Only the *first* access control that matches will be used # Note: Only the *first* access control that matches will be used
access_control: access_control:
# those lines are added by chill-bundles recipes, and are requires to make chill-bundles working # those lines are added by chill-bundles recipes, and are requires to make chill-bundles working
- { path: ^/(login|logout), roles: PUBLIC_ACCESS } - { path: ^/(login|logout), roles: IS_AUTHENTICATED_ANONYMOUSLY }
- { path: ^/public, roles: IS_AUTHENTICATED_ANONYMOUSLY } - { path: ^/public, roles: IS_AUTHENTICATED_ANONYMOUSLY }
- { path: ^/wopi, roles: IS_AUTHENTICATED_FULLY } - { path: ^/wopi, roles: IS_AUTHENTICATED_FULLY }
# access for homepage, the homepage redirect admin to admin section # access for homepage, the homepage redirect admin to admin section

View File

@@ -0,0 +1,3 @@
sensio_framework_extra:
router:
annotations: false

View File

@@ -1,4 +0,0 @@
framework:
serializer:
enabled: true
enable_attributes: true

View File

@@ -7,8 +7,7 @@ framework:
- Chill\PersonBundle\Entity\AccompanyingPeriod\AccompanyingPeriodWorkEvaluationDocument - Chill\PersonBundle\Entity\AccompanyingPeriod\AccompanyingPeriodWorkEvaluationDocument
- Chill\PersonBundle\Entity\AccompanyingPeriod\AccompanyingPeriodWork - Chill\PersonBundle\Entity\AccompanyingPeriod\AccompanyingPeriodWork
- Chill\DocStoreBundle\Entity\AccompanyingCourseDocument - Chill\DocStoreBundle\Entity\AccompanyingCourseDocument
label: Suivi label:
translated_labels:
fr: 'Suivi' fr: 'Suivi'
support_strategy: Chill\MainBundle\Workflow\RelatedEntityWorkflowSupportsStrategy support_strategy: Chill\MainBundle\Workflow\RelatedEntityWorkflowSupportsStrategy
marking_store: marking_store:
@@ -17,13 +16,11 @@ framework:
places: places:
initial: initial:
metadata: metadata:
label: Étape initiale label:
translated_labels:
fr: Étape initiale fr: Étape initiale
attenteModification: attenteModification:
metadata: metadata:
label: En attente de modification du document label:
translated_labels:
fr: En attente de modification du document fr: En attente de modification du document
validationFilterInputLabels: validationFilterInputLabels:
forward: {fr: Modification effectuée} forward: {fr: Modification effectuée}
@@ -31,8 +28,7 @@ framework:
neutral: {fr: Autre} neutral: {fr: Autre}
attenteMiseEnForme: attenteMiseEnForme:
metadata: metadata:
label: En attente de mise en forme label:
translated_labels:
fr: En attente de mise en forme fr: En attente de mise en forme
validationFilterInputLabels: validationFilterInputLabels:
forward: {fr: Mise en forme terminée} forward: {fr: Mise en forme terminée}
@@ -40,8 +36,7 @@ framework:
neutral: {fr: Autre} neutral: {fr: Autre}
attenteVisa: attenteVisa:
metadata: metadata:
label: En attente de visa label:
translated_labels:
fr: En attente de visa fr: En attente de visa
validationFilterInputLabels: validationFilterInputLabels:
forward: {fr: Visa accordé} forward: {fr: Visa accordé}
@@ -52,8 +47,7 @@ framework:
isSignature: ['user', 'person'] isSignature: ['user', 'person']
onSignatureCompleted: onSignatureCompleted:
transitionName: signatureApplied transitionName: signatureApplied
label: En attente de signature label:
translated_labels:
fr: En attente de signature fr: En attente de signature
validationFilterInputLabels: validationFilterInputLabels:
forward: {fr: Signature accordée} forward: {fr: Signature accordée}
@@ -61,8 +55,7 @@ framework:
neutral: {fr: Autre} neutral: {fr: Autre}
postSignature: postSignature:
metadata: metadata:
label: Signatures traitées label:
translated_labels:
fr: Signatures traitées fr: Signatures traitées
validationFilterInputLabels: validationFilterInputLabels:
forward: {fr: Poursuite du traitement} forward: {fr: Poursuite du traitement}
@@ -70,8 +63,7 @@ framework:
neutral: {fr: Autre} neutral: {fr: Autre}
attenteTraitement: attenteTraitement:
metadata: metadata:
label: En attente de traitement label:
translated_labels:
fr: En attente de traitement fr: En attente de traitement
validationFilterInputLabels: validationFilterInputLabels:
forward: {fr: Traitement terminé favorablement} forward: {fr: Traitement terminé favorablement}
@@ -79,8 +71,7 @@ framework:
neutral: {fr: Autre} neutral: {fr: Autre}
attenteEnvoi: attenteEnvoi:
metadata: metadata:
label: En attente d'envoi label:
translated_labels:
fr: En attente d'envoi fr: En attente d'envoi
validationFilterInputLabels: validationFilterInputLabels:
forward: {fr: Document envoyé} forward: {fr: Document envoyé}
@@ -88,8 +79,7 @@ framework:
neutral: {fr: Autre} neutral: {fr: Autre}
attenteValidationMiseEnForme: attenteValidationMiseEnForme:
metadata: metadata:
label: En attente de validation de la mise en forme label:
translated_labels:
fr: En attente de validation de la mise en forme fr: En attente de validation de la mise en forme
validationFilterInputLabels: validationFilterInputLabels:
forward: {fr: Validation de la mise en forme} forward: {fr: Validation de la mise en forme}
@@ -99,8 +89,7 @@ framework:
metadata: metadata:
isSentExternal: true isSentExternal: true
onExternalView: clotureApresLectureEnvoiExterne onExternalView: clotureApresLectureEnvoiExterne
label: En attente d'ouverture par un destinataire externe label:
translated_labels:
fr: En attente d'ouverture par un destinataire externe fr: En attente d'ouverture par un destinataire externe
validationFilterInputLabels: validationFilterInputLabels:
forward: {fr: Document reçu par un destinataire externe} forward: {fr: Document reçu par un destinataire externe}
@@ -110,15 +99,13 @@ framework:
metadata: metadata:
isFinal: true isFinal: true
isFinalPositive: false isFinalPositive: false
label: Annulé label:
translated_labels:
fr: Annulé fr: Annulé
final: final:
metadata: metadata:
isFinal: true isFinal: true
isFinalPositive: true isFinalPositive: true
label: Finalisé label:
translated_labels:
fr: Finalisé fr: Finalisé
transitions: transitions:
# transition qui avancent # transition qui avancent
@@ -127,8 +114,7 @@ framework:
- initial - initial
to: attenteModification to: attenteModification
metadata: metadata:
label: Demande de modification du document label:
translated_labels:
fr: Demande de modification du document fr: Demande de modification du document
isForward: true isForward: true
demandeMiseEnForme: demandeMiseEnForme:
@@ -137,8 +123,7 @@ framework:
- attenteModification - attenteModification
to: attenteMiseEnForme to: attenteMiseEnForme
metadata: metadata:
label: Demande de mise en forme label:
translated_labels:
fr: Demande de mise en forme fr: Demande de mise en forme
isForward: true isForward: true
demandeValidationMiseEnForme: demandeValidationMiseEnForme:
@@ -146,8 +131,7 @@ framework:
- attenteMiseEnForme - attenteMiseEnForme
to: attenteValidationMiseEnForme to: attenteValidationMiseEnForme
metadata: metadata:
label: Demande de validation de la mise en forme label:
translated_labels:
fr: Demande de validation de la mise en forme fr: Demande de validation de la mise en forme
isForward: true isForward: true
demandeVisa: demandeVisa:
@@ -160,8 +144,7 @@ framework:
- attenteTraitement - attenteTraitement
to: attenteVisa to: attenteVisa
metadata: metadata:
label: Demande de visa label:
translated_labels:
fr: Demande de visa fr: Demande de visa
isForward: true isForward: true
demandeSignature: demandeSignature:
@@ -174,18 +157,14 @@ framework:
- attenteTraitement - attenteTraitement
to: attenteSignature to: attenteSignature
metadata: metadata:
label: Demande de signature label: {fr: Demande de signature}
translated_labels:
fr: Demande de signature
isForward: true isForward: true
signatureApplied: signatureApplied:
from: from:
- attenteSignature - attenteSignature
to: postSignature to: postSignature
metadata: metadata:
label: Signatures appliquées label: {fr: Signatures appliquées}
translated_labels:
fr: Signatures appliquées
isForward: true isForward: true
transitionGuard: 'system' # can be 'system+only-dest' or 'only-dest' (only-dest is default) transitionGuard: 'system' # can be 'system+only-dest' or 'only-dest' (only-dest is default)
demandeTraitement: demandeTraitement:
@@ -198,9 +177,7 @@ framework:
- postSignature - postSignature
to: attenteTraitement to: attenteTraitement
metadata: metadata:
label: Demande de traitement label: {fr: Demande de traitement}
translated_labels:
fr: Demande de traitement
isForward: true isForward: true
demandeEnvoi: demandeEnvoi:
from: from:
@@ -213,9 +190,7 @@ framework:
- attenteTraitement - attenteTraitement
to: attenteEnvoi to: attenteEnvoi
metadata: metadata:
label: Demande d'envoi label: {fr: Demande d'envoi}
translated_labels:
fr: Demande d'envoi
isForward: true isForward: true
demandeEnvoiExterne: demandeEnvoiExterne:
from: from:
@@ -228,9 +203,7 @@ framework:
- attenteTraitement - attenteTraitement
to: attenteReceptionExternal to: attenteReceptionExternal
metadata: metadata:
label: Envoi sécurisé par courrier électronique label: {fr: Envoi sécurisé par courrier électronique}
translated_labels:
fr: Envoi sécurisé par courrier électronique
isForward: true isForward: true
clotureApresLectureEnvoiExterne: clotureApresLectureEnvoiExterne:
from: from:
@@ -240,9 +213,7 @@ framework:
metadata: metadata:
transitionGuard: system transitionGuard: system
isForward: true isForward: true
label: Consultation de l'envoi sécurisé label: {fr: Consultation de l'envoi sécurisé}
translated_labels:
fr: Consultation de l'envoi sécurisé
annulation: annulation:
from: from:
- initial - initial
@@ -256,9 +227,7 @@ framework:
- attenteEnvoi - attenteEnvoi
to: annule to: annule
metadata: metadata:
label: Annulation label: {fr: Annulation}
translated_labels:
fr: Annulation
isForward: false isForward: false
transitionGuard: 'system+only-dest' # can be 'system+only-dest' or 'only-dest' (only-dest is default) transitionGuard: 'system+only-dest' # can be 'system+only-dest' or 'only-dest' (only-dest is default)
# transitions qui répètent l'étape # transitions qui répètent l'étape
@@ -268,35 +237,27 @@ framework:
- attenteValidationMiseEnForme - attenteValidationMiseEnForme
to: attenteMiseEnForme to: attenteMiseEnForme
metadata: metadata:
label: Demande de mise en forme supplémentaire label: {fr: Demande de mise en forme supplémentaire}
translated_labels:
fr: Demande de mise en forme supplémentaire
demandeVisaSupplementaire: demandeVisaSupplementaire:
from: from:
- attenteVisa - attenteVisa
to: attenteVisa to: attenteVisa
metadata: metadata:
label: Demande de visa supplémentaire label: {fr: Demande de visa supplémentaire}
translated_labels:
fr: Demande de visa supplémentaire
isForward: true isForward: true
demandeSignatureSupplementaire: demandeSignatureSupplementaire:
from: from:
- postSignature - postSignature
to: attenteSignature to: attenteSignature
metadata: metadata:
label: Demande de signature supplémentaire label: {fr: Demande de signature supplémentaire}
translated_labels:
fr: Demande de signature supplémentaire
isForward: true isForward: true
demandeTraitementSupplementaire: demandeTraitementSupplementaire:
from: from:
- attenteTraitement - attenteTraitement
to: attenteTraitement to: attenteTraitement
metadata: metadata:
label: Demande de traitement supplémentaire label: {fr: Demande de traitement supplémentaire}
translated_labels:
fr: Demande de traitement supplémentaire
# transitions qui renvoient vers une étape précédente # transitions qui renvoient vers une étape précédente
refusEtModificationDocument: refusEtModificationDocument:
from: from:
@@ -306,8 +267,7 @@ framework:
- attenteEnvoi - attenteEnvoi
to: attenteModification to: attenteModification
metadata: metadata:
label: Refus et demande de modification du document label:
translated_labels:
fr: Refus et demande de modification du document fr: Refus et demande de modification du document
isForward: false isForward: false
refusEtDemandeMiseEnForme: refusEtDemandeMiseEnForme:
@@ -317,9 +277,7 @@ framework:
- attenteEnvoi - attenteEnvoi
to: attenteMiseEnForme to: attenteMiseEnForme
metadata: metadata:
label: Refus et demande de mise en forme label: {fr: Refus et demande de mise en forme}
translated_labels:
fr: Refus et demande de mise en forme
isForward: false isForward: false
refusEtDemandeVisa: refusEtDemandeVisa:
from: from:
@@ -327,27 +285,21 @@ framework:
- attenteEnvoi - attenteEnvoi
to: attenteVisa to: attenteVisa
metadata: metadata:
label: Refus et demande de visa label: {fr: Refus et demande de visa}
translated_labels:
fr: Refus et demande de visa
isForward: false isForward: false
refusEtDemandeSignature: refusEtDemandeSignature:
from: from:
- attenteEnvoi - attenteEnvoi
to: attenteSignature to: attenteSignature
metadata: metadata:
label: Refus et demande de signature label: {fr: Refus et demande de signature}
translated_labels:
fr: Refus et demande de signature
isForward: false isForward: false
refusEtDemandeTraitement: refusEtDemandeTraitement:
from: from:
- attenteEnvoi - attenteEnvoi
to: attenteTraitement to: attenteTraitement
metadata: metadata:
label: Refus et demande de traitement label: {fr: Refus et demande de traitement}
translated_labels:
fr: Refus et demande de traitement
isForward: false isForward: false
# transition vers final # transition vers final
initialToFinal: initialToFinal:
@@ -355,9 +307,7 @@ framework:
- initial - initial
to: final to: final
metadata: metadata:
label: Clotûre immédiate et cloture positive label: {fr: Clotûre immédiate et cloture positive}
translated_labels:
fr: Clotûre immédiate et cloture positive
isForward: true isForward: true
attenteMiseEnFormeToFinal: attenteMiseEnFormeToFinal:
from: from:
@@ -365,43 +315,33 @@ framework:
- attenteValidationMiseEnForme - attenteValidationMiseEnForme
to: final to: final
metadata: metadata:
label: Mise en forme terminée et cloture positive label: {fr: Mise en forme terminée et cloture positive}
translated_labels:
fr: Mise en forme terminée et cloture positive
isForward: true isForward: true
attenteVisaToFinal: attenteVisaToFinal:
from: from:
- attenteVisa - attenteVisa
to: final to: final
metadata: metadata:
label: Accorde le visa et cloture positive label: {fr: Accorde le visa et cloture positive}
translated_labels:
fr: Accorde le visa et cloture positive
isForward: true isForward: true
postSignatureToFinal: postSignatureToFinal:
from: from:
- postSignature - postSignature
to: final to: final
metadata: metadata:
label: Cloture positive label: {fr: Cloture positive}
translated_labels:
fr: Cloture positive
isForward: true isForward: true
attenteTraitementToFinal: attenteTraitementToFinal:
from: from:
- attenteTraitement - attenteTraitement
to: final to: final
metadata: metadata:
label: Traitement terminé et cloture positive label: {fr: Traitement terminé et cloture positive}
translated_labels:
fr: Traitement terminé et cloture positive
isForward: true isForward: true
attenteEnvoiToFinal: attenteEnvoiToFinal:
from: from:
- attenteEnvoi - attenteEnvoi
to: final to: final
metadata: metadata:
label: Envoyé et cloture positive label: {fr: Envoyé et cloture positive}
translated_labels:
fr: Envoyé et cloture positive
isForward: true isForward: true

View File

@@ -0,0 +1,3 @@
kernel:
resource: ../../src/app/Kernel.php
type: annotation

View File

@@ -1,3 +0,0 @@
_security_logout:
resource: security.route_loader.logout
type: service

View File

@@ -6,20 +6,8 @@
parameters: parameters:
services: services:
#alias to inject container into AbstractController::setContainer
Psr\Container\ContainerInterface: '@service_container'
# default configuration for services in *this* file # default configuration for services in *this* file
_defaults: _defaults:
autowire: true # Automatically injects dependencies in your services. autowire: true # Automatically injects dependencies in your services.
autoconfigure: true # Automatically registers your services as commands, event subscribers, etc. autoconfigure: true # Automatically registers your services as commands, event subscribers, etc.
# Custom entity value resolver to replace SensioFrameworkExtraBundle functionality
Chill\MainBundle\ArgumentResolver\EntityValueResolver:
tags:
- { name: controller.argument_value_resolver, priority: 50 }
Chill\MainBundle\Serializer\CircularReferenceHandler:
public: false
tags:
- { name: 'serializer.circular_reference_handler' }

View File

@@ -14,6 +14,7 @@ namespace Chill\PersonBundle\Export\Filter;
use Chill\MainBundle\Export\ExportElementValidatedInterface; use Chill\MainBundle\Export\ExportElementValidatedInterface;
use Chill\MainBundle\Export\ExportGenerationContext; use Chill\MainBundle\Export\ExportGenerationContext;
use Chill\MainBundle\Export\FilterInterface; use Chill\MainBundle\Export\FilterInterface;
use DateTime;
use Doctrine\ORM\Query\Expr; use Doctrine\ORM\Query\Expr;
use Symfony\Component\Form\Extension\Core\Type\DateType; use Symfony\Component\Form\Extension\Core\Type\DateType;
use Symfony\Component\Validator\Context\ExecutionContextInterface; use Symfony\Component\Validator\Context\ExecutionContextInterface;
@@ -21,7 +22,6 @@ use Symfony\Component\Validator\Context\ExecutionContextInterface;
class BirthdateFilter implements ExportElementValidatedInterface, FilterInterface class BirthdateFilter implements ExportElementValidatedInterface, FilterInterface
{ {
use \Chill\MainBundle\Export\ExportDataNormalizerTrait; use \Chill\MainBundle\Export\ExportDataNormalizerTrait;
// add specific role for this filter // add specific role for this filter
public function addRole(): ?string public function addRole(): ?string
{ {
@@ -30,7 +30,7 @@ class BirthdateFilter implements ExportElementValidatedInterface, FilterInterfac
} }
// here, we alter the query created by Export // here, we alter the query created by Export
public function alterQuery(\Doctrine\ORM\QueryBuilder $qb, $data, ExportGenerationContext $exportGenerationContext): void public function alterQuery(\Doctrine\ORM\QueryBuilder $qb, $data, \Chill\MainBundle\Export\ExportGenerationContext $exportGenerationContext): void
{ {
$where = $qb->getDQLPart('where'); $where = $qb->getDQLPart('where');
// we create the clause here // we create the clause here
@@ -76,25 +76,21 @@ class BirthdateFilter implements ExportElementValidatedInterface, FilterInterfac
'format' => 'dd-MM-yyyy', 'format' => 'dd-MM-yyyy',
]); ]);
} }
public function getNormalizationVersion(): int public function getNormalizationVersion(): int
{ {
return 1; return 1;
} }
public function normalizeFormData(array $formData): array public function normalizeFormData(array $formData): array
{ {
return ['date_from' => $this->normalizeDate($formData['date_from']), 'date_to' => $this->normalizeDate($formData['date_to'])]; return ['date_from' => $this->normalizeDate($formData['date_from']), 'date_to' => $this->normalizeDate($formData['date_to'])];
} }
public function denormalizeFormData(array $formData, int $fromVersion): array public function denormalizeFormData(array $formData, int $fromVersion): array
{ {
return ['date_from' => $this->denormalizeDate($formData['date_from']), 'date_to' => $this->denormalizeDate($formData['date_to'])]; return ['date_from' => $this->denormalizeDate($formData['date_from']), 'date_to' => $this->denormalizeDate($formData['date_to'])];
} }
public function getFormDefaultData(): array public function getFormDefaultData(): array
{ {
return ['date_from' => new \DateTime(), 'date_to' => new \DateTime()]; return ['date_from' => new DateTime(), 'date_to' => new DateTime()];
} }
// here, we create a simple string which will describe the action of // here, we create a simple string which will describe the action of
@@ -102,7 +98,7 @@ class BirthdateFilter implements ExportElementValidatedInterface, FilterInterfac
public function describeAction($data, ExportGenerationContext $context): string|\Symfony\Contracts\Translation\TranslatableInterface|array public function describeAction($data, ExportGenerationContext $context): string|\Symfony\Contracts\Translation\TranslatableInterface|array
{ {
return ['Filtered by person\'s birtdate: ' return ['Filtered by person\'s birtdate: '
.'between %date_from% and %date_to%', [ . 'between %date_from% and %date_to%', [
'%date_from%' => $data['date_from']->format('d-m-Y'), '%date_from%' => $data['date_from']->format('d-m-Y'),
'%date_to%' => $data['date_to']->format('d-m-Y'), '%date_to%' => $data['date_to']->format('d-m-Y'),
], ]; ], ];
@@ -124,13 +120,13 @@ class BirthdateFilter implements ExportElementValidatedInterface, FilterInterfac
if (null === $date_from) { if (null === $date_from) {
$context->buildViolation('The "date from" should not be empty') $context->buildViolation('The "date from" should not be empty')
// ->atPath('date_from') //->atPath('date_from')
->addViolation(); ->addViolation();
} }
if (null === $date_to) { if (null === $date_to) {
$context->buildViolation('The "date to" should not be empty') $context->buildViolation('The "date to" should not be empty')
// ->atPath('date_to') //->atPath('date_to')
->addViolation(); ->addViolation();
} }
@@ -139,7 +135,7 @@ class BirthdateFilter implements ExportElementValidatedInterface, FilterInterfac
&& $date_from >= $date_to && $date_from >= $date_to
) { ) {
$context->buildViolation('The date "date to" should be after the ' $context->buildViolation('The date "date to" should be after the '
.'date given in "date from" field') . 'date given in "date from" field')
->addViolation(); ->addViolation();
} }
} }

View File

@@ -32,7 +32,7 @@ class CountPerson implements ExportInterface
$this->entityManager = $em; $this->entityManager = $em;
} }
public function buildForm(FormBuilderInterface $builder): void public function buildForm(FormBuilderInterface $builder)
{ {
// this export does not add any form // this export does not add any form
} }

View File

@@ -18,7 +18,7 @@ class example extends \Symfony\Bundle\FrameworkBundle\Controller\AbstractControl
public function __construct(private readonly \Doctrine\Persistence\ManagerRegistry $managerRegistry) public function __construct(private readonly \Doctrine\Persistence\ManagerRegistry $managerRegistry)
{ {
} }
public function yourAction(): \Symfony\Component\HttpFoundation\Response public function yourAction()
{ {
$em = $this->managerRegistry->getManager(); $em = $this->managerRegistry->getManager();
// first, get the number of total item are available // first, get the number of total item are available

View File

@@ -28,7 +28,7 @@ class ConsultationController extends \Symfony\Bundle\FrameworkBundle\Controller\
* *
* @return \Symfony\Component\HttpFoundation\Response * @return \Symfony\Component\HttpFoundation\Response
*/ */
public function listAction($id): \Symfony\Component\HttpFoundation\Response public function listAction($id)
{ {
/** @var \Chill\PersonBundle\Entity\Person $person */ /** @var \Chill\PersonBundle\Entity\Person $person */
$person = $this->get('chill.person.repository.person') $person = $this->get('chill.person.repository.person')

View File

@@ -31,7 +31,7 @@ class ChillMainConfiguration implements ConfigurationInterface
$this->setWidgetFactories($widgetFactories); $this->setWidgetFactories($widgetFactories);
} }
public function getConfigTreeBuilder(): \Symfony\Component\Config\Definition\Builder\TreeBuilder public function getConfigTreeBuilder()
{ {
$treeBuilder = new TreeBuilder('chill_main'); $treeBuilder = new TreeBuilder('chill_main');
$rootNode = $treeBuilder->getRootNode(); $rootNode = $treeBuilder->getRootNode();

View File

@@ -27,12 +27,12 @@ class ChillMainExtension extends Extension implements Widget\HasWidgetFactoriesE
*/ */
protected $widgetFactories = []; protected $widgetFactories = [];
public function addWidgetFactory(WidgetFactoryInterface $factory): void public function addWidgetFactory(WidgetFactoryInterface $factory)
{ {
$this->widgetFactories[] = $factory; $this->widgetFactories[] = $factory;
} }
public function getConfiguration(array $config, ContainerBuilder $container): ?\Symfony\Component\Config\Definition\ConfigurationInterface public function getConfiguration(array $config, ContainerBuilder $container)
{ {
return new Configuration($this->widgetFactories, $container); return new Configuration($this->widgetFactories, $container);
} }
@@ -45,7 +45,7 @@ class ChillMainExtension extends Extension implements Widget\HasWidgetFactoriesE
return $this->widgetFactories; return $this->widgetFactories;
} }
public function load(array $configs, ContainerBuilder $container): void public function load(array $configs, ContainerBuilder $container)
{ {
// configuration for main bundle // configuration for main bundle
$configuration = $this->getConfiguration($configs, $container); $configuration = $this->getConfiguration($configs, $container);

View File

@@ -25,7 +25,7 @@ class ChillPersonAddAPersonListWidgetFactory extends AbstractWidgetFactory
* see http://symfony.com/doc/current/components/config/definition.html * see http://symfony.com/doc/current/components/config/definition.html
* *
*/ */
public function configureOptions($place, NodeBuilder $node): void public function configureOptions($place, NodeBuilder $node)
{ {
$node->booleanNode('only_active') $node->booleanNode('only_active')
->defaultTrue() ->defaultTrue()

View File

@@ -124,7 +124,7 @@ class ChillPersonAddAPersonWidget implements WidgetInterface
/** /**
* @return UserInterface * @return UserInterface
*/ */
private function getUser(): void private function getUser()
{ {
// return a user // return a user
} }

View File

@@ -22,7 +22,7 @@ use Symfony\Component\HttpKernel\DependencyInjection\Extension;
*/ */
class ChillPersonExtension extends Extension implements PrependExtensionInterface class ChillPersonExtension extends Extension implements PrependExtensionInterface
{ {
public function load(array $configs, ContainerBuilder $container): void public function load(array $configs, ContainerBuilder $container)
{ {
// ... // ...
} }
@@ -32,7 +32,7 @@ class ChillPersonExtension extends Extension implements PrependExtensionInterfac
* *
* @param \Chill\PersonBundle\DependencyInjection\containerBuilder $container * @param \Chill\PersonBundle\DependencyInjection\containerBuilder $container
*/ */
public function prepend(ContainerBuilder $container): void public function prepend(ContainerBuilder $container)
{ {
$container->prependExtensionConfig('chill_main', [ $container->prependExtensionConfig('chill_main', [
'widgets' => [ 'widgets' => [

View File

@@ -11,7 +11,6 @@
"@hotwired/stimulus": "^3.0.0", "@hotwired/stimulus": "^3.0.0",
"@luminateone/eslint-baseline": "^1.0.9", "@luminateone/eslint-baseline": "^1.0.9",
"@symfony/stimulus-bridge": "^3.2.0", "@symfony/stimulus-bridge": "^3.2.0",
"@symfony/ux-translator": "file:vendor/symfony/ux-translator/assets",
"@symfony/webpack-encore": "^4.1.0", "@symfony/webpack-encore": "^4.1.0",
"@tsconfig/node20": "^20.1.4", "@tsconfig/node20": "^20.1.4",
"@types/dompurify": "^3.0.5", "@types/dompurify": "^3.0.5",
@@ -56,6 +55,7 @@
"@tsconfig/node20": "^20.1.4", "@tsconfig/node20": "^20.1.4",
"@types/dompurify": "^3.0.5", "@types/dompurify": "^3.0.5",
"@types/leaflet": "^1.9.3", "@types/leaflet": "^1.9.3",
"@vueuse/core": "^13.9.0",
"bootstrap-icons": "^1.11.3", "bootstrap-icons": "^1.11.3",
"dropzone": "^5.7.6", "dropzone": "^5.7.6",
"es6-promise": "^4.2.8", "es6-promise": "^4.2.8",

File diff suppressed because it is too large Load Diff

View File

@@ -1,34 +1,84 @@
<?xml version="1.0" encoding="UTF-8"?> <?xml version="1.0" encoding="UTF-8"?>
<!-- https://phpunit.readthedocs.io/en/latest/configuration.html --> <!-- https://phpunit.readthedocs.io/en/latest/configuration.html -->
<phpunit xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" <phpunit
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:noNamespaceSchemaLocation="vendor/phpunit/phpunit/phpunit.xsd" xsi:noNamespaceSchemaLocation="vendor/phpunit/phpunit/phpunit.xsd"
backupGlobals="false" backupGlobals="false"
colors="true" colors="true"
failOnNotice="true"
failOnWarning="true"
bootstrap="tests/bootstrap.php" bootstrap="tests/bootstrap.php"
cacheDirectory=".phpunit.cache"
> >
<php> <php>
<ini name="display_errors" value="1" /> <ini name="display_errors" value="1" />
<ini name="error_reporting" value="-1" /> <ini name="error_reporting" value="-1"/>
<server name="APP_ENV" value="test" force="true" /> <server name="APP_ENV" value="test" force="true"/>
<server name="SHELL_VERBOSITY" value="-1" /> <env name="SYMFONY_DEPRECATIONS_HELPER" value="max[direct]=93&amp;max[indirect]=999999"/>
<server name="SHELL_VERBOSITY" value="-1"/>
<server name="SYMFONY_PHPUNIT_REMOVE" value="" />
<server name="SYMFONY_PHPUNIT_VERSION" value="9.5" />
<ini name="date.timezone" value="Europe/Brussels" />
</php> </php>
<testsuites> <testsuites>
<testsuite name="Project Test Suite"> <!--
<directory>tests</directory> <testsuite name="ActivityBundle">
<directory suffix="Test.php">src/Bundle/ChillActivityBundle/Tests/</directory>
</testsuite>
-->
<testsuite name="AsideActivityBundle">
<directory suffix="Test.php">src/Bundle/ChillAsideActivityBundle/src/Tests/</directory>
</testsuite>
<testsuite name="BudgetBundle">
<directory suffix="Test.php">src/Bundle/ChillBudgetBundle/Tests/</directory>
</testsuite>
<testsuite name="CalendarBundle">
<directory suffix="Test.php">src/Bundle/ChillCalendarBundle/Tests/</directory>
</testsuite>
<!-- Missing CustomFieldBundle -->
<testsuite name="DocGeneratorBundle">
<directory suffix="Test.php">src/Bundle/ChillDocGeneratorBundle/tests/</directory>
</testsuite>
<testsuite name="DocStoreBundle">
<directory suffix="Test.php">src/Bundle/ChillDocStoreBundle/Tests/</directory>
</testsuite>
<!--
<testsuite name="EventBundle">
<directory suffix="Test.php">src/Bundle/ChillEventBundle/tests/</directory>
</testsuite>
-->
<testsuite name="MainBundle">
<directory suffix="Test.php">src/Bundle/ChillMainBundle/Tests/</directory>
</testsuite>
<testsuite name="PersonBundle">
<directory suffix="Test.php">src/Bundle/ChillPersonBundle/Tests/</directory>
<!-- we are rewriting accompanying periods... Work in progress -->
<exclude>src/Bundle/ChillPersonBundle/Tests/Controller/AccompanyingPeriodControllerTest.php</exclude>
<!-- we are rewriting address, Work in progress -->
<exclude>src/Bundle/ChillPersonBundle/Tests/Controller/PersonAddressControllerTest.php</exclude>
<!-- find a solution to create multiple configs -->
<exclude>src/Bundle/ChillPersonBundle/Tests/Controller/PersonControllerUpdateWithHiddenFieldsTest.php</exclude>
<!-- temporarily removed, the time to find a fix -->
<exclude>src/Bundle/ChillPersonBundle/Tests/Controller/PersonDuplicateControllerViewTest.php</exclude>
</testsuite>
<!--
<testsuite name="ReportBundle">
<directory suffix="Test.php">src/Bundle/ChillReportBundle/Tests/</directory>
</testsuite>
-->
<!--
<testsuite name="TaskBundle">
<directory suffix="Test.php">src/Bundle/ChillTaskBundle/Tests</directory>
</testsuite>
-->
<testsuite name="ThirdPartyBundle">
<directory suffix="Test.php">src/Bundle/ChillThirdPartyBundle/Tests</directory>
</testsuite>
<testsuite name="WopiBundle">
<directory suffix="Test.php">src/Bundle/ChillWopiBundle/tests/</directory>
</testsuite> </testsuite>
</testsuites> </testsuites>
<!-- Run `composer require symfony/panther` before enabling this extension -->
<source ignoreSuppressionOfDeprecations="true" restrictNotices="true" restrictWarnings="true"> <!--
<include>
<directory>src</directory>
</include>
</source>
<extensions> <extensions>
<extension class="Symfony\Component\Panther\ServerExtension" />
</extensions> </extensions>
-->
</phpunit> </phpunit>

View File

@@ -13,24 +13,23 @@ use Rector\CodeQuality\Rector\Class_\InlineConstructorDefaultToPropertyRector;
use Rector\Config\RectorConfig; use Rector\Config\RectorConfig;
use Rector\Php80\Rector\Class_\AnnotationToAttributeRector; use Rector\Php80\Rector\Class_\AnnotationToAttributeRector;
use Rector\Set\ValueObject\LevelSetList; use Rector\Set\ValueObject\LevelSetList;
use Rector\Symfony\Set\SymfonySetList;
return static function (RectorConfig $rectorConfig): void { return static function (RectorConfig $rectorConfig): void {
$rectorConfig->paths([ $rectorConfig->paths([
__DIR__.'/docs', __DIR__ . '/docs',
__DIR__.'/src', __DIR__ . '/src',
__DIR__.'/rector.php', __DIR__ . '/rector.php',
]); ]);
$rectorConfig->skip([ $rectorConfig->skip([
Rector\Php55\Rector\String_\StringClassNameToClassConstantRector::class => __DIR__.'src/Bundle/ChillMainBundle/Service/Notifier/LegacyOvhCloudFactory.php', \Rector\Php55\Rector\String_\StringClassNameToClassConstantRector::class => __DIR__ . 'src/Bundle/ChillMainBundle/Service/Notifier/LegacyOvhCloudFactory.php'
]); ]);
// $rectorConfig->symfonyContainerXml(__DIR__ . '/var/cache/dev/test/App_KernelTestDebugContainer.xml '); //$rectorConfig->symfonyContainerXml(__DIR__ . '/var/cache/dev/test/App_KernelTestDebugContainer.xml ');
// $rectorConfig->symfonyContainerPhp(__DIR__ . '/tests/symfony-container.php'); //$rectorConfig->symfonyContainerPhp(__DIR__ . '/tests/symfony-container.php');
// $rectorConfig->cacheClass(\Rector\Caching\ValueObject\Storage\FileCacheStorage::class); //$rectorConfig->cacheClass(\Rector\Caching\ValueObject\Storage\FileCacheStorage::class);
// $rectorConfig->cacheDirectory(__DIR__ . '/.cache/rector'); //$rectorConfig->cacheDirectory(__DIR__ . '/.cache/rector');
// register a single rule // register a single rule
$rectorConfig->rule(InlineConstructorDefaultToPropertyRector::class); $rectorConfig->rule(InlineConstructorDefaultToPropertyRector::class);
@@ -38,72 +37,54 @@ return static function (RectorConfig $rectorConfig): void {
$rectorConfig->rule(Rector\TypeDeclaration\Rector\Class_\MergeDateTimePropertyTypeDeclarationRector::class); $rectorConfig->rule(Rector\TypeDeclaration\Rector\Class_\MergeDateTimePropertyTypeDeclarationRector::class);
$rectorConfig->rule(Rector\TypeDeclaration\Rector\ClassMethod\AddReturnTypeDeclarationBasedOnParentClassMethodRector::class); $rectorConfig->rule(Rector\TypeDeclaration\Rector\ClassMethod\AddReturnTypeDeclarationBasedOnParentClassMethodRector::class);
// Add return types to controller methods
$rectorConfig->rule(Rector\TypeDeclaration\Rector\ClassMethod\AddVoidReturnTypeWhereNoReturnRector::class);
$rectorConfig->rule(Rector\TypeDeclaration\Rector\ClassMethod\ReturnTypeFromReturnNewRector::class);
$rectorConfig->rule(Rector\TypeDeclaration\Rector\ClassMethod\ReturnTypeFromStrictTypedCallRector::class);
$rectorConfig->rule(Rector\TypeDeclaration\Rector\ClassMethod\ReturnTypeFromStrictTypedPropertyRector::class);
// part of the symfony 54 rules // part of the symfony 54 rules
$rectorConfig->rule(Rector\Symfony\Symfony53\Rector\StaticPropertyFetch\KernelTestCaseContainerPropertyDeprecationRector::class); $rectorConfig->rule(\Rector\Symfony\Symfony53\Rector\StaticPropertyFetch\KernelTestCaseContainerPropertyDeprecationRector::class);
$rectorConfig->rule(Rector\Symfony\Symfony60\Rector\MethodCall\GetHelperControllerToServiceRector::class); $rectorConfig->rule(\Rector\Symfony\Symfony60\Rector\MethodCall\GetHelperControllerToServiceRector::class);
// $rectorConfig->disableParallel(); //$rectorConfig->disableParallel();
// define sets of rules //define sets of rules
$rectorConfig->sets([ $rectorConfig->sets([
LevelSetList::UP_TO_PHP_82, LevelSetList::UP_TO_PHP_82,
SymfonySetList::SYMFONY_60, \Rector\Doctrine\Set\DoctrineSetList::DOCTRINE_CODE_QUALITY,
SymfonySetList::SYMFONY_61, \Rector\PHPUnit\Set\PHPUnitSetList::PHPUNIT_90,
SymfonySetList::SYMFONY_62,
SymfonySetList::SYMFONY_63,
SymfonySetList::SYMFONY_64,
SymfonySetList::SYMFONY_70,
SymfonySetList::SYMFONY_71,
Rector\Doctrine\Set\DoctrineSetList::DOCTRINE_ORM_29,
Rector\Doctrine\Set\DoctrineSetList::DOCTRINE_DBAL_30,
Rector\Doctrine\Set\DoctrineSetList::DOCTRINE_CODE_QUALITY,
Rector\Doctrine\Set\DoctrineSetList::ANNOTATIONS_TO_ATTRIBUTES,
]); ]);
$rectorConfig->ruleWithConfiguration(AnnotationToAttributeRector::class, [ $rectorConfig->ruleWithConfiguration(\Rector\Php80\Rector\Class_\AnnotationToAttributeRector::class, [
new Rector\Php80\ValueObject\AnnotationToAttribute('Symfony\Component\Serializer\Annotation\Context'), new \Rector\Php80\ValueObject\AnnotationToAttribute('Symfony\Component\Serializer\Annotation\Context'),
]); ]);
// migrate for phpunit // migrate for phpunit
$rectorConfig->rules([ $rectorConfig->rules([
Rector\PHPUnit\PHPUnit100\Rector\Class_\StaticDataProviderClassMethodRector::class, \Rector\PHPUnit\PHPUnit100\Rector\Class_\StaticDataProviderClassMethodRector::class,
Rector\PHPUnit\PHPUnit100\Rector\Class_\PublicDataProviderClassMethodRector::class, \Rector\PHPUnit\PHPUnit100\Rector\Class_\PublicDataProviderClassMethodRector::class
]); ]);
// some routes are added twice if it remains activated // some routes are added twice if it remains activated
// $rectorConfig->rule(\Rector\Symfony\Configs\Rector\ClassMethod\AddRouteAnnotationRector::class); // $rectorConfig->rule(\Rector\Symfony\Configs\Rector\ClassMethod\AddRouteAnnotationRector::class);
// chill rules
$rectorConfig->rules([
Chill\Utils\Rector\Rector\ChillBundleMakeDataProviderStaticForAbstractExportTestRector::class,
]);
// skip some path... // skip some path...
$rectorConfig->skip([ $rectorConfig->skip([
// waiting for fixing this bug: https://github.com/rectorphp/rector-doctrine/issues/342 // waiting for fixing this bug: https://github.com/rectorphp/rector-doctrine/issues/342
Rector\Doctrine\CodeQuality\Rector\Property\ImproveDoctrineCollectionDocTypeInEntityRector::class, \Rector\Doctrine\CodeQuality\Rector\Property\ImproveDoctrineCollectionDocTypeInEntityRector::class,
]); ]);
$rectorConfig->ruleWithConfiguration(AnnotationToAttributeRector::class, [ $rectorConfig->ruleWithConfiguration(AnnotationToAttributeRector::class, [
new Rector\Php80\ValueObject\AnnotationToAttribute('Chill\PersonBundle\Validator\Constraints\AccompanyingPeriod\AccompanyingPeriodValidity'), new \Rector\Php80\ValueObject\AnnotationToAttribute('Chill\PersonBundle\Validator\Constraints\AccompanyingPeriod\AccompanyingPeriodValidity'),
new Rector\Php80\ValueObject\AnnotationToAttribute('Chill\PersonBundle\Validator\Constraints\Household\HouseholdMembershipSequential'), new \Rector\Php80\ValueObject\AnnotationToAttribute('Chill\PersonBundle\Validator\Constraints\Household\HouseholdMembershipSequential'),
new Rector\Php80\ValueObject\AnnotationToAttribute('Chill\PersonBundle\Validator\Constraints\Household\MaxHolder'), new \Rector\Php80\ValueObject\AnnotationToAttribute('Chill\PersonBundle\Validator\Constraints\Household\MaxHolder'),
new Rector\Php80\ValueObject\AnnotationToAttribute('Chill\PersonBundle\Validator\Constraints\AccompanyingPeriod\ConfidentialCourseMustHaveReferrer'), new \Rector\Php80\ValueObject\AnnotationToAttribute('Chill\PersonBundle\Validator\Constraints\AccompanyingPeriod\ConfidentialCourseMustHaveReferrer'),
new Rector\Php80\ValueObject\AnnotationToAttribute('Chill\PersonBundle\Validator\Constraints\AccompanyingPeriod\LocationValidity'), new \Rector\Php80\ValueObject\AnnotationToAttribute('Chill\PersonBundle\Validator\Constraints\AccompanyingPeriod\LocationValidity'),
new Rector\Php80\ValueObject\AnnotationToAttribute('Chill\PersonBundle\Validator\Constraints\AccompanyingPeriod\ParticipationOverlap'), new \Rector\Php80\ValueObject\AnnotationToAttribute('Chill\PersonBundle\Validator\Constraints\AccompanyingPeriod\ParticipationOverlap'),
new Rector\Php80\ValueObject\AnnotationToAttribute('Chill\PersonBundle\Validator\Constraints\AccompanyingPeriod\ResourceDuplicateCheck'), new \Rector\Php80\ValueObject\AnnotationToAttribute('Chill\PersonBundle\Validator\Constraints\AccompanyingPeriod\ResourceDuplicateCheck'),
new Rector\Php80\ValueObject\AnnotationToAttribute('Chill\PersonBundle\Validator\Constraints\Person\Birthdate'), new \Rector\Php80\ValueObject\AnnotationToAttribute('Chill\PersonBundle\Validator\Constraints\Person\Birthdate'),
new Rector\Php80\ValueObject\AnnotationToAttribute('Chill\PersonBundle\Validator\Constraints\Person\PersonHasCenter'), new \Rector\Php80\ValueObject\AnnotationToAttribute('Chill\PersonBundle\Validator\Constraints\Person\PersonHasCenter'),
new Rector\Php80\ValueObject\AnnotationToAttribute('Chill\PersonBundle\Validator\Constraints\Relationship\RelationshipNoDuplicate'), new \Rector\Php80\ValueObject\AnnotationToAttribute('Chill\PersonBundle\Validator\Constraints\Relationship\RelationshipNoDuplicate'),
new Rector\Php80\ValueObject\AnnotationToAttribute('Chill\ActivityBundle\Validator\Constraints\ActivityValidity'), new \Rector\Php80\ValueObject\AnnotationToAttribute('Chill\ActivityBundle\Validator\Constraints\ActivityValidity'),
new Rector\Php80\ValueObject\AnnotationToAttribute('Chill\DocStoreBundle\Validator\Constraints\AsyncFileExists'), new \Rector\Php80\ValueObject\AnnotationToAttribute('Chill\DocStoreBundle\Validator\Constraints\AsyncFileExists'),
new Rector\Php80\ValueObject\AnnotationToAttribute('Chill\MainBundle\Validation\Constraint\PhonenumberConstraint'), new \Rector\Php80\ValueObject\AnnotationToAttribute('Chill\MainBundle\Validation\Constraint\PhonenumberConstraint'),
new Rector\Php80\ValueObject\AnnotationToAttribute('Chill\MainBundle\Validator\Constraints\Entity\UserCircleConsistency'), new \Rector\Php80\ValueObject\AnnotationToAttribute('Chill\MainBundle\Validator\Constraints\Entity\UserCircleConsistency'),
new Rector\Php80\ValueObject\AnnotationToAttribute('Chill\MainBundle\Workflow\Validator\EntityWorkflowCreation'), new \Rector\Php80\ValueObject\AnnotationToAttribute('Chill\MainBundle\Workflow\Validator\EntityWorkflowCreation'),
]); ]);
}; };

View File

@@ -74,8 +74,8 @@ final class ActivityController extends AbstractController
/** /**
* Deletes a Activity entity. * Deletes a Activity entity.
*/ */
#[\Symfony\Component\Routing\Attribute\Route(path: '/{_locale}/activity/{id}/delete', name: 'chill_activity_activity_delete', methods: ['GET', 'POST', 'DELETE'])] #[\Symfony\Component\Routing\Annotation\Route(path: '/{_locale}/activity/{id}/delete', name: 'chill_activity_activity_delete', methods: ['GET', 'POST', 'DELETE'])]
public function deleteAction(Request $request, mixed $id): \Symfony\Component\HttpFoundation\RedirectResponse|Response public function deleteAction(Request $request, mixed $id)
{ {
$view = null; $view = null;
@@ -104,7 +104,7 @@ final class ActivityController extends AbstractController
if ($form->isSubmitted() && $form->isValid()) { if ($form->isSubmitted() && $form->isValid()) {
$this->logger->notice('An activity has been removed', [ $this->logger->notice('An activity has been removed', [
'by_user' => $this->getUser()->getUserIdentifier(), 'by_user' => $this->getUser()->getUsername(),
'activity_id' => $activity->getId(), 'activity_id' => $activity->getId(),
'person_id' => $activity->getPerson() ? $activity->getPerson()->getId() : null, 'person_id' => $activity->getPerson() ? $activity->getPerson()->getId() : null,
'comment' => $activity->getComment()->getComment(), 'comment' => $activity->getComment()->getComment(),
@@ -134,7 +134,7 @@ final class ActivityController extends AbstractController
return $this->render($view, [ return $this->render($view, [
'activity' => $activity, 'activity' => $activity,
'delete_form' => $form, 'delete_form' => $form->createView(),
'person' => $person, 'person' => $person,
'accompanyingCourse' => $accompanyingPeriod, 'accompanyingCourse' => $accompanyingPeriod,
]); ]);
@@ -143,7 +143,7 @@ final class ActivityController extends AbstractController
/** /**
* Displays a form to edit an existing Activity entity. * Displays a form to edit an existing Activity entity.
*/ */
#[\Symfony\Component\Routing\Attribute\Route(path: '/{_locale}/activity/{id}/edit', name: 'chill_activity_activity_edit', methods: ['GET', 'POST', 'PUT'])] #[\Symfony\Component\Routing\Annotation\Route(path: '/{_locale}/activity/{id}/edit', name: 'chill_activity_activity_edit', methods: ['GET', 'POST', 'PUT'])]
public function editAction(int $id, Request $request): Response public function editAction(int $id, Request $request): Response
{ {
$view = null; $view = null;
@@ -226,8 +226,8 @@ final class ActivityController extends AbstractController
return $this->render($view, [ return $this->render($view, [
'entity' => $entity, 'entity' => $entity,
'edit_form' => $form, 'edit_form' => $form->createView(),
'delete_form' => $deleteForm, 'delete_form' => $deleteForm->createView(),
'person' => $person, 'person' => $person,
'accompanyingCourse' => $accompanyingPeriod, 'accompanyingCourse' => $accompanyingPeriod,
'activity_json' => $activity_array, 'activity_json' => $activity_array,
@@ -237,7 +237,7 @@ final class ActivityController extends AbstractController
/** /**
* Lists all Activity entities. * Lists all Activity entities.
*/ */
#[\Symfony\Component\Routing\Attribute\Route(path: '/{_locale}/activity/', name: 'chill_activity_activity_list')] #[\Symfony\Component\Routing\Annotation\Route(path: '/{_locale}/activity/', name: 'chill_activity_activity_list')]
public function listAction(Request $request): Response public function listAction(Request $request): Response
{ {
$view = null; $view = null;
@@ -341,7 +341,7 @@ final class ActivityController extends AbstractController
return $filterBuilder->build(); return $filterBuilder->build();
} }
#[\Symfony\Component\Routing\Attribute\Route(path: '/{_locale}/activity/new', name: 'chill_activity_activity_new', methods: ['POST', 'GET'])] #[\Symfony\Component\Routing\Annotation\Route(path: '/{_locale}/activity/new', name: 'chill_activity_activity_new', methods: ['POST', 'GET'])]
public function newAction(Request $request): Response public function newAction(Request $request): Response
{ {
$view = null; $view = null;
@@ -364,7 +364,7 @@ final class ActivityController extends AbstractController
$activityData = null; $activityData = null;
if ($request->query->has('activityData')) { if ($request->query->has('activityData')) {
$activityData = $request->query->all('activityData'); $activityData = $request->query->get('activityData');
} }
if ( if (
@@ -516,13 +516,13 @@ final class ActivityController extends AbstractController
'person' => $person, 'person' => $person,
'accompanyingCourse' => $accompanyingPeriod, 'accompanyingCourse' => $accompanyingPeriod,
'entity' => $entity, 'entity' => $entity,
'form' => $form, 'form' => $form->createView(),
'activity_json' => $activity_array, 'activity_json' => $activity_array,
'default_location' => $defaultLocation, 'default_location' => $defaultLocation,
]); ]);
} }
#[\Symfony\Component\Routing\Attribute\Route(path: '/{_locale}/activity/select-type', name: 'chill_activity_activity_select_type')] #[\Symfony\Component\Routing\Annotation\Route(path: '/{_locale}/activity/select-type', name: 'chill_activity_activity_select_type')]
public function selectTypeAction(Request $request): Response public function selectTypeAction(Request $request): Response
{ {
$view = null; $view = null;
@@ -567,7 +567,7 @@ final class ActivityController extends AbstractController
]); ]);
} }
#[\Symfony\Component\Routing\Attribute\Route(path: '/{_locale}/activity/{id}/show', name: 'chill_activity_activity_show')] #[\Symfony\Component\Routing\Annotation\Route(path: '/{_locale}/activity/{id}/show', name: 'chill_activity_activity_show')]
public function showAction(Request $request, int $id): Response public function showAction(Request $request, int $id): Response
{ {
$entity = $this->activityRepository->find($id); $entity = $this->activityRepository->find($id);
@@ -611,7 +611,7 @@ final class ActivityController extends AbstractController
'person' => $person, 'person' => $person,
'accompanyingCourse' => $accompanyingPeriod, 'accompanyingCourse' => $accompanyingPeriod,
'entity' => $entity, 'entity' => $entity,
'delete_form' => $deleteForm, 'delete_form' => $deleteForm->createView(),
]); ]);
} }

View File

@@ -27,8 +27,8 @@ class ActivityReasonCategoryController extends AbstractController
/** /**
* Creates a new ActivityReasonCategory entity. * Creates a new ActivityReasonCategory entity.
*/ */
#[\Symfony\Component\Routing\Attribute\Route(path: '/{_locale}/admin/activityreasoncategory/create', name: 'chill_activity_activityreasoncategory_create', methods: ['POST'])] #[\Symfony\Component\Routing\Annotation\Route(path: '/{_locale}/admin/activityreasoncategory/create', name: 'chill_activity_activityreasoncategory_create', methods: ['POST'])]
public function createAction(Request $request): \Symfony\Component\HttpFoundation\RedirectResponse|\Symfony\Component\HttpFoundation\Response public function createAction(Request $request)
{ {
$entity = new ActivityReasonCategory(); $entity = new ActivityReasonCategory();
$form = $this->createCreateForm($entity); $form = $this->createCreateForm($entity);
@@ -44,15 +44,15 @@ class ActivityReasonCategoryController extends AbstractController
return $this->render('@ChillActivity/ActivityReasonCategory/new.html.twig', [ return $this->render('@ChillActivity/ActivityReasonCategory/new.html.twig', [
'entity' => $entity, 'entity' => $entity,
'form' => $form, 'form' => $form->createView(),
]); ]);
} }
/** /**
* Lists all ActivityReasonCategory entities. * Lists all ActivityReasonCategory entities.
*/ */
#[\Symfony\Component\Routing\Attribute\Route(path: '/{_locale}/admin/activityreasoncategory/', name: 'chill_activity_activityreasoncategory')] #[\Symfony\Component\Routing\Annotation\Route(path: '/{_locale}/admin/activityreasoncategory/', name: 'chill_activity_activityreasoncategory')]
public function indexAction(): \Symfony\Component\HttpFoundation\Response public function indexAction()
{ {
$em = $this->managerRegistry->getManager(); $em = $this->managerRegistry->getManager();
@@ -66,23 +66,23 @@ class ActivityReasonCategoryController extends AbstractController
/** /**
* Displays a form to create a new ActivityReasonCategory entity. * Displays a form to create a new ActivityReasonCategory entity.
*/ */
#[\Symfony\Component\Routing\Attribute\Route(path: '/{_locale}/admin/activityreasoncategory/new', name: 'chill_activity_activityreasoncategory_new')] #[\Symfony\Component\Routing\Annotation\Route(path: '/{_locale}/admin/activityreasoncategory/new', name: 'chill_activity_activityreasoncategory_new')]
public function newAction(): \Symfony\Component\HttpFoundation\Response public function newAction()
{ {
$entity = new ActivityReasonCategory(); $entity = new ActivityReasonCategory();
$form = $this->createCreateForm($entity); $form = $this->createCreateForm($entity);
return $this->render('@ChillActivity/ActivityReasonCategory/new.html.twig', [ return $this->render('@ChillActivity/ActivityReasonCategory/new.html.twig', [
'entity' => $entity, 'entity' => $entity,
'form' => $form, 'form' => $form->createView(),
]); ]);
} }
/** /**
* Edits an existing ActivityReasonCategory entity. * Edits an existing ActivityReasonCategory entity.
*/ */
#[\Symfony\Component\Routing\Attribute\Route(path: '/{_locale}/admin/activityreasoncategory/{id}/update', name: 'chill_activity_activityreasoncategory_update', methods: ['POST', 'PUT'])] #[\Symfony\Component\Routing\Annotation\Route(path: '/{_locale}/admin/activityreasoncategory/{id}/update', name: 'chill_activity_activityreasoncategory_update')]
public function updateAction(Request $request, mixed $id): \Symfony\Component\HttpFoundation\RedirectResponse|\Symfony\Component\HttpFoundation\Response public function updateAction(Request $request, mixed $id)
{ {
$em = $this->managerRegistry->getManager(); $em = $this->managerRegistry->getManager();
@@ -103,7 +103,7 @@ class ActivityReasonCategoryController extends AbstractController
return $this->render('@ChillActivity/ActivityReasonCategory/edit.html.twig', [ return $this->render('@ChillActivity/ActivityReasonCategory/edit.html.twig', [
'entity' => $entity, 'entity' => $entity,
'edit_form' => $editForm, 'edit_form' => $editForm->createView(),
]); ]);
} }

View File

@@ -28,8 +28,8 @@ class ActivityReasonController extends AbstractController
/** /**
* Creates a new ActivityReason entity. * Creates a new ActivityReason entity.
*/ */
#[\Symfony\Component\Routing\Attribute\Route(path: '/{_locale}/admin/activityreason/create', name: 'chill_activity_activityreason_create', methods: ['POST'])] #[\Symfony\Component\Routing\Annotation\Route(path: '/{_locale}/admin/activityreason/create', name: 'chill_activity_activityreason_create', methods: ['POST'])]
public function createAction(Request $request): \Symfony\Component\HttpFoundation\RedirectResponse|\Symfony\Component\HttpFoundation\Response public function createAction(Request $request)
{ {
$entity = new ActivityReason(); $entity = new ActivityReason();
$form = $this->createCreateForm($entity); $form = $this->createCreateForm($entity);
@@ -45,15 +45,15 @@ class ActivityReasonController extends AbstractController
return $this->render('@ChillActivity/ActivityReason/new.html.twig', [ return $this->render('@ChillActivity/ActivityReason/new.html.twig', [
'entity' => $entity, 'entity' => $entity,
'form' => $form, 'form' => $form->createView(),
]); ]);
} }
/** /**
* Lists all ActivityReason entities. * Lists all ActivityReason entities.
*/ */
#[\Symfony\Component\Routing\Attribute\Route(path: '/{_locale}/admin/activityreason/', name: 'chill_activity_activityreason')] #[\Symfony\Component\Routing\Annotation\Route(path: '/{_locale}/admin/activityreason/', name: 'chill_activity_activityreason')]
public function indexAction(): \Symfony\Component\HttpFoundation\Response public function indexAction()
{ {
$em = $this->managerRegistry->getManager(); $em = $this->managerRegistry->getManager();
@@ -67,23 +67,23 @@ class ActivityReasonController extends AbstractController
/** /**
* Displays a form to create a new ActivityReason entity. * Displays a form to create a new ActivityReason entity.
*/ */
#[\Symfony\Component\Routing\Attribute\Route(path: '/{_locale}/admin/activityreason/new', name: 'chill_activity_activityreason_new')] #[\Symfony\Component\Routing\Annotation\Route(path: '/{_locale}/admin/activityreason/new', name: 'chill_activity_activityreason_new')]
public function newAction(): \Symfony\Component\HttpFoundation\Response public function newAction()
{ {
$entity = new ActivityReason(); $entity = new ActivityReason();
$form = $this->createCreateForm($entity); $form = $this->createCreateForm($entity);
return $this->render('@ChillActivity/ActivityReason/new.html.twig', [ return $this->render('@ChillActivity/ActivityReason/new.html.twig', [
'entity' => $entity, 'entity' => $entity,
'form' => $form, 'form' => $form->createView(),
]); ]);
} }
/** /**
* Edits an existing ActivityReason entity. * Edits an existing ActivityReason entity.
*/ */
#[\Symfony\Component\Routing\Attribute\Route(path: '/{_locale}/admin/activityreason/{id}/update', name: 'chill_activity_activityreason_update', methods: ['POST', 'PUT'])] #[\Symfony\Component\Routing\Annotation\Route(path: '/{_locale}/admin/activityreason/{id}/update', name: 'chill_activity_activityreason_update')]
public function updateAction(Request $request, mixed $id): \Symfony\Component\HttpFoundation\RedirectResponse|\Symfony\Component\HttpFoundation\Response public function updateAction(Request $request, mixed $id)
{ {
$em = $this->managerRegistry->getManager(); $em = $this->managerRegistry->getManager();
@@ -104,7 +104,7 @@ class ActivityReasonController extends AbstractController
return $this->render('@ChillActivity/ActivityReason/edit.html.twig', [ return $this->render('@ChillActivity/ActivityReason/edit.html.twig', [
'entity' => $entity, 'entity' => $entity,
'edit_form' => $editForm, 'edit_form' => $editForm->createView(),
]); ]);
} }

View File

@@ -18,15 +18,15 @@ use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
*/ */
class AdminController extends AbstractController class AdminController extends AbstractController
{ {
#[\Symfony\Component\Routing\Attribute\Route(path: '/{_locale}/admin/activity', name: 'chill_activity_admin_index')] #[\Symfony\Component\Routing\Annotation\Route(path: '/{_locale}/admin/activity', name: 'chill_activity_admin_index')]
public function indexActivityAction(): \Symfony\Component\HttpFoundation\Response public function indexActivityAction()
{ {
return $this->render('@ChillActivity/Admin/layout_activity.html.twig'); return $this->render('@ChillActivity/Admin/layout_activity.html.twig');
} }
#[\Symfony\Component\Routing\Attribute\Route(path: '/{_locale}/admin/activity_redirect_to_main', name: 'chill_admin_aside_activity_redirect_to_admin_index', options: [null])] #[\Symfony\Component\Routing\Annotation\Route(path: '/{_locale}/admin/activity_redirect_to_main', name: 'chill_admin_aside_activity_redirect_to_admin_index', options: [null])]
#[\Symfony\Component\Routing\Attribute\Route(path: '/{_locale}/admin/activity_redirect_to_main', name: 'chill_admin_activity_redirect_to_admin_index')] #[\Symfony\Component\Routing\Annotation\Route(path: '/{_locale}/admin/activity_redirect_to_main', name: 'chill_admin_activity_redirect_to_admin_index')]
public function redirectToAdminIndexAction(): \Symfony\Component\HttpFoundation\RedirectResponse public function redirectToAdminIndexAction()
{ {
return $this->redirectToRoute('chill_main_admin_central'); return $this->redirectToRoute('chill_main_admin_central');
} }

View File

@@ -27,6 +27,8 @@ use Faker\Factory as FakerFactory;
class LoadActivity extends AbstractFixture implements OrderedFixtureInterface class LoadActivity extends AbstractFixture implements OrderedFixtureInterface
{ {
use \Symfony\Component\DependencyInjection\ContainerAwareTrait;
private readonly \Faker\Generator $faker; private readonly \Faker\Generator $faker;
public function __construct(private readonly EntityManagerInterface $em) public function __construct(private readonly EntityManagerInterface $em)

View File

@@ -25,7 +25,7 @@ use Symfony\Component\HttpKernel\DependencyInjection\Extension;
*/ */
class ChillActivityExtension extends Extension implements PrependExtensionInterface class ChillActivityExtension extends Extension implements PrependExtensionInterface
{ {
public function load(array $configs, ContainerBuilder $container): void public function load(array $configs, ContainerBuilder $container)
{ {
$configuration = new Configuration(); $configuration = new Configuration();
$config = $this->processConfiguration($configuration, $configs); $config = $this->processConfiguration($configuration, $configs);
@@ -44,14 +44,14 @@ class ChillActivityExtension extends Extension implements PrependExtensionInterf
$loader->load('services/doctrine.entitylistener.yaml'); $loader->load('services/doctrine.entitylistener.yaml');
} }
public function prepend(ContainerBuilder $container): void public function prepend(ContainerBuilder $container)
{ {
$this->prependRoutes($container); $this->prependRoutes($container);
$this->prependAuthorization($container); $this->prependAuthorization($container);
$this->prependCruds($container); $this->prependCruds($container);
} }
public function prependAuthorization(ContainerBuilder $container): void public function prependAuthorization(ContainerBuilder $container)
{ {
$container->prependExtensionConfig('security', [ $container->prependExtensionConfig('security', [
'role_hierarchy' => [ 'role_hierarchy' => [
@@ -71,7 +71,7 @@ class ChillActivityExtension extends Extension implements PrependExtensionInterf
/** (non-PHPdoc). /** (non-PHPdoc).
* @see \Symfony\Component\DependencyInjection\Extension\PrependExtensionInterface::prepend() * @see \Symfony\Component\DependencyInjection\Extension\PrependExtensionInterface::prepend()
*/ */
public function prependRoutes(ContainerBuilder $container): void public function prependRoutes(ContainerBuilder $container)
{ {
// add routes for custom bundle // add routes for custom bundle
$container->prependExtensionConfig('chill_main', [ $container->prependExtensionConfig('chill_main', [

View File

@@ -22,7 +22,7 @@ use function is_int;
*/ */
class Configuration implements ConfigurationInterface class Configuration implements ConfigurationInterface
{ {
public function getConfigTreeBuilder(): TreeBuilder public function getConfigTreeBuilder()
{ {
$treeBuilder = new TreeBuilder('chill_activity'); $treeBuilder = new TreeBuilder('chill_activity');
$rootNode = $treeBuilder->getRootNode(); $rootNode = $treeBuilder->getRootNode();

View File

@@ -34,9 +34,9 @@ use Chill\ThirdPartyBundle\Entity\ThirdParty;
use Doctrine\Common\Collections\ArrayCollection; use Doctrine\Common\Collections\ArrayCollection;
use Doctrine\Common\Collections\Collection; use Doctrine\Common\Collections\Collection;
use Doctrine\ORM\Mapping as ORM; use Doctrine\ORM\Mapping as ORM;
use Symfony\Component\Serializer\Attribute\DiscriminatorMap; use Symfony\Component\Serializer\Annotation\DiscriminatorMap;
use Symfony\Component\Serializer\Attribute\Groups; use Symfony\Component\Serializer\Annotation\Groups;
use Symfony\Component\Serializer\Attribute\SerializedName; use Symfony\Component\Serializer\Annotation\SerializedName;
use Symfony\Component\Validator\Constraints as Assert; use Symfony\Component\Validator\Constraints as Assert;
/** /**

View File

@@ -12,7 +12,7 @@ declare(strict_types=1);
namespace Chill\ActivityBundle\Entity; namespace Chill\ActivityBundle\Entity;
use Doctrine\ORM\Mapping as ORM; use Doctrine\ORM\Mapping as ORM;
use Symfony\Component\Serializer\Attribute as Serializer; use Symfony\Component\Serializer\Annotation as Serializer;
/** /**
* Class ActivityPresence. * Class ActivityPresence.

View File

@@ -37,8 +37,10 @@ class ActivityReason
/** /**
* Get active. * Get active.
*
* @return bool
*/ */
public function getActive(): bool public function getActive()
{ {
return $this->active; return $this->active;
} }
@@ -53,8 +55,10 @@ class ActivityReason
/** /**
* Get id. * Get id.
*
* @return int
*/ */
public function getId(): ?int public function getId()
{ {
return $this->id; return $this->id;
} }

View File

@@ -58,16 +58,20 @@ class ActivityReasonCategory implements \Stringable
/** /**
* Get active. * Get active.
*
* @return bool
*/ */
public function getActive(): bool public function getActive()
{ {
return $this->active; return $this->active;
} }
/** /**
* Get id. * Get id.
*
* @return int
*/ */
public function getId(): ?int public function getId()
{ {
return $this->id; return $this->id;
} }

View File

@@ -12,8 +12,8 @@ declare(strict_types=1);
namespace Chill\ActivityBundle\Entity; namespace Chill\ActivityBundle\Entity;
use Doctrine\ORM\Mapping as ORM; use Doctrine\ORM\Mapping as ORM;
use Symfony\Component\Serializer\Attribute as Serializer; use Symfony\Component\Serializer\Annotation as Serializer;
use Symfony\Component\Serializer\Attribute\Groups; use Symfony\Component\Serializer\Annotation\Groups;
use Symfony\Component\Validator\Constraints as Assert; use Symfony\Component\Validator\Constraints as Assert;
use Symfony\Component\Validator\Context\ExecutionContextInterface; use Symfony\Component\Validator\Context\ExecutionContextInterface;
@@ -188,7 +188,7 @@ class ActivityType
private int $userVisible = self::FIELD_REQUIRED; private int $userVisible = self::FIELD_REQUIRED;
#[Assert\Callback] #[Assert\Callback]
public function checkSocialActionsVisibility(ExecutionContextInterface $context, mixed $payload): void public function checkSocialActionsVisibility(ExecutionContextInterface $context, mixed $payload)
{ {
if ($this->socialIssuesVisible !== $this->socialActionsVisible) { if ($this->socialIssuesVisible !== $this->socialActionsVisible) {
// if social issues are invisible then social actions cannot be optional or required + if social issues are optional then social actions shouldn't be required // if social issues are invisible then social actions cannot be optional or required + if social issues are optional then social actions shouldn't be required
@@ -461,17 +461,11 @@ class ActivityType
{ {
$property = $field.'Visible'; $property = $field.'Visible';
// Get the real class name (not the proxy) if (!property_exists($this, $property)) {
$class = static::class;
if (str_contains($class, '__CG__')) {
$class = get_parent_class($this);
}
$realClass = $class;
if (!property_exists($realClass, $property)) {
throw new \InvalidArgumentException('Field "'.$field.'" not found'); throw new \InvalidArgumentException('Field "'.$field.'" not found');
} }
/* @phpstan-ignore-next-line */
return self::FIELD_INVISIBLE !== $this->{$property}; return self::FIELD_INVISIBLE !== $this->{$property};
} }

View File

@@ -21,7 +21,7 @@ class ActivityEntityListener
{ {
public function __construct(private readonly EntityManagerInterface $em, private readonly AccompanyingPeriodWorkRepository $workRepository) {} public function __construct(private readonly EntityManagerInterface $em, private readonly AccompanyingPeriodWorkRepository $workRepository) {}
public function persistActionToCourse(Activity $activity): void public function persistActionToCourse(Activity $activity)
{ {
if ($activity->getAccompanyingPeriod() instanceof AccompanyingPeriod) { if ($activity->getAccompanyingPeriod() instanceof AccompanyingPeriod) {
$period = $activity->getAccompanyingPeriod(); $period = $activity->getAccompanyingPeriod();

View File

@@ -53,7 +53,7 @@ final readonly class ByActivityTypeAggregator implements AggregatorInterface
public function normalizeFormData(array $formData): array public function normalizeFormData(array $formData): array
{ {
return ['after_date' => $formData['after_date']?->normalize(), 'before_date' => $formData['before_date']?->normalize()]; return ['after_date' => $formData['after_date']->normalize(), 'before_date' => $formData['before_date']->normalize()];
} }
public function denormalizeFormData(array $formData, int $fromVersion): array public function denormalizeFormData(array $formData, int $fromVersion): array

View File

@@ -42,7 +42,7 @@ class AvgActivityVisitDuration implements ExportInterface, GroupedExportInterfac
$this->filterStatsByCenters = $parameterBag->get('chill_main')['acl']['filter_stats_by_center']; $this->filterStatsByCenters = $parameterBag->get('chill_main')['acl']['filter_stats_by_center'];
} }
public function buildForm(FormBuilderInterface $builder): void public function buildForm(FormBuilderInterface $builder)
{ {
// TODO: Implement buildForm() method. // TODO: Implement buildForm() method.
} }

View File

@@ -42,7 +42,7 @@ final readonly class CountHouseholdOnActivity implements ExportInterface, Groupe
$this->filterStatsByCenters = $parameterBag->get('chill_main')['acl']['filter_stats_by_center']; $this->filterStatsByCenters = $parameterBag->get('chill_main')['acl']['filter_stats_by_center'];
} }
public function buildForm(FormBuilderInterface $builder): void {} public function buildForm(FormBuilderInterface $builder) {}
public function getNormalizationVersion(): int public function getNormalizationVersion(): int
{ {

View File

@@ -34,7 +34,7 @@ final readonly class ListActivity implements ListInterface, GroupedExportInterfa
private FilterListAccompanyingPeriodHelperInterface $filterListAccompanyingPeriodHelper, private FilterListAccompanyingPeriodHelperInterface $filterListAccompanyingPeriodHelper,
) {} ) {}
public function buildForm(FormBuilderInterface $builder): void public function buildForm(FormBuilderInterface $builder)
{ {
$this->helper->buildForm($builder); $this->helper->buildForm($builder);
} }
@@ -154,7 +154,7 @@ final readonly class ListActivity implements ListInterface, GroupedExportInterfa
return ActivityStatsVoter::LISTS; return ActivityStatsVoter::LISTS;
} }
public function supportsModifiers(): array public function supportsModifiers()
{ {
return array_merge( return array_merge(
$this->helper->supportsModifiers(), $this->helper->supportsModifiers(),

View File

@@ -34,7 +34,7 @@ final readonly class CountHouseholdOnActivity implements ExportInterface, Groupe
$this->filterStatsByCenters = $parameterBag->get('chill_main')['acl']['filter_stats_by_center']; $this->filterStatsByCenters = $parameterBag->get('chill_main')['acl']['filter_stats_by_center'];
} }
public function buildForm(FormBuilderInterface $builder): void {} public function buildForm(FormBuilderInterface $builder) {}
public function getNormalizationVersion(): int public function getNormalizationVersion(): int
{ {

View File

@@ -11,7 +11,6 @@ declare(strict_types=1);
namespace Chill\ActivityBundle\Export\Export\LinkedToPerson; namespace Chill\ActivityBundle\Export\Export\LinkedToPerson;
use Chill\ActivityBundle\Entity\Activity;
use Chill\ActivityBundle\Entity\ActivityReason; use Chill\ActivityBundle\Entity\ActivityReason;
use Chill\ActivityBundle\Export\Declarations; use Chill\ActivityBundle\Export\Declarations;
use Chill\ActivityBundle\Repository\ActivityRepository; use Chill\ActivityBundle\Repository\ActivityRepository;
@@ -60,7 +59,7 @@ class ListActivity implements ListInterface, GroupedExportInterface
$this->filterStatsByCenters = $parameterBag->get('chill_main')['acl']['filter_stats_by_center']; $this->filterStatsByCenters = $parameterBag->get('chill_main')['acl']['filter_stats_by_center'];
} }
public function buildForm(FormBuilderInterface $builder): void public function buildForm(FormBuilderInterface $builder)
{ {
$builder->add('fields', ChoiceType::class, [ $builder->add('fields', ChoiceType::class, [
'multiple' => true, 'multiple' => true,
@@ -215,7 +214,7 @@ class ListActivity implements ListInterface, GroupedExportInterface
$qb = $this->entityManager->createQueryBuilder(); $qb = $this->entityManager->createQueryBuilder();
$qb $qb
->from(Activity::class, 'activity') ->from('ChillActivityBundle:Activity', 'activity')
->join('activity.person', 'person') ->join('activity.person', 'person')
->join( ->join(
HouseholdMember::class, HouseholdMember::class,

View File

@@ -19,7 +19,7 @@ use Symfony\Component\OptionsResolver\OptionsResolver;
class ActivityReasonCategoryType extends AbstractType class ActivityReasonCategoryType extends AbstractType
{ {
public function buildForm(FormBuilderInterface $builder, array $options): void public function buildForm(FormBuilderInterface $builder, array $options)
{ {
$builder $builder
->add('name', TranslatableStringFormType::class) ->add('name', TranslatableStringFormType::class)
@@ -29,14 +29,17 @@ class ActivityReasonCategoryType extends AbstractType
/** /**
* @param OptionsResolverInterface $resolver * @param OptionsResolverInterface $resolver
*/ */
public function configureOptions(OptionsResolver $resolver): void public function configureOptions(OptionsResolver $resolver)
{ {
$resolver->setDefaults([ $resolver->setDefaults([
'data_class' => \Chill\ActivityBundle\Entity\ActivityReasonCategory::class, 'data_class' => \Chill\ActivityBundle\Entity\ActivityReasonCategory::class,
]); ]);
} }
public function getBlockPrefix(): string /**
* @return string
*/
public function getBlockPrefix()
{ {
return 'chill_activitybundle_activityreasoncategory'; return 'chill_activitybundle_activityreasoncategory';
} }

View File

@@ -21,7 +21,7 @@ use Symfony\Component\OptionsResolver\OptionsResolver;
class ActivityReasonType extends AbstractType class ActivityReasonType extends AbstractType
{ {
public function buildForm(FormBuilderInterface $builder, array $options): void public function buildForm(FormBuilderInterface $builder, array $options)
{ {
$builder $builder
->add('name', TranslatableStringFormType::class) ->add('name', TranslatableStringFormType::class)
@@ -29,14 +29,17 @@ class ActivityReasonType extends AbstractType
->add('category', TranslatableActivityReasonCategoryType::class); ->add('category', TranslatableActivityReasonCategoryType::class);
} }
public function configureOptions(OptionsResolver $resolver): void public function configureOptions(OptionsResolver $resolver)
{ {
$resolver->setDefaults([ $resolver->setDefaults([
'data_class' => ActivityReason::class, 'data_class' => ActivityReason::class,
]); ]);
} }
public function getBlockPrefix(): string /**
* @return string
*/
public function getBlockPrefix()
{ {
return 'chill_activitybundle_activityreason'; return 'chill_activitybundle_activityreason';
} }

View File

@@ -27,7 +27,7 @@ class ActivityTypeType extends AbstractType
{ {
public function __construct(private readonly TranslatableStringHelper $translatableStringHelper) {} public function __construct(private readonly TranslatableStringHelper $translatableStringHelper) {}
public function buildForm(FormBuilderInterface $builder, array $options): void public function buildForm(FormBuilderInterface $builder, array $options)
{ {
$builder $builder
->add('name', TranslatableStringFormType::class) ->add('name', TranslatableStringFormType::class)
@@ -67,7 +67,7 @@ class ActivityTypeType extends AbstractType
->add('commentVisible', ActivityFieldPresence::class); ->add('commentVisible', ActivityFieldPresence::class);
} }
public function configureOptions(OptionsResolver $resolver): void public function configureOptions(OptionsResolver $resolver)
{ {
$resolver->setDefaults([ $resolver->setDefaults([
'data_class' => \Chill\ActivityBundle\Entity\ActivityType::class, 'data_class' => \Chill\ActivityBundle\Entity\ActivityType::class,

View File

@@ -18,7 +18,7 @@ use Symfony\Component\OptionsResolver\OptionsResolver;
class ActivityFieldPresence extends AbstractType class ActivityFieldPresence extends AbstractType
{ {
public function configureOptions(OptionsResolver $resolver): void public function configureOptions(OptionsResolver $resolver)
{ {
$resolver->setDefaults( $resolver->setDefaults(
[ [
@@ -31,7 +31,7 @@ class ActivityFieldPresence extends AbstractType
); );
} }
public function getParent(): ?string public function getParent()
{ {
return ChoiceType::class; return ChoiceType::class;
} }

View File

@@ -30,7 +30,7 @@ class PickActivityReasonType extends AbstractType
private readonly TranslatableStringHelperInterface $translatableStringHelper, private readonly TranslatableStringHelperInterface $translatableStringHelper,
) {} ) {}
public function configureOptions(OptionsResolver $resolver): void public function configureOptions(OptionsResolver $resolver)
{ {
$resolver->setDefaults( $resolver->setDefaults(
[ [
@@ -49,12 +49,12 @@ class PickActivityReasonType extends AbstractType
); );
} }
public function getBlockPrefix(): string public function getBlockPrefix()
{ {
return 'translatable_activity_reason'; return 'translatable_activity_reason';
} }
public function getParent(): ?string public function getParent()
{ {
return EntityType::class; return EntityType::class;
} }

View File

@@ -25,7 +25,7 @@ class TranslatableActivityReasonCategoryType extends AbstractType
{ {
public function __construct(private readonly TranslatableStringHelperInterface $translatableStringHelper, private readonly TranslatorInterface $translator) {} public function __construct(private readonly TranslatableStringHelperInterface $translatableStringHelper, private readonly TranslatorInterface $translator) {}
public function configureOptions(OptionsResolver $resolver): void public function configureOptions(OptionsResolver $resolver)
{ {
$resolver->setDefaults( $resolver->setDefaults(
[ [
@@ -36,7 +36,7 @@ class TranslatableActivityReasonCategoryType extends AbstractType
); );
} }
public function getParent(): ?string public function getParent()
{ {
return EntityType::class; return EntityType::class;
} }

View File

@@ -22,7 +22,7 @@ class TranslatableActivityType extends AbstractType
{ {
public function __construct(protected TranslatableStringHelperInterface $translatableStringHelper, protected ActivityTypeRepositoryInterface $activityTypeRepository) {} public function __construct(protected TranslatableStringHelperInterface $translatableStringHelper, protected ActivityTypeRepositoryInterface $activityTypeRepository) {}
public function configureOptions(OptionsResolver $resolver): void public function configureOptions(OptionsResolver $resolver)
{ {
$resolver->setDefaults( $resolver->setDefaults(
[ [
@@ -34,12 +34,12 @@ class TranslatableActivityType extends AbstractType
); );
} }
public function getBlockPrefix(): string public function getBlockPrefix()
{ {
return 'translatable_activity_type'; return 'translatable_activity_type';
} }
public function getParent(): ?string public function getParent()
{ {
return EntityType::class; return EntityType::class;
} }

View File

@@ -16,7 +16,7 @@ use Chill\ActivityBundle\Security\Authorization\ActivityVoter;
use Chill\MainBundle\Routing\LocalMenuBuilderInterface; use Chill\MainBundle\Routing\LocalMenuBuilderInterface;
use Chill\PersonBundle\Entity\AccompanyingPeriod; use Chill\PersonBundle\Entity\AccompanyingPeriod;
use Knp\Menu\MenuItem; use Knp\Menu\MenuItem;
use Symfony\Bundle\SecurityBundle\Security; use Symfony\Component\Security\Core\Security;
use Symfony\Contracts\Translation\TranslatorInterface; use Symfony\Contracts\Translation\TranslatorInterface;
/** /**
@@ -30,7 +30,7 @@ class AccompanyingCourseMenuBuilder implements LocalMenuBuilderInterface
private readonly \Doctrine\Persistence\ManagerRegistry $managerRegistry, private readonly \Doctrine\Persistence\ManagerRegistry $managerRegistry,
) {} ) {}
public function buildMenu($menuId, MenuItem $menu, array $parameters): void public function buildMenu($menuId, MenuItem $menu, array $parameters)
{ {
$period = $parameters['accompanyingCourse']; $period = $parameters['accompanyingCourse'];

View File

@@ -14,7 +14,7 @@ namespace Chill\ActivityBundle\Menu;
use Chill\ActivityBundle\Security\Authorization\ActivityVoter; use Chill\ActivityBundle\Security\Authorization\ActivityVoter;
use Chill\MainBundle\Routing\LocalMenuBuilderInterface; use Chill\MainBundle\Routing\LocalMenuBuilderInterface;
use Knp\Menu\MenuItem; use Knp\Menu\MenuItem;
use Symfony\Bundle\SecurityBundle\Security; use Symfony\Component\Security\Core\Security;
final readonly class AccompanyingCourseQuickMenuBuilder implements LocalMenuBuilderInterface final readonly class AccompanyingCourseQuickMenuBuilder implements LocalMenuBuilderInterface
{ {
@@ -25,7 +25,7 @@ final readonly class AccompanyingCourseQuickMenuBuilder implements LocalMenuBuil
return ['accompanying_course_quick_menu']; return ['accompanying_course_quick_menu'];
} }
public function buildMenu($menuId, MenuItem $menu, array $parameters): void public function buildMenu($menuId, MenuItem $menu, array $parameters)
{ {
/** @var \Chill\PersonBundle\Entity\AccompanyingPeriod $accompanyingCourse */ /** @var \Chill\PersonBundle\Entity\AccompanyingPeriod $accompanyingCourse */
$accompanyingCourse = $parameters['accompanying-course']; $accompanyingCourse = $parameters['accompanying-course'];

View File

@@ -13,7 +13,7 @@ namespace Chill\ActivityBundle\Menu;
use Chill\MainBundle\Routing\LocalMenuBuilderInterface; use Chill\MainBundle\Routing\LocalMenuBuilderInterface;
use Knp\Menu\MenuItem; use Knp\Menu\MenuItem;
use Symfony\Bundle\SecurityBundle\Security; use Symfony\Component\Security\Core\Security;
/** /**
* @implements LocalMenuBuilderInterface<array> * @implements LocalMenuBuilderInterface<array>
@@ -22,7 +22,7 @@ final readonly class AdminMenuBuilder implements LocalMenuBuilderInterface
{ {
public function __construct(private Security $security) {} public function __construct(private Security $security) {}
public function buildMenu($menuId, MenuItem $menu, array $parameters): void public function buildMenu($menuId, MenuItem $menu, array $parameters)
{ {
if (!$this->security->isGranted('ROLE_ADMIN')) { if (!$this->security->isGranted('ROLE_ADMIN')) {
return; return;

View File

@@ -30,7 +30,7 @@ final readonly class PersonMenuBuilder implements LocalMenuBuilderInterface
private TranslatorInterface $translator, private TranslatorInterface $translator,
) {} ) {}
public function buildMenu($menuId, MenuItem $menu, array $parameters): void public function buildMenu($menuId, MenuItem $menu, array $parameters)
{ {
/** @var Person $person */ /** @var Person $person */
$person = $parameters['person']; $person = $parameters['person'];

View File

@@ -33,7 +33,7 @@ use Doctrine\ORM\Query\Expr\Join;
use Doctrine\ORM\Query\ResultSetMappingBuilder; use Doctrine\ORM\Query\ResultSetMappingBuilder;
use Doctrine\ORM\QueryBuilder; use Doctrine\ORM\QueryBuilder;
use Symfony\Component\HttpFoundation\RequestStack; use Symfony\Component\HttpFoundation\RequestStack;
use Symfony\Bundle\SecurityBundle\Security; use Symfony\Component\Security\Core\Security;
final readonly class ActivityACLAwareRepository implements ActivityACLAwareRepositoryInterface final readonly class ActivityACLAwareRepository implements ActivityACLAwareRepositoryInterface
{ {

View File

@@ -24,7 +24,7 @@ use Chill\MainBundle\Security\Resolver\CenterResolverManagerInterface;
use Chill\PersonBundle\Entity\Person; use Chill\PersonBundle\Entity\Person;
use Doctrine\DBAL\Types\Types; use Doctrine\DBAL\Types\Types;
use Doctrine\ORM\EntityManagerInterface; use Doctrine\ORM\EntityManagerInterface;
use Symfony\Bundle\SecurityBundle\Security; use Symfony\Component\Security\Core\Security;
final readonly class ActivityDocumentACLAwareRepository implements ActivityDocumentACLAwareRepositoryInterface final readonly class ActivityDocumentACLAwareRepository implements ActivityDocumentACLAwareRepositoryInterface
{ {

View File

@@ -49,17 +49,17 @@ class ActivityStatsVoter extends AbstractChillVoter implements ProvideRoleHierar
return $this->getAttributes(); return $this->getAttributes();
} }
protected function supports(string $attribute, mixed $subject): bool protected function supports($attribute, $subject)
{ {
return $this->helper->supports($attribute, $subject); return $this->helper->supports($attribute, $subject);
} }
protected function voteOnAttribute(string $attribute, mixed $subject, TokenInterface $token): bool protected function voteOnAttribute($attribute, $subject, TokenInterface $token)
{ {
return $this->helper->voteOnAttribute($attribute, $subject, $token); return $this->helper->voteOnAttribute($attribute, $subject, $token);
} }
private function getAttributes(): array private function getAttributes()
{ {
return [self::STATS, self::LISTS]; return [self::STATS, self::LISTS];
} }

View File

@@ -17,7 +17,7 @@ use Chill\DocStoreBundle\Repository\AssociatedEntityToStoredObjectInterface;
use Chill\DocStoreBundle\Security\Authorization\StoredObjectRoleEnum; use Chill\DocStoreBundle\Security\Authorization\StoredObjectRoleEnum;
use Chill\DocStoreBundle\Security\Authorization\StoredObjectVoter\AbstractStoredObjectVoter; use Chill\DocStoreBundle\Security\Authorization\StoredObjectVoter\AbstractStoredObjectVoter;
use Chill\MainBundle\Workflow\Helper\WorkflowRelatedEntityPermissionHelper; use Chill\MainBundle\Workflow\Helper\WorkflowRelatedEntityPermissionHelper;
use Symfony\Bundle\SecurityBundle\Security; use Symfony\Component\Security\Core\Security;
class ActivityStoredObjectVoter extends AbstractStoredObjectVoter class ActivityStoredObjectVoter extends AbstractStoredObjectVoter
{ {

View File

@@ -22,7 +22,7 @@ use Chill\PersonBundle\Entity\Person;
use Chill\PersonBundle\Security\Authorization\AccompanyingPeriodVoter; use Chill\PersonBundle\Security\Authorization\AccompanyingPeriodVoter;
use Chill\PersonBundle\Security\Authorization\PersonVoter; use Chill\PersonBundle\Security\Authorization\PersonVoter;
use Symfony\Component\Security\Core\Authentication\Token\TokenInterface; use Symfony\Component\Security\Core\Authentication\Token\TokenInterface;
use Symfony\Bundle\SecurityBundle\Security; use Symfony\Component\Security\Core\Security;
class ActivityVoter extends AbstractChillVoter implements ProvideRoleHierarchyInterface class ActivityVoter extends AbstractChillVoter implements ProvideRoleHierarchyInterface
{ {

View File

@@ -26,7 +26,7 @@ use Chill\PersonBundle\Entity\Person;
use Chill\PersonBundle\Security\Authorization\AccompanyingPeriodVoter; use Chill\PersonBundle\Security\Authorization\AccompanyingPeriodVoter;
use Doctrine\DBAL\Types\Types; use Doctrine\DBAL\Types\Types;
use Doctrine\ORM\EntityManagerInterface; use Doctrine\ORM\EntityManagerInterface;
use Symfony\Bundle\SecurityBundle\Security; use Symfony\Component\Security\Core\Security;
final readonly class AccompanyingPeriodActivityGenericDocProvider implements GenericDocForAccompanyingPeriodProviderInterface, GenericDocForPersonProviderInterface final readonly class AccompanyingPeriodActivityGenericDocProvider implements GenericDocForAccompanyingPeriodProviderInterface, GenericDocForPersonProviderInterface
{ {

View File

@@ -16,7 +16,7 @@ use Chill\ActivityBundle\Security\Authorization\ActivityVoter;
use Chill\DocStoreBundle\GenericDoc\FetchQueryInterface; use Chill\DocStoreBundle\GenericDoc\FetchQueryInterface;
use Chill\DocStoreBundle\GenericDoc\GenericDocForPersonProviderInterface; use Chill\DocStoreBundle\GenericDoc\GenericDocForPersonProviderInterface;
use Chill\PersonBundle\Entity\Person; use Chill\PersonBundle\Entity\Person;
use Symfony\Bundle\SecurityBundle\Security; use Symfony\Component\Security\Core\Security;
final readonly class PersonActivityGenericDocProvider implements GenericDocForPersonProviderInterface final readonly class PersonActivityGenericDocProvider implements GenericDocForPersonProviderInterface
{ {

View File

@@ -22,8 +22,10 @@ trait PrepareActivityTrait
{ {
/** /**
* Return an activity with a scope and a person inside. * Return an activity with a scope and a person inside.
*
* @return Activity
*/ */
public function prepareActivity(Scope $scope, Person $person): Activity public function prepareActivity(Scope $scope, Person $person)
{ {
return (new Activity()) return (new Activity())
->setScope($scope) ->setScope($scope)

View File

@@ -25,7 +25,7 @@ final class ActivityControllerTest extends WebTestCase
/** /**
* @dataProvider getSecuredPagesUnauthenticated * @dataProvider getSecuredPagesUnauthenticated
*/ */
public function testAccessIsDeniedForUnauthenticated(mixed $url): void public function testAccessIsDeniedForUnauthenticated(mixed $url)
{ {
$client = $this->createClient(); $client = $this->createClient();
@@ -61,7 +61,7 @@ final class ActivityControllerTest extends WebTestCase
* @param type $client * @param type $client
* @param type $url * @param type $url
*/ */
public function testAccessIsDeniedForUnauthorized($client, $url): void public function testAccessIsDeniedForUnauthorized($client, $url)
{ {
$client->request('GET', $url); $client->request('GET', $url);
@@ -101,7 +101,7 @@ final class ActivityControllerTest extends WebTestCase
]; ];
} }
public function testCompleteScenario(): void public function testCompleteScenario()
{ {
// Create a new client to browse the application // Create a new client to browse the application
$client = $this->getAuthenticatedClient(); $client = $this->getAuthenticatedClient();
@@ -199,7 +199,7 @@ final class ActivityControllerTest extends WebTestCase
* *
* @return \Chill\MainBundle\Entity\User a fake user within a group without activity * @return \Chill\MainBundle\Entity\User a fake user within a group without activity
*/ */
private function createFakeUser(): \Chill\MainBundle\Entity\User private function createFakeUser()
{ {
$container = self::$kernel->getContainer(); $container = self::$kernel->getContainer();
$em = $container->get('doctrine.orm.entity_manager'); $em = $container->get('doctrine.orm.entity_manager');
@@ -259,7 +259,7 @@ final class ActivityControllerTest extends WebTestCase
/** /**
* @return \Symfony\Component\BrowserKit\AbstractBrowser * @return \Symfony\Component\BrowserKit\AbstractBrowser
*/ */
private function getAuthenticatedClient(mixed $username = 'center a_social'): \Symfony\Bundle\FrameworkBundle\KernelBrowser private function getAuthenticatedClient(mixed $username = 'center a_social')
{ {
return self::createClient([], [ return self::createClient([], [
'PHP_AUTH_USER' => $username, 'PHP_AUTH_USER' => $username,

View File

@@ -16,6 +16,7 @@ use Chill\PersonBundle\AccompanyingPeriod\SocialIssueConsistency\AccompanyingPer
use Chill\PersonBundle\Entity\AccompanyingPeriod; use Chill\PersonBundle\Entity\AccompanyingPeriod;
use Chill\PersonBundle\Entity\SocialWork\SocialAction; use Chill\PersonBundle\Entity\SocialWork\SocialAction;
use Chill\PersonBundle\Entity\SocialWork\SocialIssue; use Chill\PersonBundle\Entity\SocialWork\SocialIssue;
use Doctrine\ORM\Event\LifecycleEventArgs;
use PHPUnit\Framework\TestCase; use PHPUnit\Framework\TestCase;
use Prophecy\PhpUnit\ProphecyTrait; use Prophecy\PhpUnit\ProphecyTrait;
@@ -69,32 +70,33 @@ final class ActivityTest extends TestCase
public function testHierarchySocialIssues(): void public function testHierarchySocialIssues(): void
{ {
$listener = new AccompanyingPeriodSocialIssueConsistencyEntityListener(); $listener = new AccompanyingPeriodSocialIssueConsistencyEntityListener();
$event = $this->prophesize(LifecycleEventArgs::class)->reveal();
$parent = new SocialIssue(); $parent = new SocialIssue();
$child = new SocialIssue(); $child = new SocialIssue();
$child->setParent($parent); $parent->addChild($child);
$grandChild = new SocialIssue(); $grandChild = new SocialIssue();
$grandChild->setParent($child); $child->addChild($grandChild);
$activity = new Activity(); $activity = new Activity();
$activity->setAccompanyingPeriod(new AccompanyingPeriod()); $activity->setAccompanyingPeriod(new AccompanyingPeriod());
$activity->addSocialIssue($parent); $activity->addSocialIssue($parent);
$listener->preUpdate($activity); $listener->preUpdate($activity, $event);
$this->assertCount(1, $activity->getSocialIssues()); $this->assertCount(1, $activity->getSocialIssues());
$this->assertContains($parent, $activity->getSocialIssues()); $this->assertContains($parent, $activity->getSocialIssues());
$activity->addSocialIssue($grandChild); $activity->addSocialIssue($grandChild);
$listener->preUpdate($activity); $listener->preUpdate($activity, $event);
$this->assertCount(1, $activity->getSocialIssues()); $this->assertCount(1, $activity->getSocialIssues());
$this->assertContains($grandChild, $activity->getSocialIssues()); $this->assertContains($grandChild, $activity->getSocialIssues());
$this->assertNotContains($parent, $activity->getSocialIssues()); $this->assertNotContains($parent, $activity->getSocialIssues());
$activity->addSocialIssue($child); $activity->addSocialIssue($child);
$listener->preUpdate($activity); $listener->preUpdate($activity, $event);
$this->assertCount(1, $activity->getSocialIssues()); $this->assertCount(1, $activity->getSocialIssues());
$this->assertContains($grandChild, $activity->getSocialIssues()); $this->assertContains($grandChild, $activity->getSocialIssues());
@@ -102,7 +104,7 @@ final class ActivityTest extends TestCase
$this->assertNotContains($child, $activity->getSocialIssues()); $this->assertNotContains($child, $activity->getSocialIssues());
$activity->addSocialIssue($another = new SocialIssue()); $activity->addSocialIssue($another = new SocialIssue());
$listener->preUpdate($activity); $listener->preUpdate($activity, $event);
$this->assertCount(2, $activity->getSocialIssues()); $this->assertCount(2, $activity->getSocialIssues());
$this->assertContains($grandChild, $activity->getSocialIssues()); $this->assertContains($grandChild, $activity->getSocialIssues());

View File

@@ -41,7 +41,7 @@ class ByActivityTypeAggregatorTest extends AbstractAggregatorTest
$this->translatableStringHelper = self::getContainer()->get(TranslatableStringHelperInterface::class); $this->translatableStringHelper = self::getContainer()->get(TranslatableStringHelperInterface::class);
} }
public function getAggregator(): ByActivityTypeAggregator public function getAggregator()
{ {
return new ByActivityTypeAggregator( return new ByActivityTypeAggregator(
$this->rollingDateConverter, $this->rollingDateConverter,

View File

@@ -32,7 +32,7 @@ final class BySocialActionAggregatorTest extends AbstractAggregatorTest
$this->aggregator = self::getContainer()->get('chill.activity.export.bysocialaction_aggregator'); $this->aggregator = self::getContainer()->get('chill.activity.export.bysocialaction_aggregator');
} }
public function getAggregator(): BySocialActionAggregator public function getAggregator()
{ {
return $this->aggregator; return $this->aggregator;
} }

View File

@@ -32,7 +32,7 @@ final class BySocialIssueAggregatorTest extends AbstractAggregatorTest
$this->aggregator = self::getContainer()->get('chill.activity.export.bysocialissue_aggregator'); $this->aggregator = self::getContainer()->get('chill.activity.export.bysocialissue_aggregator');
} }
public function getAggregator(): BySocialIssueAggregator public function getAggregator()
{ {
return $this->aggregator; return $this->aggregator;
} }

View File

@@ -35,7 +35,7 @@ class ActivityPresenceAggregatorTest extends AbstractAggregatorTest
$this->activityPresenceRepository = self::getContainer()->get(ActivityPresenceRepositoryInterface::class); $this->activityPresenceRepository = self::getContainer()->get(ActivityPresenceRepositoryInterface::class);
} }
public function getAggregator(): ActivityPresenceAggregator public function getAggregator()
{ {
return new ActivityPresenceAggregator($this->activityPresenceRepository, $this->translatableStringHelper); return new ActivityPresenceAggregator($this->activityPresenceRepository, $this->translatableStringHelper);
} }

View File

@@ -44,7 +44,7 @@ final class ActivityReasonAggregatorTest extends AbstractAggregatorTest
->push($request->reveal());*/ ->push($request->reveal());*/
} }
public function getAggregator(): ActivityReasonAggregator public function getAggregator()
{ {
return $this->aggregator; return $this->aggregator;
} }

View File

@@ -45,7 +45,7 @@ final class ActivityTypeAggregatorTest extends AbstractAggregatorTest
->push($request->reveal()); ->push($request->reveal());
} }
public function getAggregator(): ActivityTypeAggregator public function getAggregator()
{ {
return $this->aggregator; return $this->aggregator;
} }

View File

@@ -45,7 +45,7 @@ final class ActivityUserAggregatorTest extends AbstractAggregatorTest
->push($request->reveal()); ->push($request->reveal());
} }
public function getAggregator(): ActivityUserAggregator public function getAggregator()
{ {
return $this->aggregator; return $this->aggregator;
} }

View File

@@ -32,7 +32,7 @@ final class ByThirdpartyAggregatorTest extends AbstractAggregatorTest
$this->aggregator = self::getContainer()->get(ByThirdpartyAggregator::class); $this->aggregator = self::getContainer()->get(ByThirdpartyAggregator::class);
} }
public function getAggregator(): ByThirdpartyAggregator public function getAggregator()
{ {
return $this->aggregator; return $this->aggregator;
} }

View File

@@ -32,7 +32,7 @@ final class ByUserAggregatorTest extends AbstractAggregatorTest
$this->aggregator = self::getContainer()->get(ByCreatorAggregator::class); $this->aggregator = self::getContainer()->get(ByCreatorAggregator::class);
} }
public function getAggregator(): ByCreatorAggregator public function getAggregator()
{ {
return $this->aggregator; return $this->aggregator;
} }

View File

@@ -32,7 +32,7 @@ final class CreatorJobAggregatorTest extends AbstractAggregatorTest
$this->aggregator = self::getContainer()->get(CreatorJobAggregator::class); $this->aggregator = self::getContainer()->get(CreatorJobAggregator::class);
} }
public function getAggregator(): CreatorJobAggregator public function getAggregator()
{ {
return $this->aggregator; return $this->aggregator;
} }

View File

@@ -32,7 +32,7 @@ final class CreatorScopeAggregatorTest extends AbstractAggregatorTest
$this->aggregator = self::getContainer()->get(CreatorScopeAggregator::class); $this->aggregator = self::getContainer()->get(CreatorScopeAggregator::class);
} }
public function getAggregator(): CreatorScopeAggregator public function getAggregator()
{ {
return $this->aggregator; return $this->aggregator;
} }

View File

@@ -32,7 +32,7 @@ final class DateAggregatorTest extends AbstractAggregatorTest
$this->aggregator = self::getContainer()->get(DateAggregator::class); $this->aggregator = self::getContainer()->get(DateAggregator::class);
} }
public function getAggregator(): DateAggregator public function getAggregator()
{ {
return $this->aggregator; return $this->aggregator;
} }

View File

@@ -32,7 +32,7 @@ final class LocationTypeAggregatorTest extends AbstractAggregatorTest
$this->aggregator = self::getContainer()->get(LocationTypeAggregator::class); $this->aggregator = self::getContainer()->get(LocationTypeAggregator::class);
} }
public function getAggregator(): LocationTypeAggregator public function getAggregator()
{ {
return $this->aggregator; return $this->aggregator;
} }

View File

@@ -32,7 +32,7 @@ class PersonAggregatorTest extends AbstractAggregatorTest
$this->labelPersonHelper = self::getContainer()->get(LabelPersonHelper::class); $this->labelPersonHelper = self::getContainer()->get(LabelPersonHelper::class);
} }
public function getAggregator(): PersonAggregator public function getAggregator()
{ {
return new PersonAggregator($this->labelPersonHelper); return new PersonAggregator($this->labelPersonHelper);
} }

View File

@@ -33,7 +33,7 @@ class PersonsAggregatorTest extends AbstractAggregatorTest
$this->labelPersonHelper = self::getContainer()->get(LabelPersonHelper::class); $this->labelPersonHelper = self::getContainer()->get(LabelPersonHelper::class);
} }
public function getAggregator(): PersonsAggregator public function getAggregator()
{ {
return new PersonsAggregator($this->labelPersonHelper); return new PersonsAggregator($this->labelPersonHelper);
} }

View File

@@ -36,7 +36,7 @@ final class ActivityTypeFilterTest extends AbstractFilterTest
$this->filter = self::getContainer()->get(\Chill\ActivityBundle\Export\Filter\ACPFilters\ActivityTypeFilter::class); $this->filter = self::getContainer()->get(\Chill\ActivityBundle\Export\Filter\ACPFilters\ActivityTypeFilter::class);
} }
public function getFilter(): \Chill\ActivityBundle\Export\Filter\ACPFilters\ActivityTypeFilter public function getFilter()
{ {
return $this->filter; return $this->filter;
} }

View File

@@ -33,7 +33,7 @@ final class ByCreatorFilterTest extends AbstractFilterTest
$this->filter = self::getContainer()->get(ByCreatorFilter::class); $this->filter = self::getContainer()->get(ByCreatorFilter::class);
} }
public function getFilter(): ByCreatorFilter public function getFilter()
{ {
return $this->filter; return $this->filter;
} }

View File

@@ -33,7 +33,7 @@ final class BySocialActionFilterTest extends AbstractFilterTest
$this->filter = self::getContainer()->get(\Chill\ActivityBundle\Export\Filter\ACPFilters\BySocialActionFilter::class); $this->filter = self::getContainer()->get(\Chill\ActivityBundle\Export\Filter\ACPFilters\BySocialActionFilter::class);
} }
public function getFilter(): \Chill\ActivityBundle\Export\Filter\ACPFilters\BySocialActionFilter public function getFilter()
{ {
return $this->filter; return $this->filter;
} }

View File

@@ -34,7 +34,7 @@ final class BySocialIssueFilterTest extends AbstractFilterTest
$this->filter = self::getContainer()->get(BySocialIssueFilter::class); $this->filter = self::getContainer()->get(BySocialIssueFilter::class);
} }
public function getFilter(): BySocialIssueFilter public function getFilter()
{ {
return $this->filter; return $this->filter;
} }

Some files were not shown because too many files have changed in this diff Show More