Compare commits

..

60 Commits

Author SHA1 Message Date
34801dcd5f master merged into branch 2022-07-18 15:04:31 +02:00
cc2bee8188 php cs style fixes, stan ok! 2022-07-18 14:56:44 +02:00
99154eaa99 changelog updated 2022-07-18 14:42:41 +02:00
b28677fac9 delete quitter et repositionner buttons from enfant hors menage 2022-07-18 14:39:24 +02:00
fb0135a0af update changelog 2022-07-18 12:01:07 +02:00
88961e3e7e allow the deletion of a relationship 2022-07-18 12:00:09 +02:00
85796c2271 CS 2022-07-12 18:16:04 +02:00
83ee3c7cfd fixed: add required type-hinting to AccompanyingPeriodComment, necessary
for docgen rendering
2022-07-12 18:15:16 +02:00
8809abedf6 fixed: rendering of course in list of courses by household 2022-07-12 18:14:25 +02:00
5896a77ae9 Fixed: use CenterResolver where cases when center is resolved differently 2022-07-12 11:10:18 +02:00
11d1b26efc fixed: unable to create a course (due to method change in activity entity) 2022-07-12 10:44:40 +02:00
5f6c11bde9 Feature: show comment in #docgen generation for accompanying periods 2022-07-11 19:56:59 +02:00
b3da9611ce Fixed: do not show postal code created by users in the list of postal codes 2022-07-11 19:37:32 +02:00
ba8a80a202 Fixed: test for userjob associated to course in Regulation list 2022-07-11 19:32:19 +02:00
6998043159 Fixed: do not allow to create activities when no rights to do it
The ACTIVITY_FULL role does not give anymore the roles
CHILL_ACTIVITY_CREATE_PERSON and CHILL_ACTIVITY_CREATE_ACCOMPANYING_COURSE.

Tags: #BC
2022-07-11 19:31:24 +02:00
ce17c15d41 fixed: ACL in activity creations and edition 2022-07-11 18:24:48 +02:00
93560a62ef Feature: an activity has the same scope as an accompanying period, if it exists 2022-07-11 17:36:59 +02:00
3785e5096e Merge branch 'master' into fix_activity_rights 2022-07-11 17:17:35 +02:00
3748eb99c6 Fixed: add an exclude constraint to ensure on db side that there is only one step waiting for a transition 2022-07-11 17:10:40 +02:00
c69af351cc fixed: do not show disabled jobs in list of jobs from the api 2022-07-11 16:20:48 +02:00
692c2bdac0 fixed: do not show disabled users in list of users from the api 2022-07-11 16:11:45 +02:00
6bcc28b4bb feature: hide course when the period is not active for the user, in search results and list of periods for a person 2022-07-11 15:57:38 +02:00
a79a2b6ee9 fixed: warning message "usagers du parcours" does show only for current
members for a course
2022-07-11 15:26:04 +02:00
09b2c9a14e fixed: do not show same person twice if persons are members simultaneously 2022-07-11 15:11:35 +02:00
4ef48216ed fixed: do not allow to create a course or see a houshold from the search result, if the user does not have any rights to do it 2022-07-11 13:54:12 +02:00
16fed67dd0 fixed: do not allow to edit a course through the "warning" button on the course's index page 2022-07-11 13:45:52 +02:00
87a9d48bdf feature: allow to not check mainPerson, person1 or person2 when generating a document 2022-07-11 13:39:07 +02:00
f3ca01fd88 cs: fix 2022-07-11 13:34:10 +02:00
5962d3f233 fixed: query for index in PersonDocumentACLAwareRepository 2022-07-11 12:57:21 +02:00
ab08dab88a fixed: voter and permissions in accompanying course document 2022-07-11 12:57:08 +02:00
3bb8b713d1 fixed: migration of databse with address on same day fails 2022-07-11 03:32:43 +02:00
94c258e914 fixed: narrow search on postal code with an 'AND' clause instead of 'OR' clause 2022-07-10 22:00:04 +02:00
1d8f25e2c8 use the date parameter in deprecated method getLastAddress 2022-07-08 15:04:06 +02:00
b4b67c6f0d Merge branch 'event_bundle_sf4' into 'master'
Event bundle sf4

See merge request Chill-Projet/chill-bundles!439
2022-07-08 10:21:31 +00:00
nobohan
9978e76a87 fix activity rights (WIP) 2022-07-07 15:25:17 +02:00
nobohan
36e35f2e8f [event] refactor admin for event bundle 2022-07-06 13:36:20 +02:00
nobohan
389f014d36 [event] fix deprecation (typing) 2022-07-05 10:18:07 +02:00
135b385c11 fix rust indent 2022-07-04 17:29:45 +02:00
nobohan
3cf8609e8f [event] fix deprecation (type missing) 2022-07-04 17:20:03 +02:00
c82e128c5c Merge branch 'master' of gitlab.com:Chill-Projet/chill-bundles 2022-07-04 16:32:20 +02:00
3ddab4f6e2 documente un souci avec docker lors de l'installation de chill 2022-07-04 16:32:12 +02:00
nobohan
31e1bfdf80 export: cast role as string in PickCenterType 2022-07-04 16:19:03 +02:00
nobohan
c76f2a81c9 [main] cast uniqid arg to string in ExportController 2022-06-30 07:37:27 +02:00
nobohan
f48e197e0b [main] fix deprecations for Export/PickCenterType 2022-06-30 07:29:33 +02:00
nobohan
f70e3b7997 quick fix: use Scope class instead of classname 2022-06-29 15:05:59 +02:00
66baf0391c Revert "only prefill agents traitants of action if parcours has a referrer, otherwise null"
This reverts commit 0943366d39.
2022-06-28 00:01:31 +02:00
4f81bffa67 add a test for relocking an existing lock 2022-06-27 23:57:42 +02:00
5432ce2b0f some fixes with wopi 2022-06-27 23:51:07 +02:00
03bc94178f re-implements document lock manager for wopi 2022-06-27 22:44:10 +02:00
bf536aab38 Merge branch 'translations_dutch' into 'master'
Dutch translations

See merge request Chill-Projet/chill-bundles!403
2022-06-24 15:59:10 +00:00
df593c7c7f Dutch translations 2022-06-24 15:59:10 +00:00
nobohan
07f4aaa590 quick fix: address: only add coordinates to selected postcode if coordinates exist 2022-06-23 15:46:17 +02:00
10095343ec handle lastUpdateTime for Wopi implementation
* get the last updated time from the stored object's storage
* improve perf on loading content from stored object's storage: keep the
response in cache
2022-06-20 21:22:02 +02:00
1742dd4951 add return path after changing location, and select2 on picking user location 2022-06-17 13:34:05 +02:00
832da83b27 fix tests for person controller update 2022-06-16 21:35:05 +02:00
0cfad13720 fix normalization for null accompanying period docgen 2022-06-16 21:30:46 +02:00
dfb583fa8b fix cs 2022-06-16 15:37:59 +02:00
da9eba2618 add regulation list and basic regulation list query 2022-06-16 15:37:51 +02:00
8982697a73 add missing translation message 2022-06-15 17:46:28 +02:00
1bd00c3f4c fix editing thirdparty without date 2022-06-15 17:46:28 +02:00
114 changed files with 3600 additions and 1258 deletions

View File

