mirror of
https://gitlab.com/Chill-Projet/chill-bundles.git
synced 2025-10-08 22:39:43 +00:00
Compare commits
19 Commits
295-cancel
...
288-signat
Author | SHA1 | Date | |
---|---|---|---|
d33dcacc46 | |||
8d97df9f96 | |||
2822800c76 | |||
8973b7c20b | |||
7f144da1a7 | |||
ab4193938d | |||
e2426ba1d8 | |||
8209990437 | |||
b1885de3e2 | |||
218280304c | |||
8a7b48b201 | |||
52a9aab73f | |||
8f358112b1 | |||
57a07af3db | |||
fd216ff66e | |||
689c2c574a | |||
a8de18beac | |||
babca5fc0f | |||
f2c5663b05 |
5
.changes/unreleased/Feature-20231212-154841.yaml
Normal file
5
.changes/unreleased/Feature-20231212-154841.yaml
Normal file
@@ -0,0 +1,5 @@
|
|||||||
|
kind: Feature
|
||||||
|
body: '[DX] move async-upload-bundle features into chill-bundles'
|
||||||
|
time: 2023-12-12T15:48:41.954970271+01:00
|
||||||
|
custom:
|
||||||
|
Issue: "221"
|
6
.changes/unreleased/Feature-20240530-160003.yaml
Normal file
6
.changes/unreleased/Feature-20240530-160003.yaml
Normal file
@@ -0,0 +1,6 @@
|
|||||||
|
kind: Feature
|
||||||
|
body: |
|
||||||
|
Upgrade import of address list to the last version of compiled addresses of belgian-best-address
|
||||||
|
time: 2024-05-30T16:00:03.440767606+02:00
|
||||||
|
custom:
|
||||||
|
Issue: ""
|
6
.changes/unreleased/Feature-20240531-190242.yaml
Normal file
6
.changes/unreleased/Feature-20240531-190242.yaml
Normal file
@@ -0,0 +1,6 @@
|
|||||||
|
kind: Feature
|
||||||
|
body: |
|
||||||
|
Upgrade CKEditor and refactor configuration with use of typescript
|
||||||
|
time: 2024-05-31T19:02:42.776662753+02:00
|
||||||
|
custom:
|
||||||
|
Issue: ""
|
@@ -1,7 +0,0 @@
|
|||||||
kind: Feature
|
|
||||||
body: The behavoir of the voters for stored objects is adjusted so as to limit edit
|
|
||||||
and delete possibilities to users related to the activity, social action or workflow
|
|
||||||
entity.
|
|
||||||
time: 2024-06-14T15:35:37.582159301+02:00
|
|
||||||
custom:
|
|
||||||
Issue: "286"
|
|
6
.changes/unreleased/Fixed-20240410-103736.yaml
Normal file
6
.changes/unreleased/Fixed-20240410-103736.yaml
Normal file
@@ -0,0 +1,6 @@
|
|||||||
|
kind: Fixed
|
||||||
|
body: Fix resolving of centers for an household, which will fix in turn the access
|
||||||
|
control
|
||||||
|
time: 2024-04-10T10:37:36.462484988+02:00
|
||||||
|
custom:
|
||||||
|
Issue: ""
|
@@ -1,6 +0,0 @@
|
|||||||
## v2.22.0 - 2024-06-25
|
|
||||||
### Feature
|
|
||||||
* ([#216](https://gitlab.com/Chill-Projet/chill-bundles/-/issues/216)) [event bundle] exports added for the event module
|
|
||||||
|
|
||||||
### Traduction francophone
|
|
||||||
* Exports sont ajoutés pour la module événement.
|
|
@@ -1,5 +0,0 @@
|
|||||||
## v2.22.1 - 2024-07-01
|
|
||||||
### Fixed
|
|
||||||
* Remove debug word
|
|
||||||
### DX
|
|
||||||
* Add a command for reading official address DB from Luxembourg and update chill addresses
|
|
@@ -1,3 +0,0 @@
|
|||||||
## v2.22.2 - 2024-07-03
|
|
||||||
### Fixed
|
|
||||||
* Remove scope required for event participation stats
|
|
@@ -1,11 +0,0 @@
|
|||||||
## v2.23.0 - 2024-07-23
|
|
||||||
### Feature
|
|
||||||
* ([#221](https://gitlab.com/Chill-Projet/chill-bundles/-/issues/221)) [DX] move async-upload-bundle features into chill-bundles
|
|
||||||
* Add job bundle (module emploi)
|
|
||||||
* Upgrade import of address list to the last version of compiled addresses of belgian-best-address
|
|
||||||
|
|
||||||
* Upgrade CKEditor and refactor configuration with use of typescript
|
|
||||||
|
|
||||||
### Fixed
|
|
||||||
* Fix resolving of centers for an household, which will fix in turn the access control
|
|
||||||
* Resolved type hinting error in activity list export
|
|
@@ -1,5 +0,0 @@
|
|||||||
## v3.0.0 - 2024-08-26
|
|
||||||
### Fixed
|
|
||||||
* Fix delete action for accompanying periods in draft state
|
|
||||||
* Fix connection to azure when making an calendar event in chill
|
|
||||||
* CollectionType js fixes for remove button and adding multiple entries
|
|
@@ -122,7 +122,7 @@ unit_tests:
|
|||||||
- php tests/console chill:db:sync-views --env=test
|
- php tests/console chill:db:sync-views --env=test
|
||||||
- php -d memory_limit=2G tests/console cache:clear --env=test
|
- php -d memory_limit=2G tests/console cache:clear --env=test
|
||||||
- php -d memory_limit=3G tests/console doctrine:fixtures:load -n --env=test
|
- php -d memory_limit=3G tests/console doctrine:fixtures:load -n --env=test
|
||||||
- php -d memory_limit=4G bin/phpunit --colors=never --exclude-group dbIntensive,openstack-integration,collabora-integration
|
- php -d memory_limit=4G bin/phpunit --colors=never --exclude-group dbIntensive
|
||||||
artifacts:
|
artifacts:
|
||||||
expire_in: 1 day
|
expire_in: 1 day
|
||||||
paths:
|
paths:
|
||||||
@@ -138,4 +138,4 @@ release:
|
|||||||
- echo "running release_job"
|
- echo "running release_job"
|
||||||
release:
|
release:
|
||||||
tag_name: '$CI_COMMIT_TAG'
|
tag_name: '$CI_COMMIT_TAG'
|
||||||
description: "./.changes/$CI_COMMIT_TAG.md"
|
description: "./.changes/v$CI_COMMIT_TAG.md"
|
||||||
|
35
CHANGELOG.md
35
CHANGELOG.md
@@ -6,41 +6,6 @@ adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html),
|
|||||||
and is generated by [Changie](https://github.com/miniscruff/changie).
|
and is generated by [Changie](https://github.com/miniscruff/changie).
|
||||||
|
|
||||||
|
|
||||||
## v3.0.0 - 2024-08-26
|
|
||||||
### Fixed
|
|
||||||
* Fix delete action for accompanying periods in draft state
|
|
||||||
* Fix connection to azure when making an calendar event in chill
|
|
||||||
* CollectionType js fixes for remove button and adding multiple entries
|
|
||||||
|
|
||||||
## v2.23.0 - 2024-07-23
|
|
||||||
### Feature
|
|
||||||
* ([#221](https://gitlab.com/Chill-Projet/chill-bundles/-/issues/221)) [DX] move async-upload-bundle features into chill-bundles
|
|
||||||
* Add job bundle (module emploi)
|
|
||||||
* Upgrade import of address list to the last version of compiled addresses of belgian-best-address
|
|
||||||
|
|
||||||
* Upgrade CKEditor and refactor configuration with use of typescript
|
|
||||||
|
|
||||||
### Fixed
|
|
||||||
* Fix resolving of centers for an household, which will fix in turn the access control
|
|
||||||
* Resolved type hinting error in activity list export
|
|
||||||
|
|
||||||
## v2.22.2 - 2024-07-03
|
|
||||||
### Fixed
|
|
||||||
* Remove scope required for event participation stats
|
|
||||||
|
|
||||||
## v2.22.1 - 2024-07-01
|
|
||||||
### Fixed
|
|
||||||
* Remove debug word
|
|
||||||
### DX
|
|
||||||
* Add a command for reading official address DB from Luxembourg and update chill addresses
|
|
||||||
|
|
||||||
## v2.22.0 - 2024-06-25
|
|
||||||
### Feature
|
|
||||||
* ([#216](https://gitlab.com/Chill-Projet/chill-bundles/-/issues/216)) [event bundle] exports added for the event module
|
|
||||||
|
|
||||||
### Traduction francophone
|
|
||||||
* Exports sont ajoutés pour la module événement.
|
|
||||||
|
|
||||||
## v2.21.0 - 2024-06-18
|
## v2.21.0 - 2024-06-18
|
||||||
### Feature
|
### Feature
|
||||||
* Add flash menu buttons in search results, to open directly a new calendar, or a new activity in an accompanying period
|
* Add flash menu buttons in search results, to open directly a new calendar, or a new activity in an accompanying period
|
||||||
|
@@ -115,8 +115,6 @@
|
|||||||
"Chill\\DocGeneratorBundle\\": "src/Bundle/ChillDocGeneratorBundle",
|
"Chill\\DocGeneratorBundle\\": "src/Bundle/ChillDocGeneratorBundle",
|
||||||
"Chill\\DocStoreBundle\\": "src/Bundle/ChillDocStoreBundle",
|
"Chill\\DocStoreBundle\\": "src/Bundle/ChillDocStoreBundle",
|
||||||
"Chill\\EventBundle\\": "src/Bundle/ChillEventBundle",
|
"Chill\\EventBundle\\": "src/Bundle/ChillEventBundle",
|
||||||
"Chill\\FranceTravailApiBundle\\": "src/Bundle/ChillFranceTravailApiBundle/src",
|
|
||||||
"Chill\\JobBundle\\": "src/Bundle/ChillJobBundle/src",
|
|
||||||
"Chill\\MainBundle\\": "src/Bundle/ChillMainBundle",
|
"Chill\\MainBundle\\": "src/Bundle/ChillMainBundle",
|
||||||
"Chill\\PersonBundle\\": "src/Bundle/ChillPersonBundle",
|
"Chill\\PersonBundle\\": "src/Bundle/ChillPersonBundle",
|
||||||
"Chill\\ReportBundle\\": "src/Bundle/ChillReportBundle",
|
"Chill\\ReportBundle\\": "src/Bundle/ChillReportBundle",
|
||||||
|
@@ -21,7 +21,7 @@ use Symfony\Component\Validator\Context\ExecutionContextInterface;
|
|||||||
class BirthdateFilter implements ExportElementValidatedInterface, FilterInterface
|
class BirthdateFilter implements ExportElementValidatedInterface, FilterInterface
|
||||||
{
|
{
|
||||||
// add specific role for this filter
|
// add specific role for this filter
|
||||||
public function addRole(): ?string
|
public function addRole()
|
||||||
{
|
{
|
||||||
// we do not need any new role for this filter, so we return null
|
// we do not need any new role for this filter, so we return null
|
||||||
return null;
|
return null;
|
||||||
|
@@ -1,125 +0,0 @@
|
|||||||
|
|
||||||
Enable CODE for development
|
|
||||||
===========================
|
|
||||||
|
|
||||||
For editing a document, there must be a way to communicate between the collabora server and the symfony server, in
|
|
||||||
both direction. The domain name should also be the same for collabora server and for the browser which access to the
|
|
||||||
online editor.
|
|
||||||
|
|
||||||
Using ngrok (or other http tunnel)
|
|
||||||
----------------------------------
|
|
||||||
|
|
||||||
One can configure a tunnel server to expose your local install to the web, and access to your local server using the
|
|
||||||
tunnel url.
|
|
||||||
|
|
||||||
Start ngrok
|
|
||||||
^^^^^^^^^^^
|
|
||||||
|
|
||||||
This can be achieve using `ngrok <https://ngrok.com/>`_.
|
|
||||||
|
|
||||||
.. note::
|
|
||||||
|
|
||||||
The configuration of ngrok is outside of the scope of this document. Refers to the ngrok's documentation.
|
|
||||||
|
|
||||||
.. code-block:: bash
|
|
||||||
|
|
||||||
# ensuring that your server is running through http and port 8000
|
|
||||||
ngrok http 8000
|
|
||||||
# then open the link given by the ngrok utility and you should reach your app
|
|
||||||
|
|
||||||
At this step, ensure that you can reach your local app using the ngrok url.
|
|
||||||
|
|
||||||
Configure Collabora
|
|
||||||
^^^^^^^^^^^^^^^^^^^
|
|
||||||
|
|
||||||
The collabora server must be executed online and configure to access to your ngrok installation. Ensure that the aliasgroup
|
|
||||||
exists for your ngrok application (`See the CODE documentation: <https://sdk.collaboraonline.com/docs/installation/Configuration.html#multihost-configuration>`_).
|
|
||||||
|
|
||||||
Configure your app
|
|
||||||
^^^^^^^^^^^^^^^^^^
|
|
||||||
|
|
||||||
Set the :code:`EDITOR_SERVER` variable to point to your collabora server, this should be done in your :code:`.env.local` file.
|
|
||||||
|
|
||||||
At this point, everything must be fine. In case of errors, watch the log from your collabora server, use the `profiler <https://symfony.com/doc/current/profiler.html>`_
|
|
||||||
to debug the requests.
|
|
||||||
|
|
||||||
.. note::
|
|
||||||
|
|
||||||
In case of error while validating proof (you'll see those message in the collabora's logs), you can temporarily disable
|
|
||||||
the proof validation adding this code snippet in `config/services.yaml`:
|
|
||||||
|
|
||||||
.. code-block:: yaml
|
|
||||||
|
|
||||||
when@dev:
|
|
||||||
# add only in dev environment, to avoid security problems
|
|
||||||
services:
|
|
||||||
ChampsLibres\WopiLib\Contract\Service\ProofValidatorInterface:
|
|
||||||
# this class will always validate proof
|
|
||||||
alias: Chill\WopiBundle\Service\Wopi\NullProofValidator
|
|
||||||
|
|
||||||
With a local CODE image
|
|
||||||
-----------------------
|
|
||||||
|
|
||||||
.. warning::
|
|
||||||
|
|
||||||
This configuration is not sure, and must be refined. The documentation does not seems to be entirely valid.
|
|
||||||
|
|
||||||
Use a local domain name and https for your app
|
|
||||||
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
||||||
|
|
||||||
Use the proxy feature from embedded symfony server to run your app. `See the dedicated doc <https://symfony.com/doc/current/setup/symfony_server.html#local-domain-names>`
|
|
||||||
|
|
||||||
Configure also the `https certificate <https://symfony.com/doc/current/setup/symfony_server.html#enabling-tls>`_
|
|
||||||
|
|
||||||
In this example, your local domain name will be :code:`my-domain` and the url will be :code:`https://my-domain.wip`.
|
|
||||||
|
|
||||||
Ensure that the proxy is running.
|
|
||||||
|
|
||||||
Create a certificate database for collabora
|
|
||||||
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
||||||
|
|
||||||
Collabora must validate your certificate generated by symfony console. For that, you need `to create a NSS database <https://sdk.collaboraonline.com/docs/installation/Configuration.html#validating-digital-signatures>`
|
|
||||||
and configure collabora to use it.
|
|
||||||
|
|
||||||
At first, export the certificate for symfony development. Use the graphical interface from your browser to get the
|
|
||||||
certificate as a PEM file.
|
|
||||||
|
|
||||||
.. code-block:: bash
|
|
||||||
|
|
||||||
# create your database in a custom directory
|
|
||||||
mkdir /path/to/your/directory
|
|
||||||
certutil -N -d /path/to/your/directory
|
|
||||||
cat /path/to/your/ca.crt | certutil -d . -A symfony -t -t C,P,C,u,w -a
|
|
||||||
|
|
||||||
Launch CODE properly configured
|
|
||||||
|
|
||||||
.. code-block:: yaml
|
|
||||||
|
|
||||||
collabora:
|
|
||||||
image: collabora/code:latest
|
|
||||||
environment:
|
|
||||||
- SLEEPFORDEBUGGER=0
|
|
||||||
- DONT_GEN_SSL_CERT="True"
|
|
||||||
# add path to the database
|
|
||||||
- extra_params=--o:ssl.enable=false --o:ssl.termination=false --o:logging.level=7 -o:certificates.database_path=/etc/custom-certificates/nss-database
|
|
||||||
- username=admin
|
|
||||||
- password=admin
|
|
||||||
- dictionaries=en_US
|
|
||||||
- aliasgroup1=https://my-domain.wip
|
|
||||||
ports:
|
|
||||||
- "127.0.0.1:9980:9980"
|
|
||||||
volumes:
|
|
||||||
- "/path/to/your/directory/nss-database:/etc/custom-certificates/nss-database"
|
|
||||||
extra_hosts:
|
|
||||||
- "my-domain.wip:host-gateway"
|
|
||||||
|
|
||||||
Configure your app
|
|
||||||
^^^^^^^^^^^^^^^^^^
|
|
||||||
|
|
||||||
Into your :code:`.env.local` file:
|
|
||||||
|
|
||||||
.. code-block:: env
|
|
||||||
|
|
||||||
EDITOR_SERVER=http://${COLLABORA_HOST}:${COLLABORA_PORT}
|
|
||||||
|
|
||||||
At this step, you should be able to edit a document through collabora.
|
|
@@ -56,7 +56,7 @@ We strongly encourage you to initialize a git repository at this step, to track
|
|||||||
cat <<< "$(jq '.extra.symfony += {"endpoint": ["flex://defaults", "https://gitlab.com/api/v4/projects/57371968/repository/files/index.json/raw?ref=main"]}' composer.json)" > composer.json
|
cat <<< "$(jq '.extra.symfony += {"endpoint": ["flex://defaults", "https://gitlab.com/api/v4/projects/57371968/repository/files/index.json/raw?ref=main"]}' composer.json)" > composer.json
|
||||||
# install chill and some dependencies
|
# install chill and some dependencies
|
||||||
# TODO fix the suffix "alpha1" and replace by ^3.0.0 when version 3.0.0 will be released
|
# TODO fix the suffix "alpha1" and replace by ^3.0.0 when version 3.0.0 will be released
|
||||||
symfony composer require chill-project/chill-bundles v3.0.0-RC3 champs-libres/wopi-lib dev-master@dev champs-libres/wopi-bundle dev-master@dev
|
symfony composer require chill-project/chill-bundles v3.0.0-alpha1 champs-libres/wopi-lib dev-master@dev champs-libres/wopi-bundle dev-master@dev
|
||||||
|
|
||||||
We encourage you to accept the inclusion of the "Docker configuration from recipes": this is the documented way to run the database.
|
We encourage you to accept the inclusion of the "Docker configuration from recipes": this is the documented way to run the database.
|
||||||
You must also accept to configure recipes from the contrib repository, unless you want to configure the bundles manually).
|
You must also accept to configure recipes from the contrib repository, unless you want to configure the bundles manually).
|
||||||
@@ -110,14 +110,15 @@ you can either:
|
|||||||
.. code-block:: env
|
.. code-block:: env
|
||||||
|
|
||||||
ADMIN_PASSWORD=\$2y\$13\$iyvJLuT4YEa6iWXyQV4/N.hNHpNG8kXlYDkkt5MkYy4FXcSwYAwmm
|
ADMIN_PASSWORD=\$2y\$13\$iyvJLuT4YEa6iWXyQV4/N.hNHpNG8kXlYDkkt5MkYy4FXcSwYAwmm
|
||||||
# note: if you copy-paste the line above, the password will be "admin".
|
|
||||||
|
|
||||||
- add the generated password to the secrets manager (**note**: you must add the generated hashed password to the secrets env,
|
- add the generated password to the secrets manager (**note**: you must add the generated hashed password to the secrets env,
|
||||||
not the password in clear text).
|
not the password in clear text).
|
||||||
|
|
||||||
- set up the jwt authentication bundle
|
- set up the jwt authentication bundle
|
||||||
|
|
||||||
Some environment variables are available for the JWT authentication bundle in the :code:`.env` file.
|
Some environment variables are available for the JWT authentication bundle in the :code:`.env` file. You must also run the command
|
||||||
|
:code:`symfony console lexik:jwt:generate-keypair` to generate some keys that will be stored in the paths set up in the :code:`JWT_SECRET_KEY`
|
||||||
|
and the :code:`JWT_PUBLIC_KEY` env variables. This is only required for using the stored documents in Chill.
|
||||||
|
|
||||||
Prepare migrations and other tools
|
Prepare migrations and other tools
|
||||||
**********************************
|
**********************************
|
||||||
@@ -135,8 +136,6 @@ To continue the installation process, you will have to run migrations:
|
|||||||
symfony console messenger:setup-transports
|
symfony console messenger:setup-transports
|
||||||
# prepare some views
|
# prepare some views
|
||||||
symfony console chill:db:sync-views
|
symfony console chill:db:sync-views
|
||||||
# generate jwt token, required for some api features (webdav access, ...)
|
|
||||||
symfony console lexik:jwt:generate-keypair
|
|
||||||
|
|
||||||
.. warning::
|
.. warning::
|
||||||
|
|
||||||
|
@@ -27,7 +27,7 @@
|
|||||||
"popper.js": "^1.16.1",
|
"popper.js": "^1.16.1",
|
||||||
"postcss-loader": "^7.0.2",
|
"postcss-loader": "^7.0.2",
|
||||||
"raw-loader": "^4.0.2",
|
"raw-loader": "^4.0.2",
|
||||||
"sass-loader": "^14.0.0",
|
"sass-loader": "^13.0.0",
|
||||||
"select2": "^4.0.13",
|
"select2": "^4.0.13",
|
||||||
"select2-bootstrap-theme": "0.1.0-beta.10",
|
"select2-bootstrap-theme": "0.1.0-beta.10",
|
||||||
"style-loader": "^3.3.1",
|
"style-loader": "^3.3.1",
|
||||||
@@ -53,12 +53,12 @@
|
|||||||
"marked": "^12.0.2",
|
"marked": "^12.0.2",
|
||||||
"masonry-layout": "^4.2.2",
|
"masonry-layout": "^4.2.2",
|
||||||
"mime": "^4.0.0",
|
"mime": "^4.0.0",
|
||||||
"pdfjs-dist": "^4.3.136",
|
"swagger-ui": "^4.15.5",
|
||||||
"vis-network": "^9.1.0",
|
"vis-network": "^9.1.0",
|
||||||
"vue": "^3.2.37",
|
"vue": "^3.2.37",
|
||||||
"vue-i18n": "^9.1.6",
|
"vue-i18n": "^9.1.6",
|
||||||
"vue-multiselect": "3.0.0-alpha.2",
|
"vue-multiselect": "3.0.0-alpha.2",
|
||||||
"vue-toast-notification": "^3.1.2",
|
"vue-toast-notification": "^2.0",
|
||||||
"vuex": "^4.0.0"
|
"vuex": "^4.0.0"
|
||||||
},
|
},
|
||||||
"browserslist": [
|
"browserslist": [
|
||||||
|
@@ -1,29 +1,34 @@
|
|||||||
parameters:
|
parameters:
|
||||||
ignoreErrors:
|
ignoreErrors:
|
||||||
-
|
|
||||||
message: "#^Foreach overwrites \\$key with its key variable\\.$#"
|
|
||||||
count: 1
|
|
||||||
path: src/Bundle/ChillCustomFieldsBundle/Controller/CustomFieldsGroupController.php
|
|
||||||
|
|
||||||
-
|
-
|
||||||
message: "#^Only booleans are allowed in an if condition, mixed given\\.$#"
|
message: "#^Only booleans are allowed in an if condition, mixed given\\.$#"
|
||||||
count: 1
|
count: 1
|
||||||
path: src/Bundle/ChillCustomFieldsBundle/Entity/CustomField.php
|
path: src/Bundle/ChillCustomFieldsBundle/Entity/CustomField.php
|
||||||
|
|
||||||
-
|
-
|
||||||
message: "#^Property Chill\\\\CustomFieldsBundle\\\\Entity\\\\CustomField\\:\\:\\$required \\(false\\) does not accept bool\\.$#"
|
message: "#^Only booleans are allowed in an if condition, mixed given\\.$#"
|
||||||
count: 1
|
count: 1
|
||||||
path: src/Bundle/ChillCustomFieldsBundle/Entity/CustomField.php
|
path: src/Bundle/ChillPersonBundle/Form/PersonType.php
|
||||||
|
|
||||||
-
|
-
|
||||||
message: "#^Parameter \\#1 \\$user of method Chill\\\\DocStoreBundle\\\\Entity\\\\Document\\:\\:setUser\\(\\) expects Chill\\\\MainBundle\\\\Entity\\\\User\\|null, Symfony\\\\Component\\\\Security\\\\Core\\\\User\\\\UserInterface\\|null given\\.$#"
|
message: "#^Only booleans are allowed in an if condition, mixed given\\.$#"
|
||||||
count: 2
|
count: 1
|
||||||
path: src/Bundle/ChillDocStoreBundle/Controller/DocumentAccompanyingCourseController.php
|
path: src/Bundle/ChillMainBundle/Templating/ChillTwigRoutingHelper.php
|
||||||
|
|
||||||
-
|
-
|
||||||
message: "#^Parameter \\#1 \\$user of method Chill\\\\DocStoreBundle\\\\Entity\\\\Document\\:\\:setUser\\(\\) expects Chill\\\\MainBundle\\\\Entity\\\\User\\|null, Symfony\\\\Component\\\\Security\\\\Core\\\\User\\\\UserInterface\\|null given\\.$#"
|
message: "#^Only booleans are allowed in an if condition, mixed given\\.$#"
|
||||||
|
count: 1
|
||||||
|
path: src/Bundle/ChillCustomFieldsBundle/Entity/CustomFieldsGroup.php
|
||||||
|
|
||||||
|
-
|
||||||
|
message: "#^Only booleans are allowed in an if condition, mixed given\\.$#"
|
||||||
count: 2
|
count: 2
|
||||||
path: src/Bundle/ChillDocStoreBundle/Controller/DocumentPersonController.php
|
path: src/Bundle/ChillMainBundle/Repository/NotificationRepository.php
|
||||||
|
|
||||||
|
-
|
||||||
|
message: "#^Foreach overwrites \\$key with its key variable\\.$#"
|
||||||
|
count: 1
|
||||||
|
path: src/Bundle/ChillCustomFieldsBundle/Controller/CustomFieldsGroupController.php
|
||||||
|
|
||||||
-
|
-
|
||||||
message: "#^Variable \\$participation might not be defined\\.$#"
|
message: "#^Variable \\$participation might not be defined\\.$#"
|
||||||
@@ -35,106 +40,6 @@ parameters:
|
|||||||
count: 1
|
count: 1
|
||||||
path: src/Bundle/ChillEventBundle/Form/ChoiceLoader/EventChoiceLoader.php
|
path: src/Bundle/ChillEventBundle/Form/ChoiceLoader/EventChoiceLoader.php
|
||||||
|
|
||||||
-
|
|
||||||
message: "#^Comparison operation \"\\>\" between \\(bool\\|int\\|Redis\\) and 0 results in an error\\.$#"
|
|
||||||
count: 1
|
|
||||||
path: src/Bundle/ChillFranceTravailApiBundle/src/ApiHelper/ApiWrapper.php
|
|
||||||
|
|
||||||
-
|
|
||||||
message: "#^Variable \\$response might not be defined\\.$#"
|
|
||||||
count: 1
|
|
||||||
path: src/Bundle/ChillFranceTravailApiBundle/src/ApiHelper/ApiWrapper.php
|
|
||||||
|
|
||||||
-
|
|
||||||
message: "#^Function GuzzleHttp\\\\Psr7\\\\get not found\\.$#"
|
|
||||||
count: 1
|
|
||||||
path: src/Bundle/ChillFranceTravailApiBundle/src/ApiHelper/PartenaireRomeAppellation.php
|
|
||||||
|
|
||||||
-
|
|
||||||
message: "#^Function GuzzleHttp\\\\Psr7\\\\str not found\\.$#"
|
|
||||||
count: 2
|
|
||||||
path: src/Bundle/ChillFranceTravailApiBundle/src/ApiHelper/PartenaireRomeAppellation.php
|
|
||||||
|
|
||||||
-
|
|
||||||
message: "#^Parameter \\#1 \\$seconds of function sleep expects int, string given\\.$#"
|
|
||||||
count: 1
|
|
||||||
path: src/Bundle/ChillFranceTravailApiBundle/src/ApiHelper/PartenaireRomeAppellation.php
|
|
||||||
|
|
||||||
-
|
|
||||||
message: "#^Unreachable statement \\- code above always terminates\\.$#"
|
|
||||||
count: 1
|
|
||||||
path: src/Bundle/ChillJobBundle/src/Controller/CSPersonController.php
|
|
||||||
|
|
||||||
-
|
|
||||||
message: "#^Parameter \\#1 \\$interval of method DateTimeImmutable\\:\\:add\\(\\) expects DateInterval, string\\|null given\\.$#"
|
|
||||||
count: 1
|
|
||||||
path: src/Bundle/ChillJobBundle/src/Entity/Immersion.php
|
|
||||||
|
|
||||||
-
|
|
||||||
message: "#^Parameter \\#1 \\$object of static method DateTimeImmutable\\:\\:createFromMutable\\(\\) expects DateTime, DateTimeInterface given\\.$#"
|
|
||||||
count: 1
|
|
||||||
path: src/Bundle/ChillJobBundle/src/Entity/Immersion.php
|
|
||||||
|
|
||||||
-
|
|
||||||
message: "#^Property Chill\\\\JobBundle\\\\Entity\\\\Rome\\\\Metier\\:\\:\\$appellations is never read, only written\\.$#"
|
|
||||||
count: 1
|
|
||||||
path: src/Bundle/ChillJobBundle/src/Entity/Rome/Metier.php
|
|
||||||
|
|
||||||
-
|
|
||||||
message: "#^Method Chill\\\\JobBundle\\\\Export\\\\ListCSPerson\\:\\:splitArrayToColumns\\(\\) never returns Closure so it can be removed from the return type\\.$#"
|
|
||||||
count: 1
|
|
||||||
path: src/Bundle/ChillJobBundle/src/Export/ListCSPerson.php
|
|
||||||
|
|
||||||
-
|
|
||||||
message: "#^Variable \\$f might not be defined\\.$#"
|
|
||||||
count: 1
|
|
||||||
path: src/Bundle/ChillJobBundle/src/Export/ListCSPerson.php
|
|
||||||
|
|
||||||
-
|
|
||||||
message: "#^Method Chill\\\\JobBundle\\\\Export\\\\ListFrein\\:\\:splitArrayToColumns\\(\\) never returns Closure so it can be removed from the return type\\.$#"
|
|
||||||
count: 1
|
|
||||||
path: src/Bundle/ChillJobBundle/src/Export/ListFrein.php
|
|
||||||
|
|
||||||
-
|
|
||||||
message: "#^Method Chill\\\\JobBundle\\\\Export\\\\ListProjetProfessionnel\\:\\:splitArrayToColumns\\(\\) never returns Closure so it can be removed from the return type\\.$#"
|
|
||||||
count: 1
|
|
||||||
path: src/Bundle/ChillJobBundle/src/Export/ListProjetProfessionnel.php
|
|
||||||
|
|
||||||
-
|
|
||||||
message: "#^Property Chill\\\\JobBundle\\\\Form\\\\ChoiceLoader\\\\RomeAppellationChoiceLoader\\:\\:\\$appellationRepository \\(Chill\\\\JobBundle\\\\Repository\\\\Rome\\\\AppellationRepository\\) does not accept Doctrine\\\\ORM\\\\EntityRepository\\<Chill\\\\JobBundle\\\\Entity\\\\Rome\\\\Appellation\\>\\.$#"
|
|
||||||
count: 1
|
|
||||||
path: src/Bundle/ChillJobBundle/src/Form/ChoiceLoader/RomeAppellationChoiceLoader.php
|
|
||||||
|
|
||||||
-
|
|
||||||
message: "#^Result of && is always false\\.$#"
|
|
||||||
count: 1
|
|
||||||
path: src/Bundle/ChillJobBundle/src/Form/ChoiceLoader/RomeAppellationChoiceLoader.php
|
|
||||||
|
|
||||||
-
|
|
||||||
message: "#^Strict comparison using \\=\\=\\= between array\\{\\} and Symfony\\\\Component\\\\Validator\\\\ConstraintViolationListInterface will always evaluate to false\\.$#"
|
|
||||||
count: 2
|
|
||||||
path: src/Bundle/ChillJobBundle/src/Form/ChoiceLoader/RomeAppellationChoiceLoader.php
|
|
||||||
|
|
||||||
-
|
|
||||||
message: "#^Strict comparison using \\=\\=\\= between null and string will always evaluate to false\\.$#"
|
|
||||||
count: 1
|
|
||||||
path: src/Bundle/ChillJobBundle/src/Form/ChoiceLoader/RomeAppellationChoiceLoader.php
|
|
||||||
|
|
||||||
-
|
|
||||||
message: "#^Variable \\$metier might not be defined\\.$#"
|
|
||||||
count: 1
|
|
||||||
path: src/Bundle/ChillJobBundle/src/Form/ChoiceLoader/RomeAppellationChoiceLoader.php
|
|
||||||
|
|
||||||
-
|
|
||||||
message: "#^Parameter \\#1 \\$interval of method DateTimeImmutable\\:\\:add\\(\\) expects DateInterval, string\\|null given\\.$#"
|
|
||||||
count: 1
|
|
||||||
path: src/Bundle/ChillJobBundle/src/Security/Authorization/CSConnectesVoter.php
|
|
||||||
|
|
||||||
-
|
|
||||||
message: "#^Parameter \\#1 \\$object of static method DateTimeImmutable\\:\\:createFromMutable\\(\\) expects DateTime, DateTimeInterface given\\.$#"
|
|
||||||
count: 1
|
|
||||||
path: src/Bundle/ChillJobBundle/src/Security/Authorization/CSConnectesVoter.php
|
|
||||||
|
|
||||||
-
|
-
|
||||||
message: "#^Cannot unset offset '_token' on array\\{formatter\\: mixed, export\\: mixed, centers\\: mixed, alias\\: string\\}\\.$#"
|
message: "#^Cannot unset offset '_token' on array\\{formatter\\: mixed, export\\: mixed, centers\\: mixed, alias\\: string\\}\\.$#"
|
||||||
count: 1
|
count: 1
|
||||||
@@ -160,31 +65,11 @@ parameters:
|
|||||||
count: 1
|
count: 1
|
||||||
path: src/Bundle/ChillMainBundle/Form/ChoiceLoader/PostalCodeChoiceLoader.php
|
path: src/Bundle/ChillMainBundle/Form/ChoiceLoader/PostalCodeChoiceLoader.php
|
||||||
|
|
||||||
-
|
|
||||||
message: "#^Only booleans are allowed in an if condition, mixed given\\.$#"
|
|
||||||
count: 2
|
|
||||||
path: src/Bundle/ChillMainBundle/Repository/NotificationRepository.php
|
|
||||||
|
|
||||||
-
|
|
||||||
message: "#^Parameter \\#1 \\$user of method Chill\\\\MainBundle\\\\Security\\\\Authorization\\\\AuthorizationHelper\\:\\:userHasAccessForCenter\\(\\) expects Chill\\\\MainBundle\\\\Entity\\\\User, Symfony\\\\Component\\\\Security\\\\Core\\\\User\\\\UserInterface given\\.$#"
|
|
||||||
count: 1
|
|
||||||
path: src/Bundle/ChillMainBundle/Security/Authorization/AuthorizationHelper.php
|
|
||||||
|
|
||||||
-
|
|
||||||
message: "#^Only booleans are allowed in an if condition, mixed given\\.$#"
|
|
||||||
count: 1
|
|
||||||
path: src/Bundle/ChillMainBundle/Templating/ChillTwigRoutingHelper.php
|
|
||||||
|
|
||||||
-
|
-
|
||||||
message: "#^Foreach overwrites \\$value with its value variable\\.$#"
|
message: "#^Foreach overwrites \\$value with its value variable\\.$#"
|
||||||
count: 1
|
count: 1
|
||||||
path: src/Bundle/ChillPersonBundle/Form/ChoiceLoader/PersonChoiceLoader.php
|
path: src/Bundle/ChillPersonBundle/Form/ChoiceLoader/PersonChoiceLoader.php
|
||||||
|
|
||||||
-
|
|
||||||
message: "#^Only booleans are allowed in an if condition, mixed given\\.$#"
|
|
||||||
count: 1
|
|
||||||
path: src/Bundle/ChillPersonBundle/Form/PersonType.php
|
|
||||||
|
|
||||||
-
|
-
|
||||||
message: "#^Foreach overwrites \\$value with its value variable\\.$#"
|
message: "#^Foreach overwrites \\$value with its value variable\\.$#"
|
||||||
count: 1
|
count: 1
|
||||||
|
22
rector.php
22
rector.php
@@ -28,9 +28,6 @@ return static function (RectorConfig $rectorConfig): void {
|
|||||||
|
|
||||||
// register a single rule
|
// register a single rule
|
||||||
$rectorConfig->rule(InlineConstructorDefaultToPropertyRector::class);
|
$rectorConfig->rule(InlineConstructorDefaultToPropertyRector::class);
|
||||||
$rectorConfig->rule(Rector\TypeDeclaration\Rector\ClassMethod\AddParamTypeFromPropertyTypeRector::class);
|
|
||||||
$rectorConfig->rule(Rector\TypeDeclaration\Rector\Class_\MergeDateTimePropertyTypeDeclarationRector::class);
|
|
||||||
$rectorConfig->rule(Rector\TypeDeclaration\Rector\ClassMethod\AddReturnTypeDeclarationBasedOnParentClassMethodRector::class);
|
|
||||||
|
|
||||||
// part of the symfony 54 rules
|
// part of the symfony 54 rules
|
||||||
$rectorConfig->rule(\Rector\Symfony\Symfony53\Rector\StaticPropertyFetch\KernelTestCaseContainerPropertyDeprecationRector::class);
|
$rectorConfig->rule(\Rector\Symfony\Symfony53\Rector\StaticPropertyFetch\KernelTestCaseContainerPropertyDeprecationRector::class);
|
||||||
@@ -39,14 +36,14 @@ return static function (RectorConfig $rectorConfig): void {
|
|||||||
|
|
||||||
//define sets of rules
|
//define sets of rules
|
||||||
$rectorConfig->sets([
|
$rectorConfig->sets([
|
||||||
LevelSetList::UP_TO_PHP_82,
|
\Rector\Symfony\Set\SymfonySetList::SYMFONY_50,
|
||||||
\Rector\Symfony\Set\SymfonySetList::SYMFONY_40,
|
\Rector\Symfony\Set\SymfonySetList::SYMFONY_50_TYPES,
|
||||||
\Rector\Symfony\Set\SymfonySetList::SYMFONY_41,
|
\Rector\Symfony\Set\SymfonySetList::SYMFONY_51,
|
||||||
\Rector\Symfony\Set\SymfonySetList::SYMFONY_42,
|
\Rector\Symfony\Set\SymfonySetList::SYMFONY_52,
|
||||||
\Rector\Symfony\Set\SymfonySetList::SYMFONY_43,
|
\Rector\Symfony\Set\SymfonySetList::SYMFONY_53,
|
||||||
\Rector\Symfony\Set\SymfonySetList::SYMFONY_44,
|
\Rector\Symfony\Set\SymfonySetList::SYMFONY_54,
|
||||||
\Rector\Doctrine\Set\DoctrineSetList::DOCTRINE_CODE_QUALITY,
|
\Rector\Doctrine\Set\DoctrineSetList::DOCTRINE_CODE_QUALITY,
|
||||||
\Rector\PHPUnit\Set\PHPUnitSetList::PHPUNIT_90,
|
\Rector\Doctrine\Set\DoctrineSetList::ANNOTATIONS_TO_ATTRIBUTES,
|
||||||
]);
|
]);
|
||||||
|
|
||||||
$rectorConfig->ruleWithConfiguration(\Rector\Php80\Rector\Class_\AnnotationToAttributeRector::class, [
|
$rectorConfig->ruleWithConfiguration(\Rector\Php80\Rector\Class_\AnnotationToAttributeRector::class, [
|
||||||
@@ -69,8 +66,9 @@ return static function (RectorConfig $rectorConfig): void {
|
|||||||
|
|
||||||
// skip some path...
|
// skip some path...
|
||||||
$rectorConfig->skip([
|
$rectorConfig->skip([
|
||||||
// waiting for fixing this bug: https://github.com/rectorphp/rector-doctrine/issues/342
|
// we must adapt service definition
|
||||||
\Rector\Doctrine\CodeQuality\Rector\Property\ImproveDoctrineCollectionDocTypeInEntityRector::class,
|
\Rector\Symfony\Symfony28\Rector\MethodCall\GetToConstructorInjectionRector::class,
|
||||||
|
\Rector\Symfony\Symfony34\Rector\Closure\ContainerGetNameToTypeInTestsRector::class,
|
||||||
]);
|
]);
|
||||||
|
|
||||||
$rectorConfig->ruleWithConfiguration(AnnotationToAttributeRector::class, [
|
$rectorConfig->ruleWithConfiguration(AnnotationToAttributeRector::class, [
|
||||||
|
@@ -68,7 +68,7 @@ final class ActivityController extends AbstractController
|
|||||||
private readonly FilterOrderHelperFactoryInterface $filterOrderHelperFactory,
|
private readonly FilterOrderHelperFactoryInterface $filterOrderHelperFactory,
|
||||||
private readonly TranslatableStringHelperInterface $translatableStringHelper,
|
private readonly TranslatableStringHelperInterface $translatableStringHelper,
|
||||||
private readonly PaginatorFactory $paginatorFactory,
|
private readonly PaginatorFactory $paginatorFactory,
|
||||||
private readonly ChillSecurity $security,
|
private readonly ChillSecurity $security
|
||||||
) {}
|
) {}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -99,10 +99,10 @@ final class ActivityController extends AbstractController
|
|||||||
|
|
||||||
$form = $this->createDeleteForm($activity->getId(), $person, $accompanyingPeriod);
|
$form = $this->createDeleteForm($activity->getId(), $person, $accompanyingPeriod);
|
||||||
|
|
||||||
if (Request::METHOD_POST === $request->getMethod()) {
|
if (Request::METHOD_DELETE === $request->getMethod()) {
|
||||||
$form->handleRequest($request);
|
$form->handleRequest($request);
|
||||||
|
|
||||||
if ($form->isSubmitted() && $form->isValid()) {
|
if ($form->isValid()) {
|
||||||
$this->logger->notice('An activity has been removed', [
|
$this->logger->notice('An activity has been removed', [
|
||||||
'by_user' => $this->getUser()->getUsername(),
|
'by_user' => $this->getUser()->getUsername(),
|
||||||
'activity_id' => $activity->getId(),
|
'activity_id' => $activity->getId(),
|
||||||
@@ -640,6 +640,7 @@ final class ActivityController extends AbstractController
|
|||||||
|
|
||||||
return $this->createFormBuilder()
|
return $this->createFormBuilder()
|
||||||
->setAction($this->generateUrl('chill_activity_activity_delete', $params))
|
->setAction($this->generateUrl('chill_activity_activity_delete', $params))
|
||||||
|
->setMethod('DELETE')
|
||||||
->add('submit', SubmitType::class, ['label' => 'Delete'])
|
->add('submit', SubmitType::class, ['label' => 'Delete'])
|
||||||
->getForm();
|
->getForm();
|
||||||
}
|
}
|
||||||
|
@@ -80,7 +80,7 @@ class Activity implements AccompanyingPeriodLinkedWithSocialIssuesEntityInterfac
|
|||||||
private \DateTime $date;
|
private \DateTime $date;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @var Collection<int, StoredObject>
|
* @var Collection<StoredObject>
|
||||||
*/
|
*/
|
||||||
#[Assert\Valid(traverse: true)]
|
#[Assert\Valid(traverse: true)]
|
||||||
#[ORM\ManyToMany(targetEntity: StoredObject::class, cascade: ['persist'])]
|
#[ORM\ManyToMany(targetEntity: StoredObject::class, cascade: ['persist'])]
|
||||||
@@ -107,7 +107,7 @@ class Activity implements AccompanyingPeriodLinkedWithSocialIssuesEntityInterfac
|
|||||||
private ?Person $person = null;
|
private ?Person $person = null;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @var Collection<int, \Chill\PersonBundle\Entity\Person>
|
* @var Collection<Person>
|
||||||
*/
|
*/
|
||||||
#[Groups(['read', 'docgen:read'])]
|
#[Groups(['read', 'docgen:read'])]
|
||||||
#[ORM\ManyToMany(targetEntity: Person::class)]
|
#[ORM\ManyToMany(targetEntity: Person::class)]
|
||||||
@@ -117,7 +117,7 @@ class Activity implements AccompanyingPeriodLinkedWithSocialIssuesEntityInterfac
|
|||||||
private PrivateCommentEmbeddable $privateComment;
|
private PrivateCommentEmbeddable $privateComment;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @var Collection<int, ActivityReason>
|
* @var Collection<ActivityReason>
|
||||||
*/
|
*/
|
||||||
#[Groups(['docgen:read'])]
|
#[Groups(['docgen:read'])]
|
||||||
#[ORM\ManyToMany(targetEntity: ActivityReason::class)]
|
#[ORM\ManyToMany(targetEntity: ActivityReason::class)]
|
||||||
@@ -132,7 +132,7 @@ class Activity implements AccompanyingPeriodLinkedWithSocialIssuesEntityInterfac
|
|||||||
private string $sentReceived = '';
|
private string $sentReceived = '';
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @var Collection<int, \Chill\PersonBundle\Entity\SocialWork\SocialAction>
|
* @var Collection<SocialAction>
|
||||||
*/
|
*/
|
||||||
#[Groups(['read', 'docgen:read'])]
|
#[Groups(['read', 'docgen:read'])]
|
||||||
#[ORM\ManyToMany(targetEntity: SocialAction::class)]
|
#[ORM\ManyToMany(targetEntity: SocialAction::class)]
|
||||||
@@ -140,7 +140,7 @@ class Activity implements AccompanyingPeriodLinkedWithSocialIssuesEntityInterfac
|
|||||||
private Collection $socialActions;
|
private Collection $socialActions;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @var Collection<int, SocialIssue>
|
* @var Collection<SocialIssue>
|
||||||
*/
|
*/
|
||||||
#[Groups(['read', 'docgen:read'])]
|
#[Groups(['read', 'docgen:read'])]
|
||||||
#[ORM\ManyToMany(targetEntity: SocialIssue::class)]
|
#[ORM\ManyToMany(targetEntity: SocialIssue::class)]
|
||||||
@@ -148,7 +148,7 @@ class Activity implements AccompanyingPeriodLinkedWithSocialIssuesEntityInterfac
|
|||||||
private Collection $socialIssues;
|
private Collection $socialIssues;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @var Collection<int, ThirdParty>
|
* @var Collection<ThirdParty>
|
||||||
*/
|
*/
|
||||||
#[Groups(['read', 'docgen:read'])]
|
#[Groups(['read', 'docgen:read'])]
|
||||||
#[ORM\ManyToMany(targetEntity: ThirdParty::class)]
|
#[ORM\ManyToMany(targetEntity: ThirdParty::class)]
|
||||||
@@ -162,7 +162,7 @@ class Activity implements AccompanyingPeriodLinkedWithSocialIssuesEntityInterfac
|
|||||||
private ?User $user = null;
|
private ?User $user = null;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @var Collection<int, User>
|
* @var Collection<User>
|
||||||
*/
|
*/
|
||||||
#[Groups(['read', 'docgen:read'])]
|
#[Groups(['read', 'docgen:read'])]
|
||||||
#[ORM\ManyToMany(targetEntity: User::class)]
|
#[ORM\ManyToMany(targetEntity: User::class)]
|
||||||
|
@@ -79,9 +79,11 @@ class ActivityReason
|
|||||||
/**
|
/**
|
||||||
* Set active.
|
* Set active.
|
||||||
*
|
*
|
||||||
|
* @param bool $active
|
||||||
|
*
|
||||||
* @return ActivityReason
|
* @return ActivityReason
|
||||||
*/
|
*/
|
||||||
public function setActive(bool $active)
|
public function setActive($active)
|
||||||
{
|
{
|
||||||
$this->active = $active;
|
$this->active = $active;
|
||||||
|
|
||||||
@@ -108,9 +110,11 @@ class ActivityReason
|
|||||||
/**
|
/**
|
||||||
* Set name.
|
* Set name.
|
||||||
*
|
*
|
||||||
|
* @param array $name
|
||||||
|
*
|
||||||
* @return ActivityReason
|
* @return ActivityReason
|
||||||
*/
|
*/
|
||||||
public function setName(array $name)
|
public function setName($name)
|
||||||
{
|
{
|
||||||
$this->name = $name;
|
$this->name = $name;
|
||||||
|
|
||||||
|
@@ -40,9 +40,9 @@ class ActivityReasonCategory implements \Stringable
|
|||||||
/**
|
/**
|
||||||
* Array of ActivityReason.
|
* Array of ActivityReason.
|
||||||
*
|
*
|
||||||
* @var Collection<int, ActivityReason>
|
* @var Collection<ActivityReason>
|
||||||
*/
|
*/
|
||||||
#[ORM\OneToMany(mappedBy: 'category', targetEntity: ActivityReason::class)]
|
#[ORM\OneToMany(targetEntity: ActivityReason::class, mappedBy: 'category')]
|
||||||
private Collection $reasons;
|
private Collection $reasons;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@@ -28,7 +28,7 @@ class ActivityReasonAggregator implements AggregatorInterface, ExportElementVali
|
|||||||
public function __construct(
|
public function __construct(
|
||||||
protected ActivityReasonCategoryRepository $activityReasonCategoryRepository,
|
protected ActivityReasonCategoryRepository $activityReasonCategoryRepository,
|
||||||
protected ActivityReasonRepository $activityReasonRepository,
|
protected ActivityReasonRepository $activityReasonRepository,
|
||||||
protected TranslatableStringHelper $translatableStringHelper,
|
protected TranslatableStringHelper $translatableStringHelper
|
||||||
) {}
|
) {}
|
||||||
|
|
||||||
public function addRole(): ?string
|
public function addRole(): ?string
|
||||||
|
@@ -26,7 +26,7 @@ class ActivityUsersJobAggregator implements AggregatorInterface
|
|||||||
|
|
||||||
public function __construct(
|
public function __construct(
|
||||||
private readonly UserJobRepositoryInterface $userJobRepository,
|
private readonly UserJobRepositoryInterface $userJobRepository,
|
||||||
private readonly TranslatableStringHelperInterface $translatableStringHelper,
|
private readonly TranslatableStringHelperInterface $translatableStringHelper
|
||||||
) {}
|
) {}
|
||||||
|
|
||||||
public function addRole(): ?string
|
public function addRole(): ?string
|
||||||
|
@@ -26,7 +26,7 @@ class ActivityUsersScopeAggregator implements AggregatorInterface
|
|||||||
|
|
||||||
public function __construct(
|
public function __construct(
|
||||||
private readonly ScopeRepositoryInterface $scopeRepository,
|
private readonly ScopeRepositoryInterface $scopeRepository,
|
||||||
private readonly TranslatableStringHelperInterface $translatableStringHelper,
|
private readonly TranslatableStringHelperInterface $translatableStringHelper
|
||||||
) {}
|
) {}
|
||||||
|
|
||||||
public function addRole(): ?string
|
public function addRole(): ?string
|
||||||
|
@@ -26,7 +26,7 @@ class CreatorJobAggregator implements AggregatorInterface
|
|||||||
|
|
||||||
public function __construct(
|
public function __construct(
|
||||||
private readonly UserJobRepositoryInterface $userJobRepository,
|
private readonly UserJobRepositoryInterface $userJobRepository,
|
||||||
private readonly TranslatableStringHelper $translatableStringHelper,
|
private readonly TranslatableStringHelper $translatableStringHelper
|
||||||
) {}
|
) {}
|
||||||
|
|
||||||
public function addRole(): ?string
|
public function addRole(): ?string
|
||||||
|
@@ -26,7 +26,7 @@ class CreatorScopeAggregator implements AggregatorInterface
|
|||||||
|
|
||||||
public function __construct(
|
public function __construct(
|
||||||
private readonly ScopeRepository $scopeRepository,
|
private readonly ScopeRepository $scopeRepository,
|
||||||
private readonly TranslatableStringHelper $translatableStringHelper,
|
private readonly TranslatableStringHelper $translatableStringHelper
|
||||||
) {}
|
) {}
|
||||||
|
|
||||||
public function addRole(): ?string
|
public function addRole(): ?string
|
||||||
|
@@ -42,7 +42,7 @@ class StatActivityDuration implements ExportInterface, GroupedExportInterface
|
|||||||
/**
|
/**
|
||||||
* The action for this report.
|
* The action for this report.
|
||||||
*/
|
*/
|
||||||
protected string $action = 'sum',
|
protected string $action = 'sum'
|
||||||
) {
|
) {
|
||||||
$this->filterStatsByCenters = $parameterBag->get('chill_main')['acl']['filter_stats_by_center'];
|
$this->filterStatsByCenters = $parameterBag->get('chill_main')['acl']['filter_stats_by_center'];
|
||||||
}
|
}
|
||||||
|
@@ -39,7 +39,7 @@ class ListActivityHelper
|
|||||||
private readonly TranslatorInterface $translator,
|
private readonly TranslatorInterface $translator,
|
||||||
private readonly TranslatableStringHelperInterface $translatableStringHelper,
|
private readonly TranslatableStringHelperInterface $translatableStringHelper,
|
||||||
private readonly TranslatableStringExportLabelHelper $translatableStringLabelHelper,
|
private readonly TranslatableStringExportLabelHelper $translatableStringLabelHelper,
|
||||||
private readonly UserHelper $userHelper,
|
private readonly UserHelper $userHelper
|
||||||
) {}
|
) {}
|
||||||
|
|
||||||
public function addSelect(QueryBuilder $qb): void
|
public function addSelect(QueryBuilder $qb): void
|
||||||
@@ -152,7 +152,7 @@ class ListActivityHelper
|
|||||||
return '';
|
return '';
|
||||||
}
|
}
|
||||||
|
|
||||||
return $this->translator->trans((string) $value);
|
return $this->translator->trans($value);
|
||||||
},
|
},
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
@@ -73,7 +73,7 @@ final readonly class PeriodHavingActivityBetweenDatesFilter implements FilterInt
|
|||||||
|
|
||||||
$qb->andWhere(
|
$qb->andWhere(
|
||||||
$qb->expr()->exists(
|
$qb->expr()->exists(
|
||||||
'SELECT 1 FROM '.Activity::class." {$alias} WHERE {$alias}.date >= :{$from} AND {$alias}.date < :{$to} AND {$alias}.accompanyingPeriod = activity.accompanyingPeriod"
|
'SELECT 1 FROM '.Activity::class." {$alias} WHERE {$alias}.date >= :{$from} AND {$alias}.date < :{$to} AND {$alias}.accompanyingPeriod = acp"
|
||||||
)
|
)
|
||||||
);
|
);
|
||||||
|
|
||||||
|
@@ -25,7 +25,7 @@ final readonly class ActivityPresenceFilter implements FilterInterface
|
|||||||
{
|
{
|
||||||
public function __construct(
|
public function __construct(
|
||||||
private TranslatableStringHelperInterface $translatableStringHelper,
|
private TranslatableStringHelperInterface $translatableStringHelper,
|
||||||
private TranslatorInterface $translator,
|
private TranslatorInterface $translator
|
||||||
) {}
|
) {}
|
||||||
|
|
||||||
public function getTitle()
|
public function getTitle()
|
||||||
|
@@ -26,7 +26,7 @@ class ActivityTypeFilter implements ExportElementValidatedInterface, FilterInter
|
|||||||
{
|
{
|
||||||
public function __construct(
|
public function __construct(
|
||||||
protected TranslatableStringHelperInterface $translatableStringHelper,
|
protected TranslatableStringHelperInterface $translatableStringHelper,
|
||||||
protected ActivityTypeRepositoryInterface $activityTypeRepository,
|
protected ActivityTypeRepositoryInterface $activityTypeRepository
|
||||||
) {}
|
) {}
|
||||||
|
|
||||||
public function addRole(): ?string
|
public function addRole(): ?string
|
||||||
|
@@ -29,7 +29,7 @@ class UsersJobFilter implements FilterInterface
|
|||||||
|
|
||||||
public function __construct(
|
public function __construct(
|
||||||
private readonly TranslatableStringHelperInterface $translatableStringHelper,
|
private readonly TranslatableStringHelperInterface $translatableStringHelper,
|
||||||
private readonly UserJobRepositoryInterface $userJobRepository,
|
private readonly UserJobRepositoryInterface $userJobRepository
|
||||||
) {}
|
) {}
|
||||||
|
|
||||||
public function addRole(): ?string
|
public function addRole(): ?string
|
||||||
|
@@ -29,7 +29,7 @@ class UsersScopeFilter implements FilterInterface
|
|||||||
|
|
||||||
public function __construct(
|
public function __construct(
|
||||||
private readonly ScopeRepositoryInterface $scopeRepository,
|
private readonly ScopeRepositoryInterface $scopeRepository,
|
||||||
private readonly TranslatableStringHelperInterface $translatableStringHelper,
|
private readonly TranslatableStringHelperInterface $translatableStringHelper
|
||||||
) {}
|
) {}
|
||||||
|
|
||||||
public function addRole(): ?string
|
public function addRole(): ?string
|
||||||
|
@@ -59,7 +59,7 @@ class ActivityType extends AbstractType
|
|||||||
protected TranslatableStringHelper $translatableStringHelper,
|
protected TranslatableStringHelper $translatableStringHelper,
|
||||||
protected array $timeChoices,
|
protected array $timeChoices,
|
||||||
protected SocialIssueRender $socialIssueRender,
|
protected SocialIssueRender $socialIssueRender,
|
||||||
protected SocialActionRender $socialActionRender,
|
protected SocialActionRender $socialActionRender
|
||||||
) {
|
) {
|
||||||
if (!$tokenStorage->getToken()->getUser() instanceof User) {
|
if (!$tokenStorage->getToken()->getUser() instanceof User) {
|
||||||
throw new \RuntimeException('you should have a valid user');
|
throw new \RuntimeException('you should have a valid user');
|
||||||
|
@@ -27,7 +27,7 @@ class PickActivityReasonType extends AbstractType
|
|||||||
public function __construct(
|
public function __construct(
|
||||||
private readonly ActivityReasonRepository $activityReasonRepository,
|
private readonly ActivityReasonRepository $activityReasonRepository,
|
||||||
private readonly ActivityReasonRender $reasonRender,
|
private readonly ActivityReasonRender $reasonRender,
|
||||||
private readonly TranslatableStringHelperInterface $translatableStringHelper,
|
private readonly TranslatableStringHelperInterface $translatableStringHelper
|
||||||
) {}
|
) {}
|
||||||
|
|
||||||
public function configureOptions(OptionsResolver $resolver)
|
public function configureOptions(OptionsResolver $resolver)
|
||||||
|
@@ -32,7 +32,7 @@ final readonly class ActivityDocumentACLAwareRepository implements ActivityDocum
|
|||||||
private EntityManagerInterface $em,
|
private EntityManagerInterface $em,
|
||||||
private CenterResolverManagerInterface $centerResolverManager,
|
private CenterResolverManagerInterface $centerResolverManager,
|
||||||
private AuthorizationHelperForCurrentUserInterface $authorizationHelperForCurrentUser,
|
private AuthorizationHelperForCurrentUserInterface $authorizationHelperForCurrentUser,
|
||||||
private Security $security,
|
private Security $security
|
||||||
) {}
|
) {}
|
||||||
|
|
||||||
public function buildFetchQueryActivityDocumentLinkedToPersonFromPersonContext(Person $person, ?\DateTimeImmutable $startDate = null, ?\DateTimeImmutable $endDate = null, ?string $content = null): FetchQueryInterface
|
public function buildFetchQueryActivityDocumentLinkedToPersonFromPersonContext(Person $person, ?\DateTimeImmutable $startDate = null, ?\DateTimeImmutable $endDate = null, ?string $content = null): FetchQueryInterface
|
||||||
|
@@ -25,7 +25,7 @@ class ActivityReasonRepository extends ServiceEntityRepository
|
|||||||
{
|
{
|
||||||
public function __construct(
|
public function __construct(
|
||||||
ManagerRegistry $registry,
|
ManagerRegistry $registry,
|
||||||
private readonly RequestStack $requestStack,
|
private readonly RequestStack $requestStack
|
||||||
) {
|
) {
|
||||||
parent::__construct($registry, ActivityReason::class);
|
parent::__construct($registry, ActivityReason::class);
|
||||||
}
|
}
|
||||||
|
@@ -12,8 +12,6 @@ declare(strict_types=1);
|
|||||||
namespace Chill\ActivityBundle\Repository;
|
namespace Chill\ActivityBundle\Repository;
|
||||||
|
|
||||||
use Chill\ActivityBundle\Entity\Activity;
|
use Chill\ActivityBundle\Entity\Activity;
|
||||||
use Chill\DocStoreBundle\Entity\StoredObject;
|
|
||||||
use Chill\DocStoreBundle\Repository\AssociatedEntityToStoredObjectInterface;
|
|
||||||
use Chill\PersonBundle\Entity\AccompanyingPeriod;
|
use Chill\PersonBundle\Entity\AccompanyingPeriod;
|
||||||
use Chill\PersonBundle\Entity\Person;
|
use Chill\PersonBundle\Entity\Person;
|
||||||
use Doctrine\Bundle\DoctrineBundle\Repository\ServiceEntityRepository;
|
use Doctrine\Bundle\DoctrineBundle\Repository\ServiceEntityRepository;
|
||||||
@@ -25,7 +23,7 @@ use Doctrine\Persistence\ManagerRegistry;
|
|||||||
* @method Activity[] findAll()
|
* @method Activity[] findAll()
|
||||||
* @method Activity[] findBy(array $criteria, array $orderBy = null, $limit = null, $offset = null)
|
* @method Activity[] findBy(array $criteria, array $orderBy = null, $limit = null, $offset = null)
|
||||||
*/
|
*/
|
||||||
class ActivityRepository extends ServiceEntityRepository implements AssociatedEntityToStoredObjectInterface
|
class ActivityRepository extends ServiceEntityRepository
|
||||||
{
|
{
|
||||||
public function __construct(ManagerRegistry $registry)
|
public function __construct(ManagerRegistry $registry)
|
||||||
{
|
{
|
||||||
@@ -99,16 +97,4 @@ class ActivityRepository extends ServiceEntityRepository implements AssociatedEn
|
|||||||
|
|
||||||
return $qb->getQuery()->getResult();
|
return $qb->getQuery()->getResult();
|
||||||
}
|
}
|
||||||
|
|
||||||
public function findAssociatedEntityToStoredObject(StoredObject $storedObject): ?Activity
|
|
||||||
{
|
|
||||||
$qb = $this->createQueryBuilder('a');
|
|
||||||
$query = $qb
|
|
||||||
->leftJoin('a.documents', 'ad')
|
|
||||||
->where('ad.id = :storedObjectId')
|
|
||||||
->setParameter('storedObjectId', $storedObject->getId())
|
|
||||||
->getQuery();
|
|
||||||
|
|
||||||
return $query->getOneOrNullResult();
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
@@ -15,9 +15,9 @@ use Chill\ActivityBundle\Entity\ActivityType;
|
|||||||
use Doctrine\ORM\EntityManagerInterface;
|
use Doctrine\ORM\EntityManagerInterface;
|
||||||
use Doctrine\ORM\EntityRepository;
|
use Doctrine\ORM\EntityRepository;
|
||||||
|
|
||||||
final readonly class ActivityTypeRepository implements ActivityTypeRepositoryInterface
|
final class ActivityTypeRepository implements ActivityTypeRepositoryInterface
|
||||||
{
|
{
|
||||||
private EntityRepository $repository;
|
private readonly EntityRepository $repository;
|
||||||
|
|
||||||
public function __construct(EntityManagerInterface $em)
|
public function __construct(EntityManagerInterface $em)
|
||||||
{
|
{
|
||||||
|
@@ -87,6 +87,7 @@
|
|||||||
<li>
|
<li>
|
||||||
{% if bloc.type == 'user' %}
|
{% if bloc.type == 'user' %}
|
||||||
<span class="badge-user">
|
<span class="badge-user">
|
||||||
|
hello
|
||||||
{{ item|chill_entity_render_box({'render': 'raw', 'addAltNames': false, 'at_date': entity.date }) }}
|
{{ item|chill_entity_render_box({'render': 'raw', 'addAltNames': false, 'at_date': entity.date }) }}
|
||||||
</span>
|
</span>
|
||||||
{% else %}
|
{% else %}
|
||||||
|
@@ -1,54 +0,0 @@
|
|||||||
<?php
|
|
||||||
|
|
||||||
declare(strict_types=1);
|
|
||||||
|
|
||||||
/*
|
|
||||||
* 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.
|
|
||||||
*/
|
|
||||||
|
|
||||||
namespace Chill\ActivityBundle\Security\Authorization;
|
|
||||||
|
|
||||||
use Chill\ActivityBundle\Entity\Activity;
|
|
||||||
use Chill\ActivityBundle\Repository\ActivityRepository;
|
|
||||||
use Chill\DocStoreBundle\Repository\AssociatedEntityToStoredObjectInterface;
|
|
||||||
use Chill\DocStoreBundle\Security\Authorization\StoredObjectRoleEnum;
|
|
||||||
use Chill\DocStoreBundle\Security\Authorization\StoredObjectVoter\AbstractStoredObjectVoter;
|
|
||||||
use Chill\DocStoreBundle\Service\WorkflowStoredObjectPermissionHelper;
|
|
||||||
use Symfony\Component\Security\Core\Security;
|
|
||||||
|
|
||||||
class ActivityStoredObjectVoter extends AbstractStoredObjectVoter
|
|
||||||
{
|
|
||||||
public function __construct(
|
|
||||||
private readonly ActivityRepository $repository,
|
|
||||||
Security $security,
|
|
||||||
WorkflowStoredObjectPermissionHelper $workflowDocumentService,
|
|
||||||
) {
|
|
||||||
parent::__construct($security, $workflowDocumentService);
|
|
||||||
}
|
|
||||||
|
|
||||||
protected function getRepository(): AssociatedEntityToStoredObjectInterface
|
|
||||||
{
|
|
||||||
return $this->repository;
|
|
||||||
}
|
|
||||||
|
|
||||||
protected function getClass(): string
|
|
||||||
{
|
|
||||||
return Activity::class;
|
|
||||||
}
|
|
||||||
|
|
||||||
protected function attributeToRole(StoredObjectRoleEnum $attribute): string
|
|
||||||
{
|
|
||||||
return match ($attribute) {
|
|
||||||
StoredObjectRoleEnum::EDIT => ActivityVoter::UPDATE,
|
|
||||||
StoredObjectRoleEnum::SEE => ActivityVoter::SEE_DETAILS,
|
|
||||||
};
|
|
||||||
}
|
|
||||||
|
|
||||||
protected function canBeAssociatedWithWorkflow(): bool
|
|
||||||
{
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
}
|
|
@@ -75,7 +75,7 @@ class ActivityVoter extends AbstractChillVoter implements ProvideRoleHierarchyIn
|
|||||||
|
|
||||||
public function __construct(
|
public function __construct(
|
||||||
protected Security $security,
|
protected Security $security,
|
||||||
VoterHelperFactoryInterface $voterHelperFactory,
|
VoterHelperFactoryInterface $voterHelperFactory
|
||||||
) {
|
) {
|
||||||
$this->voterHelper = $voterHelperFactory->generate(self::class)
|
$this->voterHelper = $voterHelperFactory->generate(self::class)
|
||||||
->addCheckFor(Person::class, [self::SEE, self::CREATE])
|
->addCheckFor(Person::class, [self::SEE, self::CREATE])
|
||||||
|
@@ -50,7 +50,7 @@ class ActivityContext implements
|
|||||||
private readonly TranslatorInterface $translator,
|
private readonly TranslatorInterface $translator,
|
||||||
private readonly BaseContextData $baseContextData,
|
private readonly BaseContextData $baseContextData,
|
||||||
private readonly ThirdPartyRender $thirdPartyRender,
|
private readonly ThirdPartyRender $thirdPartyRender,
|
||||||
private readonly ThirdPartyRepository $thirdPartyRepository,
|
private readonly ThirdPartyRepository $thirdPartyRepository
|
||||||
) {}
|
) {}
|
||||||
|
|
||||||
public function adminFormReverseTransform(array $data): array
|
public function adminFormReverseTransform(array $data): array
|
||||||
|
@@ -56,7 +56,7 @@ class ListActivitiesByAccompanyingPeriodContext implements
|
|||||||
private readonly SocialIssueRepository $socialIssueRepository,
|
private readonly SocialIssueRepository $socialIssueRepository,
|
||||||
private readonly ThirdPartyRepository $thirdPartyRepository,
|
private readonly ThirdPartyRepository $thirdPartyRepository,
|
||||||
private readonly TranslatableStringHelperInterface $translatableStringHelper,
|
private readonly TranslatableStringHelperInterface $translatableStringHelper,
|
||||||
private readonly UserRepository $userRepository,
|
private readonly UserRepository $userRepository
|
||||||
) {}
|
) {}
|
||||||
|
|
||||||
public function adminFormReverseTransform(array $data): array
|
public function adminFormReverseTransform(array $data): array
|
||||||
|
@@ -76,7 +76,7 @@ final class TranslatableActivityReasonTest extends TypeTestCase
|
|||||||
*/
|
*/
|
||||||
protected function getTranslatableStringHelper(
|
protected function getTranslatableStringHelper(
|
||||||
$locale = 'en',
|
$locale = 'en',
|
||||||
$fallbackLocale = 'en',
|
$fallbackLocale = 'en'
|
||||||
) {
|
) {
|
||||||
$prophet = new \Prophecy\Prophet();
|
$prophet = new \Prophecy\Prophet();
|
||||||
$requestStack = $prophet->prophesize();
|
$requestStack = $prophet->prophesize();
|
||||||
|
@@ -138,7 +138,7 @@ final class ActivityVoterTest extends KernelTestCase
|
|||||||
Scope $scope,
|
Scope $scope,
|
||||||
Center $center,
|
Center $center,
|
||||||
$attribute,
|
$attribute,
|
||||||
$message,
|
$message
|
||||||
) {
|
) {
|
||||||
$token = $this->prepareToken($user);
|
$token = $this->prepareToken($user);
|
||||||
$activity = $this->prepareActivity($scope, $this->preparePerson($center));
|
$activity = $this->prepareActivity($scope, $this->preparePerson($center));
|
||||||
|
@@ -32,7 +32,7 @@ class TimelineActivityProvider implements TimelineProviderInterface
|
|||||||
protected EntityManagerInterface $em,
|
protected EntityManagerInterface $em,
|
||||||
protected AuthorizationHelperInterface $helper,
|
protected AuthorizationHelperInterface $helper,
|
||||||
TokenStorageInterface $storage,
|
TokenStorageInterface $storage,
|
||||||
protected ActivityACLAwareRepository $aclAwareRepository,
|
protected ActivityACLAwareRepository $aclAwareRepository
|
||||||
) {
|
) {
|
||||||
if (!$storage->getToken()->getUser() instanceof User) {
|
if (!$storage->getToken()->getUser() instanceof User) {
|
||||||
throw new \RuntimeException('A user should be authenticated !');
|
throw new \RuntimeException('A user should be authenticated !');
|
||||||
|
@@ -25,7 +25,7 @@ final class AsideActivityController extends CRUDController
|
|||||||
{
|
{
|
||||||
public function __construct(
|
public function __construct(
|
||||||
private readonly AsideActivityCategoryRepository $categoryRepository,
|
private readonly AsideActivityCategoryRepository $categoryRepository,
|
||||||
private readonly Security $security,
|
private readonly Security $security
|
||||||
) {}
|
) {}
|
||||||
|
|
||||||
public function createEntity(string $action, Request $request): object
|
public function createEntity(string $action, Request $request): object
|
||||||
@@ -76,7 +76,7 @@ final class AsideActivityController extends CRUDController
|
|||||||
string $action,
|
string $action,
|
||||||
$query,
|
$query,
|
||||||
Request $request,
|
Request $request,
|
||||||
PaginatorInterface $paginator,
|
PaginatorInterface $paginator
|
||||||
) {
|
) {
|
||||||
if ('index' === $action) {
|
if ('index' === $action) {
|
||||||
return $query->orderBy('e.date', 'DESC');
|
return $query->orderBy('e.date', 'DESC');
|
||||||
|
@@ -22,9 +22,9 @@ use Symfony\Component\Validator\Context\ExecutionContextInterface;
|
|||||||
class AsideActivityCategory
|
class AsideActivityCategory
|
||||||
{
|
{
|
||||||
/**
|
/**
|
||||||
* @var Collection<int, AsideActivityCategory>
|
* @var Collection<AsideActivityCategory>
|
||||||
*/
|
*/
|
||||||
#[ORM\OneToMany(mappedBy: 'parent', targetEntity: AsideActivityCategory::class)]
|
#[ORM\OneToMany(targetEntity: AsideActivityCategory::class, mappedBy: 'parent')]
|
||||||
private Collection $children;
|
private Collection $children;
|
||||||
|
|
||||||
#[ORM\Id]
|
#[ORM\Id]
|
||||||
|
@@ -22,7 +22,7 @@ class ByActivityTypeAggregator implements AggregatorInterface
|
|||||||
{
|
{
|
||||||
public function __construct(
|
public function __construct(
|
||||||
private readonly AsideActivityCategoryRepository $asideActivityCategoryRepository,
|
private readonly AsideActivityCategoryRepository $asideActivityCategoryRepository,
|
||||||
private readonly TranslatableStringHelper $translatableStringHelper,
|
private readonly TranslatableStringHelper $translatableStringHelper
|
||||||
) {}
|
) {}
|
||||||
|
|
||||||
public function addRole(): ?string
|
public function addRole(): ?string
|
||||||
|
@@ -26,7 +26,7 @@ class ByUserJobAggregator implements AggregatorInterface
|
|||||||
|
|
||||||
public function __construct(
|
public function __construct(
|
||||||
private readonly UserJobRepositoryInterface $userJobRepository,
|
private readonly UserJobRepositoryInterface $userJobRepository,
|
||||||
private readonly TranslatableStringHelperInterface $translatableStringHelper,
|
private readonly TranslatableStringHelperInterface $translatableStringHelper
|
||||||
) {}
|
) {}
|
||||||
|
|
||||||
public function addRole(): ?string
|
public function addRole(): ?string
|
||||||
|
@@ -26,7 +26,7 @@ class ByUserScopeAggregator implements AggregatorInterface
|
|||||||
|
|
||||||
public function __construct(
|
public function __construct(
|
||||||
private readonly ScopeRepositoryInterface $scopeRepository,
|
private readonly ScopeRepositoryInterface $scopeRepository,
|
||||||
private readonly TranslatableStringHelperInterface $translatableStringHelper,
|
private readonly TranslatableStringHelperInterface $translatableStringHelper
|
||||||
) {}
|
) {}
|
||||||
|
|
||||||
public function addRole(): ?string
|
public function addRole(): ?string
|
||||||
|
@@ -41,7 +41,7 @@ final readonly class ListAsideActivity implements ListInterface, GroupedExportIn
|
|||||||
private AsideActivityCategoryRepository $asideActivityCategoryRepository,
|
private AsideActivityCategoryRepository $asideActivityCategoryRepository,
|
||||||
private CategoryRender $categoryRender,
|
private CategoryRender $categoryRender,
|
||||||
private LocationRepository $locationRepository,
|
private LocationRepository $locationRepository,
|
||||||
private TranslatableStringHelperInterface $translatableStringHelper,
|
private TranslatableStringHelperInterface $translatableStringHelper
|
||||||
) {}
|
) {}
|
||||||
|
|
||||||
public function buildForm(FormBuilderInterface $builder) {}
|
public function buildForm(FormBuilderInterface $builder) {}
|
||||||
|
@@ -27,7 +27,7 @@ class ByActivityTypeFilter implements FilterInterface
|
|||||||
public function __construct(
|
public function __construct(
|
||||||
private readonly CategoryRender $categoryRender,
|
private readonly CategoryRender $categoryRender,
|
||||||
private readonly TranslatableStringHelperInterface $translatableStringHelper,
|
private readonly TranslatableStringHelperInterface $translatableStringHelper,
|
||||||
private readonly AsideActivityCategoryRepository $asideActivityTypeRepository,
|
private readonly AsideActivityCategoryRepository $asideActivityTypeRepository
|
||||||
) {}
|
) {}
|
||||||
|
|
||||||
public function addRole(): ?string
|
public function addRole(): ?string
|
||||||
|
@@ -24,7 +24,7 @@ use Symfony\Component\Security\Core\Security;
|
|||||||
final readonly class ByLocationFilter implements FilterInterface
|
final readonly class ByLocationFilter implements FilterInterface
|
||||||
{
|
{
|
||||||
public function __construct(
|
public function __construct(
|
||||||
private Security $security,
|
private Security $security
|
||||||
) {}
|
) {}
|
||||||
|
|
||||||
public function getTitle(): string
|
public function getTitle(): string
|
||||||
|
@@ -29,7 +29,7 @@ class ByUserJobFilter implements FilterInterface
|
|||||||
|
|
||||||
public function __construct(
|
public function __construct(
|
||||||
private readonly TranslatableStringHelperInterface $translatableStringHelper,
|
private readonly TranslatableStringHelperInterface $translatableStringHelper,
|
||||||
private readonly UserJobRepositoryInterface $userJobRepository,
|
private readonly UserJobRepositoryInterface $userJobRepository
|
||||||
) {}
|
) {}
|
||||||
|
|
||||||
public function addRole(): ?string
|
public function addRole(): ?string
|
||||||
|
@@ -29,7 +29,7 @@ class ByUserScopeFilter implements FilterInterface
|
|||||||
|
|
||||||
public function __construct(
|
public function __construct(
|
||||||
private readonly ScopeRepositoryInterface $scopeRepository,
|
private readonly ScopeRepositoryInterface $scopeRepository,
|
||||||
private readonly TranslatableStringHelperInterface $translatableStringHelper,
|
private readonly TranslatableStringHelperInterface $translatableStringHelper
|
||||||
) {}
|
) {}
|
||||||
|
|
||||||
public function addRole(): ?string
|
public function addRole(): ?string
|
||||||
|
@@ -44,7 +44,7 @@ class UserMenuBuilder implements LocalMenuBuilderInterface
|
|||||||
CountNotificationTask $counter,
|
CountNotificationTask $counter,
|
||||||
TokenStorageInterface $tokenStorage,
|
TokenStorageInterface $tokenStorage,
|
||||||
TranslatorInterface $translator,
|
TranslatorInterface $translator,
|
||||||
AuthorizationCheckerInterface $authorizationChecker,
|
AuthorizationCheckerInterface $authorizationChecker
|
||||||
) {
|
) {
|
||||||
$this->counter = $counter;
|
$this->counter = $counter;
|
||||||
$this->tokenStorage = $tokenStorage;
|
$this->tokenStorage = $tokenStorage;
|
||||||
|
@@ -26,7 +26,7 @@ class AsideActivityVoter extends AbstractChillVoter implements ProvideRoleHierar
|
|||||||
private readonly VoterHelperInterface $voterHelper;
|
private readonly VoterHelperInterface $voterHelper;
|
||||||
|
|
||||||
public function __construct(
|
public function __construct(
|
||||||
VoterHelperFactoryInterface $voterHelperFactory,
|
VoterHelperFactoryInterface $voterHelperFactory
|
||||||
) {
|
) {
|
||||||
$this->voterHelper = $voterHelperFactory
|
$this->voterHelper = $voterHelperFactory
|
||||||
->generate(self::class)
|
->generate(self::class)
|
||||||
|
@@ -54,7 +54,7 @@ abstract class AbstractElementController extends AbstractController
|
|||||||
$indexPage = 'chill_budget_elements_household_index';
|
$indexPage = 'chill_budget_elements_household_index';
|
||||||
}
|
}
|
||||||
|
|
||||||
if (Request::METHOD_POST === $request->getMethod()) {
|
if (Request::METHOD_DELETE === $request->getMethod()) {
|
||||||
$form->handleRequest($request);
|
$form->handleRequest($request);
|
||||||
|
|
||||||
if ($form->isSubmitted() && $form->isValid()) {
|
if ($form->isSubmitted() && $form->isValid()) {
|
||||||
@@ -198,9 +198,10 @@ abstract class AbstractElementController extends AbstractController
|
|||||||
/**
|
/**
|
||||||
* Creates a form to delete a help request entity by id.
|
* Creates a form to delete a help request entity by id.
|
||||||
*/
|
*/
|
||||||
private function createDeleteForm(): \Symfony\Component\Form\FormInterface
|
private function createDeleteForm(): Form
|
||||||
{
|
{
|
||||||
return $this->createFormBuilder()
|
return $this->createFormBuilder()
|
||||||
|
->setMethod(Request::METHOD_DELETE)
|
||||||
->add('submit', SubmitType::class, ['label' => 'Delete'])
|
->add('submit', SubmitType::class, ['label' => 'Delete'])
|
||||||
->getForm();
|
->getForm();
|
||||||
}
|
}
|
||||||
|
@@ -100,7 +100,7 @@ class Charge extends AbstractElement implements HasCentersInterface
|
|||||||
return $this;
|
return $this;
|
||||||
}
|
}
|
||||||
|
|
||||||
public function setHelp(?string $help)
|
public function setHelp($help)
|
||||||
{
|
{
|
||||||
$this->help = $help;
|
$this->help = $help;
|
||||||
|
|
||||||
|
@@ -15,9 +15,9 @@ use Chill\BudgetBundle\Entity\ChargeKind;
|
|||||||
use Doctrine\ORM\EntityManagerInterface;
|
use Doctrine\ORM\EntityManagerInterface;
|
||||||
use Doctrine\ORM\EntityRepository;
|
use Doctrine\ORM\EntityRepository;
|
||||||
|
|
||||||
final readonly class ChargeKindRepository implements ChargeKindRepositoryInterface
|
final class ChargeKindRepository implements ChargeKindRepositoryInterface
|
||||||
{
|
{
|
||||||
private EntityRepository $repository;
|
private readonly EntityRepository $repository;
|
||||||
|
|
||||||
public function __construct(EntityManagerInterface $entityManager)
|
public function __construct(EntityManagerInterface $entityManager)
|
||||||
{
|
{
|
||||||
|
@@ -15,9 +15,9 @@ use Chill\BudgetBundle\Entity\ResourceKind;
|
|||||||
use Doctrine\ORM\EntityManagerInterface;
|
use Doctrine\ORM\EntityManagerInterface;
|
||||||
use Doctrine\ORM\EntityRepository;
|
use Doctrine\ORM\EntityRepository;
|
||||||
|
|
||||||
final readonly class ResourceKindRepository implements ResourceKindRepositoryInterface
|
final class ResourceKindRepository implements ResourceKindRepositoryInterface
|
||||||
{
|
{
|
||||||
private EntityRepository $repository;
|
private readonly EntityRepository $repository;
|
||||||
|
|
||||||
public function __construct(EntityManagerInterface $entityManager)
|
public function __construct(EntityManagerInterface $entityManager)
|
||||||
{
|
{
|
||||||
|
@@ -47,7 +47,7 @@ class SendTestShortMessageOnCalendarCommand extends Command
|
|||||||
private readonly PhoneNumberHelperInterface $phoneNumberHelper,
|
private readonly PhoneNumberHelperInterface $phoneNumberHelper,
|
||||||
private readonly ShortMessageForCalendarBuilderInterface $messageForCalendarBuilder,
|
private readonly ShortMessageForCalendarBuilderInterface $messageForCalendarBuilder,
|
||||||
private readonly ShortMessageTransporterInterface $transporter,
|
private readonly ShortMessageTransporterInterface $transporter,
|
||||||
private readonly UserRepositoryInterface $userRepository,
|
private readonly UserRepositoryInterface $userRepository
|
||||||
) {
|
) {
|
||||||
parent::__construct('chill:calendar:test-send-short-message');
|
parent::__construct('chill:calendar:test-send-short-message');
|
||||||
}
|
}
|
||||||
|
@@ -59,7 +59,7 @@ class CalendarController extends AbstractController
|
|||||||
private readonly AccompanyingPeriodRepository $accompanyingPeriodRepository,
|
private readonly AccompanyingPeriodRepository $accompanyingPeriodRepository,
|
||||||
private readonly UserRepositoryInterface $userRepository,
|
private readonly UserRepositoryInterface $userRepository,
|
||||||
private readonly TranslatorInterface $translator,
|
private readonly TranslatorInterface $translator,
|
||||||
private readonly \Doctrine\Persistence\ManagerRegistry $managerRegistry,
|
private readonly \Doctrine\Persistence\ManagerRegistry $managerRegistry
|
||||||
) {}
|
) {}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -84,7 +84,7 @@ class CalendarController extends AbstractController
|
|||||||
|
|
||||||
$form = $this->createDeleteForm($entity);
|
$form = $this->createDeleteForm($entity);
|
||||||
|
|
||||||
if (Request::METHOD_POST === $request->getMethod()) {
|
if (Request::METHOD_DELETE === $request->getMethod()) {
|
||||||
$form->handleRequest($request);
|
$form->handleRequest($request);
|
||||||
|
|
||||||
if ($form->isValid()) {
|
if ($form->isValid()) {
|
||||||
@@ -512,6 +512,7 @@ class CalendarController extends AbstractController
|
|||||||
{
|
{
|
||||||
return $this->createFormBuilder()
|
return $this->createFormBuilder()
|
||||||
->setAction($this->generateUrl('chill_calendar_calendar_delete', ['id' => $calendar->getId()]))
|
->setAction($this->generateUrl('chill_calendar_calendar_delete', ['id' => $calendar->getId()]))
|
||||||
|
->setMethod('DELETE')
|
||||||
->add('submit', SubmitType::class, ['label' => 'Delete'])
|
->add('submit', SubmitType::class, ['label' => 'Delete'])
|
||||||
->getForm();
|
->getForm();
|
||||||
}
|
}
|
||||||
|
@@ -103,7 +103,7 @@ class Calendar implements TrackCreationInterface, TrackUpdateInterface, HasCente
|
|||||||
private int $dateTimeVersion = 0;
|
private int $dateTimeVersion = 0;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @var Collection<int, \Chill\CalendarBundle\Entity\CalendarDoc>
|
* @var Collection<CalendarDoc>
|
||||||
*/
|
*/
|
||||||
#[ORM\OneToMany(mappedBy: 'calendar', targetEntity: CalendarDoc::class, orphanRemoval: true)]
|
#[ORM\OneToMany(mappedBy: 'calendar', targetEntity: CalendarDoc::class, orphanRemoval: true)]
|
||||||
private Collection $documents;
|
private Collection $documents;
|
||||||
@@ -120,7 +120,7 @@ class Calendar implements TrackCreationInterface, TrackUpdateInterface, HasCente
|
|||||||
private ?int $id = null;
|
private ?int $id = null;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @var \Doctrine\Common\Collections\Collection<int, \Chill\CalendarBundle\Entity\Invite>&Selectable
|
* @var Collection&Selectable<int, Invite>
|
||||||
*/
|
*/
|
||||||
#[Serializer\Groups(['read', 'docgen:read'])]
|
#[Serializer\Groups(['read', 'docgen:read'])]
|
||||||
#[ORM\OneToMany(mappedBy: 'calendar', targetEntity: Invite::class, cascade: ['persist', 'remove', 'merge', 'detach'], orphanRemoval: true)]
|
#[ORM\OneToMany(mappedBy: 'calendar', targetEntity: Invite::class, cascade: ['persist', 'remove', 'merge', 'detach'], orphanRemoval: true)]
|
||||||
@@ -143,7 +143,7 @@ class Calendar implements TrackCreationInterface, TrackUpdateInterface, HasCente
|
|||||||
private ?Person $person = null;
|
private ?Person $person = null;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @var Collection<int, Person>
|
* @var Collection<Person>
|
||||||
*/
|
*/
|
||||||
#[Serializer\Groups(['calendar:read', 'read', 'calendar:light', 'docgen:read'])]
|
#[Serializer\Groups(['calendar:read', 'read', 'calendar:light', 'docgen:read'])]
|
||||||
#[Assert\Count(min: 1, minMessage: 'calendar.At least {{ limit }} person is required.')]
|
#[Assert\Count(min: 1, minMessage: 'calendar.At least {{ limit }} person is required.')]
|
||||||
@@ -157,7 +157,7 @@ class Calendar implements TrackCreationInterface, TrackUpdateInterface, HasCente
|
|||||||
private PrivateCommentEmbeddable $privateComment;
|
private PrivateCommentEmbeddable $privateComment;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @var Collection<int, ThirdParty>
|
* @var Collection<ThirdParty>
|
||||||
*/
|
*/
|
||||||
#[Serializer\Groups(['calendar:read', 'read', 'calendar:light', 'docgen:read'])]
|
#[Serializer\Groups(['calendar:read', 'read', 'calendar:light', 'docgen:read'])]
|
||||||
#[ORM\ManyToMany(targetEntity: ThirdParty::class)]
|
#[ORM\ManyToMany(targetEntity: ThirdParty::class)]
|
||||||
|
@@ -47,7 +47,7 @@ class CalendarDoc implements TrackCreationInterface, TrackUpdateInterface
|
|||||||
Calendar $calendar,
|
Calendar $calendar,
|
||||||
#[ORM\ManyToOne(targetEntity: StoredObject::class, cascade: ['persist'])]
|
#[ORM\ManyToOne(targetEntity: StoredObject::class, cascade: ['persist'])]
|
||||||
#[ORM\JoinColumn(nullable: false)]
|
#[ORM\JoinColumn(nullable: false)]
|
||||||
private ?StoredObject $storedObject,
|
private ?StoredObject $storedObject
|
||||||
) {
|
) {
|
||||||
$this->setCalendar($calendar);
|
$this->setCalendar($calendar);
|
||||||
$this->datetimeVersion = $calendar->getDateTimeVersion();
|
$this->datetimeVersion = $calendar->getDateTimeVersion();
|
||||||
|
@@ -26,7 +26,7 @@ final readonly class JobAggregator implements AggregatorInterface
|
|||||||
|
|
||||||
public function __construct(
|
public function __construct(
|
||||||
private UserJobRepository $jobRepository,
|
private UserJobRepository $jobRepository,
|
||||||
private TranslatableStringHelper $translatableStringHelper,
|
private TranslatableStringHelper $translatableStringHelper
|
||||||
) {}
|
) {}
|
||||||
|
|
||||||
public function addRole(): ?string
|
public function addRole(): ?string
|
||||||
|
@@ -26,7 +26,7 @@ final readonly class ScopeAggregator implements AggregatorInterface
|
|||||||
|
|
||||||
public function __construct(
|
public function __construct(
|
||||||
private ScopeRepository $scopeRepository,
|
private ScopeRepository $scopeRepository,
|
||||||
private TranslatableStringHelper $translatableStringHelper,
|
private TranslatableStringHelper $translatableStringHelper
|
||||||
) {}
|
) {}
|
||||||
|
|
||||||
public function addRole(): ?string
|
public function addRole(): ?string
|
||||||
|
@@ -28,7 +28,7 @@ final readonly class JobFilter implements FilterInterface
|
|||||||
|
|
||||||
public function __construct(
|
public function __construct(
|
||||||
private TranslatableStringHelper $translatableStringHelper,
|
private TranslatableStringHelper $translatableStringHelper,
|
||||||
private UserJobRepositoryInterface $userJobRepository,
|
private UserJobRepositoryInterface $userJobRepository
|
||||||
) {}
|
) {}
|
||||||
|
|
||||||
public function addRole(): ?string
|
public function addRole(): ?string
|
||||||
|
@@ -30,7 +30,7 @@ class ScopeFilter implements FilterInterface
|
|||||||
public function __construct(
|
public function __construct(
|
||||||
protected TranslatorInterface $translator,
|
protected TranslatorInterface $translator,
|
||||||
private readonly TranslatableStringHelper $translatableStringHelper,
|
private readonly TranslatableStringHelper $translatableStringHelper,
|
||||||
private readonly ScopeRepositoryInterface $scopeRepository,
|
private readonly ScopeRepositoryInterface $scopeRepository
|
||||||
) {}
|
) {}
|
||||||
|
|
||||||
public function addRole(): ?string
|
public function addRole(): ?string
|
||||||
|
@@ -37,7 +37,7 @@ class CalendarType extends AbstractType
|
|||||||
private readonly IdToUsersDataTransformer $idToUsersDataTransformer,
|
private readonly IdToUsersDataTransformer $idToUsersDataTransformer,
|
||||||
private readonly IdToLocationDataTransformer $idToLocationDataTransformer,
|
private readonly IdToLocationDataTransformer $idToLocationDataTransformer,
|
||||||
private readonly ThirdPartiesToIdDataTransformer $partiesToIdDataTransformer,
|
private readonly ThirdPartiesToIdDataTransformer $partiesToIdDataTransformer,
|
||||||
private readonly IdToCalendarRangeDataTransformer $calendarRangeDataTransformer,
|
private readonly IdToCalendarRangeDataTransformer $calendarRangeDataTransformer
|
||||||
) {}
|
) {}
|
||||||
|
|
||||||
public function buildForm(FormBuilderInterface $builder, array $options)
|
public function buildForm(FormBuilderInterface $builder, array $options)
|
||||||
|
@@ -46,7 +46,7 @@ class CalendarMessage
|
|||||||
public function __construct(
|
public function __construct(
|
||||||
Calendar $calendar,
|
Calendar $calendar,
|
||||||
private readonly string $action,
|
private readonly string $action,
|
||||||
User $byUser,
|
User $byUser
|
||||||
) {
|
) {
|
||||||
$this->calendarId = $calendar->getId();
|
$this->calendarId = $calendar->getId();
|
||||||
$this->byUserId = $byUser->getId();
|
$this->byUserId = $byUser->getId();
|
||||||
|
@@ -59,7 +59,7 @@ final readonly class MSUserAbsenceReader implements MSUserAbsenceReaderInterface
|
|||||||
'alwaysEnabled' => true,
|
'alwaysEnabled' => true,
|
||||||
'scheduled' => RemoteEventConverter::convertStringDateWithoutTimezone($automaticRepliesSettings['scheduledStartDateTime']['dateTime']) < $this->clock->now()
|
'scheduled' => RemoteEventConverter::convertStringDateWithoutTimezone($automaticRepliesSettings['scheduledStartDateTime']['dateTime']) < $this->clock->now()
|
||||||
&& RemoteEventConverter::convertStringDateWithoutTimezone($automaticRepliesSettings['scheduledEndDateTime']['dateTime']) > $this->clock->now(),
|
&& RemoteEventConverter::convertStringDateWithoutTimezone($automaticRepliesSettings['scheduledEndDateTime']['dateTime']) > $this->clock->now(),
|
||||||
default => throw new UserAbsenceSyncException('this status is not documented by Microsoft'),
|
default => throw new UserAbsenceSyncException('this status is not documented by Microsoft')
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@@ -177,7 +177,7 @@ class MapCalendarToUser
|
|||||||
User $user,
|
User $user,
|
||||||
int $expiration,
|
int $expiration,
|
||||||
?string $id = null,
|
?string $id = null,
|
||||||
?string $secret = null,
|
?string $secret = null
|
||||||
): void {
|
): void {
|
||||||
$user->setAttributeByDomain(self::METADATA_KEY, self::EXPIRATION_SUBSCRIPTION_EVENT, $expiration);
|
$user->setAttributeByDomain(self::METADATA_KEY, self::EXPIRATION_SUBSCRIPTION_EVENT, $expiration);
|
||||||
|
|
||||||
|
@@ -57,7 +57,7 @@ class RemoteEventConverter
|
|||||||
private readonly LocationConverter $locationConverter,
|
private readonly LocationConverter $locationConverter,
|
||||||
private readonly LoggerInterface $logger,
|
private readonly LoggerInterface $logger,
|
||||||
private readonly PersonRenderInterface $personRender,
|
private readonly PersonRenderInterface $personRender,
|
||||||
private readonly TranslatorInterface $translator,
|
private readonly TranslatorInterface $translator
|
||||||
) {
|
) {
|
||||||
$this->defaultDateTimeZone = (new \DateTimeImmutable())->getTimezone();
|
$this->defaultDateTimeZone = (new \DateTimeImmutable())->getTimezone();
|
||||||
$this->remoteDateTimeZone = self::getRemoteTimeZone();
|
$this->remoteDateTimeZone = self::getRemoteTimeZone();
|
||||||
|
@@ -351,7 +351,7 @@ class MSGraphRemoteCalendarConnector implements RemoteCalendarConnectorInterface
|
|||||||
[
|
[
|
||||||
'id' => $id,
|
'id' => $id,
|
||||||
'lastModifiedDateTime' => $lastModified,
|
'lastModifiedDateTime' => $lastModified,
|
||||||
'changeKey' => $changeKey,
|
'changeKey' => $changeKey
|
||||||
] = $this->createOnRemote($eventData, $calendar->getMainUser(), 'calendar_'.$calendar->getId());
|
] = $this->createOnRemote($eventData, $calendar->getMainUser(), 'calendar_'.$calendar->getId());
|
||||||
|
|
||||||
if (null === $id) {
|
if (null === $id) {
|
||||||
@@ -427,7 +427,7 @@ class MSGraphRemoteCalendarConnector implements RemoteCalendarConnectorInterface
|
|||||||
[
|
[
|
||||||
'id' => $id,
|
'id' => $id,
|
||||||
'lastModifiedDateTime' => $lastModified,
|
'lastModifiedDateTime' => $lastModified,
|
||||||
'changeKey' => $changeKey,
|
'changeKey' => $changeKey
|
||||||
] = $this->createOnRemote(
|
] = $this->createOnRemote(
|
||||||
$eventData,
|
$eventData,
|
||||||
$calendarRange->getUser(),
|
$calendarRange->getUser(),
|
||||||
@@ -564,7 +564,7 @@ class MSGraphRemoteCalendarConnector implements RemoteCalendarConnectorInterface
|
|||||||
[
|
[
|
||||||
'id' => $id,
|
'id' => $id,
|
||||||
'lastModifiedDateTime' => $lastModified,
|
'lastModifiedDateTime' => $lastModified,
|
||||||
'changeKey' => $changeKey,
|
'changeKey' => $changeKey
|
||||||
] = $this->patchOnRemote(
|
] = $this->patchOnRemote(
|
||||||
$calendar->getRemoteId(),
|
$calendar->getRemoteId(),
|
||||||
$eventData,
|
$eventData,
|
||||||
|
@@ -33,6 +33,6 @@ class RemoteEvent
|
|||||||
#[Serializer\Groups(['read'])]
|
#[Serializer\Groups(['read'])]
|
||||||
public \DateTimeImmutable $endDate,
|
public \DateTimeImmutable $endDate,
|
||||||
#[Serializer\Groups(['read'])]
|
#[Serializer\Groups(['read'])]
|
||||||
public bool $isAllDay = false,
|
public bool $isAllDay = false
|
||||||
) {}
|
) {}
|
||||||
}
|
}
|
||||||
|
@@ -65,7 +65,7 @@ class CalendarRangeRepository implements ObjectRepository
|
|||||||
\DateTimeImmutable $from,
|
\DateTimeImmutable $from,
|
||||||
\DateTimeImmutable $to,
|
\DateTimeImmutable $to,
|
||||||
?int $limit = null,
|
?int $limit = null,
|
||||||
?int $offset = null,
|
?int $offset = null
|
||||||
): array {
|
): array {
|
||||||
$qb = $this->buildQueryAvailableRangesForUser($user, $from, $to);
|
$qb = $this->buildQueryAvailableRangesForUser($user, $from, $to);
|
||||||
|
|
||||||
|
@@ -40,7 +40,7 @@ final readonly class CalendarContext implements CalendarContextInterface
|
|||||||
private PersonRepository $personRepository,
|
private PersonRepository $personRepository,
|
||||||
private ThirdPartyRender $thirdPartyRender,
|
private ThirdPartyRender $thirdPartyRender,
|
||||||
private ThirdPartyRepository $thirdPartyRepository,
|
private ThirdPartyRepository $thirdPartyRepository,
|
||||||
private TranslatableStringHelperInterface $translatableStringHelper,
|
private TranslatableStringHelperInterface $translatableStringHelper
|
||||||
) {}
|
) {}
|
||||||
|
|
||||||
public function adminFormReverseTransform(array $data): array
|
public function adminFormReverseTransform(array $data): array
|
||||||
|
@@ -37,7 +37,7 @@ final readonly class AccompanyingPeriodCalendarGenericDocProvider implements Gen
|
|||||||
|
|
||||||
public function __construct(
|
public function __construct(
|
||||||
private Security $security,
|
private Security $security,
|
||||||
private EntityManagerInterface $em,
|
private EntityManagerInterface $em
|
||||||
) {}
|
) {}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@@ -36,7 +36,7 @@ final readonly class PersonCalendarGenericDocProvider implements GenericDocForPe
|
|||||||
|
|
||||||
public function __construct(
|
public function __construct(
|
||||||
private Security $security,
|
private Security $security,
|
||||||
private EntityManagerInterface $em,
|
private EntityManagerInterface $em
|
||||||
) {}
|
) {}
|
||||||
|
|
||||||
private function addWhereClausesToQuery(FetchQuery $query, ?\DateTimeImmutable $startDate = null, ?\DateTimeImmutable $endDate = null, ?string $content = null): FetchQuery
|
private function addWhereClausesToQuery(FetchQuery $query, ?\DateTimeImmutable $startDate = null, ?\DateTimeImmutable $endDate = null, ?string $content = null): FetchQuery
|
||||||
|
@@ -156,7 +156,7 @@ final class CalendarTypeTest extends TypeTestCase
|
|||||||
|
|
||||||
private function buildMultiToIdDataTransformer(
|
private function buildMultiToIdDataTransformer(
|
||||||
string $classTransformer,
|
string $classTransformer,
|
||||||
string $objClass,
|
string $objClass
|
||||||
) {
|
) {
|
||||||
$transformer = $this->prophesize($classTransformer);
|
$transformer = $this->prophesize($classTransformer);
|
||||||
$transformer->transform(Argument::type('array'))
|
$transformer->transform(Argument::type('array'))
|
||||||
@@ -195,7 +195,7 @@ final class CalendarTypeTest extends TypeTestCase
|
|||||||
|
|
||||||
private function buildSingleToIdDataTransformer(
|
private function buildSingleToIdDataTransformer(
|
||||||
string $classTransformer,
|
string $classTransformer,
|
||||||
string $class,
|
string $class
|
||||||
) {
|
) {
|
||||||
$transformer = $this->prophesize($classTransformer);
|
$transformer = $this->prophesize($classTransformer);
|
||||||
$transformer->transform(Argument::type('object'))
|
$transformer->transform(Argument::type('object'))
|
||||||
|
@@ -47,7 +47,7 @@ final class CalendarContextTest extends TestCase
|
|||||||
{
|
{
|
||||||
$expected =
|
$expected =
|
||||||
[
|
[
|
||||||
'trackDatetime' => true,
|
'track_datetime' => true,
|
||||||
'askMainPerson' => true,
|
'askMainPerson' => true,
|
||||||
'mainPersonLabel' => 'docgen.calendar.Destinee',
|
'mainPersonLabel' => 'docgen.calendar.Destinee',
|
||||||
'askThirdParty' => false,
|
'askThirdParty' => false,
|
||||||
@@ -61,7 +61,7 @@ final class CalendarContextTest extends TestCase
|
|||||||
{
|
{
|
||||||
$expected =
|
$expected =
|
||||||
[
|
[
|
||||||
'trackDatetime' => true,
|
'track_datetime' => true,
|
||||||
'askMainPerson' => true,
|
'askMainPerson' => true,
|
||||||
'mainPersonLabel' => 'docgen.calendar.Destinee',
|
'mainPersonLabel' => 'docgen.calendar.Destinee',
|
||||||
'askThirdParty' => false,
|
'askThirdParty' => false,
|
||||||
@@ -203,7 +203,7 @@ final class CalendarContextTest extends TestCase
|
|||||||
|
|
||||||
private function buildCalendarContext(
|
private function buildCalendarContext(
|
||||||
?EntityManagerInterface $entityManager = null,
|
?EntityManagerInterface $entityManager = null,
|
||||||
?NormalizerInterface $normalizer = null,
|
?NormalizerInterface $normalizer = null
|
||||||
): CalendarContext {
|
): CalendarContext {
|
||||||
$baseContext = $this->prophesize(BaseContextData::class);
|
$baseContext = $this->prophesize(BaseContextData::class);
|
||||||
$baseContext->getData(null)->willReturn(['base_context' => 'data']);
|
$baseContext->getData(null)->willReturn(['base_context' => 'data']);
|
||||||
|
@@ -44,7 +44,7 @@ class CreateFieldsOnGroupCommand extends Command
|
|||||||
private readonly EntityManager $entityManager,
|
private readonly EntityManager $entityManager,
|
||||||
private readonly ValidatorInterface $validator,
|
private readonly ValidatorInterface $validator,
|
||||||
private $availableLanguages,
|
private $availableLanguages,
|
||||||
private $customizablesEntities,
|
private $customizablesEntities
|
||||||
) {
|
) {
|
||||||
parent::__construct();
|
parent::__construct();
|
||||||
}
|
}
|
||||||
|
@@ -39,7 +39,7 @@ class CustomFieldsGroupController extends AbstractController
|
|||||||
public function __construct(
|
public function __construct(
|
||||||
private readonly CustomFieldProvider $customFieldProvider,
|
private readonly CustomFieldProvider $customFieldProvider,
|
||||||
private readonly TranslatorInterface $translator,
|
private readonly TranslatorInterface $translator,
|
||||||
private readonly \Doctrine\Persistence\ManagerRegistry $managerRegistry,
|
private readonly \Doctrine\Persistence\ManagerRegistry $managerRegistry
|
||||||
) {}
|
) {}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@@ -42,7 +42,7 @@ class CustomFieldChoice extends AbstractCustomField
|
|||||||
/**
|
/**
|
||||||
* @var TranslatableStringHelper Helper that find the string in current locale from an array of translation
|
* @var TranslatableStringHelper Helper that find the string in current locale from an array of translation
|
||||||
*/
|
*/
|
||||||
private readonly TranslatableStringHelper $translatableStringHelper,
|
private readonly TranslatableStringHelper $translatableStringHelper
|
||||||
) {}
|
) {}
|
||||||
|
|
||||||
public function allowOtherChoice(CustomField $cf)
|
public function allowOtherChoice(CustomField $cf)
|
||||||
|
@@ -44,7 +44,7 @@ class CustomFieldDate extends AbstractCustomField
|
|||||||
|
|
||||||
public function __construct(
|
public function __construct(
|
||||||
private readonly Environment $templating,
|
private readonly Environment $templating,
|
||||||
private readonly TranslatableStringHelper $translatableStringHelper,
|
private readonly TranslatableStringHelper $translatableStringHelper
|
||||||
) {}
|
) {}
|
||||||
|
|
||||||
public function buildForm(FormBuilderInterface $builder, CustomField $customField)
|
public function buildForm(FormBuilderInterface $builder, CustomField $customField)
|
||||||
|
@@ -41,7 +41,7 @@ class CustomFieldNumber extends AbstractCustomField
|
|||||||
|
|
||||||
public function __construct(
|
public function __construct(
|
||||||
private readonly Environment $templating,
|
private readonly Environment $templating,
|
||||||
private readonly TranslatableStringHelper $translatableStringHelper,
|
private readonly TranslatableStringHelper $translatableStringHelper
|
||||||
) {}
|
) {}
|
||||||
|
|
||||||
public function buildForm(FormBuilderInterface $builder, CustomField $customField)
|
public function buildForm(FormBuilderInterface $builder, CustomField $customField)
|
||||||
|
@@ -28,7 +28,7 @@ class CustomFieldText extends AbstractCustomField
|
|||||||
|
|
||||||
public function __construct(
|
public function __construct(
|
||||||
private readonly Environment $templating,
|
private readonly Environment $templating,
|
||||||
private readonly TranslatableStringHelper $translatableStringHelper,
|
private readonly TranslatableStringHelper $translatableStringHelper
|
||||||
) {}
|
) {}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@@ -31,7 +31,7 @@ class CustomFieldTitle extends AbstractCustomField
|
|||||||
/**
|
/**
|
||||||
* @var TranslatableStringHelper Helper that find the string in current locale from an array of translation
|
* @var TranslatableStringHelper Helper that find the string in current locale from an array of translation
|
||||||
*/
|
*/
|
||||||
private readonly TranslatableStringHelper $translatableStringHelper,
|
private readonly TranslatableStringHelper $translatableStringHelper
|
||||||
) {}
|
) {}
|
||||||
|
|
||||||
public function buildForm(FormBuilderInterface $builder, CustomField $customField)
|
public function buildForm(FormBuilderInterface $builder, CustomField $customField)
|
||||||
|
@@ -172,9 +172,11 @@ class CustomField
|
|||||||
/**
|
/**
|
||||||
* Set active.
|
* Set active.
|
||||||
*
|
*
|
||||||
|
* @param bool $active
|
||||||
|
*
|
||||||
* @return CustomField
|
* @return CustomField
|
||||||
*/
|
*/
|
||||||
public function setActive(bool $active)
|
public function setActive($active)
|
||||||
{
|
{
|
||||||
$this->active = $active;
|
$this->active = $active;
|
||||||
|
|
||||||
@@ -222,16 +224,18 @@ class CustomField
|
|||||||
/**
|
/**
|
||||||
* Set order.
|
* Set order.
|
||||||
*
|
*
|
||||||
|
* @param float $order
|
||||||
|
*
|
||||||
* @return CustomField
|
* @return CustomField
|
||||||
*/
|
*/
|
||||||
public function setOrdering(?float $order)
|
public function setOrdering($order)
|
||||||
{
|
{
|
||||||
$this->ordering = $order;
|
$this->ordering = $order;
|
||||||
|
|
||||||
return $this;
|
return $this;
|
||||||
}
|
}
|
||||||
|
|
||||||
public function setRequired(bool $required)
|
public function setRequired($required)
|
||||||
{
|
{
|
||||||
$this->required = $required;
|
$this->required = $required;
|
||||||
|
|
||||||
@@ -241,7 +245,7 @@ class CustomField
|
|||||||
/**
|
/**
|
||||||
* @return $this
|
* @return $this
|
||||||
*/
|
*/
|
||||||
public function setSlug(?string $slug)
|
public function setSlug($slug)
|
||||||
{
|
{
|
||||||
$this->slug = $slug;
|
$this->slug = $slug;
|
||||||
|
|
||||||
@@ -251,9 +255,11 @@ class CustomField
|
|||||||
/**
|
/**
|
||||||
* Set type.
|
* Set type.
|
||||||
*
|
*
|
||||||
|
* @param string $type
|
||||||
|
*
|
||||||
* @return CustomField
|
* @return CustomField
|
||||||
*/
|
*/
|
||||||
public function setType(?string $type)
|
public function setType($type)
|
||||||
{
|
{
|
||||||
$this->type = $type;
|
$this->type = $type;
|
||||||
|
|
||||||
|
@@ -23,9 +23,9 @@ class Option
|
|||||||
private bool $active = true;
|
private bool $active = true;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @var Collection<int, Option>
|
* @var Collection<Option>
|
||||||
*/
|
*/
|
||||||
#[ORM\OneToMany(mappedBy: 'parent', targetEntity: Option::class)]
|
#[ORM\OneToMany(targetEntity: Option::class, mappedBy: 'parent')]
|
||||||
private Collection $children;
|
private Collection $children;
|
||||||
|
|
||||||
#[ORM\Id]
|
#[ORM\Id]
|
||||||
@@ -129,7 +129,7 @@ class Option
|
|||||||
/**
|
/**
|
||||||
* @return $this
|
* @return $this
|
||||||
*/
|
*/
|
||||||
public function setActive(bool $active)
|
public function setActive($active)
|
||||||
{
|
{
|
||||||
$this->active = $active;
|
$this->active = $active;
|
||||||
|
|
||||||
@@ -139,7 +139,7 @@ class Option
|
|||||||
/**
|
/**
|
||||||
* @return $this
|
* @return $this
|
||||||
*/
|
*/
|
||||||
public function setInternalKey(string $internal_key)
|
public function setInternalKey($internal_key)
|
||||||
{
|
{
|
||||||
$this->internalKey = $internal_key;
|
$this->internalKey = $internal_key;
|
||||||
|
|
||||||
@@ -149,7 +149,7 @@ class Option
|
|||||||
/**
|
/**
|
||||||
* @return $this
|
* @return $this
|
||||||
*/
|
*/
|
||||||
public function setKey(?string $key)
|
public function setKey($key)
|
||||||
{
|
{
|
||||||
$this->key = $key;
|
$this->key = $key;
|
||||||
|
|
||||||
|
@@ -69,7 +69,7 @@ class CustomFieldsDefaultGroup
|
|||||||
*
|
*
|
||||||
* @return CustomFieldsDefaultGroup
|
* @return CustomFieldsDefaultGroup
|
||||||
*/
|
*/
|
||||||
public function setCustomFieldsGroup(?CustomFieldsGroup $customFieldsGroup)
|
public function setCustomFieldsGroup($customFieldsGroup)
|
||||||
{
|
{
|
||||||
$this->customFieldsGroup = $customFieldsGroup;
|
$this->customFieldsGroup = $customFieldsGroup;
|
||||||
|
|
||||||
@@ -79,9 +79,11 @@ class CustomFieldsDefaultGroup
|
|||||||
/**
|
/**
|
||||||
* Set entity.
|
* Set entity.
|
||||||
*
|
*
|
||||||
|
* @param string $entity
|
||||||
|
*
|
||||||
* @return CustomFieldsDefaultGroup
|
* @return CustomFieldsDefaultGroup
|
||||||
*/
|
*/
|
||||||
public function setEntity(?string $entity)
|
public function setEntity($entity)
|
||||||
{
|
{
|
||||||
$this->entity = $entity;
|
$this->entity = $entity;
|
||||||
|
|
||||||
|
@@ -32,9 +32,9 @@ class CustomFieldsGroup
|
|||||||
* The custom fields of the group.
|
* The custom fields of the group.
|
||||||
* The custom fields are asc-ordered regarding to their property "ordering".
|
* The custom fields are asc-ordered regarding to their property "ordering".
|
||||||
*
|
*
|
||||||
* @var Collection<int, CustomField>
|
* @var Collection<CustomField>
|
||||||
*/
|
*/
|
||||||
#[ORM\OneToMany(mappedBy: 'customFieldGroup', targetEntity: CustomField::class)]
|
#[ORM\OneToMany(targetEntity: CustomField::class, mappedBy: 'customFieldGroup')]
|
||||||
#[ORM\OrderBy(['ordering' => \Doctrine\Common\Collections\Criteria::ASC])]
|
#[ORM\OrderBy(['ordering' => \Doctrine\Common\Collections\Criteria::ASC])]
|
||||||
private Collection $customFields;
|
private Collection $customFields;
|
||||||
|
|
||||||
@@ -165,9 +165,11 @@ class CustomFieldsGroup
|
|||||||
/**
|
/**
|
||||||
* Set entity.
|
* Set entity.
|
||||||
*
|
*
|
||||||
|
* @param string $entity
|
||||||
|
*
|
||||||
* @return CustomFieldsGroup
|
* @return CustomFieldsGroup
|
||||||
*/
|
*/
|
||||||
public function setEntity(?string $entity)
|
public function setEntity($entity)
|
||||||
{
|
{
|
||||||
$this->entity = $entity;
|
$this->entity = $entity;
|
||||||
|
|
||||||
|
@@ -26,7 +26,7 @@ class CustomFieldsGroupType extends AbstractType
|
|||||||
public function __construct(
|
public function __construct(
|
||||||
private readonly array $customizableEntities,
|
private readonly array $customizableEntities,
|
||||||
// TODO : add comment about this variable
|
// TODO : add comment about this variable
|
||||||
private readonly TranslatorInterface $translator,
|
private readonly TranslatorInterface $translator
|
||||||
) {}
|
) {}
|
||||||
|
|
||||||
// TODO : details about the function
|
// TODO : details about the function
|
||||||
|
@@ -48,7 +48,7 @@ final class DocGeneratorTemplateController extends AbstractController
|
|||||||
private readonly PaginatorFactory $paginatorFactory,
|
private readonly PaginatorFactory $paginatorFactory,
|
||||||
private readonly EntityManagerInterface $entityManager,
|
private readonly EntityManagerInterface $entityManager,
|
||||||
private readonly ClockInterface $clock,
|
private readonly ClockInterface $clock,
|
||||||
private readonly ChillSecurity $security,
|
private readonly ChillSecurity $security
|
||||||
) {}
|
) {}
|
||||||
|
|
||||||
#[Route(path: '{_locale}/admin/doc/gen/generate/test/from/{template}/for/{entityClassName}/{entityId}', name: 'chill_docgenerator_test_generate_from_template')]
|
#[Route(path: '{_locale}/admin/doc/gen/generate/test/from/{template}/for/{entityClassName}/{entityId}', name: 'chill_docgenerator_test_generate_from_template')]
|
||||||
@@ -56,7 +56,7 @@ final class DocGeneratorTemplateController extends AbstractController
|
|||||||
DocGeneratorTemplate $template,
|
DocGeneratorTemplate $template,
|
||||||
string $entityClassName,
|
string $entityClassName,
|
||||||
int $entityId,
|
int $entityId,
|
||||||
Request $request,
|
Request $request
|
||||||
): Response {
|
): Response {
|
||||||
return $this->generateDocFromTemplate(
|
return $this->generateDocFromTemplate(
|
||||||
$template,
|
$template,
|
||||||
@@ -71,7 +71,7 @@ final class DocGeneratorTemplateController extends AbstractController
|
|||||||
DocGeneratorTemplate $template,
|
DocGeneratorTemplate $template,
|
||||||
string $entityClassName,
|
string $entityClassName,
|
||||||
int $entityId,
|
int $entityId,
|
||||||
Request $request,
|
Request $request
|
||||||
): Response {
|
): Response {
|
||||||
return $this->generateDocFromTemplate(
|
return $this->generateDocFromTemplate(
|
||||||
$template,
|
$template,
|
||||||
@@ -137,7 +137,7 @@ final class DocGeneratorTemplateController extends AbstractController
|
|||||||
DocGeneratorTemplate $template,
|
DocGeneratorTemplate $template,
|
||||||
int $entityId,
|
int $entityId,
|
||||||
Request $request,
|
Request $request,
|
||||||
bool $isTest,
|
bool $isTest
|
||||||
): Response {
|
): Response {
|
||||||
try {
|
try {
|
||||||
$context = $this->contextManager->getContextByDocGeneratorTemplate($template);
|
$context = $this->contextManager->getContextByDocGeneratorTemplate($template);
|
||||||
|
@@ -54,15 +54,12 @@ class LoadDocGeneratorTemplate extends AbstractFixture
|
|||||||
];
|
];
|
||||||
|
|
||||||
foreach ($templates as $template) {
|
foreach ($templates as $template) {
|
||||||
$newStoredObj = (new StoredObject());
|
$newStoredObj = (new StoredObject())
|
||||||
|
->setFilename($template['file']['filename'])
|
||||||
$newStoredObj
|
->setKeyInfos(json_decode($template['file']['key'], true))
|
||||||
|
->setIv(json_decode($template['file']['iv'], true))
|
||||||
->setCreatedAt(new \DateTime('today'))
|
->setCreatedAt(new \DateTime('today'))
|
||||||
->registerVersion(
|
->setType($template['file']['type']);
|
||||||
json_decode($template['file']['key'], true),
|
|
||||||
json_decode($template['file']['iv'], true),
|
|
||||||
$template['file']['type'],
|
|
||||||
);
|
|
||||||
|
|
||||||
$manager->persist($newStoredObj);
|
$manager->persist($newStoredObj);
|
||||||
|
|
||||||
|
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user