@@ -16,7 +16,8 @@ and this project adheres to
* [person-thirdparty]: fix quick-add of names that consist of multiple parts (eg. De Vlieger) within onthefly modal person/thirdparty * [person-thirdparty]: fix quick-add of names that consist of multiple parts (eg. De Vlieger) within onthefly modal person/thirdparty
* [search]: Order of birthdate fields changed in advanced search to avoid confusion. * [search]: Order of birthdate fields changed in advanced search to avoid confusion.
* [workflow]: Constraint added to workflow (https://gitlab.com/champs-libres/departement-de-la-vendee/accent-suivi-developpement/-/issues/675) * [workflow]: Constraint added to workflow (https://gitlab.com/champs-libres/departement-de-la-vendee/accent-suivi-developpement/-/issues/675)
* [action]: Agents traitants should be prefilled with referrer of the parcours or left empty if there is no referrer (https://gitlab.com/champs-libres/departement-de-la-vendee/accent-suivi-developpement/-/issues/696) * [filiation]: Allow the deletion of a relationship in filiations (https://gitlab.com/champs-libres/departement-de-la-vendee/chill/-/issues/608)
* [household]: Reposition and cut button for enfant hors menage have been deleted (https://gitlab.com/champs-libres/departement-de-la-vendee/chill/-/issues/620)
## Test releases ## Test releases
@@ -41,7 +42,6 @@ and this project adheres to
* [activity] activity admin: translations + remove label field for comment on admin activity type (https://gitlab.com/champs-libres/departement-de-la-vendee/chill/-/issues/587) * [activity] activity admin: translations + remove label field for comment on admin activity type (https://gitlab.com/champs-libres/departement-de-la-vendee/chill/-/issues/587)
* [main] admin user_job: improvements (https://gitlab.com/champs-libres/departement-de-la-vendee/chill/-/issues/588) * [main] admin user_job: improvements (https://gitlab.com/champs-libres/departement-de-la-vendee/chill/-/issues/588)
* [address] can add extra address info even if noAddress (https://gitlab.com/champs-libres/departement-de-la-vendee/chill/-/issues/576) * [address] can add extra address info even if noAddress (https://gitlab.com/champs-libres/departement-de-la-vendee/chill/-/issues/576)
* [search] Change order of birthdate fields in advanced search
### 2022-05-06 ### 2022-05-06

View File

@@ -10,8 +10,8 @@
"require": { "require": {
"php": "^7.4", "php": "^7.4",
"champs-libres/async-uploader-bundle": "dev-sf4#d57134aee8e504a83c902ff0cf9f8d36ac418290", "champs-libres/async-uploader-bundle": "dev-sf4#d57134aee8e504a83c902ff0cf9f8d36ac418290",
"champs-libres/wopi-bundle": "dev-master#59b468503b9413f8d588ef9e626e7675560db3d8", "champs-libres/wopi-bundle": "dev-master#6dd8e0a14e00131eb4b889ecc30270ee4a0e5224",
"champs-libres/wopi-lib": "dev-master#0e1da19bb6de820080b8651867a7e475be590060", "champs-libres/wopi-lib": "dev-master#8615f4a45a39fc2b6a98765ea835fcfd39618787",
"doctrine/doctrine-bundle": "^2.1", "doctrine/doctrine-bundle": "^2.1",
"doctrine/doctrine-migrations-bundle": "^3.0", "doctrine/doctrine-migrations-bundle": "^3.0",
"doctrine/orm": "^2.7", "doctrine/orm": "^2.7",
@@ -96,7 +96,8 @@
"autoload-dev": { "autoload-dev": {
"psr-4": { "psr-4": {
"App\\": "tests/app/src/", "App\\": "tests/app/src/",
"Chill\\DocGeneratorBundle\\Tests\\": "src/Bundle/ChillDocGeneratorBundle/tests" "Chill\\DocGeneratorBundle\\Tests\\": "src/Bundle/ChillDocGeneratorBundle/tests",
"Chill\\WopiBundle\\Tests\\": "src/Bundle/ChillDocGeneratorBundle/tests"
} }
}, },
"config": { "config": {

View File

@@ -65,6 +65,17 @@ This script will :
4. build assets 4. build assets
.. note::
In some cases it can happen that an old image (chill_base_php or chill_php) stored in the docker cache will make the script fail. To solve this problem you have to delete the image and the container, before the make init :
.. code-block:: bash
docker-compose images php
docker rmi -f chill_php:prod
docker-compose rm php
4. Start the project 4. Start the project
==================== ====================

View File

@@ -24,6 +24,7 @@ parameters:
- "/spec/" - "/spec/"
- "/var/" - "/var/"
- "/vendor/" - "/vendor/"
- "/tests/app"
# Psalm # Psalm
tasks.psalm.blocking: true tasks.psalm.blocking: true

View File

@@ -1,8 +1,7 @@
parameters: parameters:
ignoreErrors: ignoreErrors:
- -
message: message: """
"""
#^Instantiation of deprecated class Symfony\\\\Component\\\\Security\\\\Core\\\\Role\\\\Role\\: #^Instantiation of deprecated class Symfony\\\\Component\\\\Security\\\\Core\\\\Role\\\\Role\\:
since Symfony 4\\.3, to be removed in 5\\.0\\. Use strings as roles instead\\.$# since Symfony 4\\.3, to be removed in 5\\.0\\. Use strings as roles instead\\.$#
""" """
@@ -25,8 +24,7 @@ parameters:
path: src/Bundle/ChillActivityBundle/Entity/ActivityReasonCategory.php path: src/Bundle/ChillActivityBundle/Entity/ActivityReasonCategory.php
- -
message: message: """
"""
#^Instantiation of deprecated class Symfony\\\\Component\\\\Security\\\\Core\\\\Role\\\\Role\\: #^Instantiation of deprecated class Symfony\\\\Component\\\\Security\\\\Core\\\\Role\\\\Role\\:
since Symfony 4\\.3, to be removed in 5\\.0\\. Use strings as roles instead\\.$# since Symfony 4\\.3, to be removed in 5\\.0\\. Use strings as roles instead\\.$#
""" """
@@ -34,8 +32,7 @@ parameters:
path: src/Bundle/ChillActivityBundle/Export/Aggregator/ActivityReasonAggregator.php path: src/Bundle/ChillActivityBundle/Export/Aggregator/ActivityReasonAggregator.php
- -
message: message: """
"""
#^Return type of method Chill\\\\ActivityBundle\\\\Export\\\\Aggregator\\\\ActivityReasonAggregator\\:\\:addRole\\(\\) has typehint with deprecated class Symfony\\\\Component\\\\Security\\\\Core\\\\Role\\\\Role\\: #^Return type of method Chill\\\\ActivityBundle\\\\Export\\\\Aggregator\\\\ActivityReasonAggregator\\:\\:addRole\\(\\) has typehint with deprecated class Symfony\\\\Component\\\\Security\\\\Core\\\\Role\\\\Role\\:
since Symfony 4\\.3, to be removed in 5\\.0\\. Use strings as roles instead\\.$# since Symfony 4\\.3, to be removed in 5\\.0\\. Use strings as roles instead\\.$#
""" """
@@ -43,8 +40,7 @@ parameters:
path: src/Bundle/ChillActivityBundle/Export/Aggregator/ActivityReasonAggregator.php path: src/Bundle/ChillActivityBundle/Export/Aggregator/ActivityReasonAggregator.php
- -
message: message: """
"""
#^Instantiation of deprecated class Symfony\\\\Component\\\\Security\\\\Core\\\\Role\\\\Role\\: #^Instantiation of deprecated class Symfony\\\\Component\\\\Security\\\\Core\\\\Role\\\\Role\\:
since Symfony 4\\.3, to be removed in 5\\.0\\. Use strings as roles instead\\.$# since Symfony 4\\.3, to be removed in 5\\.0\\. Use strings as roles instead\\.$#
""" """
@@ -52,8 +48,7 @@ parameters:
path: src/Bundle/ChillActivityBundle/Export/Aggregator/ActivityTypeAggregator.php path: src/Bundle/ChillActivityBundle/Export/Aggregator/ActivityTypeAggregator.php
- -
message: message: """
"""
#^Return type of method Chill\\\\ActivityBundle\\\\Export\\\\Aggregator\\\\ActivityTypeAggregator\\:\\:addRole\\(\\) has typehint with deprecated class Symfony\\\\Component\\\\Security\\\\Core\\\\Role\\\\Role\\: #^Return type of method Chill\\\\ActivityBundle\\\\Export\\\\Aggregator\\\\ActivityTypeAggregator\\:\\:addRole\\(\\) has typehint with deprecated class Symfony\\\\Component\\\\Security\\\\Core\\\\Role\\\\Role\\:
since Symfony 4\\.3, to be removed in 5\\.0\\. Use strings as roles instead\\.$# since Symfony 4\\.3, to be removed in 5\\.0\\. Use strings as roles instead\\.$#
""" """
@@ -61,8 +56,7 @@ parameters:
path: src/Bundle/ChillActivityBundle/Export/Aggregator/ActivityTypeAggregator.php path: src/Bundle/ChillActivityBundle/Export/Aggregator/ActivityTypeAggregator.php
- -
message: message: """
"""
#^Instantiation of deprecated class Symfony\\\\Component\\\\Security\\\\Core\\\\Role\\\\Role\\: #^Instantiation of deprecated class Symfony\\\\Component\\\\Security\\\\Core\\\\Role\\\\Role\\:
since Symfony 4\\.3, to be removed in 5\\.0\\. Use strings as roles instead\\.$# since Symfony 4\\.3, to be removed in 5\\.0\\. Use strings as roles instead\\.$#
""" """
@@ -70,8 +64,7 @@ parameters:
path: src/Bundle/ChillActivityBundle/Export/Aggregator/ActivityUserAggregator.php path: src/Bundle/ChillActivityBundle/Export/Aggregator/ActivityUserAggregator.php
- -
message: message: """
"""
#^Return type of method Chill\\\\ActivityBundle\\\\Export\\\\Aggregator\\\\ActivityUserAggregator\\:\\:addRole\\(\\) has typehint with deprecated class Symfony\\\\Component\\\\Security\\\\Core\\\\Role\\\\Role\\: #^Return type of method Chill\\\\ActivityBundle\\\\Export\\\\Aggregator\\\\ActivityUserAggregator\\:\\:addRole\\(\\) has typehint with deprecated class Symfony\\\\Component\\\\Security\\\\Core\\\\Role\\\\Role\\:
since Symfony 4\\.3, to be removed in 5\\.0\\. Use strings as roles instead\\.$# since Symfony 4\\.3, to be removed in 5\\.0\\. Use strings as roles instead\\.$#
""" """
@@ -79,8 +72,7 @@ parameters:
path: src/Bundle/ChillActivityBundle/Export/Aggregator/ActivityUserAggregator.php path: src/Bundle/ChillActivityBundle/Export/Aggregator/ActivityUserAggregator.php
- -
message: message: """
"""
#^Instantiation of deprecated class Symfony\\\\Component\\\\Security\\\\Core\\\\Role\\\\Role\\: #^Instantiation of deprecated class Symfony\\\\Component\\\\Security\\\\Core\\\\Role\\\\Role\\:
since Symfony 4\\.3, to be removed in 5\\.0\\. Use strings as roles instead\\.$# since Symfony 4\\.3, to be removed in 5\\.0\\. Use strings as roles instead\\.$#
""" """
@@ -88,8 +80,7 @@ parameters:
path: src/Bundle/ChillActivityBundle/Export/Export/CountActivity.php path: src/Bundle/ChillActivityBundle/Export/Export/CountActivity.php
- -
message: message: """
"""
#^Return type of method Chill\\\\ActivityBundle\\\\Export\\\\Export\\\\CountActivity\\:\\:requiredRole\\(\\) has typehint with deprecated class Symfony\\\\Component\\\\Security\\\\Core\\\\Role\\\\Role\\: #^Return type of method Chill\\\\ActivityBundle\\\\Export\\\\Export\\\\CountActivity\\:\\:requiredRole\\(\\) has typehint with deprecated class Symfony\\\\Component\\\\Security\\\\Core\\\\Role\\\\Role\\:
since Symfony 4\\.3, to be removed in 5\\.0\\. Use strings as roles instead\\.$# since Symfony 4\\.3, to be removed in 5\\.0\\. Use strings as roles instead\\.$#
""" """
@@ -97,8 +88,7 @@ parameters:
path: src/Bundle/ChillActivityBundle/Export/Export/CountActivity.php path: src/Bundle/ChillActivityBundle/Export/Export/CountActivity.php
- -
message: message: """
"""
#^Instantiation of deprecated class Symfony\\\\Component\\\\Security\\\\Core\\\\Role\\\\Role\\: #^Instantiation of deprecated class Symfony\\\\Component\\\\Security\\\\Core\\\\Role\\\\Role\\:
since Symfony 4\\.3, to be removed in 5\\.0\\. Use strings as roles instead\\.$# since Symfony 4\\.3, to be removed in 5\\.0\\. Use strings as roles instead\\.$#
""" """
@@ -106,8 +96,7 @@ parameters:
path: src/Bundle/ChillActivityBundle/Export/Export/ListActivity.php path: src/Bundle/ChillActivityBundle/Export/Export/ListActivity.php
- -
message: message: """
"""
#^Return type of method Chill\\\\ActivityBundle\\\\Export\\\\Export\\\\ListActivity\\:\\:requiredRole\\(\\) has typehint with deprecated class Symfony\\\\Component\\\\Security\\\\Core\\\\Role\\\\Role\\: #^Return type of method Chill\\\\ActivityBundle\\\\Export\\\\Export\\\\ListActivity\\:\\:requiredRole\\(\\) has typehint with deprecated class Symfony\\\\Component\\\\Security\\\\Core\\\\Role\\\\Role\\:
since Symfony 4\\.3, to be removed in 5\\.0\\. Use strings as roles instead\\.$# since Symfony 4\\.3, to be removed in 5\\.0\\. Use strings as roles instead\\.$#
""" """
@@ -115,8 +104,7 @@ parameters:
path: src/Bundle/ChillActivityBundle/Export/Export/ListActivity.php path: src/Bundle/ChillActivityBundle/Export/Export/ListActivity.php
- -
message: message: """
"""
#^Instantiation of deprecated class Symfony\\\\Component\\\\Security\\\\Core\\\\Role\\\\Role\\: #^Instantiation of deprecated class Symfony\\\\Component\\\\Security\\\\Core\\\\Role\\\\Role\\:
since Symfony 4\\.3, to be removed in 5\\.0\\. Use strings as roles instead\\.$# since Symfony 4\\.3, to be removed in 5\\.0\\. Use strings as roles instead\\.$#
""" """
@@ -124,8 +112,7 @@ parameters:
path: src/Bundle/ChillActivityBundle/Export/Export/StatActivityDuration.php path: src/Bundle/ChillActivityBundle/Export/Export/StatActivityDuration.php
- -
message: message: """
"""
#^Return type of method Chill\\\\ActivityBundle\\\\Export\\\\Export\\\\StatActivityDuration\\:\\:requiredRole\\(\\) has typehint with deprecated class Symfony\\\\Component\\\\Security\\\\Core\\\\Role\\\\Role\\: #^Return type of method Chill\\\\ActivityBundle\\\\Export\\\\Export\\\\StatActivityDuration\\:\\:requiredRole\\(\\) has typehint with deprecated class Symfony\\\\Component\\\\Security\\\\Core\\\\Role\\\\Role\\:
since Symfony 4\\.3, to be removed in 5\\.0\\. Use strings as roles instead\\.$# since Symfony 4\\.3, to be removed in 5\\.0\\. Use strings as roles instead\\.$#
""" """
@@ -133,8 +120,7 @@ parameters:
path: src/Bundle/ChillActivityBundle/Export/Export/StatActivityDuration.php path: src/Bundle/ChillActivityBundle/Export/Export/StatActivityDuration.php
- -
message: message: """
"""
#^Return type of method Chill\\\\ActivityBundle\\\\Export\\\\Filter\\\\ActivityDateFilter\\:\\:addRole\\(\\) has typehint with deprecated class Symfony\\\\Component\\\\Security\\\\Core\\\\Role\\\\Role\\: #^Return type of method Chill\\\\ActivityBundle\\\\Export\\\\Filter\\\\ActivityDateFilter\\:\\:addRole\\(\\) has typehint with deprecated class Symfony\\\\Component\\\\Security\\\\Core\\\\Role\\\\Role\\:
since Symfony 4\\.3, to be removed in 5\\.0\\. Use strings as roles instead\\.$# since Symfony 4\\.3, to be removed in 5\\.0\\. Use strings as roles instead\\.$#
""" """
@@ -142,8 +128,7 @@ parameters:
path: src/Bundle/ChillActivityBundle/Export/Filter/ActivityDateFilter.php path: src/Bundle/ChillActivityBundle/Export/Filter/ActivityDateFilter.php
- -
message: message: """
"""
#^Instantiation of deprecated class Symfony\\\\Component\\\\Security\\\\Core\\\\Role\\\\Role\\: #^Instantiation of deprecated class Symfony\\\\Component\\\\Security\\\\Core\\\\Role\\\\Role\\:
since Symfony 4\\.3, to be removed in 5\\.0\\. Use strings as roles instead\\.$# since Symfony 4\\.3, to be removed in 5\\.0\\. Use strings as roles instead\\.$#
""" """
@@ -151,8 +136,7 @@ parameters:
path: src/Bundle/ChillActivityBundle/Export/Filter/ActivityReasonFilter.php path: src/Bundle/ChillActivityBundle/Export/Filter/ActivityReasonFilter.php
- -
message: message: """
"""
#^Return type of method Chill\\\\ActivityBundle\\\\Export\\\\Filter\\\\ActivityReasonFilter\\:\\:addRole\\(\\) has typehint with deprecated class Symfony\\\\Component\\\\Security\\\\Core\\\\Role\\\\Role\\: #^Return type of method Chill\\\\ActivityBundle\\\\Export\\\\Filter\\\\ActivityReasonFilter\\:\\:addRole\\(\\) has typehint with deprecated class Symfony\\\\Component\\\\Security\\\\Core\\\\Role\\\\Role\\:
since Symfony 4\\.3, to be removed in 5\\.0\\. Use strings as roles instead\\.$# since Symfony 4\\.3, to be removed in 5\\.0\\. Use strings as roles instead\\.$#
""" """
@@ -160,8 +144,7 @@ parameters:
path: src/Bundle/ChillActivityBundle/Export/Filter/ActivityReasonFilter.php path: src/Bundle/ChillActivityBundle/Export/Filter/ActivityReasonFilter.php
- -
message: message: """
"""
#^Instantiation of deprecated class Symfony\\\\Component\\\\Security\\\\Core\\\\Role\\\\Role\\: #^Instantiation of deprecated class Symfony\\\\Component\\\\Security\\\\Core\\\\Role\\\\Role\\:
since Symfony 4\\.3, to be removed in 5\\.0\\. Use strings as roles instead\\.$# since Symfony 4\\.3, to be removed in 5\\.0\\. Use strings as roles instead\\.$#
""" """
@@ -169,8 +152,7 @@ parameters:
path: src/Bundle/ChillActivityBundle/Export/Filter/ActivityTypeFilter.php path: src/Bundle/ChillActivityBundle/Export/Filter/ActivityTypeFilter.php
- -
message: message: """
"""
#^Return type of method Chill\\\\ActivityBundle\\\\Export\\\\Filter\\\\ActivityTypeFilter\\:\\:addRole\\(\\) has typehint with deprecated class Symfony\\\\Component\\\\Security\\\\Core\\\\Role\\\\Role\\: #^Return type of method Chill\\\\ActivityBundle\\\\Export\\\\Filter\\\\ActivityTypeFilter\\:\\:addRole\\(\\) has typehint with deprecated class Symfony\\\\Component\\\\Security\\\\Core\\\\Role\\\\Role\\:
since Symfony 4\\.3, to be removed in 5\\.0\\. Use strings as roles instead\\.$# since Symfony 4\\.3, to be removed in 5\\.0\\. Use strings as roles instead\\.$#
""" """
@@ -178,8 +160,7 @@ parameters:
path: src/Bundle/ChillActivityBundle/Export/Filter/ActivityTypeFilter.php path: src/Bundle/ChillActivityBundle/Export/Filter/ActivityTypeFilter.php
- -
message: message: """
"""
#^Return type of method Chill\\\\ActivityBundle\\\\Export\\\\Filter\\\\PersonHavingActivityBetweenDateFilter\\:\\:addRole\\(\\) has typehint with deprecated class Symfony\\\\Component\\\\Security\\\\Core\\\\Role\\\\Role\\: #^Return type of method Chill\\\\ActivityBundle\\\\Export\\\\Filter\\\\PersonHavingActivityBetweenDateFilter\\:\\:addRole\\(\\) has typehint with deprecated class Symfony\\\\Component\\\\Security\\\\Core\\\\Role\\\\Role\\:
since Symfony 4\\.3, to be removed in 5\\.0\\. Use strings as roles instead\\.$# since Symfony 4\\.3, to be removed in 5\\.0\\. Use strings as roles instead\\.$#
""" """
@@ -187,8 +168,15 @@ parameters:
path: src/Bundle/ChillActivityBundle/Export/Filter/PersonHavingActivityBetweenDateFilter.php path: src/Bundle/ChillActivityBundle/Export/Filter/PersonHavingActivityBetweenDateFilter.php
- -
message: message: """
#^Fetching class constant class of deprecated class Symfony\\\\Component\\\\Security\\\\Core\\\\Role\\\\Role\\:
since Symfony 4\\.3, to be removed in 5\\.0\\. Use strings as roles instead\\.$#
""" """
count: 1
path: src/Bundle/ChillActivityBundle/Form/ActivityType.php
-
message: """
#^Call to deprecated method getReachableScopes\\(\\) of class Chill\\\\MainBundle\\\\Security\\\\Authorization\\\\AuthorizationHelper\\: #^Call to deprecated method getReachableScopes\\(\\) of class Chill\\\\MainBundle\\\\Security\\\\Authorization\\\\AuthorizationHelper\\:
Use getReachableCircles$# Use getReachableCircles$#
""" """
@@ -196,8 +184,7 @@ parameters:
path: src/Bundle/ChillActivityBundle/Repository/ActivityACLAwareRepository.php path: src/Bundle/ChillActivityBundle/Repository/ActivityACLAwareRepository.php
- -
message: message: """
"""
#^Instantiation of deprecated class Symfony\\\\Component\\\\Security\\\\Core\\\\Role\\\\Role\\: #^Instantiation of deprecated class Symfony\\\\Component\\\\Security\\\\Core\\\\Role\\\\Role\\:
since Symfony 4\\.3, to be removed in 5\\.0\\. Use strings as roles instead\\.$# since Symfony 4\\.3, to be removed in 5\\.0\\. Use strings as roles instead\\.$#
""" """
@@ -205,8 +192,7 @@ parameters:
path: src/Bundle/ChillActivityBundle/Repository/ActivityACLAwareRepository.php path: src/Bundle/ChillActivityBundle/Repository/ActivityACLAwareRepository.php
- -
message: message: """
"""
#^Parameter \\$centerResolverDispatcher of method Chill\\\\ActivityBundle\\\\Repository\\\\ActivityACLAwareRepository\\:\\:__construct\\(\\) has typehint with deprecated interface Chill\\\\MainBundle\\\\Security\\\\Resolver\\\\CenterResolverDispatcherInterface\\: #^Parameter \\$centerResolverDispatcher of method Chill\\\\ActivityBundle\\\\Repository\\\\ActivityACLAwareRepository\\:\\:__construct\\(\\) has typehint with deprecated interface Chill\\\\MainBundle\\\\Security\\\\Resolver\\\\CenterResolverDispatcherInterface\\:
Use CenterResolverManager and its interface CenterResolverManagerInterface$# Use CenterResolverManager and its interface CenterResolverManagerInterface$#
""" """
@@ -214,8 +200,7 @@ parameters:
path: src/Bundle/ChillActivityBundle/Repository/ActivityACLAwareRepository.php path: src/Bundle/ChillActivityBundle/Repository/ActivityACLAwareRepository.php
- -
message: message: """
"""
#^Instantiation of deprecated class Symfony\\\\Component\\\\Security\\\\Core\\\\Role\\\\Role\\: #^Instantiation of deprecated class Symfony\\\\Component\\\\Security\\\\Core\\\\Role\\\\Role\\:
since Symfony 4\\.3, to be removed in 5\\.0\\. Use strings as roles instead\\.$# since Symfony 4\\.3, to be removed in 5\\.0\\. Use strings as roles instead\\.$#
""" """
@@ -223,8 +208,7 @@ parameters:
path: src/Bundle/ChillActivityBundle/Timeline/TimelineActivityProvider.php path: src/Bundle/ChillActivityBundle/Timeline/TimelineActivityProvider.php
- -
message: message: """
"""
#^Parameter \\$templating of method Chill\\\\CustomFieldsBundle\\\\CustomFields\\\\CustomFieldChoice\\:\\:__construct\\(\\) has typehint with deprecated class Symfony\\\\Bridge\\\\Twig\\\\TwigEngine\\: #^Parameter \\$templating of method Chill\\\\CustomFieldsBundle\\\\CustomFields\\\\CustomFieldChoice\\:\\:__construct\\(\\) has typehint with deprecated class Symfony\\\\Bridge\\\\Twig\\\\TwigEngine\\:
since version 4\\.3, to be removed in 5\\.0; use Twig instead\\.$# since version 4\\.3, to be removed in 5\\.0; use Twig instead\\.$#
""" """
@@ -237,8 +221,7 @@ parameters:
path: src/Bundle/ChillCustomFieldsBundle/CustomFields/CustomFieldChoice.php path: src/Bundle/ChillCustomFieldsBundle/CustomFields/CustomFieldChoice.php
- -
message: message: """
"""
#^Parameter \\$templating of method Chill\\\\CustomFieldsBundle\\\\CustomFields\\\\CustomFieldDate\\:\\:__construct\\(\\) has typehint with deprecated class Symfony\\\\Bundle\\\\TwigBundle\\\\TwigEngine\\: #^Parameter \\$templating of method Chill\\\\CustomFieldsBundle\\\\CustomFields\\\\CustomFieldDate\\:\\:__construct\\(\\) has typehint with deprecated class Symfony\\\\Bundle\\\\TwigBundle\\\\TwigEngine\\:
since version 4\\.3, to be removed in 5\\.0; use Twig instead\\.$# since version 4\\.3, to be removed in 5\\.0; use Twig instead\\.$#
""" """
@@ -246,8 +229,7 @@ parameters:
path: src/Bundle/ChillCustomFieldsBundle/CustomFields/CustomFieldDate.php path: src/Bundle/ChillCustomFieldsBundle/CustomFields/CustomFieldDate.php
- -
message: message: """
"""
#^Parameter \\$twigEngine of method Chill\\\\CustomFieldsBundle\\\\CustomFields\\\\CustomFieldLongChoice\\:\\:__construct\\(\\) has typehint with deprecated class Symfony\\\\Bridge\\\\Twig\\\\TwigEngine\\: #^Parameter \\$twigEngine of method Chill\\\\CustomFieldsBundle\\\\CustomFields\\\\CustomFieldLongChoice\\:\\:__construct\\(\\) has typehint with deprecated class Symfony\\\\Bridge\\\\Twig\\\\TwigEngine\\:
since version 4\\.3, to be removed in 5\\.0; use Twig instead\\.$# since version 4\\.3, to be removed in 5\\.0; use Twig instead\\.$#
""" """
@@ -255,8 +237,7 @@ parameters:
path: src/Bundle/ChillCustomFieldsBundle/CustomFields/CustomFieldLongChoice.php path: src/Bundle/ChillCustomFieldsBundle/CustomFields/CustomFieldLongChoice.php
- -
message: message: """
"""
#^Parameter \\$templating of method Chill\\\\CustomFieldsBundle\\\\CustomFields\\\\CustomFieldNumber\\:\\:__construct\\(\\) has typehint with deprecated class Symfony\\\\Bundle\\\\TwigBundle\\\\TwigEngine\\: #^Parameter \\$templating of method Chill\\\\CustomFieldsBundle\\\\CustomFields\\\\CustomFieldNumber\\:\\:__construct\\(\\) has typehint with deprecated class Symfony\\\\Bundle\\\\TwigBundle\\\\TwigEngine\\:
since version 4\\.3, to be removed in 5\\.0; use Twig instead\\.$# since version 4\\.3, to be removed in 5\\.0; use Twig instead\\.$#
""" """
@@ -264,8 +245,7 @@ parameters:
path: src/Bundle/ChillCustomFieldsBundle/CustomFields/CustomFieldNumber.php path: src/Bundle/ChillCustomFieldsBundle/CustomFields/CustomFieldNumber.php
- -
message: message: """
"""
#^Parameter \\$templating of method Chill\\\\CustomFieldsBundle\\\\CustomFields\\\\CustomFieldText\\:\\:__construct\\(\\) has typehint with deprecated class Symfony\\\\Bundle\\\\TwigBundle\\\\TwigEngine\\: #^Parameter \\$templating of method Chill\\\\CustomFieldsBundle\\\\CustomFields\\\\CustomFieldText\\:\\:__construct\\(\\) has typehint with deprecated class Symfony\\\\Bundle\\\\TwigBundle\\\\TwigEngine\\:
since version 4\\.3, to be removed in 5\\.0; use Twig instead\\.$# since version 4\\.3, to be removed in 5\\.0; use Twig instead\\.$#
""" """
@@ -273,8 +253,7 @@ parameters:
path: src/Bundle/ChillCustomFieldsBundle/CustomFields/CustomFieldText.php path: src/Bundle/ChillCustomFieldsBundle/CustomFields/CustomFieldText.php
- -
message: message: """
"""
#^Parameter \\$templating of method Chill\\\\CustomFieldsBundle\\\\CustomFields\\\\CustomFieldTitle\\:\\:__construct\\(\\) has typehint with deprecated class Symfony\\\\Bundle\\\\TwigBundle\\\\TwigEngine\\: #^Parameter \\$templating of method Chill\\\\CustomFieldsBundle\\\\CustomFields\\\\CustomFieldTitle\\:\\:__construct\\(\\) has typehint with deprecated class Symfony\\\\Bundle\\\\TwigBundle\\\\TwigEngine\\:
since version 4\\.3, to be removed in 5\\.0; use Twig instead\\.$# since version 4\\.3, to be removed in 5\\.0; use Twig instead\\.$#
""" """
@@ -292,8 +271,7 @@ parameters:
path: src/Bundle/ChillCustomFieldsBundle/Entity/CustomFieldsGroup.php path: src/Bundle/ChillCustomFieldsBundle/Entity/CustomFieldsGroup.php
- -
message: message: """
"""
#^Instantiation of deprecated class Symfony\\\\Component\\\\Security\\\\Core\\\\Role\\\\Role\\: #^Instantiation of deprecated class Symfony\\\\Component\\\\Security\\\\Core\\\\Role\\\\Role\\:
since Symfony 4\\.3, to be removed in 5\\.0\\. Use strings as roles instead\\.$# since Symfony 4\\.3, to be removed in 5\\.0\\. Use strings as roles instead\\.$#
""" """
@@ -301,8 +279,7 @@ parameters:
path: src/Bundle/ChillEventBundle/Controller/EventController.php path: src/Bundle/ChillEventBundle/Controller/EventController.php
- -
message: message: """
"""
#^Fetching class constant class of deprecated class Symfony\\\\Component\\\\Security\\\\Core\\\\Role\\\\Role\\: #^Fetching class constant class of deprecated class Symfony\\\\Component\\\\Security\\\\Core\\\\Role\\\\Role\\:
since Symfony 4\\.3, to be removed in 5\\.0\\. Use strings as roles instead\\.$# since Symfony 4\\.3, to be removed in 5\\.0\\. Use strings as roles instead\\.$#
""" """
@@ -310,8 +287,7 @@ parameters:
path: src/Bundle/ChillEventBundle/Form/EventType.php path: src/Bundle/ChillEventBundle/Form/EventType.php
- -
message: message: """
"""
#^Fetching class constant class of deprecated class Symfony\\\\Component\\\\Security\\\\Core\\\\Role\\\\Role\\: #^Fetching class constant class of deprecated class Symfony\\\\Component\\\\Security\\\\Core\\\\Role\\\\Role\\:
since Symfony 4\\.3, to be removed in 5\\.0\\. Use strings as roles instead\\.$# since Symfony 4\\.3, to be removed in 5\\.0\\. Use strings as roles instead\\.$#
""" """
@@ -319,8 +295,7 @@ parameters:
path: src/Bundle/ChillEventBundle/Form/Type/PickEventType.php path: src/Bundle/ChillEventBundle/Form/Type/PickEventType.php
- -
message: message: """
"""
#^Call to deprecated method getReachableScopes\\(\\) of class Chill\\\\MainBundle\\\\Security\\\\Authorization\\\\AuthorizationHelper\\: #^Call to deprecated method getReachableScopes\\(\\) of class Chill\\\\MainBundle\\\\Security\\\\Authorization\\\\AuthorizationHelper\\:
Use getReachableCircles$# Use getReachableCircles$#
""" """
@@ -328,8 +303,7 @@ parameters:
path: src/Bundle/ChillEventBundle/Search/EventSearch.php path: src/Bundle/ChillEventBundle/Search/EventSearch.php
- -
message: message: """
"""
#^Instantiation of deprecated class Symfony\\\\Component\\\\Security\\\\Core\\\\Role\\\\Role\\: #^Instantiation of deprecated class Symfony\\\\Component\\\\Security\\\\Core\\\\Role\\\\Role\\:
since Symfony 4\\.3, to be removed in 5\\.0\\. Use strings as roles instead\\.$# since Symfony 4\\.3, to be removed in 5\\.0\\. Use strings as roles instead\\.$#
""" """
@@ -337,8 +311,7 @@ parameters:
path: src/Bundle/ChillFamilyMembersBundle/Security/Voter/FamilyMemberVoter.php path: src/Bundle/ChillFamilyMembersBundle/Security/Voter/FamilyMemberVoter.php
- -
message: message: """
"""
#^Parameter \\$role of method Chill\\\\MainBundle\\\\CRUD\\\\Controller\\\\CRUDController\\:\\:getReachableCenters\\(\\) has typehint with deprecated class Symfony\\\\Component\\\\Security\\\\Core\\\\Role\\\\Role\\: #^Parameter \\$role of method Chill\\\\MainBundle\\\\CRUD\\\\Controller\\\\CRUDController\\:\\:getReachableCenters\\(\\) has typehint with deprecated class Symfony\\\\Component\\\\Security\\\\Core\\\\Role\\\\Role\\:
since Symfony 4\\.3, to be removed in 5\\.0\\. Use strings as roles instead\\.$# since Symfony 4\\.3, to be removed in 5\\.0\\. Use strings as roles instead\\.$#
""" """
@@ -346,8 +319,7 @@ parameters:
path: src/Bundle/ChillMainBundle/CRUD/Controller/CRUDController.php path: src/Bundle/ChillMainBundle/CRUD/Controller/CRUDController.php
- -
message: message: """
"""
#^Call to deprecated method getLanguageBundle\\(\\) of class Symfony\\\\Component\\\\Intl\\\\Intl\\: #^Call to deprecated method getLanguageBundle\\(\\) of class Symfony\\\\Component\\\\Intl\\\\Intl\\:
since Symfony 4\\.3, to be removed in 5\\.0\\. Use \\{@see Languages\\} or \\{@see Scripts\\} instead\\.$# since Symfony 4\\.3, to be removed in 5\\.0\\. Use \\{@see Languages\\} or \\{@see Scripts\\} instead\\.$#
""" """
@@ -355,8 +327,7 @@ parameters:
path: src/Bundle/ChillMainBundle/Command/LoadAndUpdateLanguagesCommand.php path: src/Bundle/ChillMainBundle/Command/LoadAndUpdateLanguagesCommand.php
- -
message: message: """
"""
#^Call to deprecated method getRegionBundle\\(\\) of class Symfony\\\\Component\\\\Intl\\\\Intl\\: #^Call to deprecated method getRegionBundle\\(\\) of class Symfony\\\\Component\\\\Intl\\\\Intl\\:
since Symfony 4\\.3, to be removed in 5\\.0\\. Use \\{@see Countries\\} instead\\.$# since Symfony 4\\.3, to be removed in 5\\.0\\. Use \\{@see Countries\\} instead\\.$#
""" """
@@ -364,8 +335,7 @@ parameters:
path: src/Bundle/ChillMainBundle/Command/LoadCountriesCommand.php path: src/Bundle/ChillMainBundle/Command/LoadCountriesCommand.php
- -
message: message: """
"""
#^Instantiation of deprecated class Symfony\\\\Component\\\\Security\\\\Core\\\\Role\\\\Role\\: #^Instantiation of deprecated class Symfony\\\\Component\\\\Security\\\\Core\\\\Role\\\\Role\\:
since Symfony 4\\.3, to be removed in 5\\.0\\. Use strings as roles instead\\.$# since Symfony 4\\.3, to be removed in 5\\.0\\. Use strings as roles instead\\.$#
""" """
@@ -373,8 +343,7 @@ parameters:
path: src/Bundle/ChillMainBundle/Controller/PermissionsGroupController.php path: src/Bundle/ChillMainBundle/Controller/PermissionsGroupController.php
- -
message: message: """
"""
#^Parameter \\$role of anonymous function has typehint with deprecated class Symfony\\\\Component\\\\Security\\\\Core\\\\Role\\\\Role\\: #^Parameter \\$role of anonymous function has typehint with deprecated class Symfony\\\\Component\\\\Security\\\\Core\\\\Role\\\\Role\\:
since Symfony 4\\.3, to be removed in 5\\.0\\. Use strings as roles instead\\.$# since Symfony 4\\.3, to be removed in 5\\.0\\. Use strings as roles instead\\.$#
""" """
@@ -382,8 +351,7 @@ parameters:
path: src/Bundle/ChillMainBundle/Controller/PermissionsGroupController.php path: src/Bundle/ChillMainBundle/Controller/PermissionsGroupController.php
- -
message: message: """
"""
#^Call to deprecated method getLanguageBundle\\(\\) of class Symfony\\\\Component\\\\Intl\\\\Intl\\: #^Call to deprecated method getLanguageBundle\\(\\) of class Symfony\\\\Component\\\\Intl\\\\Intl\\:
since Symfony 4\\.3, to be removed in 5\\.0\\. Use \\{@see Languages\\} or \\{@see Scripts\\} instead\\.$# since Symfony 4\\.3, to be removed in 5\\.0\\. Use \\{@see Languages\\} or \\{@see Scripts\\} instead\\.$#
""" """
@@ -391,8 +359,7 @@ parameters:
path: src/Bundle/ChillMainBundle/DataFixtures/ORM/LoadLanguages.php path: src/Bundle/ChillMainBundle/DataFixtures/ORM/LoadLanguages.php
- -
message: message: """
"""
#^Class Chill\\\\MainBundle\\\\Entity\\\\User implements deprecated interface Symfony\\\\Component\\\\Security\\\\Core\\\\User\\\\AdvancedUserInterface\\: #^Class Chill\\\\MainBundle\\\\Entity\\\\User implements deprecated interface Symfony\\\\Component\\\\Security\\\\Core\\\\User\\\\AdvancedUserInterface\\:
since Symfony 4\\.1$# since Symfony 4\\.1$#
""" """
@@ -400,8 +367,7 @@ parameters:
path: src/Bundle/ChillMainBundle/Entity/User.php path: src/Bundle/ChillMainBundle/Entity/User.php
- -
message: message: """
"""
#^Return type of method Chill\\\\MainBundle\\\\Entity\\\\User\\:\\:getRoles\\(\\) has typehint with deprecated class Symfony\\\\Component\\\\Security\\\\Core\\\\Role\\\\Role\\: #^Return type of method Chill\\\\MainBundle\\\\Entity\\\\User\\:\\:getRoles\\(\\) has typehint with deprecated class Symfony\\\\Component\\\\Security\\\\Core\\\\Role\\\\Role\\:
since Symfony 4\\.3, to be removed in 5\\.0\\. Use strings as roles instead\\.$# since Symfony 4\\.3, to be removed in 5\\.0\\. Use strings as roles instead\\.$#
""" """
@@ -409,8 +375,7 @@ parameters:
path: src/Bundle/ChillMainBundle/Entity/User.php path: src/Bundle/ChillMainBundle/Entity/User.php
- -
message: message: """
"""
#^Return type of method Chill\\\\MainBundle\\\\Export\\\\DirectExportInterface\\:\\:requiredRole\\(\\) has typehint with deprecated class Symfony\\\\Component\\\\Security\\\\Core\\\\Role\\\\Role\\: #^Return type of method Chill\\\\MainBundle\\\\Export\\\\DirectExportInterface\\:\\:requiredRole\\(\\) has typehint with deprecated class Symfony\\\\Component\\\\Security\\\\Core\\\\Role\\\\Role\\:
since Symfony 4\\.3, to be removed in 5\\.0\\. Use strings as roles instead\\.$# since Symfony 4\\.3, to be removed in 5\\.0\\. Use strings as roles instead\\.$#
""" """
@@ -418,8 +383,7 @@ parameters:
path: src/Bundle/ChillMainBundle/Export/DirectExportInterface.php path: src/Bundle/ChillMainBundle/Export/DirectExportInterface.php
- -
message: message: """
"""
#^Return type of method Chill\\\\MainBundle\\\\Export\\\\ExportInterface\\:\\:requiredRole\\(\\) has typehint with deprecated class Symfony\\\\Component\\\\Security\\\\Core\\\\Role\\\\Role\\: #^Return type of method Chill\\\\MainBundle\\\\Export\\\\ExportInterface\\:\\:requiredRole\\(\\) has typehint with deprecated class Symfony\\\\Component\\\\Security\\\\Core\\\\Role\\\\Role\\:
since Symfony 4\\.3, to be removed in 5\\.0\\. Use strings as roles instead\\.$# since Symfony 4\\.3, to be removed in 5\\.0\\. Use strings as roles instead\\.$#
""" """
@@ -427,8 +391,7 @@ parameters:
path: src/Bundle/ChillMainBundle/Export/ExportInterface.php path: src/Bundle/ChillMainBundle/Export/ExportInterface.php
- -
message: message: """
"""
#^Call to deprecated method getReachableScopes\\(\\) of class Chill\\\\MainBundle\\\\Security\\\\Authorization\\\\AuthorizationHelper\\: #^Call to deprecated method getReachableScopes\\(\\) of class Chill\\\\MainBundle\\\\Security\\\\Authorization\\\\AuthorizationHelper\\:
Use getReachableCircles$# Use getReachableCircles$#
""" """
@@ -436,8 +399,7 @@ parameters:
path: src/Bundle/ChillMainBundle/Export/ExportManager.php path: src/Bundle/ChillMainBundle/Export/ExportManager.php
- -
message: message: """
"""
#^Return type of method Chill\\\\MainBundle\\\\Export\\\\ModifierInterface\\:\\:addRole\\(\\) has typehint with deprecated class Symfony\\\\Component\\\\Security\\\\Core\\\\Role\\\\Role\\: #^Return type of method Chill\\\\MainBundle\\\\Export\\\\ModifierInterface\\:\\:addRole\\(\\) has typehint with deprecated class Symfony\\\\Component\\\\Security\\\\Core\\\\Role\\\\Role\\:
since Symfony 4\\.3, to be removed in 5\\.0\\. Use strings as roles instead\\.$# since Symfony 4\\.3, to be removed in 5\\.0\\. Use strings as roles instead\\.$#
""" """
@@ -445,8 +407,7 @@ parameters:
path: src/Bundle/ChillMainBundle/Export/ModifierInterface.php path: src/Bundle/ChillMainBundle/Export/ModifierInterface.php
- -
message: message: """
"""
#^Class Chill\\\\MainBundle\\\\Form\\\\Event\\\\CustomizeFormEvent extends deprecated class Symfony\\\\Component\\\\EventDispatcher\\\\Event\\: #^Class Chill\\\\MainBundle\\\\Form\\\\Event\\\\CustomizeFormEvent extends deprecated class Symfony\\\\Component\\\\EventDispatcher\\\\Event\\:
since Symfony 4\\.3, use "Symfony\\\\Contracts\\\\EventDispatcher\\\\Event" instead$# since Symfony 4\\.3, use "Symfony\\\\Contracts\\\\EventDispatcher\\\\Event" instead$#
""" """
@@ -454,8 +415,7 @@ parameters:
path: src/Bundle/ChillMainBundle/Form/Event/CustomizeFormEvent.php path: src/Bundle/ChillMainBundle/Form/Event/CustomizeFormEvent.php
- -
message: message: """
"""
#^Fetching class constant class of deprecated class Symfony\\\\Component\\\\Security\\\\Core\\\\Role\\\\Role\\: #^Fetching class constant class of deprecated class Symfony\\\\Component\\\\Security\\\\Core\\\\Role\\\\Role\\:
since Symfony 4\\.3, to be removed in 5\\.0\\. Use strings as roles instead\\.$# since Symfony 4\\.3, to be removed in 5\\.0\\. Use strings as roles instead\\.$#
""" """
@@ -463,8 +423,7 @@ parameters:
path: src/Bundle/ChillMainBundle/Form/Type/ScopePickerType.php path: src/Bundle/ChillMainBundle/Form/Type/ScopePickerType.php
- -
message: message: """
"""
#^Fetching class constant class of deprecated class Symfony\\\\Component\\\\Security\\\\Core\\\\Role\\\\Role\\: #^Fetching class constant class of deprecated class Symfony\\\\Component\\\\Security\\\\Core\\\\Role\\\\Role\\:
since Symfony 4\\.3, to be removed in 5\\.0\\. Use strings as roles instead\\.$# since Symfony 4\\.3, to be removed in 5\\.0\\. Use strings as roles instead\\.$#
""" """
@@ -477,8 +436,7 @@ parameters:
path: src/Bundle/ChillMainBundle/Repository/NotificationRepository.php path: src/Bundle/ChillMainBundle/Repository/NotificationRepository.php
- -
message: message: """
"""
#^Parameter \\$attribute of method Chill\\\\MainBundle\\\\Security\\\\Authorization\\\\AuthorizationHelper\\:\\:userHasAccess\\(\\) has typehint with deprecated class Symfony\\\\Component\\\\Security\\\\Core\\\\Role\\\\Role\\: #^Parameter \\$attribute of method Chill\\\\MainBundle\\\\Security\\\\Authorization\\\\AuthorizationHelper\\:\\:userHasAccess\\(\\) has typehint with deprecated class Symfony\\\\Component\\\\Security\\\\Core\\\\Role\\\\Role\\:
since Symfony 4\\.3, to be removed in 5\\.0\\. Use strings as roles instead\\.$# since Symfony 4\\.3, to be removed in 5\\.0\\. Use strings as roles instead\\.$#
""" """
@@ -486,8 +444,7 @@ parameters:
path: src/Bundle/ChillMainBundle/Security/Authorization/AuthorizationHelper.php path: src/Bundle/ChillMainBundle/Security/Authorization/AuthorizationHelper.php
- -
message: message: """
"""
#^Parameter \\$centerResolverDispatcher of method Chill\\\\MainBundle\\\\Security\\\\Authorization\\\\AuthorizationHelper\\:\\:__construct\\(\\) has typehint with deprecated interface Chill\\\\MainBundle\\\\Security\\\\Resolver\\\\CenterResolverDispatcherInterface\\: #^Parameter \\$centerResolverDispatcher of method Chill\\\\MainBundle\\\\Security\\\\Authorization\\\\AuthorizationHelper\\:\\:__construct\\(\\) has typehint with deprecated interface Chill\\\\MainBundle\\\\Security\\\\Resolver\\\\CenterResolverDispatcherInterface\\:
Use CenterResolverManager and its interface CenterResolverManagerInterface$# Use CenterResolverManager and its interface CenterResolverManagerInterface$#
""" """
@@ -495,8 +452,7 @@ parameters:
path: src/Bundle/ChillMainBundle/Security/Authorization/AuthorizationHelper.php path: src/Bundle/ChillMainBundle/Security/Authorization/AuthorizationHelper.php
- -
message: message: """
"""
#^Parameter \\$role of method Chill\\\\MainBundle\\\\Security\\\\Authorization\\\\AuthorizationHelper\\:\\:getReachableCircles\\(\\) has typehint with deprecated class Symfony\\\\Component\\\\Security\\\\Core\\\\Role\\\\Role\\: #^Parameter \\$role of method Chill\\\\MainBundle\\\\Security\\\\Authorization\\\\AuthorizationHelper\\:\\:getReachableCircles\\(\\) has typehint with deprecated class Symfony\\\\Component\\\\Security\\\\Core\\\\Role\\\\Role\\:
since Symfony 4\\.3, to be removed in 5\\.0\\. Use strings as roles instead\\.$# since Symfony 4\\.3, to be removed in 5\\.0\\. Use strings as roles instead\\.$#
""" """
@@ -504,8 +460,7 @@ parameters:
path: src/Bundle/ChillMainBundle/Security/Authorization/AuthorizationHelper.php path: src/Bundle/ChillMainBundle/Security/Authorization/AuthorizationHelper.php
- -
message: message: """
"""
#^Parameter \\$centerResolverDispatcher of method Chill\\\\MainBundle\\\\Security\\\\Authorization\\\\DefaultVoterHelper\\:\\:__construct\\(\\) has typehint with deprecated interface Chill\\\\MainBundle\\\\Security\\\\Resolver\\\\CenterResolverDispatcherInterface\\: #^Parameter \\$centerResolverDispatcher of method Chill\\\\MainBundle\\\\Security\\\\Authorization\\\\DefaultVoterHelper\\:\\:__construct\\(\\) has typehint with deprecated interface Chill\\\\MainBundle\\\\Security\\\\Resolver\\\\CenterResolverDispatcherInterface\\:
Use CenterResolverManager and its interface CenterResolverManagerInterface$# Use CenterResolverManager and its interface CenterResolverManagerInterface$#
""" """
@@ -513,8 +468,7 @@ parameters:
path: src/Bundle/ChillMainBundle/Security/Authorization/DefaultVoterHelper.php path: src/Bundle/ChillMainBundle/Security/Authorization/DefaultVoterHelper.php
- -
message: message: """
"""
#^Parameter \\$centerResolverDispatcher of method Chill\\\\MainBundle\\\\Security\\\\Authorization\\\\DefaultVoterHelperFactory\\:\\:__construct\\(\\) has typehint with deprecated interface Chill\\\\MainBundle\\\\Security\\\\Resolver\\\\CenterResolverDispatcherInterface\\: #^Parameter \\$centerResolverDispatcher of method Chill\\\\MainBundle\\\\Security\\\\Authorization\\\\DefaultVoterHelperFactory\\:\\:__construct\\(\\) has typehint with deprecated interface Chill\\\\MainBundle\\\\Security\\\\Resolver\\\\CenterResolverDispatcherInterface\\:
Use CenterResolverManager and its interface CenterResolverManagerInterface$# Use CenterResolverManager and its interface CenterResolverManagerInterface$#
""" """
@@ -522,8 +476,7 @@ parameters:
path: src/Bundle/ChillMainBundle/Security/Authorization/DefaultVoterHelperFactory.php path: src/Bundle/ChillMainBundle/Security/Authorization/DefaultVoterHelperFactory.php
- -
message: message: """
"""
#^Parameter \\$centerResolverDispatcher of method Chill\\\\MainBundle\\\\Security\\\\Authorization\\\\DefaultVoterHelperGenerator\\:\\:__construct\\(\\) has typehint with deprecated interface Chill\\\\MainBundle\\\\Security\\\\Resolver\\\\CenterResolverDispatcherInterface\\: #^Parameter \\$centerResolverDispatcher of method Chill\\\\MainBundle\\\\Security\\\\Authorization\\\\DefaultVoterHelperGenerator\\:\\:__construct\\(\\) has typehint with deprecated interface Chill\\\\MainBundle\\\\Security\\\\Resolver\\\\CenterResolverDispatcherInterface\\:
Use CenterResolverManager and its interface CenterResolverManagerInterface$# Use CenterResolverManager and its interface CenterResolverManagerInterface$#
""" """
@@ -531,8 +484,7 @@ parameters:
path: src/Bundle/ChillMainBundle/Security/Authorization/DefaultVoterHelperGenerator.php path: src/Bundle/ChillMainBundle/Security/Authorization/DefaultVoterHelperGenerator.php
- -
message: message: """
"""
#^Class Chill\\\\MainBundle\\\\Security\\\\PasswordRecover\\\\PasswordRecoverEvent extends deprecated class Symfony\\\\Component\\\\EventDispatcher\\\\Event\\: #^Class Chill\\\\MainBundle\\\\Security\\\\PasswordRecover\\\\PasswordRecoverEvent extends deprecated class Symfony\\\\Component\\\\EventDispatcher\\\\Event\\:
since Symfony 4\\.3, use "Symfony\\\\Contracts\\\\EventDispatcher\\\\Event" instead$# since Symfony 4\\.3, use "Symfony\\\\Contracts\\\\EventDispatcher\\\\Event" instead$#
""" """
@@ -540,8 +492,7 @@ parameters:
path: src/Bundle/ChillMainBundle/Security/PasswordRecover/PasswordRecoverEvent.php path: src/Bundle/ChillMainBundle/Security/PasswordRecover/PasswordRecoverEvent.php
- -
message: message: """
"""
#^Class Chill\\\\MainBundle\\\\Security\\\\Resolver\\\\CenterResolverDispatcher implements deprecated interface Chill\\\\MainBundle\\\\Security\\\\Resolver\\\\CenterResolverDispatcherInterface\\: #^Class Chill\\\\MainBundle\\\\Security\\\\Resolver\\\\CenterResolverDispatcher implements deprecated interface Chill\\\\MainBundle\\\\Security\\\\Resolver\\\\CenterResolverDispatcherInterface\\:
Use CenterResolverManager and its interface CenterResolverManagerInterface$# Use CenterResolverManager and its interface CenterResolverManagerInterface$#
""" """
@@ -554,8 +505,7 @@ parameters:
path: src/Bundle/ChillMainBundle/Templating/ChillTwigRoutingHelper.php path: src/Bundle/ChillMainBundle/Templating/ChillTwigRoutingHelper.php
- -
message: message: """
"""
#^Class Chill\\\\MainBundle\\\\Templating\\\\Events\\\\DelegatedBlockRenderingEvent extends deprecated class Symfony\\\\Component\\\\EventDispatcher\\\\Event\\: #^Class Chill\\\\MainBundle\\\\Templating\\\\Events\\\\DelegatedBlockRenderingEvent extends deprecated class Symfony\\\\Component\\\\EventDispatcher\\\\Event\\:
since Symfony 4\\.3, use "Symfony\\\\Contracts\\\\EventDispatcher\\\\Event" instead$# since Symfony 4\\.3, use "Symfony\\\\Contracts\\\\EventDispatcher\\\\Event" instead$#
""" """
@@ -563,8 +513,7 @@ parameters:
path: src/Bundle/ChillMainBundle/Templating/Events/DelegatedBlockRenderingEvent.php path: src/Bundle/ChillMainBundle/Templating/Events/DelegatedBlockRenderingEvent.php
- -
message: message: """
"""
#^Class Chill\\\\PersonBundle\\\\Actions\\\\ActionEvent extends deprecated class Symfony\\\\Component\\\\EventDispatcher\\\\Event\\: #^Class Chill\\\\PersonBundle\\\\Actions\\\\ActionEvent extends deprecated class Symfony\\\\Component\\\\EventDispatcher\\\\Event\\:
since Symfony 4\\.3, use "Symfony\\\\Contracts\\\\EventDispatcher\\\\Event" instead$# since Symfony 4\\.3, use "Symfony\\\\Contracts\\\\EventDispatcher\\\\Event" instead$#
""" """
@@ -572,8 +521,7 @@ parameters:
path: src/Bundle/ChillPersonBundle/Actions/ActionEvent.php path: src/Bundle/ChillPersonBundle/Actions/ActionEvent.php
- -
message: message: """
"""
#^Call to deprecated method getCurrentAccompanyingPeriod\\(\\) of class Chill\\\\PersonBundle\\\\Entity\\\\Person\\: #^Call to deprecated method getCurrentAccompanyingPeriod\\(\\) of class Chill\\\\PersonBundle\\\\Entity\\\\Person\\:
since 1\\.1 use `getOpenedAccompanyingPeriod instead$# since 1\\.1 use `getOpenedAccompanyingPeriod instead$#
""" """
@@ -581,8 +529,7 @@ parameters:
path: src/Bundle/ChillPersonBundle/Command/ImportPeopleFromCSVCommand.php path: src/Bundle/ChillPersonBundle/Command/ImportPeopleFromCSVCommand.php
- -
message: message: """
"""
#^Instantiation of deprecated class Symfony\\\\Component\\\\EventDispatcher\\\\Event\\: #^Instantiation of deprecated class Symfony\\\\Component\\\\EventDispatcher\\\\Event\\:
since Symfony 4\\.3, use "Symfony\\\\Contracts\\\\EventDispatcher\\\\Event" instead$# since Symfony 4\\.3, use "Symfony\\\\Contracts\\\\EventDispatcher\\\\Event" instead$#
""" """
@@ -590,8 +537,7 @@ parameters:
path: src/Bundle/ChillPersonBundle/Command/ImportPeopleFromCSVCommand.php path: src/Bundle/ChillPersonBundle/Command/ImportPeopleFromCSVCommand.php
- -
message: message: """
"""
#^Class Chill\\\\PersonBundle\\\\Controller\\\\AccompanyingCourseController extends deprecated class Symfony\\\\Bundle\\\\FrameworkBundle\\\\Controller\\\\Controller\\: #^Class Chill\\\\PersonBundle\\\\Controller\\\\AccompanyingCourseController extends deprecated class Symfony\\\\Bundle\\\\FrameworkBundle\\\\Controller\\\\Controller\\:
since Symfony 4\\.2, use "Symfony\\\\Bundle\\\\FrameworkBundle\\\\Controller\\\\AbstractController" instead\\.$# since Symfony 4\\.2, use "Symfony\\\\Bundle\\\\FrameworkBundle\\\\Controller\\\\AbstractController" instead\\.$#
""" """
@@ -599,8 +545,7 @@ parameters:
path: src/Bundle/ChillPersonBundle/Controller/AccompanyingCourseController.php path: src/Bundle/ChillPersonBundle/Controller/AccompanyingCourseController.php
- -
message: message: """
"""
#^Call to deprecated method getCurrentAccompanyingPeriod\\(\\) of class Chill\\\\PersonBundle\\\\Entity\\\\Person\\: #^Call to deprecated method getCurrentAccompanyingPeriod\\(\\) of class Chill\\\\PersonBundle\\\\Entity\\\\Person\\:
since 1\\.1 use `getOpenedAccompanyingPeriod instead$# since 1\\.1 use `getOpenedAccompanyingPeriod instead$#
""" """
@@ -608,8 +553,7 @@ parameters:
path: src/Bundle/ChillPersonBundle/Controller/AccompanyingPeriodController.php path: src/Bundle/ChillPersonBundle/Controller/AccompanyingPeriodController.php
- -
message: message: """
"""
#^Class Chill\\\\PersonBundle\\\\Controller\\\\PersonDuplicateController extends deprecated class Symfony\\\\Bundle\\\\FrameworkBundle\\\\Controller\\\\Controller\\: #^Class Chill\\\\PersonBundle\\\\Controller\\\\PersonDuplicateController extends deprecated class Symfony\\\\Bundle\\\\FrameworkBundle\\\\Controller\\\\Controller\\:
since Symfony 4\\.2, use "Symfony\\\\Bundle\\\\FrameworkBundle\\\\Controller\\\\AbstractController" instead\\.$# since Symfony 4\\.2, use "Symfony\\\\Bundle\\\\FrameworkBundle\\\\Controller\\\\AbstractController" instead\\.$#
""" """
@@ -622,8 +566,7 @@ parameters:
path: src/Bundle/ChillPersonBundle/Entity/Person.php path: src/Bundle/ChillPersonBundle/Entity/Person.php
- -
message: message: """
"""
#^Return type of method Chill\\\\PersonBundle\\\\Export\\\\Aggregator\\\\AgeAggregator\\:\\:addRole\\(\\) has typehint with deprecated class Symfony\\\\Component\\\\Security\\\\Core\\\\Role\\\\Role\\: #^Return type of method Chill\\\\PersonBundle\\\\Export\\\\Aggregator\\\\AgeAggregator\\:\\:addRole\\(\\) has typehint with deprecated class Symfony\\\\Component\\\\Security\\\\Core\\\\Role\\\\Role\\:
since Symfony 4\\.3, to be removed in 5\\.0\\. Use strings as roles instead\\.$# since Symfony 4\\.3, to be removed in 5\\.0\\. Use strings as roles instead\\.$#
""" """
@@ -631,8 +574,7 @@ parameters:
path: src/Bundle/ChillPersonBundle/Export/Aggregator/AgeAggregator.php path: src/Bundle/ChillPersonBundle/Export/Aggregator/AgeAggregator.php
- -
message: message: """
"""
#^Return type of method Chill\\\\PersonBundle\\\\Export\\\\Aggregator\\\\CountryOfBirthAggregator\\:\\:addRole\\(\\) has typehint with deprecated class Symfony\\\\Component\\\\Security\\\\Core\\\\Role\\\\Role\\: #^Return type of method Chill\\\\PersonBundle\\\\Export\\\\Aggregator\\\\CountryOfBirthAggregator\\:\\:addRole\\(\\) has typehint with deprecated class Symfony\\\\Component\\\\Security\\\\Core\\\\Role\\\\Role\\:
since Symfony 4\\.3, to be removed in 5\\.0\\. Use strings as roles instead\\.$# since Symfony 4\\.3, to be removed in 5\\.0\\. Use strings as roles instead\\.$#
""" """
@@ -640,8 +582,7 @@ parameters:
path: src/Bundle/ChillPersonBundle/Export/Aggregator/CountryOfBirthAggregator.php path: src/Bundle/ChillPersonBundle/Export/Aggregator/CountryOfBirthAggregator.php
- -
message: message: """
"""
#^Return type of method Chill\\\\PersonBundle\\\\Export\\\\Aggregator\\\\GenderAggregator\\:\\:addRole\\(\\) has typehint with deprecated class Symfony\\\\Component\\\\Security\\\\Core\\\\Role\\\\Role\\: #^Return type of method Chill\\\\PersonBundle\\\\Export\\\\Aggregator\\\\GenderAggregator\\:\\:addRole\\(\\) has typehint with deprecated class Symfony\\\\Component\\\\Security\\\\Core\\\\Role\\\\Role\\:
since Symfony 4\\.3, to be removed in 5\\.0\\. Use strings as roles instead\\.$# since Symfony 4\\.3, to be removed in 5\\.0\\. Use strings as roles instead\\.$#
""" """
@@ -649,8 +590,7 @@ parameters:
path: src/Bundle/ChillPersonBundle/Export/Aggregator/GenderAggregator.php path: src/Bundle/ChillPersonBundle/Export/Aggregator/GenderAggregator.php
- -
message: message: """
"""
#^Return type of method Chill\\\\PersonBundle\\\\Export\\\\Aggregator\\\\NationalityAggregator\\:\\:addRole\\(\\) has typehint with deprecated class Symfony\\\\Component\\\\Security\\\\Core\\\\Role\\\\Role\\: #^Return type of method Chill\\\\PersonBundle\\\\Export\\\\Aggregator\\\\NationalityAggregator\\:\\:addRole\\(\\) has typehint with deprecated class Symfony\\\\Component\\\\Security\\\\Core\\\\Role\\\\Role\\:
since Symfony 4\\.3, to be removed in 5\\.0\\. Use strings as roles instead\\.$# since Symfony 4\\.3, to be removed in 5\\.0\\. Use strings as roles instead\\.$#
""" """
@@ -658,8 +598,7 @@ parameters:
path: src/Bundle/ChillPersonBundle/Export/Aggregator/NationalityAggregator.php path: src/Bundle/ChillPersonBundle/Export/Aggregator/NationalityAggregator.php
- -
message: message: """
"""
#^Instantiation of deprecated class Symfony\\\\Component\\\\Security\\\\Core\\\\Role\\\\Role\\: #^Instantiation of deprecated class Symfony\\\\Component\\\\Security\\\\Core\\\\Role\\\\Role\\:
since Symfony 4\\.3, to be removed in 5\\.0\\. Use strings as roles instead\\.$# since Symfony 4\\.3, to be removed in 5\\.0\\. Use strings as roles instead\\.$#
""" """
@@ -667,8 +606,7 @@ parameters:
path: src/Bundle/ChillPersonBundle/Export/Export/CountPerson.php path: src/Bundle/ChillPersonBundle/Export/Export/CountPerson.php
- -
message: message: """
"""
#^Return type of method Chill\\\\PersonBundle\\\\Export\\\\Export\\\\CountPerson\\:\\:requiredRole\\(\\) has typehint with deprecated class Symfony\\\\Component\\\\Security\\\\Core\\\\Role\\\\Role\\: #^Return type of method Chill\\\\PersonBundle\\\\Export\\\\Export\\\\CountPerson\\:\\:requiredRole\\(\\) has typehint with deprecated class Symfony\\\\Component\\\\Security\\\\Core\\\\Role\\\\Role\\:
since Symfony 4\\.3, to be removed in 5\\.0\\. Use strings as roles instead\\.$# since Symfony 4\\.3, to be removed in 5\\.0\\. Use strings as roles instead\\.$#
""" """
@@ -676,8 +614,7 @@ parameters:
path: src/Bundle/ChillPersonBundle/Export/Export/CountPerson.php path: src/Bundle/ChillPersonBundle/Export/Export/CountPerson.php
- -
message: message: """
"""
#^Instantiation of deprecated class Symfony\\\\Component\\\\Security\\\\Core\\\\Role\\\\Role\\: #^Instantiation of deprecated class Symfony\\\\Component\\\\Security\\\\Core\\\\Role\\\\Role\\:
since Symfony 4\\.3, to be removed in 5\\.0\\. Use strings as roles instead\\.$# since Symfony 4\\.3, to be removed in 5\\.0\\. Use strings as roles instead\\.$#
""" """
@@ -685,8 +622,7 @@ parameters:
path: src/Bundle/ChillPersonBundle/Export/Export/ListPerson.php path: src/Bundle/ChillPersonBundle/Export/Export/ListPerson.php
- -
message: message: """
"""
#^Return type of method Chill\\\\PersonBundle\\\\Export\\\\Export\\\\ListPerson\\:\\:requiredRole\\(\\) has typehint with deprecated class Symfony\\\\Component\\\\Security\\\\Core\\\\Role\\\\Role\\: #^Return type of method Chill\\\\PersonBundle\\\\Export\\\\Export\\\\ListPerson\\:\\:requiredRole\\(\\) has typehint with deprecated class Symfony\\\\Component\\\\Security\\\\Core\\\\Role\\\\Role\\:
since Symfony 4\\.3, to be removed in 5\\.0\\. Use strings as roles instead\\.$# since Symfony 4\\.3, to be removed in 5\\.0\\. Use strings as roles instead\\.$#
""" """
@@ -694,8 +630,7 @@ parameters:
path: src/Bundle/ChillPersonBundle/Export/Export/ListPerson.php path: src/Bundle/ChillPersonBundle/Export/Export/ListPerson.php
- -
message: message: """
"""
#^Call to deprecated method execute\\(\\) of class Doctrine\\\\DBAL\\\\Statement\\: #^Call to deprecated method execute\\(\\) of class Doctrine\\\\DBAL\\\\Statement\\:
Statement\\:\\:execute\\(\\) is deprecated, use Statement\\:\\:executeQuery\\(\\) or executeStatement\\(\\) instead$# Statement\\:\\:execute\\(\\) is deprecated, use Statement\\:\\:executeQuery\\(\\) or executeStatement\\(\\) instead$#
""" """
@@ -703,8 +638,7 @@ parameters:
path: src/Bundle/ChillPersonBundle/Export/Export/ListPersonDuplicate.php path: src/Bundle/ChillPersonBundle/Export/Export/ListPersonDuplicate.php
- -
message: message: """
"""
#^Instantiation of deprecated class Symfony\\\\Component\\\\Security\\\\Core\\\\Role\\\\Role\\: #^Instantiation of deprecated class Symfony\\\\Component\\\\Security\\\\Core\\\\Role\\\\Role\\:
since Symfony 4\\.3, to be removed in 5\\.0\\. Use strings as roles instead\\.$# since Symfony 4\\.3, to be removed in 5\\.0\\. Use strings as roles instead\\.$#
""" """
@@ -712,8 +646,7 @@ parameters:
path: src/Bundle/ChillPersonBundle/Export/Export/ListPersonDuplicate.php path: src/Bundle/ChillPersonBundle/Export/Export/ListPersonDuplicate.php
- -
message: message: """
"""
#^Return type of method Chill\\\\PersonBundle\\\\Export\\\\Export\\\\ListPersonDuplicate\\:\\:requiredRole\\(\\) has typehint with deprecated class Symfony\\\\Component\\\\Security\\\\Core\\\\Role\\\\Role\\: #^Return type of method Chill\\\\PersonBundle\\\\Export\\\\Export\\\\ListPersonDuplicate\\:\\:requiredRole\\(\\) has typehint with deprecated class Symfony\\\\Component\\\\Security\\\\Core\\\\Role\\\\Role\\:
since Symfony 4\\.3, to be removed in 5\\.0\\. Use strings as roles instead\\.$# since Symfony 4\\.3, to be removed in 5\\.0\\. Use strings as roles instead\\.$#
""" """
@@ -721,8 +654,7 @@ parameters:
path: src/Bundle/ChillPersonBundle/Export/Export/ListPersonDuplicate.php path: src/Bundle/ChillPersonBundle/Export/Export/ListPersonDuplicate.php
- -
message: message: """
"""
#^Return type of method Chill\\\\PersonBundle\\\\Export\\\\Filter\\\\AccompanyingPeriodClosingFilter\\:\\:addRole\\(\\) has typehint with deprecated class Symfony\\\\Component\\\\Security\\\\Core\\\\Role\\\\Role\\: #^Return type of method Chill\\\\PersonBundle\\\\Export\\\\Filter\\\\AccompanyingPeriodClosingFilter\\:\\:addRole\\(\\) has typehint with deprecated class Symfony\\\\Component\\\\Security\\\\Core\\\\Role\\\\Role\\:
since Symfony 4\\.3, to be removed in 5\\.0\\. Use strings as roles instead\\.$# since Symfony 4\\.3, to be removed in 5\\.0\\. Use strings as roles instead\\.$#
""" """
@@ -730,8 +662,7 @@ parameters:
path: src/Bundle/ChillPersonBundle/Export/Filter/AccompanyingPeriodClosingFilter.php path: src/Bundle/ChillPersonBundle/Export/Filter/AccompanyingPeriodClosingFilter.php
- -
message: message: """
"""
#^Return type of method Chill\\\\PersonBundle\\\\Export\\\\Filter\\\\AccompanyingPeriodFilter\\:\\:addRole\\(\\) has typehint with deprecated class Symfony\\\\Component\\\\Security\\\\Core\\\\Role\\\\Role\\: #^Return type of method Chill\\\\PersonBundle\\\\Export\\\\Filter\\\\AccompanyingPeriodFilter\\:\\:addRole\\(\\) has typehint with deprecated class Symfony\\\\Component\\\\Security\\\\Core\\\\Role\\\\Role\\:
since Symfony 4\\.3, to be removed in 5\\.0\\. Use strings as roles instead\\.$# since Symfony 4\\.3, to be removed in 5\\.0\\. Use strings as roles instead\\.$#
""" """
@@ -739,8 +670,7 @@ parameters:
path: src/Bundle/ChillPersonBundle/Export/Filter/AccompanyingPeriodFilter.php path: src/Bundle/ChillPersonBundle/Export/Filter/AccompanyingPeriodFilter.php
- -
message: message: """
"""
#^Return type of method Chill\\\\PersonBundle\\\\Export\\\\Filter\\\\AccompanyingPeriodOpeningFilter\\:\\:addRole\\(\\) has typehint with deprecated class Symfony\\\\Component\\\\Security\\\\Core\\\\Role\\\\Role\\: #^Return type of method Chill\\\\PersonBundle\\\\Export\\\\Filter\\\\AccompanyingPeriodOpeningFilter\\:\\:addRole\\(\\) has typehint with deprecated class Symfony\\\\Component\\\\Security\\\\Core\\\\Role\\\\Role\\:
since Symfony 4\\.3, to be removed in 5\\.0\\. Use strings as roles instead\\.$# since Symfony 4\\.3, to be removed in 5\\.0\\. Use strings as roles instead\\.$#
""" """
@@ -748,8 +678,7 @@ parameters:
path: src/Bundle/ChillPersonBundle/Export/Filter/AccompanyingPeriodOpeningFilter.php path: src/Bundle/ChillPersonBundle/Export/Filter/AccompanyingPeriodOpeningFilter.php
- -
message: message: """
"""
#^Return type of method Chill\\\\PersonBundle\\\\Export\\\\Filter\\\\BirthdateFilter\\:\\:addRole\\(\\) has typehint with deprecated class Symfony\\\\Component\\\\Security\\\\Core\\\\Role\\\\Role\\: #^Return type of method Chill\\\\PersonBundle\\\\Export\\\\Filter\\\\BirthdateFilter\\:\\:addRole\\(\\) has typehint with deprecated class Symfony\\\\Component\\\\Security\\\\Core\\\\Role\\\\Role\\:
since Symfony 4\\.3, to be removed in 5\\.0\\. Use strings as roles instead\\.$# since Symfony 4\\.3, to be removed in 5\\.0\\. Use strings as roles instead\\.$#
""" """
@@ -757,8 +686,7 @@ parameters:
path: src/Bundle/ChillPersonBundle/Export/Filter/BirthdateFilter.php path: src/Bundle/ChillPersonBundle/Export/Filter/BirthdateFilter.php
- -
message: message: """
"""
#^Return type of method Chill\\\\PersonBundle\\\\Export\\\\Filter\\\\GenderFilter\\:\\:addRole\\(\\) has typehint with deprecated class Symfony\\\\Component\\\\Security\\\\Core\\\\Role\\\\Role\\: #^Return type of method Chill\\\\PersonBundle\\\\Export\\\\Filter\\\\GenderFilter\\:\\:addRole\\(\\) has typehint with deprecated class Symfony\\\\Component\\\\Security\\\\Core\\\\Role\\\\Role\\:
since Symfony 4\\.3, to be removed in 5\\.0\\. Use strings as roles instead\\.$# since Symfony 4\\.3, to be removed in 5\\.0\\. Use strings as roles instead\\.$#
""" """
@@ -766,8 +694,7 @@ parameters:
path: src/Bundle/ChillPersonBundle/Export/Filter/GenderFilter.php path: src/Bundle/ChillPersonBundle/Export/Filter/GenderFilter.php
- -
message: message: """
"""
#^Return type of method Chill\\\\PersonBundle\\\\Export\\\\Filter\\\\NationalityFilter\\:\\:addRole\\(\\) has typehint with deprecated class Symfony\\\\Component\\\\Security\\\\Core\\\\Role\\\\Role\\: #^Return type of method Chill\\\\PersonBundle\\\\Export\\\\Filter\\\\NationalityFilter\\:\\:addRole\\(\\) has typehint with deprecated class Symfony\\\\Component\\\\Security\\\\Core\\\\Role\\\\Role\\:
since Symfony 4\\.3, to be removed in 5\\.0\\. Use strings as roles instead\\.$# since Symfony 4\\.3, to be removed in 5\\.0\\. Use strings as roles instead\\.$#
""" """
@@ -775,8 +702,7 @@ parameters:
path: src/Bundle/ChillPersonBundle/Export/Filter/NationalityFilter.php path: src/Bundle/ChillPersonBundle/Export/Filter/NationalityFilter.php
- -
message: message: """
"""
#^Instantiation of deprecated class Symfony\\\\Component\\\\Security\\\\Core\\\\Role\\\\Role\\: #^Instantiation of deprecated class Symfony\\\\Component\\\\Security\\\\Core\\\\Role\\\\Role\\:
since Symfony 4\\.3, to be removed in 5\\.0\\. Use strings as roles instead\\.$# since Symfony 4\\.3, to be removed in 5\\.0\\. Use strings as roles instead\\.$#
""" """
@@ -789,8 +715,7 @@ parameters:
path: src/Bundle/ChillPersonBundle/Form/PersonType.php path: src/Bundle/ChillPersonBundle/Form/PersonType.php
- -
message: message: """
"""
#^Fetching class constant class of deprecated class Symfony\\\\Component\\\\Security\\\\Core\\\\Role\\\\Role\\: #^Fetching class constant class of deprecated class Symfony\\\\Component\\\\Security\\\\Core\\\\Role\\\\Role\\:
since Symfony 4\\.3, to be removed in 5\\.0\\. Use strings as roles instead\\.$# since Symfony 4\\.3, to be removed in 5\\.0\\. Use strings as roles instead\\.$#
""" """
@@ -798,8 +723,7 @@ parameters:
path: src/Bundle/ChillPersonBundle/Form/Type/PickPersonType.php path: src/Bundle/ChillPersonBundle/Form/Type/PickPersonType.php
- -
message: message: """
"""
#^Class Chill\\\\PersonBundle\\\\Privacy\\\\AccompanyingPeriodPrivacyEvent extends deprecated class Symfony\\\\Component\\\\EventDispatcher\\\\Event\\: #^Class Chill\\\\PersonBundle\\\\Privacy\\\\AccompanyingPeriodPrivacyEvent extends deprecated class Symfony\\\\Component\\\\EventDispatcher\\\\Event\\:
since Symfony 4\\.3, use "Symfony\\\\Contracts\\\\EventDispatcher\\\\Event" instead$# since Symfony 4\\.3, use "Symfony\\\\Contracts\\\\EventDispatcher\\\\Event" instead$#
""" """
@@ -807,8 +731,7 @@ parameters:
path: src/Bundle/ChillPersonBundle/Privacy/AccompanyingPeriodPrivacyEvent.php path: src/Bundle/ChillPersonBundle/Privacy/AccompanyingPeriodPrivacyEvent.php
- -
message: message: """
"""
#^Class Chill\\\\PersonBundle\\\\Privacy\\\\PrivacyEvent extends deprecated class Symfony\\\\Component\\\\EventDispatcher\\\\Event\\: #^Class Chill\\\\PersonBundle\\\\Privacy\\\\PrivacyEvent extends deprecated class Symfony\\\\Component\\\\EventDispatcher\\\\Event\\:
since Symfony 4\\.3, use "Symfony\\\\Contracts\\\\EventDispatcher\\\\Event" instead$# since Symfony 4\\.3, use "Symfony\\\\Contracts\\\\EventDispatcher\\\\Event" instead$#
""" """
@@ -816,8 +739,7 @@ parameters:
path: src/Bundle/ChillPersonBundle/Privacy/PrivacyEvent.php path: src/Bundle/ChillPersonBundle/Privacy/PrivacyEvent.php
- -
message: message: """
"""
#^Parameter \\$centerResolverDispatcher of method Chill\\\\PersonBundle\\\\Repository\\\\AccompanyingPeriodACLAwareRepository\\:\\:__construct\\(\\) has typehint with deprecated interface Chill\\\\MainBundle\\\\Security\\\\Resolver\\\\CenterResolverDispatcherInterface\\: #^Parameter \\$centerResolverDispatcher of method Chill\\\\PersonBundle\\\\Repository\\\\AccompanyingPeriodACLAwareRepository\\:\\:__construct\\(\\) has typehint with deprecated interface Chill\\\\MainBundle\\\\Security\\\\Resolver\\\\CenterResolverDispatcherInterface\\:
Use CenterResolverManager and its interface CenterResolverManagerInterface$# Use CenterResolverManager and its interface CenterResolverManagerInterface$#
""" """
@@ -825,8 +747,7 @@ parameters:
path: src/Bundle/ChillPersonBundle/Repository/AccompanyingPeriodACLAwareRepository.php path: src/Bundle/ChillPersonBundle/Repository/AccompanyingPeriodACLAwareRepository.php
- -
message: message: """
"""
#^Instantiation of deprecated class Symfony\\\\Component\\\\Security\\\\Core\\\\Role\\\\Role\\: #^Instantiation of deprecated class Symfony\\\\Component\\\\Security\\\\Core\\\\Role\\\\Role\\:
since Symfony 4\\.3, to be removed in 5\\.0\\. Use strings as roles instead\\.$# since Symfony 4\\.3, to be removed in 5\\.0\\. Use strings as roles instead\\.$#
""" """
@@ -834,8 +755,7 @@ parameters:
path: src/Bundle/ChillPersonBundle/Widget/PersonListWidget.php path: src/Bundle/ChillPersonBundle/Widget/PersonListWidget.php
- -
message: message: """
"""
#^Call to deprecated method getReachableScopes\\(\\) of class Chill\\\\MainBundle\\\\Security\\\\Authorization\\\\AuthorizationHelper\\: #^Call to deprecated method getReachableScopes\\(\\) of class Chill\\\\MainBundle\\\\Security\\\\Authorization\\\\AuthorizationHelper\\:
Use getReachableCircles$# Use getReachableCircles$#
""" """
@@ -843,8 +763,7 @@ parameters:
path: src/Bundle/ChillReportBundle/Controller/ReportController.php path: src/Bundle/ChillReportBundle/Controller/ReportController.php
- -
message: message: """
"""
#^Instantiation of deprecated class Symfony\\\\Component\\\\Security\\\\Core\\\\Role\\\\Role\\: #^Instantiation of deprecated class Symfony\\\\Component\\\\Security\\\\Core\\\\Role\\\\Role\\:
since Symfony 4\\.3, to be removed in 5\\.0\\. Use strings as roles instead\\.$# since Symfony 4\\.3, to be removed in 5\\.0\\. Use strings as roles instead\\.$#
""" """
@@ -852,8 +771,7 @@ parameters:
path: src/Bundle/ChillReportBundle/Controller/ReportController.php path: src/Bundle/ChillReportBundle/Controller/ReportController.php
- -
message: message: """
"""
#^Instantiation of deprecated class Symfony\\\\Component\\\\Security\\\\Core\\\\Role\\\\Role\\: #^Instantiation of deprecated class Symfony\\\\Component\\\\Security\\\\Core\\\\Role\\\\Role\\:
since Symfony 4\\.3, to be removed in 5\\.0\\. Use strings as roles instead\\.$# since Symfony 4\\.3, to be removed in 5\\.0\\. Use strings as roles instead\\.$#
""" """
@@ -861,8 +779,7 @@ parameters:
path: src/Bundle/ChillReportBundle/Export/Export/ReportList.php path: src/Bundle/ChillReportBundle/Export/Export/ReportList.php
- -
message: message: """
"""
#^Return type of method Chill\\\\ReportBundle\\\\Export\\\\Export\\\\ReportList\\:\\:requiredRole\\(\\) has typehint with deprecated class Symfony\\\\Component\\\\Security\\\\Core\\\\Role\\\\Role\\: #^Return type of method Chill\\\\ReportBundle\\\\Export\\\\Export\\\\ReportList\\:\\:requiredRole\\(\\) has typehint with deprecated class Symfony\\\\Component\\\\Security\\\\Core\\\\Role\\\\Role\\:
since Symfony 4\\.3, to be removed in 5\\.0\\. Use strings as roles instead\\.$# since Symfony 4\\.3, to be removed in 5\\.0\\. Use strings as roles instead\\.$#
""" """
@@ -870,8 +787,7 @@ parameters:
path: src/Bundle/ChillReportBundle/Export/Export/ReportList.php path: src/Bundle/ChillReportBundle/Export/Export/ReportList.php
- -
message: message: """
"""
#^Return type of method Chill\\\\ReportBundle\\\\Export\\\\Filter\\\\ReportDateFilter\\:\\:addRole\\(\\) has typehint with deprecated class Symfony\\\\Component\\\\Security\\\\Core\\\\Role\\\\Role\\: #^Return type of method Chill\\\\ReportBundle\\\\Export\\\\Filter\\\\ReportDateFilter\\:\\:addRole\\(\\) has typehint with deprecated class Symfony\\\\Component\\\\Security\\\\Core\\\\Role\\\\Role\\:
since Symfony 4\\.3, to be removed in 5\\.0\\. Use strings as roles instead\\.$# since Symfony 4\\.3, to be removed in 5\\.0\\. Use strings as roles instead\\.$#
""" """
@@ -879,8 +795,7 @@ parameters:
path: src/Bundle/ChillReportBundle/Export/Filter/ReportDateFilter.php path: src/Bundle/ChillReportBundle/Export/Filter/ReportDateFilter.php
- -
message: message: """
"""
#^Call to deprecated method getReachableScopes\\(\\) of class Chill\\\\MainBundle\\\\Security\\\\Authorization\\\\AuthorizationHelper\\: #^Call to deprecated method getReachableScopes\\(\\) of class Chill\\\\MainBundle\\\\Security\\\\Authorization\\\\AuthorizationHelper\\:
Use getReachableCircles$# Use getReachableCircles$#
""" """
@@ -888,8 +803,7 @@ parameters:
path: src/Bundle/ChillReportBundle/Form/ReportType.php path: src/Bundle/ChillReportBundle/Form/ReportType.php
- -
message: message: """
"""
#^Parameter \\$role of method Chill\\\\ReportBundle\\\\Form\\\\ReportType\\:\\:appendScopeChoices\\(\\) has typehint with deprecated class Symfony\\\\Component\\\\Security\\\\Core\\\\Role\\\\Role\\: #^Parameter \\$role of method Chill\\\\ReportBundle\\\\Form\\\\ReportType\\:\\:appendScopeChoices\\(\\) has typehint with deprecated class Symfony\\\\Component\\\\Security\\\\Core\\\\Role\\\\Role\\:
since Symfony 4\\.3, to be removed in 5\\.0\\. Use strings as roles instead\\.$# since Symfony 4\\.3, to be removed in 5\\.0\\. Use strings as roles instead\\.$#
""" """
@@ -897,8 +811,7 @@ parameters:
path: src/Bundle/ChillReportBundle/Form/ReportType.php path: src/Bundle/ChillReportBundle/Form/ReportType.php
- -
message: message: """
"""
#^Call to deprecated method getReachableScopes\\(\\) of class Chill\\\\MainBundle\\\\Security\\\\Authorization\\\\AuthorizationHelper\\: #^Call to deprecated method getReachableScopes\\(\\) of class Chill\\\\MainBundle\\\\Security\\\\Authorization\\\\AuthorizationHelper\\:
Use getReachableCircles$# Use getReachableCircles$#
""" """
@@ -906,8 +819,7 @@ parameters:
path: src/Bundle/ChillReportBundle/Search/ReportSearch.php path: src/Bundle/ChillReportBundle/Search/ReportSearch.php
- -
message: message: """
"""
#^Instantiation of deprecated class Symfony\\\\Component\\\\Security\\\\Core\\\\Role\\\\Role\\: #^Instantiation of deprecated class Symfony\\\\Component\\\\Security\\\\Core\\\\Role\\\\Role\\:
since Symfony 4\\.3, to be removed in 5\\.0\\. Use strings as roles instead\\.$# since Symfony 4\\.3, to be removed in 5\\.0\\. Use strings as roles instead\\.$#
""" """
@@ -915,8 +827,7 @@ parameters:
path: src/Bundle/ChillReportBundle/Search/ReportSearch.php path: src/Bundle/ChillReportBundle/Search/ReportSearch.php
- -
message: message: """
"""
#^Call to deprecated method getReachableScopes\\(\\) of class Chill\\\\MainBundle\\\\Security\\\\Authorization\\\\AuthorizationHelper\\: #^Call to deprecated method getReachableScopes\\(\\) of class Chill\\\\MainBundle\\\\Security\\\\Authorization\\\\AuthorizationHelper\\:
Use getReachableCircles$# Use getReachableCircles$#
""" """
@@ -924,8 +835,7 @@ parameters:
path: src/Bundle/ChillReportBundle/Timeline/TimelineReportProvider.php path: src/Bundle/ChillReportBundle/Timeline/TimelineReportProvider.php
- -
message: message: """
"""
#^Instantiation of deprecated class Symfony\\\\Component\\\\Security\\\\Core\\\\Role\\\\Role\\: #^Instantiation of deprecated class Symfony\\\\Component\\\\Security\\\\Core\\\\Role\\\\Role\\:
since Symfony 4\\.3, to be removed in 5\\.0\\. Use strings as roles instead\\.$# since Symfony 4\\.3, to be removed in 5\\.0\\. Use strings as roles instead\\.$#
""" """
@@ -933,8 +843,7 @@ parameters:
path: src/Bundle/ChillTaskBundle/Controller/SingleTaskController.php path: src/Bundle/ChillTaskBundle/Controller/SingleTaskController.php
- -
message: message: """
"""
#^Parameter \\$centerResolverDispatcher of method Chill\\\\TaskBundle\\\\Controller\\\\SingleTaskController\\:\\:__construct\\(\\) has typehint with deprecated interface Chill\\\\MainBundle\\\\Security\\\\Resolver\\\\CenterResolverDispatcherInterface\\: #^Parameter \\$centerResolverDispatcher of method Chill\\\\TaskBundle\\\\Controller\\\\SingleTaskController\\:\\:__construct\\(\\) has typehint with deprecated interface Chill\\\\MainBundle\\\\Security\\\\Resolver\\\\CenterResolverDispatcherInterface\\:
Use CenterResolverManager and its interface CenterResolverManagerInterface$# Use CenterResolverManager and its interface CenterResolverManagerInterface$#
""" """
@@ -942,8 +851,7 @@ parameters:
path: src/Bundle/ChillTaskBundle/Controller/SingleTaskController.php path: src/Bundle/ChillTaskBundle/Controller/SingleTaskController.php
- -
message: message: """
"""
#^Parameter \\$role of method Chill\\\\TaskBundle\\\\Controller\\\\SingleTaskController\\:\\:setCreateForm\\(\\) has typehint with deprecated class Symfony\\\\Component\\\\Security\\\\Core\\\\Role\\\\Role\\: #^Parameter \\$role of method Chill\\\\TaskBundle\\\\Controller\\\\SingleTaskController\\:\\:setCreateForm\\(\\) has typehint with deprecated class Symfony\\\\Component\\\\Security\\\\Core\\\\Role\\\\Role\\:
since Symfony 4\\.3, to be removed in 5\\.0\\. Use strings as roles instead\\.$# since Symfony 4\\.3, to be removed in 5\\.0\\. Use strings as roles instead\\.$#
""" """
@@ -951,8 +859,7 @@ parameters:
path: src/Bundle/ChillTaskBundle/Controller/SingleTaskController.php path: src/Bundle/ChillTaskBundle/Controller/SingleTaskController.php
- -
message: message: """
"""
#^Class Chill\\\\TaskBundle\\\\Event\\\\TaskEvent extends deprecated class Symfony\\\\Component\\\\EventDispatcher\\\\Event\\: #^Class Chill\\\\TaskBundle\\\\Event\\\\TaskEvent extends deprecated class Symfony\\\\Component\\\\EventDispatcher\\\\Event\\:
since Symfony 4\\.3, use "Symfony\\\\Contracts\\\\EventDispatcher\\\\Event" instead$# since Symfony 4\\.3, use "Symfony\\\\Contracts\\\\EventDispatcher\\\\Event" instead$#
""" """
@@ -960,8 +867,7 @@ parameters:
path: src/Bundle/ChillTaskBundle/Event/TaskEvent.php path: src/Bundle/ChillTaskBundle/Event/TaskEvent.php
- -
message: message: """
"""
#^Class Chill\\\\TaskBundle\\\\Event\\\\UI\\\\UIEvent extends deprecated class Symfony\\\\Component\\\\EventDispatcher\\\\Event\\: #^Class Chill\\\\TaskBundle\\\\Event\\\\UI\\\\UIEvent extends deprecated class Symfony\\\\Component\\\\EventDispatcher\\\\Event\\:
since Symfony 4\\.3, use "Symfony\\\\Contracts\\\\EventDispatcher\\\\Event" instead$# since Symfony 4\\.3, use "Symfony\\\\Contracts\\\\EventDispatcher\\\\Event" instead$#
""" """
@@ -969,8 +875,7 @@ parameters:
path: src/Bundle/ChillTaskBundle/Event/UI/UIEvent.php path: src/Bundle/ChillTaskBundle/Event/UI/UIEvent.php
- -
message: message: """
"""
#^Instantiation of deprecated class Symfony\\\\Component\\\\Security\\\\Core\\\\Role\\\\Role\\: #^Instantiation of deprecated class Symfony\\\\Component\\\\Security\\\\Core\\\\Role\\\\Role\\:
since Symfony 4\\.3, to be removed in 5\\.0\\. Use strings as roles instead\\.$# since Symfony 4\\.3, to be removed in 5\\.0\\. Use strings as roles instead\\.$#
""" """
@@ -978,8 +883,7 @@ parameters:
path: src/Bundle/ChillTaskBundle/Form/SingleTaskListType.php path: src/Bundle/ChillTaskBundle/Form/SingleTaskListType.php
- -
message: message: """
"""
#^Fetching class constant class of deprecated class Symfony\\\\Component\\\\Security\\\\Core\\\\Role\\\\Role\\: #^Fetching class constant class of deprecated class Symfony\\\\Component\\\\Security\\\\Core\\\\Role\\\\Role\\:
since Symfony 4\\.3, to be removed in 5\\.0\\. Use strings as roles instead\\.$# since Symfony 4\\.3, to be removed in 5\\.0\\. Use strings as roles instead\\.$#
""" """
@@ -987,8 +891,7 @@ parameters:
path: src/Bundle/ChillTaskBundle/Form/SingleTaskType.php path: src/Bundle/ChillTaskBundle/Form/SingleTaskType.php
- -
message: message: """
"""
#^Parameter \\$centerResolverDispatcher of method Chill\\\\TaskBundle\\\\Form\\\\SingleTaskType\\:\\:__construct\\(\\) has typehint with deprecated interface Chill\\\\MainBundle\\\\Security\\\\Resolver\\\\CenterResolverDispatcherInterface\\: #^Parameter \\$centerResolverDispatcher of method Chill\\\\TaskBundle\\\\Form\\\\SingleTaskType\\:\\:__construct\\(\\) has typehint with deprecated interface Chill\\\\MainBundle\\\\Security\\\\Resolver\\\\CenterResolverDispatcherInterface\\:
Use CenterResolverManager and its interface CenterResolverManagerInterface$# Use CenterResolverManager and its interface CenterResolverManagerInterface$#
""" """
@@ -996,8 +899,7 @@ parameters:
path: src/Bundle/ChillTaskBundle/Form/SingleTaskType.php path: src/Bundle/ChillTaskBundle/Form/SingleTaskType.php
- -
message: message: """
"""
#^Parameter \\$centerResolverDispatcher of method Chill\\\\TaskBundle\\\\Repository\\\\SingleTaskAclAwareRepository\\:\\:__construct\\(\\) has typehint with deprecated interface Chill\\\\MainBundle\\\\Security\\\\Resolver\\\\CenterResolverDispatcherInterface\\: #^Parameter \\$centerResolverDispatcher of method Chill\\\\TaskBundle\\\\Repository\\\\SingleTaskAclAwareRepository\\:\\:__construct\\(\\) has typehint with deprecated interface Chill\\\\MainBundle\\\\Security\\\\Resolver\\\\CenterResolverDispatcherInterface\\:
Use CenterResolverManager and its interface CenterResolverManagerInterface$# Use CenterResolverManager and its interface CenterResolverManagerInterface$#
""" """
@@ -1005,8 +907,7 @@ parameters:
path: src/Bundle/ChillTaskBundle/Repository/SingleTaskAclAwareRepository.php path: src/Bundle/ChillTaskBundle/Repository/SingleTaskAclAwareRepository.php
- -
message: message: """
"""
#^Instantiation of deprecated class Symfony\\\\Component\\\\Security\\\\Core\\\\Role\\\\Role\\: #^Instantiation of deprecated class Symfony\\\\Component\\\\Security\\\\Core\\\\Role\\\\Role\\:
since Symfony 4\\.3, to be removed in 5\\.0\\. Use strings as roles instead\\.$# since Symfony 4\\.3, to be removed in 5\\.0\\. Use strings as roles instead\\.$#
""" """
@@ -1014,8 +915,7 @@ parameters:
path: src/Bundle/ChillTaskBundle/Repository/SingleTaskRepository.php path: src/Bundle/ChillTaskBundle/Repository/SingleTaskRepository.php
- -
message: message: """
"""
#^Class Chill\\\\TaskBundle\\\\Security\\\\Authorization\\\\AuthorizationEvent extends deprecated class Symfony\\\\Component\\\\EventDispatcher\\\\Event\\: #^Class Chill\\\\TaskBundle\\\\Security\\\\Authorization\\\\AuthorizationEvent extends deprecated class Symfony\\\\Component\\\\EventDispatcher\\\\Event\\:
since Symfony 4\\.3, use "Symfony\\\\Contracts\\\\EventDispatcher\\\\Event" instead$# since Symfony 4\\.3, use "Symfony\\\\Contracts\\\\EventDispatcher\\\\Event" instead$#
""" """
@@ -1023,8 +923,7 @@ parameters:
path: src/Bundle/ChillTaskBundle/Security/Authorization/AuthorizationEvent.php path: src/Bundle/ChillTaskBundle/Security/Authorization/AuthorizationEvent.php
- -
message: message: """
"""
#^Instantiation of deprecated class Symfony\\\\Component\\\\Security\\\\Core\\\\Role\\\\Role\\: #^Instantiation of deprecated class Symfony\\\\Component\\\\Security\\\\Core\\\\Role\\\\Role\\:
since Symfony 4\\.3, to be removed in 5\\.0\\. Use strings as roles instead\\.$# since Symfony 4\\.3, to be removed in 5\\.0\\. Use strings as roles instead\\.$#
""" """
@@ -1032,8 +931,7 @@ parameters:
path: src/Bundle/ChillTaskBundle/Timeline/TaskLifeCycleEventTimelineProvider.php path: src/Bundle/ChillTaskBundle/Timeline/TaskLifeCycleEventTimelineProvider.php
- -
message: message: """
"""
#^Instantiation of deprecated class Symfony\\\\Component\\\\Security\\\\Core\\\\Role\\\\Role\\: #^Instantiation of deprecated class Symfony\\\\Component\\\\Security\\\\Core\\\\Role\\\\Role\\:
since Symfony 4\\.3, to be removed in 5\\.0\\. Use strings as roles instead\\.$# since Symfony 4\\.3, to be removed in 5\\.0\\. Use strings as roles instead\\.$#
""" """

View File

@@ -25,16 +25,6 @@ parameters:
count: 1 count: 1
path: src/Bundle/ChillActivityBundle/Form/ActivityType.php path: src/Bundle/ChillActivityBundle/Form/ActivityType.php
-
message: "#^Only booleans are allowed in &&, mixed given on the right side\\.$#"
count: 3
path: src/Bundle/ChillActivityBundle/Form/ActivityType.php
-
message: "#^Only booleans are allowed in an if condition, mixed given\\.$#"
count: 2
path: src/Bundle/ChillActivityBundle/Form/ActivityType.php
- -
message: "#^Only booleans are allowed in an if condition, mixed given\\.$#" message: "#^Only booleans are allowed in an if condition, mixed given\\.$#"
count: 3 count: 3

View File

@@ -40,6 +40,9 @@
<testsuite name="DocGeneratorBundle"> <testsuite name="DocGeneratorBundle">
<directory suffix="Test.php">src/Bundle/ChillDocGeneratorBundle/tests/</directory> <directory suffix="Test.php">src/Bundle/ChillDocGeneratorBundle/tests/</directory>
</testsuite> </testsuite>
<testsuite name="WopiBundle">
<directory suffix="Test.php">src/Bundle/ChillWopiBundle/tests/</directory>
</testsuite>
</testsuites> </testsuites>
<listeners> <listeners>

View File

@@ -21,6 +21,7 @@ use Chill\ActivityBundle\Repository\ActivityTypeRepository;
use Chill\ActivityBundle\Security\Authorization\ActivityVoter; use Chill\ActivityBundle\Security\Authorization\ActivityVoter;
use Chill\MainBundle\Entity\Embeddable\CommentEmbeddable; use Chill\MainBundle\Entity\Embeddable\CommentEmbeddable;
use Chill\MainBundle\Repository\LocationRepository; use Chill\MainBundle\Repository\LocationRepository;
use Chill\MainBundle\Security\Resolver\CenterResolverManagerInterface;
use Chill\PersonBundle\Entity\AccompanyingPeriod; use Chill\PersonBundle\Entity\AccompanyingPeriod;
use Chill\PersonBundle\Entity\Person; use Chill\PersonBundle\Entity\Person;
use Chill\PersonBundle\Privacy\PrivacyEvent; use Chill\PersonBundle\Privacy\PrivacyEvent;
@@ -56,6 +57,8 @@ final class ActivityController extends AbstractController
private ActivityTypeRepository $activityTypeRepository; private ActivityTypeRepository $activityTypeRepository;
private CenterResolverManagerInterface $centerResolver;
private EntityManagerInterface $entityManager; private EntityManagerInterface $entityManager;
private EventDispatcherInterface $eventDispatcher; private EventDispatcherInterface $eventDispatcher;
@@ -82,7 +85,8 @@ final class ActivityController extends AbstractController
EntityManagerInterface $entityManager, EntityManagerInterface $entityManager,
EventDispatcherInterface $eventDispatcher, EventDispatcherInterface $eventDispatcher,
LoggerInterface $logger, LoggerInterface $logger,
SerializerInterface $serializer SerializerInterface $serializer,
CenterResolverManagerInterface $centerResolver
) { ) {
$this->activityACLAwareRepository = $activityACLAwareRepository; $this->activityACLAwareRepository = $activityACLAwareRepository;
$this->activityTypeRepository = $activityTypeRepository; $this->activityTypeRepository = $activityTypeRepository;
@@ -96,6 +100,7 @@ final class ActivityController extends AbstractController
$this->eventDispatcher = $eventDispatcher; $this->eventDispatcher = $eventDispatcher;
$this->logger = $logger; $this->logger = $logger;
$this->serializer = $serializer; $this->serializer = $serializer;
$this->centerResolver = $centerResolver;
} }
/** /**
@@ -198,7 +203,7 @@ final class ActivityController extends AbstractController
// $this->denyAccessUnlessGranted('CHILL_ACTIVITY_UPDATE', $entity); // $this->denyAccessUnlessGranted('CHILL_ACTIVITY_UPDATE', $entity);
$form = $this->createForm(ActivityType::class, $entity, [ $form = $this->createForm(ActivityType::class, $entity, [
'center' => $entity->getCenter(), 'center' => $this->centerResolver->resolveCenters($entity)[0] ?? null,
'role' => new Role('CHILL_ACTIVITY_UPDATE'), 'role' => new Role('CHILL_ACTIVITY_UPDATE'),
'activityType' => $entity->getActivityType(), 'activityType' => $entity->getActivityType(),
'accompanyingPeriod' => $accompanyingPeriod, 'accompanyingPeriod' => $accompanyingPeriod,
@@ -416,7 +421,7 @@ final class ActivityController extends AbstractController
$this->denyAccessUnlessGranted(ActivityVoter::CREATE, $entity); $this->denyAccessUnlessGranted(ActivityVoter::CREATE, $entity);
$form = $this->createForm(ActivityType::class, $entity, [ $form = $this->createForm(ActivityType::class, $entity, [
'center' => $entity->getCenter(), 'center' => $this->centerResolver->resolveCenters($entity)[0] ?? null,
'role' => new Role('CHILL_ACTIVITY_CREATE'), 'role' => new Role('CHILL_ACTIVITY_CREATE'),
'activityType' => $entity->getActivityType(), 'activityType' => $entity->getActivityType(),
'accompanyingPeriod' => $accompanyingPeriod, 'accompanyingPeriod' => $accompanyingPeriod,

View File

@@ -61,8 +61,6 @@ class ChillActivityExtension extends Extension implements PrependExtensionInterf
ActivityVoter::DELETE => [ActivityVoter::SEE_DETAILS], ActivityVoter::DELETE => [ActivityVoter::SEE_DETAILS],
ActivityVoter::SEE_DETAILS => [ActivityVoter::SEE], ActivityVoter::SEE_DETAILS => [ActivityVoter::SEE],
ActivityVoter::FULL => [ ActivityVoter::FULL => [
ActivityVoter::CREATE_PERSON,
ActivityVoter::CREATE_ACCOMPANYING_COURSE,
ActivityVoter::DELETE, ActivityVoter::DELETE,
ActivityVoter::UPDATE, ActivityVoter::UPDATE,
], ],

View File

@@ -16,8 +16,8 @@ use Chill\DocStoreBundle\Entity\StoredObject;
use Chill\MainBundle\Entity\Center; use Chill\MainBundle\Entity\Center;
use Chill\MainBundle\Entity\Embeddable\CommentEmbeddable; use Chill\MainBundle\Entity\Embeddable\CommentEmbeddable;
use Chill\MainBundle\Entity\Embeddable\PrivateCommentEmbeddable; use Chill\MainBundle\Entity\Embeddable\PrivateCommentEmbeddable;
use Chill\MainBundle\Entity\HasCenterInterface; use Chill\MainBundle\Entity\HasCentersInterface;
use Chill\MainBundle\Entity\HasScopeInterface; use Chill\MainBundle\Entity\HasScopesInterface;
use Chill\MainBundle\Entity\Location; use Chill\MainBundle\Entity\Location;
use Chill\MainBundle\Entity\Scope; use Chill\MainBundle\Entity\Scope;
use Chill\MainBundle\Entity\User; use Chill\MainBundle\Entity\User;
@@ -55,7 +55,7 @@ use Symfony\Component\Validator\Constraints as Assert;
* getUserFunction="getUser", * getUserFunction="getUser",
* path="scope") * path="scope")
*/ */
class Activity implements AccompanyingPeriodLinkedWithSocialIssuesEntityInterface, HasCenterInterface, HasScopeInterface class Activity implements AccompanyingPeriodLinkedWithSocialIssuesEntityInterface, HasCentersInterface, HasScopesInterface
{ {
public const SENTRECEIVED_RECEIVED = 'received'; public const SENTRECEIVED_RECEIVED = 'received';
@@ -306,13 +306,17 @@ class Activity implements AccompanyingPeriodLinkedWithSocialIssuesEntityInterfac
* get the center * get the center
* center is extracted from person. * center is extracted from person.
*/ */
public function getCenter(): ?Center public function getCenters(): iterable
{ {
if ($this->person instanceof Person) { if ($this->person instanceof Person) {
return $this->person->getCenter(); return [$this->person->getCenter()];
} }
return null; if ($this->getAccompanyingPeriod() instanceof AccompanyingPeriod) {
return $this->getAccompanyingPeriod()->getCenters() ?? [];
}
return [];
} }
public function getComment(): CommentEmbeddable public function getComment(): CommentEmbeddable
@@ -422,6 +426,19 @@ class Activity implements AccompanyingPeriodLinkedWithSocialIssuesEntityInterfac
return $this->scope; return $this->scope;
} }
public function getScopes(): iterable
{
if (null !== $this->getAccompanyingPeriod()) {
return $this->getAccompanyingPeriod()->getScopes();
}
if (null !== $this->getPerson()) {
return [$this->scope];
}
return [];
}
public function getSentReceived(): string public function getSentReceived(): string
{ {
return $this->sentReceived; return $this->sentReceived;

View File

@@ -14,17 +14,20 @@ namespace Chill\ActivityBundle\Form;
use Chill\ActivityBundle\Entity\Activity; use Chill\ActivityBundle\Entity\Activity;
use Chill\ActivityBundle\Entity\ActivityPresence; use Chill\ActivityBundle\Entity\ActivityPresence;
use Chill\ActivityBundle\Entity\ActivityReason; use Chill\ActivityBundle\Entity\ActivityReason;
use Chill\ActivityBundle\Security\Authorization\ActivityVoter;
use Chill\DocStoreBundle\Form\StoredObjectType; use Chill\DocStoreBundle\Form\StoredObjectType;
use Chill\MainBundle\Entity\Center;
use Chill\MainBundle\Entity\Location; use Chill\MainBundle\Entity\Location;
use Chill\MainBundle\Entity\User; use Chill\MainBundle\Entity\User;
use Chill\MainBundle\Form\Type\ChillCollectionType; use Chill\MainBundle\Form\Type\ChillCollectionType;
use Chill\MainBundle\Form\Type\ChillDateType; use Chill\MainBundle\Form\Type\ChillDateType;
use Chill\MainBundle\Form\Type\CommentType; use Chill\MainBundle\Form\Type\CommentType;
use Chill\MainBundle\Form\Type\PickUserDynamicType;
use Chill\MainBundle\Form\Type\PrivateCommentType; use Chill\MainBundle\Form\Type\PrivateCommentType;
use Chill\MainBundle\Form\Type\ScopePickerType; use Chill\MainBundle\Form\Type\ScopePickerType;
use Chill\MainBundle\Form\Type\UserPickerType;
use Chill\MainBundle\Security\Authorization\AuthorizationHelper; use Chill\MainBundle\Security\Authorization\AuthorizationHelper;
use Chill\MainBundle\Templating\TranslatableStringHelper; use Chill\MainBundle\Templating\TranslatableStringHelper;
use Chill\PersonBundle\Entity\AccompanyingPeriod;
use Chill\PersonBundle\Entity\Person; use Chill\PersonBundle\Entity\Person;
use Chill\PersonBundle\Entity\SocialWork\SocialAction; use Chill\PersonBundle\Entity\SocialWork\SocialAction;
use Chill\PersonBundle\Entity\SocialWork\SocialIssue; use Chill\PersonBundle\Entity\SocialWork\SocialIssue;
@@ -50,6 +53,7 @@ use Symfony\Component\Form\FormEvents;
use Symfony\Component\OptionsResolver\OptionsResolver; use Symfony\Component\OptionsResolver\OptionsResolver;
use Symfony\Component\Security\Core\Authentication\Token\Storage\TokenStorageInterface; use Symfony\Component\Security\Core\Authentication\Token\Storage\TokenStorageInterface;
use Symfony\Component\Security\Core\Role\Role;
use function in_array; use function in_array;
class ActivityType extends AbstractType class ActivityType extends AbstractType
@@ -109,19 +113,18 @@ class ActivityType extends AbstractType
$activityType = $options['activityType']; $activityType = $options['activityType'];
// TODO revoir la gestion des center au niveau du form des activité. // TODO revoir la gestion des center au niveau du form des activité.
if ($options['center']) { if ($options['center'] instanceof Center && null !== $options['data']->getPerson()) {
$builder->add('scope', ScopePickerType::class, [ $builder->add('scope', ScopePickerType::class, [
'center' => $options['center'], 'center' => $options['center'],
'role' => $options['role'], 'role' => ActivityVoter::CREATE === (string) $options['role'] ? ActivityVoter::CREATE_PERSON : (string) $options['role'],
// TODO make required again once scope and rights are fixed 'required' => true,
'required' => false,
]); ]);
} }
/** @var ? \Chill\PersonBundle\Entity\AccompanyingPeriod $accompanyingPeriod */ /** @var ? \Chill\PersonBundle\Entity\AccompanyingPeriod $accompanyingPeriod */
$accompanyingPeriod = null; $accompanyingPeriod = null;
if ($options['accompanyingPeriod']) { if ($options['accompanyingPeriod'] instanceof AccompanyingPeriod) {
$accompanyingPeriod = $options['accompanyingPeriod']; $accompanyingPeriod = $options['accompanyingPeriod'];
} }
@@ -218,12 +221,10 @@ class ActivityType extends AbstractType
]); ]);
} }
if ($activityType->isVisible('user') && $options['center']) { if ($activityType->isVisible('user') && $options['center'] instanceof Center) {
$builder->add('user', UserPickerType::class, [ $builder->add('user', PickUserDynamicType::class, [
'label' => $activityType->getLabel('user'), 'label' => $activityType->getLabel('user'),
'required' => $activityType->isRequired('user'), 'required' => $activityType->isRequired('user'),
'center' => $options['center'],
'role' => $options['role'],
]); ]);
} }
@@ -442,8 +443,8 @@ class ActivityType extends AbstractType
$resolver $resolver
->setRequired(['center', 'role', 'activityType', 'accompanyingPeriod']) ->setRequired(['center', 'role', 'activityType', 'accompanyingPeriod'])
->setAllowedTypes('center', ['null', 'Chill\MainBundle\Entity\Center']) ->setAllowedTypes('center', ['null', Center::class])
->setAllowedTypes('role', 'Symfony\Component\Security\Core\Role\Role') ->setAllowedTypes('role', [Role::class, 'string'])
->setAllowedTypes('activityType', \Chill\ActivityBundle\Entity\ActivityType::class) ->setAllowedTypes('activityType', \Chill\ActivityBundle\Entity\ActivityType::class)
->setAllowedTypes('accompanyingPeriod', [\Chill\PersonBundle\Entity\AccompanyingPeriod::class, 'null']); ->setAllowedTypes('accompanyingPeriod', [\Chill\PersonBundle\Entity\AccompanyingPeriod::class, 'null']);
} }

View File

@@ -120,3 +120,11 @@
{{ form_end(edit_form) }} {{ form_end(edit_form) }}
{# {{ form(delete_form) }} #} {# {{ form(delete_form) }} #}
{% block js %}
{{ encore_entry_script_tags('mod_pickentity_type') }}
{% endblock %}
{% block css %}
{{ encore_entry_link_tags('mod_pickentity_type') }}
{% endblock %}

View File

@@ -46,7 +46,7 @@
{% include 'ChillActivityBundle:Activity:list.html.twig' with {'context': 'person'} %} {% include 'ChillActivityBundle:Activity:list.html.twig' with {'context': 'person'} %}
{% if is_granted('CHILL_ACTIVITY_CREATE_PERSON', person) %} {% if is_granted('CHILL_ACTIVITY_CREATE', person) %}
<ul class="record_actions sticky-form-buttons"> <ul class="record_actions sticky-form-buttons">
<li> <li>
<a href="{{ path('chill_activity_activity_new', {'person_id': person_id, 'accompanying_period_id': accompanying_course_id}) }}" <a href="{{ path('chill_activity_activity_new', {'person_id': person_id, 'accompanying_period_id': accompanying_course_id}) }}"

View File

@@ -119,3 +119,11 @@
</li> </li>
</ul> </ul>
{{ form_end(form) }} {{ form_end(form) }}
{% block js %}
{{ encore_entry_script_tags('mod_pickentity_type') }}
{% endblock %}
{% block css %}
{{ encore_entry_link_tags('mod_pickentity_type') }}
{% endblock %}

View File

@@ -133,7 +133,7 @@ class ActivityVoter extends AbstractChillVoter implements ProvideRoleHierarchyIn
// change attribute CREATE // change attribute CREATE
if (self::CREATE === $attribute) { if (self::CREATE === $attribute) {
$attribute = self::CREATE_PERSON; return $this->voterHelper->voteOnAttribute(self::CREATE_PERSON, $subject->getPerson(), $token);
} }
} elseif ($subject->getAccompanyingPeriod() instanceof AccompanyingPeriod) { } elseif ($subject->getAccompanyingPeriod() instanceof AccompanyingPeriod) {
if (!$this->security->isGranted(AccompanyingPeriodVoter::SEE, $subject->getAccompanyingPeriod())) { if (!$this->security->isGranted(AccompanyingPeriodVoter::SEE, $subject->getAccompanyingPeriod())) {
@@ -144,7 +144,8 @@ class ActivityVoter extends AbstractChillVoter implements ProvideRoleHierarchyIn
if (AccompanyingPeriod::STEP_CLOSED === $subject->getAccompanyingPeriod()->getStep()) { if (AccompanyingPeriod::STEP_CLOSED === $subject->getAccompanyingPeriod()->getStep()) {
return false; return false;
} }
$attribute = self::CREATE_ACCOMPANYING_COURSE;
return $this->voterHelper->voteOnAttribute(self::CREATE_ACCOMPANYING_COURSE, $subject->getAccompanyingPeriod(), $token);
} }
} else { } else {
throw new RuntimeException('Could not determine context of activity.'); throw new RuntimeException('Could not determine context of activity.');
@@ -158,12 +159,12 @@ class ActivityVoter extends AbstractChillVoter implements ProvideRoleHierarchyIn
// transform the attribute // transform the attribute
if (self::CREATE === $attribute) { if (self::CREATE === $attribute) {
$attribute = self::CREATE_ACCOMPANYING_COURSE; return $this->voterHelper->voteOnAttribute(self::CREATE_ACCOMPANYING_COURSE, $subject, $token);
} }
} elseif ($subject instanceof Person) { } elseif ($subject instanceof Person) {
// transform the attribute // transform the attribute
if (self::CREATE === $attribute) { if (self::CREATE === $attribute) {
$attribute = self::CREATE_PERSON; return $this->voterHelper->voteOnAttribute(self::CREATE_PERSON, $subject, $token);
} }
} }

View File

@@ -130,8 +130,10 @@ class ActivityContext implements
return $this->personRender->renderString($p, []); return $this->personRender->renderString($p, []);
}, },
'multiple' => false, 'multiple' => false,
'required' => false,
'expanded' => true, 'expanded' => true,
'label' => $options[$key . 'Label'], 'label' => $options[$key . 'Label'],
'placeholder' => $this->translator->trans('Any person selected'),
]); ]);
} }
} }

View File

@@ -0,0 +1,234 @@
#general
Show the activity: Toon activiteit
Edit the activity: Wijzig activiteit
Activity: Activiteit
Duration time: Duur
Duration Time: Duur
durationTime: duur
Travel time: Duur van verplaatsing
Attendee: Aanwezigheden
attendee: aanwezigheden
list_reasons: Onderwerpen
user_username: gebruikersnaam
circle_name: naam kring
Remark: Opmerking
No comments: Geen opmerkingen
Add a new activity: Voeg een nieuwe activiteit toe
Activity list: Lijst van activiteiten
present: aanwezig
not present: afwezig
Delete: Verwijderen
Update: Bijwerken
Update activity: Activieit bijwerken
Scope: Werkingsgebied
Activity data: Gegevens activiteit
Activity location: Locatie activiteit
No reason associated: Geen onderwerp
No social issues associated: Geen sociaal vraagstuk
No social actions associated: Geen maatschappelijke actie
There isn't any activities.: Er zijn geen activiteiten
type_name: Soort activiteit
person_firstname: voornaam
person_lastname: familienaam
person_id: Identificatienummer persoon
Type: Soort
Invisible: Onzichtbaar
Optional: Optioneel
Required: Verplicht
Persons: Personen
Users: Gebruikers
Emergency: Dringend
Sent received: Inkomend / Uitgaand
Sent: Verzenden
Received: Ontvangen
by: 'Door '
location: Plaats
Reasons: Onderwerpen
#forms
Activity creation: Nouvelle activité
Create: Créer
Back to the list: Retour à la liste
Save activity: Sauver l'activité
Reset form: Remise à zéro du formulaire
Choose the duration: Choisir la durée
Choose a type: Choisir un type
5 minutes: 5 minutes
10 minutes: 10 minutes
15 minutes: 15 minutes
20 minutes: 20 minutes
25 minutes: 25 minutes
30 minutes: 30 minutes
45 minutes: 45 minutes
1 hour: 1 heure
1 hour 15: 1 heure 15
1 hour 30: 1 heure 30
1 hour 45: 1 heure 45
2 hours: 2 heures
Concerned groups: Parties concernées
Persons in accompanying course: Usagers du parcours
Third persons: Tiers non-pro.
Others persons: Usagers
Third parties: Tiers professionnels
Users concerned: T(M)S
activity:
Insert a document: Insérer un document
Remove a document: Supprimer le document
comment: Commentaire
No documents: Aucun document
#timeline
'%user% has done an %activity_type%': '%user% a effectué une activité de type "%activity_type%"'
#controller
'Success : activity created!': L'activité a été créée.
'The form is not valid. The activity has not been created !': Le formulaire est invalide. L'activité n'a pas été créée.
'Success : activity updated!': L'activité a été mise à jour.
'The form is not valid. The activity has not been updated !': Le formulaire est invalide. L'activité n'a pas été mise à jour.
# ROLES
CHILL_ACTIVITY_CREATE: Créer une activité
CHILL_ACTIVITY_UPDATE: Modifier une activité
CHILL_ACTIVITY_SEE: Voir une activité
CHILL_ACTIVITY_SEE_DETAILS: Voir le détail des activités
CHILL_ACTIVITY_DELETE: Supprimer une activité
CHILL_ACTIVITY_STATS: Statistique des activités
CHILL_ACTIVITY_LIST: Liste des activités
# admin
Activities: Activités
Activity configuration: Configuration des activités
Activity configuration menu: Configuration des activités
Activity types: Types d'activité
Activity type configuration: Configuration des categories d'activités
Activity Reasons: Sujets d'une activité
Activity Reasons Category: Catégories de sujet d'activités
Activity Types Categories: Catégories des types d'activité
Activity Presences: Presences des activités
# Crud
crud:
activity_type:
title_new: Nouveau type d'activité
title_edit: Edition d'un type d'activité
activity_type_category:
title_new: Nouvelle catégorie de type d'activité
title_edit: Edition d'une catégorie de type d'activité
# activity reason admin
ActivityReason list: Liste des sujets
Create a new activity reason: Créer un nouveau sujet
Active: Actif
Category: Catégorie
ActivityReason creation: Nouveau sujet
ActivityReason edit: Modification d'un sujet
ActivityReason: Sujet d'activité
The entity is inactive and won't be proposed: Le sujet est inactif et ne sera pas proposé
The entity is active and will be proposed: Le sujet est actif et sera proposé
#activity reason category admin
ActivityReasonCategory list: Catégories de sujets
Create a new activity category reason: Créer une nouvelle catégorie
ActivityReasonCategory creation: Nouvelle catégorie de sujet
ActivityReasonCategory edit: Modification d'une catégorie de sujet
ActivityReasonCategory: Catégorie de sujet d'activité
ActivityReasonCategory is active and will be proposed: La catégorie est active et sera proposée
ActivityReasonCategory is inactive and won't be proposed: La catégorie est inactive et ne sera pas proposée
# activity type type admin
ActivityType list: Types d'activités
Create a new activity type: Créer un nouveau type d'activité
Persons visible: Visibilité du champ Personnes
Persons label: Libellé du champ Personnes
User visible: Visibilité du champ Utilisateur
User label: Libellé du champ Utilisateur
Date visible: Visibilité du champ Date
Date label: Libellé du champ Date
Location visible: Visibilité du champ Lieu
Location label: Libellé du champ Lieu
Third parties visible: Visibilité du champ Tiers
Third parties label: Libellé du champ Tiers
Duration time visible: Visibilité du champ Durée
Duration time label: Libellé du champ Durée
Travel time visible: Visibilité du champ Durée de déplacement
Travel time label: Libellé du champ Durée de déplacement
Attendee visible: Visibilité du champ Présence de l'usager
Attendee label: Libellé du champ Présence de l'usager
Reasons visible: Visibilité du champ Sujet
Reasons label: Libellé du champ Sujet
Comment visible: Visibilité du champ Commentaire
Comment label: Libellé du champ Commentaire
Emergency visible: Visibilité du champ Urgent
Emergency label: Libellé du champ Urgent
Accompanying period visible: Visibilité du champ Période d'accompagnement
Accompanying period label: Libellé du champ Période d'accompagnement
Social issues visible: Visibilité du champ Problématiques sociales
Social issues label: Libellé du champ Problématiques sociales
Social actions visible: Visibilité du champ Action sociale
Social actions label: Libellé du champ Action sociale
Users visible: Visibilité du champ Utilisateurs
Users label: Libellé du champ Utilisateurs
Sent received visible: Visibilité du champ Entrant / Sortant
Sent received label: Libellé du champ Entrant / Sortant
Documents visible: Visibilité du champ Documents
Documents label: Libellé du champ Documents
# activity type category admin
ActivityTypeCategory list: Liste des catégories des types d'activité
Create a new activity type category: Créer une nouvelle catégorie de type d'activité
# activity delete
Remove activity: Supprimer une activité
Are you sure you want to remove the activity about "%name%" ?: Êtes-vous sûr de vouloir supprimer une activité qui concerne "%name%" ?
The activity has been successfully removed.: L'activité a été supprimée.
# exports
Count activities: Nombre d'activités
Count activities by various parameters.: Compte le nombre d'activités enregistrées en fonction de différents paramètres.
Sum activity duration: Total de la durée des activités
Sum activities duration by various parameters.: Additionne la durée des activités en fonction de différents paramètres.
List activities: Liste les activités
Number of activities: Nombre d'activités
#filters
Filter by reason: Filtrer par sujet d'activité
'Filtered by reasons: only %list%': 'Filtré par sujet: seulement %list%'
'Filtered by activity type: only %list%': "Filtré par type d'activity: seulement %list%"
Filtered by date activity: Filtrer par date d'activité
Activities after this date: Activités après cette date
Activities before this date: Activités avant cette date
"Filtered by date of activity: only between %date_from% and %date_to%": "Filtré par date de l'activité: uniquement entre %date_from% et %date_to%"
This date should be after the date given in "Implied in an activity after this date" field: Cette date devrait être postérieure à la date donnée dans le champ "activités après cette date"
Filtered by person having an activity in a period: Uniquement les personnes ayant eu une activité dans la période donnée
Implied in an activity after this date: Impliqué dans une activité après cette date
Implied in an activity before this date: Impliqué dans une activité avant cette date
Filtered by person having an activity between %date_from% and %date_to% with reasons %reasons_name%: Filtré par personnes associées à une activité entre %date_from% et %date_to% avec les sujets %reasons_name%
Activity reasons for those activities: Sujets de ces activités
Filter by activity type: Filtrer par type d'activité
#aggregators
Activity type: Type d'activité
Activity user: Utilisateur lié à l'activity
By reason: Par sujet
By category of reason: Par catégorie de sujet
Reason's level: Niveau du sujet
Group by reasons: Sujet d'activité
Aggregate by activity user: Aggréger par utilisateur lié à l'activité
Aggregate by activity type: Aggréger par type d'activité
Aggregate by activity reason: Aggréger par sujet de l'activité
Last activities: Les dernières activités
See activity in accompanying course context: Voir l'activité dans le contexte du parcours d'accompagnement
You get notified of an activity which does not exists any more: Cette notification ne correspond pas à une activité valide.
you are not allowed to see it details: La notification fait référence à une activité à laquelle vous n'avez pas accès.
This is the minimal activity data: Activité n°
docgen:
Activity basic: Echange
A basic context for activity: Contexte pour les échanges

View File

@@ -0,0 +1,23 @@
The reasons's level should not be empty: Het onderwerp niveau mag niet leeg zijn.
At least one reason must be choosen: Kies minstens één onderwerp
For this type of activity, you must add at least one person: Voor dit soort activiteit dient u minstens één persoon toe te voegen.
For this type of activity, you must add at least one user: Voor dit soort activiteit dient u minstens één gebruiker toe te voegen.
For this type of activity, you must add at least one third party: Voor dit soort activiteit dient u minstens één externe partner toe te voegen.
For this type of activity, user is required: Voor dit soort activiteit, dient u een gebruiker in te vullen.
For this type of activity, date is required: Voor dit soort activiteit, dient u een datum in te vullen.
For this type of activity, location is required: Voor dit soort activiteit, dient u een locatie in te vullen.
For this type of activity, attendee is required: Voor dit soort activiteit, dient u minstend één 'aanwezige persoon' in te vullen.
For this type of activity, duration time is required: Voor dit soort activiteit, dient u een duur in te vullen.
For this type of activity, travel time is required: Voor dit soort activiteit, dient u een verplaatsingsduur in te vullen.
For this type of activity, reasons is required: Voor dit soort activiteit, dient u een onderwerp in te vullen.
For this type of activity, comment is required: Voor dit soort activiteit, dient u een opmerking in te vullen.
For this type of activity, sent/received is required: Voor dit soort activiteit, dient u het veld 'inkomend/uitgaand' in te vullen.
For this type of activity, document is required: Voor dit soort activiteit, dient u een document toe te voegen.
For this type of activity, emergency is required: Voor dit soort activiteit, is het veld 'dringend' verplicht.
For this type of activity, accompanying period is required: Voor dit soort activiteit, dient u een begeleidingstraject in te vullen.
For this type of activity, you must add at least one social issue: Voor dit soort activiteit, dient u een sociaal vraagstuk aan te duiden.
For this type of activity, you must add at least one social action: Voor dit soort activiteit, dient u een maatschappelijke actie toe te voegen.
# admin
This parameter must be equal to social issue parameter: Deze parameter moet gelijk zijn aan de parameter "zichtbaarheid veld sociaal vraagstuk".
The socialActionsVisible value is not compatible with the socialIssuesVisible value: De waarde van de parameter "zichtbaarheid veld maatschappelijke actie" is niet compatibel met de waarde van de parameter "zichtbaarheid veld sociaal vraagstuk".

View File

@@ -0,0 +1,167 @@
#general
Show the aside activity: Toon de nevenactiviteit
Edit the aside activity: Wijzig de nevenactiviteit
Remove aside activity: Verwijder de nevenactiviteit
Aside activity: Nevenactiviteit
Aside Activity Type List: Lijst van nevenactiviteiten
Duration time: Duur
durationTime: duur
user_username: gebruikersnaam
Remark: Opmerking
No comments: Geen opmerkingen
Add a new aside activity: Nevenactiviteit toeveogen
Aside activity list: Nevenactiviteiten
present: aanwezig
not present: afwezig
Delete: Verwijderen
Update: Bijwerken
Aside activity data: Gegevens van nevenactiviteit
There aren't any aside activities.: Geen nevenactiviteiten om weer te geven
Type: Type
Invisible: Onzichtbaar
Optional: Optioneel
Required: Verplicht
Persons: Personen
Users: Gebruikers
Emergency: Dringend
by: "Door "
location: Plaats
# Crud
crud:
aside_activity:
title_view: Details nevenactiviteit
title_new: Nieuwe nevenactiviteit
title_edit: Wijzig nevenactiviteit
title_delete: Verwijder nevenactiviteit
button_delete: Verwijderen
confirm_message_delete: Bent u zeker deze nevenactiviteit te willen verwijderen?
aside_activity_category:
title_new: Nieuwe categorie nevenactiviteiten
title_edit: Wijzigen categorie nevenactiviteiten
#forms
Create a new aside activity type: Nieuwe categorie nevenactiviteiten
Back to the list: Terug naar de lijst
Choose the duration: Kies een duur
Choose a category: Kies een categorie
Is active: Actief
For agent: Voor de gebruiker
date: Datum
Duration: Duur
Note: Opmerking
Choose the agent for whom this activity is created: Kies de gebruiker voor wie deze nevenactiviteit wordt aangemaakt.
Choose the activity category: Kies een categorie
#Duration
minutes: minuten
hour: uur
hours: uren
day: dag
days: dagen
5 minutes: 5 minuten
10 minutes: 10 minuten
15 minutes: 15 minuten
20 minutes: 20 minuten
25 minutes: 25 minuten
30 minutes: 30 minuten
45 minutes: 45 minuten
1 hour: 1 uur
1 hour 15: 1 uur 15
1 hour 30: 1 uur 30
1 hour 45: 1 uur 45
2 hours: 2 uren
2 hours 30: 2 uur 30
3 hours: 3 uren
3 hours 30: 3 uur 30
4 hours: 4 uren
4 hours 30: 4 uur 30
5 hours: 5 uren
5 hours 30: 5 uur 30
6 hours: 6 uren
6 hours 30: 6 uur 30
7 hours: 7 uren
7 hours 30: 7 uur 30
8 hours: 8 uren
8 hours 30: 8 uur 30
9 hours: 9 uren
9 hours 30: 9 uur 30
10 hours: 10 uren
1/2 day: 1/2 dag
1 day: 1 dag
1 1/2 days: 1 1/2 dagen
2 days: 2 dagen
2 1/2 days: 2 1/2 dagen
3 days: 3 dagen
3 1/2 days: 3 1/2 dagen
4 days: 4 dagen
4 1/2 days: 4 1/2 dagen
5 days: 5 dagen
5 1/2 days: 5 1/2 dagen
6 days: 6 dagen
6 1/2 days: 6 1/2 dagen
7 days: 7 dagen
7 1/2 days: 7 1/2 dagen
8 days: 8 dagen
8 1/2 days: 8 1/2 dagen
9 days: 9 dagen
9 1/2 days: 9 1/2 dagen
10 days: 10 dagen
10 1/2 days: 10 1/2 dagen
11 days: 11 dagen
11 1/2 days: 11 1/2 dagen
12 days: 12 dagen
12 1/2 days: 12 1/2 dagen
13 days: 13 dagen
13 1/2 days: 13 1/2 dagen
14 days: 14 dagen
14 1/2 days: 14 1/2 dagen
15 days: 15 dagen
15 1/2 days: 15 1/2 dagen
16 days: 16 dagen
16 1/2 days: 16 1/2 dagen
17 days: 17 dagen
17 1/2 days: 17 1/2 dagen
18 days: 18 dagen
18 1/2 days: 18 1/2 dagen
19 days: 19 dagen
19 1/2 days: 19 1/2 dagen
20 days: 20 dagen
20 1/2 days: 20 1/2 dagen
21 days: 21 dagen
21 1/2 days: 21 1/2 dagen
22 days: 22 dagen
22 1/2 days: 22 1/2 dagen
23 days: 23 dagen
23 1/2 days: 23 1/2 dagen
24 days: 24 dagen
24 1/2 days: 24 1/2 dagen
25 days: 25 dagen
25 1/2 days: 25 1/2 dagen
26 days: 26 dagen
26 1/2 days: 26 1/2 dagen
27 days: 27 dagen
27 1/2 days: 27 1/2 dagen
28 days: 28 dagen
28 1/2 days: 28 1/2 dagen
29 days: 29 dagen
29 1/2 days: 29 1/2 dagen
30 days: 30 dagen
#list
My aside activities: Mijn nevenactiviteiten
#Aside activity delete
Delete aside activity: Verwijder een nevenactiviteit
Are you sure you want to remove the aside activity concerning "%name%" ?: Bent u zeker deze nevenactiviteit voor "%name%" te willen verwijderen ?
The activity has been successfully removed.: De nevenactiviteit werd verwijdert.
#Menu
Create an aside activity: "Maak een nevenactiviteit aan"
Aside activity categories: Categorieën van nevenactiviteiten
Aside activity configuration menu: "Configuratie menu voor nevenactiviteiten"
Phonecall: "Telefoon oproep"
# admin
Aside activities: Nevenactiviteiten
Aside activity types: Types nevenactiviteiten
Aside activity type configuration: Configuratie categorieën nevenactiviteiten

View File

@@ -0,0 +1 @@
You must not add twice the same category in the parent tree (previous result returned): Je mag niet tweemaal dezelfde entiteit aanduiden in de stamboom. (Het vorige resultaat werd hersteld)

View File

@@ -0,0 +1,8 @@
budget:
number of elements: >-
{nb_items, plural,
=0 {Geen element}
one {Één element}
many {# elementen}
other {# elementen}
}

View File

@@ -37,7 +37,7 @@ No charges registered: Aucune charge enregistrée
No past resources registered: Aucune ressource passée No past resources registered: Aucune ressource passée
No past charges registered: Aucune charge passée No past charges registered: Aucune charge passée
No future resources registered: Aucune ressource future enregistrée No future resources registered: Aucune ressource future enregistrée
No future charges registered: Aucune ressource future enregistrée No future charges registered: Aucune charge future enregistrée
No current budget element registered: Pas des éléments de budget actuelles enregistrés No current budget element registered: Pas des éléments de budget actuelles enregistrés
New resource: Nouvelle ressource New resource: Nouvelle ressource

View File

@@ -0,0 +1,76 @@
Budget: Budget
Resource: Inkomsten
Charge: Onkosten
Budget for %name%: Budget van %name%
Budget for household %household%: Budget van gezin
Current budget household members: Actuele budget van gezinsleden
Show budget of %name%: Toon budget van %name%
See complete budget: Toon volledige budget
Hide budget: Verbergen
Hide budget of %name%: Verberg budget van %name%
Resource element type: Type inkomsten
Actual budget: Actuele elementen budget
Actual resources: Actuele inkomsten
Actual resources for %name%: Actuele inkomsten van %name%
Actual charges for %name%: Actuele onkosten van %name%
Actual charges: Actuele onkosten
Past budget: Elementen van afgelopen budget
Show past budget: Toon afgelopen budget
Show future budget: Toon toekomstig budget
Past resources: Afgelopen inkomsten
Past charges: Afgelopen onkosten
Future budget: Toekomstige elementen van budget
Future resources: Toekomstige inkomsten
Future charges: Toekomstige onkosten
Budget element type: Type
Validity period: Geldigheidsperiod
Start of validity period: Begin geldigheidsperiode
End of validity period: Eind geldigheidsperiode
Total: Totaal
Create new resource: Nieuwe inkomsten toevoegen
Create new charge: Nieuwe onkosten toevoegen
See person: Toon persoon
There isn't any element recorded: Geen budget elementen geregistreerd
No resources registered: Geen inkomsten geregistreerd
No charges registered: Geen onkosten geregistreerd
No past resources registered: Geen afgelopen inkomsten geregistreerd
No past charges registered: Geen afgelopen onkosten geregistreerd
No future resources registered: Geen toekomstige inkomsten geregistreerd
No future charges registered: Geen toekomste onkosten geregistreerd
No current budget element registered: Geen actuele budget elementen geregistreerd
New resource: Nieuwe inkomsten
New charge: Nieuwe onkosten
Edit resource: Wijzig inkomsten
Edit: Wijzigen
Edit charge: Wijzig onkosten
Remove resource: Verwijder inkomsten
Remove charge: Verwijder onkosten
Are you sure you want to remove the ressource "%type%" associated to "%name%" ?: Bent u zeker de inkomsten van het type "%type%" en geassocieerd met %name% te willen verwijderen?
Are you sure you want to remove the charge "%type%" associated to "%name%" ?: Bent u zeker de onkosten van het type "%type%" en geassocieerd met %name% te willen verwijderen?
Resource deleted: Inkomsten verwijdert
Charge deleted: Onkosten verwijdert
Charge created: Onkosten toegevoegd
Resource created: Inkomsten toegevoegd
Resource updated: Inkomsten bijgewerkt
Charge updated: Onkosten bijgewerkt
Choose a resource type: Kies een type inkomsten
Choose a charge type: Kies een type onkosten
Amount: Bedrag
Comment: Opmerking
Help to pay charges: Hulp bij afbetaling onkosten
Choose a status: Kies een status
charge.help.running: In uitvoering
charge.help.no: Niet gevraagd
charge.help.yes: Ja
charge.help.not-concerned: Niet betrokken
Budget calculator: Berekeningen en indicatoren van budget
Budget calculator result: Resultaten
The balance: Verschil tussen inkomsten en onkosten
Valid since %startDate% until %endDate%: Geldig sinds %startDate% tot %endDate%
Valid since %startDate%: Geldig sinds %startDate%

View File

@@ -0,0 +1,2 @@
The amount cannot be empty: Le montant ne peut pas être vide ou égal à zéro
The budget element's end date must be after the start date: La date de fin doit être après la date de début

View File

@@ -0,0 +1,28 @@
Calendar: Afspraken
Calendar list: Lijst van afspraken
My calendar list: Mijn afspraken
There is no calendar items.: Er zijn geen afspraken
Remove calendar item: Verwijder afspraak
Are you sure you want to remove the calendar item?: Bent u zeker deze afspraak te willen verwijderen
Concerned groups: Betrokken partijen
Calendar data: Gegevens afspraak
Update calendar: Wijzig afspraak
main user concerned: Betrokken gebruiker
Main user: Hoofdgebruiker
Calendar item creation: Maak afspraak aan
start date: Begin afspraak
end date: Einde afspraak
cancel reason: reden van annulatie
status: Status van afspraak
calendar location: Locatie afspraak
calendar comment: Opmerkingen over afspraak
sendSMS: Verzenden sms
Send s m s: Sms verzenden?
Cancel reason: Reden van annulatie
Add a new calendar: Nieuwe afspraak toevoegen
"Success : calendar item updated!": "Afspraak bijgewerkt"
"Success : calendar item created!": "Afspraak aangemaakt"
The calendar item has been successfully removed.: De afspraak is verwijdert
From the day: Vanaf
to the day: tot
Transform to activity: In activiteit omzetten

View File

@@ -11,6 +11,7 @@ declare(strict_types=1);
namespace Chill\DocStoreBundle\Entity; namespace Chill\DocStoreBundle\Entity;
use Chill\MainBundle\Entity\HasScopesInterface;
use Chill\PersonBundle\Entity\AccompanyingPeriod; use Chill\PersonBundle\Entity\AccompanyingPeriod;
use Doctrine\ORM\Mapping as ORM; use Doctrine\ORM\Mapping as ORM;
@@ -18,7 +19,7 @@ use Doctrine\ORM\Mapping as ORM;
* @ORM\Entity * @ORM\Entity
* @ORM\Table("chill_doc.accompanyingcourse_document") * @ORM\Table("chill_doc.accompanyingcourse_document")
*/ */
class AccompanyingCourseDocument extends Document class AccompanyingCourseDocument extends Document implements HasScopesInterface
{ {
/** /**
* @ORM\ManyToOne(targetEntity=AccompanyingPeriod::class) * @ORM\ManyToOne(targetEntity=AccompanyingPeriod::class)
@@ -31,6 +32,15 @@ class AccompanyingCourseDocument extends Document
return $this->course; return $this->course;
} }
public function getScopes(): iterable
{
if (null !== $this->course) {
return [];
}
return $this->course->getScopes();
}
public function setCourse(?AccompanyingPeriod $course): self public function setCourse(?AccompanyingPeriod $course): self
{ {
$this->course = $course; $this->course = $course;

View File

@@ -16,8 +16,6 @@ use Chill\MainBundle\Doctrine\Model\TrackCreationInterface;
use Chill\MainBundle\Doctrine\Model\TrackCreationTrait; use Chill\MainBundle\Doctrine\Model\TrackCreationTrait;
use Chill\MainBundle\Doctrine\Model\TrackUpdateInterface; use Chill\MainBundle\Doctrine\Model\TrackUpdateInterface;
use Chill\MainBundle\Doctrine\Model\TrackUpdateTrait; use Chill\MainBundle\Doctrine\Model\TrackUpdateTrait;
use Chill\MainBundle\Entity\HasScopeInterface;
use Chill\MainBundle\Entity\Scope;
use Chill\MainBundle\Entity\User; use Chill\MainBundle\Entity\User;
use DateTimeInterface; use DateTimeInterface;
use Doctrine\ORM\Mapping as ORM; use Doctrine\ORM\Mapping as ORM;
@@ -26,7 +24,7 @@ use Symfony\Component\Validator\Constraints as Assert;
/** /**
* @ORM\MappedSuperclass * @ORM\MappedSuperclass
*/ */
class Document implements HasScopeInterface, TrackCreationInterface, TrackUpdateInterface class Document implements TrackCreationInterface, TrackUpdateInterface
{ {
use TrackCreationTrait; use TrackCreationTrait;
@@ -70,13 +68,6 @@ class Document implements HasScopeInterface, TrackCreationInterface, TrackUpdate
*/ */
private $object; private $object;
/**
* @ORM\ManyToOne(targetEntity="Chill\MainBundle\Entity\Scope")
*
* @var \Chill\MainBundle\Entity\Scope The document's center
*/
private $scope;
/** /**
* @ORM\ManyToOne(targetEntity="Chill\DocGeneratorBundle\Entity\DocGeneratorTemplate") * @ORM\ManyToOne(targetEntity="Chill\DocGeneratorBundle\Entity\DocGeneratorTemplate")
*/ */
@@ -122,16 +113,6 @@ class Document implements HasScopeInterface, TrackCreationInterface, TrackUpdate
return $this->object; return $this->object;
} }
/**
* Get scope.
*
* @return \Chill\MainBundle\Entity\Scope
*/
public function getScope(): ?Scope
{
return $this->scope;
}
public function getTemplate(): ?DocGeneratorTemplate public function getTemplate(): ?DocGeneratorTemplate
{ {
return $this->template; return $this->template;
@@ -175,13 +156,6 @@ class Document implements HasScopeInterface, TrackCreationInterface, TrackUpdate
return $this; return $this;
} }
public function setScope($scope): self
{
$this->scope = $scope;
return $this;
}
public function setTemplate(?DocGeneratorTemplate $template): self public function setTemplate(?DocGeneratorTemplate $template): self
{ {
$this->template = $template; $this->template = $template;

View File

@@ -13,6 +13,7 @@ namespace Chill\DocStoreBundle\Entity;
use Chill\MainBundle\Entity\HasCenterInterface; use Chill\MainBundle\Entity\HasCenterInterface;
use Chill\MainBundle\Entity\HasScopeInterface; use Chill\MainBundle\Entity\HasScopeInterface;
use Chill\MainBundle\Entity\Scope;
use Chill\PersonBundle\Entity\Person; use Chill\PersonBundle\Entity\Person;
use Doctrine\ORM\Mapping as ORM; use Doctrine\ORM\Mapping as ORM;
@@ -27,6 +28,13 @@ class PersonDocument extends Document implements HasCenterInterface, HasScopeInt
*/ */
private Person $person; private Person $person;
/**
* @ORM\ManyToOne(targetEntity="Chill\MainBundle\Entity\Scope")
*
* @var \Chill\MainBundle\Entity\Scope The document's center
*/
private $scope;
public function getCenter() public function getCenter()
{ {
return $this->getPerson()->getCenter(); return $this->getPerson()->getCenter();
@@ -37,10 +45,22 @@ class PersonDocument extends Document implements HasCenterInterface, HasScopeInt
return $this->person; return $this->person;
} }
public function getScope(): ?Scope
{
return $this->scope;
}
public function setPerson($person): self public function setPerson($person): self
{ {
$this->person = $person; $this->person = $person;
return $this; return $this;
} }
public function setScope($scope): self
{
$this->scope = $scope;
return $this;
}
} }

View File

@@ -88,10 +88,5 @@ class AccompanyingCourseDocumentType extends AbstractType
$resolver->setDefaults([ $resolver->setDefaults([
'data_class' => Document::class, 'data_class' => Document::class,
]); ]);
// $resolver->setRequired(['role', 'center'])
// ->setAllowedTypes('role', [ \Symfony\Component\Security\Core\Role\Role::class ])
// ->setAllowedTypes('center', [ \Chill\MainBundle\Entity\Center::class ])
// ;
} }
} }

View File

@@ -65,7 +65,7 @@ class PersonDocumentACLAwareRepository implements PersonDocumentACLAwareReposito
$this->addACL($qb, $person); $this->addACL($qb, $person);
foreach ($orderBy as $field => $order) { foreach ($orderBy as $field => $order) {
$qb->addOrderBy($field, $order); $qb->addOrderBy('d.' . $field, $order);
} }
$qb->setFirstResult($offset)->setMaxResults($limit); $qb->setFirstResult($offset)->setMaxResults($limit);

View File

@@ -106,6 +106,10 @@ class AccompanyingCourseDocumentVoter extends AbstractChillVoter implements Prov
) { ) {
return false; return false;
} }
if (self::CREATE === $attribute && null !== $subject->getCourse()) {
return $this->voterHelper->voteOnAttribute($attribute, $subject->getCourse(), $token);
}
} }
return $this->voterHelper->voteOnAttribute($attribute, $subject, $token); return $this->voterHelper->voteOnAttribute($attribute, $subject, $token);

View File

@@ -15,12 +15,18 @@ use Base64Url\Base64Url;
use ChampsLibres\AsyncUploaderBundle\TempUrl\TempUrlGeneratorInterface; use ChampsLibres\AsyncUploaderBundle\TempUrl\TempUrlGeneratorInterface;
use Chill\DocStoreBundle\Entity\StoredObject; use Chill\DocStoreBundle\Entity\StoredObject;
use Chill\DocStoreBundle\Exception\StoredObjectManagerException; use Chill\DocStoreBundle\Exception\StoredObjectManagerException;
use DateTimeImmutable;
use DateTimeInterface;
use DateTimeZone;
use RuntimeException;
use Symfony\Component\HttpFoundation\Request; use Symfony\Component\HttpFoundation\Request;
use Symfony\Component\HttpFoundation\Response; use Symfony\Component\HttpFoundation\Response;
use Symfony\Contracts\HttpClient\Exception\TransportExceptionInterface; use Symfony\Contracts\HttpClient\Exception\TransportExceptionInterface;
use Symfony\Contracts\HttpClient\HttpClientInterface; use Symfony\Contracts\HttpClient\HttpClientInterface;
use Symfony\Contracts\HttpClient\ResponseInterface;
use Throwable; use Throwable;
use function array_key_exists;
use const OPENSSL_RAW_DATA; use const OPENSSL_RAW_DATA;
final class StoredObjectManager implements StoredObjectManagerInterface final class StoredObjectManager implements StoredObjectManagerInterface
@@ -29,6 +35,8 @@ final class StoredObjectManager implements StoredObjectManagerInterface
private HttpClientInterface $client; private HttpClientInterface $client;
private array $inMemory = [];
private TempUrlGeneratorInterface $tempUrlGenerator; private TempUrlGeneratorInterface $tempUrlGenerator;
public function __construct( public function __construct(
@@ -39,29 +47,36 @@ final class StoredObjectManager implements StoredObjectManagerInterface
$this->tempUrlGenerator = $tempUrlGenerator; $this->tempUrlGenerator = $tempUrlGenerator;
} }
public function read(StoredObject $document): string public function getLastModified(StoredObject $document): DateTimeInterface
{ {
if ($this->hasCache($document)) {
$response = $this->getResponseFromCache($document);
} else {
try { try {
$response = $this $response = $this
->client ->client
->request( ->request(
Request::METHOD_GET, Request::METHOD_HEAD,
$this $this
->tempUrlGenerator ->tempUrlGenerator
->generate( ->generate(
Request::METHOD_GET, Request::METHOD_PUT,
$document->getFilename() $document->getFilename()
) )
->url ->url
); );
} catch (Throwable $e) { } catch (TransportExceptionInterface $exception) {
throw StoredObjectManagerException::errorDuringHttpRequest($e); throw StoredObjectManagerException::errorDuringHttpRequest($exception);
}
} }
if ($response->getStatusCode() !== Response::HTTP_OK) { return $this->extractLastModifiedFromResponse($response);
throw StoredObjectManagerException::invalidStatusCode($response->getStatusCode());
} }
public function read(StoredObject $document): string
{
$response = $this->getResponseFromCache($document);
try { try {
$data = $response->getContent(); $data = $response->getContent();
} catch (Throwable $e) { } catch (Throwable $e) {
@@ -90,6 +105,10 @@ final class StoredObjectManager implements StoredObjectManagerInterface
public function write(StoredObject $document, string $clearContent): void public function write(StoredObject $document, string $clearContent): void
{ {
if ($this->hasCache($document)) {
unset($this->inMemory[$document->getUuid()->toString()]);
}
$encryptedContent = $this->hasKeysAndIv($document) $encryptedContent = $this->hasKeysAndIv($document)
? openssl_encrypt( ? openssl_encrypt(
$clearContent, $clearContent,
@@ -126,6 +145,64 @@ final class StoredObjectManager implements StoredObjectManagerInterface
} }
} }
private function extractLastModifiedFromResponse(ResponseInterface $response): DateTimeImmutable
{
$lastModifiedString = (($response->getHeaders()['last-modified'] ?? [])[0] ?? '');
$date = DateTimeImmutable::createFromFormat(
DateTimeImmutable::RFC7231,
$lastModifiedString,
new DateTimeZone('GMT')
);
if (false === $date) {
throw new RuntimeException('the date from remote storage could not be parsed: '
. $lastModifiedString);
}
return $date;
}
private function fillCache(StoredObject $document): void
{
try {
$response = $this
->client
->request(
Request::METHOD_GET,
$this
->tempUrlGenerator
->generate(
Request::METHOD_GET,
$document->getFilename()
)
->url
);
} catch (Throwable $e) {
throw StoredObjectManagerException::errorDuringHttpRequest($e);
}
if ($response->getStatusCode() !== Response::HTTP_OK) {
throw StoredObjectManagerException::invalidStatusCode($response->getStatusCode());
}
$this->inMemory[$document->getUuid()->toString()] = $response;
}
private function getResponseFromCache(StoredObject $document): ResponseInterface
{
if (!$this->hasCache($document)) {
$this->fillCache($document);
}
return $this->inMemory[$document->getUuid()->toString()];
}
private function hasCache(StoredObject $document): bool
{
return array_key_exists($document->getUuid()->toString(), $this->inMemory);
}
private function hasKeysAndIv(StoredObject $storedObject): bool private function hasKeysAndIv(StoredObject $storedObject): bool
{ {
return ([] !== $storedObject->getKeyInfos()) && ([] !== $storedObject->getIv()); return ([] !== $storedObject->getKeyInfos()) && ([] !== $storedObject->getIv());

View File

@@ -12,9 +12,12 @@ declare(strict_types=1);
namespace Chill\DocStoreBundle\Service; namespace Chill\DocStoreBundle\Service;
use Chill\DocStoreBundle\Entity\StoredObject; use Chill\DocStoreBundle\Entity\StoredObject;
use DateTimeInterface;
interface StoredObjectManagerInterface interface StoredObjectManagerInterface
{ {
public function getLastModified(StoredObject $document): DateTimeInterface;
/** /**
* Get the content of a StoredObject. * Get the content of a StoredObject.
* *

View File

@@ -12,6 +12,7 @@ declare(strict_types=1);
namespace Chill\EventBundle\Controller; namespace Chill\EventBundle\Controller;
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController; use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
use Symfony\Component\Routing\Annotation\Route;
/** /**
* Class AdminController * Class AdminController
@@ -20,18 +21,12 @@ use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
class AdminController extends AbstractController class AdminController extends AbstractController
{ {
/** /**
* @return \Symfony\Component\HttpFoundation\Response * Event admin.
*
* @Route("/{_locale}/admin/event", name="chill_event_admin_index")
*/ */
public function indexAction() public function indexAdminAction()
{ {
return $this->render('ChillEventBundle:Admin:layout.html.twig'); return $this->render('ChillEventBundle:Admin:index.html.twig');
}
/**
* @return \Symfony\Component\HttpFoundation\RedirectResponse
*/
public function redirectToAdminIndexAction()
{
return $this->redirectToRoute('chill_main_admin_central');
} }
} }

View File

@@ -273,7 +273,7 @@ class EventController extends AbstractController
/** /**
* @var Center $centers * @var Center $centers
*/ */
$centers = $this->authorizationHelper->getReachableCenters($this->getUser(), $role); $centers = $this->authorizationHelper->getReachableCenters($this->getUser(), (string) $role);
if (count($centers) === 1) { if (count($centers) === 1) {
return $this->redirectToRoute('chill_event__event_new', [ return $this->redirectToRoute('chill_event__event_new', [

View File

@@ -151,7 +151,7 @@ class PickEventType extends AbstractType
} else { } else {
$centers = $this->authorizationHelper->getReachableCenters( $centers = $this->authorizationHelper->getReachableCenters(
$this->user, $this->user,
$options['role'] (string) $options['role']
); );
} }

View File

@@ -0,0 +1,61 @@
<?php
/**
* Chill is a software for social workers
*
* For the full copyright and license information, please view
* the LICENSE file that was distributed with this source code.
*/
declare(strict_types=1);
namespace Chill\EventBundle\Menu;
use Chill\MainBundle\Routing\LocalMenuBuilderInterface;
use Knp\Menu\MenuItem;
use Symfony\Component\Security\Core\Authorization\AuthorizationCheckerInterface;
class AdminMenuBuilder implements LocalMenuBuilderInterface
{
/**
* @var AuthorizationCheckerInterface
*/
protected $authorizationChecker;
public function __construct(AuthorizationCheckerInterface $authorizationChecker)
{
$this->authorizationChecker = $authorizationChecker;
}
public function buildMenu($menuId, MenuItem $menu, array $parameters)
{
if (!$this->authorizationChecker->isGranted('ROLE_ADMIN')) {
return;
}
$menu->addChild('Events', [
'route' => 'chill_event_admin_index',
])
->setAttribute('class', 'list-group-item-header')
->setExtras([
'order' => 6500,
]);
$menu->addChild('Event type', [
'route' => 'chill_eventtype_admin',
])->setExtras(['order' => 6510]);
$menu->addChild('Event status', [
'route' => 'chill_event_admin_status',
])->setExtras(['order' => 6520]);
$menu->addChild('Role', [
'route' => 'chill_event_admin_role',
])->setExtras(['order' => 6530]);
}
public static function getMenuIds(): array
{
return ['admin_section', 'admin_event'];
}
}

View File

@@ -0,0 +1,13 @@
{% extends "@ChillMain/Admin/layoutWithVerticalMenu.html.twig" %}
{% block vertical_menu_content %}
{{ chill_menu('admin_event', {
'layout': '@ChillMain/Admin/menu_admin_section.html.twig',
}) }}
{% endblock %}
{% block layout_wvm_content %}
{% block admin_content %}<!-- block content empty -->
<h1>{{ 'Events configuration' |trans }}</h1>
{% endblock %}
{% endblock %}

View File

@@ -1,31 +0,0 @@
{#
* Copyright (C) 2014-2015, Champs Libres Cooperative SCRLFS,
<info@champs-libres.coop> / <http://www.champs-libres.coop>
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU Affero General Public License as
* published by the Free Software Foundation, either version 3 of the
* License, or (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU Affero General Public License for more details.
*
* You should have received a copy of the GNU Affero General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
#}
{% extends "@ChillMain/Admin/layoutWithVerticalMenu.html.twig" %}
{% block vertical_menu_content %}
{{ chill_menu('admin_events', {
'layout': '@ChillEvent/Admin/menu.html.twig',
}) }}
{% endblock %}
{% block layout_wvm_content %}
{% block admin_content %}<!-- block content empty -->
<h1>{{ 'Events configuration' |trans }}</h1>
{% endblock %}
{% endblock %}

View File

@@ -1,21 +1,3 @@
{#
* Copyright (C) 2014-2015, Champs Libres Cooperative SCRLFS,
<info@champs-libres.coop> / <http://www.champs-libres.coop>
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU Affero General Public License as
* published by the Free Software Foundation, either version 3 of the
* License, or (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU Affero General Public License for more details.
*
* You should have received a copy of the GNU Affero General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
#}
{% extends "@ChillMain/Menu/verticalMenu.html.twig" %} {% extends "@ChillMain/Menu/verticalMenu.html.twig" %}
{% block v_menu_title %}{{ 'Events configuration menu'|trans }}{% endblock %} {% block v_menu_title %}{{ 'Events configuration menu'|trans }}{% endblock %}

View File

@@ -1,4 +1,4 @@
{% extends "ChillEventBundle:Admin:layout.html.twig" %} {% extends "ChillEventBundle:Admin:index.html.twig" %}
{% block admin_content -%} {% block admin_content -%}

View File

@@ -1,4 +1,4 @@
{% extends "ChillEventBundle:Admin:layout.html.twig" %} {% extends "ChillEventBundle:Admin:index.html.twig" %}
{% block admin_content -%} {% block admin_content -%}

View File

@@ -1,4 +1,4 @@
{% extends "ChillEventBundle:Admin:layout.html.twig" %} {% extends "ChillEventBundle:Admin:index.html.twig" %}
{% block admin_content -%} {% block admin_content -%}

View File

@@ -1,4 +1,4 @@
{% extends "ChillEventBundle:Admin:layout.html.twig" %} {% extends "ChillEventBundle:Admin:index.html.twig" %}
{% block admin_content -%} {% block admin_content -%}

View File

@@ -1,4 +1,4 @@
{% extends "ChillEventBundle:Admin:layout.html.twig" %} {% extends "ChillEventBundle:Admin:index.html.twig" %}
{% block admin_content -%} {% block admin_content -%}
<h1>{{ 'Role edit'|trans }}</h1> <h1>{{ 'Role edit'|trans }}</h1>

View File

@@ -1,4 +1,4 @@
{% extends "ChillEventBundle:Admin:layout.html.twig" %} {% extends "ChillEventBundle:Admin:index.html.twig" %}
{% block admin_content -%} {% block admin_content -%}

View File

@@ -1,4 +1,4 @@
{% extends "ChillEventBundle:Admin:layout.html.twig" %} {% extends "ChillEventBundle:Admin:index.html.twig" %}
{% block admin_content -%} {% block admin_content -%}

View File

@@ -1,4 +1,4 @@
{% extends "ChillEventBundle:Admin:layout.html.twig" %} {% extends "ChillEventBundle:Admin:index.html.twig" %}
{% block admin_content -%} {% block admin_content -%}

View File

@@ -1,4 +1,4 @@
{% extends "ChillEventBundle:Admin:layout.html.twig" %} {% extends "ChillEventBundle:Admin:index.html.twig" %}
{% block admin_content -%} {% block admin_content -%}

View File

@@ -1,4 +1,4 @@
{% extends "ChillEventBundle:Admin:layout.html.twig" %} {% extends "ChillEventBundle:Admin:index.html.twig" %}
{% block admin_content -%} {% block admin_content -%}

View File

@@ -1,4 +1,4 @@
{% extends "ChillEventBundle:Admin:layout.html.twig" %} {% extends "ChillEventBundle:Admin:index.html.twig" %}
{% block admin_content -%} {% block admin_content -%}

View File

@@ -1,4 +1,4 @@
{% extends "ChillEventBundle:Admin:layout.html.twig" %} {% extends "ChillEventBundle:Admin:index.html.twig" %}
{% block admin_content -%} {% block admin_content -%}

View File

@@ -9,24 +9,24 @@ chill_event_participation:
## ADMIN ## ADMIN
chill_event_admin: chill_event_admin_index:
path: /{_locale}/admin/event path: /{_locale}/admin/event
controller: Chill\EventBundle\Controller\AdminController::indexAction controller: Chill\EventBundle\Controller\AdminController::indexAdminAction
options: # options:
menus: # menus:
admin_section: # admin_section:
order: 2100 # order: 2100
label: "Events" # label: "Events"
icons: ['calendar'] # icons: ['calendar']
chill_event_admin_redirect_to_admin_index: # chill_event_admin_redirect_to_admin_index:
path: /{_locale}/admin/event_redirect_to_main # path: /{_locale}/admin/event_redirect_to_main
controller: Chill\EventBundle\Controller\AdminController::redirectToAdminIndexAction # controller: Chill\EventBundle\Controller\AdminController::redirectToAdminIndexAction
options: # options:
menus: # menus:
admin_events: # admin_events:
order: 0 # order: 0
label: Main admin menu # label: Main admin menu
chill_event_admin_status: chill_event_admin_status:
resource: "@ChillEventBundle/config/routes/status.yaml" resource: "@ChillEventBundle/config/routes/status.yaml"

View File

@@ -1,2 +1,11 @@
services: services:
Chill\EventBundle\Controller\:
autowire: true
resource: '../Controller'
tags: ['controller.service_arguments']
Chill\EventBundle\Menu\:
autowire: true
autoconfigure: true
resource: '../Menu/'
tags: ['chill.menu_builder']

View File

@@ -126,7 +126,7 @@ class Version20160318111334 extends AbstractMigration
$this->addSql('ALTER TABLE chill_event_participation ' $this->addSql('ALTER TABLE chill_event_participation '
. 'ADD CONSTRAINT FK_4E7768AC217BBB47 ' . 'ADD CONSTRAINT FK_4E7768AC217BBB47 '
. 'FOREIGN KEY (person_id) ' . 'FOREIGN KEY (person_id) '
. 'REFERENCES Person (id) ' . 'REFERENCES chill_person_person(id) '
. 'NOT DEFERRABLE INITIALLY IMMEDIATE'); . 'NOT DEFERRABLE INITIALLY IMMEDIATE');
$this->addSql('ALTER TABLE chill_event_participation ' $this->addSql('ALTER TABLE chill_event_participation '
. 'ADD CONSTRAINT FK_4E7768ACD60322AC ' . 'ADD CONSTRAINT FK_4E7768ACD60322AC '

View File

@@ -405,7 +405,7 @@ class ExportController extends AbstractController
'alias' => $alias, 'alias' => $alias,
]; ];
unset($parameters['_token']); unset($parameters['_token']);
$key = md5(uniqid(mt_rand(), false)); $key = md5(uniqid((string) mt_rand(), false));
$this->redis->setEx($key, 3600, serialize($parameters)); $this->redis->setEx($key, 3600, serialize($parameters));

View File

@@ -92,5 +92,8 @@ final class PostalCodeAPIController extends ApiController
$qb->where('e.country = :country') $qb->where('e.country = :country')
->setParameter('country', $request->query->get('country')); ->setParameter('country', $request->query->get('country'));
} }
$qb->andWhere('e.origin = :zero')
->setParameter('zero', 0);
} }
} }

View File

@@ -12,7 +12,9 @@ declare(strict_types=1);
namespace Chill\MainBundle\Controller; namespace Chill\MainBundle\Controller;
use Chill\MainBundle\CRUD\Controller\ApiController; use Chill\MainBundle\CRUD\Controller\ApiController;
use Doctrine\ORM\QueryBuilder;
use Symfony\Component\HttpFoundation\JsonResponse; use Symfony\Component\HttpFoundation\JsonResponse;
use Symfony\Component\HttpFoundation\Request;
use Symfony\Component\Routing\Annotation\Route; use Symfony\Component\Routing\Annotation\Route;
class UserApiController extends ApiController class UserApiController extends ApiController
@@ -58,4 +60,14 @@ class UserApiController extends ApiController
['groups' => ['read']] ['groups' => ['read']]
); );
} }
/**
* @param QueryBuilder $query
*/
protected function customizeQuery(string $action, Request $request, $query): void
{
if ('_index' === $action) {
$query->andWhere($query->expr()->eq('e.enabled', "'TRUE'"));
}
}
} }

View File

@@ -0,0 +1,25 @@
<?php
/**
* Chill is a software for social workers
*
* For the full copyright and license information, please view
* the LICENSE file that was distributed with this source code.
*/
declare(strict_types=1);
namespace Chill\MainBundle\Controller;
use Chill\MainBundle\CRUD\Controller\ApiController;
use Symfony\Component\HttpFoundation\Request;
class UserJobApiController extends ApiController
{
protected function customizeQuery(string $action, Request $request, $query): void
{
if ('_index' === $action) {
$query->andWhere($query->expr()->eq('e.active', "'TRUE'"));
}
}
}

View File

@@ -19,6 +19,7 @@ use Chill\MainBundle\Controller\LanguageController;
use Chill\MainBundle\Controller\LocationController; use Chill\MainBundle\Controller\LocationController;
use Chill\MainBundle\Controller\LocationTypeController; use Chill\MainBundle\Controller\LocationTypeController;
use Chill\MainBundle\Controller\UserController; use Chill\MainBundle\Controller\UserController;
use Chill\MainBundle\Controller\UserJobApiController;
use Chill\MainBundle\Controller\UserJobController; use Chill\MainBundle\Controller\UserJobController;
use Chill\MainBundle\DependencyInjection\Widget\Factory\WidgetFactoryInterface; use Chill\MainBundle\DependencyInjection\Widget\Factory\WidgetFactoryInterface;
use Chill\MainBundle\Doctrine\DQL\GetJsonFieldByKey; use Chill\MainBundle\Doctrine\DQL\GetJsonFieldByKey;
@@ -501,6 +502,7 @@ class ChillMainExtension extends Extension implements
'name' => 'user_job', 'name' => 'user_job',
'base_path' => '/api/1.0/main/user-job', 'base_path' => '/api/1.0/main/user-job',
'base_role' => 'ROLE_USER', 'base_role' => 'ROLE_USER',
'controller' => UserJobApiController::class,
'actions' => [ 'actions' => [
'_index' => [ '_index' => [
'methods' => [ 'methods' => [

View File

@@ -87,7 +87,7 @@ class ComposedRoleScopeType extends AbstractType
}, },
]) ])
->add('scope', EntityType::class, [ ->add('scope', EntityType::class, [
'class' => 'ChillMainBundle:Scope', 'class' => Scope::class,
'choice_label' => static function (Scope $scope) use ($translatableStringHelper) { 'choice_label' => static function (Scope $scope) use ($translatableStringHelper) {
return $translatableStringHelper->localize($scope->getName()); return $translatableStringHelper->localize($scope->getName());
}, },

View File

@@ -78,11 +78,11 @@ class PickCenterType extends AbstractType
$export = $this->exportManager->getExport($options['export_alias']); $export = $this->exportManager->getExport($options['export_alias']);
$centers = $this->authorizationHelper->getReachableCenters( $centers = $this->authorizationHelper->getReachableCenters(
$this->user, $this->user,
$export->requiredRole() (string) $export->requiredRole()
); );
$builder->add(self::CENTERS_IDENTIFIERS, EntityType::class, [ $builder->add(self::CENTERS_IDENTIFIERS, EntityType::class, [
'class' => 'ChillMainBundle:Center', 'class' => Center::class,
'query_builder' => static function (EntityRepository $er) use ($centers) { 'query_builder' => static function (EntityRepository $er) use ($centers) {
$qb = $er->createQueryBuilder('c'); $qb = $er->createQueryBuilder('c');
$ids = array_map( $ids = array_map(

View File

@@ -43,6 +43,7 @@ class UserCurrentLocationType extends AbstractType
}, },
'placeholder' => 'Pick a location', 'placeholder' => 'Pick a location',
'required' => false, 'required' => false,
'attr' => ['class' => 'select2'],
]); ]);
} }
} }

View File

@@ -119,8 +119,8 @@ final class PostalCodeRepository implements ObjectRepository
$pertinenceClause = ['STRICT_WORD_SIMILARITY(canonical, UNACCENT(?))']; $pertinenceClause = ['STRICT_WORD_SIMILARITY(canonical, UNACCENT(?))'];
$pertinenceArgs = [$pattern]; $pertinenceArgs = [$pattern];
$orWhere = ['canonical %>> UNACCENT(?)']; $andWhere = ['canonical %>> UNACCENT(?)'];
$orWhereArgs = [$pattern]; $andWhereArgs = [$pattern];
foreach (explode(' ', $pattern) as $part) { foreach (explode(' ', $pattern) as $part) {
$part = trim($part); $part = trim($part);
@@ -129,8 +129,8 @@ final class PostalCodeRepository implements ObjectRepository
continue; continue;
} }
$orWhere[] = "canonical LIKE '%' || UNACCENT(LOWER(?)) || '%'"; $andWhere[] = "canonical LIKE '%' || UNACCENT(LOWER(?)) || '%'";
$orWhereArgs[] = $part; $andWhereArgs[] = $part;
$pertinenceClause[] = $pertinenceClause[] =
"(EXISTS (SELECT 1 FROM unnest(string_to_array(canonical, ' ')) AS t WHERE starts_with(t, UNACCENT(LOWER(?)))))::int"; "(EXISTS (SELECT 1 FROM unnest(string_to_array(canonical, ' ')) AS t WHERE starts_with(t, UNACCENT(LOWER(?)))))::int";
$pertinenceClause[] = $pertinenceClause[] =
@@ -139,7 +139,7 @@ final class PostalCodeRepository implements ObjectRepository
} }
$query $query
->setSelectPertinence(implode(' + ', $pertinenceClause), $pertinenceArgs) ->setSelectPertinence(implode(' + ', $pertinenceClause), $pertinenceArgs)
->andWhereClause(implode(' OR ', $orWhere), $orWhereArgs); ->andWhereClause(implode(' AND ', $andWhere), $andWhereArgs);
return $query; return $query;
} }

View File

@@ -42,13 +42,6 @@ body {
footer { footer {
margin-top: auto; margin-top: auto;
} }
.content-title {
background-color: $chill-l-gray;
border-radius:3px;
padding:.5rem;
margin-bottom: 1rem;
box-shadow: rgba(0, 0, 0, 0.12) 0px 1px 3px, rgba(0, 0, 0, 0.24) 0px 1px 2px !important;
}
} }
header { header {
@@ -221,19 +214,6 @@ footer.footer {
} }
} }
/*
* PERSON INFO
*/
.chill_view_data, .pop-item {
.info-field {
border: 1px dashed;
padding:.5rem;
border-radius:3px;
margin-top:.5rem;
}
}
/* /*
* ADMIN STYLES * ADMIN STYLES
*/ */
@@ -280,8 +260,6 @@ table.table-bordered {
background-color: $gray-200; background-color: $gray-200;
color: $gray-800; color: $gray-800;
font-size: 90%; font-size: 90%;
box-shadow: rgba(0, 0, 0, 0.12) 0px 1px 3px, rgba(0, 0, 0, 0.24) 0px 1px 2px;
border-radius: 5px !important;
p { p {
margin-bottom: 0.75rem !important; margin-bottom: 0.75rem !important;
@@ -481,19 +459,8 @@ span.item-key {
/// Workflows /// Workflows
div.workflow { div.workflow {
section.step { section.step {
form { border: 1px solid $chill-l-gray;
display: flex; padding: 1em 2em;
flex-direction: column;
align-items: center;
}
i.fa-angle-double-down {
font-size: 3rem;
color: rgba(0, 0, 0, 0.568);
margin-bottom: 1rem;
margin-top: 1rem;
}
// border: 1px solid $chill-l-gray;
// padding: 1em 2em;
div.flex-table { div.flex-table {
margin: 1.5em -2em; margin: 1.5em -2em;
} }

View File

@@ -6,26 +6,6 @@
* FLEX RESPONSIVE TABLE/BLOCK PRESENTATION * FLEX RESPONSIVE TABLE/BLOCK PRESENTATION
*/ */
.pop-item {
border-radius: 10px !important;
box-shadow: rgba(0, 0, 0, 0.12) 0px 1px 3px, rgba(0, 0, 0, 0.24) 0px 1px 2px !important;
padding:1.7rem;
margin-top: .5rem;
margin-bottom: .5rem;
.subtitle {
background-color: $chill-ll-gray;
border-radius:3px;
padding:.5rem;
margin-top: 1rem;
}
&:last-child {
margin-bottom: 1rem;
}
&:first-child {
margin-top:1rem;
}
}
div.flex-bloc, div.flex-bloc,
div.flex-table { div.flex-table {
display: flex; display: flex;
@@ -34,39 +14,11 @@ div.flex-table {
box-sizing: border-box; box-sizing: border-box;
margin: 1.5em 0; margin: 1.5em 0;
div.message-item {
border-radius: 10px !important;
box-shadow: rgba(9, 30, 66, 0.25) 0px 1px 1px, rgba(9, 30, 66, 0.13) 0px 0px 1px 1px !important;
width: 96%;
margin-bottom: .5rem;
margin-left: auto;
margin-right: auto;
}
div.card-item {
border-radius: 10px !important;
box-shadow: rgba(0, 0, 0, 0.4) 0px 2px 4px, rgba(0, 0, 0, 0.3) 0px 7px 13px -3px, rgba(0, 0, 0, 0.2) 0px -3px 0px inset !important;
width: 96%;
margin-left: auto;
margin-right: auto;
}
div.item-bloc { div.item-bloc {
display: flex; display: flex;
@include border-collapse; @include border-collapse;
padding: 1em; padding: 1em;
border-radius: 5px !important;
box-shadow: rgba(0, 0, 0, 0.12) 0px 1px 3px, rgba(0, 0, 0, 0.24) 0px 1px 2px, rgba(0, 0, 0, 0.24) 0px 1px 2px !important;
margin-left: auto;
margin-right: auto;
margin-top: .5rem;
width: 97%;
&:last-child {
margin-bottom: 1rem;
}
&:first-child {
margin-top:1rem;
}
div.item-row { div.item-row {
display: flex; display: flex;

View File

@@ -48,40 +48,19 @@ div.notification-show {
} }
} }
ul.small_in_title { ul.small_in_title {
// list-style-type: circle; list-style-type: circle;
li { li {
list-style: none;
margin-bottom: 1rem;
span.item-key { span.item-key {
display: inline-block; display: inline-block;
background-color: white;
width: 3em; width: 3em;
font-size: 1.2rem;
} }
} }
} }
} }
div.notification-content { div.notification-content {
width: 93%; margin: 1.5rem;
margin: 1.5rem auto 1.5rem auto; p {
.message { margin-bottom: 0.75rem;
background-color: #f3f3f3;
line-height: 1.75;
box-shadow: rgba(0, 0, 0, 0.25) 0px 0.0625em 0.0625em, rgba(0, 0, 0, 0.25) 0px 0.125em 0.5em, rgba(255, 255, 255, 0.1) 0px 0px 0px 1px inset;
padding: 1.5rem;
border-radius: 5px;
border-left: $chill-yellow 10px solid;
p:first-child {
margin-bottom: 1rem;
&::before {
content: "";
font-family: Georgia;
font-size: 40px;
line-height: 0;
display: inline-block;
display: -webkit-inline-box;
}
}
} }
} }
} }

View File

@@ -121,7 +121,9 @@ export default {
this.entity.selected.city = value; this.entity.selected.city = value;
this.entity.selected.postcode.name = value.name; this.entity.selected.postcode.name = value.name;
this.entity.selected.postcode.code = value.code; this.entity.selected.postcode.code = value.code;
if (value.center) {
this.entity.selected.postcode.coordinates = value.center.coordinates; this.entity.selected.postcode.coordinates = value.center.coordinates;
}
this.entity.selected.writeNew.postcode = false; this.entity.selected.writeNew.postcode = false;
this.$emit('getReferenceAddresses', value); this.$emit('getReferenceAddresses', value);
this.focusOnAddress(); this.focusOnAddress();

View File

@@ -67,16 +67,14 @@
<div class="notification-content"> <div class="notification-content">
{% if c.full_content is defined and c.full_content == true %} {% if c.full_content is defined and c.full_content == true %}
{% if c.notification.message is not empty %} {% if c.notification.message is not empty %}
<div class="message">{{ c.notification.message|chill_markdown_to_html }}</div> {{ c.notification.message|chill_markdown_to_html }}
{% else %} {% else %}
<p class="chill-no-data-statement">{{ 'Any comment'|trans }}</p> <p class="chill-no-data-statement">{{ 'Any comment'|trans }}</p>
{% endif %} {% endif %}
{% else %} {% else %}
{% if c.notification.message is not empty %} {% if c.notification.message is not empty %}
<div class="message">
{{ c.notification.message|u.truncate(250, '…', false)|chill_markdown_to_html }} {{ c.notification.message|u.truncate(250, '…', false)|chill_markdown_to_html }}
<p class="read-more"><a href="{{ chill_path_add_return_path('chill_main_notification_show', {'id': c.notification.id}) }}">{{ 'Read more'|trans }}</a></p> <p class="read-more"><a href="{{ chill_path_add_return_path('chill_main_notification_show', {'id': c.notification.id}) }}">{{ 'Read more'|trans }}</a></p>
</div>
{% else %} {% else %}
<p class="chill-no-data-statement">{{ 'Any comment'|trans }}</p> <p class="chill-no-data-statement">{{ 'Any comment'|trans }}</p>
{% endif %} {% endif %}

View File

@@ -9,7 +9,7 @@
{% set labels = workflow_metadata(entity_workflow, 'label', step.currentStep) %} {% set labels = workflow_metadata(entity_workflow, 'label', step.currentStep) %}
{% set label = labels is null ? step.currentStep : labels|localize_translatable_string %} {% set label = labels is null ? step.currentStep : labels|localize_translatable_string %}
<div class="pop-item"> <div class="card">
<div class="card-body"> <div class="card-body">
<div class="row"> <div class="row">
<div class="col-sm-12"> <div class="col-sm-12">
@@ -47,8 +47,7 @@
{% endif %} {% endif %}
</div> </div>
</div> </div>
<i class="fa fa-angle-double-down" aria-hidden="true"></i>
<div class="pop-item">
<div id="transitionFilter"> <div id="transitionFilter">
{% if transition_form.transitionFilter is defined %} {% if transition_form.transitionFilter is defined %}
{{ form_row(transition_form.transitionFilter) }} {{ form_row(transition_form.transitionFilter) }}
@@ -80,7 +79,6 @@
</ul> </ul>
{{ form_end(transition_form) }} {{ form_end(transition_form) }}
</div>
{% else %} {% else %}
<div class="alert alert-chill-yellow"> <div class="alert alert-chill-yellow">

View File

@@ -5,7 +5,7 @@
{% set place_labels = workflow_metadata(entity_workflow, 'label', step.currentStep) %} {% set place_labels = workflow_metadata(entity_workflow, 'label', step.currentStep) %}
{% set place_label = place_labels is null ? step.currentStep : place_labels|localize_translatable_string %} {% set place_label = place_labels is null ? step.currentStep : place_labels|localize_translatable_string %}
<div class="item-bloc message-item {{ 'bloc' ~ step.id }} {% if loop.first %}initial{% endif %}"> <div class="item-bloc {{ 'bloc' ~ step.id }} {% if loop.first %}initial{% endif %}">
<div class="item-row"> <div class="item-row">
{% if loop.first and step.next is null %} {% if loop.first and step.next is null %}

View File

@@ -32,20 +32,15 @@
- src/Bundle/ChillPersonBundle/Resources/views/Workflow/_accompanying_period_work.html.twig - src/Bundle/ChillPersonBundle/Resources/views/Workflow/_accompanying_period_work.html.twig
- src/Bundle/ChillDocStoreBundle/Resources/views/AccompanyingCourseDocument/_workflow.html.twig - src/Bundle/ChillDocStoreBundle/Resources/views/AccompanyingCourseDocument/_workflow.html.twig
#} #}
<section class="step my-4 pop-item"> <section class="step my-4">
<div class="mb-3"> <div class="mb-5">
<h2>{{ handler.entityTitle(entity_workflow) }}</h2> <h2>{{ handler.entityTitle(entity_workflow) }}</h2>
{{ macro.breadcrumb({'entity_workflow': entity_workflow}) }} {{ macro.breadcrumb({'entity_workflow': entity_workflow}) }}
</div> </div>
{% include handler_template with handler_template_data|merge({'display_action': true }) %} {% include handler_template with handler_template_data|merge({'display_action': true }) %}
</section>
<section class="step my-4">{% include '@ChillMain/Workflow/_decision.html.twig' %}</section>
<section class="step my-4 pop-item">{% include '@ChillMain/Workflow/_follow.html.twig' %}</section>
{#<section class="step my-4">{% include '@ChillMain/Workflow/_comment.html.twig' %}</section> #}
<section class="step my-4 pop-item">{% include '@ChillMain/Workflow/_history.html.twig' %}</section>
{% if is_granted('CHILL_MAIN_WORKFLOW_DELETE', entity_workflow) %} {% if is_granted('CHILL_MAIN_WORKFLOW_DELETE', entity_workflow) %}
<ul class="record_actions"> <ul class="record_actions">
<li> <li>
@@ -57,6 +52,13 @@
</li> </li>
</ul> </ul>
{% endif %} {% endif %}
</section>
<section class="step my-4">{% include '@ChillMain/Workflow/_follow.html.twig' %}</section>
<section class="step my-4">{% include '@ChillMain/Workflow/_decision.html.twig' %}</section>{#
<section class="step my-4">{% include '@ChillMain/Workflow/_comment.html.twig' %}</section> #}
<section class="step my-4">{% include '@ChillMain/Workflow/_history.html.twig' %}</section>
{# useful ? {# useful ?
<ul class="record_actions sticky-form-buttons"> <ul class="record_actions sticky-form-buttons">
<li class="cancel"> <li class="cancel">

View File

@@ -16,6 +16,7 @@ use Chill\MainBundle\Notification\Counter\NotificationByUserCounter;
use Chill\MainBundle\Routing\LocalMenuBuilderInterface; use Chill\MainBundle\Routing\LocalMenuBuilderInterface;
use Chill\MainBundle\Workflow\Counter\WorkflowByUserCounter; use Chill\MainBundle\Workflow\Counter\WorkflowByUserCounter;
use Symfony\Component\DependencyInjection\ParameterBag\ParameterBagInterface; use Symfony\Component\DependencyInjection\ParameterBag\ParameterBagInterface;
use Symfony\Component\HttpFoundation\RequestStack;
use Symfony\Component\Security\Core\Security; use Symfony\Component\Security\Core\Security;
use Symfony\Contracts\Translation\TranslatorInterface; use Symfony\Contracts\Translation\TranslatorInterface;
@@ -25,6 +26,8 @@ class UserMenuBuilder implements LocalMenuBuilderInterface
private NotificationByUserCounter $notificationByUserCounter; private NotificationByUserCounter $notificationByUserCounter;
private RequestStack $requestStack;
private Security $security; private Security $security;
private TranslatorInterface $translator; private TranslatorInterface $translator;
@@ -36,13 +39,15 @@ class UserMenuBuilder implements LocalMenuBuilderInterface
WorkflowByUserCounter $workflowByUserCounter, WorkflowByUserCounter $workflowByUserCounter,
Security $security, Security $security,
TranslatorInterface $translator, TranslatorInterface $translator,
ParameterBagInterface $parameterBag ParameterBagInterface $parameterBag,
RequestStack $requestStack
) { ) {
$this->notificationByUserCounter = $notificationByUserCounter; $this->notificationByUserCounter = $notificationByUserCounter;
$this->workflowByUserCounter = $workflowByUserCounter; $this->workflowByUserCounter = $workflowByUserCounter;
$this->security = $security; $this->security = $security;
$this->translator = $translator; $this->translator = $translator;
$this->parameterBag = $parameterBag; $this->parameterBag = $parameterBag;
$this->requestStack = $requestStack;
} }
public function buildMenu($menuId, \Knp\Menu\MenuItem $menu, array $parameters) public function buildMenu($menuId, \Knp\Menu\MenuItem $menu, array $parameters)
@@ -59,7 +64,12 @@ class UserMenuBuilder implements LocalMenuBuilderInterface
$menu $menu
->addChild( ->addChild(
$locationTextMenu, $locationTextMenu,
['route' => 'chill_main_user_currentlocation_edit'] [
'route' => 'chill_main_user_currentlocation_edit',
'routeParameters' => [
'returnPath' => $this->requestStack->getCurrentRequest()->getRequestUri(),
],
]
) )
->setExtras([ ->setExtras([
'order' => -9999999, 'order' => -9999999,

View File

@@ -47,12 +47,12 @@ final class Version20210505153727 extends AbstractMigration
'); ');
$this->addSql(' $this->addSql('
WITH hydrated_addresses AS ( WITH hydrated_addresses AS (
SELECT *, rank() OVER (PARTITION BY pa_a.person_id ORDER BY validfrom) SELECT *, rank() OVER (PARTITION BY pa_a.person_id ORDER BY validfrom, id)
FROM chill_main_address AS aa JOIN chill_person_persons_to_addresses AS pa_a ON aa.id = pa_a.address_id FROM chill_main_address AS aa JOIN chill_person_persons_to_addresses AS pa_a ON aa.id = pa_a.address_id
) )
UPDATE chill_main_address AS b UPDATE chill_main_address AS b
SET validto = ( SET validto = (
SELECT validfrom - INTERVAL \'1 DAY\' SELECT validfrom
FROM hydrated_addresses FROM hydrated_addresses
WHERE hydrated_addresses.id = ( WHERE hydrated_addresses.id = (
SELECT a1.id SELECT a1.id

View File

@@ -0,0 +1,39 @@
<?php
/**
* Chill is a software for social workers
*
* For the full copyright and license information, please view
* the LICENSE file that was distributed with this source code.
*/
declare(strict_types=1);
namespace Chill\Migrations\Main;
use Doctrine\DBAL\Schema\Schema;
use Doctrine\Migrations\AbstractMigration;
final class Version20220711150006 extends AbstractMigration
{
public function down(Schema $schema): void
{
$this->addSql('ALTER TABLE chill_main_workflow_entity_step
DROP CONSTRAINT chill_custom_only_one_step_opened');
}
public function getDescription(): string
{
return 'Add a constraint to ensure that only one step is available at a time';
}
public function up(Schema $schema): void
{
$this->addSql('ALTER TABLE chill_main_workflow_entity_step
ADD CONSTRAINT chill_custom_only_one_step_opened
EXCLUDE (
entityworkflow_id WITH =
) WHERE (transitionafter IS NULL)
DEFERRABLE INITIALLY DEFERRED');
}
}

View File

@@ -1,9 +1,459 @@
Search: Zoek "This program is free software: you can redistribute it and/or modify it under the terms of the <strong>GNU Affero General Public License</strong>": "Ce programme est un logiciel libre: vous pouvez le redistribuer et/ou le modifier selon les termes de la licence <strong>GNU Affero GPL</strong>"
'Search persons, ...': 'Zoek persoons, ...' User manual: Gebruikershandleiding
Search a person: Zoek een persoon Search: Zoeken
Login: Log in "Search persons, ...": "Zoek personen, ..."
Logout: Log out Person name: Naam / voornaam persoon
Login: Inloggen
Logout: Uitloggen
Bad credentials.: Een verkeerd wachtwoord of gebruikersnaam werd opgegeven.
Invalid CSRF token.: Uw sessie is verlopen.
Username: Gebruikersnaam Username: Gebruikersnaam
Password: Wachtworrd username: gebruikersnaam
Login to %installation_name%: Log in bij %installation_name% Password: Wachtwoord
Welcome to %installation_name%: Welkom bij %installation_name% Welcome to %installation_name%: Welkom bij %installation_name%
Login to %installation_name%: Inloggen op %installation_name%
Enabled: Ingeschakeld
enabled: ingeschakeld
disabled: uitgeschakeld
Disabled: Uitgeschakeld
Id: Id
Homepage: Hoofdpagina
Welcome: Welkom
Export Menu: Export
Admin Menu: Admin menu
Details: Details
yes: ja
no: nee
valid: geldig
Valid: Geldig
Not valid: Ongeldig
not valid: ongeldig
Confirm: Bevestigen
Cancel: Annuleren
Save: Opslaan
This form contains errors: Dit formulier bevat fouten
Choose an user: Kies een gebruiker
"You are going to leave a page with unsubmitted data. Are you sure you want to leave ?": "U verlaat een pagina waarvan de gegevens niet werden opgeslagen. Bent u zeker deze pagina te willen verlaten?"
No value: Geen informatie
Last updated by: Laatste update door
on: "op "
Last updated on: Laatste update op
by_user: "door "
Edit: Bewerken
Update: Updaten
Back to the list: Terug naar overzicht
#interval
Years: Jaren
# misc date
Since %date%: Sinds %date%
since %date%: sinds %date%
Until %date%: Tot %date%
until %date%: tot %date%
Since: Sinds
Until: Tot
#elements used in software
centers: centra
Centers: Centra
comment: opmerkingen
Comment: Opmerkingen
Pinned comment: Gepinde opmerking
Any comment: Geen opmerkingen
Read more: Meer lezen
# comment embeddable
No comment associated: Geen opmerkingen
#pagination
Previous: Vorige
Next: Volgende
#addresses
Street address1: Adres regel 1
Street address2: Adres regel 2
Postal code: Postcode
Valid from: Geldig vanaf
Choose a postal code: Kies een postcode
address:
address_homeless: Betreft dit een domicilie adres ?
real address: Domicilie adres
consider homeless: Dit adres is onvolledig
address more:
floor: verd.
corridor: gang
steps: trap
flat: appart.
buildingName: residentie
extra: ""
distribution: cedex
Create a new address: Maak een nieuw adres aan
Create an address: Maak een adres aan
Update address: Bewerk het adres
City or postal code: Stad of postcode
# contact
Part of the phonenumber: Deel van het telefoonnummer
#serach
Your search is empty. Please provide search terms.: De zoekopdracht is leeg. Gelieve een zoekterm op te geven.
The domain %domain% is unknow. Please check your search.: Het zoekgebied "%domain%" is ongekend. Gelieve uw zoekopdracht te verifiëren.
Invalid terms: Ongeldige zoekopdracht
You should not have more than one domain.: Gelieve slechts één zoekgebied op te geven.
#used for page title
Search %pattern%: Zoek "%pattern%"
Results %start%-%end% of %total%: Resultaten %start%-%end% van %total%
See all results: Alle resultaten zien
Advanced search: Geavanceerde zoekopdracht
results: resultaten
# timeline
Global timeline: Globale tijdslijn
#admin
Create: Aanmaken
show: bekijken
Show: Bekijken
edit: bewerken
Main admin menu: Hoofdmenu admin
Actions: Acties
Users and permissions: Gebruikers en rechten
Location and location type: Vestigingen en vestiging types
#permissions
Permissions Menu: Beheer rechten
Permissions management of your chill installation: Beheer rechten voor deze Chill installatie.
#location
Location Menu: Vestigingen en vestiging types
Management of location: Beheer vestigingen en vestiging types
#admin section
"Administration interface": Admin paneel
Welcome to the admin section !: >
Welkom op het admin paneel !
#admin section for center's administration
Create a new center: Maak een nieuw centrum aan
Center list: Overzicht centra
Center edit: Bewerk een centrum
Center creation: Aanmaak centrum
New center: Nieuw centrum
Center: Centrum
#admin section for permissions group
Permissions group list: Groepsrechten
Create a new permissions group: Maak een nieuw groepsrecht aan
Permission group "%name%": Groepsrecht "%name%"
Grant those permissions: Rechten toekennen
Which implies: Wat impliceert
Permission group: Groepsrecht
Permissionsgroup: Groepsrecht
New permission group: Nieuw groepsrecht
PermissionsGroup "%name%" edit: Bewerk groepsrecht '%name%'
Role: Rol
Choose amongst roles: Kies een rol
Add permission: Rechten toevoegen
This group does not provide any permission: Deze groep kent geen rechten toe.
The role '%role%' has been removed: De rol "%role%" werd verwijdert uit dit groepsrecht.
The role '%role%' on circle '%scope%' has been removed: De rol "%role%" binnen de cirkel "%scope%" werd verwijdert uit dit groepsrecht.
#admin section for users
User edit: Gebruiker bewerken
User'status: Gebruikersstatuut
Disabled, the user is not allowed to login: Uitgeschakeld, de gebruiker krijgt geen toestemming om in te loggen.
Enabled, the user is active: Ingeschakeld, de gebruiker kan zich inloggen.
Edit password: Wachtwoord aanpassen
Repeat the password: Wachtwoord herhalen
Permissions granted: Rechten toegekend
Any permissions granted to this user: Geen enkele rechten werden toegekend aan deze gebruiker
Grant new permissions: Rechten toevoegen
Add a new groupCenter: Rechten toevoegen
The permissions have been successfully added to the user: De rechten werden toegekend aan de gebruiker
The permissions where removed.: De rechten werden verwijdert voor dze gebruiker
Center & groups: Centra en groepen
User %username%: Gebruiker %username%
Add a new user: Nieuwe gebruiker toevoegen
The permissions have been added: De rechten werden toegevoegd
Edit password for %username%: Wachtwoord voor %username% aanpassen
Change password: Wachtwoord aanpassen
Back to the user edition: Terugkeren naar bewerkingsformulier
Password successfully updated!: Wachtwoord opgeslagen
Flags: Vlaggen
# admin section for users jobs
User jobs: Beroepen
# user page for current location
Current location: Huidige vestiging
Edit my current location: Mijn huidige vestiging bewerken
Change current location: CMijn huidige vestiging vernanderen
Set a location: Een vestiging instellen
Current location successfully updated: Huidige vestiging werd opgeslagen
Pick a location: Kies een vestiging.
#admin section for circles (old: scopes)
List circles: Cirkels
New circle: Nieuwe cirkel
Circle: Cirkel
Circle edit: Cirkel bewerken
Circle creation: Cirkel aanmaken
Create a new circle: Nieuwe cirkel aanmaken
#admin section for location
Location: Vestigingen
Location type list: Vestiging types
Create a new location type: Nieuwe type vestiging aanmaken
Available for users: Beschikbaar voor gebruikers
Editable by users: Bewerkbaar door gebruikers
Address required: Adres vereist?
Contact data: Contactgegevens?
optional: optioneel
required: vereist
never: nooit
Create a new location: Nieuwe vestiging aanmaken
Location list: Overzicht vestigingen
Location type: Type vestiging
Phonenumber1: Telefoonnummer 1
Phonenumber2: Telefoonnummer 2
Configure location and location type: Configureer vestigingen en types vestiging
Default for: Standaard vestiging
none: geen
person: gebruiker
thirdparty: externe partner
# circles / scopes
Choose the circle: Kies een cirkel
Scopes: Diensten
#export
# export creation step 0 : list of exports
Exports list: Overzicht rapporten
Create an export: Maak een rapport aan
#export creation step 'center' : pick a center
Pick centers: Kies centra
Pick a center: Kies een centrum
The export will contains only data from the picked centers.: het rapport zal enkel data bevatten voor het geselecteerde centrum.
This will eventually restrict your possibilities in filtering the data.: De filterkeuzes zullen worden aangepast aan de rechten tot raadpleging van de geselecteerde centra.
Go to export options: Ga naar de rapport opties
Pick aggregated centers: Hergroepering centra
# export creation step 'export' : choose aggregators, filtering and formatter
Formatter: Formateren
Choose the formatter: Kies het gewenste formaat voor dit rapport.
Export parameters: Rapport parameters
Filters: Filters
Aggregators: Aggregaten
Go to formatter options: Naar de formateeropties
Choose a format: Kies een formaat
#export creation step 'formatter' : choose formatter option
Generate the report: Rapport genereren
No options availables. Your report is fully configured.: Geen beschikbare opties. Dit rapport werd volledig geconfigureerd.
Ungrouped exports: Overige expor
#export download
Download export: Téléchargement du rapport
Waiting for your report: En attente de votre rapport
Download your report: Télécharger votre rapport
Problem during download: Problème durant le téléchargement
# sans valeur
without data: sans valeur
#CSV List Formatter
Add a number on first column: La première colonne est un numéro
Number: Numéro
# the label which appears in the UI
CSV vertical list: Liste verticale au format CSV
CSV horizontal list: Liste horizontale au format CSV
Spreadsheet list formatter (.xlsx, .ods): Liste au format tableur (.xlsx, .ods)
Order: Ordre
Position: Position
row: ligne
column: colonne
Comma separated values (CSV): Valeurs séparées par des virgules (CSV - tableur)
# spreadsheet formatter
Choose the format: Choisir le format
# select2
"select2.no_results": Aucun résultat
"select2.error_loading": Erreur de chargement des résultats
"select2.searching": Recherche en cours...
# change password
Change my password: Modification du mot de passe
Your actual password: Mot de passe actuel
# recover password
Forgot your password ?: Mot de passe oublié ?
Recover password: Remplacement du mot de passe
Username or email: Nom d'utilisateur ou email
Request recover: Demande de remplacement
Check your email: Vérifiez votre courriel
An email has been sent to your address. Click on the link inside this email to confirm that you are the owner of this account.: Un courriel a été envoyé à votre adresse. Cliquez sur le lien de cet email pour confirmer que vous êtes bien le propriétaire de ce compte.
You requested to recover your password: Vous avez demandé à renouveler votre mot de passe.
Click on the link below to recover your password: Cliquez sur le lien ci-dessous pour re-générer votre mot de passe
Regards,: Cordialement,
Your administrator: Votre administrateur
Recover your password: Regénération du mot de passe
New password set: Le nouveau mot de passe est enregistré
Your password has been set.: Votre mot de passe a été changé.
Log in with your new password: Connectez-vous avec votre nouveau mot de passe
# impersonate
Exit impersonation: Retour Administrateur
Impersonate: Incarner l'utilisateur
Impersonate mode: Mode fantôme
crud:
# general items
new:
button_action_form: Créer
link_edit: Modifier
save_and_close: Créer & fermer
save_and_show: Créer & voir
save_and_new: Créer & nouveau
success: Les données ont été créées
edit:
button_action_form: Enregistrer
back_to_view: Voir
save_and_close: Enregistrer & fermer
save_and_show: Enregistrer & voir
success: Les données ont été modifiées
delete:
success: Les données ont été supprimées
link_to_form: Supprimer
default:
success: Les données ont été enregistrées
view:
link_duplicate: Dupliquer
admin_user:
index:
title: Utilisateurs
add_new: Créer
admin_user_job:
index:
title: Métiers
add_new: Créer
title_new: Nouveau métier
title_edit: Modifier un métier
main_location_type:
title_new: Nouveau type de localisation
title_edit: Modifier un type de localisation
main_location:
title_new: Nouvelle localisation
title_edit: Modifier une localisation
No entities: Aucun élément
CHILL_FOO_SEE: Voir un élément
CHILL_FOO_EDIT: Modifier un élément
#Show templates
Date: Date
By: Par
For: Pour
Created for: Créé pour
Created by: Créé par
Created on: Créé le
# Workflows 💊
Workflow: Workflow — chemin de décision
Workflow n°%id%: 'Workflow (n°%id%)'
workflow_: Workflow
target: ' (cible)'
Decision: Décision
Join a comment: Laisser un commentaire
Follow workflow: Suivre la décision
Workflow history: Historique de la décision
workflow:
Created by: Créé par
My decision: Ma décision
Next step: Prochaine étape
dest for next steps: Utilisateurs qui valideront la prochaine étape
Freeze: Geler
Freezed: Gelé
freezed document: Le document est gelé
The associated element will be freezed: L'élément associé sera gelé et ne pourra plus être modifié après cette décision.
Finalize: Étape finale
The workflow will be finalized: Le suivi est clôturé lors de cette décision.
No transitions: Aucune transition
Comment added: Commentaire ajouté
This workflow is finalized: Ce suivi est finalisé.
You are not allowed to apply a transition on this workflow: Vous n'êtes pas autorisé à appliquer une décision pour ce suivi
Only those users are allowed: Seuls ces utilisateurs sont autorisés
My workflows: Mes workflows
No workflow: Aucun workflow
Evaluation (n°%eval%): "Évaluation (n°%eval%)"
Document (n°%doc%): "Document (n°%doc%)"
Work (n°%w%): "Action d'accompagnement (n°%w%)"
subscribed: Workflows suivis
dest: Workflows en attente d'action
you subscribed to all steps: Vous recevrez une notification à chaque étape
you subscribed to final step: Vous recevrez une notification à l'étape finale
Current step: Étape actuelle
Comment on last change: Commentaire à la transition précédente
Users allowed to apply transition: Utilisateurs pouvant valider cette étape
Workflow deleted with success: Le workflow a été supprimé
Delete workflow ?: Supprimer le workflow ?
Are you sure you want to delete this workflow ?: Êtes-vous sûr·e de vouloir supprimer ce workflow ?
Delete workflow: Supprimer le workflow
Steps is not waiting for transition. Maybe someone apply the transition before you ?: L'étape que vous cherchez a déjà été modifiée par un autre utilisateur. Peut-être quelqu'un a-t-il modifié cette étape avant vous ?
You get access to this step: Vous avez acquis les droits pour appliquer une transition sur ce workflow.
Those users are also granted to apply a transition by using an access key: Ces utilisateurs peuvent également valider cette étape, grâce à un lien d'accès
dest by email: Liens d'autorisation par email
dest by email help: Les adresses email mentionnées ici recevront un lien d'accès. Ce lien d'accès permettra à l'utilisateur de valider cette étape.
Add an email: Ajouter une adresse email
Remove an email: Enlever cette adresse email
Any email: Aucune adresse email
Previous dest without reaction: Workflows clotûrés après action d'un autre utilisateur
Previous workflow without reaction help: Liste des workflows où vous avez été cité comme pouvant réagir à une étape, mais où un autre utilisateur a exécuté une action avant vous.
Previous transitionned: Anciens workflows
Previous workflow transitionned help: Workflows où vous avez exécuté une action.
For: Pour
Subscribe final: Recevoir une notification à l'étape finale
Subscribe all steps: Recevoir une notification à chaque étape
notification:
Notification: Notification
Notifications: Notifications
My own notifications: Mes notifications
Notify: Envoyer une notification
Send: Envoyer
Edit notification: Modifier une notification
Notification created: Notification envoyée
Notification updated: La notification a été mise à jour
Any notification received: Aucune notification reçue
Any notification sent: Aucune notification envoyée
Notifications received: Notifications reçues
Notifications sent: Notifications envoyées
comment_appended: Commentaire ajouté
append_comment: Ajouter un commentaire
comment_updated: Commentaire mis à jour
comments_list: Fil de commentaires
show notification from %sender%: Voir la notification de %sender%
is_unread: Non-lue
is_system: notification automatique
list: Notifications
Sent: Envoyé
to: À
sent_to: Destinataire(s)
from: De
received_from: Expéditeur
you were notified by %sender%: Vous avez été notifié par %sender%
you were notified by system: Vous avez été notifié automatiquement
subject: Objet
see_comments_thread: Voir le fil de commentaires associé
object_prefix: "[CHILL] notification - "
dest by email: Lien d'accès par email
Any email: Aucun email
Add an email: Ajouter un email
dest by email help: Les adresses email mentionnées ici recevront un lien d'accès. Un compte utilisateur sera toujours nécessaire.
Remove an email: Supprimer l'adresse email
Email with access link: Adresse email ayant reçu un lien d'accès

View File

@@ -177,7 +177,7 @@ class AccompanyingCourseController extends Controller
*/ */
public function editAction(AccompanyingPeriod $accompanyingCourse): Response public function editAction(AccompanyingPeriod $accompanyingCourse): Response
{ {
$this->denyAccessUnlessGranted(AccompanyingPeriodVoter::SEE, $accompanyingCourse); $this->denyAccessUnlessGranted(AccompanyingPeriodVoter::EDIT, $accompanyingCourse);
return $this->render('@ChillPerson/AccompanyingCourse/edit.html.twig', [ return $this->render('@ChillPerson/AccompanyingCourse/edit.html.twig', [
'accompanyingCourse' => $accompanyingCourse, 'accompanyingCourse' => $accompanyingCourse,
@@ -215,7 +215,7 @@ class AccompanyingCourseController extends Controller
// get persons without household // get persons without household
$withoutHousehold = []; $withoutHousehold = [];
foreach ($accompanyingCourse->getParticipations() as $p) { foreach ($accompanyingCourse->getCurrentParticipations() as $p) {
if (false === $p->getPerson()->isSharingHousehold()) { if (false === $p->getPerson()->isSharingHousehold()) {
$withoutHousehold[] = $p->getPerson(); $withoutHousehold[] = $p->getPerson();
} }

View File

@@ -0,0 +1,167 @@
<?php
/**
* Chill is a software for social workers
*
* For the full copyright and license information, please view
* the LICENSE file that was distributed with this source code.
*/
declare(strict_types=1);
namespace Chill\PersonBundle\Controller;
use Chill\MainBundle\Entity\Location;
use Chill\MainBundle\Entity\Scope;
use Chill\MainBundle\Entity\User;
use Chill\MainBundle\Entity\UserJob;
use Chill\MainBundle\Pagination\PaginatorFactory;
use Chill\MainBundle\Templating\TranslatableStringHelperInterface;
use Chill\PersonBundle\Repository\AccompanyingPeriodACLAwareRepositoryInterface;
use Doctrine\ORM\EntityRepository;
use Symfony\Bridge\Doctrine\Form\Type\EntityType;
use Symfony\Component\Form\Extension\Core\Type\FormType;
use Symfony\Component\Form\FormFactoryInterface;
use Symfony\Component\Form\FormInterface;
use Symfony\Component\HttpFoundation\Request;
use Symfony\Component\HttpFoundation\Response;
use Symfony\Component\HttpKernel\Exception\AccessDeniedHttpException;
use Symfony\Component\Routing\Annotation\Route;
use Symfony\Component\Security\Core\Security;
use Symfony\Component\Templating\EngineInterface;
class AccompanyingPeriodRegulationListController
{
private AccompanyingPeriodACLAwareRepositoryInterface $accompanyingPeriodACLAwareRepository;
private EngineInterface $engine;
private FormFactoryInterface $formFactory;
private PaginatorFactory $paginatorFactory;
private Security $security;
private TranslatableStringHelperInterface $translatableStringHelper;
public function __construct(AccompanyingPeriodACLAwareRepositoryInterface $accompanyingPeriodACLAwareRepository, EngineInterface $engine, FormFactoryInterface $formFactory, PaginatorFactory $paginatorFactory, Security $security, TranslatableStringHelperInterface $translatableStringHelper)
{
$this->accompanyingPeriodACLAwareRepository = $accompanyingPeriodACLAwareRepository;
$this->engine = $engine;
$this->formFactory = $formFactory;
$this->paginatorFactory = $paginatorFactory;
$this->security = $security;
$this->translatableStringHelper = $translatableStringHelper;
}
/**
* @Route("/{_locale}/person/periods/undispatched", name="chill_person_course_list_regulation")
*/
public function listRegul(Request $request): Response
{
if (!$this->security->isGranted('ROLE_USER') || !$this->security->getUser() instanceof User) {
throw new AccessDeniedHttpException();
}
$form = $this->buildFilterForm();
$form->handleRequest($request);
$total = $this->accompanyingPeriodACLAwareRepository->countByUnDispatched(
$form['jobs']->getData(),
$form['services']->getData(),
$form['locations']->getData(),
);
$paginator = $this->paginatorFactory->create($total);
$periods = $this->accompanyingPeriodACLAwareRepository
->findByUnDispatched(
$form['jobs']->getData(),
$form['services']->getData(),
$form['locations']->getData(),
$paginator->getItemsPerPage(),
$paginator->getCurrentPageFirstItemNumber()
);
return new Response(
$this->engine->render('@ChillPerson/AccompanyingCourse/dispatch_list.html.twig', [
'paginator' => $paginator,
'periods' => $periods,
'form' => $form->createView(),
])
);
}
private function buildFilterForm(): FormInterface
{
$data = [
'services' => [],
'jobs' => [],
'locations' => [],
];
$builder = $this->formFactory->createBuilder(FormType::class, $data, [
'method' => 'get', 'csrf_protection' => false, ]);
$builder
->add('services', EntityType::class, [
'class' => Scope::class,
'query_builder' => static function (EntityRepository $er) {
return $er->createQueryBuilder('s');
},
'choice_label' => function (Scope $s) {
return $this->translatableStringHelper->localize($s->getName());
},
'multiple' => true,
'label' => 'Service',
'required' => false,
])
->add('jobs', EntityType::class, [
'class' => UserJob::class,
'query_builder' => static function (EntityRepository $er) {
$qb = $er->createQueryBuilder('j');
$qb->andWhere($qb->expr()->eq('j.active', "'TRUE'"));
return $qb;
},
'choice_label' => function (UserJob $j) {
return $this->translatableStringHelper->localize($j->getLabel());
},
'multiple' => true,
'label' => 'Métier',
'required' => false,
])
->add('locations', EntityType::class, [
'class' => Location::class,
'query_builder' => static function (EntityRepository $er) {
$qb = $er->createQueryBuilder('l');
$qb
->join('l.locationType', 't')
->where(
$qb->expr()->andX(
$qb->expr()->eq('t.availableForUsers', "'TRUE'"),
$qb->expr()->eq('t.active', "'TRUE'"),
$qb->expr()->eq('l.active', "'TRUE'"),
$qb->expr()->eq('l.availableForUsers', "'TRUE'")
)
);
return $qb;
},
'choice_label' => static function (Location $l) {
return $l->getName();
},
'multiple' => true,
'group_by' => function (Location $l) {
if (null === $type = $l->getLocationType()) {
return null;
}
return $this->translatableStringHelper->localize($type->getTitle());
},
'label' => 'Localisation administrative',
'required' => false,
]);
return $builder->getForm();
}
}

View File

@@ -36,49 +36,49 @@ class Comment implements TrackCreationInterface, TrackUpdateInterface
* inversedBy="comments") * inversedBy="comments")
* @ORM\JoinColumn(nullable=false, onDelete="CASCADE") * @ORM\JoinColumn(nullable=false, onDelete="CASCADE")
*/ */
private $accompanyingPeriod; private ?AccompanyingPeriod $accompanyingPeriod;
/** /**
* @ORM\Column(type="text") * @ORM\Column(type="text")
* @Groups({"read", "write"}) * @Groups({"read", "write", "docgen:read"})
* @Assert\NotBlank * @Assert\NotBlank
* @Assert\NotNull * @Assert\NotNull
*/ */
private $content; private ?string $content;
/** /**
* @ORM\Column(type="datetime") * @ORM\Column(type="datetime")
* @Groups({"read"}) * @Groups({"read", "docgen:read"})
*/ */
private $createdAt; private ?DateTimeInterface $createdAt;
/** /**
* @ORM\ManyToOne(targetEntity=User::class) * @ORM\ManyToOne(targetEntity=User::class)
* @ORM\JoinColumn(nullable=false) * @ORM\JoinColumn(nullable=false)
* @Groups({"read"}) * @Groups({"read", "docgen:read"})
*/ */
private $creator; private ?User $creator;
/** /**
* @ORM\Id * @ORM\Id
* @ORM\GeneratedValue * @ORM\GeneratedValue
* @ORM\Column(type="integer") * @ORM\Column(type="integer")
* @Groups({"read"}) * @Groups({"read", "docgen:read"})
*/ */
private $id; private ?int $id;
/** /**
* @ORM\Column(type="datetime") * @ORM\Column(type="datetime")
* @Groups({"read"}) * @Groups({"read"})
*/ */
private $updatedAt; private ?DateTimeInterface $updatedAt;
/** /**
* @ORM\ManyToOne(targetEntity=User::class) * @ORM\ManyToOne(targetEntity=User::class)
* @ORM\JoinColumn(nullable=false) * @ORM\JoinColumn(nullable=false)
* @Groups({"read"}) * @Groups({"read"})
*/ */
private $updatedBy; private ?User $updatedBy;
public function getAccompanyingPeriod(): ?AccompanyingPeriod public function getAccompanyingPeriod(): ?AccompanyingPeriod
{ {

View File

@@ -14,6 +14,7 @@ namespace Chill\PersonBundle\Entity\Household;
use ArrayIterator; use ArrayIterator;
use Chill\MainBundle\Entity\Address; use Chill\MainBundle\Entity\Address;
use Chill\MainBundle\Entity\Embeddable\CommentEmbeddable; use Chill\MainBundle\Entity\Embeddable\CommentEmbeddable;
use Chill\PersonBundle\Entity\Person;
use Chill\PersonBundle\Validator\Constraints\Household\MaxHolder; use Chill\PersonBundle\Validator\Constraints\Household\MaxHolder;
use DateTime; use DateTime;
use DateTimeImmutable; use DateTimeImmutable;
@@ -354,7 +355,12 @@ class Household
return $this->members; return $this->members;
} }
public function getMembersDuringMembership(HouseholdMember $membership) /**
* get all the members during a given membership.
*
* @return Collection|HouseholdMember[]
*/
public function getMembersDuringMembership(HouseholdMember $membership): Collection
{ {
return $this->getMembersOnRange( return $this->getMembersOnRange(
$membership->getStartDate(), $membership->getStartDate(),
@@ -441,6 +447,28 @@ class Household
return $this->getNonCurrentMembers($now)->matching($criteria); return $this->getNonCurrentMembers($now)->matching($criteria);
} }
/**
* get all the unique persons during a given membership.
*
* same as @see(self::getMembersDuringMembership}, except that the collection is filtered to
* return unique members.
*
* @return Collection|Person[]
*/
public function getPersonsDuringMembership(HouseholdMember $member): Collection
{
// make list unique
$membersByHash = [];
foreach ($this->getMembersDuringMembership($member) as $m) {
if (null !== $m && null !== $m->getPerson()) {
$membersByHash[spl_object_hash($m->getPerson())] = $m->getPerson();
}
}
return new ArrayCollection(array_values($membersByHash));
}
public function getPreviousAddressOf(Address $address): ?Address public function getPreviousAddressOf(Address $address): ?Address
{ {
$iterator = new ArrayIterator($this->getAddressesOrdered()); $iterator = new ArrayIterator($this->getAddressesOrdered());

View File

@@ -1184,7 +1184,7 @@ class Person implements HasCenterInterface, TrackCreationInterface, TrackUpdateI
} }
/** /**
* @deprecated Use `getCurrentPersonAddress` instead * @deprecated Use @see{Person::getCurrentPersonAddress} or @see{Person::getCurrentHouseholdAddress} instead
* *
* @throws Exception * @throws Exception
* *
@@ -1192,7 +1192,9 @@ class Person implements HasCenterInterface, TrackCreationInterface, TrackUpdateI
*/ */
public function getLastAddress(?DateTime $from = null) public function getLastAddress(?DateTime $from = null)
{ {
return $this->getCurrentPersonAddress(); return $this->getCurrentHouseholdAddress(
null !== $from ? DateTimeImmutable::createFromMutable($from) : null
);
} }
public function getLastName(): string public function getLastName(): string

View File

@@ -26,9 +26,8 @@ class AccompanyingPeriodWorkEventListener
public function prePersistAccompanyingPeriodWork(AccompanyingPeriodWork $work): void public function prePersistAccompanyingPeriodWork(AccompanyingPeriodWork $work): void
{ {
$referrer = $work->getAccompanyingPeriod()->getUser(); if ($this->security->getUser() instanceof User) {
if (null !== $referrer) { $work->addReferrer($this->security->getUser());
$work->addReferrer($referrer);
} }
} }
} }

View File

@@ -11,12 +11,13 @@ declare(strict_types=1);
namespace Chill\PersonBundle\Menu; namespace Chill\PersonBundle\Menu;
use Chill\MainBundle\Entity\User;
use Chill\MainBundle\Routing\LocalMenuBuilderInterface; use Chill\MainBundle\Routing\LocalMenuBuilderInterface;
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 Knp\Menu\MenuItem; use Knp\Menu\MenuItem;
use Symfony\Component\DependencyInjection\ParameterBag\ParameterBagInterface; use Symfony\Component\DependencyInjection\ParameterBag\ParameterBagInterface;
use Symfony\Component\Security\Core\Authorization\AuthorizationCheckerInterface; use Symfony\Component\Security\Core\Security;
use Symfony\Contracts\Translation\TranslatorInterface; use Symfony\Contracts\Translation\TranslatorInterface;
/** /**
@@ -24,20 +25,20 @@ use Symfony\Contracts\Translation\TranslatorInterface;
*/ */
class SectionMenuBuilder implements LocalMenuBuilderInterface class SectionMenuBuilder implements LocalMenuBuilderInterface
{ {
protected AuthorizationCheckerInterface $authorizationChecker;
protected ParameterBagInterface $parameterBag; protected ParameterBagInterface $parameterBag;
protected TranslatorInterface $translator; protected TranslatorInterface $translator;
private Security $security;
/** /**
* SectionMenuBuilder constructor. * SectionMenuBuilder constructor.
*/ */
public function __construct(AuthorizationCheckerInterface $authorizationChecker, TranslatorInterface $translator, ParameterBagInterface $parameterBag) public function __construct(ParameterBagInterface $parameterBag, Security $security, TranslatorInterface $translator)
{ {
$this->authorizationChecker = $authorizationChecker;
$this->translator = $translator;
$this->parameterBag = $parameterBag; $this->parameterBag = $parameterBag;
$this->security = $security;
$this->translator = $translator;
} }
/** /**
@@ -45,7 +46,7 @@ class SectionMenuBuilder implements LocalMenuBuilderInterface
*/ */
public function buildMenu($menuId, MenuItem $menu, array $parameters) public function buildMenu($menuId, MenuItem $menu, array $parameters)
{ {
if ($this->authorizationChecker->isGranted(PersonVoter::CREATE) && $this->parameterBag->get('chill_person.create_person_allowed')) { if ($this->security->isGranted(PersonVoter::CREATE) && $this->parameterBag->get('chill_person.create_person_allowed')) {
$menu->addChild($this->translator->trans('Add a person'), [ $menu->addChild($this->translator->trans('Add a person'), [
'route' => 'chill_person_new', 'route' => 'chill_person_new',
]) ])
@@ -65,7 +66,7 @@ class SectionMenuBuilder implements LocalMenuBuilderInterface
]); ]);
} }
if ($this->authorizationChecker->isGranted(AccompanyingPeriodVoter::REASSIGN_BULK, null)) { if ($this->security->isGranted(AccompanyingPeriodVoter::REASSIGN_BULK, null)) {
$menu->addChild($this->translator->trans('reassign.Bulk reassign'), [ $menu->addChild($this->translator->trans('reassign.Bulk reassign'), [
'route' => 'chill_course_list_reassign', 'route' => 'chill_course_list_reassign',
]) ])
@@ -74,6 +75,16 @@ class SectionMenuBuilder implements LocalMenuBuilderInterface
'icons' => [], 'icons' => [],
]); ]);
} }
if ($this->security->getUser() instanceof User && $this->security->isGranted('ROLE_USER')) {
$menu
->addChild('Régulation', [
'route' => 'chill_person_course_list_regulation',
])
->setExtras([
'order' => 150,
]);
}
} }
public static function getMenuIds(): array public static function getMenuIds(): array

View File

@@ -11,13 +11,19 @@ declare(strict_types=1);
namespace Chill\PersonBundle\Repository; namespace Chill\PersonBundle\Repository;
use Chill\MainBundle\Entity\Location;
use Chill\MainBundle\Entity\Scope;
use Chill\MainBundle\Entity\User; use Chill\MainBundle\Entity\User;
use Chill\MainBundle\Entity\UserJob;
use Chill\MainBundle\Security\Authorization\AuthorizationHelper; use Chill\MainBundle\Security\Authorization\AuthorizationHelper;
use Chill\MainBundle\Security\Resolver\CenterResolverDispatcherInterface; use Chill\MainBundle\Security\Resolver\CenterResolverDispatcherInterface;
use Chill\PersonBundle\Entity\AccompanyingPeriod; use Chill\PersonBundle\Entity\AccompanyingPeriod;
use Chill\PersonBundle\Entity\AccompanyingPeriodParticipation;
use Chill\PersonBundle\Entity\Person; use Chill\PersonBundle\Entity\Person;
use Chill\PersonBundle\Security\Authorization\AccompanyingPeriodVoter;
use DateTime; use DateTime;
use Doctrine\ORM\QueryBuilder;
use Symfony\Component\Security\Core\Security; use Symfony\Component\Security\Core\Security;
use function count; use function count;
@@ -62,6 +68,15 @@ final class AccompanyingPeriodACLAwareRepository implements AccompanyingPeriodAC
return $qb; return $qb;
} }
public function countByUnDispatched(array $jobs, array $services, array $administrativeLocations): int
{
$qb = $this->addACLByUnDispatched($this->buildQueryUnDispatched($jobs, $services, $administrativeLocations));
$qb->select('COUNT(ap)');
return $qb->getQuery()->getSingleScalarResult();
}
public function countByUserOpenedAccompanyingPeriod(?User $user): int public function countByUserOpenedAccompanyingPeriod(?User $user): int
{ {
if (null === $user) { if (null === $user) {
@@ -126,6 +141,23 @@ final class AccompanyingPeriodACLAwareRepository implements AccompanyingPeriodAC
return $qb->getQuery()->getResult(); return $qb->getQuery()->getResult();
} }
public function findByUnDispatched(array $jobs, array $services, array $administrativeLocations, ?int $limit = null, ?int $offset = null): array
{
$qb = $this->addACLByUnDispatched($this->buildQueryUnDispatched($jobs, $services, $administrativeLocations));
$qb->select('ap');
if (null !== $limit) {
$qb->setMaxResults($limit);
}
if (null !== $offset) {
$qb->setFirstResult($offset);
}
return $qb->getQuery()->getResult();
}
/** /**
* @return array|AccompanyingPeriod[] * @return array|AccompanyingPeriod[]
*/ */
@@ -146,4 +178,88 @@ final class AccompanyingPeriodACLAwareRepository implements AccompanyingPeriodAC
return $qb->getQuery()->getResult(); return $qb->getQuery()->getResult();
} }
private function addACLByUnDispatched(QueryBuilder $qb): QueryBuilder
{
$centers = $this->authorizationHelper->getReachableCenters(
$this->security->getUser(),
AccompanyingPeriodVoter::SEE
);
$orX = $qb->expr()->orX();
if (0 === count($centers)) {
return $qb->andWhere("'FALSE' = 'TRUE'");
}
foreach ($centers as $key => $center) {
$scopes = $this->authorizationHelper
->getReachableCircles(
$this->security->getUser(),
AccompanyingPeriodVoter::SEE,
$center
);
$and = $qb->expr()->andX(
$qb->expr()->exists('SELECT part FROM ' . AccompanyingPeriodParticipation::class . ' part ' .
"JOIN part.person p WHERE part.accompanyingPeriod = ap.id AND p.center = :center_{$key}")
);
$qb->setParameter('center_' . $key, $center);
$orScope = $qb->expr()->orX();
foreach ($scopes as $skey => $scope) {
$orScope->add(
$qb->expr()->isMemberOf(':scope_' . $key . '_' . $skey, 'ap.scopes')
);
$qb->setParameter('scope_' . $key . '_' . $skey, $scope);
}
$and->add($orScope);
$orX->add($and);
}
return $qb->andWhere($orX);
}
/**
* @param array|UserJob[] $jobs
* @param array|Scope[] $services
* @param array|Location[] $locations
*/
private function buildQueryUnDispatched(array $jobs, array $services, array $locations): QueryBuilder
{
$qb = $this->accompanyingPeriodRepository->createQueryBuilder('ap');
$qb->where(
$qb->expr()->andX(
$qb->expr()->isNull('ap.user'),
$qb->expr()->neq('ap.step', ':draft'),
$qb->expr()->neq('ap.step', ':closed')
)
)
->setParameter('draft', AccompanyingPeriod::STEP_DRAFT)
->setParameter('closed', AccompanyingPeriod::STEP_CLOSED);
if (0 < count($jobs)) {
$qb->andWhere($qb->expr()->in('ap.job', ':jobs'))
->setParameter('jobs', $jobs);
}
if (0 < count($locations)) {
$qb->andWhere($qb->expr()->in('ap.administrativeLocation', ':locations'))
->setParameter('locations', $locations);
}
if (0 < count($services)) {
$or = $qb->expr()->orX();
foreach ($services as $key => $service) {
$or->add($qb->expr()->isMemberOf('ap.scopes', ':scope_' . $key));
$qb->setParameter('scope_' . $key, $service);
}
$qb->andWhere($or);
}
return $qb;
}
} }

View File

@@ -11,11 +11,20 @@ declare(strict_types=1);
namespace Chill\PersonBundle\Repository; namespace Chill\PersonBundle\Repository;
use Chill\MainBundle\Entity\Scope;
use Chill\MainBundle\Entity\User; use Chill\MainBundle\Entity\User;
use Chill\MainBundle\Entity\UserJob;
use Chill\PersonBundle\Entity\AccompanyingPeriod;
use Chill\PersonBundle\Entity\Person; use Chill\PersonBundle\Entity\Person;
interface AccompanyingPeriodACLAwareRepositoryInterface interface AccompanyingPeriodACLAwareRepositoryInterface
{ {
/**
* @param array|UserJob[] $jobs
* @param array|Scope[] $services
*/
public function countByUnDispatched(array $jobs, array $services, array $administrativeLocations): int;
public function countByUserOpenedAccompanyingPeriod(?User $user): int; public function countByUserOpenedAccompanyingPeriod(?User $user): int;
public function findByPerson( public function findByPerson(
@@ -26,5 +35,13 @@ interface AccompanyingPeriodACLAwareRepositoryInterface
?int $offset = null ?int $offset = null
): array; ): array;
/**
* @param array|UserJob[] $jobs if empty, does not take this argument into account
* @param array|Scope[] $services if empty, does not take this argument into account
*
* @return array|AccompanyingPeriod[]
*/
public function findByUnDispatched(array $jobs, array $services, array $administrativeLocations, ?int $limit = null, ?int $offset = null): array;
public function findByUserOpenedAccompanyingPeriod(?User $user, array $orderBy = [], int $limit = 0, int $offset = 50): array; public function findByUserOpenedAccompanyingPeriod(?User $user, array $orderBy = [], int $limit = 0, int $offset = 50): array;
} }

View File

@@ -226,35 +226,16 @@ div.banner {
div.household-resume { div.household-resume {
display: flex; display: flex;
flex-direction: row; flex-direction: row;
align-items: flex-start; align-items: center;
justify-content: space-between;
padding-left: 1rem;
padding-right:1rem;
div.col-address { div.col-address {
font-size: 120%; font-size: 120%;
padding: 1rem; padding-left: 1em;
border-radius: 5px;
border: 1px dotted tint-color($chill-accourse-context, 10%);
border-left: 1px dotted tint-color($chill-accourse-context, 10%);
border-right: 1px dotted tint-color($chill-accourse-context, 10%);
div.address-box {
width: 100%;
justify-content: flex-start;
align-items: flex-start;
display: flex;
i {
font-size: 200%;
margin-right: 2rem;
margin-top: 2rem;
margin-left: 1rem;
}
}
} }
div.col-comment { div.col-comment {
//padding: 0; //padding: 0;
margin-bottom: 1rem; margin-bottom: 1rem;
width: 50%;
display: flex; display: flex;
flex-direction: column; flex-direction: column;
> * > * { > * > * {

View File

@@ -1,7 +1,7 @@
<div class="alert alert-warning alert-with-actions"> <div class="alert alert-warning alert-with-actions">
<div class="float-button bottom"> <div class="float-button bottom">
<div class="box"> <div class="box">
{% if is_granted('CHILL_PERSON_ACCOMPANYING_PERIOD_UPDATE', accompanyingCourse) %}
<div class="action"> <div class="action">
<ul class="record_actions"> <ul class="record_actions">
<li> <li>
@@ -13,6 +13,8 @@
</li> </li>
</ul> </ul>
</div> </div>
{% endif %}
<p>{{ 'Some peoples does not belong to any household currently. Add them to an household soon'|trans }}</p> <p>{{ 'Some peoples does not belong to any household currently. Add them to an household soon'|trans }}</p>
</div> </div>
</div> </div>

View File

@@ -3,6 +3,7 @@
<div class="alert alert-danger {% if hasPersonLocation %}alert-with-actions{% endif %}"> <div class="alert alert-danger {% if hasPersonLocation %}alert-with-actions{% endif %}">
<div class="float-button bottom"> <div class="float-button bottom">
<div class="box"> <div class="box">
{% if is_granted('CHILL_PERSON_ACCOMPANYING_PERIOD_UPDATE', accompanyingCourse) %}
<div class="action"> <div class="action">
<ul class="record_actions"> <ul class="record_actions">
<li> <li>
@@ -14,6 +15,7 @@
</li> </li>
</ul> </ul>
</div> </div>
{% endif %}
<p> <p>
{{ 'This course is located at a temporarily address. You should locate this course to an user'|trans }}</p> {{ 'This course is located at a temporarily address. You should locate this course to an user'|trans }}</p>
{% if not hasPersonLocation %} {% if not hasPersonLocation %}

View File

@@ -0,0 +1,88 @@
{% extends 'ChillMainBundle::layout.html.twig' %}
{% block title "Liste de parcours à répartir" %}
{% block js %}
{{ encore_entry_script_tags('mod_set_referrer') }}
{% endblock %}
{% block css %}
{{ encore_entry_link_tags('mod_set_referrer') }}
{% endblock %}
{% macro period_meta(period) %}
{% if is_granted('CHILL_PERSON_ACCOMPANYING_PERIOD_UPDATE', period) %}
<div class="item-col item-meta">
{% set job_id = null %}
{% if period.job is not null %}
{% set job_id = period.job.id %}
{% endif %}
<span
data-set-referrer-app="data-set-referrer-app"
data-set-referrer-accompanying-period-id="{{ period.id }}"
data-set-referrer-job-id="{{ job_id }}"
></span>
</div>
{% endif %}
{% endmacro %}
{% macro period_actions(period) %}
{% if is_granted('CHILL_PERSON_ACCOMPANYING_PERIOD_SEE', period) %}
<li>
<a href="{{ chill_path_add_return_path('chill_person_accompanying_course_index', {'accompanying_period_id': period.id}) }}" class="btn btn-show"></a>
</li>
{% endif %}
{% endmacro %}
{% import _self as m %}
{% block content %}
<div class="col-10">
<h1>{{ block('title') }}</h1>
{{ form_start(form) }}
<div class="row">
<div class="col-md-4">
{{ form_label(form.locations ) }}
{{ form_widget(form.locations, {'attr': {'class': 'select2'}}) }}
</div>
<div class="col-md-4">
{{ form_label(form.jobs) }}
{{ form_widget(form.jobs, {'attr': {'class': 'select2'}}) }}
</div>
<div class="col-md-4">
{{ form_label(form.services) }}
{{ form_widget(form.services, {'attr': {'class': 'select2'}}) }}
</div>
</div>
<ul class="record_actions">
<li>
<button type="submit" class="btn btn-save change-icon">
<i class="fa fa-filter"></i> Filtrer
</button>
</li>
</ul>
{{ form_end(form) }}
{% if periods|length == 0 %}
<p class="chill-no-data-statement">Aucun parcours à désigner, ou droits insuffisants pour les afficher</p>
{% else %}
<p><span class="badge rounded-pill bg-primary">{{ paginator.totalItems }}</span> parcours à attribuer (calculé ce jour à {{ null|format_time('medium') }})</p>
<div class="flex-table">
{% for period in periods %}
{% include '@ChillPerson/AccompanyingPeriod/_list_item.html.twig' with {'period': period,
'recordAction': m.period_actions(period), 'itemMeta': m.period_meta(period) } %}
{% endfor %}
</div>
{% endif %}
{{ chill_pagination(paginator) }}
</div>
{% endblock %}

View File

@@ -1,4 +1,5 @@
<div class="item-bloc card-item accompanying_course_work-item{% if itemBlocClass is defined %} {{ itemBlocClass }}{% endif %}"> <div class="item-bloc accompanying_course_work-item{% if itemBlocClass is defined %} {{ itemBlocClass }}{% endif %}">
<div class="item-row"> <div class="item-row">
<h2 class="badge-title"> <h2 class="badge-title">
<span class="title_label"></span> <span class="title_label"></span>
@@ -144,4 +145,5 @@
</ul> </ul>
{% endif %} {% endif %}
</div> </div>
</div> </div>

View File

@@ -48,13 +48,66 @@
{% endmacro %} {% endmacro %}
{% block content %} {% block content %}
<div class="flex-table accompanyingcourse-list">
{% for period in accompanying_periods %}
{# WARNING: this list is rendered in either person context or houshold context #}
{%- set acps = [] %}
{%- set acpsClosed = [] %}
{% for acp in accompanying_periods %}
{% if acp.step == 'CLOSED' or (person is defined and acp.requestorPerson is not same as(person) and acp.openParticipationContainsPerson(person) is null ) %}
{%- set acpsClosed = acpsClosed|merge([acp]) %}
{% else %}
{%- set acps = acps|merge([acp]) %}
{% endif %}
{% endfor %}
<div class="flex-table accompanyingcourse-list">
{% for period in acps %}
{% include 'ChillPersonBundle:AccompanyingPeriod:_list_item.html.twig' with { {% include 'ChillPersonBundle:AccompanyingPeriod:_list_item.html.twig' with {
'recordAction': _self.recordAction(period, contextEntity) 'recordAction': _self.recordAction(period, contextEntity)
} %} } %}
{% else %}
<p class="chill-no-data-statement">{{ 'Any accompanying periods are open'|trans }}</p>
{% endfor %} {% endfor %}
</div> </div>
{% if acpsClosed|length > 0 %}
{% if person is defined %}
{% set identifier = person.id %}
{% else %}
{% set identifier = household.id %}
{% endif %}
<div class="accordion" id="member_{{ identifier }}">
<div class="accordion-item">
<h2 class="accordion-header" id="heading_{{ identifier }}">
<button
class="accordion-button collapsed"
type="button"
data-bs-toggle="collapse"
data-bs-target="#collapse_{{ identifier }}"
aria-expanded="false"
aria-controls="collapse_{{ identifier }}">
<span class="folded">{{ 'periods.show closed periods'|trans({ 'nb_items': acpsClosed|length }) }}</span>
<span class="unfolded text-secondary">{{ 'periods.hide closed periods'|trans({ 'nb_items': acpsClosed|length }) }}</span>
</button>
</h2>
<div id="collapse_{{ identifier }}"
class="accordion-collapse collapse"
aria-labelledby="heading_{{ identifier }}"
data-bs-parent="#nonCurrent">
<div class="flex-table accompanyingcourse-list">
{% for period in acpsClosed %}
{% include 'ChillPersonBundle:AccompanyingPeriod:_list_item.html.twig' with {
'recordAction': _self.recordAction(period, contextEntity)
} %}
{% endfor %}
</div>
</div>
</div>
</div>
{% endif %}
{% endblock content %} {% endblock content %}

View File

@@ -1,4 +1,4 @@
<div class="item-bloc card-item accompanying-period-item{% if itemBlocClass is defined %} {{ itemBlocClass|raw }}{% endif %}" data-accompanying-period-id="{{ period.id|e('html_attr') }}"> <div class="item-bloc accompanying-period-item{% if itemBlocClass is defined %} {{ itemBlocClass|raw }}{% endif %}" data-accompanying-period-id="{{ period.id|e('html_attr') }}">
<div class="item-row"> <div class="item-row">
<div class="wrap-header"> <div class="wrap-header">
<div class="wh-row"> <div class="wh-row">

View File

@@ -19,14 +19,12 @@
<div class="row household-resume"> <div class="row household-resume">
<div class="item-bloc col-5 col-address"> <div class="item-bloc col-5 col-address">
<h2>{{ 'Address'|trans }}</h2> <h2>{{ 'Address'|trans }}</h2>
<div class="address-box">
<i class="fa fa-map-marker" aria-hidden="true"></i>
{% if address is empty %} {% if address is empty %}
<p class="chill-no-data-statement">{{ 'household.Household does not have any address currently'|trans }}</p> <p class="chill-no-data-statement">{{ 'household.Household does not have any address currently'|trans }}</p>
{% else %} {% else %}
{{ address|chill_entity_render_box({'multiline': true, 'extended_infos': true }) }} {{ address|chill_entity_render_box({'multiline': true, 'extended_infos': true }) }}
{% endif %} {% endif %}
</div>
<ul class="list-inline text-right mt-2"> <ul class="list-inline text-right mt-2">
<li class="list-inline-item"> <li class="list-inline-item">
@@ -51,7 +49,7 @@
</li> </li>
</ul> </ul>
</div> </div>
<div class="item-bloc col-7 col-comment pop-item"> <div class="item-bloc col-7 col-comment">
{% if form is null %} {% if form is null %}
{% set currentComposition = household.currentComposition %} {% set currentComposition = household.currentComposition %}
{% if currentComposition is not null %} {% if currentComposition is not null %}
@@ -155,7 +153,7 @@
{% endif %} {% endif %}
{% if not (p == '_none' and members|length == 0 and old_members|length == 0) %} {% if not (p == '_none' and members|length == 0 and old_members|length == 0) %}
<div class="mb-5 pop-item"> <div class="mb-5">
{% if p != '_none' %} {% if p != '_none' %}
<h3>{{ p.label|localize_translatable_string }} <h3>{{ p.label|localize_translatable_string }}
{% if false == p.shareHousehold %} {% if false == p.shareHousehold %}
@@ -182,10 +180,16 @@
{% if members|length > 0 %} {% if members|length > 0 %}
<div class="flex-table list-household-members"> <div class="flex-table list-household-members">
{% for m in members %} {% for m in members %}
{% if m.position.shareHousehold %}
{% include '@ChillPerson/Household/_render_member.html.twig' with { {% include '@ChillPerson/Household/_render_member.html.twig' with {
'member': m, 'member': m,
'customButtons': { 'before': _self.customButtons(m, household) } 'customButtons': { 'before': _self.customButtons(m, household) }
} %} } %}
{% else %}
{% include '@ChillPerson/Household/_render_member.html.twig' with {
'member': m,
} %}
{% endif %}
{% endfor %} {% endfor %}
</div> </div>
{% else %} {% else %}

View File

@@ -65,18 +65,18 @@
<h3>{{ 'household.Members at same time'|trans }}</h3> <h3>{{ 'household.Members at same time'|trans }}</h3>
</div> </div>
<div class="wl-col list"> <div class="wl-col list">
{% set simultaneous = p.household.getMembersDuringMembership(p) %} {% set simultaneous = p.household.getPersonsDuringMembership(p) %}
{% if simultaneous|length == 0 %} {% if simultaneous|length == 0 %}
<p class="chill-no-data-statement"> <p class="chill-no-data-statement">
{{ 'household.Any simultaneous members'|trans }} {{ 'household.Any simultaneous members'|trans }}
</p> </p>
{% else %} {% else %}
{% for m in simultaneous -%} {% for person in simultaneous -%}
{% include '@ChillMain/OnTheFly/_insert_vue_onthefly.html.twig' with { {% include '@ChillMain/OnTheFly/_insert_vue_onthefly.html.twig' with {
action: 'show', displayBadge: true, action: 'show', displayBadge: true,
targetEntity: { name: 'person', id: m.person.id }, targetEntity: { name: 'person', id: person.id },
buttonText: m.person|chill_entity_render_string, buttonText: person|chill_entity_render_string,
isDead: m.person.deathdate is not null isDead: person.deathdate is not null
} %} } %}
{%- endfor -%} {%- endfor -%}
{% endif %} {% endif %}

View File

@@ -1,13 +1,15 @@
{% macro button_person_after(person) %} {% macro button_person_after(person) %}
{% set household = person.getCurrentHousehold %} {% set household = person.getCurrentHousehold %}
{% if household is not null %} {% if household is not null and is_granted('CHILL_PERSON_HOUSEHOLD_SEE', household) %}
<li> <li>
<a href="{{ path('chill_person_household_summary', { 'household_id': household.id }) }}" class="btn btn-sm btn-chill-beige"><i class="fa fa-home"></i></a> <a href="{{ path('chill_person_household_summary', { 'household_id': household.id }) }}" class="btn btn-sm btn-chill-beige"><i class="fa fa-home"></i></a>
</li> </li>
{% endif %} {% endif %}
{% if is_granted('CHILL_PERSON_ACCOMPANYING_PERIOD_CREATE', person) %}
<li> <li>
<a href="{{ path('chill_person_accompanying_course_new', { 'person_id': [ person.id ]}) }}" class="btn btn-sm btn-create change-icon" title="{{ 'Create an accompanying period'|trans }}"><i class="fa fa-random"></i></a> <a href="{{ path('chill_person_accompanying_course_new', { 'person_id': [ person.id ]}) }}" class="btn btn-sm btn-create change-icon" title="{{ 'Create an accompanying period'|trans }}"><i class="fa fa-random"></i></a>
</li> </li>
{% endif %}
{% endmacro %} {% endmacro %}
{% macro accompanying_period(acp, person) %} {% macro accompanying_period(acp, person) %}
@@ -233,7 +235,8 @@
{%- set acpsClosed = [] %} {%- set acpsClosed = [] %}
{%- for acp in person.accompanyingPeriodInvolved %} {%- for acp in person.accompanyingPeriodInvolved %}
{%- if is_granted('CHILL_PERSON_ACCOMPANYING_PERIOD_SEE', acp) %} {%- if is_granted('CHILL_PERSON_ACCOMPANYING_PERIOD_SEE', acp) %}
{% if acp.step == 'CLOSED' %} {# filter for "current" periods: either the person is a requestor, or is member of the period and not closed #}
{% if acp.step == 'CLOSED' or (acp.requestorPerson is not same as(person) and acp.openParticipationContainsPerson(person) is null ) %}
{%- set acpsClosed = acpsClosed|merge([acp]) %} {%- set acpsClosed = acpsClosed|merge([acp]) %}
{% else %} {% else %}
{%- set acps = acps|merge([acp]) %} {%- set acps = acps|merge([acp]) %}

View File

@@ -94,10 +94,6 @@ class PersonSearch extends AbstractSearch implements HasAdvancedSearchFormInterf
'label' => 'Birthdate before', 'label' => 'Birthdate before',
'required' => false, 'required' => false,
]) ])
->add('birthdate-after', ChillDateType::class, [
'label' => 'Birthdate after',
'required' => false,
])
->add('phonenumber', TelType::class, [ ->add('phonenumber', TelType::class, [
'required' => false, 'required' => false,
'label' => 'Part of the phonenumber', 'label' => 'Part of the phonenumber',

View File

@@ -113,7 +113,7 @@ class AccompanyingPeriodVoter extends AbstractChillVoter implements ProvideRoleH
->generate(self::class) ->generate(self::class)
->addCheckFor(null, [self::CREATE, self::REASSIGN_BULK]) ->addCheckFor(null, [self::CREATE, self::REASSIGN_BULK])
->addCheckFor(AccompanyingPeriod::class, [self::TOGGLE_CONFIDENTIAL, ...self::ALL]) ->addCheckFor(AccompanyingPeriod::class, [self::TOGGLE_CONFIDENTIAL, ...self::ALL])
->addCheckFor(Person::class, [self::SEE]) ->addCheckFor(Person::class, [self::SEE, self::CREATE])
->build(); ->build();
} }

View File

@@ -44,6 +44,7 @@ class AccompanyingPeriodDocGenNormalizer implements ContextAwareNormalizerInterf
private const PERIOD_NULL = [ private const PERIOD_NULL = [
'id', 'id',
'closingDate' => DateTime::class, 'closingDate' => DateTime::class,
'closingMotive' => AccompanyingPeriod\ClosingMotive::class,
'confidential', 'confidential',
'confidentialText', 'confidentialText',
'createdAt' => DateTime::class, 'createdAt' => DateTime::class,
@@ -70,6 +71,7 @@ class AccompanyingPeriodDocGenNormalizer implements ContextAwareNormalizerInterf
'location' => Address::class, 'location' => Address::class,
'locationPerson' => Person::class, 'locationPerson' => Person::class,
'administrativeLocation' => Location::class, 'administrativeLocation' => Location::class,
'pinnedComment' => AccompanyingPeriod\Comment::class,
]; ];
private ClosingMotiveRender $closingMotiveRender; private ClosingMotiveRender $closingMotiveRender;
@@ -163,6 +165,8 @@ class AccompanyingPeriodDocGenNormalizer implements ContextAwareNormalizerInterf
'location' => $this->normalizer->normalize($period->getLocation(), $format, $addressContext), 'location' => $this->normalizer->normalize($period->getLocation(), $format, $addressContext),
'administrativeLocation' => $this->normalizer->normalize($period->getAdministrativeLocation(), $format, $administrativeLocationContext), 'administrativeLocation' => $this->normalizer->normalize($period->getAdministrativeLocation(), $format, $administrativeLocationContext),
'works' => $this->normalizer->normalize($period->getWorks(), $format, $workContext), 'works' => $this->normalizer->normalize($period->getWorks(), $format, $workContext),
'comments' => $this->normalizer->normalize($period->getComments(), $format, array_merge($context, ['docgen:expects' => AccompanyingPeriod\Comment::class])),
'pinnedComment' => $this->normalizer->normalize($period->getPinnedComment(), $format, array_merge($context, ['docgen:expects' => AccompanyingPeriod\Comment::class])),
]; ];
} }
@@ -182,6 +186,7 @@ class AccompanyingPeriodDocGenNormalizer implements ContextAwareNormalizerInterf
'hasLocationPerson' => false, 'hasLocationPerson' => false,
'hasAdministrativeLocation' => false, 'hasAdministrativeLocation' => false,
'works' => [], 'works' => [],
'comments' => [],
] ]
); );
} }

View File

@@ -0,0 +1,39 @@
<?php
/**
* Chill is a software for social workers
*
* For the full copyright and license information, please view
* the LICENSE file that was distributed with this source code.
*/
declare(strict_types=1);
namespace Controller;
use Chill\MainBundle\Test\PrepareClientTrait;
use Symfony\Bundle\FrameworkBundle\Test\WebTestCase;
/**
* @internal
* @coversNothing
*/
final class AccompanyingPeriodRegulationListControllerTest extends WebTestCase
{
use PrepareClientTrait;
protected function setUp(): void
{
parent::setUp();
self::bootKernel();
}
public function testRegulationList(): void
{
$client = $this->getClientAuthenticated();
$client->request('GET', '/fr/person/periods/undispatched');
$this->assertResponseIsSuccessful();
}
}

View File

@@ -11,9 +11,11 @@ declare(strict_types=1);
namespace Chill\PersonBundle\Tests\Controller; namespace Chill\PersonBundle\Tests\Controller;
use Chill\MainBundle\Entity\Center;
use Chill\MainBundle\Test\PrepareClientTrait; use Chill\MainBundle\Test\PrepareClientTrait;
use Chill\PersonBundle\Entity\Person; use Chill\PersonBundle\Entity\Person;
use Closure; use Closure;
use Doctrine\ORM\EntityManagerInterface;
use Symfony\Bundle\FrameworkBundle\Test\WebTestCase; use Symfony\Bundle\FrameworkBundle\Test\WebTestCase;
/** /**
@@ -55,10 +57,10 @@ final class PersonControllerUpdateTest extends WebTestCase
{ {
self::bootKernel(); self::bootKernel();
$this->em = self::$kernel->getContainer() $this->em = self::$container
->get('doctrine.orm.entity_manager'); ->get(EntityManagerInterface::class);
$center = $this->em->getRepository(\Chill\MainBundle\Entity\Center::class) $center = $this->em->getRepository(Center::class)
->findOneBy(['name' => 'Center A']); ->findOneBy(['name' => 'Center A']);
$this->person = (new Person()) $this->person = (new Person())

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