diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index ddf7fccbe..3f1d75ed5 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -9,7 +9,7 @@ cache: # Bring in any services we need http://docs.gitlab.com/ee/ci/docker/using_docker_images.html#what-is-a-service # See http://docs.gitlab.com/ee/ci/services/README.html for examples. services: - - name: postgis/postgis:12-3.1-alpine + - name: postgis/postgis:14-3.3-alpine alias: db - name: redis alias: redis @@ -21,7 +21,7 @@ variables: POSTGRES_USER: postgres POSTGRES_PASSWORD: postgres # configure database access - DATABASE_URL: postgresql://postgres:postgres@db:5432/postgres?serverVersion=12&charset=utf8 + DATABASE_URL: postgresql://postgres:postgres@db:5432/postgres?serverVersion=14&charset=utf8 # fetch the chill-app using git submodules GIT_SUBMODULE_STRATEGY: recursive REDIS_HOST: redis @@ -37,12 +37,11 @@ stages: build: stage: Composer install - image: registry.gitlab.com/chill-projet/chill-app/php-base-image:7.4 + image: gitea.champs-libres.be/chill-project/chill-skeleton-basic/base-image:php82 before_script: - - curl -sS https://getcomposer.org/installer | php - - php -d memory_limit=2G composer.phar config -g cache-dir "$(pwd)/.cache" + - composer config -g cache-dir "$(pwd)/.cache" script: - - php -d memory_limit=2G composer.phar install --optimize-autoloader --no-ansi --no-interaction --no-progress + - composer install --optimize-autoloader --no-ansi --no-interaction --no-progress cache: paths: - .cache/ @@ -54,9 +53,12 @@ build: code_style: stage: Tests - image: registry.gitlab.com/chill-projet/chill-app/php-base-image:7.4 + image: gitea.champs-libres.be/chill-project/chill-skeleton-basic/base-image:php82 script: - - bin/grumphp run --tasks=phpcsfixer + - php-cs-fixer fix --dry-run -v --show-progress=none + cache: + paths: + - .cache/ artifacts: expire_in: 30 min paths: @@ -65,30 +67,49 @@ code_style: phpstan_tests: stage: Tests - image: registry.gitlab.com/chill-projet/chill-app/php-base-image:7.4 + image: gitea.champs-libres.be/chill-project/chill-skeleton-basic/base-image:php82 script: - - bin/grumphp run --tasks=phpstan + - bin/phpstan analyze --memory-limit=2G + cache: + paths: + - .cache/ artifacts: expire_in: 30 min paths: - bin - tests/app/vendor/ -psalm_tests: +rector_tests: stage: Tests - image: registry.gitlab.com/chill-projet/chill-app/php-base-image:7.4 + image: gitea.champs-libres.be/chill-project/chill-skeleton-basic/base-image:php82 script: - - bin/grumphp run --tasks=psalm - allow_failure: true + - bin/rector --dry-run + cache: + paths: + - .cache/ artifacts: expire_in: 30 min paths: - bin - tests/app/vendor/ +# psalm_tests: +# stage: Tests +# image: gitea.champs-libres.be/chill-project/chill-skeleton-basic/base-image:php82 +# script: +# - bin/psalm +# allow_failure: true +# artifacts: +# expire_in: 30 min +# paths: +# - bin +# - tests/app/vendor/ + unit_tests: stage: Tests - image: registry.gitlab.com/chill-projet/chill-app/php-base-image:7.4 + image: gitea.champs-libres.be/chill-project/chill-skeleton-basic/base-image:php82 + # until we fix testes + allow_failure: true script: - php tests/app/bin/console doctrine:migrations:migrate -n - php -d memory_limit=2G tests/app/bin/console cache:clear --env=dev diff --git a/.php_cs.dist.php b/.php-cs-fixer.dist.php similarity index 64% rename from .php_cs.dist.php rename to .php-cs-fixer.dist.php index bf15b5876..4b5bf98ee 100644 --- a/.php_cs.dist.php +++ b/.php-cs-fixer.dist.php @@ -9,13 +9,24 @@ declare(strict_types=1); * the LICENSE file that was distributed with this source code. */ -$config = require __DIR__ . '/tests/app/vendor/drupol/php-conventions/config/php73/php_cs_fixer.config.php'; +$finder = PhpCsFixer\Finder::create(); -$config - ->getFinder() - ->ignoreDotFiles(false) +$finder + ->in(__DIR__.'/src') + ->append([__FILE__]) + ->exclude(['docs/', 'tests/app']) ->notPath('tests/app') - ->name(['.php_cs.dist.php']); + ->ignoreDotFiles(true) + ->name('**.php') +; + +$config = new PhpCsFixer\Config(); +$config + ->setFinder($finder) + ->setRiskyAllowed(true) + ->setCacheFile('.cache/php-cs-fixer.cache') + ->setUsingCache(true) +; $rules = $config->getRules(); @@ -68,9 +79,42 @@ $riskyRules = [ // 'psr_autoloading' => false, ]; +$untilFullSwitchToPhp8 = [ + 'blank_line_between_import_groups' => false, + 'declare_strict_types' => true, + 'multiline_whitespace_before_semicolons' => false, + 'phpdoc_no_empty_return' => false, +]; + $rules = array_merge( + [ + '@PhpCsFixer' => true, + '@PhpCsFixer:risky' => false, + '@Symfony' => false, + '@Symfony:risky' => false, + 'ordered_class_elements' => [ + 'order' => [ + 'use_trait', + 'constant_public', + 'constant_protected', + 'constant_private', + 'property_public', + 'property_protected', + 'property_private', + 'construct', + 'destruct', + 'magic', + 'phpunit', + 'method_public', + 'method_protected', + 'method_private', + ], + 'sort_algorithm' => 'alpha', + ] + ], $rules, - $riskyRules + $riskyRules, + $untilFullSwitchToPhp8, ); $rules['header_comment']['header'] = trim(file_get_contents(__DIR__ . '/resource/header.txt')); diff --git a/composer.json b/composer.json index 9447d6db5..033b3f19b 100644 --- a/composer.json +++ b/composer.json @@ -8,7 +8,7 @@ "social worker" ], "require": { - "php": "^7.4", + "php": "^7.4|^8.2", "ext-json": "*", "ext-openssl": "*", "ext-redis": "*", @@ -64,18 +64,25 @@ }, "require-dev": { "doctrine/doctrine-fixtures-bundle": "^3.3", - "drupol/php-conventions": "^5", "fakerphp/faker": "^1.13", + "jangregor/phpstan-prophecy": "^1.0", "nelmio/alice": "^3.8", "phpspec/prophecy-phpunit": "^2.0", + "phpstan/extension-installer": "^1.2", + "phpstan/phpstan": "^1.9", + "phpstan/phpstan-deprecation-rules": "^1.1", "phpstan/phpstan-strict-rules": "^1.0", "phpunit/phpunit": ">= 7.5", + "psalm/plugin-phpunit": "^0.18.4", + "psalm/plugin-symfony": "^4.0.2", + "rector/rector": "^0.15.23", "symfony/debug-bundle": "^5.1", "symfony/dotenv": "^4.4", "symfony/maker-bundle": "^1.20", "symfony/phpunit-bridge": "^4.4", "symfony/stopwatch": "^4.4", - "symfony/var-dumper": "^4.4" + "symfony/var-dumper": "^4.4", + "vimeo/psalm": "^4.30.0" }, "conflict": { "symfony/symfony": "*" diff --git a/docs/source/installation/index.rst b/docs/source/installation/index.rst index 29856f2e4..852a2a6d0 100644 --- a/docs/source/installation/index.rst +++ b/docs/source/installation/index.rst @@ -129,12 +129,12 @@ This script will : .. note:: - In some cases it can happen that an old image (chill_base_php or chill_php) stored in the docker cache will make the script fail. To solve this problem you have to delete the image and the container, before the make init : + In some cases it can happen that an old image (chill_base_php82 or chill_php82) stored in the docker cache will make the script fail. To solve this problem you have to delete the image and the container, before the make init : .. code-block:: bash docker-compose images php - docker rmi -f chill_php:prod + docker rmi -f chill_php82:prod docker-compose rm php diff --git a/grumphp.yml b/grumphp.yml deleted file mode 100644 index c81830d5b..000000000 --- a/grumphp.yml +++ /dev/null @@ -1,40 +0,0 @@ -imports: - - { - resource: tests/app/vendor/drupol/php-conventions/config/php73/grumphp.yml, - } - -parameters: - tasks.phpcsfixer.config: .php_cs.dist.php - tasks.license.name: AGPL-3.0 - tasks.license.holder: Champs-Libres - tasks.license.date_from: 2001 - - tasks.phpcsfixer.allow_risky: true - tasks.phpcsfixer.diff: true - tasks.phpstan.level: 1 - tasks.phpstan.blocking: true - tasks.phpstan.ignore_patterns: - - "/.github/" - - "/.idea/" - - "/build/" - - "/benchmarks/" - - "/docs/" - - "/node_modules/" - - "/resource/" - - "/spec/" - - "/var/" - - "/vendor/" - - "/tests/app" - - # Psalm - tasks.psalm.blocking: true - tasks.psalm.ignore_patterns: - - "/.github/" - - "/.idea/" - - "/build/" - - "/benchmarks/" - - "/node_modules/" - - "/resource/" - - "/spec/" - - "/var/" - - "/vendor/" diff --git a/package.json b/package.json index bb4889983..590976cfa 100644 --- a/package.json +++ b/package.json @@ -34,12 +34,12 @@ "webpack-cli": "^5.0.1" }, "dependencies": { - "@fullcalendar/core": "^5.11.0", - "@fullcalendar/daygrid": "^5.11.0", - "@fullcalendar/interaction": "^5.11.0", - "@fullcalendar/list": "^5.11.0", - "@fullcalendar/timegrid": "^5.11.0", - "@fullcalendar/vue3": "^5.11.1", + "@fullcalendar/core": "^6.1.4", + "@fullcalendar/daygrid": "^6.1.4", + "@fullcalendar/interaction": "^6.1.4", + "@fullcalendar/list": "^6.1.4", + "@fullcalendar/timegrid": "^6.1.4", + "@fullcalendar/vue3": "^6.1.4", "@popperjs/core": "^2.9.2", "@types/leaflet": "^1.9.3", "dropzone": "^5.7.6", diff --git a/phpstan-baseline-level-2.neon b/phpstan-baseline-level-2.neon new file mode 100644 index 000000000..6f7cec495 --- /dev/null +++ b/phpstan-baseline-level-2.neon @@ -0,0 +1,301 @@ +parameters: + ignoreErrors: + - + message: "#^Only booleans are allowed in a negated boolean, Chill\\\\ActivityBundle\\\\Entity\\\\Activity\\|null given\\.$#" + count: 1 + path: src/Bundle/ChillActivityBundle/Controller/ActivityController.php + + - + message: "#^Only booleans are allowed in a ternary operator condition, Chill\\\\MainBundle\\\\Entity\\\\Scope\\|null given\\.$#" + count: 1 + path: src/Bundle/ChillActivityBundle/Controller/ActivityController.php + + - + message: "#^Only booleans are allowed in a ternary operator condition, Chill\\\\PersonBundle\\\\Entity\\\\Person\\|null given\\.$#" + count: 1 + path: src/Bundle/ChillActivityBundle/Controller/ActivityController.php + + - + message: "#^Only booleans are allowed in a ternary operator condition, DateTime\\|null given\\.$#" + count: 1 + path: src/Bundle/ChillActivityBundle/Controller/ActivityController.php + + - + message: "#^Only booleans are allowed in a negated boolean, Chill\\\\ActivityBundle\\\\Entity\\\\ActivityReasonCategory\\|null given\\.$#" + count: 3 + path: src/Bundle/ChillActivityBundle/Controller/ActivityReasonCategoryController.php + + - + message: "#^Only booleans are allowed in a negated boolean, Chill\\\\ActivityBundle\\\\Entity\\\\ActivityReason\\|null given\\.$#" + count: 2 + path: src/Bundle/ChillActivityBundle/Controller/ActivityReasonController.php + + - + message: "#^Call to method DateTime\\:\\:setTimezone\\(\\) with incorrect case\\: setTimeZone$#" + count: 1 + path: src/Bundle/ChillActivityBundle/Form/ActivityType.php + + - + message: "#^Only booleans are allowed in &&, Chill\\\\PersonBundle\\\\Entity\\\\AccompanyingPeriod\\|null given on the right side\\.$#" + count: 2 + path: src/Bundle/ChillActivityBundle/Form/ActivityType.php + + - + message: "#^Only booleans are allowed in an if condition, Chill\\\\AsideActivityBundle\\\\Entity\\\\AsideActivityCategory\\|null given\\.$#" + count: 1 + path: src/Bundle/ChillAsideActivityBundle/src/Entity/AsideActivityCategory.php + + - + message: "#^Call to method DateTimeImmutable\\:\\:setTimezone\\(\\) with incorrect case\\: setTimeZone$#" + count: 1 + path: src/Bundle/ChillAsideActivityBundle/src/Form/AsideActivityFormType.php + + - + message: "#^Only booleans are allowed in a ternary operator condition, Chill\\\\MainBundle\\\\Entity\\\\Location\\|null given\\.$#" + count: 1 + path: src/Bundle/ChillCalendarBundle/Controller/CalendarController.php + + - + message: "#^Only booleans are allowed in an if condition, Symfony\\\\Component\\\\Validator\\\\ConstraintViolationListInterface given\\.$#" + count: 1 + path: src/Bundle/ChillCustomFieldsBundle/Command/CreateFieldsOnGroupCommand.php + + - + message: "#^Only booleans are allowed in a negated boolean, Chill\\\\CustomFieldsBundle\\\\Entity\\\\CustomFieldsGroup\\|null given\\.$#" + count: 1 + path: src/Bundle/ChillCustomFieldsBundle/Controller/CustomFieldController.php + + - + message: "#^Only booleans are allowed in a negated boolean, Chill\\\\CustomFieldsBundle\\\\Entity\\\\CustomField\\|null given\\.$#" + count: 3 + path: src/Bundle/ChillCustomFieldsBundle/Controller/CustomFieldController.php + + - + message: "#^Only booleans are allowed in a ternary operator condition, Chill\\\\CustomFieldsBundle\\\\Entity\\\\CustomFieldsGroup given\\.$#" + count: 1 + path: src/Bundle/ChillCustomFieldsBundle/Controller/CustomFieldController.php + + - + message: "#^Only booleans are allowed in a negated boolean, Chill\\\\CustomFieldsBundle\\\\Entity\\\\CustomFieldsGroup\\|null given\\.$#" + count: 4 + path: src/Bundle/ChillCustomFieldsBundle/Controller/CustomFieldsGroupController.php + + - + message: "#^Only booleans are allowed in a ternary operator condition, string given\\.$#" + count: 1 + path: src/Bundle/ChillCustomFieldsBundle/CustomFields/CustomFieldLongChoice.php + + - + message: "#^Only booleans are allowed in a negated boolean, string given\\.$#" + count: 1 + path: src/Bundle/ChillCustomFieldsBundle/Form/DataTransformer/CustomFieldsGroupToIdTransformer.php + + - + message: "#^Call to method Chill\\\\PersonBundle\\\\Entity\\\\Person\\:\\:getFirstName\\(\\) with incorrect case\\: getFirstname$#" + count: 1 + path: src/Bundle/ChillEventBundle/Controller/EventController.php + + - + message: "#^Call to method Chill\\\\PersonBundle\\\\Entity\\\\Person\\:\\:getLastName\\(\\) with incorrect case\\: getLastname$#" + count: 1 + path: src/Bundle/ChillEventBundle/Controller/EventController.php + + - + message: "#^Call to method Chill\\\\PersonBundle\\\\Entity\\\\Person\\:\\:getMobilenumber\\(\\) with incorrect case\\: getMobileNumber$#" + count: 1 + path: src/Bundle/ChillEventBundle/Controller/EventController.php + + - + message: "#^Call to method Chill\\\\PersonBundle\\\\Entity\\\\Person\\:\\:getPhonenumber\\(\\) with incorrect case\\: getPhoneNumber$#" + count: 1 + path: src/Bundle/ChillEventBundle/Controller/EventController.php + + - + message: "#^Only booleans are allowed in a negated boolean, Chill\\\\EventBundle\\\\Entity\\\\Event given\\.$#" + count: 1 + path: src/Bundle/ChillEventBundle/Controller/EventController.php + + - + message: "#^Only booleans are allowed in a negated boolean, Chill\\\\EventBundle\\\\Entity\\\\Event\\|null given\\.$#" + count: 3 + path: src/Bundle/ChillEventBundle/Controller/EventController.php + + - + message: "#^Only booleans are allowed in a ternary operator condition, int given\\.$#" + count: 1 + path: src/Bundle/ChillEventBundle/Controller/EventController.php + + - + message: "#^Only numeric types are allowed in pre\\-increment, string given\\.$#" + count: 2 + path: src/Bundle/ChillEventBundle/Controller/EventController.php + + - + message: "#^Only booleans are allowed in a negated boolean, Chill\\\\EventBundle\\\\Entity\\\\EventType\\|null given\\.$#" + count: 4 + path: src/Bundle/ChillEventBundle/Controller/EventTypeController.php + + - + message: "#^Only booleans are allowed in a negated boolean, Chill\\\\EventBundle\\\\Entity\\\\Participation\\|null given\\.$#" + count: 1 + path: src/Bundle/ChillEventBundle/Controller/ParticipationController.php + + - + message: "#^Only booleans are allowed in a negated boolean, Chill\\\\EventBundle\\\\Entity\\\\Role\\|null given\\.$#" + count: 4 + path: src/Bundle/ChillEventBundle/Controller/RoleController.php + + - + message: "#^Only booleans are allowed in a negated boolean, Chill\\\\EventBundle\\\\Entity\\\\Status\\|null given\\.$#" + count: 4 + path: src/Bundle/ChillEventBundle/Controller/StatusController.php + + - + message: "#^Only booleans are allowed in a negated boolean, Chill\\\\MainBundle\\\\Entity\\\\Language\\|null given\\.$#" + count: 1 + path: src/Bundle/ChillMainBundle/Command/LoadAndUpdateLanguagesCommand.php + + - + message: "#^Only booleans are allowed in an if condition, Chill\\\\MainBundle\\\\Entity\\\\Language\\|null given\\.$#" + count: 1 + path: src/Bundle/ChillMainBundle/Command/LoadAndUpdateLanguagesCommand.php + + - + message: "#^Only booleans are allowed in an if condition, int given\\.$#" + count: 1 + path: src/Bundle/ChillMainBundle/Command/LoadPostalCodesCommand.php + + - + message: "#^Only booleans are allowed in a negated boolean, Chill\\\\MainBundle\\\\Entity\\\\Center\\|null given\\.$#" + count: 3 + path: src/Bundle/ChillMainBundle/Controller/CenterController.php + + - + message: "#^Call to method Redis\\:\\:setex\\(\\) with incorrect case\\: setEx$#" + count: 2 + path: src/Bundle/ChillMainBundle/Controller/ExportController.php + + - + message: "#^Only booleans are allowed in a negated boolean, Chill\\\\MainBundle\\\\Entity\\\\PermissionsGroup\\|null given\\.$#" + count: 5 + path: src/Bundle/ChillMainBundle/Controller/PermissionsGroupController.php + + - + message: "#^Only booleans are allowed in a negated boolean, Chill\\\\MainBundle\\\\Entity\\\\RoleScope\\|null given\\.$#" + count: 1 + path: src/Bundle/ChillMainBundle/Controller/PermissionsGroupController.php + + - + message: "#^Only booleans are allowed in a negated boolean, Chill\\\\MainBundle\\\\Entity\\\\Scope\\|null given\\.$#" + count: 3 + path: src/Bundle/ChillMainBundle/Controller/ScopeController.php + + - + message: "#^Only booleans are allowed in a negated boolean, Chill\\\\MainBundle\\\\Entity\\\\GroupCenter\\|null given\\.$#" + count: 2 + path: src/Bundle/ChillMainBundle/Controller/UserController.php + + - + message: "#^Only booleans are allowed in a negated boolean, Chill\\\\MainBundle\\\\Entity\\\\User\\|null given\\.$#" + count: 2 + path: src/Bundle/ChillMainBundle/Controller/UserController.php + + - + message: "#^Only booleans are allowed in an if condition, int given\\.$#" + count: 1 + path: src/Bundle/ChillMainBundle/DataFixtures/ORM/LoadPostalCodes.php + + - + message: "#^Only numeric types are allowed in pre\\-increment, string given\\.$#" + count: 1 + path: src/Bundle/ChillMainBundle/Export/Formatter/SpreadsheetListFormatter.php + + - + message: "#^Only booleans are allowed in an if condition, int given\\.$#" + count: 2 + path: src/Bundle/ChillMainBundle/Form/DataTransformer/IdToEntityDataTransformer.php + + - + message: "#^Only booleans are allowed in a ternary operator condition, string\\|null given\\.$#" + count: 1 + path: src/Bundle/ChillMainBundle/Form/Type/PickUserLocationType.php + + - + message: "#^Only booleans are allowed in a ternary operator condition, int\\<0, max\\> given\\.$#" + count: 4 + path: src/Bundle/ChillMainBundle/Search/SearchApiQuery.php + + - + message: "#^Call to method Chill\\\\MainBundle\\\\Entity\\\\Address\\:\\:getPostcode\\(\\) with incorrect case\\: getPostCode$#" + count: 6 + path: src/Bundle/ChillMainBundle/Serializer/Normalizer/AddressNormalizer.php + + - + message: "#^Only booleans are allowed in an if condition, Symfony\\\\Component\\\\Serializer\\\\Mapping\\\\ClassDiscriminatorMapping\\|null given\\.$#" + count: 1 + path: src/Bundle/ChillMainBundle/Serializer/Normalizer/DoctrineExistingEntityNormalizer.php + + - + message: "#^Only booleans are allowed in a negated boolean, null given\\.$#" + count: 1 + path: src/Bundle/ChillPersonBundle/Entity/Person.php + + - + message: "#^Only booleans are allowed in a ternary operator condition, Chill\\\\PersonBundle\\\\Entity\\\\AccompanyingPeriodParticipation\\|null given\\.$#" + count: 1 + path: src/Bundle/ChillPersonBundle/Entity/Person.php + + - + message: "#^Call to method Chill\\\\PersonBundle\\\\Entity\\\\Person\\:\\:getFirstName\\(\\) with incorrect case\\: getFirstname$#" + count: 1 + path: src/Bundle/ChillPersonBundle/Form/Type/PickPersonType.php + + - + message: "#^Call to method Chill\\\\PersonBundle\\\\Entity\\\\Person\\:\\:getLastName\\(\\) with incorrect case\\: getLastname$#" + count: 1 + path: src/Bundle/ChillPersonBundle/Form/Type/PickPersonType.php + + - + message: "#^Only booleans are allowed in an if condition, int\\<0, max\\> given\\.$#" + count: 1 + path: src/Bundle/ChillPersonBundle/Search/SimilarPersonMatcher.php + + - + message: "#^Only booleans are allowed in &&, null given on the left side\\.$#" + count: 1 + path: src/Bundle/ChillPersonBundle/Serializer/Normalizer/MembersEditorNormalizer.php + + - + message: "#^Only booleans are allowed in a ternary operator condition, Chill\\\\PersonBundle\\\\Entity\\\\Household\\\\Household\\|null given\\.$#" + count: 1 + path: src/Bundle/ChillPersonBundle/Serializer/Normalizer/PersonJsonNormalizer.php + + - + message: "#^Only booleans are allowed in a ternary operator condition, array\\ given\\.$#" + count: 1 + path: src/Bundle/ChillPersonBundle/Serializer/Normalizer/PersonJsonNormalizer.php + + - + message: "#^Call to method Chill\\\\PersonBundle\\\\Entity\\\\Person\\:\\:getDeathdate\\(\\) with incorrect case\\: getDeathDate$#" + count: 2 + path: src/Bundle/ChillPersonBundle/Templating/Entity/PersonRender.php + + - + message: "#^Only booleans are allowed in a negated boolean, Chill\\\\PersonBundle\\\\Entity\\\\Person\\|null given\\.$#" + count: 1 + path: src/Bundle/ChillReportBundle/Controller/ReportController.php + + - + message: "#^Only booleans are allowed in a negated boolean, Chill\\\\ReportBundle\\\\Entity\\\\Report given\\.$#" + count: 1 + path: src/Bundle/ChillReportBundle/Controller/ReportController.php + + - + message: "#^Call to method Chill\\\\ThirdPartyBundle\\\\Entity\\\\ThirdParty\\:\\:setFirstname\\(\\) with incorrect case\\: setFirstName$#" + count: 1 + path: src/Bundle/ChillThirdPartyBundle/EventListener/ThirdPartyEventListener.php + + - + message: "#^Dynamic call to static method Chill\\\\ThirdPartyBundle\\\\ThirdPartyType\\\\ThirdPartyTypeProviderInterface\\:\\:getKey\\(\\)\\.$#" + count: 1 + path: src/Bundle/ChillThirdPartyBundle/ThirdPartyType/ThirdPartyTypeManager.php diff --git a/phpstan-baseline-level-3.neon b/phpstan-baseline-level-3.neon new file mode 100644 index 000000000..b7091f4ad --- /dev/null +++ b/phpstan-baseline-level-3.neon @@ -0,0 +1,804 @@ +parameters: + ignoreErrors: + - + message: "#^Return type \\(array\\\\) of method Chill\\\\ActivityBundle\\\\Repository\\\\ActivityACLAwareRepository\\:\\:findByPerson\\(\\) should be covariant with return type \\(array\\\\) of method Chill\\\\ActivityBundle\\\\Repository\\\\ActivityACLAwareRepositoryInterface\\:\\:findByPerson\\(\\)$#" + count: 1 + path: src/Bundle/ChillActivityBundle/Repository/ActivityACLAwareRepository.php + + - + message: "#^Return type \\(array\\\\) of method Chill\\\\ActivityBundle\\\\Repository\\\\ActivityReasonRepository\\:\\:findAll\\(\\) should be covariant with return type \\(array\\\\) of method Doctrine\\\\ORM\\\\EntityRepository\\\\:\\:findAll\\(\\)$#" + count: 1 + path: src/Bundle/ChillActivityBundle/Repository/ActivityReasonRepository.php + + - + message: "#^Return type \\(array\\\\>\\) of method Chill\\\\AsideActivityBundle\\\\Security\\\\AsideActivityVoter\\:\\:getRolesWithHierarchy\\(\\) should be covariant with return type \\(array\\\\>\\) of method Chill\\\\MainBundle\\\\Security\\\\ProvideRoleHierarchyInterface\\:\\:getRolesWithHierarchy\\(\\)$#" + count: 1 + path: src/Bundle/ChillAsideActivityBundle/src/Security/AsideActivityVoter.php + + - + message: "#^Parameter \\#1 \\$criteria \\(array\\\\) of method Chill\\\\CalendarBundle\\\\Repository\\\\CalendarDocRepository\\:\\:findBy\\(\\) should be contravariant with parameter \\$criteria \\(array\\) of method Chill\\\\CalendarBundle\\\\Repository\\\\CalendarDocRepositoryInterface\\:\\:findBy\\(\\)$#" + count: 1 + path: src/Bundle/ChillCalendarBundle/Repository/CalendarDocRepository.php + + - + message: "#^Parameter \\#1 \\$criteria \\(array\\\\) of method Chill\\\\CalendarBundle\\\\Repository\\\\CalendarDocRepository\\:\\:findOneBy\\(\\) should be contravariant with parameter \\$criteria \\(array\\) of method Chill\\\\CalendarBundle\\\\Repository\\\\CalendarDocRepositoryInterface\\:\\:findOneBy\\(\\)$#" + count: 1 + path: src/Bundle/ChillCalendarBundle/Repository/CalendarDocRepository.php + + - + message: "#^Parameter \\#2 \\$orderBy \\(array\\\\|null\\) of method Chill\\\\CalendarBundle\\\\Repository\\\\CalendarDocRepository\\:\\:findBy\\(\\) should be contravariant with parameter \\$orderBy \\(array\\|null\\) of method Chill\\\\CalendarBundle\\\\Repository\\\\CalendarDocRepositoryInterface\\:\\:findBy\\(\\)$#" + count: 1 + path: src/Bundle/ChillCalendarBundle/Repository/CalendarDocRepository.php + + - + message: "#^Return type \\(array\\\\) of method Chill\\\\CalendarBundle\\\\Repository\\\\CalendarDocRepository\\:\\:findAll\\(\\) should be covariant with return type \\(array\\\\) of method Chill\\\\CalendarBundle\\\\Repository\\\\CalendarDocRepositoryInterface\\:\\:findAll\\(\\)$#" + count: 1 + path: src/Bundle/ChillCalendarBundle/Repository/CalendarDocRepository.php + + - + message: "#^Return type \\(array\\\\) of method Chill\\\\CalendarBundle\\\\Repository\\\\CalendarDocRepository\\:\\:findBy\\(\\) should be covariant with return type \\(array\\\\) of method Chill\\\\CalendarBundle\\\\Repository\\\\CalendarDocRepositoryInterface\\:\\:findBy\\(\\)$#" + count: 1 + path: src/Bundle/ChillCalendarBundle/Repository/CalendarDocRepository.php + + - + message: "#^Parameter \\#2 \\$subject \\(Chill\\\\CalendarBundle\\\\Entity\\\\CalendarDoc\\) of method Chill\\\\CalendarBundle\\\\Security\\\\Voter\\\\CalendarDocVoter\\:\\:voteOnAttribute\\(\\) should be contravariant with parameter \\$subject \\(mixed\\) of method Symfony\\\\Component\\\\Security\\\\Core\\\\Authorization\\\\Voter\\\\Voter\\:\\:voteOnAttribute\\(\\)$#" + count: 1 + path: src/Bundle/ChillCalendarBundle/Security/Voter/CalendarDocVoter.php + + - + message: "#^Parameter \\#2 \\$subject \\(Chill\\\\CalendarBundle\\\\Entity\\\\Invite\\) of method Chill\\\\CalendarBundle\\\\Security\\\\Voter\\\\InviteVoter\\:\\:voteOnAttribute\\(\\) should be contravariant with parameter \\$subject \\(mixed\\) of method Symfony\\\\Component\\\\Security\\\\Core\\\\Authorization\\\\Voter\\\\Voter\\:\\:voteOnAttribute\\(\\)$#" + count: 1 + path: src/Bundle/ChillCalendarBundle/Security/Voter/InviteVoter.php + + + - + message: "#^Return type \\(int\\|void\\|null\\) of method Chill\\\\CustomFieldsBundle\\\\Command\\\\CreateFieldsOnGroupCommand\\:\\:execute\\(\\) should be covariant with return type \\(int\\) of method Symfony\\\\Component\\\\Console\\\\Command\\\\Command\\:\\:execute\\(\\)$#" + count: 1 + path: src/Bundle/ChillCustomFieldsBundle/Command/CreateFieldsOnGroupCommand.php + + - + message: "#^Parameter \\#1 \\$customFieldsGroup \\(Chill\\\\CustomFieldsBundle\\\\Entity\\\\CustomFieldsGroup\\|null\\) of method Chill\\\\CustomFieldsBundle\\\\Form\\\\DataTransformer\\\\CustomFieldsGroupToIdTransformer\\:\\:transform\\(\\) should be contravariant with parameter \\$value \\(mixed\\) of method Symfony\\\\Component\\\\Form\\\\DataTransformerInterface\\:\\:transform\\(\\)$#" + count: 1 + path: src/Bundle/ChillCustomFieldsBundle/Form/DataTransformer/CustomFieldsGroupToIdTransformer.php + + - + message: "#^Parameter \\#1 \\$id \\(string\\) of method Chill\\\\CustomFieldsBundle\\\\Form\\\\DataTransformer\\\\CustomFieldsGroupToIdTransformer\\:\\:reverseTransform\\(\\) should be contravariant with parameter \\$value \\(mixed\\) of method Symfony\\\\Component\\\\Form\\\\DataTransformerInterface\\:\\:reverseTransform\\(\\)$#" + count: 1 + path: src/Bundle/ChillCustomFieldsBundle/Form/DataTransformer/CustomFieldsGroupToIdTransformer.php + + - + message: "#^Parameter \\#2 \\$query \\(Doctrine\\\\ORM\\\\QueryBuilder\\) of method Chill\\\\DocGeneratorBundle\\\\Controller\\\\AdminDocGeneratorTemplateController\\:\\:orderQuery\\(\\) should be contravariant with parameter \\$query \\(mixed\\) of method Chill\\\\MainBundle\\\\CRUD\\\\Controller\\\\CRUDController\\:\\:orderQuery\\(\\)$#" + count: 1 + path: src/Bundle/ChillDocGeneratorBundle/Controller/AdminDocGeneratorTemplateController.php + + - + message: "#^Parameter \\#1 \\$object \\(Doctrine\\\\Common\\\\Collections\\\\Collection\\) of method Chill\\\\DocGeneratorBundle\\\\Serializer\\\\Normalizer\\\\CollectionDocGenNormalizer\\:\\:normalize\\(\\) should be contravariant with parameter \\$object \\(mixed\\) of method Symfony\\\\Component\\\\Serializer\\\\Normalizer\\\\NormalizerInterface\\:\\:normalize\\(\\)$#" + count: 2 + path: src/Bundle/ChillDocGeneratorBundle/Serializer/Normalizer/CollectionDocGenNormalizer.php + + - + message: "#^Parameter \\#2 \\$format \\(string\\) of method Chill\\\\DocGeneratorBundle\\\\Serializer\\\\Normalizer\\\\CollectionDocGenNormalizer\\:\\:supportsNormalization\\(\\) should be contravariant with parameter \\$format \\(string\\|null\\) of method Symfony\\\\Component\\\\Serializer\\\\Normalizer\\\\ContextAwareNormalizerInterface\\:\\:supportsNormalization\\(\\)$#" + count: 1 + path: src/Bundle/ChillDocGeneratorBundle/Serializer/Normalizer/CollectionDocGenNormalizer.php + + - + message: "#^Parameter \\#2 \\$format \\(string\\) of method Chill\\\\DocGeneratorBundle\\\\Serializer\\\\Normalizer\\\\CollectionDocGenNormalizer\\:\\:supportsNormalization\\(\\) should be contravariant with parameter \\$format \\(string\\|null\\) of method Symfony\\\\Component\\\\Serializer\\\\Normalizer\\\\NormalizerInterface\\:\\:supportsNormalization\\(\\)$#" + count: 1 + path: src/Bundle/ChillDocGeneratorBundle/Serializer/Normalizer/CollectionDocGenNormalizer.php + + - + message: "#^Return type \\(array\\|ArrayObject\\|bool\\|float\\|int\\|string\\|void\\|null\\) of method Chill\\\\DocGeneratorBundle\\\\Serializer\\\\Normalizer\\\\CollectionDocGenNormalizer\\:\\:normalize\\(\\) should be covariant with return type \\(array\\|ArrayObject\\|bool\\|float\\|int\\|string\\|null\\) of method Symfony\\\\Component\\\\Serializer\\\\Normalizer\\\\NormalizerInterface\\:\\:normalize\\(\\)$#" + count: 2 + path: src/Bundle/ChillDocGeneratorBundle/Serializer/Normalizer/CollectionDocGenNormalizer.php + + - + message: "#^Parameter \\#2 \\$format \\(string\\) of method Chill\\\\DocGeneratorBundle\\\\Serializer\\\\Normalizer\\\\DocGenObjectNormalizer\\:\\:normalize\\(\\) should be contravariant with parameter \\$format \\(string\\|null\\) of method Symfony\\\\Component\\\\Serializer\\\\Normalizer\\\\NormalizerInterface\\:\\:normalize\\(\\)$#" + count: 1 + path: src/Bundle/ChillDocGeneratorBundle/Serializer/Normalizer/DocGenObjectNormalizer.php + + - + message: "#^Parameter \\#2 \\$format \\(string\\) of method Chill\\\\DocGeneratorBundle\\\\Serializer\\\\Normalizer\\\\DocGenObjectNormalizer\\:\\:supportsNormalization\\(\\) should be contravariant with parameter \\$format \\(string\\|null\\) of method Symfony\\\\Component\\\\Serializer\\\\Normalizer\\\\NormalizerInterface\\:\\:supportsNormalization\\(\\)$#" + count: 1 + path: src/Bundle/ChillDocGeneratorBundle/Serializer/Normalizer/DocGenObjectNormalizer.php + + - + message: "#^Return type \\(Chill\\\\MainBundle\\\\Entity\\\\Scope\\|null\\) of method Chill\\\\DocStoreBundle\\\\Entity\\\\PersonDocument\\:\\:getScope\\(\\) should be covariant with return type \\(Chill\\\\MainBundle\\\\Entity\\\\Scope\\) of method Chill\\\\MainBundle\\\\Entity\\\\HasScopeInterface\\:\\:getScope\\(\\)$#" + count: 1 + path: src/Bundle/ChillDocStoreBundle/Entity/PersonDocument.php + + - + message: "#^Parameter \\#2 \\$subject \\(Chill\\\\DocStoreBundle\\\\Entity\\\\PersonDocument\\) of method Chill\\\\DocStoreBundle\\\\Security\\\\Authorization\\\\PersonDocumentVoter\\:\\:voteOnAttribute\\(\\) should be contravariant with parameter \\$subject \\(mixed\\) of method Symfony\\\\Component\\\\Security\\\\Core\\\\Authorization\\\\Voter\\\\Voter\\:\\:voteOnAttribute\\(\\)$#" + count: 1 + path: src/Bundle/ChillDocStoreBundle/Security/Authorization/PersonDocumentVoter.php + + - + message: "#^Parameter \\#3 \\$format \\(string\\) of method Chill\\\\DocStoreBundle\\\\Serializer\\\\Normalizer\\\\StoredObjectDenormalizer\\:\\:denormalize\\(\\) should be contravariant with parameter \\$format \\(string\\|null\\) of method Symfony\\\\Component\\\\Serializer\\\\Normalizer\\\\DenormalizerInterface\\:\\:denormalize\\(\\)$#" + count: 1 + path: src/Bundle/ChillDocStoreBundle/Serializer/Normalizer/StoredObjectDenormalizer.php + + - + message: "#^Parameter \\#3 \\$format \\(string\\) of method Chill\\\\DocStoreBundle\\\\Serializer\\\\Normalizer\\\\StoredObjectDenormalizer\\:\\:supportsDenormalization\\(\\) should be contravariant with parameter \\$format \\(string\\|null\\) of method Symfony\\\\Component\\\\Serializer\\\\Normalizer\\\\DenormalizerInterface\\:\\:supportsDenormalization\\(\\)$#" + count: 1 + path: src/Bundle/ChillDocStoreBundle/Serializer/Normalizer/StoredObjectDenormalizer.php + + - + message: "#^Parameter \\#1 \\$object \\(Chill\\\\DocStoreBundle\\\\Entity\\\\AccompanyingCourseDocument\\) of method Chill\\\\DocStoreBundle\\\\Workflow\\\\AccompanyingCourseDocumentWorkflowHandler\\:\\:getRelatedObjects\\(\\) should be contravariant with parameter \\$object \\(object\\) of method Chill\\\\MainBundle\\\\Workflow\\\\EntityWorkflowHandlerInterface\\:\\:getRelatedObjects\\(\\)$#" + count: 1 + path: src/Bundle/ChillDocStoreBundle/Workflow/AccompanyingCourseDocumentWorkflowHandler.php + + - + message: "#^Parameter \\#1 \\$value \\(null\\) of method Chill\\\\EventBundle\\\\Form\\\\ChoiceLoader\\\\EventChoiceLoader\\:\\:loadChoiceList\\(\\) should be contravariant with parameter \\$value \\(\\(callable\\(\\)\\: mixed\\)\\|null\\) of method Symfony\\\\Component\\\\Form\\\\ChoiceList\\\\Loader\\\\ChoiceLoaderInterface\\:\\:loadChoiceList\\(\\)$#" + count: 1 + path: src/Bundle/ChillEventBundle/Form/ChoiceLoader/EventChoiceLoader.php + + - + message: "#^Parameter \\#2 \\$value \\(null\\) of method Chill\\\\EventBundle\\\\Form\\\\ChoiceLoader\\\\EventChoiceLoader\\:\\:loadChoicesForValues\\(\\) should be contravariant with parameter \\$value \\(\\(callable\\(\\)\\: mixed\\)\\|null\\) of method Symfony\\\\Component\\\\Form\\\\ChoiceList\\\\Loader\\\\ChoiceLoaderInterface\\:\\:loadChoicesForValues\\(\\)$#" + count: 1 + path: src/Bundle/ChillEventBundle/Form/ChoiceLoader/EventChoiceLoader.php + + - + message: "#^Parameter \\#2 \\$value \\(null\\) of method Chill\\\\EventBundle\\\\Form\\\\ChoiceLoader\\\\EventChoiceLoader\\:\\:loadValuesForChoices\\(\\) should be contravariant with parameter \\$value \\(\\(callable\\(\\)\\: mixed\\)\\|null\\) of method Symfony\\\\Component\\\\Form\\\\ChoiceList\\\\Loader\\\\ChoiceLoaderInterface\\:\\:loadValuesForChoices\\(\\)$#" + count: 1 + path: src/Bundle/ChillEventBundle/Form/ChoiceLoader/EventChoiceLoader.php + + - + message: "#^Parameter \\#2 \\$subject \\(Chill\\\\EventBundle\\\\Entity\\\\Event\\) of method Chill\\\\EventBundle\\\\Security\\\\Authorization\\\\EventVoter\\:\\:voteOnAttribute\\(\\) should be contravariant with parameter \\$subject \\(mixed\\) of method Symfony\\\\Component\\\\Security\\\\Core\\\\Authorization\\\\Voter\\\\Voter\\:\\:voteOnAttribute\\(\\)$#" + count: 1 + path: src/Bundle/ChillEventBundle/Security/Authorization/EventVoter.php + + - + message: "#^Parameter \\#2 \\$subject \\(Chill\\\\EventBundle\\\\Entity\\\\Participation\\) of method Chill\\\\EventBundle\\\\Security\\\\Authorization\\\\ParticipationVoter\\:\\:voteOnAttribute\\(\\) should be contravariant with parameter \\$subject \\(mixed\\) of method Symfony\\\\Component\\\\Security\\\\Core\\\\Authorization\\\\Voter\\\\Voter\\:\\:voteOnAttribute\\(\\)$#" + count: 1 + path: src/Bundle/ChillEventBundle/Security/Authorization/ParticipationVoter.php + + - + message: "#^Parameter \\#1 \\$entity \\(Chill\\\\EventBundle\\\\Entity\\\\Event\\) of method Chill\\\\EventBundle\\\\Timeline\\\\TimelineEventProvider\\:\\:getEntityTemplate\\(\\) should be contravariant with parameter \\$entity \\(Chill\\\\MainBundle\\\\Timeline\\\\type\\) of method Chill\\\\MainBundle\\\\Timeline\\\\TimelineProviderInterface\\:\\:getEntityTemplate\\(\\)$#" + count: 1 + path: src/Bundle/ChillEventBundle/Timeline/TimelineEventProvider.php + + - + message: "#^Parameter \\#2 \\$type \\(null\\) of method Chill\\\\MainBundle\\\\CRUD\\\\Routing\\\\CRUDRoutesLoader\\:\\:supports\\(\\) should be contravariant with parameter \\$type \\(string\\|null\\) of method Symfony\\\\Component\\\\Config\\\\Loader\\\\LoaderInterface\\:\\:supports\\(\\)$#" + count: 2 + path: src/Bundle/ChillMainBundle/CRUD/Routing/CRUDRoutesLoader.php + + - + message: "#^Parameter \\#2 \\$query \\(Doctrine\\\\ORM\\\\QueryBuilder\\) of method Chill\\\\MainBundle\\\\Controller\\\\LocationApiController\\:\\:orderQuery\\(\\) should be contravariant with parameter \\$query \\(mixed\\) of method Chill\\\\MainBundle\\\\CRUD\\\\Controller\\\\AbstractCRUDController\\:\\:orderQuery\\(\\)$#" + count: 1 + path: src/Bundle/ChillMainBundle/Controller/LocationApiController.php + + - + message: "#^Parameter \\#3 \\$query \\(Doctrine\\\\ORM\\\\QueryBuilder\\) of method Chill\\\\MainBundle\\\\Controller\\\\UserApiController\\:\\:customizeQuery\\(\\) should be contravariant with parameter \\$query \\(mixed\\) of method Chill\\\\MainBundle\\\\CRUD\\\\Controller\\\\AbstractCRUDController\\:\\:customizeQuery\\(\\)$#" + count: 1 + path: src/Bundle/ChillMainBundle/Controller/UserApiController.php + + - + message: "#^Return type \\(object\\|null\\) of method Chill\\\\MainBundle\\\\DependencyInjection\\\\ChillMainExtension\\:\\:getConfiguration\\(\\) should be covariant with return type \\(Symfony\\\\Component\\\\Config\\\\Definition\\\\ConfigurationInterface\\|null\\) of method Symfony\\\\Component\\\\DependencyInjection\\\\Extension\\\\ConfigurationExtensionInterface\\:\\:getConfiguration\\(\\)$#" + count: 1 + path: src/Bundle/ChillMainBundle/DependencyInjection/ChillMainExtension.php + + - + message: "#^Return type \\(object\\|null\\) of method Chill\\\\MainBundle\\\\DependencyInjection\\\\ChillMainExtension\\:\\:getConfiguration\\(\\) should be covariant with return type \\(Symfony\\\\Component\\\\Config\\\\Definition\\\\ConfigurationInterface\\|null\\) of method Symfony\\\\Component\\\\DependencyInjection\\\\Extension\\\\Extension\\:\\:getConfiguration\\(\\)$#" + count: 1 + path: src/Bundle/ChillMainBundle/DependencyInjection/ChillMainExtension.php + + - + message: "#^Parameter \\#1 \\$value \\(null\\) of method Chill\\\\MainBundle\\\\Form\\\\ChoiceLoader\\\\PostalCodeChoiceLoader\\:\\:loadChoiceList\\(\\) should be contravariant with parameter \\$value \\(\\(callable\\(\\)\\: mixed\\)\\|null\\) of method Symfony\\\\Component\\\\Form\\\\ChoiceList\\\\Loader\\\\ChoiceLoaderInterface\\:\\:loadChoiceList\\(\\)$#" + count: 1 + path: src/Bundle/ChillMainBundle/Form/ChoiceLoader/PostalCodeChoiceLoader.php + + - + message: "#^Parameter \\#2 \\$value \\(null\\) of method Chill\\\\MainBundle\\\\Form\\\\ChoiceLoader\\\\PostalCodeChoiceLoader\\:\\:loadChoicesForValues\\(\\) should be contravariant with parameter \\$value \\(\\(callable\\(\\)\\: mixed\\)\\|null\\) of method Symfony\\\\Component\\\\Form\\\\ChoiceList\\\\Loader\\\\ChoiceLoaderInterface\\:\\:loadChoicesForValues\\(\\)$#" + count: 1 + path: src/Bundle/ChillMainBundle/Form/ChoiceLoader/PostalCodeChoiceLoader.php + + - + message: "#^Parameter \\#2 \\$value \\(null\\) of method Chill\\\\MainBundle\\\\Form\\\\ChoiceLoader\\\\PostalCodeChoiceLoader\\:\\:loadValuesForChoices\\(\\) should be contravariant with parameter \\$value \\(\\(callable\\(\\)\\: mixed\\)\\|null\\) of method Symfony\\\\Component\\\\Form\\\\ChoiceList\\\\Loader\\\\ChoiceLoaderInterface\\:\\:loadValuesForChoices\\(\\)$#" + count: 1 + path: src/Bundle/ChillMainBundle/Form/ChoiceLoader/PostalCodeChoiceLoader.php + + - + message: "#^Parameter \\#1 \\$address \\(Chill\\\\MainBundle\\\\Entity\\\\Address\\) of method Chill\\\\MainBundle\\\\Form\\\\DataMapper\\\\AddressDataMapper\\:\\:mapDataToForms\\(\\) should be contravariant with parameter \\$viewData \\(mixed\\) of method Symfony\\\\Component\\\\Form\\\\DataMapperInterface\\:\\:mapDataToForms\\(\\)$#" + count: 1 + path: src/Bundle/ChillMainBundle/Form/DataMapper/AddressDataMapper.php + + - + message: "#^Parameter \\#1 \\$forms \\(Iterator\\) of method Chill\\\\MainBundle\\\\Form\\\\DataMapper\\\\AddressDataMapper\\:\\:mapFormsToData\\(\\) should be contravariant with parameter \\$forms \\(iterable\\&Traversable\\) of method Symfony\\\\Component\\\\Form\\\\DataMapperInterface\\:\\:mapFormsToData\\(\\)$#" + count: 1 + path: src/Bundle/ChillMainBundle/Form/DataMapper/AddressDataMapper.php + + - + message: "#^Parameter \\#2 \\$address \\(Chill\\\\MainBundle\\\\Entity\\\\Address\\) of method Chill\\\\MainBundle\\\\Form\\\\DataMapper\\\\AddressDataMapper\\:\\:mapFormsToData\\(\\) should be contravariant with parameter \\$viewData \\(mixed\\) of method Symfony\\\\Component\\\\Form\\\\DataMapperInterface\\:\\:mapFormsToData\\(\\)$#" + count: 1 + path: src/Bundle/ChillMainBundle/Form/DataMapper/AddressDataMapper.php + + - + message: "#^Parameter \\#2 \\$forms \\(Iterator\\) of method Chill\\\\MainBundle\\\\Form\\\\DataMapper\\\\AddressDataMapper\\:\\:mapDataToForms\\(\\) should be contravariant with parameter \\$forms \\(iterable\\&Traversable\\) of method Symfony\\\\Component\\\\Form\\\\DataMapperInterface\\:\\:mapDataToForms\\(\\)$#" + count: 1 + path: src/Bundle/ChillMainBundle/Form/DataMapper/AddressDataMapper.php + + - + message: "#^Parameter \\#1 \\$value \\(string\\) of method Chill\\\\MainBundle\\\\Form\\\\DataTransformer\\\\IdToEntityDataTransformer\\:\\:reverseTransform\\(\\) should be contravariant with parameter \\$value \\(mixed\\) of method Symfony\\\\Component\\\\Form\\\\DataTransformerInterface\\:\\:reverseTransform\\(\\)$#" + count: 1 + path: src/Bundle/ChillMainBundle/Form/DataTransformer/IdToEntityDataTransformer.php + + - + message: "#^Parameter \\#1 \\$value \\(array\\\\|Chill\\\\MainBundle\\\\Entity\\\\User\\) of method Chill\\\\MainBundle\\\\Form\\\\Type\\\\DataTransformer\\\\EntityToJsonTransformer\\:\\:transform\\(\\) should be contravariant with parameter \\$value \\(mixed\\) of method Symfony\\\\Component\\\\Form\\\\DataTransformerInterface\\:\\:transform\\(\\)$#" + count: 1 + path: src/Bundle/ChillMainBundle/Form/Type/DataTransformer/EntityToJsonTransformer.php + + - + message: "#^Parameter \\#1 \\$array \\(array\\) of method Chill\\\\MainBundle\\\\Form\\\\Type\\\\DataTransformer\\\\MultipleObjectsToIdTransformer\\:\\:transform\\(\\) should be contravariant with parameter \\$value \\(mixed\\) of method Symfony\\\\Component\\\\Form\\\\DataTransformerInterface\\:\\:transform\\(\\)$#" + count: 1 + path: src/Bundle/ChillMainBundle/Form/Type/DataTransformer/MultipleObjectsToIdTransformer.php + + - + message: "#^Parameter \\#1 \\$id \\(string\\) of method Chill\\\\MainBundle\\\\Form\\\\Type\\\\DataTransformer\\\\ObjectToIdTransformer\\:\\:reverseTransform\\(\\) should be contravariant with parameter \\$value \\(mixed\\) of method Symfony\\\\Component\\\\Form\\\\DataTransformerInterface\\:\\:reverseTransform\\(\\)$#" + count: 1 + path: src/Bundle/ChillMainBundle/Form/Type/DataTransformer/ObjectToIdTransformer.php + + - + message: "#^Parameter \\#2 \\$subject \\(Chill\\\\MainBundle\\\\Entity\\\\Workflow\\\\EntityWorkflow\\) of method Chill\\\\MainBundle\\\\Security\\\\Authorization\\\\EntityWorkflowVoter\\:\\:voteOnAttribute\\(\\) should be contravariant with parameter \\$subject \\(mixed\\) of method Symfony\\\\Component\\\\Security\\\\Core\\\\Authorization\\\\Voter\\\\Voter\\:\\:voteOnAttribute\\(\\)$#" + count: 1 + path: src/Bundle/ChillMainBundle/Security/Authorization/EntityWorkflowVoter.php + + - + message: "#^Parameter \\#1 \\$entity \\(Chill\\\\MainBundle\\\\Entity\\\\HasCenterInterface\\) of method Chill\\\\MainBundle\\\\Security\\\\Resolver\\\\DefaultCenterResolver\\:\\:resolveCenter\\(\\) should be contravariant with parameter \\$entity \\(object\\) of method Chill\\\\MainBundle\\\\Security\\\\Resolver\\\\CenterResolverInterface\\:\\:resolveCenter\\(\\)$#" + count: 1 + path: src/Bundle/ChillMainBundle/Security/Resolver/DefaultCenterResolver.php + + - + message: "#^Parameter \\#1 \\$entity \\(Chill\\\\MainBundle\\\\Entity\\\\HasScopeInterface\\|Chill\\\\MainBundle\\\\Entity\\\\HasScopesInterface\\) of method Chill\\\\MainBundle\\\\Security\\\\Resolver\\\\DefaultScopeResolver\\:\\:resolveScope\\(\\) should be contravariant with parameter \\$entity \\(mixed\\) of method Chill\\\\MainBundle\\\\Security\\\\Resolver\\\\ScopeResolverInterface\\:\\:resolveScope\\(\\)$#" + count: 1 + path: src/Bundle/ChillMainBundle/Security/Resolver/DefaultScopeResolver.php + + - + message: "#^Parameter \\#1 \\$address \\(Chill\\\\MainBundle\\\\Entity\\\\Address\\) of method Chill\\\\MainBundle\\\\Serializer\\\\Normalizer\\\\AddressNormalizer\\:\\:normalize\\(\\) should be contravariant with parameter \\$object \\(mixed\\) of method Symfony\\\\Component\\\\Serializer\\\\Normalizer\\\\NormalizerInterface\\:\\:normalize\\(\\)$#" + count: 2 + path: src/Bundle/ChillMainBundle/Serializer/Normalizer/AddressNormalizer.php + + - + message: "#^Parameter \\#2 \\$format \\(string\\) of method Chill\\\\MainBundle\\\\Serializer\\\\Normalizer\\\\AddressNormalizer\\:\\:supportsNormalization\\(\\) should be contravariant with parameter \\$format \\(string\\|null\\) of method Symfony\\\\Component\\\\Serializer\\\\Normalizer\\\\ContextAwareNormalizerInterface\\:\\:supportsNormalization\\(\\)$#" + count: 1 + path: src/Bundle/ChillMainBundle/Serializer/Normalizer/AddressNormalizer.php + + - + message: "#^Parameter \\#2 \\$format \\(string\\) of method Chill\\\\MainBundle\\\\Serializer\\\\Normalizer\\\\AddressNormalizer\\:\\:supportsNormalization\\(\\) should be contravariant with parameter \\$format \\(string\\|null\\) of method Symfony\\\\Component\\\\Serializer\\\\Normalizer\\\\NormalizerInterface\\:\\:supportsNormalization\\(\\)$#" + count: 1 + path: src/Bundle/ChillMainBundle/Serializer/Normalizer/AddressNormalizer.php + + - + message: "#^Parameter \\#2 \\$format \\(string\\) of method Chill\\\\MainBundle\\\\Serializer\\\\Normalizer\\\\CenterNormalizer\\:\\:normalize\\(\\) should be contravariant with parameter \\$format \\(string\\|null\\) of method Symfony\\\\Component\\\\Serializer\\\\Normalizer\\\\NormalizerInterface\\:\\:normalize\\(\\)$#" + count: 1 + path: src/Bundle/ChillMainBundle/Serializer/Normalizer/CenterNormalizer.php + + - + message: "#^Parameter \\#2 \\$format \\(string\\) of method Chill\\\\MainBundle\\\\Serializer\\\\Normalizer\\\\CenterNormalizer\\:\\:supportsNormalization\\(\\) should be contravariant with parameter \\$format \\(string\\|null\\) of method Symfony\\\\Component\\\\Serializer\\\\Normalizer\\\\NormalizerInterface\\:\\:supportsNormalization\\(\\)$#" + count: 1 + path: src/Bundle/ChillMainBundle/Serializer/Normalizer/CenterNormalizer.php + + - + message: "#^Parameter \\#3 \\$format \\(string\\) of method Chill\\\\MainBundle\\\\Serializer\\\\Normalizer\\\\CenterNormalizer\\:\\:denormalize\\(\\) should be contravariant with parameter \\$format \\(string\\|null\\) of method Symfony\\\\Component\\\\Serializer\\\\Normalizer\\\\DenormalizerInterface\\:\\:denormalize\\(\\)$#" + count: 1 + path: src/Bundle/ChillMainBundle/Serializer/Normalizer/CenterNormalizer.php + + - + message: "#^Parameter \\#3 \\$format \\(string\\) of method Chill\\\\MainBundle\\\\Serializer\\\\Normalizer\\\\CenterNormalizer\\:\\:supportsDenormalization\\(\\) should be contravariant with parameter \\$format \\(string\\|null\\) of method Symfony\\\\Component\\\\Serializer\\\\Normalizer\\\\DenormalizerInterface\\:\\:supportsDenormalization\\(\\)$#" + count: 1 + path: src/Bundle/ChillMainBundle/Serializer/Normalizer/CenterNormalizer.php + + - + message: "#^Parameter \\#1 \\$collection \\(Chill\\\\MainBundle\\\\Serializer\\\\Model\\\\Collection\\) of method Chill\\\\MainBundle\\\\Serializer\\\\Normalizer\\\\CollectionNormalizer\\:\\:normalize\\(\\) should be contravariant with parameter \\$object \\(mixed\\) of method Symfony\\\\Component\\\\Serializer\\\\Normalizer\\\\NormalizerInterface\\:\\:normalize\\(\\)$#" + count: 1 + path: src/Bundle/ChillMainBundle/Serializer/Normalizer/CollectionNormalizer.php + + - + message: "#^Parameter \\#2 \\$format \\(string\\) of method Chill\\\\MainBundle\\\\Serializer\\\\Normalizer\\\\CollectionNormalizer\\:\\:supportsNormalization\\(\\) should be contravariant with parameter \\$format \\(string\\|null\\) of method Symfony\\\\Component\\\\Serializer\\\\Normalizer\\\\NormalizerInterface\\:\\:supportsNormalization\\(\\)$#" + count: 1 + path: src/Bundle/ChillMainBundle/Serializer/Normalizer/CollectionNormalizer.php + + - + message: "#^Parameter \\#1 \\$object \\(Chill\\\\MainBundle\\\\Entity\\\\Embeddable\\\\CommentEmbeddable\\) of method Chill\\\\MainBundle\\\\Serializer\\\\Normalizer\\\\CommentEmbeddableDocGenNormalizer\\:\\:normalize\\(\\) should be contravariant with parameter \\$object \\(mixed\\) of method Symfony\\\\Component\\\\Serializer\\\\Normalizer\\\\NormalizerInterface\\:\\:normalize\\(\\)$#" + count: 2 + path: src/Bundle/ChillMainBundle/Serializer/Normalizer/CommentEmbeddableDocGenNormalizer.php + + - + message: "#^Parameter \\#2 \\$format \\(string\\) of method Chill\\\\MainBundle\\\\Serializer\\\\Normalizer\\\\DateNormalizer\\:\\:normalize\\(\\) should be contravariant with parameter \\$format \\(string\\|null\\) of method Symfony\\\\Component\\\\Serializer\\\\Normalizer\\\\NormalizerInterface\\:\\:normalize\\(\\)$#" + count: 2 + path: src/Bundle/ChillMainBundle/Serializer/Normalizer/DateNormalizer.php + + - + message: "#^Parameter \\#2 \\$format \\(string\\) of method Chill\\\\MainBundle\\\\Serializer\\\\Normalizer\\\\DateNormalizer\\:\\:supportsNormalization\\(\\) should be contravariant with parameter \\$format \\(string\\|null\\) of method Symfony\\\\Component\\\\Serializer\\\\Normalizer\\\\ContextAwareNormalizerInterface\\:\\:supportsNormalization\\(\\)$#" + count: 1 + path: src/Bundle/ChillMainBundle/Serializer/Normalizer/DateNormalizer.php + + - + message: "#^Parameter \\#2 \\$format \\(string\\) of method Chill\\\\MainBundle\\\\Serializer\\\\Normalizer\\\\DateNormalizer\\:\\:supportsNormalization\\(\\) should be contravariant with parameter \\$format \\(string\\|null\\) of method Symfony\\\\Component\\\\Serializer\\\\Normalizer\\\\NormalizerInterface\\:\\:supportsNormalization\\(\\)$#" + count: 1 + path: src/Bundle/ChillMainBundle/Serializer/Normalizer/DateNormalizer.php + + - + message: "#^Parameter \\#3 \\$format \\(string\\) of method Chill\\\\MainBundle\\\\Serializer\\\\Normalizer\\\\DateNormalizer\\:\\:denormalize\\(\\) should be contravariant with parameter \\$format \\(string\\|null\\) of method Symfony\\\\Component\\\\Serializer\\\\Normalizer\\\\DenormalizerInterface\\:\\:denormalize\\(\\)$#" + count: 1 + path: src/Bundle/ChillMainBundle/Serializer/Normalizer/DateNormalizer.php + + - + message: "#^Parameter \\#3 \\$format \\(string\\) of method Chill\\\\MainBundle\\\\Serializer\\\\Normalizer\\\\DateNormalizer\\:\\:supportsDenormalization\\(\\) should be contravariant with parameter \\$format \\(string\\|null\\) of method Symfony\\\\Component\\\\Serializer\\\\Normalizer\\\\DenormalizerInterface\\:\\:supportsDenormalization\\(\\)$#" + count: 1 + path: src/Bundle/ChillMainBundle/Serializer/Normalizer/DateNormalizer.php + + - + message: "#^Parameter \\#3 \\$format \\(string\\) of method Chill\\\\MainBundle\\\\Serializer\\\\Normalizer\\\\DiscriminatedObjectDenormalizer\\:\\:denormalize\\(\\) should be contravariant with parameter \\$format \\(string\\|null\\) of method Symfony\\\\Component\\\\Serializer\\\\Normalizer\\\\DenormalizerInterface\\:\\:denormalize\\(\\)$#" + count: 2 + path: src/Bundle/ChillMainBundle/Serializer/Normalizer/DiscriminatedObjectDenormalizer.php + + - + message: "#^Parameter \\#3 \\$format \\(string\\) of method Chill\\\\MainBundle\\\\Serializer\\\\Normalizer\\\\DiscriminatedObjectDenormalizer\\:\\:supportsDenormalization\\(\\) should be contravariant with parameter \\$format \\(string\\|null\\) of method Symfony\\\\Component\\\\Serializer\\\\Normalizer\\\\ContextAwareDenormalizerInterface\\:\\:supportsDenormalization\\(\\)$#" + count: 1 + path: src/Bundle/ChillMainBundle/Serializer/Normalizer/DiscriminatedObjectDenormalizer.php + + - + message: "#^Parameter \\#3 \\$format \\(string\\) of method Chill\\\\MainBundle\\\\Serializer\\\\Normalizer\\\\DiscriminatedObjectDenormalizer\\:\\:supportsDenormalization\\(\\) should be contravariant with parameter \\$format \\(string\\|null\\) of method Symfony\\\\Component\\\\Serializer\\\\Normalizer\\\\DenormalizerInterface\\:\\:supportsDenormalization\\(\\)$#" + count: 1 + path: src/Bundle/ChillMainBundle/Serializer/Normalizer/DiscriminatedObjectDenormalizer.php + + - + message: "#^Parameter \\#3 \\$format \\(string\\) of method Chill\\\\MainBundle\\\\Serializer\\\\Normalizer\\\\DoctrineExistingEntityNormalizer\\:\\:denormalize\\(\\) should be contravariant with parameter \\$format \\(string\\|null\\) of method Symfony\\\\Component\\\\Serializer\\\\Normalizer\\\\DenormalizerInterface\\:\\:denormalize\\(\\)$#" + count: 1 + path: src/Bundle/ChillMainBundle/Serializer/Normalizer/DoctrineExistingEntityNormalizer.php + + - + message: "#^Parameter \\#3 \\$format \\(string\\) of method Chill\\\\MainBundle\\\\Serializer\\\\Normalizer\\\\DoctrineExistingEntityNormalizer\\:\\:supportsDenormalization\\(\\) should be contravariant with parameter \\$format \\(string\\|null\\) of method Symfony\\\\Component\\\\Serializer\\\\Normalizer\\\\DenormalizerInterface\\:\\:supportsDenormalization\\(\\)$#" + count: 1 + path: src/Bundle/ChillMainBundle/Serializer/Normalizer/DoctrineExistingEntityNormalizer.php + + - + message: "#^Parameter \\#1 \\$object \\(Chill\\\\MainBundle\\\\Entity\\\\Workflow\\\\EntityWorkflow\\) of method Chill\\\\MainBundle\\\\Serializer\\\\Normalizer\\\\EntityWorkflowNormalizer\\:\\:normalize\\(\\) should be contravariant with parameter \\$object \\(mixed\\) of method Symfony\\\\Component\\\\Serializer\\\\Normalizer\\\\NormalizerInterface\\:\\:normalize\\(\\)$#" + count: 1 + path: src/Bundle/ChillMainBundle/Serializer/Normalizer/EntityWorkflowNormalizer.php + + - + message: "#^Parameter \\#1 \\$object \\(Chill\\\\MainBundle\\\\Entity\\\\Workflow\\\\EntityWorkflowStep\\) of method Chill\\\\MainBundle\\\\Serializer\\\\Normalizer\\\\EntityWorkflowStepNormalizer\\:\\:normalize\\(\\) should be contravariant with parameter \\$object \\(mixed\\) of method Symfony\\\\Component\\\\Serializer\\\\Normalizer\\\\NormalizerInterface\\:\\:normalize\\(\\)$#" + count: 1 + path: src/Bundle/ChillMainBundle/Serializer/Normalizer/EntityWorkflowStepNormalizer.php + + - + message: "#^Parameter \\#1 \\$object \\(Chill\\\\MainBundle\\\\Entity\\\\Notification\\) of method Chill\\\\MainBundle\\\\Serializer\\\\Normalizer\\\\NotificationNormalizer\\:\\:normalize\\(\\) should be contravariant with parameter \\$object \\(mixed\\) of method Symfony\\\\Component\\\\Serializer\\\\Normalizer\\\\NormalizerInterface\\:\\:normalize\\(\\)$#" + count: 1 + path: src/Bundle/ChillMainBundle/Serializer/Normalizer/NotificationNormalizer.php + + - + message: "#^Return type \\(array\\|ArrayObject\\|bool\\|float\\|int\\|string\\|void\\|null\\) of method Chill\\\\MainBundle\\\\Serializer\\\\Normalizer\\\\NotificationNormalizer\\:\\:normalize\\(\\) should be covariant with return type \\(array\\|ArrayObject\\|bool\\|float\\|int\\|string\\|null\\) of method Symfony\\\\Component\\\\Serializer\\\\Normalizer\\\\NormalizerInterface\\:\\:normalize\\(\\)$#" + count: 1 + path: src/Bundle/ChillMainBundle/Serializer/Normalizer/NotificationNormalizer.php + + - + message: "#^Parameter \\#1 \\$data \\(string\\|null\\) of method Chill\\\\MainBundle\\\\Serializer\\\\Normalizer\\\\PhonenumberNormalizer\\:\\:denormalize\\(\\) should be contravariant with parameter \\$data \\(mixed\\) of method Symfony\\\\Component\\\\Serializer\\\\Normalizer\\\\DenormalizerInterface\\:\\:denormalize\\(\\)$#" + count: 1 + path: src/Bundle/ChillMainBundle/Serializer/Normalizer/PhonenumberNormalizer.php + + - + message: "#^Parameter \\#3 \\$format \\(string\\) of method Chill\\\\MainBundle\\\\Serializer\\\\Normalizer\\\\PhonenumberNormalizer\\:\\:supportsDenormalization\\(\\) should be contravariant with parameter \\$format \\(string\\|null\\) of method Symfony\\\\Component\\\\Serializer\\\\Normalizer\\\\DenormalizerInterface\\:\\:supportsDenormalization\\(\\)$#" + count: 1 + path: src/Bundle/ChillMainBundle/Serializer/Normalizer/PhonenumberNormalizer.php + + - + message: "#^Parameter \\#3 \\$format \\(string\\) of method Chill\\\\MainBundle\\\\Serializer\\\\Normalizer\\\\PointNormalizer\\:\\:denormalize\\(\\) should be contravariant with parameter \\$format \\(string\\|null\\) of method Symfony\\\\Component\\\\Serializer\\\\Normalizer\\\\DenormalizerInterface\\:\\:denormalize\\(\\)$#" + count: 1 + path: src/Bundle/ChillMainBundle/Serializer/Normalizer/PointNormalizer.php + + - + message: "#^Parameter \\#3 \\$format \\(string\\) of method Chill\\\\MainBundle\\\\Serializer\\\\Normalizer\\\\PointNormalizer\\:\\:supportsDenormalization\\(\\) should be contravariant with parameter \\$format \\(string\\|null\\) of method Symfony\\\\Component\\\\Serializer\\\\Normalizer\\\\DenormalizerInterface\\:\\:supportsDenormalization\\(\\)$#" + count: 1 + path: src/Bundle/ChillMainBundle/Serializer/Normalizer/PointNormalizer.php + + - + message: "#^Parameter \\#2 \\$format \\(string\\) of method Chill\\\\MainBundle\\\\Serializer\\\\Normalizer\\\\PrivateCommentEmbeddableNormalizer\\:\\:normalize\\(\\) should be contravariant with parameter \\$format \\(string\\|null\\) of method Symfony\\\\Component\\\\Serializer\\\\Normalizer\\\\NormalizerInterface\\:\\:normalize\\(\\)$#" + count: 1 + path: src/Bundle/ChillMainBundle/Serializer/Normalizer/PrivateCommentEmbeddableNormalizer.php + + - + message: "#^Parameter \\#2 \\$format \\(string\\) of method Chill\\\\MainBundle\\\\Serializer\\\\Normalizer\\\\UserNormalizer\\:\\:normalize\\(\\) should be contravariant with parameter \\$format \\(string\\|null\\) of method Symfony\\\\Component\\\\Serializer\\\\Normalizer\\\\NormalizerInterface\\:\\:normalize\\(\\)$#" + count: 2 + path: src/Bundle/ChillMainBundle/Serializer/Normalizer/UserNormalizer.php + + - + message: "#^Parameter \\#2 \\$format \\(string\\) of method Chill\\\\MainBundle\\\\Serializer\\\\Normalizer\\\\UserNormalizer\\:\\:supportsNormalization\\(\\) should be contravariant with parameter \\$format \\(string\\|null\\) of method Symfony\\\\Component\\\\Serializer\\\\Normalizer\\\\ContextAwareNormalizerInterface\\:\\:supportsNormalization\\(\\)$#" + count: 1 + path: src/Bundle/ChillMainBundle/Serializer/Normalizer/UserNormalizer.php + + - + message: "#^Parameter \\#2 \\$format \\(string\\) of method Chill\\\\MainBundle\\\\Serializer\\\\Normalizer\\\\UserNormalizer\\:\\:supportsNormalization\\(\\) should be contravariant with parameter \\$format \\(string\\|null\\) of method Symfony\\\\Component\\\\Serializer\\\\Normalizer\\\\NormalizerInterface\\:\\:supportsNormalization\\(\\)$#" + count: 1 + path: src/Bundle/ChillMainBundle/Serializer/Normalizer/UserNormalizer.php + + + - + message: "#^Parameter \\#1 \\$value \\(string\\) of method Chill\\\\MainBundle\\\\Validation\\\\Validator\\\\ValidPhonenumber\\:\\:validate\\(\\) should be contravariant with parameter \\$value \\(mixed\\) of method Symfony\\\\Component\\\\Validator\\\\ConstraintValidatorInterface\\:\\:validate\\(\\)$#" + count: 2 + path: src/Bundle/ChillMainBundle/Validation/Validator/ValidPhonenumber.php + + - + message: "#^Parameter \\#2 \\$constraint \\(Chill\\\\MainBundle\\\\Validation\\\\Constraint\\\\PhonenumberConstraint\\) of method Chill\\\\MainBundle\\\\Validation\\\\Validator\\\\ValidPhonenumber\\:\\:validate\\(\\) should be contravariant with parameter \\$constraint \\(Symfony\\\\Component\\\\Validator\\\\Constraint\\) of method Symfony\\\\Component\\\\Validator\\\\ConstraintValidatorInterface\\:\\:validate\\(\\)$#" + count: 2 + path: src/Bundle/ChillMainBundle/Validation/Validator/ValidPhonenumber.php + + - + message: "#^Parameter \\#1 \\$value \\(object\\) of method Chill\\\\MainBundle\\\\Validator\\\\Constraints\\\\Entity\\\\UserCircleConsistencyValidator\\:\\:validate\\(\\) should be contravariant with parameter \\$value \\(mixed\\) of method Symfony\\\\Component\\\\Validator\\\\ConstraintValidatorInterface\\:\\:validate\\(\\)$#" + count: 2 + path: src/Bundle/ChillMainBundle/Validator/Constraints/Entity/UserCircleConsistencyValidator.php + + - + message: "#^Parameter \\#2 \\$constraint \\(Chill\\\\MainBundle\\\\Validator\\\\Constraints\\\\Entity\\\\UserCircleConsistency\\) of method Chill\\\\MainBundle\\\\Validator\\\\Constraints\\\\Entity\\\\UserCircleConsistencyValidator\\:\\:validate\\(\\) should be contravariant with parameter \\$constraint \\(Symfony\\\\Component\\\\Validator\\\\Constraint\\) of method Symfony\\\\Component\\\\Validator\\\\ConstraintValidatorInterface\\:\\:validate\\(\\)$#" + count: 2 + path: src/Bundle/ChillMainBundle/Validator/Constraints/Entity/UserCircleConsistencyValidator.php + + - + message: "#^Parameter \\#1 \\$value \\(Chill\\\\MainBundle\\\\Entity\\\\Workflow\\\\EntityWorkflow\\) of method Chill\\\\MainBundle\\\\Workflow\\\\Validator\\\\EntityWorkflowCreationValidator\\:\\:validate\\(\\) should be contravariant with parameter \\$value \\(mixed\\) of method Symfony\\\\Component\\\\Validator\\\\ConstraintValidatorInterface\\:\\:validate\\(\\)$#" + count: 2 + path: src/Bundle/ChillMainBundle/Workflow/Validator/EntityWorkflowCreationValidator.php + + - + message: "#^Parameter \\#1 \\$value \\(Chill\\\\MainBundle\\\\Entity\\\\Workflow\\\\EntityWorkflowStep\\) of method Chill\\\\MainBundle\\\\Workflow\\\\Validator\\\\StepDestValidValidator\\:\\:validate\\(\\) should be contravariant with parameter \\$value \\(mixed\\) of method Symfony\\\\Component\\\\Validator\\\\ConstraintValidatorInterface\\:\\:validate\\(\\)$#" + count: 2 + path: src/Bundle/ChillMainBundle/Workflow/Validator/StepDestValidValidator.php + + - + message: "#^Parameter \\#3 \\$query \\(Doctrine\\\\ORM\\\\QueryBuilder\\) of method Chill\\\\PersonBundle\\\\Controller\\\\HouseholdCompositionTypeApiController\\:\\:customizeQuery\\(\\) should be contravariant with parameter \\$query \\(mixed\\) of method Chill\\\\MainBundle\\\\CRUD\\\\Controller\\\\AbstractCRUDController\\:\\:customizeQuery\\(\\)$#" + count: 1 + path: src/Bundle/ChillPersonBundle/Controller/HouseholdCompositionTypeApiController.php + + - + message: "#^Return type \\(Doctrine\\\\Common\\\\Collections\\\\Collection\\) of method Chill\\\\PersonBundle\\\\Entity\\\\AccompanyingPeriod\\:\\:getScopes\\(\\) should be covariant with return type \\(iterable\\\\) of method Chill\\\\MainBundle\\\\Entity\\\\HasScopesInterface\\:\\:getScopes\\(\\)$#" + count: 1 + path: src/Bundle/ChillPersonBundle/Entity/AccompanyingPeriod.php + + - + message: "#^Return type \\(Chill\\\\MainBundle\\\\Entity\\\\Center\\|null\\) of method Chill\\\\PersonBundle\\\\Entity\\\\Person\\:\\:getCenter\\(\\) should be covariant with return type \\(Chill\\\\MainBundle\\\\Entity\\\\Center\\) of method Chill\\\\MainBundle\\\\Entity\\\\HasCenterInterface\\:\\:getCenter\\(\\)$#" + count: 1 + path: src/Bundle/ChillPersonBundle/Entity/Person.php + + - + message: "#^Parameter \\#1 \\$value \\(null\\) of method Chill\\\\PersonBundle\\\\Form\\\\ChoiceLoader\\\\PersonChoiceLoader\\:\\:loadChoiceList\\(\\) should be contravariant with parameter \\$value \\(\\(callable\\(\\)\\: mixed\\)\\|null\\) of method Symfony\\\\Component\\\\Form\\\\ChoiceList\\\\Loader\\\\ChoiceLoaderInterface\\:\\:loadChoiceList\\(\\)$#" + count: 1 + path: src/Bundle/ChillPersonBundle/Form/ChoiceLoader/PersonChoiceLoader.php + + - + message: "#^Parameter \\#2 \\$value \\(null\\) of method Chill\\\\PersonBundle\\\\Form\\\\ChoiceLoader\\\\PersonChoiceLoader\\:\\:loadChoicesForValues\\(\\) should be contravariant with parameter \\$value \\(\\(callable\\(\\)\\: mixed\\)\\|null\\) of method Symfony\\\\Component\\\\Form\\\\ChoiceList\\\\Loader\\\\ChoiceLoaderInterface\\:\\:loadChoicesForValues\\(\\)$#" + count: 1 + path: src/Bundle/ChillPersonBundle/Form/ChoiceLoader/PersonChoiceLoader.php + + - + message: "#^Parameter \\#2 \\$value \\(null\\) of method Chill\\\\PersonBundle\\\\Form\\\\ChoiceLoader\\\\PersonChoiceLoader\\:\\:loadValuesForChoices\\(\\) should be contravariant with parameter \\$value \\(\\(callable\\(\\)\\: mixed\\)\\|null\\) of method Symfony\\\\Component\\\\Form\\\\ChoiceList\\\\Loader\\\\ChoiceLoaderInterface\\:\\:loadValuesForChoices\\(\\)$#" + count: 1 + path: src/Bundle/ChillPersonBundle/Form/ChoiceLoader/PersonChoiceLoader.php + + - + message: "#^Parameter \\#2 \\$viewData \\(Doctrine\\\\Common\\\\Collections\\\\Collection\\) of method Chill\\\\PersonBundle\\\\Form\\\\DataMapper\\\\PersonAltNameDataMapper\\:\\:mapFormsToData\\(\\) should be contravariant with parameter \\$viewData \\(mixed\\) of method Symfony\\\\Component\\\\Form\\\\DataMapperInterface\\:\\:mapFormsToData\\(\\)$#" + count: 1 + path: src/Bundle/ChillPersonBundle/Form/DataMapper/PersonAltNameDataMapper.php + + - + message: "#^Parameter \\#3 \\$limit \\(int\\) of method Chill\\\\PersonBundle\\\\Repository\\\\AccompanyingPeriod\\\\AccompanyingPeriodWorkEvaluationRepository\\:\\:findBy\\(\\) should be contravariant with parameter \\$limit \\(int\\|null\\) of method Doctrine\\\\Persistence\\\\ObjectRepository\\\\:\\:findBy\\(\\)$#" + count: 1 + path: src/Bundle/ChillPersonBundle/Repository/AccompanyingPeriod/AccompanyingPeriodWorkEvaluationRepository.php + + - + message: "#^Parameter \\#4 \\$offset \\(int\\) of method Chill\\\\PersonBundle\\\\Repository\\\\AccompanyingPeriod\\\\AccompanyingPeriodWorkEvaluationRepository\\:\\:findBy\\(\\) should be contravariant with parameter \\$offset \\(int\\|null\\) of method Doctrine\\\\Persistence\\\\ObjectRepository\\\\:\\:findBy\\(\\)$#" + count: 1 + path: src/Bundle/ChillPersonBundle/Repository/AccompanyingPeriod/AccompanyingPeriodWorkEvaluationRepository.php + + - + message: "#^Parameter \\#3 \\$limit \\(int\\) of method Chill\\\\PersonBundle\\\\Repository\\\\Household\\\\HouseholdCompositionRepository\\:\\:findBy\\(\\) should be contravariant with parameter \\$limit \\(int\\|null\\) of method Doctrine\\\\Persistence\\\\ObjectRepository\\\\:\\:findBy\\(\\)$#" + count: 1 + path: src/Bundle/ChillPersonBundle/Repository/Household/HouseholdCompositionRepository.php + + - + message: "#^Parameter \\#4 \\$offset \\(int\\) of method Chill\\\\PersonBundle\\\\Repository\\\\Household\\\\HouseholdCompositionRepository\\:\\:findBy\\(\\) should be contravariant with parameter \\$offset \\(int\\|null\\) of method Doctrine\\\\Persistence\\\\ObjectRepository\\\\:\\:findBy\\(\\)$#" + count: 1 + path: src/Bundle/ChillPersonBundle/Repository/Household/HouseholdCompositionRepository.php + + - + message: "#^Parameter \\#3 \\$limit \\(int\\) of method Chill\\\\PersonBundle\\\\Repository\\\\Household\\\\HouseholdCompositionRepositoryInterface\\:\\:findBy\\(\\) should be contravariant with parameter \\$limit \\(int\\|null\\) of method Doctrine\\\\Persistence\\\\ObjectRepository\\\\:\\:findBy\\(\\)$#" + count: 1 + path: src/Bundle/ChillPersonBundle/Repository/Household/HouseholdCompositionRepositoryInterface.php + + - + message: "#^Parameter \\#4 \\$offset \\(int\\) of method Chill\\\\PersonBundle\\\\Repository\\\\Household\\\\HouseholdCompositionRepositoryInterface\\:\\:findBy\\(\\) should be contravariant with parameter \\$offset \\(int\\|null\\) of method Doctrine\\\\Persistence\\\\ObjectRepository\\\\:\\:findBy\\(\\)$#" + count: 1 + path: src/Bundle/ChillPersonBundle/Repository/Household/HouseholdCompositionRepositoryInterface.php + + - + message: "#^Return type \\(class\\-string\\) of method Chill\\\\PersonBundle\\\\Repository\\\\SocialWork\\\\EvaluationRepository\\:\\:getClassName\\(\\) should be covariant with return type \\(class\\-string\\\\) of method Doctrine\\\\Persistence\\\\ObjectRepository\\\\:\\:getClassName\\(\\)$#" + count: 1 + path: src/Bundle/ChillPersonBundle/Repository/SocialWork/EvaluationRepository.php + + - + message: "#^Return type \\(class\\-string\\) of method Chill\\\\PersonBundle\\\\Repository\\\\SocialWork\\\\EvaluationRepositoryInterface\\:\\:getClassName\\(\\) should be covariant with return type \\(class\\-string\\\\) of method Doctrine\\\\Persistence\\\\ObjectRepository\\\\:\\:getClassName\\(\\)$#" + count: 1 + path: src/Bundle/ChillPersonBundle/Repository/SocialWork/EvaluationRepositoryInterface.php + + - + message: "#^Return type \\(class\\-string\\) of method Chill\\\\PersonBundle\\\\Repository\\\\SocialWork\\\\GoalRepository\\:\\:getClassName\\(\\) should be covariant with return type \\(class\\-string\\\\) of method Doctrine\\\\Persistence\\\\ObjectRepository\\\\:\\:getClassName\\(\\)$#" + count: 1 + path: src/Bundle/ChillPersonBundle/Repository/SocialWork/GoalRepository.php + + - + message: "#^Return type \\(class\\-string\\) of method Chill\\\\PersonBundle\\\\Repository\\\\SocialWork\\\\ResultRepository\\:\\:getClassName\\(\\) should be covariant with return type \\(class\\-string\\\\) of method Doctrine\\\\Persistence\\\\ObjectRepository\\\\:\\:getClassName\\(\\)$#" + count: 1 + path: src/Bundle/ChillPersonBundle/Repository/SocialWork/ResultRepository.php + + - + message: "#^Return type \\(class\\-string\\) of method Chill\\\\PersonBundle\\\\Repository\\\\SocialWork\\\\SocialActionRepository\\:\\:getClassName\\(\\) should be covariant with return type \\(class\\-string\\\\) of method Doctrine\\\\Persistence\\\\ObjectRepository\\\\:\\:getClassName\\(\\)$#" + count: 1 + path: src/Bundle/ChillPersonBundle/Repository/SocialWork/SocialActionRepository.php + + - + message: "#^Return type \\(class\\-string\\) of method Chill\\\\PersonBundle\\\\Repository\\\\SocialWork\\\\SocialIssueRepository\\:\\:getClassName\\(\\) should be covariant with return type \\(class\\-string\\\\) of method Doctrine\\\\Persistence\\\\ObjectRepository\\\\:\\:getClassName\\(\\)$#" + count: 1 + path: src/Bundle/ChillPersonBundle/Repository/SocialWork/SocialIssueRepository.php + + - + message: "#^Parameter \\#2 \\$subject \\(Chill\\\\PersonBundle\\\\Entity\\\\AccompanyingPeriod\\\\AccompanyingPeriodWorkEvaluationDocument\\) of method Chill\\\\PersonBundle\\\\Security\\\\Authorization\\\\AccompanyingPeriodWorkEvaluationDocumentVoter\\:\\:voteOnAttribute\\(\\) should be contravariant with parameter \\$subject \\(mixed\\) of method Symfony\\\\Component\\\\Security\\\\Core\\\\Authorization\\\\Voter\\\\Voter\\:\\:voteOnAttribute\\(\\)$#" + count: 1 + path: src/Bundle/ChillPersonBundle/Security/Authorization/AccompanyingPeriodWorkEvaluationDocumentVoter.php + + - + message: "#^Parameter \\#2 \\$subject \\(Chill\\\\PersonBundle\\\\Entity\\\\AccompanyingPeriod\\\\AccompanyingPeriodWorkEvaluation\\) of method Chill\\\\PersonBundle\\\\Security\\\\Authorization\\\\AccompanyingPeriodWorkEvaluationVoter\\:\\:voteOnAttribute\\(\\) should be contravariant with parameter \\$subject \\(mixed\\) of method Symfony\\\\Component\\\\Security\\\\Core\\\\Authorization\\\\Voter\\\\Voter\\:\\:voteOnAttribute\\(\\)$#" + count: 1 + path: src/Bundle/ChillPersonBundle/Security/Authorization/AccompanyingPeriodWorkEvaluationVoter.php + + - + message: "#^Parameter \\#2 \\$subject \\(Chill\\\\PersonBundle\\\\Entity\\\\AccompanyingPeriod\\\\AccompanyingPeriodWork\\) of method Chill\\\\PersonBundle\\\\Security\\\\Authorization\\\\AccompanyingPeriodWorkVoter\\:\\:voteOnAttribute\\(\\) should be contravariant with parameter \\$subject \\(mixed\\) of method Symfony\\\\Component\\\\Security\\\\Core\\\\Authorization\\\\Voter\\\\Voter\\:\\:voteOnAttribute\\(\\)$#" + count: 1 + path: src/Bundle/ChillPersonBundle/Security/Authorization/AccompanyingPeriodWorkVoter.php + + - + message: "#^Parameter \\#1 \\$period \\(Chill\\\\PersonBundle\\\\Entity\\\\AccompanyingPeriod\\|null\\) of method Chill\\\\PersonBundle\\\\Serializer\\\\Normalizer\\\\AccompanyingPeriodDocGenNormalizer\\:\\:normalize\\(\\) should be contravariant with parameter \\$object \\(mixed\\) of method Symfony\\\\Component\\\\Serializer\\\\Normalizer\\\\NormalizerInterface\\:\\:normalize\\(\\)$#" + count: 2 + path: src/Bundle/ChillPersonBundle/Serializer/Normalizer/AccompanyingPeriodDocGenNormalizer.php + + - + message: "#^Parameter \\#2 \\$format \\(string\\) of method Chill\\\\PersonBundle\\\\Serializer\\\\Normalizer\\\\AccompanyingPeriodDocGenNormalizer\\:\\:supportsNormalization\\(\\) should be contravariant with parameter \\$format \\(string\\|null\\) of method Symfony\\\\Component\\\\Serializer\\\\Normalizer\\\\ContextAwareNormalizerInterface\\:\\:supportsNormalization\\(\\)$#" + count: 1 + path: src/Bundle/ChillPersonBundle/Serializer/Normalizer/AccompanyingPeriodDocGenNormalizer.php + + - + message: "#^Parameter \\#2 \\$format \\(string\\) of method Chill\\\\PersonBundle\\\\Serializer\\\\Normalizer\\\\AccompanyingPeriodDocGenNormalizer\\:\\:supportsNormalization\\(\\) should be contravariant with parameter \\$format \\(string\\|null\\) of method Symfony\\\\Component\\\\Serializer\\\\Normalizer\\\\NormalizerInterface\\:\\:supportsNormalization\\(\\)$#" + count: 1 + path: src/Bundle/ChillPersonBundle/Serializer/Normalizer/AccompanyingPeriodDocGenNormalizer.php + + - + message: "#^Parameter \\#1 \\$origin \\(Chill\\\\PersonBundle\\\\Entity\\\\AccompanyingPeriod\\\\Origin\\) of method Chill\\\\PersonBundle\\\\Serializer\\\\Normalizer\\\\AccompanyingPeriodOriginNormalizer\\:\\:normalize\\(\\) should be contravariant with parameter \\$object \\(mixed\\) of method Symfony\\\\Component\\\\Serializer\\\\Normalizer\\\\NormalizerInterface\\:\\:normalize\\(\\)$#" + count: 1 + path: src/Bundle/ChillPersonBundle/Serializer/Normalizer/AccompanyingPeriodOriginNormalizer.php + + - + message: "#^Parameter \\#2 \\$format \\(string\\) of method Chill\\\\PersonBundle\\\\Serializer\\\\Normalizer\\\\AccompanyingPeriodOriginNormalizer\\:\\:supportsNormalization\\(\\) should be contravariant with parameter \\$format \\(string\\|null\\) of method Symfony\\\\Component\\\\Serializer\\\\Normalizer\\\\NormalizerInterface\\:\\:supportsNormalization\\(\\)$#" + count: 1 + path: src/Bundle/ChillPersonBundle/Serializer/Normalizer/AccompanyingPeriodOriginNormalizer.php + + - + message: "#^Parameter \\#1 \\$participation \\(Chill\\\\PersonBundle\\\\Entity\\\\AccompanyingPeriodParticipation\\) of method Chill\\\\PersonBundle\\\\Serializer\\\\Normalizer\\\\AccompanyingPeriodParticipationNormalizer\\:\\:normalize\\(\\) should be contravariant with parameter \\$object \\(mixed\\) of method Symfony\\\\Component\\\\Serializer\\\\Normalizer\\\\NormalizerInterface\\:\\:normalize\\(\\)$#" + count: 1 + path: src/Bundle/ChillPersonBundle/Serializer/Normalizer/AccompanyingPeriodParticipationNormalizer.php + + - + message: "#^Parameter \\#2 \\$format \\(string\\) of method Chill\\\\PersonBundle\\\\Serializer\\\\Normalizer\\\\AccompanyingPeriodParticipationNormalizer\\:\\:supportsNormalization\\(\\) should be contravariant with parameter \\$format \\(string\\|null\\) of method Symfony\\\\Component\\\\Serializer\\\\Normalizer\\\\NormalizerInterface\\:\\:supportsNormalization\\(\\)$#" + count: 1 + path: src/Bundle/ChillPersonBundle/Serializer/Normalizer/AccompanyingPeriodParticipationNormalizer.php + + - + message: "#^Parameter \\#3 \\$format \\(string\\) of method Chill\\\\PersonBundle\\\\Serializer\\\\Normalizer\\\\AccompanyingPeriodResourceNormalizer\\:\\:denormalize\\(\\) should be contravariant with parameter \\$format \\(string\\|null\\) of method Symfony\\\\Component\\\\Serializer\\\\Normalizer\\\\DenormalizerInterface\\:\\:denormalize\\(\\)$#" + count: 1 + path: src/Bundle/ChillPersonBundle/Serializer/Normalizer/AccompanyingPeriodResourceNormalizer.php + + - + message: "#^Parameter \\#3 \\$format \\(string\\) of method Chill\\\\PersonBundle\\\\Serializer\\\\Normalizer\\\\AccompanyingPeriodResourceNormalizer\\:\\:supportsDenormalization\\(\\) should be contravariant with parameter \\$format \\(string\\|null\\) of method Symfony\\\\Component\\\\Serializer\\\\Normalizer\\\\DenormalizerInterface\\:\\:supportsDenormalization\\(\\)$#" + count: 1 + path: src/Bundle/ChillPersonBundle/Serializer/Normalizer/AccompanyingPeriodResourceNormalizer.php + + - + message: "#^Parameter \\#3 \\$format \\(string\\) of method Chill\\\\PersonBundle\\\\Serializer\\\\Normalizer\\\\AccompanyingPeriodWorkDenormalizer\\:\\:denormalize\\(\\) should be contravariant with parameter \\$format \\(string\\|null\\) of method Symfony\\\\Component\\\\Serializer\\\\Normalizer\\\\DenormalizerInterface\\:\\:denormalize\\(\\)$#" + count: 2 + path: src/Bundle/ChillPersonBundle/Serializer/Normalizer/AccompanyingPeriodWorkDenormalizer.php + + - + message: "#^Parameter \\#3 \\$format \\(string\\) of method Chill\\\\PersonBundle\\\\Serializer\\\\Normalizer\\\\AccompanyingPeriodWorkDenormalizer\\:\\:supportsDenormalization\\(\\) should be contravariant with parameter \\$format \\(string\\|null\\) of method Symfony\\\\Component\\\\Serializer\\\\Normalizer\\\\ContextAwareDenormalizerInterface\\:\\:supportsDenormalization\\(\\)$#" + count: 1 + path: src/Bundle/ChillPersonBundle/Serializer/Normalizer/AccompanyingPeriodWorkDenormalizer.php + + - + message: "#^Parameter \\#3 \\$format \\(string\\) of method Chill\\\\PersonBundle\\\\Serializer\\\\Normalizer\\\\AccompanyingPeriodWorkDenormalizer\\:\\:supportsDenormalization\\(\\) should be contravariant with parameter \\$format \\(string\\|null\\) of method Symfony\\\\Component\\\\Serializer\\\\Normalizer\\\\DenormalizerInterface\\:\\:supportsDenormalization\\(\\)$#" + count: 1 + path: src/Bundle/ChillPersonBundle/Serializer/Normalizer/AccompanyingPeriodWorkDenormalizer.php + + - + message: "#^Parameter \\#3 \\$format \\(string\\) of method Chill\\\\PersonBundle\\\\Serializer\\\\Normalizer\\\\AccompanyingPeriodWorkEvaluationDenormalizer\\:\\:denormalize\\(\\) should be contravariant with parameter \\$format \\(string\\|null\\) of method Symfony\\\\Component\\\\Serializer\\\\Normalizer\\\\DenormalizerInterface\\:\\:denormalize\\(\\)$#" + count: 2 + path: src/Bundle/ChillPersonBundle/Serializer/Normalizer/AccompanyingPeriodWorkEvaluationDenormalizer.php + + - + message: "#^Parameter \\#3 \\$format \\(string\\) of method Chill\\\\PersonBundle\\\\Serializer\\\\Normalizer\\\\AccompanyingPeriodWorkEvaluationDenormalizer\\:\\:supportsDenormalization\\(\\) should be contravariant with parameter \\$format \\(string\\|null\\) of method Symfony\\\\Component\\\\Serializer\\\\Normalizer\\\\ContextAwareDenormalizerInterface\\:\\:supportsDenormalization\\(\\)$#" + count: 1 + path: src/Bundle/ChillPersonBundle/Serializer/Normalizer/AccompanyingPeriodWorkEvaluationDenormalizer.php + + - + message: "#^Parameter \\#3 \\$format \\(string\\) of method Chill\\\\PersonBundle\\\\Serializer\\\\Normalizer\\\\AccompanyingPeriodWorkEvaluationDenormalizer\\:\\:supportsDenormalization\\(\\) should be contravariant with parameter \\$format \\(string\\|null\\) of method Symfony\\\\Component\\\\Serializer\\\\Normalizer\\\\DenormalizerInterface\\:\\:supportsDenormalization\\(\\)$#" + count: 1 + path: src/Bundle/ChillPersonBundle/Serializer/Normalizer/AccompanyingPeriodWorkEvaluationDenormalizer.php + + - + message: "#^Parameter \\#1 \\$object \\(Chill\\\\PersonBundle\\\\Entity\\\\AccompanyingPeriod\\\\AccompanyingPeriodWorkEvaluation\\) of method Chill\\\\PersonBundle\\\\Serializer\\\\Normalizer\\\\AccompanyingPeriodWorkEvaluationNormalizer\\:\\:normalize\\(\\) should be contravariant with parameter \\$object \\(mixed\\) of method Symfony\\\\Component\\\\Serializer\\\\Normalizer\\\\NormalizerInterface\\:\\:normalize\\(\\)$#" + count: 2 + path: src/Bundle/ChillPersonBundle/Serializer/Normalizer/AccompanyingPeriodWorkEvaluationNormalizer.php + + - + message: "#^Parameter \\#1 \\$object \\(Chill\\\\PersonBundle\\\\Entity\\\\AccompanyingPeriod\\\\AccompanyingPeriodWork\\) of method Chill\\\\PersonBundle\\\\Serializer\\\\Normalizer\\\\AccompanyingPeriodWorkNormalizer\\:\\:normalize\\(\\) should be contravariant with parameter \\$object \\(mixed\\) of method Symfony\\\\Component\\\\Serializer\\\\Normalizer\\\\NormalizerInterface\\:\\:normalize\\(\\)$#" + count: 2 + path: src/Bundle/ChillPersonBundle/Serializer/Normalizer/AccompanyingPeriodWorkNormalizer.php + + - + message: "#^Parameter \\#3 \\$format \\(string\\) of method Chill\\\\PersonBundle\\\\Serializer\\\\Normalizer\\\\MembersEditorNormalizer\\:\\:denormalize\\(\\) should be contravariant with parameter \\$format \\(string\\|null\\) of method Symfony\\\\Component\\\\Serializer\\\\Normalizer\\\\DenormalizerInterface\\:\\:denormalize\\(\\)$#" + count: 1 + path: src/Bundle/ChillPersonBundle/Serializer/Normalizer/MembersEditorNormalizer.php + + - + message: "#^Parameter \\#3 \\$format \\(string\\) of method Chill\\\\PersonBundle\\\\Serializer\\\\Normalizer\\\\MembersEditorNormalizer\\:\\:supportsDenormalization\\(\\) should be contravariant with parameter \\$format \\(string\\|null\\) of method Symfony\\\\Component\\\\Serializer\\\\Normalizer\\\\DenormalizerInterface\\:\\:supportsDenormalization\\(\\)$#" + count: 1 + path: src/Bundle/ChillPersonBundle/Serializer/Normalizer/MembersEditorNormalizer.php + + - + message: "#^Parameter \\#2 \\$format \\(string\\) of method Chill\\\\PersonBundle\\\\Serializer\\\\Normalizer\\\\PersonDocGenNormalizer\\:\\:normalize\\(\\) should be contravariant with parameter \\$format \\(string\\|null\\) of method Symfony\\\\Component\\\\Serializer\\\\Normalizer\\\\NormalizerInterface\\:\\:normalize\\(\\)$#" + count: 2 + path: src/Bundle/ChillPersonBundle/Serializer/Normalizer/PersonDocGenNormalizer.php + + - + message: "#^Parameter \\#2 \\$format \\(string\\) of method Chill\\\\PersonBundle\\\\Serializer\\\\Normalizer\\\\PersonDocGenNormalizer\\:\\:supportsNormalization\\(\\) should be contravariant with parameter \\$format \\(string\\|null\\) of method Symfony\\\\Component\\\\Serializer\\\\Normalizer\\\\ContextAwareNormalizerInterface\\:\\:supportsNormalization\\(\\)$#" + count: 1 + path: src/Bundle/ChillPersonBundle/Serializer/Normalizer/PersonDocGenNormalizer.php + + - + message: "#^Parameter \\#2 \\$format \\(string\\) of method Chill\\\\PersonBundle\\\\Serializer\\\\Normalizer\\\\PersonDocGenNormalizer\\:\\:supportsNormalization\\(\\) should be contravariant with parameter \\$format \\(string\\|null\\) of method Symfony\\\\Component\\\\Serializer\\\\Normalizer\\\\NormalizerInterface\\:\\:supportsNormalization\\(\\)$#" + count: 1 + path: src/Bundle/ChillPersonBundle/Serializer/Normalizer/PersonDocGenNormalizer.php + + - + message: "#^Parameter \\#1 \\$person \\(Chill\\\\PersonBundle\\\\Entity\\\\Person\\) of method Chill\\\\PersonBundle\\\\Serializer\\\\Normalizer\\\\PersonJsonNormalizer\\:\\:normalize\\(\\) should be contravariant with parameter \\$object \\(mixed\\) of method Symfony\\\\Component\\\\Serializer\\\\Normalizer\\\\NormalizerInterface\\:\\:normalize\\(\\)$#" + count: 2 + path: src/Bundle/ChillPersonBundle/Serializer/Normalizer/PersonJsonNormalizer.php + + - + message: "#^Parameter \\#2 \\$format \\(string\\) of method Chill\\\\PersonBundle\\\\Serializer\\\\Normalizer\\\\PersonJsonNormalizer\\:\\:supportsNormalization\\(\\) should be contravariant with parameter \\$format \\(string\\|null\\) of method Symfony\\\\Component\\\\Serializer\\\\Normalizer\\\\NormalizerInterface\\:\\:supportsNormalization\\(\\)$#" + count: 2 + path: src/Bundle/ChillPersonBundle/Serializer/Normalizer/PersonJsonNormalizer.php + + - + message: "#^Parameter \\#3 \\$format \\(string\\) of method Chill\\\\PersonBundle\\\\Serializer\\\\Normalizer\\\\PersonJsonNormalizer\\:\\:denormalize\\(\\) should be contravariant with parameter \\$format \\(string\\|null\\) of method Symfony\\\\Component\\\\Serializer\\\\Normalizer\\\\DenormalizerInterface\\:\\:denormalize\\(\\)$#" + count: 2 + path: src/Bundle/ChillPersonBundle/Serializer/Normalizer/PersonJsonNormalizer.php + + - + message: "#^Parameter \\#3 \\$format \\(string\\) of method Chill\\\\PersonBundle\\\\Serializer\\\\Normalizer\\\\PersonJsonNormalizer\\:\\:supportsDenormalization\\(\\) should be contravariant with parameter \\$format \\(string\\|null\\) of method Symfony\\\\Component\\\\Serializer\\\\Normalizer\\\\DenormalizerInterface\\:\\:supportsDenormalization\\(\\)$#" + count: 2 + path: src/Bundle/ChillPersonBundle/Serializer/Normalizer/PersonJsonNormalizer.php + + - + message: "#^Parameter \\#1 \\$relation \\(Chill\\\\PersonBundle\\\\Entity\\\\Relationships\\\\Relationship\\) of method Chill\\\\PersonBundle\\\\Serializer\\\\Normalizer\\\\RelationshipDocGenNormalizer\\:\\:normalize\\(\\) should be contravariant with parameter \\$object \\(mixed\\) of method Symfony\\\\Component\\\\Serializer\\\\Normalizer\\\\NormalizerInterface\\:\\:normalize\\(\\)$#" + count: 2 + path: src/Bundle/ChillPersonBundle/Serializer/Normalizer/RelationshipDocGenNormalizer.php + + - + message: "#^Parameter \\#2 \\$format \\(string\\) of method Chill\\\\PersonBundle\\\\Serializer\\\\Normalizer\\\\RelationshipDocGenNormalizer\\:\\:supportsNormalization\\(\\) should be contravariant with parameter \\$format \\(string\\|null\\) of method Symfony\\\\Component\\\\Serializer\\\\Normalizer\\\\ContextAwareNormalizerInterface\\:\\:supportsNormalization\\(\\)$#" + count: 1 + path: src/Bundle/ChillPersonBundle/Serializer/Normalizer/RelationshipDocGenNormalizer.php + + - + message: "#^Parameter \\#2 \\$format \\(string\\) of method Chill\\\\PersonBundle\\\\Serializer\\\\Normalizer\\\\RelationshipDocGenNormalizer\\:\\:supportsNormalization\\(\\) should be contravariant with parameter \\$format \\(string\\|null\\) of method Symfony\\\\Component\\\\Serializer\\\\Normalizer\\\\NormalizerInterface\\:\\:supportsNormalization\\(\\)$#" + count: 1 + path: src/Bundle/ChillPersonBundle/Serializer/Normalizer/RelationshipDocGenNormalizer.php + + - + message: "#^Parameter \\#2 \\$format \\(string\\) of method Chill\\\\PersonBundle\\\\Serializer\\\\Normalizer\\\\SocialActionNormalizer\\:\\:normalize\\(\\) should be contravariant with parameter \\$format \\(string\\|null\\) of method Symfony\\\\Component\\\\Serializer\\\\Normalizer\\\\NormalizerInterface\\:\\:normalize\\(\\)$#" + count: 1 + path: src/Bundle/ChillPersonBundle/Serializer/Normalizer/SocialActionNormalizer.php + + - + message: "#^Parameter \\#2 \\$format \\(string\\) of method Chill\\\\PersonBundle\\\\Serializer\\\\Normalizer\\\\SocialActionNormalizer\\:\\:supportsNormalization\\(\\) should be contravariant with parameter \\$format \\(string\\|null\\) of method Symfony\\\\Component\\\\Serializer\\\\Normalizer\\\\NormalizerInterface\\:\\:supportsNormalization\\(\\)$#" + count: 1 + path: src/Bundle/ChillPersonBundle/Serializer/Normalizer/SocialActionNormalizer.php + + - + message: "#^Parameter \\#2 \\$format \\(string\\) of method Chill\\\\PersonBundle\\\\Serializer\\\\Normalizer\\\\SocialIssueNormalizer\\:\\:normalize\\(\\) should be contravariant with parameter \\$format \\(string\\|null\\) of method Symfony\\\\Component\\\\Serializer\\\\Normalizer\\\\NormalizerInterface\\:\\:normalize\\(\\)$#" + count: 2 + path: src/Bundle/ChillPersonBundle/Serializer/Normalizer/SocialIssueNormalizer.php + + - + message: "#^Parameter \\#2 \\$format \\(string\\) of method Chill\\\\PersonBundle\\\\Serializer\\\\Normalizer\\\\SocialIssueNormalizer\\:\\:supportsNormalization\\(\\) should be contravariant with parameter \\$format \\(string\\|null\\) of method Symfony\\\\Component\\\\Serializer\\\\Normalizer\\\\ContextAwareNormalizerInterface\\:\\:supportsNormalization\\(\\)$#" + count: 1 + path: src/Bundle/ChillPersonBundle/Serializer/Normalizer/SocialIssueNormalizer.php + + - + message: "#^Parameter \\#2 \\$format \\(string\\) of method Chill\\\\PersonBundle\\\\Serializer\\\\Normalizer\\\\SocialIssueNormalizer\\:\\:supportsNormalization\\(\\) should be contravariant with parameter \\$format \\(string\\|null\\) of method Symfony\\\\Component\\\\Serializer\\\\Normalizer\\\\NormalizerInterface\\:\\:supportsNormalization\\(\\)$#" + count: 1 + path: src/Bundle/ChillPersonBundle/Serializer/Normalizer/SocialIssueNormalizer.php + + - + message: "#^Parameter \\#1 \\$object \\(Chill\\\\MainBundle\\\\Entity\\\\Workflow\\\\EntityWorkflow\\) of method Chill\\\\PersonBundle\\\\Serializer\\\\Normalizer\\\\WorkflowNormalizer\\:\\:normalize\\(\\) should be contravariant with parameter \\$object \\(mixed\\) of method Symfony\\\\Component\\\\Serializer\\\\Normalizer\\\\NormalizerInterface\\:\\:normalize\\(\\)$#" + count: 2 + path: src/Bundle/ChillPersonBundle/Serializer/Normalizer/WorkflowNormalizer.php + + + - + message: "#^Parameter \\#1 \\$object \\(Chill\\\\PersonBundle\\\\Entity\\\\AccompanyingPeriod\\\\AccompanyingPeriodWorkEvaluationDocument\\) of method Chill\\\\PersonBundle\\\\Workflow\\\\AccompanyingPeriodWorkEvaluationDocumentWorkflowHandler\\:\\:getRelatedObjects\\(\\) should be contravariant with parameter \\$object \\(object\\) of method Chill\\\\MainBundle\\\\Workflow\\\\EntityWorkflowHandlerInterface\\:\\:getRelatedObjects\\(\\)$#" + count: 1 + path: src/Bundle/ChillPersonBundle/Workflow/AccompanyingPeriodWorkEvaluationDocumentWorkflowHandler.php + + - + message: "#^Parameter \\#1 \\$object \\(Chill\\\\PersonBundle\\\\Entity\\\\AccompanyingPeriod\\\\AccompanyingPeriodWorkEvaluation\\) of method Chill\\\\PersonBundle\\\\Workflow\\\\AccompanyingPeriodWorkEvaluationWorkflowHandler\\:\\:getRelatedObjects\\(\\) should be contravariant with parameter \\$object \\(object\\) of method Chill\\\\MainBundle\\\\Workflow\\\\EntityWorkflowHandlerInterface\\:\\:getRelatedObjects\\(\\)$#" + count: 1 + path: src/Bundle/ChillPersonBundle/Workflow/AccompanyingPeriodWorkEvaluationWorkflowHandler.php + + - + message: "#^Parameter \\#1 \\$object \\(Chill\\\\PersonBundle\\\\Entity\\\\AccompanyingPeriod\\\\AccompanyingPeriodWork\\) of method Chill\\\\PersonBundle\\\\Workflow\\\\AccompanyingPeriodWorkWorkflowHandler\\:\\:getRelatedObjects\\(\\) should be contravariant with parameter \\$object \\(object\\) of method Chill\\\\MainBundle\\\\Workflow\\\\EntityWorkflowHandlerInterface\\:\\:getRelatedObjects\\(\\)$#" + count: 1 + path: src/Bundle/ChillPersonBundle/Workflow/AccompanyingPeriodWorkWorkflowHandler.php + + - + message: "#^Return type \\(Chill\\\\MainBundle\\\\Entity\\\\Center\\|null\\) of method Chill\\\\TaskBundle\\\\Entity\\\\AbstractTask\\:\\:getCenter\\(\\) should be covariant with return type \\(Chill\\\\MainBundle\\\\Entity\\\\Center\\) of method Chill\\\\MainBundle\\\\Entity\\\\HasCenterInterface\\:\\:getCenter\\(\\)$#" + count: 1 + path: src/Bundle/ChillTaskBundle/Entity/AbstractTask.php + + - + message: "#^Return type \\(Chill\\\\MainBundle\\\\Entity\\\\Scope\\|null\\) of method Chill\\\\TaskBundle\\\\Entity\\\\AbstractTask\\:\\:getScope\\(\\) should be covariant with return type \\(Chill\\\\MainBundle\\\\Entity\\\\Scope\\) of method Chill\\\\MainBundle\\\\Entity\\\\HasScopeInterface\\:\\:getScope\\(\\)$#" + count: 1 + path: src/Bundle/ChillTaskBundle/Entity/AbstractTask.php + + - + message: "#^Parameter \\#3 \\$entity \\(Chill\\\\ThirdPartyBundle\\\\Entity\\\\ThirdParty\\) of method Chill\\\\ThirdPartyBundle\\\\Controller\\\\ThirdPartyController\\:\\:onPostFetchEntity\\(\\) should be contravariant with parameter \\$entity \\(mixed\\) of method Chill\\\\MainBundle\\\\CRUD\\\\Controller\\\\CRUDController\\:\\:onPostFetchEntity\\(\\)$#" + count: 1 + path: src/Bundle/ChillThirdPartyBundle/Controller/ThirdPartyController.php + + - + message: "#^Parameter \\#1 \\$createdAt \\(DateTimeImmutable\\) of method Chill\\\\ThirdPartyBundle\\\\Entity\\\\ThirdParty\\:\\:setCreatedAt\\(\\) should be contravariant with parameter \\$datetime \\(DateTimeInterface\\) of method Chill\\\\MainBundle\\\\Doctrine\\\\Model\\\\TrackCreationInterface\\:\\:setCreatedAt\\(\\)$#" + count: 1 + path: src/Bundle/ChillThirdPartyBundle/Entity/ThirdParty.php + + - + message: "#^Parameter \\#1 \\$updatedAt \\(DateTimeImmutable\\) of method Chill\\\\ThirdPartyBundle\\\\Entity\\\\ThirdParty\\:\\:setUpdatedAt\\(\\) should be contravariant with parameter \\$datetime \\(DateTimeInterface\\) of method Chill\\\\MainBundle\\\\Doctrine\\\\Model\\\\TrackUpdateInterface\\:\\:setUpdatedAt\\(\\)$#" + count: 1 + path: src/Bundle/ChillThirdPartyBundle/Entity/ThirdParty.php + + - + message: "#^Parameter \\#3 \\$limit \\(null\\) of method Chill\\\\ThirdPartyBundle\\\\Repository\\\\ThirdPartyRepository\\:\\:findBy\\(\\) should be contravariant with parameter \\$limit \\(int\\|null\\) of method Doctrine\\\\Persistence\\\\ObjectRepository\\\\:\\:findBy\\(\\)$#" + count: 1 + path: src/Bundle/ChillThirdPartyBundle/Repository/ThirdPartyRepository.php + + - + message: "#^Parameter \\#4 \\$offset \\(null\\) of method Chill\\\\ThirdPartyBundle\\\\Repository\\\\ThirdPartyRepository\\:\\:findBy\\(\\) should be contravariant with parameter \\$offset \\(int\\|null\\) of method Doctrine\\\\Persistence\\\\ObjectRepository\\\\:\\:findBy\\(\\)$#" + count: 1 + path: src/Bundle/ChillThirdPartyBundle/Repository/ThirdPartyRepository.php + + - + message: "#^Parameter \\#2 \\$subject \\(Chill\\\\ThirdPartyBundle\\\\Entity\\\\ThirdParty\\|null\\) of method Chill\\\\ThirdPartyBundle\\\\Security\\\\Voter\\\\ThirdPartyVoter\\:\\:voteOnAttribute\\(\\) should be contravariant with parameter \\$subject \\(mixed\\) of method Symfony\\\\Component\\\\Security\\\\Core\\\\Authorization\\\\Voter\\\\Voter\\:\\:voteOnAttribute\\(\\)$#" + count: 1 + path: src/Bundle/ChillThirdPartyBundle/Security/Voter/ThirdPartyVoter.php + + - + message: "#^Parameter \\#1 \\$document \\(Chill\\\\DocStoreBundle\\\\Entity\\\\StoredObject\\) of method Chill\\\\WopiBundle\\\\Service\\\\Wopi\\\\ChillDocumentManager\\:\\:getBasename\\(\\) should be contravariant with parameter \\$document \\(ChampsLibres\\\\WopiLib\\\\Contract\\\\Entity\\\\Document\\) of method ChampsLibres\\\\WopiLib\\\\Contract\\\\Service\\\\DocumentManagerInterface\\:\\:getBasename\\(\\)$#" + count: 1 + path: src/Bundle/ChillWopiBundle/src/Service/Wopi/ChillDocumentManager.php + + - + message: "#^Parameter \\#1 \\$document \\(Chill\\\\DocStoreBundle\\\\Entity\\\\StoredObject\\) of method Chill\\\\WopiBundle\\\\Service\\\\Wopi\\\\ChillDocumentManager\\:\\:getCreationDate\\(\\) should be contravariant with parameter \\$document \\(ChampsLibres\\\\WopiLib\\\\Contract\\\\Entity\\\\Document\\) of method ChampsLibres\\\\WopiLib\\\\Contract\\\\Service\\\\DocumentManagerInterface\\:\\:getCreationDate\\(\\)$#" + count: 1 + path: src/Bundle/ChillWopiBundle/src/Service/Wopi/ChillDocumentManager.php + + - + message: "#^Parameter \\#1 \\$document \\(Chill\\\\DocStoreBundle\\\\Entity\\\\StoredObject\\) of method Chill\\\\WopiBundle\\\\Service\\\\Wopi\\\\ChillDocumentManager\\:\\:getDocumentId\\(\\) should be contravariant with parameter \\$document \\(ChampsLibres\\\\WopiLib\\\\Contract\\\\Entity\\\\Document\\) of method ChampsLibres\\\\WopiLib\\\\Contract\\\\Service\\\\DocumentManagerInterface\\:\\:getDocumentId\\(\\)$#" + count: 1 + path: src/Bundle/ChillWopiBundle/src/Service/Wopi/ChillDocumentManager.php + + - + message: "#^Parameter \\#1 \\$document \\(Chill\\\\DocStoreBundle\\\\Entity\\\\StoredObject\\) of method Chill\\\\WopiBundle\\\\Service\\\\Wopi\\\\ChillDocumentManager\\:\\:getLastModifiedDate\\(\\) should be contravariant with parameter \\$document \\(ChampsLibres\\\\WopiLib\\\\Contract\\\\Entity\\\\Document\\) of method ChampsLibres\\\\WopiLib\\\\Contract\\\\Service\\\\DocumentManagerInterface\\:\\:getLastModifiedDate\\(\\)$#" + count: 1 + path: src/Bundle/ChillWopiBundle/src/Service/Wopi/ChillDocumentManager.php diff --git a/phpstan-baseline-level-4.neon b/phpstan-baseline-level-4.neon new file mode 100644 index 000000000..1b7bb5a07 --- /dev/null +++ b/phpstan-baseline-level-4.neon @@ -0,0 +1,4798 @@ +parameters: + ignoreErrors: + - + message: "#^Access to an undefined property Chill\\\\ActivityBundle\\\\Entity\\\\Activity\\:\\:\\$personsAssociated\\.$#" + count: 1 + path: src/Bundle/ChillActivityBundle/Controller/ActivityController.php + + - + message: "#^Access to an undefined property Chill\\\\ActivityBundle\\\\Entity\\\\Activity\\:\\:\\$personsNotAssociated\\.$#" + count: 1 + path: src/Bundle/ChillActivityBundle/Controller/ActivityController.php + + - + message: "#^Call to an undefined method Symfony\\\\Component\\\\Serializer\\\\SerializerInterface\\:\\:normalize\\(\\)\\.$#" + count: 2 + path: src/Bundle/ChillActivityBundle/Controller/ActivityController.php + + - + message: "#^Method Symfony\\\\Contracts\\\\EventDispatcher\\\\EventDispatcherInterface\\:\\:dispatch\\(\\) invoked with 2 parameters, 1 required\\.$#" + count: 1 + path: src/Bundle/ChillActivityBundle/Controller/ActivityController.php + + - + message: "#^Strict comparison using \\=\\=\\= between null and 'ChillActivityBundle…'\\|'ChillActivityBundle…' will always evaluate to false\\.$#" + count: 3 + path: src/Bundle/ChillActivityBundle/Controller/ActivityController.php + + - + message: "#^Method Chill\\\\ActivityBundle\\\\Controller\\\\ActivityReasonCategoryController\\:\\:createCreateForm\\(\\) should return Symfony\\\\Component\\\\Form\\\\Form but returns Symfony\\\\Component\\\\Form\\\\FormInterface\\.$#" + count: 1 + path: src/Bundle/ChillActivityBundle/Controller/ActivityReasonCategoryController.php + + - + message: "#^Method Chill\\\\ActivityBundle\\\\Controller\\\\ActivityReasonCategoryController\\:\\:createEditForm\\(\\) should return Symfony\\\\Component\\\\Form\\\\Form but returns Symfony\\\\Component\\\\Form\\\\FormInterface\\.$#" + count: 1 + path: src/Bundle/ChillActivityBundle/Controller/ActivityReasonCategoryController.php + + - + message: "#^Method Chill\\\\ActivityBundle\\\\Controller\\\\ActivityReasonController\\:\\:createCreateForm\\(\\) should return Symfony\\\\Component\\\\Form\\\\Form but returns Symfony\\\\Component\\\\Form\\\\FormInterface\\.$#" + count: 1 + path: src/Bundle/ChillActivityBundle/Controller/ActivityReasonController.php + + - + message: "#^Method Chill\\\\ActivityBundle\\\\Controller\\\\ActivityReasonController\\:\\:createEditForm\\(\\) should return Symfony\\\\Component\\\\Form\\\\Form but returns Symfony\\\\Component\\\\Form\\\\FormInterface\\.$#" + count: 1 + path: src/Bundle/ChillActivityBundle/Controller/ActivityReasonController.php + + - + message: "#^Else branch is unreachable because previous condition is always true\\.$#" + count: 1 + path: src/Bundle/ChillActivityBundle/DataFixtures/ORM/LoadActivity.php + + - + message: "#^Strict comparison using \\!\\=\\= between null and Chill\\\\ActivityBundle\\\\Entity\\\\ActivityReason will always evaluate to true\\.$#" + count: 1 + path: src/Bundle/ChillActivityBundle/DataFixtures/ORM/LoadActivity.php + + - + message: "#^Unreachable statement \\- code above always terminates\\.$#" + count: 1 + path: src/Bundle/ChillActivityBundle/DataFixtures/ORM/LoadActivityNotifications.php + + - + message: "#^Call to an undefined method Symfony\\\\Component\\\\Config\\\\Definition\\\\Builder\\\\NodeDefinition\\:\\:children\\(\\)\\.$#" + count: 1 + path: src/Bundle/ChillActivityBundle/DependencyInjection/Configuration.php + + - + message: "#^Method Symfony\\\\Component\\\\Config\\\\Definition\\\\Builder\\\\TreeBuilder\\:\\:getRootNode\\(\\) invoked with 1 parameter, 0 required\\.$#" + count: 1 + path: src/Bundle/ChillActivityBundle/DependencyInjection/Configuration.php + + - + message: "#^Property Chill\\\\ActivityBundle\\\\Entity\\\\Activity\\:\\:\\$user \\(Chill\\\\MainBundle\\\\Entity\\\\User\\) does not accept Symfony\\\\Component\\\\Security\\\\Core\\\\User\\\\UserInterface\\.$#" + count: 1 + path: src/Bundle/ChillActivityBundle/Entity/Activity.php + + - + message: "#^Property Chill\\\\ActivityBundle\\\\Entity\\\\ActivityPresence\\:\\:\\$id is never written, only read\\.$#" + count: 1 + path: src/Bundle/ChillActivityBundle/Entity/ActivityPresence.php + + - + message: "#^Property Chill\\\\ActivityBundle\\\\Entity\\\\ActivityReason\\:\\:\\$id is never written, only read\\.$#" + count: 1 + path: src/Bundle/ChillActivityBundle/Entity/ActivityReason.php + + - + message: "#^Argument of an invalid type string supplied for foreach, only iterables are supported\\.$#" + count: 1 + path: src/Bundle/ChillActivityBundle/Entity/ActivityReasonCategory.php + + - + message: "#^Binary operation \"\\.\" between 'ActivityReasonCateg…' and array results in an error\\.$#" + count: 1 + path: src/Bundle/ChillActivityBundle/Entity/ActivityReasonCategory.php + + - + message: "#^Method Chill\\\\ActivityBundle\\\\Entity\\\\ActivityReasonCategory\\:\\:getName\\(\\) should return array but returns string\\.$#" + count: 3 + path: src/Bundle/ChillActivityBundle/Entity/ActivityReasonCategory.php + + - + message: "#^Property Chill\\\\ActivityBundle\\\\Entity\\\\ActivityReasonCategory\\:\\:\\$id is never written, only read\\.$#" + count: 1 + path: src/Bundle/ChillActivityBundle/Entity/ActivityReasonCategory.php + + - + message: "#^Property Chill\\\\ActivityBundle\\\\Entity\\\\ActivityReasonCategory\\:\\:\\$name \\(string\\) does not accept array\\.$#" + count: 1 + path: src/Bundle/ChillActivityBundle/Entity/ActivityReasonCategory.php + + - + message: "#^Expression on left side of \\?\\? is not nullable\\.$#" + count: 1 + path: src/Bundle/ChillActivityBundle/EntityListener/ActivityEntityListener.php + + - + message: "#^Property Chill\\\\ActivityBundle\\\\Export\\\\Aggregator\\\\ACPAggregators\\\\DateAggregator\\:\\:\\$translator is never read, only written\\.$#" + count: 1 + path: src/Bundle/ChillActivityBundle/Export/Aggregator/ACPAggregators/DateAggregator.php + + - + message: "#^PHPDoc tag @param for parameter \\$resolver with type Chill\\\\ActivityBundle\\\\Form\\\\OptionsResolverInterface is not subtype of native type Symfony\\\\Component\\\\OptionsResolver\\\\OptionsResolver\\.$#" + count: 1 + path: src/Bundle/ChillActivityBundle/Form/ActivityReasonCategoryType.php + + - + message: "#^Parameter \\$resolver of method Chill\\\\ActivityBundle\\\\Form\\\\ActivityReasonCategoryType\\:\\:configureOptions\\(\\) has invalid type Chill\\\\ActivityBundle\\\\Form\\\\OptionsResolverInterface\\.$#" + count: 1 + path: src/Bundle/ChillActivityBundle/Form/ActivityReasonCategoryType.php + + - + message: "#^Call to an undefined method Doctrine\\\\ORM\\\\EntityRepository\\\\:\\:findByAccompanyingPeriod\\(\\)\\.$#" + count: 1 + path: src/Bundle/ChillActivityBundle/Repository/ActivityACLAwareRepository.php + + - + message: "#^Call to an undefined method Doctrine\\\\ORM\\\\EntityRepository\\\\:\\:findByPersonImplied\\(\\)\\.$#" + count: 1 + path: src/Bundle/ChillActivityBundle/Repository/ActivityACLAwareRepository.php + + - + message: "#^Method Chill\\\\ActivityBundle\\\\Repository\\\\ActivityACLAwareRepository\\:\\:findByAccompanyingPeriod\\(\\) has invalid return type Chill\\\\ActivityBundle\\\\Repository\\\\Activity\\.$#" + count: 1 + path: src/Bundle/ChillActivityBundle/Repository/ActivityACLAwareRepository.php + + - + message: "#^Method Chill\\\\ActivityBundle\\\\Repository\\\\ActivityACLAwareRepository\\:\\:getWhereClause\\(\\) should return array but returns string\\.$#" + count: 1 + path: src/Bundle/ChillActivityBundle/Repository/ActivityACLAwareRepository.php + + - + message: "#^Property Chill\\\\ActivityBundle\\\\Repository\\\\ActivityACLAwareRepository\\:\\:\\$repository is never read, only written\\.$#" + count: 1 + path: src/Bundle/ChillActivityBundle/Repository/ActivityACLAwareRepository.php + + - + message: "#^Method Chill\\\\ActivityBundle\\\\Repository\\\\ActivityACLAwareRepositoryInterface\\:\\:findByAccompanyingPeriod\\(\\) has invalid return type Chill\\\\ActivityBundle\\\\Repository\\\\Activity\\.$#" + count: 1 + path: src/Bundle/ChillActivityBundle/Repository/ActivityACLAwareRepositoryInterface.php + + - + message: "#^Method Chill\\\\ActivityBundle\\\\Repository\\\\ActivityACLAwareRepositoryInterface\\:\\:findByPerson\\(\\) has invalid return type Chill\\\\ActivityBundle\\\\Repository\\\\Activity\\.$#" + count: 1 + path: src/Bundle/ChillActivityBundle/Repository/ActivityACLAwareRepositoryInterface.php + + - + message: "#^Expression on left side of \\?\\? is not nullable\\.$#" + count: 1 + path: src/Bundle/ChillActivityBundle/Repository/ActivityReasonRepository.php + + - + message: "#^Property Chill\\\\ActivityBundle\\\\Service\\\\DocGenerator\\\\ActivityContext\\:\\:\\$documentCategoryRepository is never read, only written\\.$#" + count: 1 + path: src/Bundle/ChillActivityBundle/Service/DocGenerator/ActivityContext.php + + - + message: "#^Parameter \\$context of method Chill\\\\ActivityBundle\\\\Timeline\\\\TimelineActivityProvider\\:\\:getEntityTemplate\\(\\) has invalid type Chill\\\\MainBundle\\\\Timeline\\\\type\\.$#" + count: 1 + path: src/Bundle/ChillActivityBundle/Timeline/TimelineActivityProvider.php + + - + message: "#^Parameter \\$entity of method Chill\\\\ActivityBundle\\\\Timeline\\\\TimelineActivityProvider\\:\\:getEntityTemplate\\(\\) has invalid type Chill\\\\MainBundle\\\\Timeline\\\\type\\.$#" + count: 1 + path: src/Bundle/ChillActivityBundle/Timeline/TimelineActivityProvider.php + + - + message: "#^Result of && is always false\\.$#" + count: 7 + path: src/Bundle/ChillActivityBundle/Validator/Constraints/ActivityValidityValidator.php + + - + message: "#^Strict comparison using \\=\\=\\= between null and Chill\\\\MainBundle\\\\Entity\\\\Embeddable\\\\CommentEmbeddable will always evaluate to false\\.$#" + count: 1 + path: src/Bundle/ChillActivityBundle/Validator/Constraints/ActivityValidityValidator.php + + - + message: "#^Strict comparison using \\=\\=\\= between null and Chill\\\\MainBundle\\\\Entity\\\\User will always evaluate to false\\.$#" + count: 1 + path: src/Bundle/ChillActivityBundle/Validator/Constraints/ActivityValidityValidator.php + + - + message: "#^Strict comparison using \\=\\=\\= between null and DateTime will always evaluate to false\\.$#" + count: 1 + path: src/Bundle/ChillActivityBundle/Validator/Constraints/ActivityValidityValidator.php + + - + message: "#^Strict comparison using \\=\\=\\= between null and Doctrine\\\\Common\\\\Collections\\\\Collection will always evaluate to false\\.$#" + count: 2 + path: src/Bundle/ChillActivityBundle/Validator/Constraints/ActivityValidityValidator.php + + - + message: "#^Strict comparison using \\=\\=\\= between null and bool will always evaluate to false\\.$#" + count: 1 + path: src/Bundle/ChillActivityBundle/Validator/Constraints/ActivityValidityValidator.php + + - + message: "#^Strict comparison using \\=\\=\\= between null and string will always evaluate to false\\.$#" + count: 1 + path: src/Bundle/ChillActivityBundle/Validator/Constraints/ActivityValidityValidator.php + + - + message: "#^Call to an undefined method Symfony\\\\Component\\\\Config\\\\Definition\\\\Builder\\\\NodeDefinition\\:\\:children\\(\\)\\.$#" + count: 1 + path: src/Bundle/ChillAsideActivityBundle/src/DependencyInjection/Configuration.php + + - + message: "#^Method Symfony\\\\Component\\\\Config\\\\Definition\\\\Builder\\\\TreeBuilder\\:\\:getRootNode\\(\\) invoked with 1 parameter, 0 required\\.$#" + count: 1 + path: src/Bundle/ChillAsideActivityBundle/src/DependencyInjection/Configuration.php + + - + message: "#^Property Chill\\\\AsideActivityBundle\\\\Entity\\\\AsideActivity\\:\\:\\$id is never written, only read\\.$#" + count: 1 + path: src/Bundle/ChillAsideActivityBundle/src/Entity/AsideActivity.php + + - + message: "#^Property Chill\\\\AsideActivityBundle\\\\Entity\\\\AsideActivityCategory\\:\\:\\$id is never written, only read\\.$#" + count: 1 + path: src/Bundle/ChillAsideActivityBundle/src/Entity/AsideActivityCategory.php + + - + message: "#^Call to method DateTimeImmutable\\:\\:add\\(\\) on a separate line has no effect\\.$#" + count: 1 + path: src/Bundle/ChillAsideActivityBundle/src/Form/AsideActivityFormType.php + + - + message: "#^Call to method DateTimeImmutable\\:\\:setTimezone\\(\\) on a separate line has no effect\\.$#" + count: 1 + path: src/Bundle/ChillAsideActivityBundle/src/Form/AsideActivityFormType.php + + - + message: "#^Property Chill\\\\AsideActivityBundle\\\\Form\\\\AsideActivityFormType\\:\\:\\$storage is never read, only written\\.$#" + count: 1 + path: src/Bundle/ChillAsideActivityBundle/src/Form/AsideActivityFormType.php + + - + message: "#^Static call to instance method Chill\\\\BudgetBundle\\\\Calculator\\\\CalculatorInterface\\:\\:getAlias\\(\\)\\.$#" + count: 3 + path: src/Bundle/ChillBudgetBundle/Calculator/CalculatorManager.php + + - + message: "#^Call to an undefined method Chill\\\\BudgetBundle\\\\Entity\\\\AbstractElement\\:\\:getId\\(\\)\\.$#" + count: 1 + path: src/Bundle/ChillBudgetBundle/Controller/AbstractElementController.php + + - + message: "#^Method Chill\\\\BudgetBundle\\\\Controller\\\\AbstractElementController\\:\\:createDeleteForm\\(\\) should return Symfony\\\\Component\\\\Form\\\\Form but returns Symfony\\\\Component\\\\Form\\\\FormInterface\\.$#" + count: 1 + path: src/Bundle/ChillBudgetBundle/Controller/AbstractElementController.php + + - + message: "#^Call to an undefined method Doctrine\\\\ORM\\\\EntityRepository\\\\:\\:findByEntityAndDate\\(\\)\\.$#" + count: 3 + path: src/Bundle/ChillBudgetBundle/Controller/ElementController.php + + - + message: "#^Call to an undefined method Doctrine\\\\ORM\\\\EntityRepository\\\\:\\:findByHousehold\\(\\)\\.$#" + count: 1 + path: src/Bundle/ChillBudgetBundle/Controller/ElementController.php + + - + message: "#^Call to an undefined method Doctrine\\\\ORM\\\\EntityRepository\\\\:\\:findByPerson\\(\\)\\.$#" + count: 1 + path: src/Bundle/ChillBudgetBundle/Controller/ElementController.php + + - + message: "#^Call to an undefined method Doctrine\\\\ORM\\\\EntityRepository\\\\:\\:findByEntityAndDate\\(\\)\\.$#" + count: 3 + path: src/Bundle/ChillBudgetBundle/Controller/ElementController.php + + - + message: "#^Call to an undefined method Doctrine\\\\ORM\\\\EntityRepository\\\\:\\:findByHousehold\\(\\)\\.$#" + count: 1 + path: src/Bundle/ChillBudgetBundle/Controller/ElementController.php + + - + message: "#^Call to an undefined method Doctrine\\\\ORM\\\\EntityRepository\\\\:\\:findByPerson\\(\\)\\.$#" + count: 1 + path: src/Bundle/ChillBudgetBundle/Controller/ElementController.php + + - + message: "#^Call to an undefined method Symfony\\\\Component\\\\Config\\\\Definition\\\\Builder\\\\NodeDefinition\\:\\:children\\(\\)\\.$#" + count: 1 + path: src/Bundle/ChillBudgetBundle/DependencyInjection/Configuration.php + + - + message: "#^Method Symfony\\\\Component\\\\Config\\\\Definition\\\\Builder\\\\TreeBuilder\\:\\:getRootNode\\(\\) invoked with 1 parameter, 0 required\\.$#" + count: 1 + path: src/Bundle/ChillBudgetBundle/DependencyInjection/Configuration.php + + - + message: "#^Property Chill\\\\BudgetBundle\\\\Entity\\\\AbstractElement\\:\\:\\$startDate \\(DateTimeImmutable\\) does not accept null\\.$#" + count: 1 + path: src/Bundle/ChillBudgetBundle/Entity/AbstractElement.php + + - + message: "#^Strict comparison using \\=\\=\\= between 0 and string will always evaluate to false\\.$#" + count: 1 + path: src/Bundle/ChillBudgetBundle/Entity/AbstractElement.php + + - + message: "#^Strict comparison using \\=\\=\\= between null and DateTimeImmutable will always evaluate to false\\.$#" + count: 1 + path: src/Bundle/ChillBudgetBundle/Entity/AbstractElement.php + + - + message: "#^Property Chill\\\\BudgetBundle\\\\Entity\\\\ChargeKind\\:\\:\\$tags is never read, only written\\.$#" + count: 1 + path: src/Bundle/ChillBudgetBundle/Entity/ChargeKind.php + + - + message: "#^Property Chill\\\\BudgetBundle\\\\Entity\\\\ResourceKind\\:\\:\\$tags is never read, only written\\.$#" + count: 1 + path: src/Bundle/ChillBudgetBundle/Entity/ResourceKind.php + + - + message: "#^Method Chill\\\\BudgetBundle\\\\Repository\\\\ChargeKindRepository\\:\\:findAll\\(\\) has invalid return type Chill\\\\BudgetBundle\\\\Repository\\\\ChargeType\\.$#" + count: 1 + path: src/Bundle/ChillBudgetBundle/Repository/ChargeKindRepository.php + + - + message: "#^Method Chill\\\\BudgetBundle\\\\Repository\\\\ChargeKindRepository\\:\\:findAllActive\\(\\) has invalid return type Chill\\\\BudgetBundle\\\\Repository\\\\ChargeType\\.$#" + count: 1 + path: src/Bundle/ChillBudgetBundle/Repository/ChargeKindRepository.php + + - + message: "#^Method Chill\\\\BudgetBundle\\\\Repository\\\\ChargeKindRepository\\:\\:findAllByType\\(\\) has invalid return type Chill\\\\BudgetBundle\\\\Repository\\\\ChargeType\\.$#" + count: 1 + path: src/Bundle/ChillBudgetBundle/Repository/ChargeKindRepository.php + + - + message: "#^Method Chill\\\\BudgetBundle\\\\Repository\\\\ChargeKindRepository\\:\\:findBy\\(\\) has invalid return type Chill\\\\BudgetBundle\\\\Repository\\\\ChargeType\\.$#" + count: 1 + path: src/Bundle/ChillBudgetBundle/Repository/ChargeKindRepository.php + + - + message: "#^PHPDoc tag @param for parameter \\$limit with type mixed is not subtype of native type int\\|null\\.$#" + count: 1 + path: src/Bundle/ChillBudgetBundle/Repository/ChargeKindRepository.php + + - + message: "#^PHPDoc tag @param for parameter \\$offset with type mixed is not subtype of native type int\\|null\\.$#" + count: 1 + path: src/Bundle/ChillBudgetBundle/Repository/ChargeKindRepository.php + + - + message: "#^Method Chill\\\\BudgetBundle\\\\Repository\\\\ResourceKindRepository\\:\\:findAll\\(\\) has invalid return type Chill\\\\BudgetBundle\\\\Repository\\\\ResourceType\\.$#" + count: 1 + path: src/Bundle/ChillBudgetBundle/Repository/ResourceKindRepository.php + + - + message: "#^Method Chill\\\\BudgetBundle\\\\Repository\\\\ResourceKindRepository\\:\\:findAllActive\\(\\) has invalid return type Chill\\\\BudgetBundle\\\\Repository\\\\ResourceType\\.$#" + count: 1 + path: src/Bundle/ChillBudgetBundle/Repository/ResourceKindRepository.php + + - + message: "#^Method Chill\\\\BudgetBundle\\\\Repository\\\\ResourceKindRepository\\:\\:findAllByType\\(\\) has invalid return type Chill\\\\BudgetBundle\\\\Repository\\\\ResourceType\\.$#" + count: 1 + path: src/Bundle/ChillBudgetBundle/Repository/ResourceKindRepository.php + + - + message: "#^Method Chill\\\\BudgetBundle\\\\Repository\\\\ResourceKindRepository\\:\\:findBy\\(\\) has invalid return type Chill\\\\BudgetBundle\\\\Repository\\\\ResourceType\\.$#" + count: 1 + path: src/Bundle/ChillBudgetBundle/Repository/ResourceKindRepository.php + + - + message: "#^PHPDoc tag @param for parameter \\$limit with type mixed is not subtype of native type int\\|null\\.$#" + count: 1 + path: src/Bundle/ChillBudgetBundle/Repository/ResourceKindRepository.php + + - + message: "#^PHPDoc tag @param for parameter \\$offset with type mixed is not subtype of native type int\\|null\\.$#" + count: 1 + path: src/Bundle/ChillBudgetBundle/Repository/ResourceKindRepository.php + + - + message: "#^Property Chill\\\\BudgetBundle\\\\Service\\\\Summary\\\\SummaryBudget\\:\\:\\$chargeLabels is unused\\.$#" + count: 1 + path: src/Bundle/ChillBudgetBundle/Service/Summary/SummaryBudget.php + + - + message: "#^Property Chill\\\\BudgetBundle\\\\Service\\\\Summary\\\\SummaryBudget\\:\\:\\$resourcesLabels is unused\\.$#" + count: 1 + path: src/Bundle/ChillBudgetBundle/Service/Summary/SummaryBudget.php + + - + message: "#^Property Chill\\\\CalendarBundle\\\\Command\\\\AzureGrantAdminConsentAndAcquireToken\\:\\:\\$clientRegistry is never read, only written\\.$#" + count: 1 + path: src/Bundle/ChillCalendarBundle/Command/AzureGrantAdminConsentAndAcquireToken.php + + - + message: "#^Property Chill\\\\CalendarBundle\\\\Command\\\\SendTestShortMessageOnCalendarCommand\\:\\:\\$phoneNumberHelper is never read, only written\\.$#" + count: 1 + path: src/Bundle/ChillCalendarBundle/Command/SendTestShortMessageOnCalendarCommand.php + + - + message: "#^Strict comparison using \\=\\=\\= between false and DateInterval will always evaluate to false\\.$#" + count: 1 + path: src/Bundle/ChillCalendarBundle/Command/SendTestShortMessageOnCalendarCommand.php + + - + message: "#^Strict comparison using \\=\\=\\= between false and DateTimeImmutable will always evaluate to false\\.$#" + count: 1 + path: src/Bundle/ChillCalendarBundle/Command/SendTestShortMessageOnCalendarCommand.php + + - + message: "#^Call to an undefined method Symfony\\\\Component\\\\Form\\\\FormInterface\\:\\:isClicked\\(\\)\\.$#" + count: 4 + path: src/Bundle/ChillCalendarBundle/Controller/CalendarController.php + + - + message: "#^Call to an undefined method Symfony\\\\Component\\\\Serializer\\\\SerializerInterface\\:\\:normalize\\(\\)\\.$#" + count: 2 + path: src/Bundle/ChillCalendarBundle/Controller/CalendarController.php + + - + message: "#^Unreachable statement \\- code above always terminates\\.$#" + count: 1 + path: src/Bundle/ChillCalendarBundle/Controller/CalendarController.php + + - + message: "#^Property Chill\\\\CalendarBundle\\\\Controller\\\\CalendarDocController\\:\\:\\$docGeneratorTemplateRepository is never read, only written\\.$#" + count: 1 + path: src/Bundle/ChillCalendarBundle/Controller/CalendarDocController.php + + - + message: "#^Property Chill\\\\CalendarBundle\\\\Controller\\\\CalendarDocController\\:\\:\\$serializer is unused\\.$#" + count: 1 + path: src/Bundle/ChillCalendarBundle/Controller/CalendarDocController.php + + - + message: "#^Method Symfony\\\\Component\\\\HttpFoundation\\\\Session\\\\SessionInterface\\:\\:remove\\(\\) invoked with 2 parameters, 1 required\\.$#" + count: 1 + path: src/Bundle/ChillCalendarBundle/Controller/RemoteCalendarConnectAzureController.php + + - + message: "#^Call to an undefined method Symfony\\\\Component\\\\Config\\\\Definition\\\\Builder\\\\NodeDefinition\\:\\:children\\(\\)\\.$#" + count: 1 + path: src/Bundle/ChillCalendarBundle/DependencyInjection/Configuration.php + + - + message: "#^Method Symfony\\\\Component\\\\Config\\\\Definition\\\\Builder\\\\TreeBuilder\\:\\:getRootNode\\(\\) invoked with 1 parameter, 0 required\\.$#" + count: 1 + path: src/Bundle/ChillCalendarBundle/DependencyInjection/Configuration.php + + - + message: "#^Call to an undefined method Doctrine\\\\Common\\\\Collections\\\\Collection\\:\\:matching\\(\\)\\.$#" + count: 1 + path: src/Bundle/ChillCalendarBundle/Entity/Calendar.php + + - + message: "#^Property Chill\\\\CalendarBundle\\\\Entity\\\\CalendarRange\\:\\:\\$id is never written, only read\\.$#" + count: 1 + path: src/Bundle/ChillCalendarBundle/Entity/CalendarRange.php + + - + message: "#^Property Chill\\\\CalendarBundle\\\\Entity\\\\CancelReason\\:\\:\\$id is never written, only read\\.$#" + count: 1 + path: src/Bundle/ChillCalendarBundle/Entity/CancelReason.php + + - + message: "#^Property Chill\\\\CalendarBundle\\\\Messenger\\\\Message\\\\CalendarMessage\\:\\:\\$oldInvites \\(array\\\\) does not accept array\\\\.$#" + count: 1 + path: src/Bundle/ChillCalendarBundle/Messenger/Message/CalendarMessage.php + + - + message: "#^PHPDoc tag @return has invalid value \\(array\\\\)\\: Unexpected token \"\\:\", expected '\\>' at offset 408$#" + count: 2 + path: src/Bundle/ChillCalendarBundle/RemoteCalendar/Connector/MSGraph/EventsOnUserSubscriptionCreator.php + + - + message: "#^Strict comparison using \\=\\=\\= between null and string will always evaluate to false\\.$#" + count: 1 + path: src/Bundle/ChillCalendarBundle/RemoteCalendar/Connector/MSGraph/EventsOnUserSubscriptionCreator.php + + - + message: "#^Method Chill\\\\CalendarBundle\\\\RemoteCalendar\\\\Connector\\\\MSGraph\\\\OnBehalfOfUserTokenStorage\\:\\:getToken\\(\\) should return TheNetworg\\\\OAuth2\\\\Client\\\\Token\\\\AccessToken but returns League\\\\OAuth2\\\\Client\\\\Token\\\\AccessTokenInterface\\.$#" + count: 1 + path: src/Bundle/ChillCalendarBundle/RemoteCalendar/Connector/MSGraph/OnBehalfOfUserTokenStorage.php + + - + message: "#^Call to method DateTimeImmutable\\:\\:setTimezone\\(\\) on a separate line has no effect\\.$#" + count: 1 + path: src/Bundle/ChillCalendarBundle/RemoteCalendar/Connector/MSGraph/RemoteEventConverter.php + + - + message: "#^Unreachable statement \\- code above always terminates\\.$#" + count: 1 + path: src/Bundle/ChillCalendarBundle/RemoteCalendar/Connector/MSGraph/RemoteToLocalSync/CalendarSyncer.php + + - + message: "#^Expression on left side of \\?\\? is not nullable\\.$#" + count: 2 + path: src/Bundle/ChillCalendarBundle/RemoteCalendar/Connector/MSGraphRemoteCalendarConnector.php + + - + message: "#^PHPDoc tag @return has invalid value \\(array\\{\\?id\\: string, \\?lastModifiedDateTime\\: int, \\?changeKey\\: string\\}\\)\\: Unexpected token \"\\:\", expected '\\}' at offset 129$#" + count: 2 + path: src/Bundle/ChillCalendarBundle/RemoteCalendar/Connector/MSGraphRemoteCalendarConnector.php + + - + message: "#^Strict comparison using \\=\\=\\= between null and string will always evaluate to false\\.$#" + count: 1 + path: src/Bundle/ChillCalendarBundle/RemoteCalendar/Connector/MSGraphRemoteCalendarConnector.php + + - + message: "#^Property Chill\\\\CalendarBundle\\\\Security\\\\Voter\\\\CalendarVoter\\:\\:\\$authorizationHelper is unused\\.$#" + count: 1 + path: src/Bundle/ChillCalendarBundle/Security/Voter/CalendarVoter.php + + - + message: "#^Property Chill\\\\CalendarBundle\\\\Security\\\\Voter\\\\CalendarVoter\\:\\:\\$centerResolverManager is unused\\.$#" + count: 1 + path: src/Bundle/ChillCalendarBundle/Security/Voter/CalendarVoter.php + + - + message: "#^Call to an undefined method Symfony\\\\Component\\\\Console\\\\Helper\\\\HelperInterface\\:\\:ask\\(\\)\\.$#" + count: 1 + path: src/Bundle/ChillCustomFieldsBundle/Command/CreateFieldsOnGroupCommand.php + + - + message: "#^If condition is always true\\.$#" + count: 1 + path: src/Bundle/ChillCustomFieldsBundle/Command/CreateFieldsOnGroupCommand.php + + - + message: "#^Strict comparison using \\=\\=\\= between null and Chill\\\\CustomFieldsBundle\\\\Service\\\\CustomFieldInterface will always evaluate to false\\.$#" + count: 1 + path: src/Bundle/ChillCustomFieldsBundle/Command/CreateFieldsOnGroupCommand.php + + - + message: "#^Method Chill\\\\CustomFieldsBundle\\\\Controller\\\\CustomFieldController\\:\\:createCreateForm\\(\\) should return Symfony\\\\Component\\\\Form\\\\Form but returns Symfony\\\\Component\\\\Form\\\\FormInterface\\.$#" + count: 1 + path: src/Bundle/ChillCustomFieldsBundle/Controller/CustomFieldController.php + + - + message: "#^Method Chill\\\\CustomFieldsBundle\\\\Controller\\\\CustomFieldController\\:\\:createEditForm\\(\\) should return Symfony\\\\Component\\\\Form\\\\Form but returns Symfony\\\\Component\\\\Form\\\\FormInterface\\.$#" + count: 1 + path: src/Bundle/ChillCustomFieldsBundle/Controller/CustomFieldController.php + + - + message: "#^PHPDoc tag @param has invalid value \\(string\\)\\: Unexpected token \"\\\\n \\* \", expected variable at offset 130$#" + count: 1 + path: src/Bundle/ChillCustomFieldsBundle/Controller/CustomFieldController.php + + - + message: "#^Ternary operator condition is always true\\.$#" + count: 1 + path: src/Bundle/ChillCustomFieldsBundle/Controller/CustomFieldController.php + + - + message: "#^Call to an undefined method Doctrine\\\\Persistence\\\\ObjectManager\\:\\:createQuery\\(\\)\\.$#" + count: 1 + path: src/Bundle/ChillCustomFieldsBundle/Controller/CustomFieldsGroupController.php + + - + message: "#^Call to an undefined method Doctrine\\\\Persistence\\\\ObjectRepository\\\\:\\:findOneByEntity\\(\\)\\.$#" + count: 1 + path: src/Bundle/ChillCustomFieldsBundle/Controller/CustomFieldsGroupController.php + + - + message: "#^Call to an undefined method Doctrine\\\\Persistence\\\\ObjectRepository\\\\:\\:findOneById\\(\\)\\.$#" + count: 1 + path: src/Bundle/ChillCustomFieldsBundle/Controller/CustomFieldsGroupController.php + + - + message: "#^Call to an undefined method Symfony\\\\Component\\\\Form\\\\FormInterface\\:\\:isClicked\\(\\)\\.$#" + count: 1 + path: src/Bundle/ChillCustomFieldsBundle/Controller/CustomFieldsGroupController.php + + - + message: "#^Method Chill\\\\CustomFieldsBundle\\\\Controller\\\\CustomFieldsGroupController\\:\\:createCreateForm\\(\\) should return Symfony\\\\Component\\\\Form\\\\Form but returns Symfony\\\\Component\\\\Form\\\\FormInterface\\.$#" + count: 1 + path: src/Bundle/ChillCustomFieldsBundle/Controller/CustomFieldsGroupController.php + + - + message: "#^Method Chill\\\\CustomFieldsBundle\\\\Controller\\\\CustomFieldsGroupController\\:\\:createEditForm\\(\\) should return Symfony\\\\Component\\\\Form\\\\Form but returns Symfony\\\\Component\\\\Form\\\\FormInterface\\.$#" + count: 1 + path: src/Bundle/ChillCustomFieldsBundle/Controller/CustomFieldsGroupController.php + + - + message: "#^Method Chill\\\\CustomFieldsBundle\\\\Controller\\\\CustomFieldsGroupController\\:\\:createMakeDefaultForm\\(\\) should return Symfony\\\\Component\\\\Form\\\\Form but returns Symfony\\\\Component\\\\Form\\\\FormInterface\\.$#" + count: 1 + path: src/Bundle/ChillCustomFieldsBundle/Controller/CustomFieldsGroupController.php + + - + message: "#^Call to an undefined method Symfony\\\\Contracts\\\\Translation\\\\TranslatorInterface\\:\\:getFallbackLocales\\(\\)\\.$#" + count: 1 + path: src/Bundle/ChillCustomFieldsBundle/CustomFields/CustomFieldChoice.php + + - + message: "#^Method Chill\\\\CustomFieldsBundle\\\\CustomFields\\\\CustomFieldChoice\\:\\:buildOptionsForm\\(\\) should return Symfony\\\\Component\\\\Form\\\\FormTypeInterface\\|null but returns Symfony\\\\Component\\\\Form\\\\FormBuilderInterface\\.$#" + count: 1 + path: src/Bundle/ChillCustomFieldsBundle/CustomFields/CustomFieldChoice.php + + - + message: "#^Method Symfony\\\\Component\\\\Form\\\\FormBuilderInterface\\:\\:create\\(\\) invoked with 4 parameters, 1\\-3 required\\.$#" + count: 1 + path: src/Bundle/ChillCustomFieldsBundle/CustomFields/CustomFieldChoice.php + + - + message: "#^Parameter \\$builder of method Chill\\\\CustomFieldsBundle\\\\CustomFields\\\\CustomFieldChoice\\:\\:buildForm\\(\\) has invalid type Chill\\\\CustomFieldsBundle\\\\CustomField\\\\FormBuilderInterface\\.$#" + count: 1 + path: src/Bundle/ChillCustomFieldsBundle/CustomFields/CustomFieldChoice.php + + - + message: "#^Parameter \\$builder of method Chill\\\\CustomFieldsBundle\\\\CustomFields\\\\CustomFieldChoice\\:\\:buildOptionsForm\\(\\) has invalid type Chill\\\\CustomFieldsBundle\\\\CustomField\\\\FormBuilderInterface\\.$#" + count: 1 + path: src/Bundle/ChillCustomFieldsBundle/CustomFields/CustomFieldChoice.php + + - + message: "#^Parameter \\$customField of method Chill\\\\CustomFieldsBundle\\\\CustomFields\\\\CustomFieldChoice\\:\\:buildForm\\(\\) has invalid type Chill\\\\CustomFieldsBundle\\\\CustomField\\\\CustomField\\.$#" + count: 1 + path: src/Bundle/ChillCustomFieldsBundle/CustomFields/CustomFieldChoice.php + + - + message: "#^Parameter \\$customField of method Chill\\\\CustomFieldsBundle\\\\CustomFields\\\\CustomFieldChoice\\:\\:deserialize\\(\\) has invalid type Chill\\\\CustomFieldsBundle\\\\CustomField\\\\CustomField\\.$#" + count: 1 + path: src/Bundle/ChillCustomFieldsBundle/CustomFields/CustomFieldChoice.php + + - + message: "#^Parameter \\$customField of method Chill\\\\CustomFieldsBundle\\\\CustomFields\\\\CustomFieldChoice\\:\\:render\\(\\) has invalid type Chill\\\\CustomFieldsBundle\\\\CustomField\\\\CustomField\\.$#" + count: 1 + path: src/Bundle/ChillCustomFieldsBundle/CustomFields/CustomFieldChoice.php + + - + message: "#^Parameter \\$customField of method Chill\\\\CustomFieldsBundle\\\\CustomFields\\\\CustomFieldChoice\\:\\:serialize\\(\\) has invalid type Chill\\\\CustomFieldsBundle\\\\CustomField\\\\CustomField\\.$#" + count: 1 + path: src/Bundle/ChillCustomFieldsBundle/CustomFields/CustomFieldChoice.php + + - + message: "#^Strict comparison using \\=\\=\\= between null and array\\|string will always evaluate to false\\.$#" + count: 2 + path: src/Bundle/ChillCustomFieldsBundle/CustomFields/CustomFieldChoice.php + + - + message: "#^Unreachable statement \\- code above always terminates\\.$#" + count: 3 + path: src/Bundle/ChillCustomFieldsBundle/CustomFields/CustomFieldChoice.php + + - + message: "#^Method Chill\\\\CustomFieldsBundle\\\\CustomFields\\\\CustomFieldDate\\:\\:buildOptionsForm\\(\\) should return Symfony\\\\Component\\\\Form\\\\FormTypeInterface\\|null but returns Symfony\\\\Component\\\\Form\\\\FormBuilderInterface\\.$#" + count: 1 + path: src/Bundle/ChillCustomFieldsBundle/CustomFields/CustomFieldDate.php + + - + message: "#^Method Chill\\\\CustomFieldsBundle\\\\CustomFields\\\\CustomFieldDate\\:\\:render\\(\\) should return string but returns null\\.$#" + count: 1 + path: src/Bundle/ChillCustomFieldsBundle/CustomFields/CustomFieldDate.php + + - + message: "#^Parameter \\$builder of method Chill\\\\CustomFieldsBundle\\\\CustomFields\\\\CustomFieldDate\\:\\:buildForm\\(\\) has invalid type Chill\\\\CustomFieldsBundle\\\\CustomField\\\\FormBuilderInterface\\.$#" + count: 1 + path: src/Bundle/ChillCustomFieldsBundle/CustomFields/CustomFieldDate.php + + - + message: "#^Parameter \\$builder of method Chill\\\\CustomFieldsBundle\\\\CustomFields\\\\CustomFieldDate\\:\\:buildOptionsForm\\(\\) has invalid type Chill\\\\CustomFieldsBundle\\\\CustomField\\\\FormBuilderInterface\\.$#" + count: 1 + path: src/Bundle/ChillCustomFieldsBundle/CustomFields/CustomFieldDate.php + + - + message: "#^Parameter \\$customField of method Chill\\\\CustomFieldsBundle\\\\CustomFields\\\\CustomFieldDate\\:\\:buildForm\\(\\) has invalid type Chill\\\\CustomFieldsBundle\\\\CustomField\\\\CustomField\\.$#" + count: 1 + path: src/Bundle/ChillCustomFieldsBundle/CustomFields/CustomFieldDate.php + + - + message: "#^Parameter \\$customField of method Chill\\\\CustomFieldsBundle\\\\CustomFields\\\\CustomFieldDate\\:\\:deserialize\\(\\) has invalid type Chill\\\\CustomFieldsBundle\\\\CustomField\\\\CustomField\\.$#" + count: 1 + path: src/Bundle/ChillCustomFieldsBundle/CustomFields/CustomFieldDate.php + + - + message: "#^Parameter \\$customField of method Chill\\\\CustomFieldsBundle\\\\CustomFields\\\\CustomFieldDate\\:\\:render\\(\\) has invalid type Chill\\\\CustomFieldsBundle\\\\CustomField\\\\CustomField\\.$#" + count: 1 + path: src/Bundle/ChillCustomFieldsBundle/CustomFields/CustomFieldDate.php + + - + message: "#^Parameter \\$customField of method Chill\\\\CustomFieldsBundle\\\\CustomFields\\\\CustomFieldDate\\:\\:serialize\\(\\) has invalid type Chill\\\\CustomFieldsBundle\\\\CustomField\\\\CustomField\\.$#" + count: 1 + path: src/Bundle/ChillCustomFieldsBundle/CustomFields/CustomFieldDate.php + + - + message: "#^PHPDoc tag @param for parameter \\$builder with type Chill\\\\CustomFieldsBundle\\\\CustomField\\\\FormBuilderInterface is not subtype of native type Symfony\\\\Component\\\\Form\\\\FormBuilderInterface\\.$#" + count: 2 + path: src/Bundle/ChillCustomFieldsBundle/CustomFields/CustomFieldInterface.php + + - + message: "#^PHPDoc tag @param for parameter \\$customField with type Chill\\\\CustomFieldsBundle\\\\CustomField\\\\CustomField is not subtype of native type Chill\\\\CustomFieldsBundle\\\\Entity\\\\CustomField\\.$#" + count: 4 + path: src/Bundle/ChillCustomFieldsBundle/CustomFields/CustomFieldInterface.php + + - + message: "#^Parameter \\$builder of method Chill\\\\CustomFieldsBundle\\\\CustomFields\\\\CustomFieldInterface\\:\\:buildForm\\(\\) has invalid type Chill\\\\CustomFieldsBundle\\\\CustomField\\\\FormBuilderInterface\\.$#" + count: 1 + path: src/Bundle/ChillCustomFieldsBundle/CustomFields/CustomFieldInterface.php + + - + message: "#^Parameter \\$builder of method Chill\\\\CustomFieldsBundle\\\\CustomFields\\\\CustomFieldInterface\\:\\:buildOptionsForm\\(\\) has invalid type Chill\\\\CustomFieldsBundle\\\\CustomField\\\\FormBuilderInterface\\.$#" + count: 1 + path: src/Bundle/ChillCustomFieldsBundle/CustomFields/CustomFieldInterface.php + + - + message: "#^Parameter \\$customField of method Chill\\\\CustomFieldsBundle\\\\CustomFields\\\\CustomFieldInterface\\:\\:buildForm\\(\\) has invalid type Chill\\\\CustomFieldsBundle\\\\CustomField\\\\CustomField\\.$#" + count: 1 + path: src/Bundle/ChillCustomFieldsBundle/CustomFields/CustomFieldInterface.php + + - + message: "#^Parameter \\$customField of method Chill\\\\CustomFieldsBundle\\\\CustomFields\\\\CustomFieldInterface\\:\\:deserialize\\(\\) has invalid type Chill\\\\CustomFieldsBundle\\\\CustomField\\\\CustomField\\.$#" + count: 1 + path: src/Bundle/ChillCustomFieldsBundle/CustomFields/CustomFieldInterface.php + + - + message: "#^Parameter \\$customField of method Chill\\\\CustomFieldsBundle\\\\CustomFields\\\\CustomFieldInterface\\:\\:render\\(\\) has invalid type Chill\\\\CustomFieldsBundle\\\\CustomField\\\\CustomField\\.$#" + count: 1 + path: src/Bundle/ChillCustomFieldsBundle/CustomFields/CustomFieldInterface.php + + - + message: "#^Parameter \\$customField of method Chill\\\\CustomFieldsBundle\\\\CustomFields\\\\CustomFieldInterface\\:\\:serialize\\(\\) has invalid type Chill\\\\CustomFieldsBundle\\\\CustomField\\\\CustomField\\.$#" + count: 1 + path: src/Bundle/ChillCustomFieldsBundle/CustomFields/CustomFieldInterface.php + + - + message: "#^Anonymous function never returns null so it can be removed from the return type\\.$#" + count: 1 + path: src/Bundle/ChillCustomFieldsBundle/CustomFields/CustomFieldLongChoice.php + + - + message: "#^Method Chill\\\\CustomFieldsBundle\\\\CustomFields\\\\CustomFieldLongChoice\\:\\:buildOptionsForm\\(\\) should return Symfony\\\\Component\\\\Form\\\\FormTypeInterface\\|null but returns Symfony\\\\Component\\\\Form\\\\FormBuilderInterface\\.$#" + count: 1 + path: src/Bundle/ChillCustomFieldsBundle/CustomFields/CustomFieldLongChoice.php + + - + message: "#^Parameter \\$builder of method Chill\\\\CustomFieldsBundle\\\\CustomFields\\\\CustomFieldLongChoice\\:\\:buildForm\\(\\) has invalid type Chill\\\\CustomFieldsBundle\\\\CustomField\\\\FormBuilderInterface\\.$#" + count: 1 + path: src/Bundle/ChillCustomFieldsBundle/CustomFields/CustomFieldLongChoice.php + + - + message: "#^Parameter \\$builder of method Chill\\\\CustomFieldsBundle\\\\CustomFields\\\\CustomFieldLongChoice\\:\\:buildOptionsForm\\(\\) has invalid type Chill\\\\CustomFieldsBundle\\\\CustomField\\\\FormBuilderInterface\\.$#" + count: 1 + path: src/Bundle/ChillCustomFieldsBundle/CustomFields/CustomFieldLongChoice.php + + - + message: "#^Parameter \\$customField of method Chill\\\\CustomFieldsBundle\\\\CustomFields\\\\CustomFieldLongChoice\\:\\:buildForm\\(\\) has invalid type Chill\\\\CustomFieldsBundle\\\\CustomField\\\\CustomField\\.$#" + count: 1 + path: src/Bundle/ChillCustomFieldsBundle/CustomFields/CustomFieldLongChoice.php + + - + message: "#^Parameter \\$customField of method Chill\\\\CustomFieldsBundle\\\\CustomFields\\\\CustomFieldLongChoice\\:\\:deserialize\\(\\) has invalid type Chill\\\\CustomFieldsBundle\\\\CustomField\\\\CustomField\\.$#" + count: 1 + path: src/Bundle/ChillCustomFieldsBundle/CustomFields/CustomFieldLongChoice.php + + - + message: "#^Parameter \\$customField of method Chill\\\\CustomFieldsBundle\\\\CustomFields\\\\CustomFieldLongChoice\\:\\:render\\(\\) has invalid type Chill\\\\CustomFieldsBundle\\\\CustomField\\\\CustomField\\.$#" + count: 1 + path: src/Bundle/ChillCustomFieldsBundle/CustomFields/CustomFieldLongChoice.php + + - + message: "#^Parameter \\$customField of method Chill\\\\CustomFieldsBundle\\\\CustomFields\\\\CustomFieldLongChoice\\:\\:serialize\\(\\) has invalid type Chill\\\\CustomFieldsBundle\\\\CustomField\\\\CustomField\\.$#" + count: 1 + path: src/Bundle/ChillCustomFieldsBundle/CustomFields/CustomFieldLongChoice.php + + - + message: "#^Strict comparison using \\=\\=\\= between null and Chill\\\\CustomFieldsBundle\\\\Entity\\\\CustomFieldLongChoice\\\\Option will always evaluate to false\\.$#" + count: 1 + path: src/Bundle/ChillCustomFieldsBundle/CustomFields/CustomFieldLongChoice.php + + - + message: "#^Ternary operator condition is always true\\.$#" + count: 1 + path: src/Bundle/ChillCustomFieldsBundle/CustomFields/CustomFieldLongChoice.php + + - + message: "#^Method Chill\\\\CustomFieldsBundle\\\\CustomFields\\\\CustomFieldNumber\\:\\:buildOptionsForm\\(\\) should return Symfony\\\\Component\\\\Form\\\\FormTypeInterface\\|null but returns Symfony\\\\Component\\\\Form\\\\FormBuilderInterface\\.$#" + count: 1 + path: src/Bundle/ChillCustomFieldsBundle/CustomFields/CustomFieldNumber.php + + - + message: "#^Parameter \\$builder of method Chill\\\\CustomFieldsBundle\\\\CustomFields\\\\CustomFieldNumber\\:\\:buildForm\\(\\) has invalid type Chill\\\\CustomFieldsBundle\\\\CustomField\\\\FormBuilderInterface\\.$#" + count: 1 + path: src/Bundle/ChillCustomFieldsBundle/CustomFields/CustomFieldNumber.php + + - + message: "#^Parameter \\$builder of method Chill\\\\CustomFieldsBundle\\\\CustomFields\\\\CustomFieldNumber\\:\\:buildOptionsForm\\(\\) has invalid type Chill\\\\CustomFieldsBundle\\\\CustomField\\\\FormBuilderInterface\\.$#" + count: 1 + path: src/Bundle/ChillCustomFieldsBundle/CustomFields/CustomFieldNumber.php + + - + message: "#^Parameter \\$customField of method Chill\\\\CustomFieldsBundle\\\\CustomFields\\\\CustomFieldNumber\\:\\:buildForm\\(\\) has invalid type Chill\\\\CustomFieldsBundle\\\\CustomField\\\\CustomField\\.$#" + count: 1 + path: src/Bundle/ChillCustomFieldsBundle/CustomFields/CustomFieldNumber.php + + - + message: "#^Parameter \\$customField of method Chill\\\\CustomFieldsBundle\\\\CustomFields\\\\CustomFieldNumber\\:\\:deserialize\\(\\) has invalid type Chill\\\\CustomFieldsBundle\\\\CustomField\\\\CustomField\\.$#" + count: 1 + path: src/Bundle/ChillCustomFieldsBundle/CustomFields/CustomFieldNumber.php + + - + message: "#^Parameter \\$customField of method Chill\\\\CustomFieldsBundle\\\\CustomFields\\\\CustomFieldNumber\\:\\:render\\(\\) has invalid type Chill\\\\CustomFieldsBundle\\\\CustomField\\\\CustomField\\.$#" + count: 1 + path: src/Bundle/ChillCustomFieldsBundle/CustomFields/CustomFieldNumber.php + + - + message: "#^Parameter \\$customField of method Chill\\\\CustomFieldsBundle\\\\CustomFields\\\\CustomFieldNumber\\:\\:serialize\\(\\) has invalid type Chill\\\\CustomFieldsBundle\\\\CustomField\\\\CustomField\\.$#" + count: 1 + path: src/Bundle/ChillCustomFieldsBundle/CustomFields/CustomFieldNumber.php + + - + message: "#^Method Chill\\\\CustomFieldsBundle\\\\CustomFields\\\\CustomFieldText\\:\\:buildOptionsForm\\(\\) should return Symfony\\\\Component\\\\Form\\\\FormTypeInterface\\|null but returns Symfony\\\\Component\\\\Form\\\\FormBuilderInterface\\.$#" + count: 1 + path: src/Bundle/ChillCustomFieldsBundle/CustomFields/CustomFieldText.php + + - + message: "#^Parameter \\$builder of method Chill\\\\CustomFieldsBundle\\\\CustomFields\\\\CustomFieldText\\:\\:buildForm\\(\\) has invalid type Chill\\\\CustomFieldsBundle\\\\CustomField\\\\FormBuilderInterface\\.$#" + count: 1 + path: src/Bundle/ChillCustomFieldsBundle/CustomFields/CustomFieldText.php + + - + message: "#^Parameter \\$builder of method Chill\\\\CustomFieldsBundle\\\\CustomFields\\\\CustomFieldText\\:\\:buildOptionsForm\\(\\) has invalid type Chill\\\\CustomFieldsBundle\\\\CustomField\\\\FormBuilderInterface\\.$#" + count: 1 + path: src/Bundle/ChillCustomFieldsBundle/CustomFields/CustomFieldText.php + + - + message: "#^Parameter \\$customField of method Chill\\\\CustomFieldsBundle\\\\CustomFields\\\\CustomFieldText\\:\\:buildForm\\(\\) has invalid type Chill\\\\CustomFieldsBundle\\\\CustomField\\\\CustomField\\.$#" + count: 1 + path: src/Bundle/ChillCustomFieldsBundle/CustomFields/CustomFieldText.php + + - + message: "#^Parameter \\$customField of method Chill\\\\CustomFieldsBundle\\\\CustomFields\\\\CustomFieldText\\:\\:deserialize\\(\\) has invalid type Chill\\\\CustomFieldsBundle\\\\CustomField\\\\CustomField\\.$#" + count: 1 + path: src/Bundle/ChillCustomFieldsBundle/CustomFields/CustomFieldText.php + + - + message: "#^Parameter \\$customField of method Chill\\\\CustomFieldsBundle\\\\CustomFields\\\\CustomFieldText\\:\\:render\\(\\) has invalid type Chill\\\\CustomFieldsBundle\\\\CustomField\\\\CustomField\\.$#" + count: 1 + path: src/Bundle/ChillCustomFieldsBundle/CustomFields/CustomFieldText.php + + - + message: "#^Parameter \\$customField of method Chill\\\\CustomFieldsBundle\\\\CustomFields\\\\CustomFieldText\\:\\:serialize\\(\\) has invalid type Chill\\\\CustomFieldsBundle\\\\CustomField\\\\CustomField\\.$#" + count: 1 + path: src/Bundle/ChillCustomFieldsBundle/CustomFields/CustomFieldText.php + + - + message: "#^Property Chill\\\\CustomFieldsBundle\\\\CustomFields\\\\CustomFieldText\\:\\:\\$requestStack is never read, only written\\.$#" + count: 1 + path: src/Bundle/ChillCustomFieldsBundle/CustomFields/CustomFieldText.php + + - + message: "#^Method Chill\\\\CustomFieldsBundle\\\\CustomFields\\\\CustomFieldTitle\\:\\:buildOptionsForm\\(\\) should return Symfony\\\\Component\\\\Form\\\\FormTypeInterface\\|null but returns Symfony\\\\Component\\\\Form\\\\FormBuilderInterface\\.$#" + count: 1 + path: src/Bundle/ChillCustomFieldsBundle/CustomFields/CustomFieldTitle.php + + - + message: "#^Parameter \\$builder of method Chill\\\\CustomFieldsBundle\\\\CustomFields\\\\CustomFieldTitle\\:\\:buildForm\\(\\) has invalid type Chill\\\\CustomFieldsBundle\\\\CustomField\\\\FormBuilderInterface\\.$#" + count: 1 + path: src/Bundle/ChillCustomFieldsBundle/CustomFields/CustomFieldTitle.php + + - + message: "#^Parameter \\$builder of method Chill\\\\CustomFieldsBundle\\\\CustomFields\\\\CustomFieldTitle\\:\\:buildOptionsForm\\(\\) has invalid type Chill\\\\CustomFieldsBundle\\\\CustomField\\\\FormBuilderInterface\\.$#" + count: 1 + path: src/Bundle/ChillCustomFieldsBundle/CustomFields/CustomFieldTitle.php + + - + message: "#^Parameter \\$customField of method Chill\\\\CustomFieldsBundle\\\\CustomFields\\\\CustomFieldTitle\\:\\:buildForm\\(\\) has invalid type Chill\\\\CustomFieldsBundle\\\\CustomField\\\\CustomField\\.$#" + count: 1 + path: src/Bundle/ChillCustomFieldsBundle/CustomFields/CustomFieldTitle.php + + - + message: "#^Parameter \\$customField of method Chill\\\\CustomFieldsBundle\\\\CustomFields\\\\CustomFieldTitle\\:\\:deserialize\\(\\) has invalid type Chill\\\\CustomFieldsBundle\\\\CustomField\\\\CustomField\\.$#" + count: 1 + path: src/Bundle/ChillCustomFieldsBundle/CustomFields/CustomFieldTitle.php + + - + message: "#^Parameter \\$customField of method Chill\\\\CustomFieldsBundle\\\\CustomFields\\\\CustomFieldTitle\\:\\:render\\(\\) has invalid type Chill\\\\CustomFieldsBundle\\\\CustomField\\\\CustomField\\.$#" + count: 1 + path: src/Bundle/ChillCustomFieldsBundle/CustomFields/CustomFieldTitle.php + + - + message: "#^Parameter \\$customField of method Chill\\\\CustomFieldsBundle\\\\CustomFields\\\\CustomFieldTitle\\:\\:serialize\\(\\) has invalid type Chill\\\\CustomFieldsBundle\\\\CustomField\\\\CustomField\\.$#" + count: 1 + path: src/Bundle/ChillCustomFieldsBundle/CustomFields/CustomFieldTitle.php + + - + message: "#^Property Chill\\\\CustomFieldsBundle\\\\CustomFields\\\\CustomFieldTitle\\:\\:\\$requestStack is never read, only written\\.$#" + count: 1 + path: src/Bundle/ChillCustomFieldsBundle/CustomFields/CustomFieldTitle.php + + - + message: "#^Call to an undefined method Symfony\\\\Component\\\\Config\\\\Definition\\\\Builder\\\\NodeDefinition\\:\\:children\\(\\)\\.$#" + count: 1 + path: src/Bundle/ChillCustomFieldsBundle/DependencyInjection/Configuration.php + + - + message: "#^Method Symfony\\\\Component\\\\Config\\\\Definition\\\\Builder\\\\TreeBuilder\\:\\:getRootNode\\(\\) invoked with 1 parameter, 0 required\\.$#" + count: 1 + path: src/Bundle/ChillCustomFieldsBundle/DependencyInjection/Configuration.php + + - + message: "#^Method Chill\\\\CustomFieldsBundle\\\\Entity\\\\CustomField\\:\\:getName\\(\\) should return array but returns string\\.$#" + count: 1 + path: src/Bundle/ChillCustomFieldsBundle/Entity/CustomField.php + + - + message: "#^Property Chill\\\\CustomFieldsBundle\\\\Entity\\\\CustomField\\:\\:\\$id is never written, only read\\.$#" + count: 1 + path: src/Bundle/ChillCustomFieldsBundle/Entity/CustomField.php + + - + message: "#^Property Chill\\\\CustomFieldsBundle\\\\Entity\\\\CustomFieldLongChoice\\\\Option\\:\\:\\$children is never written, only read\\.$#" + count: 1 + path: src/Bundle/ChillCustomFieldsBundle/Entity/CustomFieldLongChoice/Option.php + + - + message: "#^Property Chill\\\\CustomFieldsBundle\\\\Entity\\\\CustomFieldLongChoice\\\\Option\\:\\:\\$id is never written, only read\\.$#" + count: 1 + path: src/Bundle/ChillCustomFieldsBundle/Entity/CustomFieldLongChoice/Option.php + + - + message: "#^Property Chill\\\\CustomFieldsBundle\\\\Entity\\\\CustomFieldsDefaultGroup\\:\\:\\$id is never written, only read\\.$#" + count: 1 + path: src/Bundle/ChillCustomFieldsBundle/Entity/CustomFieldsDefaultGroup.php + + - + message: "#^Method Chill\\\\CustomFieldsBundle\\\\Entity\\\\CustomFieldsGroup\\:\\:getActiveCustomFields\\(\\) should return Doctrine\\\\Common\\\\Collections\\\\Collection but returns array\\.$#" + count: 1 + path: src/Bundle/ChillCustomFieldsBundle/Entity/CustomFieldsGroup.php + + - + message: "#^Method Chill\\\\CustomFieldsBundle\\\\Entity\\\\CustomFieldsGroup\\:\\:getName\\(\\) should return array but returns string\\.$#" + count: 1 + path: src/Bundle/ChillCustomFieldsBundle/Entity/CustomFieldsGroup.php + + - + message: "#^Property Chill\\\\CustomFieldsBundle\\\\Entity\\\\CustomFieldsGroup\\:\\:\\$id is never written, only read\\.$#" + count: 1 + path: src/Bundle/ChillCustomFieldsBundle/Entity/CustomFieldsGroup.php + + - + message: "#^Call to method buildOptionsForm\\(\\) on an unknown class Chill\\\\CustomFieldsBundle\\\\Service\\\\CustomFieldInterface\\.$#" + count: 1 + path: src/Bundle/ChillCustomFieldsBundle/Form/CustomFieldType.php + + - + message: "#^PHPDoc tag @param for parameter \\$resolver with type Chill\\\\CustomFieldsBundle\\\\Form\\\\OptionsResolverInterface is not subtype of native type Symfony\\\\Component\\\\OptionsResolver\\\\OptionsResolver\\.$#" + count: 1 + path: src/Bundle/ChillCustomFieldsBundle/Form/CustomFieldType.php + + - + message: "#^Parameter \\$resolver of method Chill\\\\CustomFieldsBundle\\\\Form\\\\CustomFieldType\\:\\:configureOptions\\(\\) has invalid type Chill\\\\CustomFieldsBundle\\\\Form\\\\OptionsResolverInterface\\.$#" + count: 1 + path: src/Bundle/ChillCustomFieldsBundle/Form/CustomFieldType.php + + - + message: "#^Property Chill\\\\CustomFieldsBundle\\\\Form\\\\CustomFieldsGroupType\\:\\:\\$translator \\(Symfony\\\\Component\\\\Translation\\\\TranslatorInterface\\) does not accept Symfony\\\\Contracts\\\\Translation\\\\TranslatorInterface\\.$#" + count: 1 + path: src/Bundle/ChillCustomFieldsBundle/Form/CustomFieldsGroupType.php + + - + message: "#^Instanceof between Chill\\\\CustomFieldsBundle\\\\Entity\\\\CustomFieldsGroup and Chill\\\\CustomFieldsBundle\\\\Entity\\\\CustomFieldsGroup will always evaluate to true\\.$#" + count: 1 + path: src/Bundle/ChillCustomFieldsBundle/Form/DataTransformer/CustomFieldsGroupToIdTransformer.php + + - + message: "#^Instanceof between string and Chill\\\\CustomFieldsBundle\\\\Entity\\\\CustomFieldsGroup will always evaluate to false\\.$#" + count: 1 + path: src/Bundle/ChillCustomFieldsBundle/Form/DataTransformer/CustomFieldsGroupToIdTransformer.php + + - + message: "#^Method Chill\\\\CustomFieldsBundle\\\\Form\\\\DataTransformer\\\\CustomFieldsGroupToIdTransformer\\:\\:transform\\(\\) should return string but returns int\\.$#" + count: 1 + path: src/Bundle/ChillCustomFieldsBundle/Form/DataTransformer/CustomFieldsGroupToIdTransformer.php + + - + message: "#^Call to an undefined method Chill\\\\CustomFieldsBundle\\\\Entity\\\\CustomField\\:\\:getLabel\\(\\)\\.$#" + count: 1 + path: src/Bundle/ChillCustomFieldsBundle/Form/DataTransformer/JsonCustomFieldToArrayTransformer.php + + - + message: "#^Call to an undefined method Doctrine\\\\Persistence\\\\ObjectRepository\\\\:\\:findOneById\\(\\)\\.$#" + count: 1 + path: src/Bundle/ChillCustomFieldsBundle/Form/DataTransformer/JsonCustomFieldToArrayTransformer.php + + - + message: "#^Call to method getCustomFieldByType\\(\\) on an unknown class Chill\\\\CustomFieldsBundle\\\\Form\\\\Type\\\\CustomFieldCompiler\\.$#" + count: 1 + path: src/Bundle/ChillCustomFieldsBundle/Form/Type/CustomFieldType.php + + - + message: "#^Property Chill\\\\CustomFieldsBundle\\\\Form\\\\Type\\\\CustomFieldType\\:\\:\\$customFieldCompiler \\(Chill\\\\CustomFieldsBundle\\\\Form\\\\Type\\\\CustomFieldCompiler\\) does not accept Chill\\\\CustomFieldsBundle\\\\Service\\\\CustomFieldProvider\\.$#" + count: 1 + path: src/Bundle/ChillCustomFieldsBundle/Form/Type/CustomFieldType.php + + - + message: "#^Property Chill\\\\CustomFieldsBundle\\\\Form\\\\Type\\\\CustomFieldType\\:\\:\\$customFieldCompiler has unknown class Chill\\\\CustomFieldsBundle\\\\Form\\\\Type\\\\CustomFieldCompiler as its type\\.$#" + count: 1 + path: src/Bundle/ChillCustomFieldsBundle/Form/Type/CustomFieldType.php + + - + message: "#^Property Chill\\\\CustomFieldsBundle\\\\Form\\\\Type\\\\CustomFieldType\\:\\:\\$om is never read, only written\\.$#" + count: 1 + path: src/Bundle/ChillCustomFieldsBundle/Form/Type/CustomFieldType.php + + - + message: "#^Invalid array key type Chill\\\\CustomFieldsBundle\\\\Service\\\\type\\.$#" + count: 1 + path: src/Bundle/ChillCustomFieldsBundle/Service/CustomFieldProvider.php + + - + message: "#^Method Chill\\\\CustomFieldsBundle\\\\Service\\\\CustomFieldProvider\\:\\:getCustomFieldByType\\(\\) has invalid return type Chill\\\\CustomFieldsBundle\\\\Service\\\\CustomFieldInterface\\.$#" + count: 1 + path: src/Bundle/ChillCustomFieldsBundle/Service/CustomFieldProvider.php + + - + message: "#^Parameter \\$serviceName of method Chill\\\\CustomFieldsBundle\\\\Service\\\\CustomFieldProvider\\:\\:addCustomField\\(\\) has invalid type Chill\\\\CustomFieldsBundle\\\\Service\\\\type\\.$#" + count: 1 + path: src/Bundle/ChillCustomFieldsBundle/Service/CustomFieldProvider.php + + - + message: "#^Parameter \\$type of method Chill\\\\CustomFieldsBundle\\\\Service\\\\CustomFieldProvider\\:\\:addCustomField\\(\\) has invalid type Chill\\\\CustomFieldsBundle\\\\Service\\\\type\\.$#" + count: 1 + path: src/Bundle/ChillCustomFieldsBundle/Service/CustomFieldProvider.php + + - + message: "#^Property Chill\\\\CustomFieldsBundle\\\\Service\\\\CustomFieldProvider\\:\\:\\$container \\(Chill\\\\CustomFieldsBundle\\\\Service\\\\Container\\) does not accept Symfony\\\\Component\\\\DependencyInjection\\\\ContainerInterface\\.$#" + count: 1 + path: src/Bundle/ChillCustomFieldsBundle/Service/CustomFieldProvider.php + + - + message: "#^Property Chill\\\\CustomFieldsBundle\\\\Service\\\\CustomFieldProvider\\:\\:\\$container has unknown class Chill\\\\CustomFieldsBundle\\\\Service\\\\Container as its type\\.$#" + count: 1 + path: src/Bundle/ChillCustomFieldsBundle/Service/CustomFieldProvider.php + + - + message: "#^Property Chill\\\\CustomFieldsBundle\\\\Service\\\\CustomFieldProvider\\:\\:\\$container is never read, only written\\.$#" + count: 1 + path: src/Bundle/ChillCustomFieldsBundle/Service/CustomFieldProvider.php + + - + message: "#^Call to method deserialize\\(\\) on an unknown class Chill\\\\CustomFieldsBundle\\\\Service\\\\CustomFieldInterface\\.$#" + count: 1 + path: src/Bundle/ChillCustomFieldsBundle/Service/CustomFieldsHelper.php + + - + message: "#^Call to method isEmptyValue\\(\\) on an unknown class Chill\\\\CustomFieldsBundle\\\\Service\\\\CustomFieldInterface\\.$#" + count: 1 + path: src/Bundle/ChillCustomFieldsBundle/Service/CustomFieldsHelper.php + + - + message: "#^Call to method render\\(\\) on an unknown class Chill\\\\CustomFieldsBundle\\\\Service\\\\CustomFieldInterface\\.$#" + count: 1 + path: src/Bundle/ChillCustomFieldsBundle/Service/CustomFieldsHelper.php + + - + message: "#^Method Chill\\\\CustomFieldsBundle\\\\Service\\\\CustomFieldsHelper\\:\\:renderCustomField\\(\\) has invalid return type Chill\\\\CustomFieldsBundle\\\\Service\\\\The\\.$#" + count: 1 + path: src/Bundle/ChillCustomFieldsBundle/Service/CustomFieldsHelper.php + + - + message: "#^Property Chill\\\\CustomFieldsBundle\\\\Service\\\\CustomFieldsHelper\\:\\:\\$em is never read, only written\\.$#" + count: 1 + path: src/Bundle/ChillCustomFieldsBundle/Service/CustomFieldsHelper.php + + - + message: "#^Method Chill\\\\CustomFieldsBundle\\\\Templating\\\\Twig\\\\CustomFieldRenderingTwig\\:\\:renderWidget\\(\\) should return string but returns Chill\\\\CustomFieldsBundle\\\\Service\\\\The\\.$#" + count: 1 + path: src/Bundle/ChillCustomFieldsBundle/Templating/Twig/CustomFieldRenderingTwig.php + + - + message: "#^Property Chill\\\\CustomFieldsBundle\\\\Templating\\\\Twig\\\\CustomFieldRenderingTwig\\:\\:\\$container \\(Symfony\\\\Component\\\\DependencyInjection\\\\Container\\) does not accept Symfony\\\\Component\\\\DependencyInjection\\\\ContainerInterface\\|null\\.$#" + count: 1 + path: src/Bundle/ChillCustomFieldsBundle/Templating/Twig/CustomFieldRenderingTwig.php + + - + message: "#^Parameter \\$customFielsGroup of method Chill\\\\CustomFieldsBundle\\\\Templating\\\\Twig\\\\CustomFieldsGroupRenderingTwig\\:\\:renderWidget\\(\\) has invalid type Chill\\\\CustomFieldsBundle\\\\Templating\\\\Twig\\\\CustomFieldsGroud\\.$#" + count: 1 + path: src/Bundle/ChillCustomFieldsBundle/Templating/Twig/CustomFieldsGroupRenderingTwig.php + + - + message: "#^Property Chill\\\\CustomFieldsBundle\\\\Templating\\\\Twig\\\\CustomFieldsGroupRenderingTwig\\:\\:\\$container \\(Symfony\\\\Component\\\\DependencyInjection\\\\Container\\) does not accept Symfony\\\\Component\\\\DependencyInjection\\\\ContainerInterface\\|null\\.$#" + count: 1 + path: src/Bundle/ChillCustomFieldsBundle/Templating/Twig/CustomFieldsGroupRenderingTwig.php + + - + message: "#^Left side of && is always true\\.$#" + count: 1 + path: src/Bundle/ChillDocGeneratorBundle/Controller/DocGeneratorTemplateController.php + + - + message: "#^PHPDoc tag @return with type void is incompatible with native type Symfony\\\\Component\\\\HttpFoundation\\\\RedirectResponse\\.$#" + count: 1 + path: src/Bundle/ChillDocGeneratorBundle/Controller/DocGeneratorTemplateController.php + + - + message: "#^Strict comparison using \\=\\=\\= between null and int will always evaluate to false\\.$#" + count: 1 + path: src/Bundle/ChillDocGeneratorBundle/Controller/DocGeneratorTemplateController.php + + - + message: "#^Binary operation \"\\.\" between 'Adding doc…' and array\\{filename\\: 'pKNlhCrQDCRsAuC8vYH…', key\\: '\\{\"alg\"\\:\"A256CBC\",…', iv\\: '\\[86,231,83,148,117…', type\\: 'application/vnd…'\\} results in an error\\.$#" + count: 1 + path: src/Bundle/ChillDocGeneratorBundle/DataFixtures/ORM/LoadDocGeneratorTemplate.php + + - + message: "#^Call to an undefined method Symfony\\\\Component\\\\Config\\\\Definition\\\\Builder\\\\NodeDefinition\\:\\:children\\(\\)\\.$#" + count: 1 + path: src/Bundle/ChillDocGeneratorBundle/DependencyInjection/Configuration.php + + - + message: "#^Property Chill\\\\DocGeneratorBundle\\\\Entity\\\\DocGeneratorTemplate\\:\\:\\$id is never written, only read\\.$#" + count: 1 + path: src/Bundle/ChillDocGeneratorBundle/Entity/DocGeneratorTemplate.php + + - + message: "#^Strict comparison using \\=\\=\\= between null and Doctrine\\\\Common\\\\Collections\\\\Collection will always evaluate to false\\.$#" + count: 1 + path: src/Bundle/ChillDocGeneratorBundle/Serializer/Normalizer/CollectionDocGenNormalizer.php + + - + message: "#^Call to an undefined method ReflectionType\\:\\:getName\\(\\)\\.$#" + count: 1 + path: src/Bundle/ChillDocGeneratorBundle/Serializer/Normalizer/DocGenObjectNormalizer.php + + - + message: "#^Expression on left side of \\?\\? is not nullable\\.$#" + count: 1 + path: src/Bundle/ChillDocGeneratorBundle/Serializer/Normalizer/DocGenObjectNormalizer.php + + - + message: "#^Strict comparison using \\=\\=\\= between null and Chill\\\\PersonBundle\\\\Entity\\\\AccompanyingPeriod will always evaluate to false\\.$#" + count: 2 + path: src/Bundle/ChillDocStoreBundle/Controller/DocumentAccompanyingCourseController.php + + - + message: "#^Call to an undefined method Doctrine\\\\Persistence\\\\ObjectManager\\:\\:createQuery\\(\\)\\.$#" + count: 1 + path: src/Bundle/ChillDocStoreBundle/Controller/DocumentCategoryController.php + + - + message: "#^Method Symfony\\\\Contracts\\\\EventDispatcher\\\\EventDispatcherInterface\\:\\:dispatch\\(\\) invoked with 2 parameters, 1 required\\.$#" + count: 4 + path: src/Bundle/ChillDocStoreBundle/Controller/DocumentPersonController.php + + - + message: "#^Strict comparison using \\=\\=\\= between null and Chill\\\\PersonBundle\\\\Entity\\\\Person will always evaluate to false\\.$#" + count: 2 + path: src/Bundle/ChillDocStoreBundle/Controller/DocumentPersonController.php + + - + message: "#^Method Symfony\\\\Component\\\\Config\\\\Definition\\\\Builder\\\\TreeBuilder\\:\\:getRootNode\\(\\) invoked with 1 parameter, 0 required\\.$#" + count: 1 + path: src/Bundle/ChillDocStoreBundle/DependencyInjection/Configuration.php + + - + message: "#^Property Chill\\\\DocStoreBundle\\\\Entity\\\\Document\\:\\:\\$id is never written, only read\\.$#" + count: 1 + path: src/Bundle/ChillDocStoreBundle/Entity/Document.php + + - + message: "#^Property Chill\\\\DocStoreBundle\\\\Entity\\\\Document\\:\\:\\$user has unknown class Chill\\\\PersonBundle\\\\Entity\\\\user as its type\\.$#" + count: 1 + path: src/Bundle/ChillDocStoreBundle/Entity/Document.php + + - + message: "#^Property Chill\\\\DocStoreBundle\\\\Entity\\\\StoredObject\\:\\:\\$id is never written, only read\\.$#" + count: 1 + path: src/Bundle/ChillDocStoreBundle/Entity/StoredObject.php + + - + message: "#^Call to an undefined method Doctrine\\\\ORM\\\\EntityRepository\\\\:\\:findByFilename\\(\\)\\.$#" + count: 1 + path: src/Bundle/ChillDocStoreBundle/Object/ObjectToAsyncFileTransformer.php + + - + message: "#^Property Chill\\\\DocStoreBundle\\\\Repository\\\\AccompanyingCourseDocumentRepository\\:\\:\\$em is never read, only written\\.$#" + count: 1 + path: src/Bundle/ChillDocStoreBundle/Repository/AccompanyingCourseDocumentRepository.php + + - + message: "#^Property Chill\\\\DocStoreBundle\\\\Repository\\\\DocumentCategoryRepository\\:\\:\\$em is never read, only written\\.$#" + count: 1 + path: src/Bundle/ChillDocStoreBundle/Repository/DocumentCategoryRepository.php + + - + message: "#^Instanceof between Chill\\\\DocStoreBundle\\\\Entity\\\\PersonDocument and Chill\\\\DocStoreBundle\\\\Entity\\\\PersonDocument will always evaluate to true\\.$#" + count: 1 + path: src/Bundle/ChillDocStoreBundle/Security/Authorization/PersonDocumentVoter.php + + - + message: "#^Default value of the parameter \\#5 \\$options \\(array\\{\\}\\) of method Chill\\\\DocStoreBundle\\\\Templating\\\\WopiEditTwigExtensionRuntime\\:\\:renderButtonGroup\\(\\) is incompatible with type array\\{small\\: bool\\}\\.$#" + count: 1 + path: src/Bundle/ChillDocStoreBundle/Templating/WopiEditTwigExtensionRuntime.php + + - + message: "#^Property Chill\\\\DocStoreBundle\\\\Templating\\\\WopiEditTwigExtensionRuntime\\:\\:\\$discovery is never read, only written\\.$#" + count: 1 + path: src/Bundle/ChillDocStoreBundle/Templating/WopiEditTwigExtensionRuntime.php + + - + message: "#^Call to an undefined method Doctrine\\\\Persistence\\\\ObjectRepository\\\\:\\:countByPerson\\(\\)\\.$#" + count: 1 + path: src/Bundle/ChillEventBundle/Controller/EventController.php + + - + message: "#^Call to an undefined method Doctrine\\\\Persistence\\\\ObjectRepository\\\\:\\:findByPersonInCircle\\(\\)\\.$#" + count: 1 + path: src/Bundle/ChillEventBundle/Controller/EventController.php + + - + message: "#^Cannot call method getUsernameCanonical\\(\\) on int\\\\|int\\<1, max\\>\\.$#" + count: 1 + path: src/Bundle/ChillEventBundle/Controller/EventController.php + + - + message: "#^Method Symfony\\\\Contracts\\\\EventDispatcher\\\\EventDispatcherInterface\\:\\:dispatch\\(\\) invoked with 2 parameters, 1 required\\.$#" + count: 1 + path: src/Bundle/ChillEventBundle/Controller/EventController.php + + - + message: "#^Negated boolean expression is always false\\.$#" + count: 1 + path: src/Bundle/ChillEventBundle/Controller/EventController.php + + - + message: "#^Method Chill\\\\EventBundle\\\\Controller\\\\EventTypeController\\:\\:createCreateForm\\(\\) should return Symfony\\\\Component\\\\Form\\\\Form but returns Symfony\\\\Component\\\\Form\\\\FormInterface\\.$#" + count: 1 + path: src/Bundle/ChillEventBundle/Controller/EventTypeController.php + + - + message: "#^Method Chill\\\\EventBundle\\\\Controller\\\\EventTypeController\\:\\:createDeleteForm\\(\\) should return Symfony\\\\Component\\\\Form\\\\Form but returns Symfony\\\\Component\\\\Form\\\\FormInterface\\.$#" + count: 1 + path: src/Bundle/ChillEventBundle/Controller/EventTypeController.php + + - + message: "#^Method Chill\\\\EventBundle\\\\Controller\\\\EventTypeController\\:\\:createEditForm\\(\\) should return Symfony\\\\Component\\\\Form\\\\Form but returns Symfony\\\\Component\\\\Form\\\\FormInterface\\.$#" + count: 1 + path: src/Bundle/ChillEventBundle/Controller/EventTypeController.php + + - + message: "#^Call to an undefined method Traversable\\:\\:count\\(\\)\\.$#" + count: 1 + path: src/Bundle/ChillEventBundle/Controller/ParticipationController.php + + - + message: "#^Call to an undefined method Traversable\\:\\:current\\(\\)\\.$#" + count: 1 + path: src/Bundle/ChillEventBundle/Controller/ParticipationController.php + + - + message: "#^Method Chill\\\\EventBundle\\\\Controller\\\\ParticipationController\\:\\:handleRequest\\(\\) has invalid return type Chill\\\\EventBundle\\\\Controller\\\\Participations\\.$#" + count: 1 + path: src/Bundle/ChillEventBundle/Controller/ParticipationController.php + + - + message: "#^Strict comparison using \\!\\=\\= between null and int will always evaluate to true\\.$#" + count: 1 + path: src/Bundle/ChillEventBundle/Controller/ParticipationController.php + + - + message: "#^Strict comparison using \\!\\=\\= between null and int\\|string will always evaluate to true\\.$#" + count: 1 + path: src/Bundle/ChillEventBundle/Controller/ParticipationController.php + + - + message: "#^Strict comparison using \\=\\=\\= between null and Chill\\\\EventBundle\\\\Entity\\\\Event will always evaluate to false\\.$#" + count: 1 + path: src/Bundle/ChillEventBundle/Controller/ParticipationController.php + + - + message: "#^Strict comparison using \\=\\=\\= between null and Chill\\\\EventBundle\\\\Entity\\\\Participation will always evaluate to false\\.$#" + count: 2 + path: src/Bundle/ChillEventBundle/Controller/ParticipationController.php + + - + message: "#^Method Chill\\\\EventBundle\\\\Controller\\\\RoleController\\:\\:createCreateForm\\(\\) should return Symfony\\\\Component\\\\Form\\\\Form but returns Symfony\\\\Component\\\\Form\\\\FormInterface\\.$#" + count: 1 + path: src/Bundle/ChillEventBundle/Controller/RoleController.php + + - + message: "#^Method Chill\\\\EventBundle\\\\Controller\\\\RoleController\\:\\:createDeleteForm\\(\\) should return Symfony\\\\Component\\\\Form\\\\Form but returns Symfony\\\\Component\\\\Form\\\\FormInterface\\.$#" + count: 1 + path: src/Bundle/ChillEventBundle/Controller/RoleController.php + + - + message: "#^Method Chill\\\\EventBundle\\\\Controller\\\\RoleController\\:\\:createEditForm\\(\\) should return Symfony\\\\Component\\\\Form\\\\Form but returns Symfony\\\\Component\\\\Form\\\\FormInterface\\.$#" + count: 1 + path: src/Bundle/ChillEventBundle/Controller/RoleController.php + + - + message: "#^Method Chill\\\\EventBundle\\\\Controller\\\\StatusController\\:\\:createCreateForm\\(\\) should return Symfony\\\\Component\\\\Form\\\\Form but returns Symfony\\\\Component\\\\Form\\\\FormInterface\\.$#" + count: 1 + path: src/Bundle/ChillEventBundle/Controller/StatusController.php + + - + message: "#^Method Chill\\\\EventBundle\\\\Controller\\\\StatusController\\:\\:createDeleteForm\\(\\) should return Symfony\\\\Component\\\\Form\\\\Form but returns Symfony\\\\Component\\\\Form\\\\FormInterface\\.$#" + count: 1 + path: src/Bundle/ChillEventBundle/Controller/StatusController.php + + - + message: "#^Method Chill\\\\EventBundle\\\\Controller\\\\StatusController\\:\\:createEditForm\\(\\) should return Symfony\\\\Component\\\\Form\\\\Form but returns Symfony\\\\Component\\\\Form\\\\FormInterface\\.$#" + count: 1 + path: src/Bundle/ChillEventBundle/Controller/StatusController.php + + - + message: "#^Method Symfony\\\\Component\\\\Config\\\\Definition\\\\Builder\\\\TreeBuilder\\:\\:getRootNode\\(\\) invoked with 1 parameter, 0 required\\.$#" + count: 1 + path: src/Bundle/ChillEventBundle/DependencyInjection/Configuration.php + + - + message: "#^Call to an undefined method Chill\\\\EventBundle\\\\Entity\\\\Participation\\:\\:getIterator\\(\\)\\.$#" + count: 1 + path: src/Bundle/ChillEventBundle/Entity/Event.php + + - + message: "#^Call to an undefined method Chill\\\\EventBundle\\\\Entity\\\\Participation\\:\\:removeElement\\(\\)\\.$#" + count: 1 + path: src/Bundle/ChillEventBundle/Entity/Event.php + + - + message: "#^Method Chill\\\\EventBundle\\\\Entity\\\\Event\\:\\:getModerator\\(\\) should return int but returns Chill\\\\MainBundle\\\\Entity\\\\User\\.$#" + count: 1 + path: src/Bundle/ChillEventBundle/Entity/Event.php + + - + message: "#^Property Chill\\\\EventBundle\\\\Entity\\\\Event\\:\\:\\$id is never written, only read\\.$#" + count: 1 + path: src/Bundle/ChillEventBundle/Entity/Event.php + + - + message: "#^Property Chill\\\\EventBundle\\\\Entity\\\\Event\\:\\:\\$moderator \\(Chill\\\\MainBundle\\\\Entity\\\\User\\) does not accept int\\.$#" + count: 1 + path: src/Bundle/ChillEventBundle/Entity/Event.php + + - + message: "#^Property Chill\\\\EventBundle\\\\Entity\\\\Event\\:\\:\\$participations \\(Chill\\\\EventBundle\\\\Entity\\\\Participation\\) does not accept Doctrine\\\\Common\\\\Collections\\\\ArrayCollection\\<\\*NEVER\\*, \\*NEVER\\*\\>\\.$#" + count: 1 + path: src/Bundle/ChillEventBundle/Entity/Event.php + + - + message: "#^Property Chill\\\\EventBundle\\\\Entity\\\\EventType\\:\\:\\$id is never written, only read\\.$#" + count: 1 + path: src/Bundle/ChillEventBundle/Entity/EventType.php + + - + message: "#^Property Chill\\\\EventBundle\\\\Entity\\\\Participation\\:\\:\\$id is never written, only read\\.$#" + count: 1 + path: src/Bundle/ChillEventBundle/Entity/Participation.php + + - + message: "#^Result of \\|\\| is always false\\.$#" + count: 2 + path: src/Bundle/ChillEventBundle/Entity/Participation.php + + - + message: "#^Strict comparison using \\=\\=\\= between Chill\\\\EventBundle\\\\Entity\\\\Event and null will always evaluate to false\\.$#" + count: 3 + path: src/Bundle/ChillEventBundle/Entity/Participation.php + + - + message: "#^Strict comparison using \\=\\=\\= between Chill\\\\EventBundle\\\\Entity\\\\Role and null will always evaluate to false\\.$#" + count: 1 + path: src/Bundle/ChillEventBundle/Entity/Participation.php + + - + message: "#^Strict comparison using \\=\\=\\= between Chill\\\\EventBundle\\\\Entity\\\\Status and null will always evaluate to false\\.$#" + count: 1 + path: src/Bundle/ChillEventBundle/Entity/Participation.php + + - + message: "#^Property Chill\\\\EventBundle\\\\Entity\\\\Role\\:\\:\\$id is never written, only read\\.$#" + count: 1 + path: src/Bundle/ChillEventBundle/Entity/Role.php + + - + message: "#^Property Chill\\\\EventBundle\\\\Entity\\\\Status\\:\\:\\$id is never written, only read\\.$#" + count: 1 + path: src/Bundle/ChillEventBundle/Entity/Status.php + + - + message: "#^Call to method setDefaults\\(\\) on an unknown class Symfony\\\\Component\\\\OptionsResolver\\\\OptionsResolverInterface\\.$#" + count: 1 + path: src/Bundle/ChillEventBundle/Form/EventTypeType.php + + - + message: "#^Call to method setDefaults\\(\\) on an unknown class Symfony\\\\Component\\\\OptionsResolver\\\\OptionsResolverInterface\\.$#" + count: 1 + path: src/Bundle/ChillEventBundle/Form/RoleType.php + + - + message: "#^Call to method setDefaults\\(\\) on an unknown class Symfony\\\\Component\\\\OptionsResolver\\\\OptionsResolverInterface\\.$#" + count: 1 + path: src/Bundle/ChillEventBundle/Form/StatusType.php + + - + message: "#^Property Chill\\\\EventBundle\\\\Form\\\\Type\\\\PickEventType\\:\\:\\$user \\(Chill\\\\MainBundle\\\\Entity\\\\User\\) does not accept string\\|Stringable\\|Symfony\\\\Component\\\\Security\\\\Core\\\\User\\\\UserInterface\\.$#" + count: 1 + path: src/Bundle/ChillEventBundle/Form/Type/PickEventType.php + + - + message: "#^Call to an undefined method Symfony\\\\Component\\\\Form\\\\ResolvedFormTypeInterface\\:\\:getName\\(\\)\\.$#" + count: 1 + path: src/Bundle/ChillEventBundle/Form/Type/PickRoleType.php + + - + message: "#^Call to an undefined method Symfony\\\\Component\\\\Form\\\\ResolvedFormTypeInterface\\:\\:getName\\(\\)\\.$#" + count: 1 + path: src/Bundle/ChillEventBundle/Form/Type/PickStatusType.php + + - + message: "#^Method Chill\\\\EventBundle\\\\Search\\\\EventSearch\\:\\:renderResult\\(\\) should return string but returns array\\\\|bool\\>\\>\\.$#" + count: 1 + path: src/Bundle/ChillEventBundle/Search/EventSearch.php + + - + message: "#^Property Chill\\\\EventBundle\\\\Search\\\\EventSearch\\:\\:\\$user \\(Chill\\\\MainBundle\\\\Entity\\\\User\\) does not accept string\\|Stringable\\|Symfony\\\\Component\\\\Security\\\\Core\\\\User\\\\UserInterface\\.$#" + count: 1 + path: src/Bundle/ChillEventBundle/Search/EventSearch.php + + - + message: "#^Instanceof between Chill\\\\EventBundle\\\\Entity\\\\Event and Chill\\\\EventBundle\\\\Entity\\\\Event will always evaluate to true\\.$#" + count: 1 + path: src/Bundle/ChillEventBundle/Security/Authorization/EventVoter.php + + - + message: "#^Unreachable statement \\- code above always terminates\\.$#" + count: 1 + path: src/Bundle/ChillEventBundle/Security/Authorization/EventVoter.php + + - + message: "#^Instanceof between Chill\\\\EventBundle\\\\Entity\\\\Participation and Chill\\\\EventBundle\\\\Entity\\\\Participation will always evaluate to true\\.$#" + count: 1 + path: src/Bundle/ChillEventBundle/Security/Authorization/ParticipationVoter.php + + - + message: "#^Unreachable statement \\- code above always terminates\\.$#" + count: 1 + path: src/Bundle/ChillEventBundle/Security/Authorization/ParticipationVoter.php + + - + message: "#^Parameter \\#2 \\$context \\(string\\) of method Chill\\\\EventBundle\\\\Timeline\\\\TimelineEventProvider\\:\\:getEntityTemplate\\(\\) should be compatible with parameter \\$context \\(Chill\\\\MainBundle\\\\Timeline\\\\type\\) of method Chill\\\\MainBundle\\\\Timeline\\\\TimelineProviderInterface\\:\\:getEntityTemplate\\(\\)$#" + count: 1 + path: src/Bundle/ChillEventBundle/Timeline/TimelineEventProvider.php + + - + message: "#^Call to an undefined method Symfony\\\\Component\\\\Config\\\\Definition\\\\Builder\\\\NodeDefinition\\:\\:children\\(\\)\\.$#" + count: 1 + path: src/Bundle/ChillFamilyMembersBundle/DependencyInjection/Configuration.php + + - + message: "#^Method Symfony\\\\Component\\\\Config\\\\Definition\\\\Builder\\\\TreeBuilder\\:\\:getRootNode\\(\\) invoked with 1 parameter, 0 required\\.$#" + count: 1 + path: src/Bundle/ChillFamilyMembersBundle/DependencyInjection/Configuration.php + + - + message: "#^Instanceof between DateTimeImmutable and DateTime will always evaluate to false\\.$#" + count: 1 + path: src/Bundle/ChillFamilyMembersBundle/Entity/AbstractFamilyMember.php + + - + message: "#^Instanceof between DateTimeImmutable and DateTimeImmutable will always evaluate to true\\.$#" + count: 2 + path: src/Bundle/ChillFamilyMembersBundle/Entity/AbstractFamilyMember.php + + - + message: "#^Method Chill\\\\FamilyMembersBundle\\\\Entity\\\\AbstractFamilyMember\\:\\:getBirthdate\\(\\) has invalid return type Chill\\\\FamilyMembersBundle\\\\Entity\\\\date_immutable\\.$#" + count: 1 + path: src/Bundle/ChillFamilyMembersBundle/Entity/AbstractFamilyMember.php + + - + message: "#^Method Chill\\\\FamilyMembersBundle\\\\Entity\\\\AbstractFamilyMember\\:\\:setBirthdate\\(\\) should return Chill\\\\FamilyMembersBundle\\\\Entity\\\\FamilyMember but returns \\$this\\(Chill\\\\FamilyMembersBundle\\\\Entity\\\\AbstractFamilyMember\\)\\.$#" + count: 1 + path: src/Bundle/ChillFamilyMembersBundle/Entity/AbstractFamilyMember.php + + - + message: "#^Method Chill\\\\FamilyMembersBundle\\\\Entity\\\\AbstractFamilyMember\\:\\:setEndDate\\(\\) should return Chill\\\\FamilyMembersBundle\\\\Entity\\\\FamilyMember but returns \\$this\\(Chill\\\\FamilyMembersBundle\\\\Entity\\\\AbstractFamilyMember\\)\\.$#" + count: 1 + path: src/Bundle/ChillFamilyMembersBundle/Entity/AbstractFamilyMember.php + + - + message: "#^Method Chill\\\\FamilyMembersBundle\\\\Entity\\\\AbstractFamilyMember\\:\\:setFirstname\\(\\) should return Chill\\\\FamilyMembersBundle\\\\Entity\\\\FamilyMember but returns \\$this\\(Chill\\\\FamilyMembersBundle\\\\Entity\\\\AbstractFamilyMember\\)\\.$#" + count: 1 + path: src/Bundle/ChillFamilyMembersBundle/Entity/AbstractFamilyMember.php + + - + message: "#^Method Chill\\\\FamilyMembersBundle\\\\Entity\\\\AbstractFamilyMember\\:\\:setGender\\(\\) should return Chill\\\\FamilyMembersBundle\\\\Entity\\\\FamilyMember but returns \\$this\\(Chill\\\\FamilyMembersBundle\\\\Entity\\\\AbstractFamilyMember\\)\\.$#" + count: 1 + path: src/Bundle/ChillFamilyMembersBundle/Entity/AbstractFamilyMember.php + + - + message: "#^Method Chill\\\\FamilyMembersBundle\\\\Entity\\\\AbstractFamilyMember\\:\\:setLastname\\(\\) should return Chill\\\\FamilyMembersBundle\\\\Entity\\\\FamilyMember but returns \\$this\\(Chill\\\\FamilyMembersBundle\\\\Entity\\\\AbstractFamilyMember\\)\\.$#" + count: 1 + path: src/Bundle/ChillFamilyMembersBundle/Entity/AbstractFamilyMember.php + + - + message: "#^Method Chill\\\\FamilyMembersBundle\\\\Entity\\\\AbstractFamilyMember\\:\\:setLink\\(\\) should return Chill\\\\FamilyMembersBundle\\\\Entity\\\\FamilyMember but returns \\$this\\(Chill\\\\FamilyMembersBundle\\\\Entity\\\\AbstractFamilyMember\\)\\.$#" + count: 1 + path: src/Bundle/ChillFamilyMembersBundle/Entity/AbstractFamilyMember.php + + - + message: "#^Method Chill\\\\FamilyMembersBundle\\\\Entity\\\\AbstractFamilyMember\\:\\:setProfessionnalSituation\\(\\) should return Chill\\\\FamilyMembersBundle\\\\Entity\\\\FamilyMember but returns \\$this\\(Chill\\\\FamilyMembersBundle\\\\Entity\\\\AbstractFamilyMember\\)\\.$#" + count: 1 + path: src/Bundle/ChillFamilyMembersBundle/Entity/AbstractFamilyMember.php + + - + message: "#^Method Chill\\\\FamilyMembersBundle\\\\Entity\\\\AbstractFamilyMember\\:\\:setStartDate\\(\\) should return Chill\\\\FamilyMembersBundle\\\\Entity\\\\FamilyMember but returns \\$this\\(Chill\\\\FamilyMembersBundle\\\\Entity\\\\AbstractFamilyMember\\)\\.$#" + count: 1 + path: src/Bundle/ChillFamilyMembersBundle/Entity/AbstractFamilyMember.php + + - + message: "#^Property Chill\\\\FamilyMembersBundle\\\\Entity\\\\AbstractFamilyMember\\:\\:\\$birthdate \\(Chill\\\\FamilyMembersBundle\\\\Entity\\\\date_immutable\\|null\\) does not accept DateTimeImmutable\\.$#" + count: 1 + path: src/Bundle/ChillFamilyMembersBundle/Entity/AbstractFamilyMember.php + + - + message: "#^Property Chill\\\\FamilyMembersBundle\\\\Entity\\\\AbstractFamilyMember\\:\\:\\$birthdate \\(Chill\\\\FamilyMembersBundle\\\\Entity\\\\date_immutable\\|null\\) does not accept DateTimeImmutable\\|null\\.$#" + count: 1 + path: src/Bundle/ChillFamilyMembersBundle/Entity/AbstractFamilyMember.php + + - + message: "#^Property Chill\\\\FamilyMembersBundle\\\\Entity\\\\AbstractFamilyMember\\:\\:\\$birthdate has unknown class Chill\\\\FamilyMembersBundle\\\\Entity\\\\date_immutable as its type\\.$#" + count: 1 + path: src/Bundle/ChillFamilyMembersBundle/Entity/AbstractFamilyMember.php + + - + message: "#^Result of \\|\\| is always true\\.$#" + count: 3 + path: src/Bundle/ChillFamilyMembersBundle/Entity/AbstractFamilyMember.php + + - + message: "#^Strict comparison using \\=\\=\\= between null and DateTimeImmutable will always evaluate to false\\.$#" + count: 1 + path: src/Bundle/ChillFamilyMembersBundle/Entity/AbstractFamilyMember.php + + - + message: "#^Strict comparison using \\=\\=\\= between null and null will always evaluate to true\\.$#" + count: 1 + path: src/Bundle/ChillFamilyMembersBundle/Entity/AbstractFamilyMember.php + + - + message: "#^Property Chill\\\\FamilyMembersBundle\\\\Entity\\\\FamilyMember\\:\\:\\$id is never written, only read\\.$#" + count: 1 + path: src/Bundle/ChillFamilyMembersBundle/Entity/FamilyMember.php + + - + message: "#^Call to an undefined method Doctrine\\\\Persistence\\\\ObjectManager\\:\\:createQueryBuilder\\(\\)\\.$#" + count: 1 + path: src/Bundle/ChillMainBundle/CRUD/Controller/AbstractCRUDController.php + + - + message: "#^Call to method select\\(\\) on an unknown class Chill\\\\MainBundle\\\\CRUD\\\\Controller\\\\QueryBuilder\\.$#" + count: 1 + path: src/Bundle/ChillMainBundle/CRUD/Controller/AbstractCRUDController.php + + - + message: "#^Call to method setFirstResult\\(\\) on an unknown class Chill\\\\MainBundle\\\\CRUD\\\\Controller\\\\QueryBuilder\\.$#" + count: 1 + path: src/Bundle/ChillMainBundle/CRUD/Controller/AbstractCRUDController.php + + - + message: "#^Method Chill\\\\MainBundle\\\\CRUD\\\\Controller\\\\AbstractCRUDController\\:\\:buildQueryEntities\\(\\) has invalid return type Chill\\\\MainBundle\\\\CRUD\\\\Controller\\\\QueryBuilder\\.$#" + count: 1 + path: src/Bundle/ChillMainBundle/CRUD/Controller/AbstractCRUDController.php + + - + message: "#^PHPDoc tag @throws with type Symfony\\\\Component\\\\Security\\\\Core\\\\Exception\\\\AccessDeniedHttpException is not subtype of Throwable$#" + count: 1 + path: src/Bundle/ChillMainBundle/CRUD/Controller/AbstractCRUDController.php + + - + message: "#^PHPDoc tag @param for parameter \\$postedDataContext with type string is incompatible with native type array\\.$#" + count: 1 + path: src/Bundle/ChillMainBundle/CRUD/Controller/ApiController.php + + - + message: "#^PHPDoc tag @param has invalid value \\(mixed id\\)\\: Unexpected token \"id\", expected variable at offset 956$#" + count: 1 + path: src/Bundle/ChillMainBundle/CRUD/Controller/ApiController.php + + - + message: "#^PHPDoc tag @param has invalid value \\(string action\\)\\: Unexpected token \"action\", expected variable at offset 929$#" + count: 1 + path: src/Bundle/ChillMainBundle/CRUD/Controller/ApiController.php + + - + message: "#^PHPDoc tag @return with type void is incompatible with native type Symfony\\\\Component\\\\HttpFoundation\\\\Response\\.$#" + count: 1 + path: src/Bundle/ChillMainBundle/CRUD/Controller/ApiController.php + + - + message: "#^Strict comparison using \\=\\=\\= between null and object will always evaluate to false\\.$#" + count: 2 + path: src/Bundle/ChillMainBundle/CRUD/Controller/ApiController.php + + - + message: "#^Unreachable statement \\- code above always terminates\\.$#" + count: 1 + path: src/Bundle/ChillMainBundle/CRUD/Controller/ApiController.php + + - + message: "#^Call to an undefined method Doctrine\\\\Persistence\\\\ObjectManager\\:\\:createQueryBuilder\\(\\)\\.$#" + count: 1 + path: src/Bundle/ChillMainBundle/CRUD/Controller/CRUDController.php + + - + message: "#^Call to method getQuery\\(\\) on an unknown class Chill\\\\MainBundle\\\\CRUD\\\\Controller\\\\type\\.$#" + count: 1 + path: src/Bundle/ChillMainBundle/CRUD/Controller/CRUDController.php + + - + message: "#^Instanceof between Symfony\\\\Component\\\\HttpFoundation\\\\RedirectResponse and Symfony\\\\Component\\\\HttpFoundation\\\\Response will always evaluate to true\\.$#" + count: 3 + path: src/Bundle/ChillMainBundle/CRUD/Controller/CRUDController.php + + - + message: "#^Method Chill\\\\MainBundle\\\\CRUD\\\\Controller\\\\CRUDController\\:\\:index\\(\\) has invalid return type Chill\\\\MainBundle\\\\CRUD\\\\Controller\\\\type\\.$#" + count: 1 + path: src/Bundle/ChillMainBundle/CRUD/Controller/CRUDController.php + + - + message: "#^Method Chill\\\\MainBundle\\\\CRUD\\\\Controller\\\\CRUDController\\:\\:queryEntities\\(\\) has invalid return type Chill\\\\MainBundle\\\\CRUD\\\\Controller\\\\type\\.$#" + count: 1 + path: src/Bundle/ChillMainBundle/CRUD/Controller/CRUDController.php + + - + message: "#^PHPDoc tag @throws with type Symfony\\\\Component\\\\Security\\\\Core\\\\Exception\\\\AccessDeniedHttpException is not subtype of Throwable$#" + count: 1 + path: src/Bundle/ChillMainBundle/CRUD/Controller/CRUDController.php + + - + message: "#^Parameter \\$formClass of method Chill\\\\MainBundle\\\\CRUD\\\\Controller\\\\CRUDController\\:\\:formCreateAction\\(\\) has invalid type Chill\\\\MainBundle\\\\CRUD\\\\Controller\\\\type\\.$#" + count: 1 + path: src/Bundle/ChillMainBundle/CRUD/Controller/CRUDController.php + + - + message: "#^Unreachable statement \\- code above always terminates\\.$#" + count: 3 + path: src/Bundle/ChillMainBundle/CRUD/Controller/CRUDController.php + + - + message: "#^Constant Chill\\\\MainBundle\\\\CRUD\\\\Routing\\\\CRUDRoutesLoader\\:\\:ALL_INDEX_METHODS is unused\\.$#" + count: 1 + path: src/Bundle/ChillMainBundle/CRUD/Routing/CRUDRoutesLoader.php + + - + message: "#^Constant Chill\\\\MainBundle\\\\CRUD\\\\Routing\\\\CRUDRoutesLoader\\:\\:ALL_SINGLE_METHODS is unused\\.$#" + count: 1 + path: src/Bundle/ChillMainBundle/CRUD/Routing/CRUDRoutesLoader.php + + - + message: "#^Strict comparison using \\=\\=\\= between 'CRUD' and null will always evaluate to false\\.$#" + count: 1 + path: src/Bundle/ChillMainBundle/CRUD/Routing/CRUDRoutesLoader.php + + - + message: "#^Strict comparison using \\=\\=\\= between 'collection' and 'single'\\|null will always evaluate to false\\.$#" + count: 1 + path: src/Bundle/ChillMainBundle/CRUD/Routing/CRUDRoutesLoader.php + + - + message: "#^Call to an undefined method Doctrine\\\\ORM\\\\EntityRepository\\\\:\\:findOneByName\\(\\)\\.$#" + count: 1 + path: src/Bundle/ChillMainBundle/Command/ChillImportUsersCommand.php + + - + message: "#^Method Chill\\\\MainBundle\\\\Command\\\\ChillImportUsersCommand\\:\\:getCenters\\(\\) should return array\\ but returns null\\.$#" + count: 1 + path: src/Bundle/ChillMainBundle/Command/ChillImportUsersCommand.php + + - + message: "#^Property Chill\\\\MainBundle\\\\Command\\\\ChillUserSendRenewPasswordCodeCommand\\:\\:\\$output is never read, only written\\.$#" + count: 1 + path: src/Bundle/ChillMainBundle/Command/ChillUserSendRenewPasswordCodeCommand.php + + - + message: "#^Call to an undefined method Symfony\\\\Component\\\\Console\\\\Helper\\\\HelperInterface\\:\\:askHiddenResponse\\(\\)\\.$#" + count: 1 + path: src/Bundle/ChillMainBundle/Command/SetPasswordCommand.php + + - + message: "#^Method Chill\\\\MainBundle\\\\Controller\\\\CenterController\\:\\:createCreateForm\\(\\) should return Symfony\\\\Component\\\\Form\\\\Form but returns Symfony\\\\Component\\\\Form\\\\FormInterface\\.$#" + count: 1 + path: src/Bundle/ChillMainBundle/Controller/CenterController.php + + - + message: "#^Method Chill\\\\MainBundle\\\\Controller\\\\CenterController\\:\\:createEditForm\\(\\) should return Symfony\\\\Component\\\\Form\\\\Form but returns Symfony\\\\Component\\\\Form\\\\FormInterface\\.$#" + count: 1 + path: src/Bundle/ChillMainBundle/Controller/CenterController.php + + - + message: "#^Instanceof between Chill\\\\MainBundle\\\\Export\\\\DirectExportInterface and Chill\\\\MainBundle\\\\Export\\\\DirectExportInterface will always evaluate to true\\.$#" + count: 1 + path: src/Bundle/ChillMainBundle/Controller/ExportController.php + + - + message: "#^PHPDoc tag @param for parameter \\$request with type string is incompatible with native type Symfony\\\\Component\\\\HttpFoundation\\\\Request\\.$#" + count: 1 + path: src/Bundle/ChillMainBundle/Controller/ExportController.php + + - + message: "#^Strict comparison using \\=\\=\\= between null and string will always evaluate to false\\.$#" + count: 1 + path: src/Bundle/ChillMainBundle/Controller/ExportController.php + + - + message: "#^Call to an undefined method Doctrine\\\\Persistence\\\\ObjectManager\\:\\:createQueryBuilder\\(\\)\\.$#" + count: 2 + path: src/Bundle/ChillMainBundle/Controller/PasswordController.php + + - + message: "#^Call to an undefined method Doctrine\\\\Persistence\\\\ObjectRepository\\\\:\\:findOneByUsernameCanonical\\(\\)\\.$#" + count: 1 + path: src/Bundle/ChillMainBundle/Controller/PasswordController.php + + - + message: "#^Method Chill\\\\MainBundle\\\\Controller\\\\PasswordController\\:\\:passwordForm\\(\\) should return Symfony\\\\Component\\\\Form\\\\Form but returns Symfony\\\\Component\\\\Form\\\\FormInterface\\.$#" + count: 1 + path: src/Bundle/ChillMainBundle/Controller/PasswordController.php + + - + message: "#^Method Symfony\\\\Contracts\\\\EventDispatcher\\\\EventDispatcherInterface\\:\\:dispatch\\(\\) invoked with 2 parameters, 1 required\\.$#" + count: 4 + path: src/Bundle/ChillMainBundle/Controller/PasswordController.php + + - + message: "#^Method Chill\\\\MainBundle\\\\Controller\\\\PermissionsGroupController\\:\\:addLinkRoleScopeAction\\(\\) has invalid return type Chill\\\\MainBundle\\\\Controller\\\\Respon\\.$#" + count: 1 + path: src/Bundle/ChillMainBundle/Controller/PermissionsGroupController.php + + - + message: "#^Method Chill\\\\MainBundle\\\\Controller\\\\PermissionsGroupController\\:\\:addLinkRoleScopeAction\\(\\) should return Chill\\\\MainBundle\\\\Controller\\\\Respon but returns Symfony\\\\Component\\\\HttpFoundation\\\\RedirectResponse\\.$#" + count: 1 + path: src/Bundle/ChillMainBundle/Controller/PermissionsGroupController.php + + - + message: "#^Method Chill\\\\MainBundle\\\\Controller\\\\PermissionsGroupController\\:\\:addLinkRoleScopeAction\\(\\) should return Chill\\\\MainBundle\\\\Controller\\\\Respon but returns Symfony\\\\Component\\\\HttpFoundation\\\\Response\\.$#" + count: 1 + path: src/Bundle/ChillMainBundle/Controller/PermissionsGroupController.php + + - + message: "#^Method Chill\\\\MainBundle\\\\Controller\\\\PermissionsGroupController\\:\\:createAddRoleScopeForm\\(\\) should return Symfony\\\\Component\\\\Form\\\\Form but returns Symfony\\\\Component\\\\Form\\\\FormInterface\\.$#" + count: 1 + path: src/Bundle/ChillMainBundle/Controller/PermissionsGroupController.php + + - + message: "#^Method Chill\\\\MainBundle\\\\Controller\\\\PermissionsGroupController\\:\\:createCreateForm\\(\\) should return Symfony\\\\Component\\\\Form\\\\Form but returns Symfony\\\\Component\\\\Form\\\\FormInterface\\.$#" + count: 1 + path: src/Bundle/ChillMainBundle/Controller/PermissionsGroupController.php + + - + message: "#^Method Chill\\\\MainBundle\\\\Controller\\\\PermissionsGroupController\\:\\:createDeleteRoleScopeForm\\(\\) should return Symfony\\\\Component\\\\Form\\\\Form but returns Symfony\\\\Component\\\\Form\\\\FormInterface\\.$#" + count: 1 + path: src/Bundle/ChillMainBundle/Controller/PermissionsGroupController.php + + - + message: "#^Method Chill\\\\MainBundle\\\\Controller\\\\PermissionsGroupController\\:\\:createEditForm\\(\\) should return Symfony\\\\Component\\\\Form\\\\Form but returns Symfony\\\\Component\\\\Form\\\\FormInterface\\.$#" + count: 1 + path: src/Bundle/ChillMainBundle/Controller/PermissionsGroupController.php + + - + message: "#^Method Chill\\\\MainBundle\\\\Controller\\\\PermissionsGroupController\\:\\:deleteLinkRoleScopeAction\\(\\) has invalid return type Chill\\\\MainBundle\\\\Controller\\\\redirection\\.$#" + count: 1 + path: src/Bundle/ChillMainBundle/Controller/PermissionsGroupController.php + + - + message: "#^Method Chill\\\\MainBundle\\\\Controller\\\\PermissionsGroupController\\:\\:deleteLinkRoleScopeAction\\(\\) should return Chill\\\\MainBundle\\\\Controller\\\\redirection but returns Symfony\\\\Component\\\\HttpFoundation\\\\RedirectResponse\\.$#" + count: 2 + path: src/Bundle/ChillMainBundle/Controller/PermissionsGroupController.php + + - + message: "#^PHPDoc tag @param for parameter \\$permissionsGroup with type mixed is not subtype of native type Chill\\\\MainBundle\\\\Entity\\\\PermissionsGroup\\.$#" + count: 1 + path: src/Bundle/ChillMainBundle/Controller/PermissionsGroupController.php + + - + message: "#^PHPDoc tag @throws with type Chill\\\\MainBundle\\\\Controller\\\\type is not subtype of Throwable$#" + count: 1 + path: src/Bundle/ChillMainBundle/Controller/PermissionsGroupController.php + + - + message: "#^Call to an undefined method Doctrine\\\\Persistence\\\\ObjectManager\\:\\:createQuery\\(\\)\\.$#" + count: 1 + path: src/Bundle/ChillMainBundle/Controller/PostalCodeController.php + + - + message: "#^Call to an undefined method Symfony\\\\Component\\\\HttpFoundation\\\\Session\\\\SessionInterface\\:\\:getFlashBag\\(\\)\\.$#" + count: 2 + path: src/Bundle/ChillMainBundle/Controller/SavedExportController.php + + - + message: "#^Method Chill\\\\MainBundle\\\\Controller\\\\ScopeController\\:\\:createCreateForm\\(\\) should return Symfony\\\\Component\\\\Form\\\\Form but returns Symfony\\\\Component\\\\Form\\\\FormInterface\\.$#" + count: 1 + path: src/Bundle/ChillMainBundle/Controller/ScopeController.php + + - + message: "#^Method Chill\\\\MainBundle\\\\Controller\\\\ScopeController\\:\\:createEditForm\\(\\) should return Symfony\\\\Component\\\\Form\\\\Form but returns Symfony\\\\Component\\\\Form\\\\FormInterface\\.$#" + count: 1 + path: src/Bundle/ChillMainBundle/Controller/ScopeController.php + + - + message: "#^Call to method buildForm\\(\\) on an unknown class Chill\\\\MainBundle\\\\Search\\\\HasAdvancedSearchForm\\.$#" + count: 1 + path: src/Bundle/ChillMainBundle/Controller/SearchController.php + + - + message: "#^Call to method convertFormDataToQuery\\(\\) on an unknown class Chill\\\\MainBundle\\\\Search\\\\HasAdvancedSearchForm\\.$#" + count: 1 + path: src/Bundle/ChillMainBundle/Controller/SearchController.php + + - + message: "#^Call to method convertTermsToFormData\\(\\) on an unknown class Chill\\\\MainBundle\\\\Search\\\\HasAdvancedSearchForm\\.$#" + count: 1 + path: src/Bundle/ChillMainBundle/Controller/SearchController.php + + - + message: "#^Call to method getAdvancedSearchTitle\\(\\) on an unknown class Chill\\\\MainBundle\\\\Search\\\\HasAdvancedSearchForm\\.$#" + count: 1 + path: src/Bundle/ChillMainBundle/Controller/SearchController.php + + - + message: "#^PHPDoc tag @var for variable \\$variable contains unknown class Chill\\\\MainBundle\\\\Controller\\\\Chill\\\\MainBundle\\\\Search\\\\HasAdvancedSearchFormInterface\\.$#" + count: 1 + path: src/Bundle/ChillMainBundle/Controller/SearchController.php + + - + message: "#^PHPDoc tag @var for variable \\$variable contains unknown class Chill\\\\MainBundle\\\\Controller\\\\Chill\\\\MainBundle\\\\Search\\\\SearchProvider\\.$#" + count: 2 + path: src/Bundle/ChillMainBundle/Controller/SearchController.php + + - + message: "#^Variable \\$variable in PHPDoc tag @var does not match assigned variable \\$search\\.$#" + count: 1 + path: src/Bundle/ChillMainBundle/Controller/SearchController.php + + - + message: "#^Variable \\$variable in PHPDoc tag @var does not match assigned variable \\$searchProvider\\.$#" + count: 2 + path: src/Bundle/ChillMainBundle/Controller/SearchController.php + + - + message: "#^Call to an undefined method Symfony\\\\Component\\\\Security\\\\Core\\\\User\\\\UserInterface\\:\\:getGroupCenters\\(\\)\\.$#" + count: 1 + path: src/Bundle/ChillMainBundle/Controller/TimelineCenterController.php + + - + message: "#^Instanceof between Symfony\\\\Component\\\\HttpFoundation\\\\RedirectResponse and Symfony\\\\Component\\\\HttpFoundation\\\\Response will always evaluate to true\\.$#" + count: 1 + path: src/Bundle/ChillMainBundle/Controller/UserController.php + + - + message: "#^Unreachable statement \\- code above always terminates\\.$#" + count: 1 + path: src/Bundle/ChillMainBundle/Controller/UserController.php + + - + message: "#^PHPDoc tag @return has invalid value \\(array\\<0\\: CronJobInterface\\[\\], 1\\: array\\\\>\\)\\: Unexpected token \"\\:\", expected '\\>' at offset 26$#" + count: 1 + path: src/Bundle/ChillMainBundle/Cron/CronManager.php + + - + message: "#^Property Chill\\\\MainBundle\\\\DataFixtures\\\\ORM\\\\LoadAddressReferences\\:\\:\\$container is never read, only written\\.$#" + count: 1 + path: src/Bundle/ChillMainBundle/DataFixtures/ORM/LoadAddressReferences.php + + - + message: "#^Property Chill\\\\MainBundle\\\\DataFixtures\\\\ORM\\\\LoadLocationType\\:\\:\\$container is never read, only written\\.$#" + count: 1 + path: src/Bundle/ChillMainBundle/DataFixtures/ORM/LoadLocationType.php + + - + message: "#^Property Chill\\\\MainBundle\\\\DataFixtures\\\\ORM\\\\LoadUsers\\:\\:\\$container is never read, only written\\.$#" + count: 1 + path: src/Bundle/ChillMainBundle/DataFixtures/ORM/LoadUsers.php + + - + message: "#^Parameter \\$factory of method Chill\\\\MainBundle\\\\DependencyInjection\\\\ChillMainExtension\\:\\:addWidgetFactory\\(\\) has invalid type Chill\\\\MainBundle\\\\DependencyInjection\\\\Widget\\\\WidgetFactoryInterface\\.$#" + count: 1 + path: src/Bundle/ChillMainBundle/DependencyInjection/ChillMainExtension.php + + - + message: "#^Method Symfony\\\\Component\\\\DependencyInjection\\\\Container\\:\\:getParameter\\(\\) invoked with 2 parameters, 1 required\\.$#" + count: 1 + path: src/Bundle/ChillMainBundle/DependencyInjection/CompilerPass/ShortMessageCompilerPass.php + + - + message: "#^Offset 'queries' does not exist on array\\{scheme\\: 'ovh', host\\?\\: string, port\\?\\: int\\<0, 65535\\>, user\\?\\: string, pass\\?\\: string, path\\?\\: string, query\\?\\: string, fragment\\?\\: string\\}\\.$#" + count: 5 + path: src/Bundle/ChillMainBundle/DependencyInjection/CompilerPass/ShortMessageCompilerPass.php + + - + message: "#^Offset 'queries' does not exist on array\\{scheme\\?\\: string, host\\?\\: string, port\\?\\: int\\<0, 65535\\>, user\\?\\: string, pass\\?\\: string, path\\?\\: string, query\\?\\: string, fragment\\?\\: string\\}\\|false\\.$#" + count: 1 + path: src/Bundle/ChillMainBundle/DependencyInjection/CompilerPass/ShortMessageCompilerPass.php + + - + message: "#^Call to an undefined method Symfony\\\\Component\\\\Config\\\\Definition\\\\Builder\\\\NodeDefinition\\:\\:canBeUnset\\(\\)\\.$#" + count: 2 + path: src/Bundle/ChillMainBundle/DependencyInjection/Configuration.php + + - + message: "#^Call to an undefined method Symfony\\\\Component\\\\Config\\\\Definition\\\\Builder\\\\NodeDefinition\\:\\:children\\(\\)\\.$#" + count: 3 + path: src/Bundle/ChillMainBundle/DependencyInjection/Configuration.php + + - + message: "#^Method Chill\\\\MainBundle\\\\DependencyInjection\\\\Configuration\\:\\:getWidgetAliasesbyPlace\\(\\) has invalid return type Chill\\\\MainBundle\\\\DependencyInjection\\\\Widget\\\\type\\.$#" + count: 1 + path: src/Bundle/ChillMainBundle/DependencyInjection/Configuration.php + + - + message: "#^Method Chill\\\\MainBundle\\\\DependencyInjection\\\\Configuration\\:\\:getWidgetAliasesbyPlace\\(\\) should return Chill\\\\MainBundle\\\\DependencyInjection\\\\Widget\\\\type but returns array\\\\.$#" + count: 1 + path: src/Bundle/ChillMainBundle/DependencyInjection/Configuration.php + + - + message: "#^Method Chill\\\\MainBundle\\\\DependencyInjection\\\\Configuration\\:\\:getWidgetFactories\\(\\) has invalid return type Chill\\\\MainBundle\\\\DependencyInjection\\\\Widget\\\\WidgetFactoryInterface\\.$#" + count: 1 + path: src/Bundle/ChillMainBundle/DependencyInjection/Configuration.php + + - + message: "#^Method Symfony\\\\Component\\\\Config\\\\Definition\\\\Builder\\\\TreeBuilder\\:\\:getRootNode\\(\\) invoked with 1 parameter, 0 required\\.$#" + count: 3 + path: src/Bundle/ChillMainBundle/DependencyInjection/Configuration.php + + - + message: "#^PHPDoc tag @param has invalid value \\(WidgetFactoryInterface\\[\\]\\)\\: Unexpected token \"\\\\n \", expected variable at offset 42$#" + count: 1 + path: src/Bundle/ChillMainBundle/DependencyInjection/Configuration.php + + - + message: "#^Parameter \\$place of method Chill\\\\MainBundle\\\\DependencyInjection\\\\Configuration\\:\\:getWidgetAliasesbyPlace\\(\\) has invalid type Chill\\\\MainBundle\\\\DependencyInjection\\\\Widget\\\\type\\.$#" + count: 1 + path: src/Bundle/ChillMainBundle/DependencyInjection/Configuration.php + + - + message: "#^Parameter \\$widgetFactories of method Chill\\\\MainBundle\\\\DependencyInjection\\\\Configuration\\:\\:setWidgetFactories\\(\\) has invalid type Chill\\\\MainBundle\\\\DependencyInjection\\\\Widget\\\\WidgetFactoryInterface\\.$#" + count: 1 + path: src/Bundle/ChillMainBundle/DependencyInjection/Configuration.php + + - + message: "#^Call to an undefined method Chill\\\\MainBundle\\\\DependencyInjection\\\\Widget\\\\Factory\\\\WidgetFactoryInterface\\:\\:getAllowedPlaces\\(\\)\\.$#" + count: 3 + path: src/Bundle/ChillMainBundle/DependencyInjection/Widget/AbstractWidgetsCompilerPass.php + + - + message: "#^Instanceof between Chill\\\\MainBundle\\\\DependencyInjection\\\\Widget\\\\HasWidgetFactoriesExtensionInterface and Chill\\\\MainBundle\\\\DependencyInjection\\\\Widget\\\\HasWidgetFactoriesExtensionInterface will always evaluate to true\\.$#" + count: 1 + path: src/Bundle/ChillMainBundle/DependencyInjection/Widget/AbstractWidgetsCompilerPass.php + + - + message: "#^Method Chill\\\\MainBundle\\\\DependencyInjection\\\\Widget\\\\AbstractWidgetsCompilerPass\\:\\:isPlaceAllowedForWidget\\(\\) has invalid return type Chill\\\\MainBundle\\\\DependencyInjection\\\\Widget\\\\unknown\\.$#" + count: 1 + path: src/Bundle/ChillMainBundle/DependencyInjection/Widget/AbstractWidgetsCompilerPass.php + + - + message: "#^Method Chill\\\\MainBundle\\\\DependencyInjection\\\\Widget\\\\AbstractWidgetsCompilerPass\\:\\:isPlaceAllowedForWidget\\(\\) should return Chill\\\\MainBundle\\\\DependencyInjection\\\\Widget\\\\unknown but returns false\\.$#" + count: 1 + path: src/Bundle/ChillMainBundle/DependencyInjection/Widget/AbstractWidgetsCompilerPass.php + + - + message: "#^Method Chill\\\\MainBundle\\\\DependencyInjection\\\\Widget\\\\AbstractWidgetsCompilerPass\\:\\:isPlaceAllowedForWidget\\(\\) should return Chill\\\\MainBundle\\\\DependencyInjection\\\\Widget\\\\unknown but returns true\\.$#" + count: 2 + path: src/Bundle/ChillMainBundle/DependencyInjection/Widget/AbstractWidgetsCompilerPass.php + + - + message: "#^Negated boolean expression is always false\\.$#" + count: 1 + path: src/Bundle/ChillMainBundle/DependencyInjection/Widget/AbstractWidgetsCompilerPass.php + + - + message: "#^Parameter \\$order of method Chill\\\\MainBundle\\\\DependencyInjection\\\\Widget\\\\Factory\\\\AbstractWidgetFactory\\:\\:createDefinition\\(\\) has invalid type Chill\\\\MainBundle\\\\DependencyInjection\\\\Widget\\\\Factory\\\\type\\.$#" + count: 1 + path: src/Bundle/ChillMainBundle/DependencyInjection/Widget/Factory/AbstractWidgetFactory.php + + - + message: "#^Parameter \\$place of method Chill\\\\MainBundle\\\\DependencyInjection\\\\Widget\\\\Factory\\\\AbstractWidgetFactory\\:\\:createDefinition\\(\\) has invalid type Chill\\\\MainBundle\\\\DependencyInjection\\\\Widget\\\\Factory\\\\type\\.$#" + count: 1 + path: src/Bundle/ChillMainBundle/DependencyInjection/Widget/Factory/AbstractWidgetFactory.php + + - + message: "#^Parameter \\$order of method Chill\\\\MainBundle\\\\DependencyInjection\\\\Widget\\\\Factory\\\\WidgetFactoryInterface\\:\\:createDefinition\\(\\) has invalid type Chill\\\\MainBundle\\\\DependencyInjection\\\\Widget\\\\Factory\\\\type\\.$#" + count: 1 + path: src/Bundle/ChillMainBundle/DependencyInjection/Widget/Factory/WidgetFactoryInterface.php + + - + message: "#^Parameter \\$place of method Chill\\\\MainBundle\\\\DependencyInjection\\\\Widget\\\\Factory\\\\WidgetFactoryInterface\\:\\:configureOptions\\(\\) has invalid type Chill\\\\MainBundle\\\\DependencyInjection\\\\Widget\\\\Factory\\\\type\\.$#" + count: 1 + path: src/Bundle/ChillMainBundle/DependencyInjection/Widget/Factory/WidgetFactoryInterface.php + + - + message: "#^Parameter \\$place of method Chill\\\\MainBundle\\\\DependencyInjection\\\\Widget\\\\Factory\\\\WidgetFactoryInterface\\:\\:createDefinition\\(\\) has invalid type Chill\\\\MainBundle\\\\DependencyInjection\\\\Widget\\\\Factory\\\\type\\.$#" + count: 1 + path: src/Bundle/ChillMainBundle/DependencyInjection/Widget/Factory/WidgetFactoryInterface.php + + - + message: "#^PHPDoc tag @param for parameter \\$factory with type Chill\\\\MainBundle\\\\DependencyInjection\\\\Widget\\\\WidgetFactoryInterface is not subtype of native type Chill\\\\MainBundle\\\\DependencyInjection\\\\Widget\\\\Factory\\\\WidgetFactoryInterface\\.$#" + count: 1 + path: src/Bundle/ChillMainBundle/DependencyInjection/Widget/HasWidgetFactoriesExtensionInterface.php + + - + message: "#^Parameter \\$factory of method Chill\\\\MainBundle\\\\DependencyInjection\\\\Widget\\\\HasWidgetFactoriesExtensionInterface\\:\\:addWidgetFactory\\(\\) has invalid type Chill\\\\MainBundle\\\\DependencyInjection\\\\Widget\\\\WidgetFactoryInterface\\.$#" + count: 1 + path: src/Bundle/ChillMainBundle/DependencyInjection/Widget/HasWidgetFactoriesExtensionInterface.php + + - + message: "#^Strict comparison using \\=\\=\\= between int\\<1, max\\> and 0 will always evaluate to false\\.$#" + count: 1 + path: src/Bundle/ChillMainBundle/Doctrine/Type/NativeDateIntervalType.php + + - + message: "#^Instanceof between DateTime and DateTime will always evaluate to true\\.$#" + count: 1 + path: src/Bundle/ChillMainBundle/Entity/Address.php + + - + message: "#^Property Chill\\\\MainBundle\\\\Entity\\\\Address\\:\\:\\$validTo \\(DateTime\\|null\\) does not accept DateTimeInterface\\|null\\.$#" + count: 1 + path: src/Bundle/ChillMainBundle/Entity/Address.php + + - + message: "#^Strict comparison using \\=\\=\\= between null and string will always evaluate to false\\.$#" + count: 2 + path: src/Bundle/ChillMainBundle/Entity/Address.php + + - + message: "#^Method Chill\\\\MainBundle\\\\Entity\\\\AddressReference\\:\\:setPostcode\\(\\) should return Chill\\\\MainBundle\\\\Entity\\\\Address but returns \\$this\\(Chill\\\\MainBundle\\\\Entity\\\\AddressReference\\)\\.$#" + count: 1 + path: src/Bundle/ChillMainBundle/Entity/AddressReference.php + + - + message: "#^Property Chill\\\\MainBundle\\\\Entity\\\\AddressReference\\:\\:\\$addressCanonical is never read, only written\\.$#" + count: 1 + path: src/Bundle/ChillMainBundle/Entity/AddressReference.php + + - + message: "#^Property Chill\\\\MainBundle\\\\Entity\\\\AddressReference\\:\\:\\$id is never written, only read\\.$#" + count: 1 + path: src/Bundle/ChillMainBundle/Entity/AddressReference.php + + - + message: "#^Method Chill\\\\MainBundle\\\\Entity\\\\Country\\:\\:getCountryCode\\(\\) has invalid return type Chill\\\\MainBundle\\\\Entity\\\\the\\.$#" + count: 1 + path: src/Bundle/ChillMainBundle/Entity/Country.php + + - + message: "#^Method Chill\\\\MainBundle\\\\Entity\\\\Country\\:\\:getCountryCode\\(\\) should return Chill\\\\MainBundle\\\\Entity\\\\the but returns string\\.$#" + count: 1 + path: src/Bundle/ChillMainBundle/Entity/Country.php + + + - + message: "#^Property Chill\\\\MainBundle\\\\Entity\\\\GeographicalUnit\\:\\:\\$geom is unused\\.$#" + count: 1 + path: src/Bundle/ChillMainBundle/Entity/GeographicalUnit.php + + - + message: "#^Property Chill\\\\MainBundle\\\\Entity\\\\GeographicalUnit\\:\\:\\$unitRefId is never read, only written\\.$#" + count: 1 + path: src/Bundle/ChillMainBundle/Entity/GeographicalUnit.php + + - + message: "#^Method Chill\\\\MainBundle\\\\Entity\\\\GroupCenter\\:\\:getPermissionsGroup\\(\\) has invalid return type Chill\\\\MainBundle\\\\Entity\\\\PermissionGroup\\.$#" + count: 1 + path: src/Bundle/ChillMainBundle/Entity/GroupCenter.php + + - + message: "#^Method Chill\\\\MainBundle\\\\Entity\\\\GroupCenter\\:\\:getPermissionsGroup\\(\\) should return Chill\\\\MainBundle\\\\Entity\\\\PermissionGroup but returns Chill\\\\MainBundle\\\\Entity\\\\PermissionsGroup\\.$#" + count: 1 + path: src/Bundle/ChillMainBundle/Entity/GroupCenter.php + + - + message: "#^Property Chill\\\\MainBundle\\\\Entity\\\\GroupCenter\\:\\:\\$id is never written, only read\\.$#" + count: 1 + path: src/Bundle/ChillMainBundle/Entity/GroupCenter.php + + - + message: "#^Property Chill\\\\MainBundle\\\\Entity\\\\GroupCenter\\:\\:\\$permissionsGroup \\(Chill\\\\MainBundle\\\\Entity\\\\PermissionsGroup\\) does not accept Doctrine\\\\Common\\\\Collections\\\\ArrayCollection\\<\\*NEVER\\*, \\*NEVER\\*\\>\\.$#" + count: 1 + path: src/Bundle/ChillMainBundle/Entity/GroupCenter.php + + - + message: "#^Method Chill\\\\MainBundle\\\\Entity\\\\Language\\:\\:getName\\(\\) should return string but returns array\\.$#" + count: 1 + path: src/Bundle/ChillMainBundle/Entity/Language.php + + - + message: "#^PHPDoc tag @param has invalid value \\(string array \\$name\\)\\: Unexpected token \"array\", expected variable at offset 49$#" + count: 1 + path: src/Bundle/ChillMainBundle/Entity/Language.php + + - + message: "#^PHPDoc tag @var for property Chill\\\\MainBundle\\\\Entity\\\\Language\\:\\:\\$name with type string is incompatible with native type array\\.$#" + count: 1 + path: src/Bundle/ChillMainBundle/Entity/Language.php + + - + message: "#^Property Chill\\\\MainBundle\\\\Entity\\\\Location\\:\\:\\$createdAt \\(DateTimeImmutable\\|null\\) does not accept DateTimeInterface\\|null\\.$#" + count: 1 + path: src/Bundle/ChillMainBundle/Entity/Location.php + + - + message: "#^Property Chill\\\\MainBundle\\\\Entity\\\\Location\\:\\:\\$updatedAt \\(DateTimeImmutable\\|null\\) does not accept DateTimeInterface\\|null\\.$#" + count: 1 + path: src/Bundle/ChillMainBundle/Entity/Location.php + + - + message: "#^Property Chill\\\\MainBundle\\\\Entity\\\\Notification\\:\\:\\$updatedAt \\(DateTimeImmutable\\|null\\) does not accept DateTimeInterface\\.$#" + count: 1 + path: src/Bundle/ChillMainBundle/Entity/Notification.php + + - + message: "#^Property Chill\\\\MainBundle\\\\Entity\\\\NotificationComment\\:\\:\\$createdAt \\(DateTimeImmutable\\|null\\) does not accept DateTimeInterface\\.$#" + count: 1 + path: src/Bundle/ChillMainBundle/Entity/NotificationComment.php + + - + message: "#^Property Chill\\\\MainBundle\\\\Entity\\\\NotificationComment\\:\\:\\$updateAt \\(DateTimeImmutable\\|null\\) does not accept DateTimeInterface\\.$#" + count: 1 + path: src/Bundle/ChillMainBundle/Entity/NotificationComment.php + + - + message: "#^Property Chill\\\\MainBundle\\\\Entity\\\\PermissionsGroup\\:\\:\\$groupCenters is never read, only written\\.$#" + count: 1 + path: src/Bundle/ChillMainBundle/Entity/PermissionsGroup.php + + - + message: "#^Property Chill\\\\MainBundle\\\\Entity\\\\PermissionsGroup\\:\\:\\$id is never written, only read\\.$#" + count: 1 + path: src/Bundle/ChillMainBundle/Entity/PermissionsGroup.php + + - + message: "#^Property Chill\\\\MainBundle\\\\Entity\\\\PostalCode\\:\\:\\$canonical is never read, only written\\.$#" + count: 1 + path: src/Bundle/ChillMainBundle/Entity/PostalCode.php + + - + message: "#^Property Chill\\\\MainBundle\\\\Entity\\\\PostalCode\\:\\:\\$deletedAt is never read, only written\\.$#" + count: 1 + path: src/Bundle/ChillMainBundle/Entity/PostalCode.php + + - + message: "#^Property Chill\\\\MainBundle\\\\Entity\\\\PostalCode\\:\\:\\$id is never written, only read\\.$#" + count: 1 + path: src/Bundle/ChillMainBundle/Entity/PostalCode.php + + - + message: "#^PHPDoc tag @var for property Chill\\\\MainBundle\\\\Entity\\\\Regroupment\\:\\:\\$centers with type Chill\\\\MainBundle\\\\Entity\\\\Center is not subtype of native type Doctrine\\\\Common\\\\Collections\\\\Collection\\.$#" + count: 1 + path: src/Bundle/ChillMainBundle/Entity/Regroupment.php + + - + message: "#^Property Chill\\\\MainBundle\\\\Entity\\\\RoleScope\\:\\:\\$permissionsGroups is never read, only written\\.$#" + count: 1 + path: src/Bundle/ChillMainBundle/Entity/RoleScope.php + + - + message: "#^Strict comparison using \\=\\=\\= between null and array will always evaluate to false\\.$#" + count: 1 + path: src/Bundle/ChillMainBundle/Entity/User.php + + - + message: "#^Call to an undefined method Traversable\\<\\(int\\|string\\), mixed\\>\\:\\:current\\(\\)\\.$#" + count: 2 + path: src/Bundle/ChillMainBundle/Entity/Workflow/EntityWorkflow.php + + - + message: "#^Call to an undefined method Traversable\\<\\(int\\|string\\), mixed\\>\\:\\:next\\(\\)\\.$#" + count: 1 + path: src/Bundle/ChillMainBundle/Entity/Workflow/EntityWorkflow.php + + - + message: "#^Call to an undefined method Traversable\\<\\(int\\|string\\), mixed\\>\\:\\:rewind\\(\\)\\.$#" + count: 1 + path: src/Bundle/ChillMainBundle/Entity/Workflow/EntityWorkflow.php + + - + message: "#^Call to an undefined method Traversable\\<\\(int\\|string\\), mixed\\>\\:\\:valid\\(\\)\\.$#" + count: 2 + path: src/Bundle/ChillMainBundle/Entity/Workflow/EntityWorkflow.php + + - + message: "#^Unreachable statement \\- code above always terminates\\.$#" + count: 1 + path: src/Bundle/ChillMainBundle/Entity/Workflow/EntityWorkflowStep.php + + - + message: "#^Access to offset \\(int\\|string\\) on an unknown class Chill\\\\MainBundle\\\\Export\\\\type\\.$#" + count: 1 + path: src/Bundle/ChillMainBundle/Export/ExportManager.php + + - + message: "#^Call to an undefined method Chill\\\\MainBundle\\\\Export\\\\ExportElementInterface\\:\\:requiredRole\\(\\)\\.$#" + count: 1 + path: src/Bundle/ChillMainBundle/Export/ExportManager.php + + - + message: "#^Call to function is_iterable\\(\\) with array will always evaluate to true\\.$#" + count: 1 + path: src/Bundle/ChillMainBundle/Export/ExportManager.php + + - + message: "#^Empty array passed to foreach\\.$#" + count: 1 + path: src/Bundle/ChillMainBundle/Export/ExportManager.php + + - + message: "#^Instanceof between Doctrine\\\\ORM\\\\QueryBuilder and Doctrine\\\\ORM\\\\QueryBuilder will always evaluate to true\\.$#" + count: 1 + path: src/Bundle/ChillMainBundle/Export/ExportManager.php + + - + message: "#^Iterating over an object of an unknown class Chill\\\\MainBundle\\\\Export\\\\type\\.$#" + count: 1 + path: src/Bundle/ChillMainBundle/Export/ExportManager.php + + - + message: "#^PHPDoc tag @param for parameter \\$aliases with type Generator is incompatible with native type array\\.$#" + count: 1 + path: src/Bundle/ChillMainBundle/Export/ExportManager.php + + - + message: "#^Parameter \\$data of method Chill\\\\MainBundle\\\\Export\\\\ExportManager\\:\\:handleAggregators\\(\\) has invalid type Chill\\\\MainBundle\\\\Export\\\\type\\.$#" + count: 1 + path: src/Bundle/ChillMainBundle/Export/ExportManager.php + + - + message: "#^Parameter \\$data of method Chill\\\\MainBundle\\\\Export\\\\ExportManager\\:\\:retrieveUsedFilters\\(\\) has invalid type Chill\\\\MainBundle\\\\Export\\\\type\\.$#" + count: 1 + path: src/Bundle/ChillMainBundle/Export/ExportManager.php + + - + message: "#^Strict comparison using \\=\\=\\= between null and Chill\\\\MainBundle\\\\Export\\\\type will always evaluate to false\\.$#" + count: 1 + path: src/Bundle/ChillMainBundle/Export/ExportManager.php + + - + message: "#^Yield can be used only with these return types\\: Generator, Iterator, Traversable, iterable\\.$#" + count: 5 + path: src/Bundle/ChillMainBundle/Export/ExportManager.php + + - + message: "#^Strict comparison using \\=\\=\\= between null and array\\|string will always evaluate to false\\.$#" + count: 1 + path: src/Bundle/ChillMainBundle/Export/Formatter/CSVFormatter.php + + - + message: "#^Variable \\$data in PHPDoc tag @var does not match assigned variable \\$contentData\\.$#" + count: 1 + path: src/Bundle/ChillMainBundle/Export/Formatter/CSVFormatter.php + + - + message: "#^Parameter \\#2 \\$exportAlias \\(Chill\\\\MainBundle\\\\Export\\\\Formatter\\\\type\\) of method Chill\\\\MainBundle\\\\Export\\\\Formatter\\\\CSVListFormatter\\:\\:buildForm\\(\\) should be compatible with parameter \\$exportAlias \\(string\\) of method Chill\\\\MainBundle\\\\Export\\\\FormatterInterface\\:\\:buildForm\\(\\)$#" + count: 1 + path: src/Bundle/ChillMainBundle/Export/Formatter/CSVListFormatter.php + + - + message: "#^Parameter \\$exportAlias of method Chill\\\\MainBundle\\\\Export\\\\Formatter\\\\CSVListFormatter\\:\\:buildForm\\(\\) has invalid type Chill\\\\MainBundle\\\\Export\\\\Formatter\\\\type\\.$#" + count: 1 + path: src/Bundle/ChillMainBundle/Export/Formatter/CSVListFormatter.php + + - + message: "#^Parameter \\#2 \\$exportAlias \\(Chill\\\\MainBundle\\\\Export\\\\Formatter\\\\type\\) of method Chill\\\\MainBundle\\\\Export\\\\Formatter\\\\CSVPivotedListFormatter\\:\\:buildForm\\(\\) should be compatible with parameter \\$exportAlias \\(string\\) of method Chill\\\\MainBundle\\\\Export\\\\FormatterInterface\\:\\:buildForm\\(\\)$#" + count: 1 + path: src/Bundle/ChillMainBundle/Export/Formatter/CSVPivotedListFormatter.php + + - + message: "#^Parameter \\$exportAlias of method Chill\\\\MainBundle\\\\Export\\\\Formatter\\\\CSVPivotedListFormatter\\:\\:buildForm\\(\\) has invalid type Chill\\\\MainBundle\\\\Export\\\\Formatter\\\\type\\.$#" + count: 1 + path: src/Bundle/ChillMainBundle/Export/Formatter/CSVPivotedListFormatter.php + + - + message: "#^Access to offset 'format' on an unknown class Chill\\\\MainBundle\\\\Export\\\\Formatter\\\\type\\.$#" + count: 1 + path: src/Bundle/ChillMainBundle/Export/Formatter/SpreadSheetFormatter.php + + - + message: "#^Access to offset mixed on an unknown class Chill\\\\MainBundle\\\\Export\\\\Formatter\\\\type\\.$#" + count: 2 + path: src/Bundle/ChillMainBundle/Export/Formatter/SpreadSheetFormatter.php + + - + message: "#^Iterating over an object of an unknown class Chill\\\\MainBundle\\\\Export\\\\Formatter\\\\type\\.$#" + count: 3 + path: src/Bundle/ChillMainBundle/Export/Formatter/SpreadSheetFormatter.php + + - + message: "#^Property Chill\\\\MainBundle\\\\Export\\\\Formatter\\\\SpreadSheetFormatter\\:\\:\\$aggregatorsData \\(Chill\\\\MainBundle\\\\Export\\\\Formatter\\\\type\\) does not accept array\\.$#" + count: 1 + path: src/Bundle/ChillMainBundle/Export/Formatter/SpreadSheetFormatter.php + + - + message: "#^Property Chill\\\\MainBundle\\\\Export\\\\Formatter\\\\SpreadSheetFormatter\\:\\:\\$aggregatorsData has unknown class Chill\\\\MainBundle\\\\Export\\\\Formatter\\\\type as its type\\.$#" + count: 1 + path: src/Bundle/ChillMainBundle/Export/Formatter/SpreadSheetFormatter.php + + - + message: "#^Property Chill\\\\MainBundle\\\\Export\\\\Formatter\\\\SpreadSheetFormatter\\:\\:\\$formatterData \\(Chill\\\\MainBundle\\\\Export\\\\Formatter\\\\type\\) does not accept array\\.$#" + count: 1 + path: src/Bundle/ChillMainBundle/Export/Formatter/SpreadSheetFormatter.php + + - + message: "#^Property Chill\\\\MainBundle\\\\Export\\\\Formatter\\\\SpreadSheetFormatter\\:\\:\\$formatterData has unknown class Chill\\\\MainBundle\\\\Export\\\\Formatter\\\\type as its type\\.$#" + count: 1 + path: src/Bundle/ChillMainBundle/Export/Formatter/SpreadSheetFormatter.php + + - + message: "#^Property Chill\\\\MainBundle\\\\Export\\\\Formatter\\\\SpreadSheetFormatter\\:\\:\\$result \\(Chill\\\\MainBundle\\\\Export\\\\Formatter\\\\type\\) does not accept array\\.$#" + count: 1 + path: src/Bundle/ChillMainBundle/Export/Formatter/SpreadSheetFormatter.php + + - + message: "#^Property Chill\\\\MainBundle\\\\Export\\\\Formatter\\\\SpreadSheetFormatter\\:\\:\\$result has unknown class Chill\\\\MainBundle\\\\Export\\\\Formatter\\\\type as its type\\.$#" + count: 1 + path: src/Bundle/ChillMainBundle/Export/Formatter/SpreadSheetFormatter.php + + - + message: "#^Strict comparison using \\=\\=\\= between null and string will always evaluate to false\\.$#" + count: 1 + path: src/Bundle/ChillMainBundle/Export/Formatter/SpreadSheetFormatter.php + + - + message: "#^Instanceof between string and DateTimeInterface will always evaluate to false\\.$#" + count: 1 + path: src/Bundle/ChillMainBundle/Export/Formatter/SpreadsheetListFormatter.php + + - + message: "#^PHPDoc tag @param has invalid value \\(Array\\(String\\) \\$aggregatorAliases Array of the aliases of the aggregators\\. An aggregator do the \"group by\" on the data\\. \\$aggregatorAliases\\)\\: Unexpected token \"\\(\", expected variable at offset 343$#" + count: 1 + path: src/Bundle/ChillMainBundle/Export/FormatterInterface.php + + - + message: "#^PHPDoc tag @var for property Chill\\\\MainBundle\\\\Export\\\\Helper\\\\ExportAddressHelper\\:\\:\\$unitNamesKeysCache contains unresolvable type\\.$#" + count: 1 + path: src/Bundle/ChillMainBundle/Export/Helper/ExportAddressHelper.php + + - + message: "#^PHPDoc tag @var for property Chill\\\\MainBundle\\\\Export\\\\Helper\\\\ExportAddressHelper\\:\\:\\$unitNamesKeysCache with type mixed is not subtype of native type array\\|null\\.$#" + count: 1 + path: src/Bundle/ChillMainBundle/Export/Helper/ExportAddressHelper.php + + - + message: "#^Call to method createSearchForm\\(\\) on an unknown class Chill\\\\MainBundle\\\\Search\\\\HasAdvancedSearchForm\\.$#" + count: 1 + path: src/Bundle/ChillMainBundle/Form/AdvancedSearchType.php + + - + message: "#^PHPDoc tag @param for parameter \\$resolver with type Chill\\\\MainBundle\\\\Form\\\\OptionsResolverInterface is not subtype of native type Symfony\\\\Component\\\\OptionsResolver\\\\OptionsResolver\\.$#" + count: 1 + path: src/Bundle/ChillMainBundle/Form/CenterType.php + + - + message: "#^Parameter \\$resolver of method Chill\\\\MainBundle\\\\Form\\\\CenterType\\:\\:configureOptions\\(\\) has invalid type Chill\\\\MainBundle\\\\Form\\\\OptionsResolverInterface\\.$#" + count: 1 + path: src/Bundle/ChillMainBundle/Form/CenterType.php + + - + message: "#^Instanceof between Chill\\\\MainBundle\\\\Entity\\\\Address and Chill\\\\MainBundle\\\\Entity\\\\Address will always evaluate to true\\.$#" + count: 2 + path: src/Bundle/ChillMainBundle/Form/DataMapper/AddressDataMapper.php + + - + message: "#^Strict comparison using \\=\\=\\= between null and Chill\\\\MainBundle\\\\Entity\\\\Address will always evaluate to false\\.$#" + count: 1 + path: src/Bundle/ChillMainBundle/Form/DataMapper/AddressDataMapper.php + + - + message: "#^Else branch is unreachable because previous condition is always true\\.$#" + count: 1 + path: src/Bundle/ChillMainBundle/Form/DataMapper/ScopePickerDataMapper.php + + - + message: "#^Instanceof between Chill\\\\MainBundle\\\\Entity\\\\Scope and Chill\\\\MainBundle\\\\Entity\\\\Scope will always evaluate to true\\.$#" + count: 2 + path: src/Bundle/ChillMainBundle/Form/DataMapper/ScopePickerDataMapper.php + + - + message: "#^Unreachable statement \\- code above always terminates\\.$#" + count: 1 + path: src/Bundle/ChillMainBundle/Form/DataMapper/ScopePickerDataMapper.php + + - + message: "#^Strict comparison using \\=\\=\\= between null and string will always evaluate to false\\.$#" + count: 2 + path: src/Bundle/ChillMainBundle/Form/DataTransformer/IdToEntityDataTransformer.php + + - + message: "#^PHPDoc tag @param for parameter \\$resolver with type Chill\\\\MainBundle\\\\Form\\\\OptionsResolverInterface is not subtype of native type Symfony\\\\Component\\\\OptionsResolver\\\\OptionsResolver\\.$#" + count: 1 + path: src/Bundle/ChillMainBundle/Form/LocationFormType.php + + - + message: "#^Parameter \\$resolver of method Chill\\\\MainBundle\\\\Form\\\\LocationFormType\\:\\:configureOptions\\(\\) has invalid type Chill\\\\MainBundle\\\\Form\\\\OptionsResolverInterface\\.$#" + count: 1 + path: src/Bundle/ChillMainBundle/Form/LocationFormType.php + + - + message: "#^PHPDoc tag @param for parameter \\$resolver with type Chill\\\\MainBundle\\\\Form\\\\OptionsResolverInterface is not subtype of native type Symfony\\\\Component\\\\OptionsResolver\\\\OptionsResolver\\.$#" + count: 1 + path: src/Bundle/ChillMainBundle/Form/PermissionsGroupType.php + + - + message: "#^Parameter \\$resolver of method Chill\\\\MainBundle\\\\Form\\\\PermissionsGroupType\\:\\:configureOptions\\(\\) has invalid type Chill\\\\MainBundle\\\\Form\\\\OptionsResolverInterface\\.$#" + count: 1 + path: src/Bundle/ChillMainBundle/Form/PermissionsGroupType.php + + - + message: "#^PHPDoc tag @param for parameter \\$resolver with type Chill\\\\MainBundle\\\\Form\\\\OptionsResolverInterface is not subtype of native type Symfony\\\\Component\\\\OptionsResolver\\\\OptionsResolver\\.$#" + count: 1 + path: src/Bundle/ChillMainBundle/Form/ScopeType.php + + - + message: "#^Parameter \\$resolver of method Chill\\\\MainBundle\\\\Form\\\\ScopeType\\:\\:configureOptions\\(\\) has invalid type Chill\\\\MainBundle\\\\Form\\\\OptionsResolverInterface\\.$#" + count: 1 + path: src/Bundle/ChillMainBundle/Form/ScopeType.php + + - + message: "#^Property Chill\\\\MainBundle\\\\Form\\\\Type\\\\ChillPhoneNumberType\\:\\:\\$phoneNumberUtil is never read, only written\\.$#" + count: 1 + path: src/Bundle/ChillMainBundle/Form/Type/ChillPhoneNumberType.php + + - + message: "#^Call to an undefined method Symfony\\\\Component\\\\Security\\\\Core\\\\User\\\\UserInterface\\:\\:getId\\(\\)\\.$#" + count: 1 + path: src/Bundle/ChillMainBundle/Form/Type/CommentType.php + + - + message: "#^Strict comparison using \\=\\=\\= between null and array\\\\|Chill\\\\MainBundle\\\\Entity\\\\User will always evaluate to false\\.$#" + count: 1 + path: src/Bundle/ChillMainBundle/Form/Type/DataTransformer/EntityToJsonTransformer.php + + - + message: "#^Method Chill\\\\MainBundle\\\\Form\\\\Type\\\\DataTransformer\\\\MultipleObjectsToIdTransformer\\:\\:transform\\(\\) should return Doctrine\\\\Common\\\\Collections\\\\ArrayCollection but returns array\\\\.$#" + count: 1 + path: src/Bundle/ChillMainBundle/Form/Type/DataTransformer/MultipleObjectsToIdTransformer.php + + - + message: "#^Strict comparison using \\=\\=\\= between null and string will always evaluate to false\\.$#" + count: 1 + path: src/Bundle/ChillMainBundle/Form/Type/DataTransformer/ObjectToIdTransformer.php + + - + message: "#^Call to function is_int\\(\\) with int will always evaluate to true\\.$#" + count: 1 + path: src/Bundle/ChillMainBundle/Form/Type/DataTransformer/PostalCodeToIdTransformer.php + + - + message: "#^Instanceof between Chill\\\\MainBundle\\\\Export\\\\ExportInterface and Chill\\\\MainBundle\\\\Export\\\\ExportInterface will always evaluate to true\\.$#" + count: 2 + path: src/Bundle/ChillMainBundle/Form/Type/Export/ExportType.php + + - + message: "#^Property Chill\\\\MainBundle\\\\Form\\\\Type\\\\Select2CountryType\\:\\:\\$requestStack is never read, only written\\.$#" + count: 1 + path: src/Bundle/ChillMainBundle/Form/Type/Select2CountryType.php + + - + message: "#^Call to an undefined method Symfony\\\\Component\\\\OptionsResolver\\\\OptionsResolver\\:\\:replaceDefaults\\(\\)\\.$#" + count: 1 + path: src/Bundle/ChillMainBundle/Form/Type/Select2EntityType.php + + - + message: "#^Property Chill\\\\MainBundle\\\\Form\\\\Type\\\\Select2LanguageType\\:\\:\\$requestStack is never read, only written\\.$#" + count: 1 + path: src/Bundle/ChillMainBundle/Form/Type/Select2LanguageType.php + + - + message: "#^PHPDoc tag @param for parameter \\$resolver with type Chill\\\\MainBundle\\\\Form\\\\OptionsResolverInterface is not subtype of native type Symfony\\\\Component\\\\OptionsResolver\\\\OptionsResolver\\.$#" + count: 1 + path: src/Bundle/ChillMainBundle/Form/UserType.php + + - + message: "#^Parameter \\$resolver of method Chill\\\\MainBundle\\\\Form\\\\UserType\\:\\:configureOptions\\(\\) has invalid type Chill\\\\MainBundle\\\\Form\\\\OptionsResolverInterface\\.$#" + count: 1 + path: src/Bundle/ChillMainBundle/Form/UserType.php + + - + message: "#^Method Symfony\\\\Component\\\\OptionsResolver\\\\OptionsResolver\\:\\:setDefined\\(\\) invoked with 2 parameters, 1 required\\.$#" + count: 1 + path: src/Bundle/ChillMainBundle/Form/WorkflowStepType.php + + - + message: "#^Property Chill\\\\MainBundle\\\\Notification\\\\Email\\\\NotificationMailer\\:\\:\\$translator is never read, only written\\.$#" + count: 1 + path: src/Bundle/ChillMainBundle/Notification/Email/NotificationMailer.php + + - + message: "#^Property Chill\\\\MainBundle\\\\Notification\\\\NotificationHandlerManager\\:\\:\\$em is never read, only written\\.$#" + count: 1 + path: src/Bundle/ChillMainBundle/Notification/NotificationHandlerManager.php + + - + message: "#^Strict comparison using \\=\\=\\= between 0 and float will always evaluate to false\\.$#" + count: 1 + path: src/Bundle/ChillMainBundle/Pagination/Paginator.php + + - + message: "#^PHPDoc tag @param for parameter \\$phoneNumber with type string is incompatible with native type libphonenumber\\\\PhoneNumber\\|null\\.$#" + count: 1 + path: src/Bundle/ChillMainBundle/Phonenumber/PhonenumberHelper.php + + - + message: "#^Expression on left side of \\?\\? is not nullable\\.$#" + count: 1 + path: src/Bundle/ChillMainBundle/Phonenumber/Templating.php + + - + message: "#^Method Chill\\\\MainBundle\\\\Repository\\\\GeographicalUnitRepository\\:\\:findBy\\(\\) should return Chill\\\\MainBundle\\\\Entity\\\\GeographicalUnit\\|null but returns array\\\\.$#" + count: 1 + path: src/Bundle/ChillMainBundle/Repository/GeographicalUnitRepository.php + + - + message: "#^Property Chill\\\\MainBundle\\\\Repository\\\\GeographicalUnitRepository\\:\\:\\$em is never read, only written\\.$#" + count: 1 + path: src/Bundle/ChillMainBundle/Repository/GeographicalUnitRepository.php + + - + message: "#^Return type \\(Chill\\\\MainBundle\\\\Entity\\\\GeographicalUnit\\|null\\) of method Chill\\\\MainBundle\\\\Repository\\\\GeographicalUnitRepository\\:\\:findBy\\(\\) should be compatible with return type \\(array\\\\) of method Doctrine\\\\Persistence\\\\ObjectRepository\\\\:\\:findBy\\(\\)$#" + count: 2 + path: src/Bundle/ChillMainBundle/Repository/GeographicalUnitRepository.php + + - + message: "#^The @implements tag of class Chill\\\\MainBundle\\\\Repository\\\\SavedExportRepository describes Doctrine\\\\Persistence\\\\ObjectRepository but the class implements\\: Chill\\\\MainBundle\\\\Repository\\\\SavedExportRepositoryInterface$#" + count: 1 + path: src/Bundle/ChillMainBundle/Repository/SavedExportRepository.php + + - + message: "#^Interface Chill\\\\MainBundle\\\\Repository\\\\SavedExportRepositoryInterface has @implements tag, but can not implement any interface, must extend from it\\.$#" + count: 1 + path: src/Bundle/ChillMainBundle/Repository/SavedExportRepositoryInterface.php + + - + message: "#^Strict comparison using \\!\\=\\= between null and array\\\\|Chill\\\\MainBundle\\\\Entity\\\\Center will always evaluate to true\\.$#" + count: 1 + path: src/Bundle/ChillMainBundle/Repository/UserACLAwareRepository.php + + - + message: "#^Property Chill\\\\MainBundle\\\\Routing\\\\MenuComposer\\:\\:\\$routeCollection is never read, only written\\.$#" + count: 1 + path: src/Bundle/ChillMainBundle/Routing/MenuComposer.php + + - + message: "#^Property Chill\\\\MainBundle\\\\Routing\\\\MenuTwig\\:\\:\\$container is never read, only written\\.$#" + count: 1 + path: src/Bundle/ChillMainBundle/Routing/MenuTwig.php + + - + message: "#^Parameter \\$string of method Chill\\\\MainBundle\\\\Search\\\\AbstractSearch\\:\\:parseDate\\(\\) has invalid type Chill\\\\MainBundle\\\\Search\\\\type\\.$#" + count: 1 + path: src/Bundle/ChillMainBundle/Search/AbstractSearch.php + + - + message: "#^Method Chill\\\\MainBundle\\\\Search\\\\SearchApi\\:\\:getResults\\(\\) has invalid return type Chill\\\\MainBundle\\\\Search\\\\Model\\.$#" + count: 1 + path: src/Bundle/ChillMainBundle/Search/SearchApi.php + + - + message: "#^PHPDoc tag @return with type Chill\\\\MainBundle\\\\Search\\\\Model is not subtype of native type Chill\\\\MainBundle\\\\Serializer\\\\Model\\\\Collection\\.$#" + count: 1 + path: src/Bundle/ChillMainBundle/Search/SearchApi.php + + - + message: "#^Property Chill\\\\MainBundle\\\\Search\\\\SearchApiNoQueryException\\:\\:\\$parameters is never read, only written\\.$#" + count: 1 + path: src/Bundle/ChillMainBundle/Search/SearchApiNoQueryException.php + + - + message: "#^Property Chill\\\\MainBundle\\\\Search\\\\SearchApiNoQueryException\\:\\:\\$pattern is never read, only written\\.$#" + count: 1 + path: src/Bundle/ChillMainBundle/Search/SearchApiNoQueryException.php + + - + message: "#^Property Chill\\\\MainBundle\\\\Search\\\\SearchApiNoQueryException\\:\\:\\$types is never read, only written\\.$#" + count: 1 + path: src/Bundle/ChillMainBundle/Search/SearchApiNoQueryException.php + + - + message: "#^Property Chill\\\\MainBundle\\\\Search\\\\SearchApiResult\\:\\:\\$pertinence is unused\\.$#" + count: 1 + path: src/Bundle/ChillMainBundle/Search/SearchApiResult.php + + - + message: "#^Else branch is unreachable because previous condition is always true\\.$#" + count: 1 + path: src/Bundle/ChillMainBundle/Search/SearchProvider.php + + - + message: "#^If condition is always true\\.$#" + count: 1 + path: src/Bundle/ChillMainBundle/Search/SearchProvider.php + + - + message: "#^Method Chill\\\\MainBundle\\\\Search\\\\SearchProvider\\:\\:getHasAdvancedFormByName\\(\\) has invalid return type Chill\\\\MainBundle\\\\Search\\\\HasAdvancedSearchForm\\.$#" + count: 1 + path: src/Bundle/ChillMainBundle/Search/SearchProvider.php + + - + message: "#^Parameter \\$subject of method Chill\\\\MainBundle\\\\Search\\\\SearchProvider\\:\\:extractDomain\\(\\) has invalid type Chill\\\\MainBundle\\\\Search\\\\type\\.$#" + count: 1 + path: src/Bundle/ChillMainBundle/Search/SearchProvider.php + + - + message: "#^Property Chill\\\\MainBundle\\\\Search\\\\SearchProvider\\:\\:\\$hasAdvancedFormSearchServices has unknown class Chill\\\\MainBundle\\\\Search\\\\HasAdvancedSearchForm as its type\\.$#" + count: 1 + path: src/Bundle/ChillMainBundle/Search/SearchProvider.php + + - + message: "#^Strict comparison using \\!\\=\\= between null and string will always evaluate to true\\.$#" + count: 2 + path: src/Bundle/ChillMainBundle/Search/SearchProvider.php + + - + message: "#^Call to an undefined method Symfony\\\\Component\\\\Security\\\\Core\\\\User\\\\UserInterface\\:\\:getGroupCenters\\(\\)\\.$#" + count: 2 + path: src/Bundle/ChillMainBundle/Security/Authorization/AuthorizationHelper.php + + - + message: "#^Call to method getRoleScopes\\(\\) on an unknown class Chill\\\\MainBundle\\\\Entity\\\\PermissionGroup\\.$#" + count: 1 + path: src/Bundle/ChillMainBundle/Security/Authorization/AuthorizationHelper.php + + - + message: "#^Empty array passed to foreach\\.$#" + count: 1 + path: src/Bundle/ChillMainBundle/Security/Authorization/AuthorizationHelper.php + + - + message: "#^Instanceof between Chill\\\\MainBundle\\\\Entity\\\\Center\\|string and Symfony\\\\Component\\\\Security\\\\Core\\\\Role\\\\Role will always evaluate to false\\.$#" + count: 1 + path: src/Bundle/ChillMainBundle/Security/Authorization/AuthorizationHelper.php + + - + message: "#^Instanceof between string and Symfony\\\\Component\\\\Security\\\\Core\\\\Role\\\\Role will always evaluate to false\\.$#" + count: 2 + path: src/Bundle/ChillMainBundle/Security/Authorization/AuthorizationHelper.php + + - + message: "#^Strict comparison using \\=\\=\\= between null and Chill\\\\MainBundle\\\\Entity\\\\Scope\\|iterable\\ will always evaluate to false\\.$#" + count: 1 + path: src/Bundle/ChillMainBundle/Security/Authorization/AuthorizationHelper.php + + - + message: "#^Strict comparison using \\=\\=\\= between null and null will always evaluate to true\\.$#" + count: 1 + path: src/Bundle/ChillMainBundle/Security/Authorization/AuthorizationHelper.php + + - + message: "#^Unreachable statement \\- code above always terminates\\.$#" + count: 1 + path: src/Bundle/ChillMainBundle/Security/Authorization/AuthorizationHelper.php + + - + message: "#^Property Chill\\\\MainBundle\\\\Security\\\\Authorization\\\\DefaultVoterHelper\\:\\:\\$centerResolverDispatcher is never read, only written\\.$#" + count: 1 + path: src/Bundle/ChillMainBundle/Security/Authorization/DefaultVoterHelper.php + + - + message: "#^Method Chill\\\\MainBundle\\\\Workflow\\\\EntityWorkflowHandlerInterface\\:\\:getDeletionRoles\\(\\) invoked with 1 parameter, 0 required\\.$#" + count: 1 + path: src/Bundle/ChillMainBundle/Security/Authorization/WorkflowEntityDeletionVoter.php + + - + message: "#^Instanceof between Chill\\\\MainBundle\\\\Entity\\\\User and Chill\\\\MainBundle\\\\Entity\\\\User will always evaluate to true\\.$#" + count: 1 + path: src/Bundle/ChillMainBundle/Security/PasswordRecover/PasswordRecoverEvent.php + + - + message: "#^Parameter \\$ip of method Chill\\\\MainBundle\\\\Security\\\\PasswordRecover\\\\PasswordRecoverEvent\\:\\:__construct\\(\\) has invalid type Chill\\\\MainBundle\\\\Security\\\\PasswordRecover\\\\type\\.$#" + count: 1 + path: src/Bundle/ChillMainBundle/Security/PasswordRecover/PasswordRecoverEvent.php + + - + message: "#^Parameter \\$token of method Chill\\\\MainBundle\\\\Security\\\\PasswordRecover\\\\PasswordRecoverEvent\\:\\:__construct\\(\\) has invalid type Chill\\\\MainBundle\\\\Security\\\\PasswordRecover\\\\type\\.$#" + count: 1 + path: src/Bundle/ChillMainBundle/Security/PasswordRecover/PasswordRecoverEvent.php + + - + message: "#^Property Chill\\\\MainBundle\\\\Security\\\\PasswordRecover\\\\PasswordRecoverEvent\\:\\:\\$ip \\(string\\) does not accept Chill\\\\MainBundle\\\\Security\\\\PasswordRecover\\\\type\\|null\\.$#" + count: 1 + path: src/Bundle/ChillMainBundle/Security/PasswordRecover/PasswordRecoverEvent.php + + - + message: "#^Property Chill\\\\MainBundle\\\\Security\\\\PasswordRecover\\\\PasswordRecoverEvent\\:\\:\\$token \\(string\\) does not accept Chill\\\\MainBundle\\\\Security\\\\PasswordRecover\\\\type\\|null\\.$#" + count: 1 + path: src/Bundle/ChillMainBundle/Security/PasswordRecover/PasswordRecoverEvent.php + + - + message: "#^Call to function is_array\\(\\) with array\\ will always evaluate to true\\.$#" + count: 1 + path: src/Bundle/ChillMainBundle/Security/Resolver/CenterResolverManager.php + + - + message: "#^Strict comparison using \\=\\=\\= between null and array\\\\|Chill\\\\MainBundle\\\\Entity\\\\Center will always evaluate to false\\.$#" + count: 1 + path: src/Bundle/ChillMainBundle/Security/Resolver/CenterResolverManager.php + + - + message: "#^Unreachable statement \\- code above always terminates\\.$#" + count: 1 + path: src/Bundle/ChillMainBundle/Security/Resolver/CenterResolverManager.php + + - + message: "#^Instanceof between Chill\\\\MainBundle\\\\Entity\\\\HasCenterInterface and Chill\\\\MainBundle\\\\Entity\\\\HasCenterInterface will always evaluate to true\\.$#" + count: 1 + path: src/Bundle/ChillMainBundle/Security/Resolver/DefaultCenterResolver.php + + - + message: "#^Unreachable statement \\- code above always terminates\\.$#" + count: 1 + path: src/Bundle/ChillMainBundle/Security/Resolver/DefaultCenterResolver.php + + - + message: "#^Instanceof between Chill\\\\MainBundle\\\\Entity\\\\HasScopesInterface and Chill\\\\MainBundle\\\\Entity\\\\HasScopesInterface will always evaluate to true\\.$#" + count: 1 + path: src/Bundle/ChillMainBundle/Security/Resolver/DefaultScopeResolver.php + + - + message: "#^Unreachable statement \\- code above always terminates\\.$#" + count: 1 + path: src/Bundle/ChillMainBundle/Security/Resolver/DefaultScopeResolver.php + + - + message: "#^Method Chill\\\\MainBundle\\\\Security\\\\Resolver\\\\ResolverTwigExtension\\:\\:resolveCenter\\(\\) has invalid return type Chill\\\\MainBundle\\\\Security\\\\Resolver\\\\Center\\.$#" + count: 2 + path: src/Bundle/ChillMainBundle/Security/Resolver/ResolverTwigExtension.php + + - + message: "#^Method Chill\\\\MainBundle\\\\Security\\\\Resolver\\\\ResolverTwigExtension\\:\\:resolveCenter\\(\\) should return array\\\\|Chill\\\\MainBundle\\\\Security\\\\Resolver\\\\Center\\|null but returns array\\\\.$#" + count: 1 + path: src/Bundle/ChillMainBundle/Security/Resolver/ResolverTwigExtension.php + + - + message: "#^Method Chill\\\\MainBundle\\\\Security\\\\Resolver\\\\ScopeResolverDispatcher\\:\\:resolveScope\\(\\) invoked with 0 parameters, 1\\-2 required\\.$#" + count: 1 + path: src/Bundle/ChillMainBundle/Security/Resolver/ResolverTwigExtension.php + + - + message: "#^Method Chill\\\\MainBundle\\\\Security\\\\Resolver\\\\ScopeResolverDispatcher\\:\\:resolveScope\\(\\) should return Chill\\\\MainBundle\\\\Entity\\\\Scope\\|iterable\\ but returns null\\.$#" + count: 1 + path: src/Bundle/ChillMainBundle/Security/Resolver/ScopeResolverDispatcher.php + + - + message: "#^Method Chill\\\\MainBundle\\\\Security\\\\RoleProvider\\:\\:getRoleTitle\\(\\) should return string but returns null\\.$#" + count: 1 + path: src/Bundle/ChillMainBundle/Security/RoleProvider.php + + - + message: "#^Strict comparison using \\!\\=\\= between array\\ and null will always evaluate to true\\.$#" + count: 3 + path: src/Bundle/ChillMainBundle/Security/RoleProvider.php + + - + message: "#^Constant Chill\\\\MainBundle\\\\Serializer\\\\Normalizer\\\\AddressNormalizer\\:\\:NULL_POSTCODE_COUNTRY is unused\\.$#" + count: 1 + path: src/Bundle/ChillMainBundle/Serializer/Normalizer/AddressNormalizer.php + + - + message: "#^Constant Chill\\\\MainBundle\\\\Serializer\\\\Normalizer\\\\AddressNormalizer\\:\\:NULL_VALUE is unused\\.$#" + count: 1 + path: src/Bundle/ChillMainBundle/Serializer/Normalizer/AddressNormalizer.php + + - + message: "#^Instanceof between Chill\\\\MainBundle\\\\Entity\\\\Address and Chill\\\\MainBundle\\\\Entity\\\\Address will always evaluate to true\\.$#" + count: 1 + path: src/Bundle/ChillMainBundle/Serializer/Normalizer/AddressNormalizer.php + + - + message: "#^Unreachable statement \\- code above always terminates\\.$#" + count: 1 + path: src/Bundle/ChillMainBundle/Serializer/Normalizer/AddressNormalizer.php + + - + message: "#^Strict comparison using \\=\\=\\= between null and Chill\\\\MainBundle\\\\Entity\\\\Embeddable\\\\CommentEmbeddable will always evaluate to false\\.$#" + count: 1 + path: src/Bundle/ChillMainBundle/Serializer/Normalizer/CommentEmbeddableDocGenNormalizer.php + + - + message: "#^Method Chill\\\\MainBundle\\\\Serializer\\\\Normalizer\\\\DateNormalizer\\:\\:normalize\\(\\) should return array\\|ArrayObject\\|bool\\|float\\|int\\|string\\|null but return statement is missing\\.$#" + count: 1 + path: src/Bundle/ChillMainBundle/Serializer/Normalizer/DateNormalizer.php + + - + message: "#^Strict comparison using \\=\\=\\= between null and DateTimeInterface will always evaluate to false\\.$#" + count: 1 + path: src/Bundle/ChillMainBundle/Serializer/Normalizer/DateNormalizer.php + + - + message: "#^Instanceof between Doctrine\\\\ORM\\\\Mapping\\\\ClassMetadata\\ and Doctrine\\\\ORM\\\\Mapping\\\\ClassMetadata will always evaluate to true\\.$#" + count: 1 + path: src/Bundle/ChillMainBundle/Serializer/Normalizer/DoctrineExistingEntityNormalizer.php + + - + message: "#^Strict comparison using \\=\\=\\= between false and true will always evaluate to false\\.$#" + count: 1 + path: src/Bundle/ChillMainBundle/Serializer/Normalizer/DoctrineExistingEntityNormalizer.php + + - + message: "#^Property Chill\\\\MainBundle\\\\Serializer\\\\Normalizer\\\\NotificationNormalizer\\:\\:\\$notificationHandlerManager is never read, only written\\.$#" + count: 1 + path: src/Bundle/ChillMainBundle/Serializer/Normalizer/NotificationNormalizer.php + + - + message: "#^Result of && is always false\\.$#" + count: 1 + path: src/Bundle/ChillMainBundle/Serializer/Normalizer/UserNormalizer.php + + - + message: "#^Strict comparison using \\=\\=\\= between null and Chill\\\\MainBundle\\\\Entity\\\\User will always evaluate to false\\.$#" + count: 1 + path: src/Bundle/ChillMainBundle/Serializer/Normalizer/UserNormalizer.php + + - + message: "#^Call to function is_int\\(\\) with int will always evaluate to true\\.$#" + count: 1 + path: src/Bundle/ChillMainBundle/Service/Import/AddressReferenceFromBano.php + + - + message: "#^Call to an undefined method Symfony\\\\Component\\\\Mime\\\\RawMessage\\:\\:getSubject\\(\\)\\.$#" + count: 1 + path: src/Bundle/ChillMainBundle/Service/Mailer/ChillMailer.php + + - + message: "#^Call to an undefined method Symfony\\\\Component\\\\Mime\\\\RawMessage\\:\\:getTo\\(\\)\\.$#" + count: 1 + path: src/Bundle/ChillMainBundle/Service/Mailer/ChillMailer.php + + - + message: "#^Method Chill\\\\MainBundle\\\\Templating\\\\CSVCellTwig\\:\\:getName\\(\\) has invalid return type Chill\\\\MainBundle\\\\Templating\\\\The\\.$#" + count: 1 + path: src/Bundle/ChillMainBundle/Templating/CSVCellTwig.php + + - + message: "#^Method Chill\\\\MainBundle\\\\Templating\\\\CSVCellTwig\\:\\:getName\\(\\) should return Chill\\\\MainBundle\\\\Templating\\\\The but returns string\\.$#" + count: 1 + path: src/Bundle/ChillMainBundle/Templating/CSVCellTwig.php + + - + message: "#^Instanceof between string and DateTimeInterface will always evaluate to false\\.$#" + count: 1 + path: src/Bundle/ChillMainBundle/Templating/ChillTwigHelper.php + + - + message: "#^PHPDoc tag @return has invalid value \\(array\\<'to'\\: DateTimeImmutable, 'from'\\: DateTimeImmutable\\>\\)\\: Unexpected token \"\\:\", expected '\\>' at offset 29$#" + count: 1 + path: src/Bundle/ChillMainBundle/Templating/Listing/FilterOrderHelper.php + + - + message: "#^Call to an undefined method Symfony\\\\Contracts\\\\Translation\\\\TranslatorInterface\\:\\:getFallbackLocales\\(\\)\\.$#" + count: 1 + path: src/Bundle/ChillMainBundle/Templating/TranslatableStringHelper.php + + - + message: "#^Strict comparison using \\=\\=\\= between array\\{\\} and non\\-empty\\-array\\ will always evaluate to false\\.$#" + count: 1 + path: src/Bundle/ChillMainBundle/Templating/TranslatableStringHelper.php + + - + message: "#^Method Chill\\\\MainBundle\\\\Templating\\\\TranslatableStringTwig\\:\\:getName\\(\\) has invalid return type Chill\\\\MainBundle\\\\Templating\\\\The\\.$#" + count: 1 + path: src/Bundle/ChillMainBundle/Templating/TranslatableStringTwig.php + + - + message: "#^Method Chill\\\\MainBundle\\\\Templating\\\\TranslatableStringTwig\\:\\:getName\\(\\) should return Chill\\\\MainBundle\\\\Templating\\\\The but returns string\\.$#" + count: 1 + path: src/Bundle/ChillMainBundle/Templating/TranslatableStringTwig.php + + - + message: "#^Call to method render\\(\\) on an unknown class Chill\\\\MainBundle\\\\Templating\\\\Widget\\\\Widget\\\\WidgetInterface\\.$#" + count: 1 + path: src/Bundle/ChillMainBundle/Templating/Widget/WidgetRenderingTwig.php + + - + message: "#^Method Symfony\\\\Contracts\\\\EventDispatcher\\\\EventDispatcherInterface\\:\\:dispatch\\(\\) invoked with 2 parameters, 1 required\\.$#" + count: 1 + path: src/Bundle/ChillMainBundle/Templating/Widget/WidgetRenderingTwig.php + + - + message: "#^PHPDoc tag @var for variable \\$widget contains unknown class Chill\\\\MainBundle\\\\Templating\\\\Widget\\\\Widget\\\\WidgetInterface\\.$#" + count: 1 + path: src/Bundle/ChillMainBundle/Templating/Widget/WidgetRenderingTwig.php + + - + message: "#^Parameter \\$context of method Chill\\\\MainBundle\\\\Timeline\\\\TimelineBuilder\\:\\:countItems\\(\\) has invalid type Chill\\\\MainBundle\\\\Timeline\\\\unknown\\.$#" + count: 1 + path: src/Bundle/ChillMainBundle/Timeline/TimelineBuilder.php + + - + message: "#^Unreachable statement \\- code above always terminates\\.$#" + count: 1 + path: src/Bundle/ChillMainBundle/Timeline/TimelineBuilder.php + + - + message: "#^Parameter \\$context of method Chill\\\\MainBundle\\\\Timeline\\\\TimelineProviderInterface\\:\\:getEntityTemplate\\(\\) has invalid type Chill\\\\MainBundle\\\\Timeline\\\\type\\.$#" + count: 1 + path: src/Bundle/ChillMainBundle/Timeline/TimelineProviderInterface.php + + - + message: "#^Parameter \\$entity of method Chill\\\\MainBundle\\\\Timeline\\\\TimelineProviderInterface\\:\\:getEntityTemplate\\(\\) has invalid type Chill\\\\MainBundle\\\\Timeline\\\\type\\.$#" + count: 1 + path: src/Bundle/ChillMainBundle/Timeline/TimelineProviderInterface.php + + - + message: "#^Property Chill\\\\MainBundle\\\\Util\\\\DateRangeCovering\\:\\:\\$intervals is never read, only written\\.$#" + count: 1 + path: src/Bundle/ChillMainBundle/Util/DateRangeCovering.php + + - + message: "#^Access to an undefined property Symfony\\\\Component\\\\Validator\\\\Constraint\\:\\:\\$messageDuplicateEmail\\.$#" + count: 1 + path: src/Bundle/ChillMainBundle/Validation/Validator/UserUniqueEmailAndUsername.php + + - + message: "#^Access to an undefined property Symfony\\\\Component\\\\Validator\\\\Constraint\\:\\:\\$messageDuplicateUsername\\.$#" + count: 1 + path: src/Bundle/ChillMainBundle/Validation/Validator/UserUniqueEmailAndUsername.php + + - + message: "#^Strict comparison using \\=\\=\\= between null and string will always evaluate to false\\.$#" + count: 1 + path: src/Bundle/ChillMainBundle/Validation/Validator/ValidPhonenumber.php + + - + message: "#^Strict comparison using \\=\\=\\= between null and Chill\\\\MainBundle\\\\Entity\\\\User will always evaluate to false\\.$#" + count: 1 + path: src/Bundle/ChillMainBundle/Validator/Constraints/Entity/UserCircleConsistencyValidator.php + + - + message: "#^Access to an undefined property Symfony\\\\Component\\\\Validator\\\\Constraint\\:\\:\\$element\\.$#" + count: 1 + path: src/Bundle/ChillMainBundle/Validator/Constraints/Export/ExportElementConstraintValidator.php + + - + message: "#^Property Chill\\\\MainBundle\\\\Workflow\\\\Templating\\\\WorkflowTwigExtensionRuntime\\:\\:\\$entityWorkflowManager is never read, only written\\.$#" + count: 1 + path: src/Bundle/ChillMainBundle/Workflow/Templating/WorkflowTwigExtensionRuntime.php + + - + message: "#^Instanceof between Chill\\\\MainBundle\\\\Entity\\\\Workflow\\\\EntityWorkflow and Chill\\\\MainBundle\\\\Entity\\\\Workflow\\\\EntityWorkflow will always evaluate to true\\.$#" + count: 1 + path: src/Bundle/ChillMainBundle/Workflow/Validator/EntityWorkflowCreationValidator.php + + - + message: "#^Instanceof between Chill\\\\MainBundle\\\\Entity\\\\Workflow\\\\EntityWorkflowStep and Chill\\\\MainBundle\\\\Entity\\\\Workflow\\\\EntityWorkflowStep will always evaluate to true\\.$#" + count: 1 + path: src/Bundle/ChillMainBundle/Workflow/Validator/StepDestValidValidator.php + + - + message: "#^PHPDoc tag @param for parameter \\$postSql with type Chill\\\\PersonBundle\\\\Actions\\\\type is incompatible with native type string\\.$#" + count: 1 + path: src/Bundle/ChillPersonBundle/Actions/ActionEvent.php + + - + message: "#^Parameter \\$postSql of method Chill\\\\PersonBundle\\\\Actions\\\\ActionEvent\\:\\:addPostSql\\(\\) has invalid type Chill\\\\PersonBundle\\\\Actions\\\\type\\.$#" + count: 1 + path: src/Bundle/ChillPersonBundle/Actions/ActionEvent.php + + - + message: "#^Method Chill\\\\PersonBundle\\\\Actions\\\\Remove\\\\PersonMove\\:\\:getSQL\\(\\) has invalid return type Chill\\\\PersonBundle\\\\Actions\\\\Remove\\\\type\\.$#" + count: 1 + path: src/Bundle/ChillPersonBundle/Actions/Remove/PersonMove.php + + - + message: "#^Method Chill\\\\PersonBundle\\\\Actions\\\\Remove\\\\PersonMove\\:\\:getSQL\\(\\) should return Chill\\\\PersonBundle\\\\Actions\\\\Remove\\\\type but returns array\\.$#" + count: 1 + path: src/Bundle/ChillPersonBundle/Actions/Remove/PersonMove.php + + - + message: "#^Method Symfony\\\\Contracts\\\\EventDispatcher\\\\EventDispatcherInterface\\:\\:dispatch\\(\\) invoked with 2 parameters, 1 required\\.$#" + count: 2 + path: src/Bundle/ChillPersonBundle/Actions/Remove/PersonMove.php + + - + message: "#^Method Chill\\\\PersonBundle\\\\CRUD\\\\Controller\\\\EntityPersonCRUDController\\:\\:filterQueryEntitiesByPerson\\(\\) has invalid return type Chill\\\\PersonBundle\\\\CRUD\\\\Controller\\\\QueryBuilder\\.$#" + count: 1 + path: src/Bundle/ChillPersonBundle/CRUD/Controller/EntityPersonCRUDController.php + + - + message: "#^PHPDoc tag @param for parameter \\$qb with type Chill\\\\PersonBundle\\\\CRUD\\\\Controller\\\\QueryBuilder is not subtype of native type Doctrine\\\\ORM\\\\QueryBuilder\\.$#" + count: 1 + path: src/Bundle/ChillPersonBundle/CRUD/Controller/EntityPersonCRUDController.php + + - + message: "#^PHPDoc tag @return with type Chill\\\\PersonBundle\\\\CRUD\\\\Controller\\\\QueryBuilder is not subtype of native type Doctrine\\\\ORM\\\\QueryBuilder\\.$#" + count: 1 + path: src/Bundle/ChillPersonBundle/CRUD/Controller/EntityPersonCRUDController.php + + - + message: "#^PHPDoc tag @throws with type Chill\\\\PersonBundle\\\\CRUD\\\\Controller\\\\Symfony\\\\Component\\\\HttpKernel\\\\Exception\\\\NotFoundHttpException is not subtype of Throwable$#" + count: 1 + path: src/Bundle/ChillPersonBundle/CRUD/Controller/EntityPersonCRUDController.php + + - + message: "#^Parameter \\$action of method Chill\\\\PersonBundle\\\\CRUD\\\\Controller\\\\EntityPersonCRUDController\\:\\:createEntity\\(\\) has invalid type Chill\\\\MainBundle\\\\CRUD\\\\Controller\\\\string\\.$#" + count: 1 + path: src/Bundle/ChillPersonBundle/CRUD/Controller/EntityPersonCRUDController.php + + - + message: "#^Parameter \\$qb of method Chill\\\\PersonBundle\\\\CRUD\\\\Controller\\\\EntityPersonCRUDController\\:\\:filterQueryEntitiesByPerson\\(\\) has invalid type Chill\\\\PersonBundle\\\\CRUD\\\\Controller\\\\QueryBuilder\\.$#" + count: 1 + path: src/Bundle/ChillPersonBundle/CRUD/Controller/EntityPersonCRUDController.php + + - + message: "#^Call to an undefined method Symfony\\\\Component\\\\DependencyInjection\\\\Extension\\\\ExtensionInterface\\:\\:addWidgetFactory\\(\\)\\.$#" + count: 1 + path: src/Bundle/ChillPersonBundle/ChillPersonBundle.php + + - + message: "#^Iterating over an object of an unknown class Chill\\\\PersonBundle\\\\Actions\\\\Remove\\\\type\\.$#" + count: 2 + path: src/Bundle/ChillPersonBundle/Command/ChillPersonMoveCommand.php + + - + message: "#^PHPDoc tag @var for property Chill\\\\PersonBundle\\\\Command\\\\ImportSocialWorkMetadata\\:\\:\\$importer with type Psr\\\\Log\\\\LoggerInterface is not subtype of native type Chill\\\\PersonBundle\\\\Service\\\\Import\\\\ChillImporter\\.$#" + count: 1 + path: src/Bundle/ChillPersonBundle/Command/ImportSocialWorkMetadata.php + + - + message: "#^Method Symfony\\\\Contracts\\\\EventDispatcher\\\\EventDispatcherInterface\\:\\:dispatch\\(\\) invoked with 2 parameters, 1 required\\.$#" + count: 1 + path: src/Bundle/ChillPersonBundle/Controller/AccompanyingCourseApiController.php + + - + message: "#^Property Chill\\\\PersonBundle\\\\Controller\\\\AccompanyingCourseApiController\\:\\:\\$accompanyingPeriodACLAwareRepository is never read, only written\\.$#" + count: 1 + path: src/Bundle/ChillPersonBundle/Controller/AccompanyingCourseApiController.php + + - + message: "#^Variable \\$accompanyingPeriod in PHPDoc tag @var does not match assigned variable \\$action\\.$#" + count: 1 + path: src/Bundle/ChillPersonBundle/Controller/AccompanyingCourseApiController.php + + - + message: "#^Strict comparison using \\!\\=\\= between null and Doctrine\\\\Common\\\\Collections\\\\Collection will always evaluate to true\\.$#" + count: 1 + path: src/Bundle/ChillPersonBundle/Controller/AccompanyingCourseController.php + + - + message: "#^Strict comparison using \\=\\=\\= between null and Chill\\\\PersonBundle\\\\Entity\\\\AccompanyingPeriod will always evaluate to false\\.$#" + count: 1 + path: src/Bundle/ChillPersonBundle/Controller/AccompanyingCourseController.php + + - + message: "#^Call to an undefined method Symfony\\\\Component\\\\Serializer\\\\SerializerInterface\\:\\:normalize\\(\\)\\.$#" + count: 2 + path: src/Bundle/ChillPersonBundle/Controller/AccompanyingCourseWorkController.php + + - + message: "#^Method Chill\\\\PersonBundle\\\\Controller\\\\AccompanyingCourseWorkController\\:\\:createDeleteForm\\(\\) should return Symfony\\\\Component\\\\Form\\\\Form but returns Symfony\\\\Component\\\\Form\\\\FormInterface\\.$#" + count: 1 + path: src/Bundle/ChillPersonBundle/Controller/AccompanyingCourseWorkController.php + + - + message: "#^Strict comparison using \\=\\=\\= between null and Chill\\\\PersonBundle\\\\Entity\\\\AccompanyingPeriod\\\\AccompanyingPeriodWork will always evaluate to false\\.$#" + count: 1 + path: src/Bundle/ChillPersonBundle/Controller/AccompanyingCourseWorkController.php + + - + message: "#^Call to an undefined method Psr\\\\Container\\\\ContainerInterface\\:\\:getParameter\\(\\)\\.$#" + count: 1 + path: src/Bundle/ChillPersonBundle/Controller/AccompanyingPeriodController.php + + - + message: "#^Method Symfony\\\\Component\\\\Form\\\\FormInterface\\:\\:isValid\\(\\) invoked with 1 parameter, 0 required\\.$#" + count: 2 + path: src/Bundle/ChillPersonBundle/Controller/AccompanyingPeriodController.php + + - + message: "#^Method Symfony\\\\Contracts\\\\EventDispatcher\\\\EventDispatcherInterface\\:\\:dispatch\\(\\) invoked with 2 parameters, 1 required\\.$#" + count: 1 + path: src/Bundle/ChillPersonBundle/Controller/AccompanyingPeriodController.php + + - + message: "#^Strict comparison using \\=\\=\\= between null and Chill\\\\PersonBundle\\\\Entity\\\\AccompanyingPeriod will always evaluate to false\\.$#" + count: 2 + path: src/Bundle/ChillPersonBundle/Controller/AccompanyingPeriodController.php + + - + message: "#^Call to an undefined method Symfony\\\\Component\\\\HttpFoundation\\\\Session\\\\SessionInterface\\:\\:getFlashBag\\(\\)\\.$#" + count: 2 + path: src/Bundle/ChillPersonBundle/Controller/HouseholdCompositionController.php + + - + message: "#^Call to an undefined method Doctrine\\\\Common\\\\Collections\\\\Collection&iterable\\\\:\\:initialize\\(\\)\\.$#" + count: 1 + path: src/Bundle/ChillPersonBundle/Controller/HouseholdController.php + + - + message: "#^Call to an undefined method Doctrine\\\\Persistence\\\\ObjectRepository\\\\:\\:findById\\(\\)\\.$#" + count: 1 + path: src/Bundle/ChillPersonBundle/Controller/HouseholdMemberController.php + + - + message: "#^Call to an undefined method Symfony\\\\Component\\\\Serializer\\\\SerializerInterface\\:\\:normalize\\(\\)\\.$#" + count: 3 + path: src/Bundle/ChillPersonBundle/Controller/HouseholdMemberController.php + + - + message: "#^Elseif condition is always true\\.$#" + count: 2 + path: src/Bundle/ChillPersonBundle/Controller/PersonAddressController.php + + - + message: "#^Method Chill\\\\PersonBundle\\\\Controller\\\\PersonAddressController\\:\\:createCreateForm\\(\\) should return Symfony\\\\Component\\\\Form\\\\Form but returns Symfony\\\\Component\\\\Form\\\\FormInterface\\.$#" + count: 1 + path: src/Bundle/ChillPersonBundle/Controller/PersonAddressController.php + + - + message: "#^Method Chill\\\\PersonBundle\\\\Controller\\\\PersonAddressController\\:\\:createEditForm\\(\\) should return Symfony\\\\Component\\\\Form\\\\Form but returns Symfony\\\\Component\\\\Form\\\\FormInterface\\.$#" + count: 1 + path: src/Bundle/ChillPersonBundle/Controller/PersonAddressController.php + + - + message: "#^PHPDoc tag @param for parameter \\$person with type Chill\\\\PersonBundle\\\\Controller\\\\Chill\\\\PersonBundle\\\\Entity\\\\Person is not subtype of native type Chill\\\\PersonBundle\\\\Entity\\\\Person\\.$#" + count: 1 + path: src/Bundle/ChillPersonBundle/Controller/PersonAddressController.php + + - + message: "#^Parameter \\$person of method Chill\\\\PersonBundle\\\\Controller\\\\PersonAddressController\\:\\:validatePerson\\(\\) has invalid type Chill\\\\PersonBundle\\\\Controller\\\\Chill\\\\PersonBundle\\\\Entity\\\\Person\\.$#" + count: 1 + path: src/Bundle/ChillPersonBundle/Controller/PersonAddressController.php + + - + message: "#^Call to an undefined method Doctrine\\\\ORM\\\\EntityRepository\\\\:\\:findOneByEntity\\(\\)\\.$#" + count: 1 + path: src/Bundle/ChillPersonBundle/Controller/PersonController.php + + - + message: "#^Call to an undefined method Symfony\\\\Component\\\\Form\\\\FormInterface\\:\\:isClicked\\(\\)\\.$#" + count: 3 + path: src/Bundle/ChillPersonBundle/Controller/PersonController.php + + - + message: "#^Call to an undefined method Symfony\\\\Component\\\\Security\\\\Core\\\\User\\\\UserInterface\\:\\:getGroupCenters\\(\\)\\.$#" + count: 2 + path: src/Bundle/ChillPersonBundle/Controller/PersonController.php + + - + message: "#^Method Chill\\\\PersonBundle\\\\Controller\\\\PersonController\\:\\:_validatePersonAndAccompanyingPeriod\\(\\) is unused\\.$#" + count: 1 + path: src/Bundle/ChillPersonBundle/Controller/PersonController.php + + - + message: "#^Method Symfony\\\\Contracts\\\\EventDispatcher\\\\EventDispatcherInterface\\:\\:dispatch\\(\\) invoked with 2 parameters, 1 required\\.$#" + count: 2 + path: src/Bundle/ChillPersonBundle/Controller/PersonController.php + + - + message: "#^Property Chill\\\\PersonBundle\\\\Controller\\\\PersonController\\:\\:\\$logger is never read, only written\\.$#" + count: 1 + path: src/Bundle/ChillPersonBundle/Controller/PersonController.php + + - + message: "#^Strict comparison using \\=\\=\\= between null and Chill\\\\PersonBundle\\\\Entity\\\\Person will always evaluate to false\\.$#" + count: 2 + path: src/Bundle/ChillPersonBundle/Controller/PersonController.php + + - + message: "#^Access to an undefined property Chill\\\\PersonBundle\\\\Entity\\\\Person\\:\\:\\$counters\\.$#" + count: 2 + path: src/Bundle/ChillPersonBundle/Controller/PersonDuplicateController.php + + - + message: "#^Call to an undefined method Doctrine\\\\Persistence\\\\ObjectRepository\\\\:\\:countByParameters\\(\\)\\.$#" + count: 1 + path: src/Bundle/ChillPersonBundle/Controller/PersonDuplicateController.php + + - + message: "#^Cannot access property \\$getId on null\\.$#" + count: 1 + path: src/Bundle/ChillPersonBundle/Controller/PersonDuplicateController.php + + - + message: "#^Iterating over an object of an unknown class Chill\\\\PersonBundle\\\\Actions\\\\Remove\\\\type\\.$#" + count: 1 + path: src/Bundle/ChillPersonBundle/Controller/PersonDuplicateController.php + + - + message: "#^Method Chill\\\\PersonBundle\\\\Controller\\\\PersonDuplicateController\\:\\:_getCounters\\(\\) never returns null so it can be removed from the return type\\.$#" + count: 1 + path: src/Bundle/ChillPersonBundle/Controller/PersonDuplicateController.php + + - + message: "#^Method Symfony\\\\Contracts\\\\EventDispatcher\\\\EventDispatcherInterface\\:\\:dispatch\\(\\) invoked with 2 parameters, 1 required\\.$#" + count: 1 + path: src/Bundle/ChillPersonBundle/Controller/PersonDuplicateController.php + + - + message: "#^Property Chill\\\\PersonBundle\\\\Controller\\\\PersonDuplicateController\\:\\:\\$translator \\(Symfony\\\\Component\\\\Translation\\\\TranslatorInterface\\) does not accept Symfony\\\\Contracts\\\\Translation\\\\TranslatorInterface\\.$#" + count: 1 + path: src/Bundle/ChillPersonBundle/Controller/PersonDuplicateController.php + + - + message: "#^Property Chill\\\\PersonBundle\\\\Controller\\\\PersonDuplicateController\\:\\:\\$translator is never read, only written\\.$#" + count: 1 + path: src/Bundle/ChillPersonBundle/Controller/PersonDuplicateController.php + + - + message: "#^Call to function is_int\\(\\) with int will always evaluate to true\\.$#" + count: 1 + path: src/Bundle/ChillPersonBundle/Controller/ReassignAccompanyingPeriodController.php + + - + message: "#^Property Chill\\\\PersonBundle\\\\Controller\\\\ReassignAccompanyingPeriodController\\:\\:\\$userRender is never read, only written\\.$#" + count: 1 + path: src/Bundle/ChillPersonBundle/Controller/ReassignAccompanyingPeriodController.php + + - + message: "#^Property Chill\\\\PersonBundle\\\\Controller\\\\RelationshipApiController\\:\\:\\$validator is never read, only written\\.$#" + count: 1 + path: src/Bundle/ChillPersonBundle/Controller/RelationshipApiController.php + + - + message: "#^Property Chill\\\\PersonBundle\\\\Controller\\\\SocialWorkGoalApiController\\:\\:\\$paginator is never read, only written\\.$#" + count: 1 + path: src/Bundle/ChillPersonBundle/Controller/SocialWorkGoalApiController.php + + - + message: "#^Method Symfony\\\\Contracts\\\\EventDispatcher\\\\EventDispatcherInterface\\:\\:dispatch\\(\\) invoked with 2 parameters, 1 required\\.$#" + count: 1 + path: src/Bundle/ChillPersonBundle/Controller/TimelinePersonController.php + + - + message: "#^Unreachable statement \\- code above always terminates\\.$#" + count: 1 + path: src/Bundle/ChillPersonBundle/DataFixtures/ORM/LoadAccompanyingPeriodNotifications.php + + - + message: "#^Invalid array key type array\\\\.$#" + count: 1 + path: src/Bundle/ChillPersonBundle/DataFixtures/ORM/LoadRelationships.php + + - + message: "#^Call to an undefined method Symfony\\\\Component\\\\Config\\\\Definition\\\\Builder\\\\NodeDefinition\\:\\:canBeDisabled\\(\\)\\.$#" + count: 1 + path: src/Bundle/ChillPersonBundle/DependencyInjection/Configuration.php + + - + message: "#^Call to an undefined method Symfony\\\\Component\\\\Config\\\\Definition\\\\Builder\\\\NodeDefinition\\:\\:values\\(\\)\\.$#" + count: 1 + path: src/Bundle/ChillPersonBundle/DependencyInjection/Configuration.php + + - + message: "#^Method Symfony\\\\Component\\\\Config\\\\Definition\\\\Builder\\\\TreeBuilder\\:\\:getRootNode\\(\\) invoked with 1 parameter, 0 required\\.$#" + count: 2 + path: src/Bundle/ChillPersonBundle/DependencyInjection/Configuration.php + + - + message: "#^Property Chill\\\\PersonBundle\\\\Doctrine\\\\DQL\\\\AddressPart\\:\\:\\$part is unused\\.$#" + count: 1 + path: src/Bundle/ChillPersonBundle/Doctrine/DQL/AddressPart.php + + - + message: "#^Result of method Doctrine\\\\ORM\\\\Query\\\\Parser\\:\\:match\\(\\) \\(void\\) is used\\.$#" + count: 1 + path: src/Bundle/ChillPersonBundle/Doctrine/DQL/AddressPart.php + + - + message: "#^Call to an undefined method Doctrine\\\\Common\\\\Collections\\\\Collection&iterable\\\\:\\:matching\\(\\)\\.$#" + count: 1 + path: src/Bundle/ChillPersonBundle/Entity/AccompanyingPeriod.php + + - + message: "#^Call to an undefined method Doctrine\\\\Common\\\\Collections\\\\Collection\\:\\:matching\\(\\)\\.$#" + count: 2 + path: src/Bundle/ChillPersonBundle/Entity/AccompanyingPeriod.php + + - + message: "#^Instanceof between Chill\\\\PersonBundle\\\\Entity\\\\Person and Chill\\\\PersonBundle\\\\Entity\\\\Person will always evaluate to true\\.$#" + count: 1 + path: src/Bundle/ChillPersonBundle/Entity/AccompanyingPeriod.php + + + - + message: "#^Method Chill\\\\PersonBundle\\\\Entity\\\\AccompanyingPeriod\\:\\:getCreatedAt\\(\\) should return DateTime\\|null but returns DateTimeInterface\\|null\\.$#" + count: 1 + path: src/Bundle/ChillPersonBundle/Entity/AccompanyingPeriod.php + + - + message: "#^Method Chill\\\\PersonBundle\\\\Entity\\\\AccompanyingPeriod\\:\\:getRecursiveSocialActions\\(\\) has invalid return type Chill\\\\PersonBundle\\\\Entity\\\\SocialAction\\.$#" + count: 1 + path: src/Bundle/ChillPersonBundle/Entity/AccompanyingPeriod.php + + - + message: "#^Method Chill\\\\PersonBundle\\\\Entity\\\\AccompanyingPeriod\\:\\:getRecursiveSocialIssues\\(\\) has invalid return type Chill\\\\PersonBundle\\\\Entity\\\\SocialIssues\\.$#" + count: 1 + path: src/Bundle/ChillPersonBundle/Entity/AccompanyingPeriod.php + + - + message: "#^Negated boolean expression is always true\\.$#" + count: 2 + path: src/Bundle/ChillPersonBundle/Entity/AccompanyingPeriod.php + + - + message: "#^PHPDoc tag @return with type array\\ is incompatible with native type Doctrine\\\\Common\\\\Collections\\\\Collection\\.$#" + count: 1 + path: src/Bundle/ChillPersonBundle/Entity/AccompanyingPeriod.php + + - + message: "#^PHPDoc tag @return with type iterable is not subtype of native type Doctrine\\\\Common\\\\Collections\\\\Collection\\.$#" + count: 1 + path: src/Bundle/ChillPersonBundle/Entity/AccompanyingPeriod.php + + - + message: "#^Property Chill\\\\PersonBundle\\\\Entity\\\\AccompanyingPeriod\\:\\:\\$updatedAt is never read, only written\\.$#" + count: 1 + path: src/Bundle/ChillPersonBundle/Entity/AccompanyingPeriod.php + + - + message: "#^Property Chill\\\\PersonBundle\\\\Entity\\\\AccompanyingPeriod\\:\\:\\$updatedBy is never read, only written\\.$#" + count: 1 + path: src/Bundle/ChillPersonBundle/Entity/AccompanyingPeriod.php + + - + message: "#^Strict comparison using \\=\\=\\= between null and Chill\\\\PersonBundle\\\\Entity\\\\AccompanyingPeriod\\\\AccompanyingPeriodStepHistory will always evaluate to false\\.$#" + count: 1 + path: src/Bundle/ChillPersonBundle/Entity/AccompanyingPeriod.php + + - + message: "#^Unreachable statement \\- code above always terminates\\.$#" + count: 1 + path: src/Bundle/ChillPersonBundle/Entity/AccompanyingPeriod.php + + - + message: "#^Property Chill\\\\PersonBundle\\\\Entity\\\\AccompanyingPeriod\\\\AccompanyingPeriodWork\\:\\:\\$createdAt \\(DateTimeImmutable\\|null\\) does not accept DateTimeInterface\\.$#" + count: 1 + path: src/Bundle/ChillPersonBundle/Entity/AccompanyingPeriod/AccompanyingPeriodWork.php + + - + message: "#^Property Chill\\\\PersonBundle\\\\Entity\\\\AccompanyingPeriod\\\\AccompanyingPeriodWork\\:\\:\\$endDate \\(DateTimeImmutable\\|null\\) does not accept DateTimeInterface\\|null\\.$#" + count: 1 + path: src/Bundle/ChillPersonBundle/Entity/AccompanyingPeriod/AccompanyingPeriodWork.php + + - + message: "#^Property Chill\\\\PersonBundle\\\\Entity\\\\AccompanyingPeriod\\\\AccompanyingPeriodWork\\:\\:\\$startDate \\(DateTimeImmutable\\|null\\) does not accept DateTimeInterface\\.$#" + count: 1 + path: src/Bundle/ChillPersonBundle/Entity/AccompanyingPeriod/AccompanyingPeriodWork.php + + - + message: "#^Property Chill\\\\PersonBundle\\\\Entity\\\\AccompanyingPeriod\\\\AccompanyingPeriodWork\\:\\:\\$updatedAt \\(DateTimeImmutable\\|null\\) does not accept DateTimeInterface\\.$#" + count: 1 + path: src/Bundle/ChillPersonBundle/Entity/AccompanyingPeriod/AccompanyingPeriodWork.php + + - + message: "#^PHPDoc tag @param for parameter \\$createdAt with type DateTimeImmutable\\|null is not subtype of native type DateTimeInterface\\.$#" + count: 1 + path: src/Bundle/ChillPersonBundle/Entity/AccompanyingPeriod/AccompanyingPeriodWorkEvaluation.php + + - + message: "#^PHPDoc tag @param for parameter \\$updatedAt with type DateTimeImmutable\\|null is not subtype of native type DateTimeInterface\\.$#" + count: 1 + path: src/Bundle/ChillPersonBundle/Entity/AccompanyingPeriod/AccompanyingPeriodWorkEvaluation.php + + - + message: "#^Property Chill\\\\PersonBundle\\\\Entity\\\\AccompanyingPeriod\\\\AccompanyingPeriodWorkEvaluation\\:\\:\\$createdAt \\(DateTimeImmutable\\|null\\) does not accept DateTimeInterface\\.$#" + count: 1 + path: src/Bundle/ChillPersonBundle/Entity/AccompanyingPeriod/AccompanyingPeriodWorkEvaluation.php + + - + message: "#^Property Chill\\\\PersonBundle\\\\Entity\\\\AccompanyingPeriod\\\\AccompanyingPeriodWorkEvaluation\\:\\:\\$updatedAt \\(DateTimeImmutable\\|null\\) does not accept DateTimeInterface\\.$#" + count: 1 + path: src/Bundle/ChillPersonBundle/Entity/AccompanyingPeriod/AccompanyingPeriodWorkEvaluation.php + + - + message: "#^Property Chill\\\\PersonBundle\\\\Entity\\\\AccompanyingPeriod\\\\Comment\\:\\:\\$id is never written, only read\\.$#" + count: 1 + path: src/Bundle/ChillPersonBundle/Entity/AccompanyingPeriod/Comment.php + + - + message: "#^Method Chill\\\\PersonBundle\\\\Entity\\\\AccompanyingPeriodParticipation\\:\\:checkSameStartEnd\\(\\) is unused\\.$#" + count: 1 + path: src/Bundle/ChillPersonBundle/Entity/AccompanyingPeriodParticipation.php + + - + message: "#^Call to an undefined method Doctrine\\\\Common\\\\Collections\\\\Collection&iterable\\\\:\\:matching\\(\\)\\.$#" + count: 3 + path: src/Bundle/ChillPersonBundle/Entity/Household/Household.php + + - + message: "#^Call to an undefined method Doctrine\\\\Common\\\\Collections\\\\Collection\\:\\:matching\\(\\)\\.$#" + count: 5 + path: src/Bundle/ChillPersonBundle/Entity/Household/Household.php + + - + message: "#^Call to an undefined method Traversable\\<\\(int\\|string\\), mixed\\>\\:\\:uasort\\(\\)\\.$#" + count: 1 + path: src/Bundle/ChillPersonBundle/Entity/Household/Household.php + + - + message: "#^Cannot call method filter\\(\\) on array\\\\.$#" + count: 1 + path: src/Bundle/ChillPersonBundle/Entity/Household/Household.php + + - + message: "#^Cannot call method toArray\\(\\) on array\\\\.$#" + count: 1 + path: src/Bundle/ChillPersonBundle/Entity/Household/Household.php + + - + message: "#^Method Chill\\\\PersonBundle\\\\Entity\\\\Household\\\\Household\\:\\:getAddresses\\(\\) should return array\\ but returns Doctrine\\\\Common\\\\Collections\\\\Collection\\.$#" + count: 1 + path: src/Bundle/ChillPersonBundle/Entity/Household/Household.php + + - + message: "#^PHPDoc tag @return with type array\\ is incompatible with native type Doctrine\\\\Common\\\\Collections\\\\Collection\\.$#" + count: 1 + path: src/Bundle/ChillPersonBundle/Entity/Household/Household.php + + - + message: "#^PHPDoc tag @return with type array\\ is incompatible with native type Doctrine\\\\Common\\\\Collections\\\\Collection\\.$#" + count: 1 + path: src/Bundle/ChillPersonBundle/Entity/Household/Household.php + + - + message: "#^Strict comparison using \\!\\=\\= between null and Chill\\\\PersonBundle\\\\Entity\\\\Household\\\\HouseholdMember will always evaluate to true\\.$#" + count: 1 + path: src/Bundle/ChillPersonBundle/Entity/Household/Household.php + + - + message: "#^Strict comparison using \\=\\=\\= between null and int will always evaluate to false\\.$#" + count: 2 + path: src/Bundle/ChillPersonBundle/Entity/Household/Household.php + + - + message: "#^Property Chill\\\\PersonBundle\\\\Entity\\\\Household\\\\PersonHouseholdAddress\\:\\:\\$address is never written, only read\\.$#" + count: 1 + path: src/Bundle/ChillPersonBundle/Entity/Household/PersonHouseholdAddress.php + + - + message: "#^Property Chill\\\\PersonBundle\\\\Entity\\\\Household\\\\PersonHouseholdAddress\\:\\:\\$household is never written, only read\\.$#" + count: 1 + path: src/Bundle/ChillPersonBundle/Entity/Household/PersonHouseholdAddress.php + + - + message: "#^Property Chill\\\\PersonBundle\\\\Entity\\\\Household\\\\PersonHouseholdAddress\\:\\:\\$person is never written, only read\\.$#" + count: 1 + path: src/Bundle/ChillPersonBundle/Entity/Household/PersonHouseholdAddress.php + + - + message: "#^Property Chill\\\\PersonBundle\\\\Entity\\\\Household\\\\PersonHouseholdAddress\\:\\:\\$validFrom is never written, only read\\.$#" + count: 1 + path: src/Bundle/ChillPersonBundle/Entity/Household/PersonHouseholdAddress.php + + - + message: "#^Property Chill\\\\PersonBundle\\\\Entity\\\\Household\\\\PersonHouseholdAddress\\:\\:\\$validTo is never written, only read\\.$#" + count: 1 + path: src/Bundle/ChillPersonBundle/Entity/Household/PersonHouseholdAddress.php + + - + message: "#^PHPDoc tag @param has invalid value \\(string array \\$name\\)\\: Unexpected token \"array\", expected variable at offset 49$#" + count: 1 + path: src/Bundle/ChillPersonBundle/Entity/MaritalStatus.php + + - + message: "#^PHPDoc tag @return with type string is incompatible with native type array\\.$#" + count: 1 + path: src/Bundle/ChillPersonBundle/Entity/MaritalStatus.php + + - + message: "#^Call to an undefined method Doctrine\\\\Common\\\\Collections\\\\Collection&iterable\\\\:\\:matching\\(\\)\\.$#" + count: 1 + path: src/Bundle/ChillPersonBundle/Entity/Person.php + + - + message: "#^Call to an undefined method Doctrine\\\\Common\\\\Collections\\\\Collection&iterable\\\\:\\:matching\\(\\)\\.$#" + count: 3 + path: src/Bundle/ChillPersonBundle/Entity/Person.php + + - + message: "#^Call to an undefined method Doctrine\\\\Common\\\\Collections\\\\Collection&iterable\\\\:\\:matching\\(\\)\\.$#" + count: 1 + path: src/Bundle/ChillPersonBundle/Entity/Person.php + + - + message: "#^Call to an undefined method Doctrine\\\\Common\\\\Collections\\\\Collection\\:\\:matching\\(\\)\\.$#" + count: 1 + path: src/Bundle/ChillPersonBundle/Entity/Person.php + + - + message: "#^Instanceof between DateTime and DateTimeInterface will always evaluate to true\\.$#" + count: 1 + path: src/Bundle/ChillPersonBundle/Entity/Person.php + + - + message: "#^Negated boolean expression is always true\\.$#" + count: 3 + path: src/Bundle/ChillPersonBundle/Entity/Person.php + + - + message: "#^PHPDoc tag @return with type array\\ is incompatible with native type Doctrine\\\\Common\\\\Collections\\\\Collection\\.$#" + count: 1 + path: src/Bundle/ChillPersonBundle/Entity/Person.php + + - + message: "#^Property Chill\\\\PersonBundle\\\\Entity\\\\Person\\:\\:\\$calendars is unused\\.$#" + count: 1 + path: src/Bundle/ChillPersonBundle/Entity/Person.php + + - + message: "#^Property Chill\\\\PersonBundle\\\\Entity\\\\Person\\:\\:\\$center is never read, only written\\.$#" + count: 1 + path: src/Bundle/ChillPersonBundle/Entity/Person.php + + - + message: "#^Property Chill\\\\PersonBundle\\\\Entity\\\\Person\\:\\:\\$currentHouseholdAt is never read, only written\\.$#" + count: 1 + path: src/Bundle/ChillPersonBundle/Entity/Person.php + + - + message: "#^Property Chill\\\\PersonBundle\\\\Entity\\\\Person\\:\\:\\$deathdate \\(DateTimeImmutable\\|null\\) does not accept DateTimeInterface\\|null\\.$#" + count: 1 + path: src/Bundle/ChillPersonBundle/Entity/Person.php + + - + message: "#^Property Chill\\\\PersonBundle\\\\Entity\\\\Person\\:\\:\\$maritalStatusDate \\(DateTime\\|null\\) does not accept DateTimeInterface\\|null\\.$#" + count: 1 + path: src/Bundle/ChillPersonBundle/Entity/Person.php + + - + message: "#^Property Chill\\\\PersonBundle\\\\Entity\\\\Person\\:\\:\\$periodLocatedOn is never read, only written\\.$#" + count: 1 + path: src/Bundle/ChillPersonBundle/Entity/Person.php + + - + message: "#^Property Chill\\\\PersonBundle\\\\Entity\\\\Person\\:\\:\\$proxyAccompanyingPeriodOpenState is never read, only written\\.$#" + count: 1 + path: src/Bundle/ChillPersonBundle/Entity/Person.php + + - + message: "#^Property Chill\\\\PersonBundle\\\\Entity\\\\Person\\:\\:\\$spokenLanguages \\(Doctrine\\\\Common\\\\Collections\\\\ArrayCollection\\) does not accept Doctrine\\\\Common\\\\Collections\\\\Collection\\.$#" + count: 1 + path: src/Bundle/ChillPersonBundle/Entity/Person.php + + - + message: "#^Strict comparison using \\=\\=\\= between true and Chill\\\\PersonBundle\\\\Entity\\\\AccompanyingPeriodParticipation\\|null will always evaluate to false\\.$#" + count: 1 + path: src/Bundle/ChillPersonBundle/Entity/Person.php + + - + message: "#^Unreachable statement \\- code above always terminates\\.$#" + count: 1 + path: src/Bundle/ChillPersonBundle/Entity/Person.php + + - + message: "#^Property Chill\\\\PersonBundle\\\\Entity\\\\Person\\\\PersonResource\\:\\:\\$id is never written, only read\\.$#" + count: 1 + path: src/Bundle/ChillPersonBundle/Entity/Person/PersonResource.php + + - + message: "#^Property Chill\\\\PersonBundle\\\\Entity\\\\Person\\\\ResidentialAddress\\:\\:\\$id is never written, only read\\.$#" + count: 1 + path: src/Bundle/ChillPersonBundle/Entity/Person/ResidentialAddress.php + + - + message: "#^Property Chill\\\\PersonBundle\\\\Entity\\\\PersonAltName\\:\\:\\$id is never written, only read\\.$#" + count: 1 + path: src/Bundle/ChillPersonBundle/Entity/PersonAltName.php + + - + message: "#^Property Chill\\\\PersonBundle\\\\Entity\\\\PersonPhone\\:\\:\\$id is never written, only read\\.$#" + count: 1 + path: src/Bundle/ChillPersonBundle/Entity/PersonPhone.php + + - + message: "#^Property Chill\\\\PersonBundle\\\\Entity\\\\Relationships\\\\Relationship\\:\\:\\$createdAt \\(DateTimeImmutable\\|null\\) does not accept DateTimeInterface\\.$#" + count: 1 + path: src/Bundle/ChillPersonBundle/Entity/Relationships/Relationship.php + + - + message: "#^Property Chill\\\\PersonBundle\\\\Entity\\\\Relationships\\\\Relationship\\:\\:\\$updatedAt \\(DateTimeImmutable\\|null\\) does not accept DateTimeInterface\\|null\\.$#" + count: 1 + path: src/Bundle/ChillPersonBundle/Entity/Relationships/Relationship.php + + - + message: "#^Property Chill\\\\PersonBundle\\\\Entity\\\\SocialWork\\\\Result\\:\\:\\$desactivationDate \\(DateTime\\|null\\) does not accept DateTimeInterface\\|null\\.$#" + count: 1 + path: src/Bundle/ChillPersonBundle/Entity/SocialWork/Result.php + + - + message: "#^If condition is always false\\.$#" + count: 2 + path: src/Bundle/ChillPersonBundle/Entity/SocialWork/SocialAction.php + + - + message: "#^Negated boolean expression is always true\\.$#" + count: 2 + path: src/Bundle/ChillPersonBundle/Entity/SocialWork/SocialAction.php + + - + message: "#^Call to an undefined method Chill\\\\PersonBundle\\\\Entity\\\\SocialWork\\\\SocialAction\\:\\:getSocialIssue\\(\\)\\.$#" + count: 1 + path: src/Bundle/ChillPersonBundle/Entity/SocialWork/SocialIssue.php + + - + message: "#^Call to an undefined method Chill\\\\PersonBundle\\\\Entity\\\\SocialWork\\\\SocialAction\\:\\:setSocialIssue\\(\\)\\.$#" + count: 2 + path: src/Bundle/ChillPersonBundle/Entity/SocialWork/SocialIssue.php + + - + message: "#^If condition is always false\\.$#" + count: 2 + path: src/Bundle/ChillPersonBundle/Entity/SocialWork/SocialIssue.php + + - + message: "#^Negated boolean expression is always true\\.$#" + count: 4 + path: src/Bundle/ChillPersonBundle/Entity/SocialWork/SocialIssue.php + + - + message: "#^Property Chill\\\\PersonBundle\\\\Entity\\\\SocialWork\\\\SocialIssue\\:\\:\\$id is never written, only read\\.$#" + count: 1 + path: src/Bundle/ChillPersonBundle/Entity/SocialWork/SocialIssue.php + + - + message: "#^Strict comparison using \\=\\=\\= between DateTimeImmutable and null will always evaluate to false\\.$#" + count: 1 + path: src/Bundle/ChillPersonBundle/Event/Person/PersonAddressMoveEvent.php + + - + message: "#^Strict comparison using \\=\\=\\= between null and DateTimeImmutable will always evaluate to false\\.$#" + count: 1 + path: src/Bundle/ChillPersonBundle/Event/Person/PersonAddressMoveEvent.php + + - + message: "#^Property Chill\\\\PersonBundle\\\\Export\\\\Aggregator\\\\AccompanyingCourseAggregators\\\\DurationAggregator\\:\\:\\$translator is never read, only written\\.$#" + count: 1 + path: src/Bundle/ChillPersonBundle/Export/Aggregator/AccompanyingCourseAggregators/DurationAggregator.php + + - + message: "#^Property Chill\\\\PersonBundle\\\\Export\\\\Aggregator\\\\EvaluationAggregators\\\\ByEndDateAggregator\\:\\:\\$translator is unused\\.$#" + count: 1 + path: src/Bundle/ChillPersonBundle/Export/Aggregator/EvaluationAggregators/ByEndDateAggregator.php + + - + message: "#^Property Chill\\\\PersonBundle\\\\Export\\\\Aggregator\\\\EvaluationAggregators\\\\ByMaxDateAggregator\\:\\:\\$translator is unused\\.$#" + count: 1 + path: src/Bundle/ChillPersonBundle/Export/Aggregator/EvaluationAggregators/ByMaxDateAggregator.php + + - + message: "#^Property Chill\\\\PersonBundle\\\\Export\\\\Aggregator\\\\EvaluationAggregators\\\\ByStartDateAggregator\\:\\:\\$translator is unused\\.$#" + count: 1 + path: src/Bundle/ChillPersonBundle/Export/Aggregator/EvaluationAggregators/ByStartDateAggregator.php + + - + message: "#^Property Chill\\\\PersonBundle\\\\Export\\\\Aggregator\\\\HouseholdAggregators\\\\ChildrenNumberAggregator\\:\\:\\$translator is never read, only written\\.$#" + count: 1 + path: src/Bundle/ChillPersonBundle/Export/Aggregator/HouseholdAggregators/ChildrenNumberAggregator.php + + - + message: "#^Property Chill\\\\PersonBundle\\\\Export\\\\Export\\\\ListAccompanyingPeriod\\:\\:\\$userHelper is never read, only written\\.$#" + count: 1 + path: src/Bundle/ChillPersonBundle/Export/Export/ListAccompanyingPeriod.php + + - + message: "#^Call to method extractOtherValue\\(\\) on an unknown class Chill\\\\CustomFieldsBundle\\\\Service\\\\CustomFieldInterface\\.$#" + count: 1 + path: src/Bundle/ChillPersonBundle/Export/Export/ListPerson.php + + - + message: "#^Call to method getChoices\\(\\) on an unknown class Chill\\\\CustomFieldsBundle\\\\Service\\\\CustomFieldInterface\\.$#" + count: 2 + path: src/Bundle/ChillPersonBundle/Export/Export/ListPerson.php + + - + message: "#^Call to method isChecked\\(\\) on an unknown class Chill\\\\CustomFieldsBundle\\\\Service\\\\CustomFieldInterface\\.$#" + count: 2 + path: src/Bundle/ChillPersonBundle/Export/Export/ListPerson.php + + - + message: "#^Call to method isMultiple\\(\\) on an unknown class Chill\\\\CustomFieldsBundle\\\\Service\\\\CustomFieldInterface\\.$#" + count: 2 + path: src/Bundle/ChillPersonBundle/Export/Export/ListPerson.php + + - + message: "#^Call to method render\\(\\) on an unknown class Chill\\\\CustomFieldsBundle\\\\Service\\\\CustomFieldInterface\\.$#" + count: 1 + path: src/Bundle/ChillPersonBundle/Export/Export/ListPerson.php + + - + message: "#^Property Chill\\\\PersonBundle\\\\Export\\\\Export\\\\ListPersonDuplicate\\:\\:\\$translator \\(Symfony\\\\Component\\\\Translation\\\\TranslatorInterface\\) does not accept Symfony\\\\Contracts\\\\Translation\\\\TranslatorInterface\\.$#" + count: 1 + path: src/Bundle/ChillPersonBundle/Export/Export/ListPersonDuplicate.php + + - + message: "#^Property Chill\\\\PersonBundle\\\\Export\\\\Filter\\\\AccompanyingCourseFilters\\\\AdministrativeLocationFilter\\:\\:\\$translatableStringHelper is never read, only written\\.$#" + count: 1 + path: src/Bundle/ChillPersonBundle/Export/Filter/AccompanyingCourseFilters/AdministrativeLocationFilter.php + + - + message: "#^Property Chill\\\\PersonBundle\\\\Export\\\\Filter\\\\AccompanyingCourseFilters\\\\SocialActionFilter\\:\\:\\$translatableStringHelper is never read, only written\\.$#" + count: 1 + path: src/Bundle/ChillPersonBundle/Export/Filter/AccompanyingCourseFilters/SocialActionFilter.php + + - + message: "#^Method Chill\\\\PersonBundle\\\\Export\\\\Filter\\\\AccompanyingCourseFilters\\\\UserScopeFilter\\:\\:getUserMainScope\\(\\) is unused\\.$#" + count: 1 + path: src/Bundle/ChillPersonBundle/Export/Filter/AccompanyingCourseFilters/UserScopeFilter.php + + - + message: "#^Property Chill\\\\PersonBundle\\\\Export\\\\Filter\\\\SocialWorkFilters\\\\SocialWorkTypeFilter\\:\\:\\$socialActionRender is never read, only written\\.$#" + count: 1 + path: src/Bundle/ChillPersonBundle/Export/Filter/SocialWorkFilters/SocialWorkTypeFilter.php + + - + message: "#^PHPDoc tag @param for parameter \\$personRepository with type Chill\\\\PersonBundle\\\\Form\\\\ChoiceLoader\\\\EntityRepository is not subtype of native type Chill\\\\PersonBundle\\\\Repository\\\\PersonRepository\\.$#" + count: 1 + path: src/Bundle/ChillPersonBundle/Form/ChoiceLoader/PersonChoiceLoader.php + + - + message: "#^Parameter \\$personRepository of method Chill\\\\PersonBundle\\\\Form\\\\ChoiceLoader\\\\PersonChoiceLoader\\:\\:__construct\\(\\) has invalid type Chill\\\\PersonBundle\\\\Form\\\\ChoiceLoader\\\\EntityRepository\\.$#" + count: 1 + path: src/Bundle/ChillPersonBundle/Form/ChoiceLoader/PersonChoiceLoader.php + + - + message: "#^Method Symfony\\\\Contracts\\\\EventDispatcher\\\\EventDispatcherInterface\\:\\:dispatch\\(\\) invoked with 2 parameters, 1 required\\.$#" + count: 1 + path: src/Bundle/ChillPersonBundle/Form/CreationPersonType.php + + - + message: "#^Call to function is_array\\(\\) with Doctrine\\\\Common\\\\Collections\\\\Collection will always evaluate to false\\.$#" + count: 2 + path: src/Bundle/ChillPersonBundle/Form/DataMapper/PersonAltNameDataMapper.php + + - + message: "#^Call to method getData\\(\\) on an unknown class Chill\\\\PersonBundle\\\\Form\\\\DataMapper\\\\FormInterface\\.$#" + count: 3 + path: src/Bundle/ChillPersonBundle/Form/DataMapper/PersonAltNameDataMapper.php + + - + message: "#^Parameter \\#1 \\$forms \\(array\\\\) of method Chill\\\\PersonBundle\\\\Form\\\\DataMapper\\\\PersonAltNameDataMapper\\:\\:mapFormsToData\\(\\) should be compatible with parameter \\$forms \\(iterable\\&Traversable\\) of method Symfony\\\\Component\\\\Form\\\\DataMapperInterface\\:\\:mapFormsToData\\(\\)$#" + count: 1 + path: src/Bundle/ChillPersonBundle/Form/DataMapper/PersonAltNameDataMapper.php + + - + message: "#^Parameter \\$forms of method Chill\\\\PersonBundle\\\\Form\\\\DataMapper\\\\PersonAltNameDataMapper\\:\\:mapFormsToData\\(\\) has invalid type Chill\\\\PersonBundle\\\\Form\\\\DataMapper\\\\FormInterface\\.$#" + count: 1 + path: src/Bundle/ChillPersonBundle/Form/DataMapper/PersonAltNameDataMapper.php + + - + message: "#^Property Chill\\\\PersonBundle\\\\Form\\\\PersonResourceType\\:\\:\\$personRender is never read, only written\\.$#" + count: 1 + path: src/Bundle/ChillPersonBundle/Form/PersonResourceType.php + + - + message: "#^Property Chill\\\\PersonBundle\\\\Form\\\\PersonResourceType\\:\\:\\$thirdPartyRender is never read, only written\\.$#" + count: 1 + path: src/Bundle/ChillPersonBundle/Form/PersonResourceType.php + + - + message: "#^PHPDoc tag @param for parameter \\$resolver with type Chill\\\\PersonBundle\\\\Form\\\\OptionsResolverInterface is not subtype of native type Symfony\\\\Component\\\\OptionsResolver\\\\OptionsResolver\\.$#" + count: 1 + path: src/Bundle/ChillPersonBundle/Form/PersonType.php + + - + message: "#^Parameter \\$resolver of method Chill\\\\PersonBundle\\\\Form\\\\PersonType\\:\\:configureOptions\\(\\) has invalid type Chill\\\\PersonBundle\\\\Form\\\\OptionsResolverInterface\\.$#" + count: 1 + path: src/Bundle/ChillPersonBundle/Form/PersonType.php + + - + message: "#^Property Chill\\\\PersonBundle\\\\Form\\\\PersonType\\:\\:\\$parameterBag is never read, only written\\.$#" + count: 1 + path: src/Bundle/ChillPersonBundle/Form/PersonType.php + + - + message: "#^Property Chill\\\\PersonBundle\\\\Form\\\\PersonType\\:\\:\\$translatableStringHelper \\(Chill\\\\MainBundle\\\\Templating\\\\TranslatableStringHelper\\) does not accept Chill\\\\MainBundle\\\\Templating\\\\TranslatableStringHelperInterface\\.$#" + count: 1 + path: src/Bundle/ChillPersonBundle/Form/PersonType.php + + - + message: "#^Strict comparison using \\=\\=\\= between 'create' and 'create' will always evaluate to true\\.$#" + count: 1 + path: src/Bundle/ChillPersonBundle/Form/SocialWork/SocialIssueType.php + + - + message: "#^Property Chill\\\\PersonBundle\\\\Form\\\\Type\\\\PickPersonType\\:\\:\\$user \\(Chill\\\\MainBundle\\\\Entity\\\\User\\) does not accept string\\|Stringable\\|Symfony\\\\Component\\\\Security\\\\Core\\\\User\\\\UserInterface\\.$#" + count: 1 + path: src/Bundle/ChillPersonBundle/Form/Type/PickPersonType.php + + - + message: "#^Call to an undefined method Doctrine\\\\Common\\\\Collections\\\\Collection&iterable\\\\:\\:matching\\(\\)\\.$#" + count: 1 + path: src/Bundle/ChillPersonBundle/Household/MembersEditor.php + + - + message: "#^Method Doctrine\\\\Common\\\\Collections\\\\ExpressionBuilder\\:\\:isNull\\(\\) invoked with 2 parameters, 1 required\\.$#" + count: 1 + path: src/Bundle/ChillPersonBundle/Household/MembersEditor.php + + - + message: "#^Cannot call method getId\\(\\) on string\\|Stringable\\|Symfony\\\\Component\\\\Security\\\\Core\\\\User\\\\UserInterface\\.$#" + count: 1 + path: src/Bundle/ChillPersonBundle/Privacy/PrivacyEventSubscriber.php + + - + message: "#^Property Chill\\\\PersonBundle\\\\Repository\\\\AccompanyingPeriod\\\\AccompanyingPeriodWorkGoalRepository\\:\\:\\$repository is never read, only written\\.$#" + count: 1 + path: src/Bundle/ChillPersonBundle/Repository/AccompanyingPeriod/AccompanyingPeriodWorkGoalRepository.php + + - + message: "#^Call to an undefined method Doctrine\\\\ORM\\\\EntityRepository\\:\\:countByAccompanyingPeriod\\(\\)\\.$#" + count: 1 + path: src/Bundle/ChillPersonBundle/Repository/AccompanyingPeriod/AccompanyingPeriodWorkRepository.php + + - + message: "#^Call to an undefined method Doctrine\\\\ORM\\\\EntityRepository\\:\\:findByAccompanyingPeriod\\(\\)\\.$#" + count: 1 + path: src/Bundle/ChillPersonBundle/Repository/AccompanyingPeriod/AccompanyingPeriodWorkRepository.php + + - + message: "#^Property Chill\\\\PersonBundle\\\\Repository\\\\AccompanyingPeriod\\\\CommentRepository\\:\\:\\$repository is never read, only written\\.$#" + count: 1 + path: src/Bundle/ChillPersonBundle/Repository/AccompanyingPeriod/CommentRepository.php + + - + message: "#^Property Chill\\\\PersonBundle\\\\Repository\\\\AccompanyingPeriod\\\\OriginRepository\\:\\:\\$repository is never read, only written\\.$#" + count: 1 + path: src/Bundle/ChillPersonBundle/Repository/AccompanyingPeriod/OriginRepository.php + + - + message: "#^PHPDoc tag @param has invalid value \\(array\\|PostalCode\\[\\]\\)\\: Unexpected token \"\\\\n \\*\", expected variable at offset 36$#" + count: 1 + path: src/Bundle/ChillPersonBundle/Repository/AccompanyingPeriodACLAwareRepository.php + + - + message: "#^Property Chill\\\\PersonBundle\\\\Repository\\\\AccompanyingPeriodParticipationRepository\\:\\:\\$repository is never read, only written\\.$#" + count: 1 + path: src/Bundle/ChillPersonBundle/Repository/AccompanyingPeriodParticipationRepository.php + + - + message: "#^Property Chill\\\\PersonBundle\\\\Repository\\\\Household\\\\HouseholdMembersRepository\\:\\:\\$repository is never read, only written\\.$#" + count: 1 + path: src/Bundle/ChillPersonBundle/Repository/Household/HouseholdMembersRepository.php + + - + message: "#^Method Chill\\\\PersonBundle\\\\Repository\\\\Household\\\\PositionRepository\\:\\:findOneBy\\(\\) should return array\\ but returns object\\|null\\.$#" + count: 1 + path: src/Bundle/ChillPersonBundle/Repository/Household/PositionRepository.php + + - + message: "#^Return type \\(array\\\\) of method Chill\\\\PersonBundle\\\\Repository\\\\Household\\\\PositionRepository\\:\\:findOneBy\\(\\) should be compatible with return type \\(object\\|null\\) of method Doctrine\\\\Persistence\\\\ObjectRepository\\\\:\\:findOneBy\\(\\)$#" + count: 1 + path: src/Bundle/ChillPersonBundle/Repository/Household/PositionRepository.php + + - + message: "#^Property Chill\\\\PersonBundle\\\\Repository\\\\PersonACLAwareRepository\\:\\:\\$countryRepository is never read, only written\\.$#" + count: 1 + path: src/Bundle/ChillPersonBundle/Repository/PersonACLAwareRepository.php + + - + message: "#^Property Chill\\\\PersonBundle\\\\Repository\\\\PersonAltNameRepository\\:\\:\\$repository is never read, only written\\.$#" + count: 1 + path: src/Bundle/ChillPersonBundle/Repository/PersonAltNameRepository.php + + - + message: "#^PHPDoc tag @return with type array\\\\|null is not subtype of native type array\\.$#" + count: 1 + path: src/Bundle/ChillPersonBundle/Repository/ResidentialAddressRepository.php + + - + message: "#^Method Chill\\\\PersonBundle\\\\Search\\\\PersonSearch\\:\\:renderResult\\(\\) should return string but returns array\\\\>\\.$#" + count: 1 + path: src/Bundle/ChillPersonBundle/Search/PersonSearch.php + + - + message: "#^Property Chill\\\\PersonBundle\\\\Search\\\\SearchHouseholdApiProvider\\:\\:\\$authorizationHelper is never read, only written\\.$#" + count: 1 + path: src/Bundle/ChillPersonBundle/Search/SearchHouseholdApiProvider.php + + - + message: "#^Property Chill\\\\PersonBundle\\\\Search\\\\SearchHouseholdApiProvider\\:\\:\\$security is never read, only written\\.$#" + count: 1 + path: src/Bundle/ChillPersonBundle/Search/SearchHouseholdApiProvider.php + + - + message: "#^Property Chill\\\\PersonBundle\\\\Search\\\\SearchPersonApiProvider\\:\\:\\$authorizationHelper is never read, only written\\.$#" + count: 1 + path: src/Bundle/ChillPersonBundle/Search/SearchPersonApiProvider.php + + - + message: "#^Property Chill\\\\PersonBundle\\\\Search\\\\SearchPersonApiProvider\\:\\:\\$security is never read, only written\\.$#" + count: 1 + path: src/Bundle/ChillPersonBundle/Search/SearchPersonApiProvider.php + + - + message: "#^Property Chill\\\\PersonBundle\\\\Security\\\\Authorization\\\\AccompanyingPeriodVoter\\:\\:\\$security is never read, only written\\.$#" + count: 1 + path: src/Bundle/ChillPersonBundle/Security/Authorization/AccompanyingPeriodVoter.php + + - + message: "#^PHPDoc tag @return with type bool\\|void is not subtype of native type bool\\.$#" + count: 1 + path: src/Bundle/ChillPersonBundle/Security/Authorization/AccompanyingPeriodWorkEvaluationDocumentVoter.php + + - + message: "#^Elseif branch is unreachable because previous condition is always true\\.$#" + count: 1 + path: src/Bundle/ChillPersonBundle/Security/Authorization/AccompanyingPeriodWorkVoter.php + + - + message: "#^Instanceof between \\*NEVER\\* and Chill\\\\PersonBundle\\\\Entity\\\\AccompanyingPeriod will always evaluate to false\\.$#" + count: 1 + path: src/Bundle/ChillPersonBundle/Security/Authorization/AccompanyingPeriodWorkVoter.php + + - + message: "#^Instanceof between Chill\\\\PersonBundle\\\\Entity\\\\AccompanyingPeriod\\\\AccompanyingPeriodWork and Chill\\\\PersonBundle\\\\Entity\\\\AccompanyingPeriod\\\\AccompanyingPeriodWork will always evaluate to true\\.$#" + count: 1 + path: src/Bundle/ChillPersonBundle/Security/Authorization/AccompanyingPeriodWorkVoter.php + + - + message: "#^Property Chill\\\\PersonBundle\\\\Security\\\\Authorization\\\\AccompanyingPeriodWorkVoter\\:\\:\\$voterHelper is never read, only written\\.$#" + count: 1 + path: src/Bundle/ChillPersonBundle/Security/Authorization/AccompanyingPeriodWorkVoter.php + + - + message: "#^Unreachable statement \\- code above always terminates\\.$#" + count: 1 + path: src/Bundle/ChillPersonBundle/Security/Authorization/AccompanyingPeriodWorkVoter.php + + - + message: "#^Constant Chill\\\\PersonBundle\\\\Serializer\\\\Normalizer\\\\AccompanyingPeriodDocGenNormalizer\\:\\:IGNORE_FIRST_PASS_KEY is unused\\.$#" + count: 1 + path: src/Bundle/ChillPersonBundle/Serializer/Normalizer/AccompanyingPeriodDocGenNormalizer.php + + - + message: "#^Strict comparison using \\!\\=\\= between Chill\\\\PersonBundle\\\\Entity\\\\Person\\|Chill\\\\ThirdPartyBundle\\\\Entity\\\\ThirdParty and null will always evaluate to true\\.$#" + count: 1 + path: src/Bundle/ChillPersonBundle/Serializer/Normalizer/AccompanyingPeriodDocGenNormalizer.php + + - + message: "#^Strict comparison using \\=\\=\\= between null and null will always evaluate to true\\.$#" + count: 1 + path: src/Bundle/ChillPersonBundle/Serializer/Normalizer/AccompanyingPeriodDocGenNormalizer.php + + - + message: "#^Unreachable statement \\- code above always terminates\\.$#" + count: 1 + path: src/Bundle/ChillPersonBundle/Serializer/Normalizer/AccompanyingPeriodDocGenNormalizer.php + + - + message: "#^Unreachable statement \\- code above always terminates\\.$#" + count: 1 + path: src/Bundle/ChillPersonBundle/Serializer/Normalizer/AccompanyingPeriodParticipationNormalizer.php + + - + message: "#^Property Chill\\\\PersonBundle\\\\Serializer\\\\Normalizer\\\\AccompanyingPeriodWorkDenormalizer\\:\\:\\$em is never read, only written\\.$#" + count: 1 + path: src/Bundle/ChillPersonBundle/Serializer/Normalizer/AccompanyingPeriodWorkDenormalizer.php + + - + message: "#^Property Chill\\\\PersonBundle\\\\Serializer\\\\Normalizer\\\\AccompanyingPeriodWorkDenormalizer\\:\\:\\$workRepository is never read, only written\\.$#" + count: 1 + path: src/Bundle/ChillPersonBundle/Serializer/Normalizer/AccompanyingPeriodWorkDenormalizer.php + + - + message: "#^Property Chill\\\\PersonBundle\\\\Serializer\\\\Normalizer\\\\AccompanyingPeriodWorkEvaluationDocumentNormalizer\\:\\:\\$registry is never read, only written\\.$#" + count: 1 + path: src/Bundle/ChillPersonBundle/Serializer/Normalizer/AccompanyingPeriodWorkEvaluationDocumentNormalizer.php + + - + message: "#^Property Chill\\\\PersonBundle\\\\Serializer\\\\Normalizer\\\\AccompanyingPeriodWorkEvaluationNormalizer\\:\\:\\$registry is never read, only written\\.$#" + count: 1 + path: src/Bundle/ChillPersonBundle/Serializer/Normalizer/AccompanyingPeriodWorkEvaluationNormalizer.php + + - + message: "#^Property Chill\\\\PersonBundle\\\\Serializer\\\\Normalizer\\\\AccompanyingPeriodWorkNormalizer\\:\\:\\$registry is never read, only written\\.$#" + count: 1 + path: src/Bundle/ChillPersonBundle/Serializer/Normalizer/AccompanyingPeriodWorkNormalizer.php + + - + message: "#^Call to function is_array\\(\\) with 'concerned' will always evaluate to false\\.$#" + count: 1 + path: src/Bundle/ChillPersonBundle/Serializer/Normalizer/MembersEditorNormalizer.php + + - + message: "#^Expression on left side of \\?\\? is not nullable\\.$#" + count: 3 + path: src/Bundle/ChillPersonBundle/Serializer/Normalizer/MembersEditorNormalizer.php + + - + message: "#^Left side of && is always false\\.$#" + count: 1 + path: src/Bundle/ChillPersonBundle/Serializer/Normalizer/MembersEditorNormalizer.php + + - + message: "#^Strict comparison using \\=\\=\\= between false and false will always evaluate to true\\.$#" + count: 1 + path: src/Bundle/ChillPersonBundle/Serializer/Normalizer/MembersEditorNormalizer.php + + - + message: "#^Instanceof between Chill\\\\PersonBundle\\\\Entity\\\\Person and Chill\\\\PersonBundle\\\\Entity\\\\Person will always evaluate to true\\.$#" + count: 1 + path: src/Bundle/ChillPersonBundle/Serializer/Normalizer/PersonDocGenNormalizer.php + + - + message: "#^Method Chill\\\\PersonBundle\\\\Serializer\\\\Normalizer\\\\PersonDocGenNormalizer\\:\\:hasGroup\\(\\) is unused\\.$#" + count: 1 + path: src/Bundle/ChillPersonBundle/Serializer/Normalizer/PersonDocGenNormalizer.php + + - + message: "#^Strict comparison using \\=\\=\\= between null and Chill\\\\PersonBundle\\\\Entity\\\\Person will always evaluate to false\\.$#" + count: 1 + path: src/Bundle/ChillPersonBundle/Serializer/Normalizer/PersonDocGenNormalizer.php + + - + message: "#^Property Chill\\\\PersonBundle\\\\Serializer\\\\Normalizer\\\\PersonJsonNormalizer\\:\\:\\$phoneNumberHelper is never read, only written\\.$#" + count: 1 + path: src/Bundle/ChillPersonBundle/Serializer/Normalizer/PersonJsonNormalizer.php + + - + message: "#^Strict comparison using \\=\\=\\= between null and Chill\\\\PersonBundle\\\\Entity\\\\Relationships\\\\Relationship will always evaluate to false\\.$#" + count: 1 + path: src/Bundle/ChillPersonBundle/Serializer/Normalizer/RelationshipDocGenNormalizer.php + + - + message: "#^Method Chill\\\\PersonBundle\\\\Serializer\\\\Normalizer\\\\SocialIssueNormalizer\\:\\:normalize\\(\\) should return array\\|ArrayObject\\|bool\\|float\\|int\\|string\\|null but return statement is missing\\.$#" + count: 1 + path: src/Bundle/ChillPersonBundle/Serializer/Normalizer/SocialIssueNormalizer.php + + - + message: "#^Strict comparison using \\=\\=\\= between null and Chill\\\\PersonBundle\\\\Entity\\\\SocialWork\\\\SocialIssue will always evaluate to false\\.$#" + count: 1 + path: src/Bundle/ChillPersonBundle/Serializer/Normalizer/SocialIssueNormalizer.php + + - + message: "#^PHPDoc tag @return with type array\\|ArrayObject\\|bool\\|float\\|int\\|string\\|void\\|null is not subtype of native type array\\.$#" + count: 1 + path: src/Bundle/ChillPersonBundle/Serializer/Normalizer/WorkflowNormalizer.php + + - + message: "#^Call to an undefined method Chill\\\\DocStoreBundle\\\\Entity\\\\Document\\:\\:setCourse\\(\\)\\.$#" + count: 1 + path: src/Bundle/ChillPersonBundle/Service/DocGenerator/AccompanyingPeriodContext.php + + - + message: "#^Call to function array_key_exists\\(\\) with 'category' and array will always evaluate to true\\.$#" + count: 1 + path: src/Bundle/ChillPersonBundle/Service/DocGenerator/AccompanyingPeriodContext.php + + - + message: "#^Else branch is unreachable because ternary operator condition is always true\\.$#" + count: 1 + path: src/Bundle/ChillPersonBundle/Service/DocGenerator/AccompanyingPeriodContext.php + + - + message: "#^Call to an undefined method Chill\\\\DocStoreBundle\\\\Entity\\\\Document\\:\\:setPerson\\(\\)\\.$#" + count: 1 + path: src/Bundle/ChillPersonBundle/Service/DocGenerator/PersonContext.php + + - + message: "#^Call to function array_key_exists\\(\\) with 'category' and array will always evaluate to true\\.$#" + count: 1 + path: src/Bundle/ChillPersonBundle/Service/DocGenerator/PersonContext.php + + - + message: "#^Comparison operation \"\\<\" between 1 and array results in an error\\.$#" + count: 1 + path: src/Bundle/ChillPersonBundle/Service/DocGenerator/PersonContext.php + + - + message: "#^Else branch is unreachable because ternary operator condition is always true\\.$#" + count: 1 + path: src/Bundle/ChillPersonBundle/Service/DocGenerator/PersonContext.php + + - + message: "#^PHPDoc tag @param has invalid value \\(array\\\\|SocialIssue\\|string, SocialAction\\|null\\>\\|Evaluation\\|Goal\\|Result\\> \\$previousRow\\)\\: Unexpected token \"\\<\", expected type at offset 333$#" + count: 1 + path: src/Bundle/ChillPersonBundle/Service/Import/SocialWorkMetadata.php + + - + message: "#^PHPDoc tag @return has invalid value \\(array\\\\|SocialIssue\\|string, SocialAction\\|null\\>\\|Evaluation\\|Goal\\|Result\\>\\)\\: Unexpected token \"\\<\", expected type at offset 505$#" + count: 1 + path: src/Bundle/ChillPersonBundle/Service/Import/SocialWorkMetadata.php + + - + message: "#^Property Chill\\\\PersonBundle\\\\Service\\\\Import\\\\SocialWorkMetadata\\:\\:\\$socialActionRepository is never read, only written\\.$#" + count: 1 + path: src/Bundle/ChillPersonBundle/Service/Import/SocialWorkMetadata.php + + - + message: "#^Property Chill\\\\PersonBundle\\\\Service\\\\Import\\\\SocialWorkMetadata\\:\\:\\$socialIssueRepository is never read, only written\\.$#" + count: 1 + path: src/Bundle/ChillPersonBundle/Service/Import/SocialWorkMetadata.php + + - + message: "#^Call to method getId\\(\\) on an unknown class ChillPersonBundle\\:AccompanyingPeriod\\.$#" + count: 1 + path: src/Bundle/ChillPersonBundle/Timeline/AbstractTimelineAccompanyingPeriod.php + + - + message: "#^Cannot call method setKey\\(\\) on array\\.$#" + count: 1 + path: src/Bundle/ChillPersonBundle/Timeline/TimelineAccompanyingPeriodClosing.php + + - + message: "#^Parameter \\$context of method Chill\\\\PersonBundle\\\\Timeline\\\\TimelineAccompanyingPeriodClosing\\:\\:getEntityTemplate\\(\\) has invalid type Chill\\\\MainBundle\\\\Timeline\\\\type\\.$#" + count: 1 + path: src/Bundle/ChillPersonBundle/Timeline/TimelineAccompanyingPeriodClosing.php + + - + message: "#^Parameter \\$entity of method Chill\\\\PersonBundle\\\\Timeline\\\\TimelineAccompanyingPeriodClosing\\:\\:getEntityTemplate\\(\\) has invalid type Chill\\\\MainBundle\\\\Timeline\\\\type\\.$#" + count: 1 + path: src/Bundle/ChillPersonBundle/Timeline/TimelineAccompanyingPeriodClosing.php + + - + message: "#^Cannot call method setKey\\(\\) on array\\.$#" + count: 1 + path: src/Bundle/ChillPersonBundle/Timeline/TimelineAccompanyingPeriodOpening.php + + - + message: "#^Parameter \\$context of method Chill\\\\PersonBundle\\\\Timeline\\\\TimelineAccompanyingPeriodOpening\\:\\:getEntityTemplate\\(\\) has invalid type Chill\\\\MainBundle\\\\Timeline\\\\type\\.$#" + count: 1 + path: src/Bundle/ChillPersonBundle/Timeline/TimelineAccompanyingPeriodOpening.php + + - + message: "#^Parameter \\$entity of method Chill\\\\PersonBundle\\\\Timeline\\\\TimelineAccompanyingPeriodOpening\\:\\:getEntityTemplate\\(\\) has invalid type Chill\\\\MainBundle\\\\Timeline\\\\type\\.$#" + count: 1 + path: src/Bundle/ChillPersonBundle/Timeline/TimelineAccompanyingPeriodOpening.php + + - + message: "#^Property Chill\\\\PersonBundle\\\\Validator\\\\Constraints\\\\AccompanyingPeriod\\\\AccompanyingPeriodValidityValidator\\:\\:\\$token is never read, only written\\.$#" + count: 1 + path: src/Bundle/ChillPersonBundle/Validator/Constraints/AccompanyingPeriod/AccompanyingPeriodValidityValidator.php + + - + message: "#^Property Chill\\\\PersonBundle\\\\Validator\\\\Constraints\\\\AccompanyingPeriod\\\\ParticipationOverlapValidator\\:\\:\\$thirdpartyRender is never read, only written\\.$#" + count: 1 + path: src/Bundle/ChillPersonBundle/Validator/Constraints/AccompanyingPeriod/ParticipationOverlapValidator.php + + - + message: "#^Strict comparison using \\=\\=\\= between 0 and int\\<2, max\\> will always evaluate to false\\.$#" + count: 1 + path: src/Bundle/ChillPersonBundle/Validator/Constraints/AccompanyingPeriod/ParticipationOverlapValidator.php + + - + message: "#^Access to an undefined property Symfony\\\\Component\\\\Validator\\\\Constraint\\:\\:\\$message\\.$#" + count: 1 + path: src/Bundle/ChillPersonBundle/Validator/Constraints/Household/HouseholdMembershipSequentialValidator.php + + - + message: "#^Access to an undefined property Symfony\\\\Component\\\\Validator\\\\Constraint\\:\\:\\$message\\.$#" + count: 1 + path: src/Bundle/ChillPersonBundle/Validator/Constraints/Household/MaxHolderValidator.php + + - + message: "#^Access to an undefined property Symfony\\\\Component\\\\Validator\\\\Constraint\\:\\:\\$messageInfinity\\.$#" + count: 1 + path: src/Bundle/ChillPersonBundle/Validator/Constraints/Household/MaxHolderValidator.php + + - + message: "#^Access to an undefined property Symfony\\\\Component\\\\Validator\\\\Constraint\\:\\:\\$message\\.$#" + count: 1 + path: src/Bundle/ChillPersonBundle/Validator/Constraints/Person/BirthdateValidator.php + + - + message: "#^Access to an undefined property Symfony\\\\Component\\\\Validator\\\\Constraint\\:\\:\\$message\\.$#" + count: 1 + path: src/Bundle/ChillPersonBundle/Validator/Constraints/Person/PersonHasCenterValidator.php + + - + message: "#^Strict comparison using \\=\\=\\= between null and string\\|Stringable\\|Symfony\\\\Component\\\\Security\\\\Core\\\\User\\\\UserInterface will always evaluate to false\\.$#" + count: 1 + path: src/Bundle/ChillPersonBundle/Widget/PersonListWidget.php + + - + message: "#^Call to an undefined method Symfony\\\\Component\\\\Config\\\\Definition\\\\Builder\\\\NodeParentInterface\\:\\:info\\(\\)\\.$#" + count: 1 + path: src/Bundle/ChillPersonBundle/Widget/PersonListWidgetFactory.php + + - + message: "#^Parameter \\$place of method Chill\\\\PersonBundle\\\\Widget\\\\PersonListWidgetFactory\\:\\:configureOptions\\(\\) has invalid type Chill\\\\MainBundle\\\\DependencyInjection\\\\Widget\\\\Factory\\\\type\\.$#" + count: 1 + path: src/Bundle/ChillPersonBundle/Widget/PersonListWidgetFactory.php + + - + message: "#^Call to an undefined method Doctrine\\\\Persistence\\\\ObjectManager\\:\\:createQuery\\(\\)\\.$#" + count: 2 + path: src/Bundle/ChillReportBundle/Controller/ReportController.php + + - + message: "#^Call to an undefined method Doctrine\\\\Persistence\\\\ObjectRepository\\\\:\\:findByCFGroup\\(\\)\\.$#" + count: 1 + path: src/Bundle/ChillReportBundle/Controller/ReportController.php + + - + message: "#^Call to an undefined method Doctrine\\\\Persistence\\\\ObjectRepository\\\\:\\:findByEntity\\(\\)\\.$#" + count: 2 + path: src/Bundle/ChillReportBundle/Controller/ReportController.php + + - + message: "#^Call to method getId\\(\\) on an unknown class ChillReportBundle\\:Report\\.$#" + count: 2 + path: src/Bundle/ChillReportBundle/Controller/ReportController.php + + - + message: "#^Call to method getPerson\\(\\) on an unknown class ChillReportBundle\\:Report\\.$#" + count: 3 + path: src/Bundle/ChillReportBundle/Controller/ReportController.php + + - + message: "#^Method Chill\\\\ReportBundle\\\\Controller\\\\ReportController\\:\\:createAction\\(\\) has invalid return type Chill\\\\ReportBundle\\\\Controller\\\\Response\\.$#" + count: 1 + path: src/Bundle/ChillReportBundle/Controller/ReportController.php + + - + message: "#^Method Chill\\\\ReportBundle\\\\Controller\\\\ReportController\\:\\:createAction\\(\\) should return Chill\\\\ReportBundle\\\\Controller\\\\Response but returns Symfony\\\\Component\\\\HttpFoundation\\\\RedirectResponse\\.$#" + count: 1 + path: src/Bundle/ChillReportBundle/Controller/ReportController.php + + - + message: "#^Method Chill\\\\ReportBundle\\\\Controller\\\\ReportController\\:\\:createAction\\(\\) should return Chill\\\\ReportBundle\\\\Controller\\\\Response but returns Symfony\\\\Component\\\\HttpFoundation\\\\Response\\.$#" + count: 1 + path: src/Bundle/ChillReportBundle/Controller/ReportController.php + + - + message: "#^Method Chill\\\\ReportBundle\\\\Controller\\\\ReportController\\:\\:createCreateForm\\(\\) should return Symfony\\\\Component\\\\Form\\\\Form but returns Symfony\\\\Component\\\\Form\\\\FormInterface\\.$#" + count: 1 + path: src/Bundle/ChillReportBundle/Controller/ReportController.php + + - + message: "#^Method Chill\\\\ReportBundle\\\\Controller\\\\ReportController\\:\\:createEditForm\\(\\) should return Symfony\\\\Component\\\\Form\\\\Form but returns Symfony\\\\Component\\\\Form\\\\FormInterface\\.$#" + count: 1 + path: src/Bundle/ChillReportBundle/Controller/ReportController.php + + - + message: "#^Method Chill\\\\ReportBundle\\\\Controller\\\\ReportController\\:\\:editAction\\(\\) has invalid return type Chill\\\\ReportBundle\\\\Controller\\\\Response\\.$#" + count: 1 + path: src/Bundle/ChillReportBundle/Controller/ReportController.php + + - + message: "#^Method Chill\\\\ReportBundle\\\\Controller\\\\ReportController\\:\\:editAction\\(\\) should return Chill\\\\ReportBundle\\\\Controller\\\\Response but returns Symfony\\\\Component\\\\HttpFoundation\\\\Response\\.$#" + count: 1 + path: src/Bundle/ChillReportBundle/Controller/ReportController.php + + - + message: "#^Method Chill\\\\ReportBundle\\\\Controller\\\\ReportController\\:\\:exportAction\\(\\) has invalid return type Chill\\\\ReportBundle\\\\Controller\\\\A\\.$#" + count: 1 + path: src/Bundle/ChillReportBundle/Controller/ReportController.php + + - + message: "#^Method Chill\\\\ReportBundle\\\\Controller\\\\ReportController\\:\\:exportAction\\(\\) should return Chill\\\\ReportBundle\\\\Controller\\\\A but returns Symfony\\\\Component\\\\HttpFoundation\\\\Response\\.$#" + count: 1 + path: src/Bundle/ChillReportBundle/Controller/ReportController.php + + - + message: "#^Method Chill\\\\ReportBundle\\\\Controller\\\\ReportController\\:\\:listAction\\(\\) has invalid return type Chill\\\\ReportBundle\\\\Controller\\\\Response\\.$#" + count: 1 + path: src/Bundle/ChillReportBundle/Controller/ReportController.php + + - + message: "#^Method Chill\\\\ReportBundle\\\\Controller\\\\ReportController\\:\\:listAction\\(\\) should return Chill\\\\ReportBundle\\\\Controller\\\\Response but returns Symfony\\\\Component\\\\HttpFoundation\\\\Response\\.$#" + count: 1 + path: src/Bundle/ChillReportBundle/Controller/ReportController.php + + - + message: "#^Method Chill\\\\ReportBundle\\\\Controller\\\\ReportController\\:\\:newAction\\(\\) has invalid return type Chill\\\\ReportBundle\\\\Controller\\\\Response\\.$#" + count: 1 + path: src/Bundle/ChillReportBundle/Controller/ReportController.php + + - + message: "#^Method Chill\\\\ReportBundle\\\\Controller\\\\ReportController\\:\\:newAction\\(\\) should return Chill\\\\ReportBundle\\\\Controller\\\\Response but returns Symfony\\\\Component\\\\HttpFoundation\\\\Response\\.$#" + count: 1 + path: src/Bundle/ChillReportBundle/Controller/ReportController.php + + - + message: "#^Method Chill\\\\ReportBundle\\\\Controller\\\\ReportController\\:\\:selectReportTypeAction\\(\\) has invalid return type Chill\\\\ReportBundle\\\\Controller\\\\Response\\.$#" + count: 1 + path: src/Bundle/ChillReportBundle/Controller/ReportController.php + + - + message: "#^Method Chill\\\\ReportBundle\\\\Controller\\\\ReportController\\:\\:selectReportTypeAction\\(\\) should return Chill\\\\ReportBundle\\\\Controller\\\\Response but returns Symfony\\\\Component\\\\HttpFoundation\\\\RedirectResponse\\.$#" + count: 2 + path: src/Bundle/ChillReportBundle/Controller/ReportController.php + + - + message: "#^Method Chill\\\\ReportBundle\\\\Controller\\\\ReportController\\:\\:selectReportTypeAction\\(\\) should return Chill\\\\ReportBundle\\\\Controller\\\\Response but returns Symfony\\\\Component\\\\HttpFoundation\\\\Response\\.$#" + count: 1 + path: src/Bundle/ChillReportBundle/Controller/ReportController.php + + - + message: "#^Method Chill\\\\ReportBundle\\\\Controller\\\\ReportController\\:\\:selectReportTypeForExportAction\\(\\) has invalid return type Chill\\\\ReportBundle\\\\Controller\\\\Response\\.$#" + count: 1 + path: src/Bundle/ChillReportBundle/Controller/ReportController.php + + - + message: "#^Method Chill\\\\ReportBundle\\\\Controller\\\\ReportController\\:\\:selectReportTypeForExportAction\\(\\) should return Chill\\\\ReportBundle\\\\Controller\\\\Response but returns Symfony\\\\Component\\\\HttpFoundation\\\\RedirectResponse\\.$#" + count: 2 + path: src/Bundle/ChillReportBundle/Controller/ReportController.php + + - + message: "#^Method Chill\\\\ReportBundle\\\\Controller\\\\ReportController\\:\\:selectReportTypeForExportAction\\(\\) should return Chill\\\\ReportBundle\\\\Controller\\\\Response but returns Symfony\\\\Component\\\\HttpFoundation\\\\Response\\.$#" + count: 1 + path: src/Bundle/ChillReportBundle/Controller/ReportController.php + + - + message: "#^Method Chill\\\\ReportBundle\\\\Controller\\\\ReportController\\:\\:updateAction\\(\\) has invalid return type Chill\\\\ReportBundle\\\\Controller\\\\Response\\.$#" + count: 1 + path: src/Bundle/ChillReportBundle/Controller/ReportController.php + + - + message: "#^Method Chill\\\\ReportBundle\\\\Controller\\\\ReportController\\:\\:updateAction\\(\\) should return Chill\\\\ReportBundle\\\\Controller\\\\Response but returns Symfony\\\\Component\\\\HttpFoundation\\\\RedirectResponse\\.$#" + count: 1 + path: src/Bundle/ChillReportBundle/Controller/ReportController.php + + - + message: "#^Method Chill\\\\ReportBundle\\\\Controller\\\\ReportController\\:\\:updateAction\\(\\) should return Chill\\\\ReportBundle\\\\Controller\\\\Response but returns Symfony\\\\Component\\\\HttpFoundation\\\\Response\\.$#" + count: 1 + path: src/Bundle/ChillReportBundle/Controller/ReportController.php + + - + message: "#^Method Chill\\\\ReportBundle\\\\Controller\\\\ReportController\\:\\:viewAction\\(\\) has invalid return type Chill\\\\ReportBundle\\\\Controller\\\\Response\\.$#" + count: 1 + path: src/Bundle/ChillReportBundle/Controller/ReportController.php + + - + message: "#^Method Chill\\\\ReportBundle\\\\Controller\\\\ReportController\\:\\:viewAction\\(\\) should return Chill\\\\ReportBundle\\\\Controller\\\\Response but returns Symfony\\\\Component\\\\HttpFoundation\\\\Response\\.$#" + count: 1 + path: src/Bundle/ChillReportBundle/Controller/ReportController.php + + - + message: "#^Method Symfony\\\\Contracts\\\\EventDispatcher\\\\EventDispatcherInterface\\:\\:dispatch\\(\\) invoked with 2 parameters, 1 required\\.$#" + count: 4 + path: src/Bundle/ChillReportBundle/Controller/ReportController.php + + - + message: "#^Negated boolean expression is always false\\.$#" + count: 1 + path: src/Bundle/ChillReportBundle/Controller/ReportController.php + + - + message: "#^Method Chill\\\\ReportBundle\\\\DataFixtures\\\\ORM\\\\LoadReports\\:\\:getRandomChoice\\(\\) never returns string so it can be removed from the return type\\.$#" + count: 1 + path: src/Bundle/ChillReportBundle/DataFixtures/ORM/LoadReports.php + + - + message: "#^Method Chill\\\\ReportBundle\\\\DataFixtures\\\\ORM\\\\LoadReports\\:\\:getRandomChoice\\(\\) should return array\\\\|string but returns array\\\\.$#" + count: 1 + path: src/Bundle/ChillReportBundle/DataFixtures/ORM/LoadReports.php + + - + message: "#^Method Chill\\\\ReportBundle\\\\DataFixtures\\\\ORM\\\\LoadReports\\:\\:pickChoice\\(\\) has invalid return type Chill\\\\ReportBundle\\\\DataFixtures\\\\ORM\\\\the\\.$#" + count: 1 + path: src/Bundle/ChillReportBundle/DataFixtures/ORM/LoadReports.php + + - + message: "#^Strict comparison using \\=\\=\\= between '_other' and Chill\\\\ReportBundle\\\\DataFixtures\\\\ORM\\\\the will always evaluate to false\\.$#" + count: 1 + path: src/Bundle/ChillReportBundle/DataFixtures/ORM/LoadReports.php + + - + message: "#^Strict comparison using \\=\\=\\= between DateTime and null will always evaluate to false\\.$#" + count: 1 + path: src/Bundle/ChillReportBundle/DataFixtures/ORM/LoadReports.php + + - + message: "#^Method Symfony\\\\Component\\\\Config\\\\Definition\\\\Builder\\\\TreeBuilder\\:\\:getRootNode\\(\\) invoked with 1 parameter, 0 required\\.$#" + count: 1 + path: src/Bundle/ChillReportBundle/DependencyInjection/Configuration.php + + - + message: "#^PHPDoc tag @param for parameter \\$scope with type string is incompatible with native type Chill\\\\MainBundle\\\\Entity\\\\Scope\\.$#" + count: 1 + path: src/Bundle/ChillReportBundle/Entity/Report.php + + - + message: "#^Property Chill\\\\ReportBundle\\\\Entity\\\\Report\\:\\:\\$id is never written, only read\\.$#" + count: 1 + path: src/Bundle/ChillReportBundle/Entity/Report.php + + - + message: "#^Call to method extractOtherValue\\(\\) on an unknown class Chill\\\\CustomFieldsBundle\\\\Service\\\\CustomFieldInterface\\.$#" + count: 1 + path: src/Bundle/ChillReportBundle/Export/Export/ReportList.php + + - + message: "#^Call to method getChoices\\(\\) on an unknown class Chill\\\\CustomFieldsBundle\\\\Service\\\\CustomFieldInterface\\.$#" + count: 2 + path: src/Bundle/ChillReportBundle/Export/Export/ReportList.php + + - + message: "#^Call to method isChecked\\(\\) on an unknown class Chill\\\\CustomFieldsBundle\\\\Service\\\\CustomFieldInterface\\.$#" + count: 2 + path: src/Bundle/ChillReportBundle/Export/Export/ReportList.php + + - + message: "#^Call to method isMultiple\\(\\) on an unknown class Chill\\\\CustomFieldsBundle\\\\Service\\\\CustomFieldInterface\\.$#" + count: 2 + path: src/Bundle/ChillReportBundle/Export/Export/ReportList.php + + - + message: "#^Call to method render\\(\\) on an unknown class Chill\\\\CustomFieldsBundle\\\\Service\\\\CustomFieldInterface\\.$#" + count: 1 + path: src/Bundle/ChillReportBundle/Export/Export/ReportList.php + + - + message: "#^Property Chill\\\\ReportBundle\\\\Form\\\\ReportType\\:\\:\\$user \\(Chill\\\\MainBundle\\\\Entity\\\\User\\) does not accept string\\|Stringable\\|Symfony\\\\Component\\\\Security\\\\Core\\\\User\\\\UserInterface\\.$#" + count: 1 + path: src/Bundle/ChillReportBundle/Form/ReportType.php + + - + message: "#^Call to method getId\\(\\) on an unknown class ChillReportBundle\\:Report\\.$#" + count: 1 + path: src/Bundle/ChillReportBundle/Timeline/TimelineReportProvider.php + + - + message: "#^Parameter \\$context of method Chill\\\\ReportBundle\\\\Timeline\\\\TimelineReportProvider\\:\\:getEntityTemplate\\(\\) has invalid type Chill\\\\MainBundle\\\\Timeline\\\\type\\.$#" + count: 1 + path: src/Bundle/ChillReportBundle/Timeline/TimelineReportProvider.php + + - + message: "#^Parameter \\$entity of method Chill\\\\ReportBundle\\\\Timeline\\\\TimelineReportProvider\\:\\:getEntityTemplate\\(\\) has invalid type Chill\\\\MainBundle\\\\Timeline\\\\type\\.$#" + count: 1 + path: src/Bundle/ChillReportBundle/Timeline/TimelineReportProvider.php + + - + message: "#^Method Chill\\\\TaskBundle\\\\Controller\\\\SingleTaskController\\:\\:createDeleteForm\\(\\) should return Symfony\\\\Component\\\\Form\\\\Form but returns Symfony\\\\Component\\\\Form\\\\FormInterface\\.$#" + count: 1 + path: src/Bundle/ChillTaskBundle/Controller/SingleTaskController.php + + - + message: "#^Method Symfony\\\\Contracts\\\\EventDispatcher\\\\EventDispatcherInterface\\:\\:dispatch\\(\\) invoked with 2 parameters, 1 required\\.$#" + count: 6 + path: src/Bundle/ChillTaskBundle/Controller/SingleTaskController.php + + - + message: "#^Property Chill\\\\TaskBundle\\\\Controller\\\\SingleTaskController\\:\\:\\$centerResolverDispatcher is never read, only written\\.$#" + count: 1 + path: src/Bundle/ChillTaskBundle/Controller/SingleTaskController.php + + - + message: "#^Strict comparison using \\=\\=\\= between null and int will always evaluate to false\\.$#" + count: 1 + path: src/Bundle/ChillTaskBundle/Controller/SingleTaskController.php + + - + message: "#^If condition is always true\\.$#" + count: 1 + path: src/Bundle/ChillTaskBundle/Controller/TaskController.php + + - + message: "#^Method Symfony\\\\Contracts\\\\EventDispatcher\\\\EventDispatcherInterface\\:\\:dispatch\\(\\) invoked with 2 parameters, 1 required\\.$#" + count: 1 + path: src/Bundle/ChillTaskBundle/Controller/TaskController.php + + - + message: "#^PHPDoc tag @param for parameter \\$task with type Chill\\\\TaskBundle\\\\Controller\\\\AbstractTask is not subtype of native type Chill\\\\TaskBundle\\\\Entity\\\\AbstractTask\\.$#" + count: 1 + path: src/Bundle/ChillTaskBundle/Controller/TaskController.php + + - + message: "#^Parameter \\$task of method Chill\\\\TaskBundle\\\\Controller\\\\TaskController\\:\\:createTransitionForm\\(\\) has invalid type Chill\\\\TaskBundle\\\\Controller\\\\AbstractTask\\.$#" + count: 1 + path: src/Bundle/ChillTaskBundle/Controller/TaskController.php + + - + message: "#^Method Symfony\\\\Component\\\\Config\\\\Definition\\\\Builder\\\\TreeBuilder\\:\\:getRootNode\\(\\) invoked with 1 parameter, 0 required\\.$#" + count: 1 + path: src/Bundle/ChillTaskBundle/DependencyInjection/Configuration.php + + - + message: "#^Property Chill\\\\TaskBundle\\\\Entity\\\\AbstractTask\\:\\:\\$currentStates \\(Chill\\\\TaskBundle\\\\Entity\\\\json\\) does not accept array\\\\.$#" + count: 1 + path: src/Bundle/ChillTaskBundle/Entity/AbstractTask.php + + - + message: "#^Property Chill\\\\TaskBundle\\\\Entity\\\\AbstractTask\\:\\:\\$currentStates \\(Chill\\\\TaskBundle\\\\Entity\\\\json\\) does not accept default value of type array\\.$#" + count: 1 + path: src/Bundle/ChillTaskBundle/Entity/AbstractTask.php + + - + message: "#^Property Chill\\\\TaskBundle\\\\Entity\\\\AbstractTask\\:\\:\\$currentStates has unknown class Chill\\\\TaskBundle\\\\Entity\\\\json as its type\\.$#" + count: 1 + path: src/Bundle/ChillTaskBundle/Entity/AbstractTask.php + + - + message: "#^Unreachable statement \\- code above always terminates\\.$#" + count: 1 + path: src/Bundle/ChillTaskBundle/Entity/AbstractTask.php + + - + message: "#^Method Chill\\\\TaskBundle\\\\Entity\\\\RecurringTask\\:\\:getOccurenceStartDate\\(\\) has invalid return type Chill\\\\TaskBundle\\\\Entity\\\\dateinterval\\.$#" + count: 1 + path: src/Bundle/ChillTaskBundle/Entity/RecurringTask.php + + - + message: "#^Method Chill\\\\TaskBundle\\\\Entity\\\\RecurringTask\\:\\:getOccurenceWarningInterval\\(\\) has invalid return type Chill\\\\TaskBundle\\\\Entity\\\\dateinterval\\.$#" + count: 1 + path: src/Bundle/ChillTaskBundle/Entity/RecurringTask.php + + - + message: "#^Parameter \\$occurenceStartDate of method Chill\\\\TaskBundle\\\\Entity\\\\RecurringTask\\:\\:setOccurenceStartDate\\(\\) has invalid type Chill\\\\TaskBundle\\\\Entity\\\\dateinterval\\.$#" + count: 1 + path: src/Bundle/ChillTaskBundle/Entity/RecurringTask.php + + - + message: "#^Parameter \\$occurenceWarningInterval of method Chill\\\\TaskBundle\\\\Entity\\\\RecurringTask\\:\\:setOccurenceWarningInterval\\(\\) has invalid type Chill\\\\TaskBundle\\\\Entity\\\\dateinterval\\.$#" + count: 1 + path: src/Bundle/ChillTaskBundle/Entity/RecurringTask.php + + - + message: "#^Property Chill\\\\TaskBundle\\\\Entity\\\\RecurringTask\\:\\:\\$id is never written, only read\\.$#" + count: 1 + path: src/Bundle/ChillTaskBundle/Entity/RecurringTask.php + + - + message: "#^Property Chill\\\\TaskBundle\\\\Entity\\\\RecurringTask\\:\\:\\$occurenceStartDate has unknown class Chill\\\\TaskBundle\\\\Entity\\\\dateinterval as its type\\.$#" + count: 1 + path: src/Bundle/ChillTaskBundle/Entity/RecurringTask.php + + - + message: "#^Property Chill\\\\TaskBundle\\\\Entity\\\\RecurringTask\\:\\:\\$occurenceWarningInterval has unknown class Chill\\\\TaskBundle\\\\Entity\\\\dateinterval as its type\\.$#" + count: 1 + path: src/Bundle/ChillTaskBundle/Entity/RecurringTask.php + + - + message: "#^Property Chill\\\\TaskBundle\\\\Entity\\\\RecurringTask\\:\\:\\$singleTasks is never read, only written\\.$#" + count: 1 + path: src/Bundle/ChillTaskBundle/Entity/RecurringTask.php + + - + message: "#^Method Chill\\\\TaskBundle\\\\Entity\\\\SingleTask\\:\\:getWarningDate\\(\\) should return DateTimeImmutable but returns null\\.$#" + count: 2 + path: src/Bundle/ChillTaskBundle/Entity/SingleTask.php + + - + message: "#^Property Chill\\\\TaskBundle\\\\Entity\\\\SingleTask\\:\\:\\$id is never written, only read\\.$#" + count: 1 + path: src/Bundle/ChillTaskBundle/Entity/SingleTask.php + + - + message: "#^Property Chill\\\\TaskBundle\\\\Entity\\\\SingleTask\\:\\:\\$warningInterval \\(DateInterval\\) does not accept string\\.$#" + count: 1 + path: src/Bundle/ChillTaskBundle/Entity/SingleTask.php + + - + message: "#^Strict comparison using \\=\\=\\= between DateInterval and null will always evaluate to false\\.$#" + count: 1 + path: src/Bundle/ChillTaskBundle/Entity/SingleTask.php + + - + message: "#^Strict comparison using \\=\\=\\= between DateTime and null will always evaluate to false\\.$#" + count: 1 + path: src/Bundle/ChillTaskBundle/Entity/SingleTask.php + + - + message: "#^Method Chill\\\\TaskBundle\\\\Entity\\\\Task\\\\AbstractTaskPlaceEvent\\:\\:getDatetime\\(\\) has invalid return type Chill\\\\TaskBundle\\\\Entity\\\\Task\\\\datetime_immutable\\.$#" + count: 1 + path: src/Bundle/ChillTaskBundle/Entity/Task/AbstractTaskPlaceEvent.php + + - + message: "#^Parameter \\$datetime of method Chill\\\\TaskBundle\\\\Entity\\\\Task\\\\AbstractTaskPlaceEvent\\:\\:setDatetime\\(\\) has invalid type Chill\\\\TaskBundle\\\\Entity\\\\Task\\\\datetime_immutable\\.$#" + count: 1 + path: src/Bundle/ChillTaskBundle/Entity/Task/AbstractTaskPlaceEvent.php + + - + message: "#^Property Chill\\\\TaskBundle\\\\Entity\\\\Task\\\\AbstractTaskPlaceEvent\\:\\:\\$data \\(string\\) does not accept default value of type array\\.$#" + count: 1 + path: src/Bundle/ChillTaskBundle/Entity/Task/AbstractTaskPlaceEvent.php + + - + message: "#^Property Chill\\\\TaskBundle\\\\Entity\\\\Task\\\\AbstractTaskPlaceEvent\\:\\:\\$datetime \\(Chill\\\\TaskBundle\\\\Entity\\\\Task\\\\datetime_immutable\\) does not accept DateTimeImmutable\\.$#" + count: 1 + path: src/Bundle/ChillTaskBundle/Entity/Task/AbstractTaskPlaceEvent.php + + - + message: "#^Property Chill\\\\TaskBundle\\\\Entity\\\\Task\\\\AbstractTaskPlaceEvent\\:\\:\\$datetime has unknown class Chill\\\\TaskBundle\\\\Entity\\\\Task\\\\datetime_immutable as its type\\.$#" + count: 1 + path: src/Bundle/ChillTaskBundle/Entity/Task/AbstractTaskPlaceEvent.php + + - + message: "#^Property Chill\\\\TaskBundle\\\\Entity\\\\Task\\\\AbstractTaskPlaceEvent\\:\\:\\$id is never written, only read\\.$#" + count: 1 + path: src/Bundle/ChillTaskBundle/Entity/Task/AbstractTaskPlaceEvent.php + + - + message: "#^Call to an undefined method Chill\\\\TaskBundle\\\\Entity\\\\AbstractTask\\:\\:getTaskPlaceEvents\\(\\)\\.$#" + count: 1 + path: src/Bundle/ChillTaskBundle/Event/Lifecycle/TaskLifecycleEvent.php + + - + message: "#^Method Knp\\\\Menu\\\\MenuItem\\:\\:setExtras\\(\\) invoked with 2 parameters, 1 required\\.$#" + count: 1 + path: src/Bundle/ChillTaskBundle/Menu/MenuBuilder.php + + - + message: "#^Call to an undefined method Symfony\\\\Contracts\\\\Translation\\\\TranslatorInterface\\:\\:transChoice\\(\\)\\.$#" + count: 1 + path: src/Bundle/ChillTaskBundle/Menu/UserMenuBuilder.php + + - + message: "#^Method Chill\\\\TaskBundle\\\\Repository\\\\SingleTaskRepository\\:\\:findByParameters\\(\\) has invalid return type Chill\\\\TaskBundle\\\\Repository\\\\type\\.$#" + count: 1 + path: src/Bundle/ChillTaskBundle/Repository/SingleTaskRepository.php + + - + message: "#^Parameter \\$params of method Chill\\\\TaskBundle\\\\Repository\\\\SingleTaskRepository\\:\\:findByParameters\\(\\) has invalid type Chill\\\\TaskBundle\\\\Repository\\\\type\\.$#" + count: 1 + path: src/Bundle/ChillTaskBundle/Repository/SingleTaskRepository.php + + - + message: "#^Property Chill\\\\TaskBundle\\\\Security\\\\Authorization\\\\AuthorizationEvent\\:\\:\\$subject has unknown class Chill\\\\TaskBundle\\\\Security\\\\Authorization\\\\Chill\\\\TaskBundle\\\\Entity\\\\AbstractTask as its type\\.$#" + count: 1 + path: src/Bundle/ChillTaskBundle/Security/Authorization/AuthorizationEvent.php + + - + message: "#^Property Chill\\\\TaskBundle\\\\Security\\\\Authorization\\\\AuthorizationEvent\\:\\:\\$vote \\(bool\\) does not accept null\\.$#" + count: 1 + path: src/Bundle/ChillTaskBundle/Security/Authorization/AuthorizationEvent.php + + - + message: "#^Method Symfony\\\\Contracts\\\\EventDispatcher\\\\EventDispatcherInterface\\:\\:dispatch\\(\\) invoked with 2 parameters, 1 required\\.$#" + count: 1 + path: src/Bundle/ChillTaskBundle/Security/Authorization/TaskVoter.php + + - + message: "#^Call to method deleteItem\\(\\) on an unknown class Chill\\\\TaskBundle\\\\Templating\\\\UI\\\\CacheItempPoolInterface\\.$#" + count: 1 + path: src/Bundle/ChillTaskBundle/Templating/UI/CountNotificationTask.php + + - + message: "#^Call to method getItem\\(\\) on an unknown class Chill\\\\TaskBundle\\\\Templating\\\\UI\\\\CacheItempPoolInterface\\.$#" + count: 2 + path: src/Bundle/ChillTaskBundle/Templating/UI/CountNotificationTask.php + + - + message: "#^Call to method save\\(\\) on an unknown class Chill\\\\TaskBundle\\\\Templating\\\\UI\\\\CacheItempPoolInterface\\.$#" + count: 1 + path: src/Bundle/ChillTaskBundle/Templating/UI/CountNotificationTask.php + + - + message: "#^Property Chill\\\\TaskBundle\\\\Templating\\\\UI\\\\CountNotificationTask\\:\\:\\$cachePool \\(Chill\\\\TaskBundle\\\\Templating\\\\UI\\\\CacheItempPoolInterface\\) does not accept Psr\\\\Cache\\\\CacheItemPoolInterface\\.$#" + count: 1 + path: src/Bundle/ChillTaskBundle/Templating/UI/CountNotificationTask.php + + - + message: "#^Property Chill\\\\TaskBundle\\\\Templating\\\\UI\\\\CountNotificationTask\\:\\:\\$cachePool has unknown class Chill\\\\TaskBundle\\\\Templating\\\\UI\\\\CacheItempPoolInterface as its type\\.$#" + count: 1 + path: src/Bundle/ChillTaskBundle/Templating/UI/CountNotificationTask.php + + - + message: "#^Call to method getData\\(\\) on an unknown class Chill\\\\MainBundle\\\\Timeline\\\\type\\.$#" + count: 2 + path: src/Bundle/ChillTaskBundle/Timeline/SingleTaskTaskLifeCycleEventTimelineProvider.php + + - + message: "#^Call to method getTask\\(\\) on an unknown class Chill\\\\MainBundle\\\\Timeline\\\\type\\.$#" + count: 1 + path: src/Bundle/ChillTaskBundle/Timeline/SingleTaskTaskLifeCycleEventTimelineProvider.php + + - + message: "#^Call to method getTransition\\(\\) on an unknown class Chill\\\\MainBundle\\\\Timeline\\\\type\\.$#" + count: 1 + path: src/Bundle/ChillTaskBundle/Timeline/SingleTaskTaskLifeCycleEventTimelineProvider.php + + - + message: "#^Parameter \\$context of method Chill\\\\TaskBundle\\\\Timeline\\\\SingleTaskTaskLifeCycleEventTimelineProvider\\:\\:getEntityTemplate\\(\\) has invalid type Chill\\\\MainBundle\\\\Timeline\\\\type\\.$#" + count: 1 + path: src/Bundle/ChillTaskBundle/Timeline/SingleTaskTaskLifeCycleEventTimelineProvider.php + + - + message: "#^Parameter \\$entity of method Chill\\\\TaskBundle\\\\Timeline\\\\SingleTaskTaskLifeCycleEventTimelineProvider\\:\\:getEntityTemplate\\(\\) has invalid type Chill\\\\MainBundle\\\\Timeline\\\\type\\.$#" + count: 1 + path: src/Bundle/ChillTaskBundle/Timeline/SingleTaskTaskLifeCycleEventTimelineProvider.php + + - + message: "#^Call to method getData\\(\\) on an unknown class Chill\\\\MainBundle\\\\Timeline\\\\type\\.$#" + count: 2 + path: src/Bundle/ChillTaskBundle/Timeline/TaskLifeCycleEventTimelineProvider.php + + - + message: "#^Call to method getTask\\(\\) on an unknown class Chill\\\\MainBundle\\\\Timeline\\\\type\\.$#" + count: 2 + path: src/Bundle/ChillTaskBundle/Timeline/TaskLifeCycleEventTimelineProvider.php + + - + message: "#^Call to method getTransition\\(\\) on an unknown class Chill\\\\MainBundle\\\\Timeline\\\\type\\.$#" + count: 1 + path: src/Bundle/ChillTaskBundle/Timeline/TaskLifeCycleEventTimelineProvider.php + + - + message: "#^Parameter \\$context of method Chill\\\\TaskBundle\\\\Timeline\\\\TaskLifeCycleEventTimelineProvider\\:\\:getEntityTemplate\\(\\) has invalid type Chill\\\\MainBundle\\\\Timeline\\\\type\\.$#" + count: 1 + path: src/Bundle/ChillTaskBundle/Timeline/TaskLifeCycleEventTimelineProvider.php + + - + message: "#^Parameter \\$entity of method Chill\\\\TaskBundle\\\\Timeline\\\\TaskLifeCycleEventTimelineProvider\\:\\:getEntityTemplate\\(\\) has invalid type Chill\\\\MainBundle\\\\Timeline\\\\type\\.$#" + count: 1 + path: src/Bundle/ChillTaskBundle/Timeline/TaskLifeCycleEventTimelineProvider.php + + - + message: "#^Call to an undefined method Chill\\\\TaskBundle\\\\Entity\\\\AbstractTask\\:\\:getId\\(\\)\\.$#" + count: 1 + path: src/Bundle/ChillTaskBundle/Workflow/TaskWorkflowManager.php + + - + message: "#^Call to an undefined method Chill\\\\TaskBundle\\\\Workflow\\\\TaskWorkflowDefinition\\:\\:getAssociatedWorkflowName\\(\\)\\.$#" + count: 1 + path: src/Bundle/ChillTaskBundle/Workflow/TaskWorkflowManager.php + + - + message: "#^Call to an undefined method Chill\\\\TaskBundle\\\\Workflow\\\\TaskWorkflowDefinition\\:\\:getWorkflowMetadata\\(\\)\\.$#" + count: 1 + path: src/Bundle/ChillTaskBundle/Workflow/TaskWorkflowManager.php + + - + message: "#^Call to an undefined method Chill\\\\TaskBundle\\\\Workflow\\\\TaskWorkflowDefinition\\:\\:isClosed\\(\\)\\.$#" + count: 1 + path: src/Bundle/ChillTaskBundle/Workflow/TaskWorkflowManager.php + + - + message: "#^Call to an undefined method Chill\\\\TaskBundle\\\\Workflow\\\\TaskWorkflowDefinition\\:\\:supports\\(\\)\\.$#" + count: 1 + path: src/Bundle/ChillTaskBundle/Workflow/TaskWorkflowManager.php + + - + message: "#^Method Symfony\\\\Component\\\\Config\\\\Definition\\\\Builder\\\\TreeBuilder\\:\\:getRootNode\\(\\) invoked with 1 parameter, 0 required\\.$#" + count: 1 + path: src/Bundle/ChillThirdPartyBundle/DependencyInjection/Configuration.php + + - + message: "#^PHPDoc tag @return with type DateTime\\|null is not subtype of native type DateTimeImmutable\\|null\\.$#" + count: 1 + path: src/Bundle/ChillThirdPartyBundle/Entity/ThirdParty.php + + - + message: "#^PHPDoc tag @var for property Chill\\\\ThirdPartyBundle\\\\Entity\\\\ThirdParty\\:\\:\\$categories with type Chill\\\\ThirdPartyBundle\\\\Entity\\\\ThirdPartyCategory is not subtype of native type Doctrine\\\\Common\\\\Collections\\\\Collection\\.$#" + count: 1 + path: src/Bundle/ChillThirdPartyBundle/Entity/ThirdParty.php + + - + message: "#^Property Chill\\\\ThirdPartyBundle\\\\Entity\\\\ThirdParty\\:\\:\\$canonicalized is never read, only written\\.$#" + count: 1 + path: src/Bundle/ChillThirdPartyBundle/Entity/ThirdParty.php + + - + message: "#^Property Chill\\\\ThirdPartyBundle\\\\Entity\\\\ThirdParty\\:\\:\\$createdBy is never read, only written\\.$#" + count: 1 + path: src/Bundle/ChillThirdPartyBundle/Entity/ThirdParty.php + + - + message: "#^Property Chill\\\\ThirdPartyBundle\\\\Repository\\\\ThirdPartyACLAwareRepository\\:\\:\\$authorizationHelper is never read, only written\\.$#" + count: 1 + path: src/Bundle/ChillThirdPartyBundle/Repository/ThirdPartyACLAwareRepository.php + + - + message: "#^Property Chill\\\\ThirdPartyBundle\\\\Repository\\\\ThirdPartyACLAwareRepository\\:\\:\\$security is never read, only written\\.$#" + count: 1 + path: src/Bundle/ChillThirdPartyBundle/Repository/ThirdPartyACLAwareRepository.php + + - + message: "#^Argument of an invalid type string supplied for foreach, only iterables are supported\\.$#" + count: 1 + path: src/Bundle/ChillThirdPartyBundle/Repository/ThirdPartyRepository.php + + - + message: "#^Method Chill\\\\ThirdPartyBundle\\\\Search\\\\ThirdPartySearch\\:\\:renderResult\\(\\) should return string but returns array\\\\.$#" + count: 1 + path: src/Bundle/ChillThirdPartyBundle/Search/ThirdPartySearch.php + + - + message: "#^Unreachable statement \\- code above always terminates\\.$#" + count: 1 + path: src/Bundle/ChillThirdPartyBundle/Security/Voter/ThirdPartyVoter.php + + - + message: "#^Strict comparison using \\=\\=\\= between null and Chill\\\\DocStoreBundle\\\\Entity\\\\StoredObject will always evaluate to false\\.$#" + count: 1 + path: src/Bundle/ChillWopiBundle/src/Controller/Editor.php + + - + message: "#^Strict comparison using \\=\\=\\= between false and array will always evaluate to false\\.$#" + count: 1 + path: src/Bundle/ChillWopiBundle/src/Service/Wopi/AuthorizationManager.php + + - + message: "#^Default value of the parameter \\#2 \\$properties \\(array\\{\\}\\) of method Chill\\\\WopiBundle\\\\Service\\\\Wopi\\\\ChillDocumentManager\\:\\:write\\(\\) is incompatible with type array\\{content\\: string, size\\: int\\}\\.$#" + count: 1 + path: src/Bundle/ChillWopiBundle/src/Service/Wopi/ChillDocumentManager.php + + - + message: "#^Method ChampsLibres\\\\WopiLib\\\\Contract\\\\Service\\\\WopiInterface\\:\\:checkFileInfo\\(\\) invoked with 4 parameters, 3 required\\.$#" + count: 1 + path: src/Bundle/ChillWopiBundle/src/Service/Wopi/ChillWopi.php diff --git a/phpstan-baseline-level-5.neon b/phpstan-baseline-level-5.neon new file mode 100644 index 000000000..23321ba68 --- /dev/null +++ b/phpstan-baseline-level-5.neon @@ -0,0 +1,686 @@ +parameters: + ignoreErrors: + - + message: "#^Parameter \\#1 \\$event of method Symfony\\\\Contracts\\\\EventDispatcher\\\\EventDispatcherInterface\\:\\:dispatch\\(\\) expects object, string given\\.$#" + count: 1 + path: src/Bundle/ChillActivityBundle/Controller/ActivityController.php + + - + message: "#^Parameter \\#1 \\$context of method Chill\\\\ActivityBundle\\\\Timeline\\\\TimelineActivityProvider\\:\\:checkContext\\(\\) expects string, Chill\\\\MainBundle\\\\Timeline\\\\type given\\.$#" + count: 1 + path: src/Bundle/ChillActivityBundle/Timeline/TimelineActivityProvider.php + + - + message: "#^Parameter \\#1 \\$callback of function array_map expects \\(callable\\(Chill\\\\BudgetBundle\\\\Repository\\\\ChargeType\\)\\: mixed\\)\\|null, Closure\\(Chill\\\\BudgetBundle\\\\Entity\\\\ChargeKind\\)\\: int\\|null given\\.$#" + count: 1 + path: src/Bundle/ChillBudgetBundle/Service/Summary/SummaryBudget.php + + - + message: "#^Parameter \\#1 \\$callback of function array_map expects \\(callable\\(Chill\\\\BudgetBundle\\\\Repository\\\\ResourceType\\)\\: mixed\\)\\|null, Closure\\(Chill\\\\BudgetBundle\\\\Entity\\\\ResourceKind\\)\\: int\\|null given\\.$#" + count: 1 + path: src/Bundle/ChillBudgetBundle/Service/Summary/SummaryBudget.php + + - + message: "#^Parameter \\#2 \\$byUser of class Chill\\\\CalendarBundle\\\\Messenger\\\\Message\\\\InviteUpdateMessage constructor expects Chill\\\\MainBundle\\\\Entity\\\\User, Symfony\\\\Component\\\\Security\\\\Core\\\\User\\\\UserInterface\\|null given\\.$#" + count: 1 + path: src/Bundle/ChillCalendarBundle/Controller/InviteApiController.php + + - + message: "#^Parameter \\#2 \\$byUser of class Chill\\\\CalendarBundle\\\\Messenger\\\\Message\\\\CalendarRemovedMessage constructor expects Chill\\\\MainBundle\\\\Entity\\\\User\\|null, Symfony\\\\Component\\\\Security\\\\Core\\\\User\\\\UserInterface\\|null given\\.$#" + count: 1 + path: src/Bundle/ChillCalendarBundle/Messenger/Doctrine/CalendarEntityListener.php + + - + message: "#^Parameter \\#3 \\$byUser of class Chill\\\\CalendarBundle\\\\Messenger\\\\Message\\\\CalendarMessage constructor expects Chill\\\\MainBundle\\\\Entity\\\\User, Symfony\\\\Component\\\\Security\\\\Core\\\\User\\\\UserInterface\\|null given\\.$#" + count: 2 + path: src/Bundle/ChillCalendarBundle/Messenger/Doctrine/CalendarEntityListener.php + + - + message: "#^Parameter \\#2 \\$byUser of class Chill\\\\CalendarBundle\\\\Messenger\\\\Message\\\\CalendarRangeRemovedMessage constructor expects Chill\\\\MainBundle\\\\Entity\\\\User\\|null, Symfony\\\\Component\\\\Security\\\\Core\\\\User\\\\UserInterface\\|null given\\.$#" + count: 1 + path: src/Bundle/ChillCalendarBundle/Messenger/Doctrine/CalendarRangeEntityListener.php + + - + message: "#^Parameter \\#3 \\$byUser of class Chill\\\\CalendarBundle\\\\Messenger\\\\Message\\\\CalendarRangeMessage constructor expects Chill\\\\MainBundle\\\\Entity\\\\User\\|null, Symfony\\\\Component\\\\Security\\\\Core\\\\User\\\\UserInterface\\|null given\\.$#" + count: 2 + path: src/Bundle/ChillCalendarBundle/Messenger/Doctrine/CalendarRangeEntityListener.php + + - + message: "#^Parameter \\#1 \\$token of method Chill\\\\CalendarBundle\\\\RemoteCalendar\\\\Connector\\\\MSGraph\\\\OnBehalfOfUserTokenStorage\\:\\:setToken\\(\\) expects TheNetworg\\\\OAuth2\\\\Client\\\\Token\\\\AccessToken, League\\\\OAuth2\\\\Client\\\\Token\\\\AccessTokenInterface given\\.$#" + count: 1 + path: src/Bundle/ChillCalendarBundle/RemoteCalendar/Connector/MSGraph/OnBehalfOfUserTokenStorage.php + + - + message: "#^Parameter \\#2 \\$code of class Exception constructor expects int, array\\ given\\.$#" + count: 1 + path: src/Bundle/ChillCalendarBundle/RemoteCalendar/Connector/MSGraphRemoteCalendarConnector.php + + - + message: "#^Parameter \\#4 \\$offset of method Chill\\\\CalendarBundle\\\\Repository\\\\CalendarRepository\\:\\:findBy\\(\\) expects int\\|null, array\\|null given\\.$#" + count: 1 + path: src/Bundle/ChillCalendarBundle/Repository/CalendarRepository.php + + - + message: "#^Parameter \\#1 \\$prefix of function uniqid expects string, int\\<0, max\\> given\\.$#" + count: 1 + path: src/Bundle/ChillCustomFieldsBundle/Form/Type/ChoicesListType.php + + - + message: "#^Parameter \\#2 \\$callback of function array_filter expects callable\\(Symfony\\\\Component\\\\Serializer\\\\Mapping\\\\AttributeMetadataInterface\\)\\: mixed, Closure\\(Symfony\\\\Component\\\\Serializer\\\\Mapping\\\\AttributeMetadata\\)\\: bool given\\.$#" + count: 1 + path: src/Bundle/ChillDocGeneratorBundle/Serializer/Normalizer/DocGenObjectNormalizer.php + + - + message: "#^Parameter \\#3 \\$metadata of method Chill\\\\DocGeneratorBundle\\\\Serializer\\\\Normalizer\\\\DocGenObjectNormalizer\\:\\:normalizeNullData\\(\\) expects Symfony\\\\Component\\\\Serializer\\\\Mapping\\\\ClassMetadata, Symfony\\\\Component\\\\Serializer\\\\Mapping\\\\ClassMetadataInterface given\\.$#" + count: 1 + path: src/Bundle/ChillDocGeneratorBundle/Serializer/Normalizer/DocGenObjectNormalizer.php + + - + message: "#^Parameter \\#4 \\$attributes of method Chill\\\\DocGeneratorBundle\\\\Serializer\\\\Normalizer\\\\DocGenObjectNormalizer\\:\\:normalizeNullData\\(\\) expects array\\, array\\ given\\.$#" + count: 1 + path: src/Bundle/ChillDocGeneratorBundle/Serializer/Normalizer/DocGenObjectNormalizer.php + + - + message: "#^Parameter \\#5 \\$metadata of method Chill\\\\DocGeneratorBundle\\\\Serializer\\\\Normalizer\\\\DocGenObjectNormalizer\\:\\:normalizeObject\\(\\) expects Symfony\\\\Component\\\\Serializer\\\\Mapping\\\\ClassMetadata, Symfony\\\\Component\\\\Serializer\\\\Mapping\\\\ClassMetadataInterface given\\.$#" + count: 1 + path: src/Bundle/ChillDocGeneratorBundle/Serializer/Normalizer/DocGenObjectNormalizer.php + + - + message: "#^Parameter \\#6 \\$attributes of method Chill\\\\DocGeneratorBundle\\\\Serializer\\\\Normalizer\\\\DocGenObjectNormalizer\\:\\:normalizeObject\\(\\) expects array\\, array\\ given\\.$#" + count: 1 + path: src/Bundle/ChillDocGeneratorBundle/Serializer/Normalizer/DocGenObjectNormalizer.php + + - + message: "#^Parameter \\#1 \\$event of method Symfony\\\\Contracts\\\\EventDispatcher\\\\EventDispatcherInterface\\:\\:dispatch\\(\\) expects object, string given\\.$#" + count: 4 + path: src/Bundle/ChillDocStoreBundle/Controller/DocumentPersonController.php + + - + message: "#^Parameter \\#1 \\$event of method Symfony\\\\Contracts\\\\EventDispatcher\\\\EventDispatcherInterface\\:\\:dispatch\\(\\) expects object, string given\\.$#" + count: 1 + path: src/Bundle/ChillEventBundle/Controller/EventController.php + + - + message: "#^Parameter \\#1 \\$name of method Symfony\\\\Component\\\\Form\\\\FormFactoryInterface\\:\\:createNamedBuilder\\(\\) expects string, null given\\.$#" + count: 1 + path: src/Bundle/ChillEventBundle/Controller/EventController.php + + - + message: "#^Parameter \\#1 \\$value of function count expects array\\|Countable, Chill\\\\MainBundle\\\\Entity\\\\Center given\\.$#" + count: 1 + path: src/Bundle/ChillEventBundle/Controller/EventController.php + + - + message: "#^Parameter \\#1 \\$participations of method Chill\\\\EventBundle\\\\Controller\\\\ParticipationController\\:\\:createEditFormMultiple\\(\\) expects ArrayIterator, Traversable given\\.$#" + count: 2 + path: src/Bundle/ChillEventBundle/Controller/ParticipationController.php + + - + message: "#^Parameter \\#1 \\$callback of function call_user_func expects callable\\(\\)\\: mixed, null given\\.$#" + count: 2 + path: src/Bundle/ChillEventBundle/Form/ChoiceLoader/EventChoiceLoader.php + + - + message: "#^Parameter \\#2 \\$previous of class Symfony\\\\Component\\\\HttpKernel\\\\Exception\\\\BadRequestHttpException constructor expects Throwable\\|null, int given\\.$#" + count: 3 + path: src/Bundle/ChillMainBundle/CRUD/Controller/ApiController.php + + - + message: "#^Parameter \\#3 \\$code of class Symfony\\\\Component\\\\HttpKernel\\\\Exception\\\\BadRequestHttpException constructor expects int, Symfony\\\\Component\\\\Serializer\\\\Exception\\\\NotEncodableValueException given\\.$#" + count: 2 + path: src/Bundle/ChillMainBundle/CRUD/Controller/ApiController.php + + - + message: "#^Parameter \\#3 \\$code of class Symfony\\\\Component\\\\HttpKernel\\\\Exception\\\\BadRequestHttpException constructor expects int, Symfony\\\\Component\\\\Serializer\\\\Exception\\\\UnexpectedValueException given\\.$#" + count: 1 + path: src/Bundle/ChillMainBundle/CRUD/Controller/ApiController.php + + - + message: "#^Parameter \\#2 \\$role of method Chill\\\\MainBundle\\\\Security\\\\Authorization\\\\AuthorizationHelper\\:\\:getReachableCenters\\(\\) expects string, Symfony\\\\Component\\\\Security\\\\Core\\\\Role\\\\Role given\\.$#" + count: 1 + path: src/Bundle/ChillMainBundle/CRUD/Controller/CRUDController.php + + - + message: "#^Parameter \\#3 \\$formClass of method Chill\\\\MainBundle\\\\CRUD\\\\Controller\\\\CRUDController\\:\\:createFormFor\\(\\) expects string\\|null, Chill\\\\MainBundle\\\\CRUD\\\\Controller\\\\type\\|null given\\.$#" + count: 1 + path: src/Bundle/ChillMainBundle/CRUD/Controller/CRUDController.php + + - + message: "#^Parameter \\#3 \\$scope of method Chill\\\\MainBundle\\\\Security\\\\Authorization\\\\AuthorizationHelper\\:\\:getReachableCenters\\(\\) expects Chill\\\\MainBundle\\\\Entity\\\\Scope\\|null, Chill\\\\MainBundle\\\\CRUD\\\\Controller\\\\Scope\\|null given\\.$#" + count: 1 + path: src/Bundle/ChillMainBundle/CRUD/Controller/CRUDController.php + + - + message: "#^Parameter \\#1 \\$name of method Chill\\\\MainBundle\\\\Entity\\\\Country\\:\\:setName\\(\\) expects string, array\\ given\\.$#" + count: 1 + path: src/Bundle/ChillMainBundle/Command/LoadCountriesCommand.php + + - + message: "#^Parameter \\#4 \\.\\.\\.\\$values of function sprintf expects bool\\|float\\|int\\|string\\|null, Chill\\\\MainBundle\\\\Entity\\\\the given\\.$#" + count: 1 + path: src/Bundle/ChillMainBundle/Command/LoadPostalCodesCommand.php + + - + message: "#^Parameter \\#1 \\$alias of method Chill\\\\MainBundle\\\\Export\\\\ExportManager\\:\\:getExport\\(\\) expects string, Symfony\\\\Component\\\\HttpFoundation\\\\Request given\\.$#" + count: 1 + path: src/Bundle/ChillMainBundle/Controller/ExportController.php + + - + message: "#^Parameter \\#1 \\$name of method Symfony\\\\Component\\\\Form\\\\FormFactoryInterface\\:\\:createNamedBuilder\\(\\) expects string, null given\\.$#" + count: 1 + path: src/Bundle/ChillMainBundle/Controller/ExportController.php + + - + message: "#^Parameter \\#3 \\$alias of method Chill\\\\MainBundle\\\\Controller\\\\ExportController\\:\\:exportFormStep\\(\\) expects string, Symfony\\\\Component\\\\HttpFoundation\\\\Request given\\.$#" + count: 1 + path: src/Bundle/ChillMainBundle/Controller/ExportController.php + + - + message: "#^Parameter \\#3 \\$alias of method Chill\\\\MainBundle\\\\Controller\\\\ExportController\\:\\:formatterFormStep\\(\\) expects string, Symfony\\\\Component\\\\HttpFoundation\\\\Request given\\.$#" + count: 1 + path: src/Bundle/ChillMainBundle/Controller/ExportController.php + + - + message: "#^Parameter \\#3 \\$alias of method Chill\\\\MainBundle\\\\Controller\\\\ExportController\\:\\:forwardToGenerate\\(\\) expects string, Symfony\\\\Component\\\\HttpFoundation\\\\Request given\\.$#" + count: 1 + path: src/Bundle/ChillMainBundle/Controller/ExportController.php + + - + message: "#^Parameter \\#3 \\$alias of method Chill\\\\MainBundle\\\\Controller\\\\ExportController\\:\\:selectCentersStep\\(\\) expects string, Symfony\\\\Component\\\\HttpFoundation\\\\Request given\\.$#" + count: 1 + path: src/Bundle/ChillMainBundle/Controller/ExportController.php + + - + message: "#^Parameter \\#1 \\$user of method Chill\\\\MainBundle\\\\Repository\\\\NotificationRepository\\:\\:countUnreadByUser\\(\\) expects Chill\\\\MainBundle\\\\Entity\\\\User, Symfony\\\\Component\\\\Security\\\\Core\\\\User\\\\UserInterface\\|null given\\.$#" + count: 1 + path: src/Bundle/ChillMainBundle/Controller/NotificationApiController.php + + - + message: "#^Parameter \\#1 \\$user of method Chill\\\\MainBundle\\\\Repository\\\\NotificationRepository\\:\\:findUnreadByUser\\(\\) expects Chill\\\\MainBundle\\\\Entity\\\\User, Symfony\\\\Component\\\\Security\\\\Core\\\\User\\\\UserInterface\\|null given\\.$#" + count: 1 + path: src/Bundle/ChillMainBundle/Controller/NotificationApiController.php + + - + message: "#^Parameter \\#1 \\$addressee of method Chill\\\\MainBundle\\\\Repository\\\\NotificationRepository\\:\\:countAllForAttendee\\(\\) expects Chill\\\\MainBundle\\\\Entity\\\\User, Symfony\\\\Component\\\\Security\\\\Core\\\\User\\\\UserInterface\\|null given\\.$#" + count: 1 + path: src/Bundle/ChillMainBundle/Controller/NotificationController.php + + - + message: "#^Parameter \\#1 \\$addressee of method Chill\\\\MainBundle\\\\Repository\\\\NotificationRepository\\:\\:findAllForAttendee\\(\\) expects Chill\\\\MainBundle\\\\Entity\\\\User, Symfony\\\\Component\\\\Security\\\\Core\\\\User\\\\UserInterface\\|null given\\.$#" + count: 1 + path: src/Bundle/ChillMainBundle/Controller/NotificationController.php + + - + message: "#^Parameter \\#1 \\$sender of method Chill\\\\MainBundle\\\\Repository\\\\NotificationRepository\\:\\:countAllForSender\\(\\) expects Chill\\\\MainBundle\\\\Entity\\\\User, Symfony\\\\Component\\\\Security\\\\Core\\\\User\\\\UserInterface\\|null given\\.$#" + count: 1 + path: src/Bundle/ChillMainBundle/Controller/NotificationController.php + + - + message: "#^Parameter \\#1 \\$sender of method Chill\\\\MainBundle\\\\Repository\\\\NotificationRepository\\:\\:findAllForSender\\(\\) expects Chill\\\\MainBundle\\\\Entity\\\\User, Symfony\\\\Component\\\\Security\\\\Core\\\\User\\\\UserInterface\\|null given\\.$#" + count: 1 + path: src/Bundle/ChillMainBundle/Controller/NotificationController.php + + - + message: "#^Parameter \\#1 \\$user of method Chill\\\\MainBundle\\\\Repository\\\\NotificationRepository\\:\\:countUnreadByUserWhereAddressee\\(\\) expects Chill\\\\MainBundle\\\\Entity\\\\User, Symfony\\\\Component\\\\Security\\\\Core\\\\User\\\\UserInterface\\|null given\\.$#" + count: 1 + path: src/Bundle/ChillMainBundle/Controller/NotificationController.php + + - + message: "#^Parameter \\#1 \\$user of method Chill\\\\MainBundle\\\\Repository\\\\NotificationRepository\\:\\:countUnreadByUserWhereSender\\(\\) expects Chill\\\\MainBundle\\\\Entity\\\\User, Symfony\\\\Component\\\\Security\\\\Core\\\\User\\\\UserInterface\\|null given\\.$#" + count: 1 + path: src/Bundle/ChillMainBundle/Controller/NotificationController.php + + - + message: "#^Parameter \\#1 \\$event of method Symfony\\\\Contracts\\\\EventDispatcher\\\\EventDispatcherInterface\\:\\:dispatch\\(\\) expects object, string given\\.$#" + count: 4 + path: src/Bundle/ChillMainBundle/Controller/PasswordController.php + + - + message: "#^Parameter \\#1 \\$token of class Chill\\\\MainBundle\\\\Security\\\\PasswordRecover\\\\PasswordRecoverEvent constructor expects Chill\\\\MainBundle\\\\Security\\\\PasswordRecover\\\\type\\|null, string given\\.$#" + count: 2 + path: src/Bundle/ChillMainBundle/Controller/PasswordController.php + + - + message: "#^Parameter \\#3 \\$ip of class Chill\\\\MainBundle\\\\Security\\\\PasswordRecover\\\\PasswordRecoverEvent constructor expects Chill\\\\MainBundle\\\\Security\\\\PasswordRecover\\\\type\\|null, string\\|null given\\.$#" + count: 4 + path: src/Bundle/ChillMainBundle/Controller/PasswordController.php + + - + message: "#^Parameter \\#1 \\$context of method Chill\\\\MainBundle\\\\Timeline\\\\TimelineBuilder\\:\\:countItems\\(\\) expects Chill\\\\MainBundle\\\\Timeline\\\\unknown, string given\\.$#" + count: 1 + path: src/Bundle/ChillMainBundle/Controller/TimelineCenterController.php + + - + message: "#^Parameter \\#1 \\$user of method Chill\\\\MainBundle\\\\Entity\\\\Workflow\\\\EntityWorkflow\\:\\:addSubscriberToFinal\\(\\) expects Chill\\\\MainBundle\\\\Entity\\\\User, Symfony\\\\Component\\\\Security\\\\Core\\\\User\\\\UserInterface\\|null given\\.$#" + count: 1 + path: src/Bundle/ChillMainBundle/Controller/WorkflowApiController.php + + - + message: "#^Parameter \\#1 \\$user of method Chill\\\\MainBundle\\\\Entity\\\\Workflow\\\\EntityWorkflow\\:\\:addSubscriberToStep\\(\\) expects Chill\\\\MainBundle\\\\Entity\\\\User, Symfony\\\\Component\\\\Security\\\\Core\\\\User\\\\UserInterface\\|null given\\.$#" + count: 1 + path: src/Bundle/ChillMainBundle/Controller/WorkflowApiController.php + + - + message: "#^Parameter \\#1 \\$user of method Chill\\\\MainBundle\\\\Entity\\\\Workflow\\\\EntityWorkflow\\:\\:isUserSubscribedToFinal\\(\\) expects Chill\\\\MainBundle\\\\Entity\\\\User, Symfony\\\\Component\\\\Security\\\\Core\\\\User\\\\UserInterface\\|null given\\.$#" + count: 1 + path: src/Bundle/ChillMainBundle/Controller/WorkflowApiController.php + + - + message: "#^Parameter \\#1 \\$user of method Chill\\\\MainBundle\\\\Entity\\\\Workflow\\\\EntityWorkflow\\:\\:isUserSubscribedToStep\\(\\) expects Chill\\\\MainBundle\\\\Entity\\\\User, Symfony\\\\Component\\\\Security\\\\Core\\\\User\\\\UserInterface\\|null given\\.$#" + count: 1 + path: src/Bundle/ChillMainBundle/Controller/WorkflowApiController.php + + - + message: "#^Parameter \\#1 \\$user of method Chill\\\\MainBundle\\\\Entity\\\\Workflow\\\\EntityWorkflow\\:\\:removeSubscriberToFinal\\(\\) expects Chill\\\\MainBundle\\\\Entity\\\\User, Symfony\\\\Component\\\\Security\\\\Core\\\\User\\\\UserInterface\\|null given\\.$#" + count: 1 + path: src/Bundle/ChillMainBundle/Controller/WorkflowApiController.php + + - + message: "#^Parameter \\#1 \\$user of method Chill\\\\MainBundle\\\\Entity\\\\Workflow\\\\EntityWorkflow\\:\\:removeSubscriberToStep\\(\\) expects Chill\\\\MainBundle\\\\Entity\\\\User, Symfony\\\\Component\\\\Security\\\\Core\\\\User\\\\UserInterface\\|null given\\.$#" + count: 1 + path: src/Bundle/ChillMainBundle/Controller/WorkflowApiController.php + + - + message: "#^Parameter \\#1 \\$place of method Chill\\\\MainBundle\\\\DependencyInjection\\\\Configuration\\:\\:filterWidgetByPlace\\(\\) expects string, Chill\\\\MainBundle\\\\DependencyInjection\\\\Widget\\\\type given\\.$#" + count: 1 + path: src/Bundle/ChillMainBundle/DependencyInjection/Configuration.php + + - + message: "#^Parameter \\#1 \\$place of method Chill\\\\MainBundle\\\\DependencyInjection\\\\Configuration\\:\\:getWidgetAliasesbyPlace\\(\\) expects Chill\\\\MainBundle\\\\DependencyInjection\\\\Widget\\\\type, string given\\.$#" + count: 1 + path: src/Bundle/ChillMainBundle/DependencyInjection/Configuration.php + + - + message: "#^Parameter \\#2 \\$array of function implode expects array\\|null, Chill\\\\MainBundle\\\\DependencyInjection\\\\Widget\\\\type given\\.$#" + count: 1 + path: src/Bundle/ChillMainBundle/DependencyInjection/Configuration.php + + - + message: "#^Parameter \\#2 \\$place of method Chill\\\\MainBundle\\\\DependencyInjection\\\\Widget\\\\Factory\\\\WidgetFactoryInterface\\:\\:createDefinition\\(\\) expects Chill\\\\MainBundle\\\\DependencyInjection\\\\Widget\\\\Factory\\\\type, string given\\.$#" + count: 1 + path: src/Bundle/ChillMainBundle/DependencyInjection/Widget/AbstractWidgetsCompilerPass.php + + - + message: "#^Parameter \\#3 \\$order of method Chill\\\\MainBundle\\\\DependencyInjection\\\\Widget\\\\Factory\\\\WidgetFactoryInterface\\:\\:createDefinition\\(\\) expects Chill\\\\MainBundle\\\\DependencyInjection\\\\Widget\\\\Factory\\\\type, float given\\.$#" + count: 1 + path: src/Bundle/ChillMainBundle/DependencyInjection/Widget/AbstractWidgetsCompilerPass.php + + - + message: "#^Parameter \\#2 \\$place of method Chill\\\\MainBundle\\\\DependencyInjection\\\\Widget\\\\Factory\\\\WidgetFactoryInterface\\:\\:getServiceId\\(\\) expects string, Chill\\\\MainBundle\\\\DependencyInjection\\\\Widget\\\\Factory\\\\type given\\.$#" + count: 1 + path: src/Bundle/ChillMainBundle/DependencyInjection/Widget/Factory/AbstractWidgetFactory.php + + - + message: "#^Parameter \\#3 \\$order of method Chill\\\\MainBundle\\\\DependencyInjection\\\\Widget\\\\Factory\\\\WidgetFactoryInterface\\:\\:getServiceId\\(\\) expects float, Chill\\\\MainBundle\\\\DependencyInjection\\\\Widget\\\\Factory\\\\type given\\.$#" + count: 1 + path: src/Bundle/ChillMainBundle/DependencyInjection/Widget/Factory/AbstractWidgetFactory.php + + - + message: "#^Parameter \\#1 \\$iterator of function iterator_to_array expects Traversable, array\\ given\\.$#" + count: 1 + path: src/Bundle/ChillMainBundle/Export/ExportManager.php + + - + message: "#^Parameter \\#2 \\$nbAggregators of method Chill\\\\MainBundle\\\\Export\\\\Formatter\\\\CSVFormatter\\:\\:appendAggregatorForm\\(\\) expects string, int\\<0, max\\> given\\.$#" + count: 1 + path: src/Bundle/ChillMainBundle/Export/Formatter/CSVFormatter.php + + - + message: "#^Parameter \\#2 \\$array of function array_map expects array, Chill\\\\MainBundle\\\\Export\\\\Formatter\\\\type given\\.$#" + count: 1 + path: src/Bundle/ChillMainBundle/Export/Formatter/SpreadSheetFormatter.php + + - + message: "#^Parameter \\#2 \\$nbAggregators of method Chill\\\\MainBundle\\\\Export\\\\Formatter\\\\SpreadSheetFormatter\\:\\:appendAggregatorForm\\(\\) expects string, int\\<0, max\\> given\\.$#" + count: 1 + path: src/Bundle/ChillMainBundle/Export/Formatter/SpreadSheetFormatter.php + + - + message: "#^Parameter \\#1 \\$callback of function call_user_func expects callable\\(\\)\\: mixed, null given\\.$#" + count: 2 + path: src/Bundle/ChillMainBundle/Form/ChoiceLoader/PostalCodeChoiceLoader.php + + - + message: "#^Parameter \\#1 \\$user of method Chill\\\\MainBundle\\\\Entity\\\\Embeddable\\\\PrivateCommentEmbeddable\\:\\:getCommentForUser\\(\\) expects Chill\\\\MainBundle\\\\Entity\\\\User, Symfony\\\\Component\\\\Security\\\\Core\\\\User\\\\UserInterface\\|null given\\.$#" + count: 1 + path: src/Bundle/ChillMainBundle/Form/DataMapper/PrivateCommentDataMapper.php + + - + message: "#^Parameter \\#1 \\$em of class Chill\\\\MainBundle\\\\Form\\\\Type\\\\DataTransformer\\\\ObjectToIdTransformer constructor expects Doctrine\\\\ORM\\\\EntityManagerInterface, Doctrine\\\\Persistence\\\\ObjectManager given\\.$#" + count: 1 + path: src/Bundle/ChillMainBundle/Form/Type/Select2CountryType.php + + - + message: "#^Parameter \\#1 \\$em of class Chill\\\\MainBundle\\\\Form\\\\Type\\\\DataTransformer\\\\MultipleObjectsToIdTransformer constructor expects Doctrine\\\\ORM\\\\EntityManagerInterface, Doctrine\\\\Persistence\\\\ObjectManager given\\.$#" + count: 1 + path: src/Bundle/ChillMainBundle/Form/Type/Select2LanguageType.php + + - + message: "#^Parameter \\#1 \\$translatableStrings of method Chill\\\\MainBundle\\\\Templating\\\\TranslatableStringHelper\\:\\:localize\\(\\) expects array, string given\\.$#" + count: 1 + path: src/Bundle/ChillMainBundle/Form/Type/Select2LanguageType.php + + - + message: "#^Parameter \\#1 \\$datetime of class DateTime constructor expects string, Chill\\\\MainBundle\\\\Search\\\\type given\\.$#" + count: 1 + path: src/Bundle/ChillMainBundle/Search/AbstractSearch.php + + - + message: "#^Parameter \\#4 \\$paginator of method Chill\\\\MainBundle\\\\Search\\\\SearchApi\\:\\:fetchRawResult\\(\\) expects Chill\\\\MainBundle\\\\Pagination\\\\Paginator, Chill\\\\MainBundle\\\\Pagination\\\\PaginatorInterface given\\.$#" + count: 1 + path: src/Bundle/ChillMainBundle/Search/SearchApi.php + + - + message: "#^Parameter \\#2 \\$callback of function uasort expects callable\\(Chill\\\\MainBundle\\\\Search\\\\HasAdvancedSearchForm, Chill\\\\MainBundle\\\\Search\\\\HasAdvancedSearchForm\\)\\: int, Closure\\(Chill\\\\MainBundle\\\\Search\\\\SearchInterface, Chill\\\\MainBundle\\\\Search\\\\SearchInterface\\)\\: \\-1\\|0\\|1 given\\.$#" + count: 1 + path: src/Bundle/ChillMainBundle/Search/SearchProvider.php + + - + message: "#^Parameter \\#2 \\$subject of function preg_match_all expects string, Chill\\\\MainBundle\\\\Search\\\\type given\\.$#" + count: 1 + path: src/Bundle/ChillMainBundle/Search/SearchProvider.php + + - + message: "#^Parameter \\#1 \\$object of function get_class expects object, array\\ given\\.$#" + count: 1 + path: src/Bundle/ChillMainBundle/Security/Authorization/AuthorizationHelper.php + + - + message: "#^Parameter \\#1 \\$user of method Chill\\\\MainBundle\\\\Entity\\\\Notification\\:\\:isReadBy\\(\\) expects Chill\\\\MainBundle\\\\Entity\\\\User, Symfony\\\\Component\\\\Security\\\\Core\\\\User\\\\UserInterface\\|null given\\.$#" + count: 1 + path: src/Bundle/ChillMainBundle/Serializer/Normalizer/NotificationNormalizer.php + + - + message: "#^Parameter \\#1 \\$user of method Chill\\\\MainBundle\\\\Entity\\\\Embeddable\\\\PrivateCommentEmbeddable\\:\\:setCommentForUser\\(\\) expects Chill\\\\MainBundle\\\\Entity\\\\User, Symfony\\\\Component\\\\Security\\\\Core\\\\User\\\\UserInterface\\|null given\\.$#" + count: 1 + path: src/Bundle/ChillMainBundle/Serializer/Normalizer/PrivateCommentEmbeddableNormalizer.php + + - + message: "#^Parameter \\#1 \\$event of method Symfony\\\\Contracts\\\\EventDispatcher\\\\EventDispatcherInterface\\:\\:dispatch\\(\\) expects object, string given\\.$#" + count: 1 + path: src/Bundle/ChillMainBundle/Templating/Widget/WidgetRenderingTwig.php + + - + message: "#^Parameter \\#1 \\$context of method Chill\\\\MainBundle\\\\Timeline\\\\TimelineBuilder\\:\\:buildUnionQuery\\(\\) expects string, Chill\\\\MainBundle\\\\Timeline\\\\unknown given\\.$#" + count: 1 + path: src/Bundle/ChillMainBundle/Timeline/TimelineBuilder.php + + - + message: "#^Parameter \\#2 \\$context of method Chill\\\\MainBundle\\\\Timeline\\\\TimelineProviderInterface\\:\\:getEntityTemplate\\(\\) expects Chill\\\\MainBundle\\\\Timeline\\\\type, string given\\.$#" + count: 1 + path: src/Bundle/ChillMainBundle/Timeline/TimelineBuilder.php + + - + message: "#^Parameter \\#1 \\$phoneNumber of method Chill\\\\MainBundle\\\\Phonenumber\\\\PhoneNumberHelperInterface\\:\\:format\\(\\) expects libphonenumber\\\\PhoneNumber\\|null, string given\\.$#" + count: 1 + path: src/Bundle/ChillMainBundle/Validation/Validator/ValidPhonenumber.php + + - + message: "#^Parameter \\#1 \\$transitionBy of method Chill\\\\MainBundle\\\\Entity\\\\Workflow\\\\EntityWorkflowStep\\:\\:setTransitionBy\\(\\) expects Chill\\\\MainBundle\\\\Entity\\\\User\\|null, Symfony\\\\Component\\\\Security\\\\Core\\\\User\\\\UserInterface\\|null given\\.$#" + count: 1 + path: src/Bundle/ChillMainBundle/Workflow/EventSubscriber/EntityWorkflowTransitionEventSubscriber.php + + - + message: "#^Parameter \\#1 \\$event of method Symfony\\\\Contracts\\\\EventDispatcher\\\\EventDispatcherInterface\\:\\:dispatch\\(\\) expects object, string given\\.$#" + count: 2 + path: src/Bundle/ChillPersonBundle/Actions/Remove/PersonMove.php + + - + message: "#^Parameter \\#1 \\$event of method Symfony\\\\Contracts\\\\EventDispatcher\\\\EventDispatcherInterface\\:\\:dispatch\\(\\) expects object, string given\\.$#" + count: 1 + path: src/Bundle/ChillPersonBundle/Controller/AccompanyingCourseApiController.php + + - + message: "#^Parameter \\#1 \\$event of method Symfony\\\\Contracts\\\\EventDispatcher\\\\EventDispatcherInterface\\:\\:dispatch\\(\\) expects object, string given\\.$#" + count: 1 + path: src/Bundle/ChillPersonBundle/Controller/AccompanyingPeriodController.php + + - + message: "#^Parameter \\#2 \\$callback of function usort expects callable\\(mixed, mixed\\)\\: int, Closure\\(mixed, mixed\\)\\: bool given\\.$#" + count: 1 + path: src/Bundle/ChillPersonBundle/Controller/AccompanyingPeriodController.php + + - + message: "#^Parameter \\#1 \\$user of method Chill\\\\PersonBundle\\\\Repository\\\\AccompanyingPeriod\\\\AccompanyingPeriodWorkEvaluationRepository\\:\\:countNearMaxDateByUser\\(\\) expects Chill\\\\MainBundle\\\\Entity\\\\User, Symfony\\\\Component\\\\Security\\\\Core\\\\User\\\\UserInterface\\|null given\\.$#" + count: 1 + path: src/Bundle/ChillPersonBundle/Controller/AccompanyingPeriodWorkEvaluationApiController.php + + - + message: "#^Parameter \\#1 \\$user of method Chill\\\\PersonBundle\\\\Repository\\\\AccompanyingPeriod\\\\AccompanyingPeriodWorkEvaluationRepository\\:\\:findNearMaxDateByUser\\(\\) expects Chill\\\\MainBundle\\\\Entity\\\\User, Symfony\\\\Component\\\\Security\\\\Core\\\\User\\\\UserInterface\\|null given\\.$#" + count: 1 + path: src/Bundle/ChillPersonBundle/Controller/AccompanyingPeriodWorkEvaluationApiController.php + + - + message: "#^Parameter \\#1 \\$object of static method DateTimeImmutable\\:\\:createFromMutable\\(\\) expects DateTime, DateTimeInterface given\\.$#" + count: 1 + path: src/Bundle/ChillPersonBundle/Controller/HouseholdApiController.php + + - + message: "#^Parameter \\#2 \\$callback of function usort expects callable\\(mixed, mixed\\)\\: int, Closure\\(mixed, mixed\\)\\: bool given\\.$#" + count: 1 + path: src/Bundle/ChillPersonBundle/Controller/HouseholdController.php + + - + message: "#^Parameter \\#2 \\$previous of class Symfony\\\\Component\\\\HttpKernel\\\\Exception\\\\BadRequestHttpException constructor expects Throwable\\|null, int given\\.$#" + count: 1 + path: src/Bundle/ChillPersonBundle/Controller/HouseholdMemberController.php + + - + message: "#^Parameter \\#3 \\$code of class Symfony\\\\Component\\\\HttpKernel\\\\Exception\\\\BadRequestHttpException constructor expects int, Symfony\\\\Component\\\\Serializer\\\\Exception\\\\InvalidArgumentException\\|Symfony\\\\Component\\\\Serializer\\\\Exception\\\\UnexpectedValueException given\\.$#" + count: 1 + path: src/Bundle/ChillPersonBundle/Controller/HouseholdMemberController.php + + - + message: "#^Parameter \\#1 \\$event of method Symfony\\\\Contracts\\\\EventDispatcher\\\\EventDispatcherInterface\\:\\:dispatch\\(\\) expects object, string given\\.$#" + count: 2 + path: src/Bundle/ChillPersonBundle/Controller/PersonController.php + + - + message: "#^Parameter \\#1 \\$form of method Chill\\\\PersonBundle\\\\Controller\\\\PersonController\\:\\:isLastPostDataChanges\\(\\) expects Symfony\\\\Component\\\\Form\\\\Form, Symfony\\\\Component\\\\Form\\\\FormInterface given\\.$#" + count: 1 + path: src/Bundle/ChillPersonBundle/Controller/PersonController.php + + - + message: "#^Parameter \\#1 \\$event of method Symfony\\\\Contracts\\\\EventDispatcher\\\\EventDispatcherInterface\\:\\:dispatch\\(\\) expects object, string given\\.$#" + count: 1 + path: src/Bundle/ChillPersonBundle/Controller/PersonDuplicateController.php + + - + message: "#^Parameter \\#2 \\$precision of method Chill\\\\PersonBundle\\\\Search\\\\SimilarPersonMatcher\\:\\:matchPerson\\(\\) expects float, Chill\\\\PersonBundle\\\\Repository\\\\PersonNotDuplicateRepository given\\.$#" + count: 1 + path: src/Bundle/ChillPersonBundle/Controller/PersonDuplicateController.php + + - + message: "#^Parameter \\#3 \\$orderBy of method Chill\\\\PersonBundle\\\\Search\\\\SimilarPersonMatcher\\:\\:matchPerson\\(\\) expects string, float given\\.$#" + count: 1 + path: src/Bundle/ChillPersonBundle/Controller/PersonDuplicateController.php + + - + message: "#^Parameter \\#4 \\$addYearComparison of method Chill\\\\PersonBundle\\\\Search\\\\SimilarPersonMatcher\\:\\:matchPerson\\(\\) expects bool, string given\\.$#" + count: 1 + path: src/Bundle/ChillPersonBundle/Controller/PersonDuplicateController.php + + - + message: "#^Parameter \\#1 \\$context of method Chill\\\\MainBundle\\\\Timeline\\\\TimelineBuilder\\:\\:countItems\\(\\) expects Chill\\\\MainBundle\\\\Timeline\\\\unknown, string given\\.$#" + count: 1 + path: src/Bundle/ChillPersonBundle/Controller/TimelinePersonController.php + + - + message: "#^Parameter \\#1 \\$event of method Symfony\\\\Contracts\\\\EventDispatcher\\\\EventDispatcherInterface\\:\\:dispatch\\(\\) expects object, string given\\.$#" + count: 1 + path: src/Bundle/ChillPersonBundle/Controller/TimelinePersonController.php + + - + message: "#^Parameter \\#1 \\$period of method Chill\\\\PersonBundle\\\\Entity\\\\AccompanyingPeriod\\\\AccompanyingPeriodLocationHistory\\:\\:setPeriod\\(\\) expects Chill\\\\PersonBundle\\\\Entity\\\\AccompanyingPeriod, null given\\.$#" + count: 1 + path: src/Bundle/ChillPersonBundle/Entity/AccompanyingPeriod.php + + - + message: "#^Parameter \\#1 \\$now of method Chill\\\\PersonBundle\\\\Entity\\\\Household\\\\Household\\:\\:getCurrentMembers\\(\\) expects DateTimeImmutable\\|null, DateTimeInterface\\|null given\\.$#" + count: 2 + path: src/Bundle/ChillPersonBundle/Entity/Household/Household.php + + - + message: "#^Parameter \\#1 \\$now of method Chill\\\\PersonBundle\\\\Entity\\\\Household\\\\Household\\:\\:getNonCurrentMembers\\(\\) expects DateTimeImmutable\\|null, DateTimeInterface\\|null given\\.$#" + count: 2 + path: src/Bundle/ChillPersonBundle/Entity/Household/Household.php + + - + message: "#^Parameter \\#1 \\$key of method Doctrine\\\\Common\\\\Collections\\\\Collection\\<\\(int\\|string\\),mixed\\>\\:\\:remove\\(\\) expects \\(int\\|string\\), Chill\\\\PersonBundle\\\\Entity\\\\SocialWork\\\\SocialAction given\\.$#" + count: 1 + path: src/Bundle/ChillPersonBundle/Entity/SocialWork/Evaluation.php + + - + message: "#^Parameter \\#1 \\$translatableStrings of method Chill\\\\MainBundle\\\\Templating\\\\TranslatableStringHelper\\:\\:localize\\(\\) expects array, string given\\.$#" + count: 1 + path: src/Bundle/ChillPersonBundle/Export/Helper/ListPersonHelper.php + + - + message: "#^Parameter \\#1 \\$callback of function call_user_func expects callable\\(\\)\\: mixed, null given\\.$#" + count: 2 + path: src/Bundle/ChillPersonBundle/Form/ChoiceLoader/PersonChoiceLoader.php + + - + message: "#^Parameter \\#1 \\$entityName of method Doctrine\\\\ORM\\\\EntityManager\\:\\:getRepository\\(\\) expects class\\-string\\, string given\\.$#" + count: 1 + path: src/Bundle/ChillPersonBundle/Timeline/AbstractTimelineAccompanyingPeriod.php + + - + message: "#^Parameter \\#1 \\$user of method Chill\\\\MainBundle\\\\Security\\\\Authorization\\\\AuthorizationHelper\\:\\:filterReachableCenters\\(\\) expects Chill\\\\MainBundle\\\\Entity\\\\User, Symfony\\\\Component\\\\Security\\\\Core\\\\User\\\\UserInterface\\|null given\\.$#" + count: 1 + path: src/Bundle/ChillPersonBundle/Timeline/AbstractTimelineAccompanyingPeriod.php + + - + message: "#^Parameter \\#3 \\$context of method Chill\\\\PersonBundle\\\\Timeline\\\\AbstractTimelineAccompanyingPeriod\\:\\:getBasicEntityTemplate\\(\\) expects string, Chill\\\\MainBundle\\\\Timeline\\\\type given\\.$#" + count: 1 + path: src/Bundle/ChillPersonBundle/Timeline/TimelineAccompanyingPeriodClosing.php + + - + message: "#^Parameter \\#3 \\$context of method Chill\\\\PersonBundle\\\\Timeline\\\\AbstractTimelineAccompanyingPeriod\\:\\:getBasicEntityTemplate\\(\\) expects string, Chill\\\\MainBundle\\\\Timeline\\\\type given\\.$#" + count: 1 + path: src/Bundle/ChillPersonBundle/Timeline/TimelineAccompanyingPeriodOpening.php + + - + message: "#^Parameter \\#2 \\$role of method Chill\\\\MainBundle\\\\Security\\\\Authorization\\\\AuthorizationHelperInterface\\:\\:getReachableCenters\\(\\) expects string, Symfony\\\\Component\\\\Security\\\\Core\\\\Role\\\\Role given\\.$#" + count: 1 + path: src/Bundle/ChillPersonBundle/Widget/PersonListWidget.php + + - + message: "#^Parameter \\#1 \\$className of method Doctrine\\\\Persistence\\\\ObjectManager\\:\\:getRepository\\(\\) expects class\\-string\\, string given\\.$#" + count: 4 + path: src/Bundle/ChillReportBundle/Controller/ReportController.php + + - + message: "#^Parameter \\#1 \\$entity of method Chill\\\\ReportBundle\\\\Controller\\\\ReportController\\:\\:createEditForm\\(\\) expects Chill\\\\ReportBundle\\\\Entity\\\\Report, ChillReportBundle\\:Report given\\.$#" + count: 1 + path: src/Bundle/ChillReportBundle/Controller/ReportController.php + + - + message: "#^Parameter \\#1 \\$event of method Symfony\\\\Contracts\\\\EventDispatcher\\\\EventDispatcherInterface\\:\\:dispatch\\(\\) expects object, string given\\.$#" + count: 4 + path: src/Bundle/ChillReportBundle/Controller/ReportController.php + + - + message: "#^Parameter \\#2 \\$role of method Chill\\\\MainBundle\\\\Security\\\\Authorization\\\\AuthorizationHelper\\:\\:getReachableScopes\\(\\) expects string, Symfony\\\\Component\\\\Security\\\\Core\\\\Role\\\\Role given\\.$#" + count: 1 + path: src/Bundle/ChillReportBundle/Controller/ReportController.php + + - + message: "#^Parameter \\#1 \\$em of class Chill\\\\MainBundle\\\\Form\\\\Type\\\\DataTransformer\\\\ScopeTransformer constructor expects Doctrine\\\\ORM\\\\EntityManagerInterface, Doctrine\\\\Persistence\\\\ObjectManager given\\.$#" + count: 1 + path: src/Bundle/ChillReportBundle/Form/ReportType.php + + - + message: "#^Parameter \\#2 \\$role of method Chill\\\\MainBundle\\\\Security\\\\Authorization\\\\AuthorizationHelper\\:\\:getReachableScopes\\(\\) expects string, Symfony\\\\Component\\\\Security\\\\Core\\\\Role\\\\Role given\\.$#" + count: 1 + path: src/Bundle/ChillReportBundle/Form/ReportType.php + + - + message: "#^Parameter \\#2 \\$role of method Chill\\\\MainBundle\\\\Security\\\\Authorization\\\\AuthorizationHelper\\:\\:getReachableCenters\\(\\) expects string, Symfony\\\\Component\\\\Security\\\\Core\\\\Role\\\\Role given\\.$#" + count: 1 + path: src/Bundle/ChillReportBundle/Search/ReportSearch.php + + - + message: "#^Parameter \\#2 \\$role of method Chill\\\\MainBundle\\\\Security\\\\Authorization\\\\AuthorizationHelper\\:\\:getReachableScopes\\(\\) expects string, Symfony\\\\Component\\\\Security\\\\Core\\\\Role\\\\Role given\\.$#" + count: 1 + path: src/Bundle/ChillReportBundle/Search/ReportSearch.php + + - + message: "#^Parameter \\#1 \\$context of method Chill\\\\ReportBundle\\\\Timeline\\\\TimelineReportProvider\\:\\:checkContext\\(\\) expects string, Chill\\\\MainBundle\\\\Timeline\\\\type given\\.$#" + count: 1 + path: src/Bundle/ChillReportBundle/Timeline/TimelineReportProvider.php + + - + message: "#^Parameter \\#1 \\$entity of method Chill\\\\ReportBundle\\\\Timeline\\\\TimelineReportProvider\\:\\:getFieldsToRender\\(\\) expects Chill\\\\ReportBundle\\\\Entity\\\\Report, Chill\\\\MainBundle\\\\Timeline\\\\type given\\.$#" + count: 1 + path: src/Bundle/ChillReportBundle/Timeline/TimelineReportProvider.php + + - + message: "#^Parameter \\#1 \\$entityName of method Doctrine\\\\ORM\\\\EntityManager\\:\\:getRepository\\(\\) expects class\\-string\\, string given\\.$#" + count: 1 + path: src/Bundle/ChillReportBundle/Timeline/TimelineReportProvider.php + + - + message: "#^Parameter \\#1 \\$event of method Symfony\\\\Contracts\\\\EventDispatcher\\\\EventDispatcherInterface\\:\\:dispatch\\(\\) expects object, string given\\.$#" + count: 6 + path: src/Bundle/ChillTaskBundle/Controller/SingleTaskController.php + + - + message: "#^Parameter \\#1 \\$event of method Symfony\\\\Contracts\\\\EventDispatcher\\\\EventDispatcherInterface\\:\\:dispatch\\(\\) expects object, string given\\.$#" + count: 1 + path: src/Bundle/ChillTaskBundle/Controller/TaskController.php + + - + message: "#^Parameter \\#1 \\$keys of function array_fill_keys expects array, Chill\\\\TaskBundle\\\\Entity\\\\json given\\.$#" + count: 1 + path: src/Bundle/ChillTaskBundle/Entity/AbstractTask.php + + - + message: "#^Parameter \\#1 \\$task of method Chill\\\\TaskBundle\\\\Entity\\\\Task\\\\SingleTaskPlaceEvent\\:\\:setTask\\(\\) expects Chill\\\\TaskBundle\\\\Entity\\\\SingleTask, Chill\\\\TaskBundle\\\\Entity\\\\AbstractTask given\\.$#" + count: 1 + path: src/Bundle/ChillTaskBundle/Event/Lifecycle/TaskLifecycleEvent.php + + - + message: "#^Parameter \\#1 \\$repository of class Chill\\\\PersonBundle\\\\Form\\\\DataTransformer\\\\PersonToIdTransformer constructor expects Chill\\\\PersonBundle\\\\Repository\\\\PersonRepository, Doctrine\\\\ORM\\\\EntityManagerInterface given\\.$#" + count: 1 + path: src/Bundle/ChillTaskBundle/Form/SingleTaskListType.php + + - + message: "#^Parameter \\#2 \\$role of method Chill\\\\MainBundle\\\\Security\\\\Authorization\\\\AuthorizationHelper\\:\\:getReachableCenters\\(\\) expects string, Symfony\\\\Component\\\\Security\\\\Core\\\\Role\\\\Role given\\.$#" + count: 4 + path: src/Bundle/ChillTaskBundle/Form/SingleTaskListType.php + + - + message: "#^Parameter \\#1 \\$extras of method Knp\\\\Menu\\\\MenuItem\\:\\:setExtras\\(\\) expects array\\, string given\\.$#" + count: 1 + path: src/Bundle/ChillTaskBundle/Menu/MenuBuilder.php + + - + message: "#^Parameter \\#2 \\$role of method Chill\\\\MainBundle\\\\Security\\\\Authorization\\\\AuthorizationHelper\\:\\:getReachableCenters\\(\\) expects string, Symfony\\\\Component\\\\Security\\\\Core\\\\Role\\\\Role given\\.$#" + count: 1 + path: src/Bundle/ChillTaskBundle/Repository/SingleTaskRepository.php + + - + message: "#^Parameter \\#1 \\$event of method Symfony\\\\Contracts\\\\EventDispatcher\\\\EventDispatcherInterface\\:\\:dispatch\\(\\) expects object, string given\\.$#" + count: 1 + path: src/Bundle/ChillTaskBundle/Security/Authorization/TaskVoter.php + + - + message: "#^Parameter \\#2 \\$role of method Chill\\\\MainBundle\\\\Security\\\\Authorization\\\\AuthorizationHelper\\:\\:getReachableCenters\\(\\) expects string, Symfony\\\\Component\\\\Security\\\\Core\\\\Role\\\\Role given\\.$#" + count: 1 + path: src/Bundle/ChillTaskBundle/Timeline/TaskLifeCycleEventTimelineProvider.php + + - + message: "#^Parameter \\#1 \\$storedObject of method Chill\\\\WopiBundle\\\\Service\\\\Wopi\\\\ChillDocumentManager\\:\\:getContent\\(\\) expects Chill\\\\DocStoreBundle\\\\Entity\\\\StoredObject, ChampsLibres\\\\WopiLib\\\\Contract\\\\Entity\\\\Document given\\.$#" + count: 3 + path: src/Bundle/ChillWopiBundle/src/Service/Wopi/ChillDocumentManager.php + + - + message: "#^Parameter \\#1 \\$storedObject of method Chill\\\\WopiBundle\\\\Service\\\\Wopi\\\\ChillDocumentManager\\:\\:setContent\\(\\) expects Chill\\\\DocStoreBundle\\\\Entity\\\\StoredObject, ChampsLibres\\\\WopiLib\\\\Contract\\\\Entity\\\\Document given\\.$#" + count: 1 + path: src/Bundle/ChillWopiBundle/src/Service/Wopi/ChillDocumentManager.php + + - + message: "#^Parameter \\#1 \\$type of method Chill\\\\DocStoreBundle\\\\Entity\\\\StoredObject\\:\\:setType\\(\\) expects string\\|null, false given\\.$#" + count: 1 + path: src/Bundle/ChillWopiBundle/src/Service/Wopi/ChillDocumentManager.php diff --git a/phpstan-baseline.neon b/phpstan-baseline.neon index 20970a799..a89386f29 100644 --- a/phpstan-baseline.neon +++ b/phpstan-baseline.neon @@ -1,10 +1,5 @@ parameters: ignoreErrors: - - - message: "#^Variable property access on \\$this\\(Chill\\\\ActivityBundle\\\\Entity\\\\ActivityType\\)\\.$#" - count: 3 - path: src/Bundle/ChillActivityBundle/Entity/ActivityType.php - - message: "#^Foreach overwrites \\$key with its key variable\\.$#" count: 1 @@ -20,11 +15,6 @@ parameters: count: 1 path: src/Bundle/ChillEventBundle/Form/ChoiceLoader/EventChoiceLoader.php - - - message: "#^Variable method call on object\\.$#" - count: 2 - path: src/Bundle/ChillMainBundle/CRUD/Controller/ApiController.php - - message: "#^Cannot unset offset '_token' on array\\{formatter\\: mixed, export\\: mixed, centers\\: mixed, alias\\: string\\}\\.$#" count: 1 @@ -50,46 +40,11 @@ parameters: count: 1 path: src/Bundle/ChillMainBundle/Form/ChoiceLoader/PostalCodeChoiceLoader.php - - - message: "#^Variable \\$message on left side of \\?\\? always exists and is not nullable\\.$#" - count: 1 - path: src/Bundle/ChillMainBundle/Templating/ChillTwigHelper.php - - - - message: "#^Variable \\$sqls on left side of \\?\\? always exists and is not nullable\\.$#" - count: 1 - path: src/Bundle/ChillPersonBundle/Actions/Remove/PersonMove.php - - - - message: "#^Class Chill\\\\PersonBundle\\\\Entity\\\\Person constructor invoked with 1 parameter, 0 required\\.$#" - count: 1 - path: src/Bundle/ChillPersonBundle/Command/ImportPeopleFromCSVCommand.php - - - - message: "#^Variable \\$street1Value might not be defined\\.$#" - count: 1 - path: src/Bundle/ChillPersonBundle/Command/ImportPeopleFromCSVCommand.php - - - - message: "#^Variable method call on mixed\\.$#" - count: 1 - path: src/Bundle/ChillPersonBundle/DataFixtures/ORM/LoadPeople.php - - message: "#^Foreach overwrites \\$value with its value variable\\.$#" count: 1 path: src/Bundle/ChillPersonBundle/Form/ChoiceLoader/PersonChoiceLoader.php - - - message: "#^Foreach overwrites \\$action with its value variable\\.$#" - count: 1 - path: src/Bundle/ChillPersonBundle/Repository/SocialWork/GoalRepository.php - - - - message: "#^Foreach overwrites \\$action with its value variable\\.$#" - count: 1 - path: src/Bundle/ChillPersonBundle/Repository/SocialWork/ResultRepository.php - - message: "#^Foreach overwrites \\$value with its value variable\\.$#" count: 1 diff --git a/phpstan-critical.neon b/phpstan-critical.neon index bfbb2dc7c..158c7384b 100644 --- a/phpstan-critical.neon +++ b/phpstan-critical.neon @@ -1,76 +1,6 @@ parameters: ignoreErrors: - - - message: "#^Implicit array creation is not allowed \\- variable \\$centers might not exist\\.$#" - count: 1 - path: src/Bundle/ChillPersonBundle/Entity/AccompanyingPeriod.php - - - - message: "#^Access to an undefined property Chill\\\\PersonBundle\\\\Entity\\\\AccompanyingPeriod\\:\\:\\$work\\.$#" - count: 1 - path: src/Bundle/ChillPersonBundle/Entity/AccompanyingPeriod.php - - - - message: "#^Undefined variable\\: \\$person$#" - count: 1 - path: src/Bundle/ChillActivityBundle/Repository/ActivityACLAwareRepository.php - - - - message: "#^Variable variables are not allowed\\.$#" - count: 4 - path: src/Bundle/ChillPersonBundle/Search/PersonSearch.php - - - - message: "#^Function Chill\\\\PersonBundle\\\\Serializer\\\\Normalizer\\\\·\\\\is_array not found\\.$#" - count: 1 - path: src/Bundle/ChillPersonBundle/Serializer/Normalizer/MembersEditorNormalizer.php - - - - message: "#^Undefined variable\\: \\$choiceSlug$#" - count: 1 - path: src/Bundle/ChillReportBundle/Export/Export/ReportList.php - - - - message: "#^Undefined variable\\: \\$type$#" - count: 1 - path: src/Bundle/ChillTaskBundle/Controller/TaskController.php - - - - message: "#^Call to an undefined method Chill\\\\MainBundle\\\\CRUD\\\\Controller\\\\AbstractCRUDController\\:\\:getRoleFor\\(\\)\\.$#" - count: 1 - path: src/Bundle/ChillMainBundle/CRUD/Controller/AbstractCRUDController.php - - message: "#^Call to an undefined method Chill\\\\MainBundle\\\\Controller\\\\UserController\\:\\:createEditForm\\(\\)\\.$#" count: 1 path: src/Bundle/ChillMainBundle/Controller/UserController.php - - - - message: "#^Undefined variable\\: \\$current$#" - count: 1 - path: src/Bundle/ChillMainBundle/Pagination/PageGenerator.php - - - - message: "#^Call to an undefined method Chill\\\\MainBundle\\\\Security\\\\Authorization\\\\AbstractChillVoter\\:\\:getSupportedAttributes\\(\\)\\.$#" - count: 1 - path: src/Bundle/ChillMainBundle/Security/Authorization/AbstractChillVoter.php - - - - message: "#^Call to an undefined method Chill\\\\MainBundle\\\\Security\\\\Authorization\\\\AbstractChillVoter\\:\\:getSupportedClasses\\(\\)\\.$#" - count: 1 - path: src/Bundle/ChillMainBundle/Security/Authorization/AbstractChillVoter.php - - - - message: "#^Call to an undefined method Chill\\\\MainBundle\\\\Security\\\\Authorization\\\\AbstractChillVoter\\:\\:isGranted\\(\\)\\.$#" - count: 1 - path: src/Bundle/ChillMainBundle/Security/Authorization/AbstractChillVoter.php - - - - message: "#^Access to an undefined property Chill\\\\PersonBundle\\\\Controller\\\\PersonController\\:\\:\\$security\\.$#" - count: 3 - path: src/Bundle/ChillPersonBundle/Controller/PersonController.php - - - - message: "#^Call to an undefined method Chill\\\\ThirdPartyBundle\\\\Form\\\\Type\\\\PickThirdPartyTypeCategoryType\\:\\:transform\\(\\)\\.$#" - count: 1 - path: src/Bundle/ChillThirdPartyBundle/Form/Type/PickThirdPartyTypeCategoryType.php diff --git a/phpstan-deprecations.neon b/phpstan-deprecations.neon index aa8506411..c83feeb59 100644 --- a/phpstan-deprecations.neon +++ b/phpstan-deprecations.neon @@ -32,14 +32,6 @@ parameters: path: src/Bundle/ChillActivityBundle/Form/ActivityType.php - - - message: """ - #^Instantiation of deprecated class Symfony\\\\Component\\\\Security\\\\Core\\\\Role\\\\Role\\: - since Symfony 4\\.3, to be removed in 5\\.0\\. Use strings as roles instead\\.$# - """ - count: 1 - path: src/Bundle/ChillActivityBundle/Repository/ActivityACLAwareRepository.php - - message: """ #^Parameter \\$centerResolverDispatcher of method Chill\\\\ActivityBundle\\\\Repository\\\\ActivityACLAwareRepository\\:\\:__construct\\(\\) has typehint with deprecated interface Chill\\\\MainBundle\\\\Security\\\\Resolver\\\\CenterResolverDispatcherInterface\\: @@ -199,14 +191,6 @@ parameters: count: 2 path: src/Bundle/ChillMainBundle/DataFixtures/ORM/LoadLanguages.php - - - message: """ - #^Class Chill\\\\MainBundle\\\\Entity\\\\User implements deprecated interface Symfony\\\\Component\\\\Security\\\\Core\\\\User\\\\AdvancedUserInterface\\: - since Symfony 4\\.1$# - """ - count: 1 - path: src/Bundle/ChillMainBundle/Entity/User.php - - message: """ #^Return type of method Chill\\\\MainBundle\\\\Entity\\\\User\\:\\:getRoles\\(\\) has typehint with deprecated class Symfony\\\\Component\\\\Security\\\\Core\\\\Role\\\\Role\\: @@ -329,22 +313,6 @@ parameters: count: 1 path: src/Bundle/ChillPersonBundle/Actions/ActionEvent.php - - - message: """ - #^Call to deprecated method getCurrentAccompanyingPeriod\\(\\) of class Chill\\\\PersonBundle\\\\Entity\\\\Person\\: - since 1\\.1 use `getOpenedAccompanyingPeriod instead$# - """ - count: 1 - path: src/Bundle/ChillPersonBundle/Command/ImportPeopleFromCSVCommand.php - - - - message: """ - #^Instantiation of deprecated class Symfony\\\\Component\\\\EventDispatcher\\\\Event\\: - since Symfony 4\\.3, use "Symfony\\\\Contracts\\\\EventDispatcher\\\\Event" instead$# - """ - count: 1 - path: src/Bundle/ChillPersonBundle/Command/ImportPeopleFromCSVCommand.php - - message: """ #^Class Chill\\\\PersonBundle\\\\Controller\\\\AccompanyingCourseController extends deprecated class Symfony\\\\Bundle\\\\FrameworkBundle\\\\Controller\\\\Controller\\: @@ -541,11 +509,3 @@ parameters: count: 3 path: src/Bundle/ChillTaskBundle/Timeline/TaskLifeCycleEventTimelineProvider.php - - - message: """ - #^Instantiation of deprecated class Symfony\\\\Component\\\\Security\\\\Core\\\\Role\\\\Role\\: - since Symfony 4\\.3, to be removed in 5\\.0\\. Use strings as roles instead\\.$# - """ - count: 1 - path: src/Bundle/ChillThirdPartyBundle/Search/ThirdPartySearch.php - diff --git a/phpstan-types.neon b/phpstan-types.neon index b11cbd153..3368c94d2 100644 --- a/phpstan-types.neon +++ b/phpstan-types.neon @@ -100,11 +100,6 @@ parameters: count: 1 path: src/Bundle/ChillDocStoreBundle/Entity/DocumentCategory.php - - - message: "#^Method Chill\\\\EventBundle\\\\Entity\\\\Participation\\:\\:offsetGet\\(\\) should return mixed but return statement is missing\\.$#" - count: 1 - path: src/Bundle/ChillEventBundle/Entity/Participation.php - - message: "#^Construct empty\\(\\) is not allowed\\. Use more strict comparison\\.$#" count: 1 @@ -315,11 +310,6 @@ parameters: count: 1 path: src/Bundle/ChillPersonBundle/Command/ChillPersonMoveCommand.php - - - message: "#^Construct empty\\(\\) is not allowed\\. Use more strict comparison\\.$#" - count: 6 - path: src/Bundle/ChillPersonBundle/Command/ImportPeopleFromCSVCommand.php - - message: "#^Construct empty\\(\\) is not allowed\\. Use more strict comparison\\.$#" count: 1 @@ -345,11 +335,6 @@ parameters: count: 1 path: src/Bundle/ChillPersonBundle/Search/PersonSearch.php - - - message: "#^Construct empty\\(\\) is not allowed\\. Use more strict comparison\\.$#" - count: 2 - path: src/Bundle/ChillPersonBundle/Templating/Entity/ClosingMotiveRender.php - - message: "#^Method Chill\\\\ReportBundle\\\\DataFixtures\\\\ORM\\\\LoadReports\\:\\:getRandomChoice\\(\\) should return array\\\\|string but return statement is missing\\.$#" count: 1 @@ -395,16 +380,6 @@ parameters: count: 1 path: src/Bundle/ChillTaskBundle/Timeline/TaskLifeCycleEventTimelineProvider.php - - - message: "#^Construct empty\\(\\) is not allowed\\. Use more strict comparison\\.$#" - count: 1 - path: src/Bundle/ChillThirdPartyBundle/Form/ChoiceLoader/ThirdPartyChoiceLoader.php - - - - message: "#^Construct empty\\(\\) is not allowed\\. Use more strict comparison\\.$#" - count: 1 - path: src/Bundle/ChillThirdPartyBundle/Repository/ThirdPartyRepository.php - - message: "#^Method Chill\\\\ThirdPartyBundle\\\\Search\\\\ThirdPartySearch\\:\\:renderResult\\(\\) should return string but return statement is missing\\.$#" count: 1 diff --git a/phpstan.neon.dist b/phpstan.neon.dist index 3322f9539..56b7c2228 100644 --- a/phpstan.neon.dist +++ b/phpstan.neon.dist @@ -1,7 +1,9 @@ parameters: - level: 1 + level: 5 paths: - src/ + tmpDir: .cache/ + reportUnmatchedIgnoredErrors: false excludePaths: - .php_cs* - docs/ @@ -24,4 +26,8 @@ includes: - phpstan-critical.neon - phpstan-deprecations.neon - phpstan-types.neon + - phpstan-baseline-level-2.neon + - phpstan-baseline-level-3.neon + - phpstan-baseline-level-4.neon + - phpstan-baseline-level-5.neon diff --git a/psalm.xml b/psalm.xml index 40e5d78e8..77193f05b 100644 --- a/psalm.xml +++ b/psalm.xml @@ -9,9 +9,10 @@ cacheDirectory="./.psalm" > - + - + + @@ -20,9 +21,27 @@ - + + + + + + + diff --git a/rector.php b/rector.php new file mode 100644 index 000000000..2c5b08bec --- /dev/null +++ b/rector.php @@ -0,0 +1,25 @@ +paths([ + __DIR__ . '/docs', + __DIR__ . '/src', + ]); + + $rectorConfig->cacheClass(\Rector\Caching\ValueObject\Storage\FileCacheStorage::class); + $rectorConfig->cacheDirectory(__DIR__.'/.cache/rector'); + + // register a single rule + $rectorConfig->rule(InlineConstructorDefaultToPropertyRector::class); + + // define sets of rules + // $rectorConfig->sets([ + // LevelSetList::UP_TO_PHP_74 + // ]); +}; diff --git a/src/Bundle/ChillActivityBundle/Controller/ActivityController.php b/src/Bundle/ChillActivityBundle/Controller/ActivityController.php index b7d5fcbd2..798ae77b4 100644 --- a/src/Bundle/ChillActivityBundle/Controller/ActivityController.php +++ b/src/Bundle/ChillActivityBundle/Controller/ActivityController.php @@ -651,8 +651,8 @@ final class ActivityController extends AbstractController throw $this->createNotFoundException('Accompanying Period not found'); } - // TODO Add permission - // $this->denyAccessUnlessGranted('CHILL_PERSON_SEE', $person); + // TODO Add permission + // $this->denyAccessUnlessGranted('CHILL_PERSON_SEE', $person); } else { throw $this->createNotFoundException('Person or Accompanying Period not found'); } diff --git a/src/Bundle/ChillActivityBundle/Entity/Activity.php b/src/Bundle/ChillActivityBundle/Entity/Activity.php index 2a5ae6acb..9adfa057f 100644 --- a/src/Bundle/ChillActivityBundle/Entity/Activity.php +++ b/src/Bundle/ChillActivityBundle/Entity/Activity.php @@ -195,7 +195,7 @@ class Activity implements AccompanyingPeriodLinkedWithSocialIssuesEntityInterfac * @ORM\ManyToOne(targetEntity="Chill\MainBundle\Entity\User") * @Groups({"docgen:read"}) */ - private User $user; + private ?User $user; /** * @ORM\ManyToMany(targetEntity="Chill\MainBundle\Entity\User") @@ -494,7 +494,7 @@ class Activity implements AccompanyingPeriodLinkedWithSocialIssuesEntityInterfac return $this->activityType; } - public function getUser(): User + public function getUser(): ?User { return $this->user; } @@ -681,14 +681,14 @@ class Activity implements AccompanyingPeriodLinkedWithSocialIssuesEntityInterfac return $this; } - public function setUser(UserInterface $user): self + public function setUser(?User $user): self { $this->user = $user; return $this; } - public function setUsers(?Collection $users): self + public function setUsers(Collection $users): self { $this->users = $users; diff --git a/src/Bundle/ChillActivityBundle/Entity/ActivityType.php b/src/Bundle/ChillActivityBundle/Entity/ActivityType.php index 1f44a1af0..a6e0fc694 100644 --- a/src/Bundle/ChillActivityBundle/Entity/ActivityType.php +++ b/src/Bundle/ChillActivityBundle/Entity/ActivityType.php @@ -380,6 +380,7 @@ class ActivityType throw new InvalidArgumentException('Field "' . $field . '" not found'); } + /** @phpstan-ignore-next-line */ return $this->{$property}; } @@ -538,6 +539,7 @@ class ActivityType throw new InvalidArgumentException('Field "' . $field . '" not found'); } + /** @phpstan-ignore-next-line */ return self::FIELD_REQUIRED === $this->{$property}; } @@ -549,6 +551,7 @@ class ActivityType throw new InvalidArgumentException('Field "' . $field . '" not found'); } + /** @phpstan-ignore-next-line */ return self::FIELD_INVISIBLE !== $this->{$property}; } diff --git a/src/Bundle/ChillActivityBundle/Export/Aggregator/ACPAggregators/DateAggregator.php b/src/Bundle/ChillActivityBundle/Export/Aggregator/ACPAggregators/DateAggregator.php index dbbeb2715..b4b23dc0b 100644 --- a/src/Bundle/ChillActivityBundle/Export/Aggregator/ACPAggregators/DateAggregator.php +++ b/src/Bundle/ChillActivityBundle/Export/Aggregator/ACPAggregators/DateAggregator.php @@ -58,7 +58,8 @@ class DateAggregator implements AggregatorInterface break; case 'year': - $fmt = 'YYYY'; $order = 'DESC'; + $fmt = 'YYYY'; + $order = 'DESC'; break; // order DESC does not works ! diff --git a/src/Bundle/ChillActivityBundle/Export/Export/LinkedToACP/ListActivity.php b/src/Bundle/ChillActivityBundle/Export/Export/LinkedToACP/ListActivity.php index 77444e414..6d25b4e22 100644 --- a/src/Bundle/ChillActivityBundle/Export/Export/LinkedToACP/ListActivity.php +++ b/src/Bundle/ChillActivityBundle/Export/Export/LinkedToACP/ListActivity.php @@ -73,7 +73,7 @@ class ListActivity implements ListInterface, GroupedExportInterface }; case 'scopesNames': - return $this->translatableStringExportLabelHelper->getLabelMulti($key, $values, ListActivityHelper::MSG_KEY . 'course circles'); + return $this->translatableStringExportLabelHelper->getLabelMulti($key, $values, ListActivityHelper::MSG_KEY . 'course circles'); default: return $this->helper->getLabels($key, $values, $data); diff --git a/src/Bundle/ChillActivityBundle/Export/Filter/ACPFilters/LocationFilter.php b/src/Bundle/ChillActivityBundle/Export/Filter/ACPFilters/LocationFilter.php index 5cdce5b31..3d69d1633 100644 --- a/src/Bundle/ChillActivityBundle/Export/Filter/ACPFilters/LocationFilter.php +++ b/src/Bundle/ChillActivityBundle/Export/Filter/ACPFilters/LocationFilter.php @@ -20,13 +20,6 @@ use Symfony\Component\Form\FormBuilderInterface; class LocationFilter implements FilterInterface { - private TranslatableStringHelper $translatableStringHelper; - - public function __construct(TranslatableStringHelper $translatableStringHelper) - { - $this->translatableStringHelper = $translatableStringHelper; - } - public function addRole(): ?string { return null; diff --git a/src/Bundle/ChillActivityBundle/Form/ActivityType.php b/src/Bundle/ChillActivityBundle/Form/ActivityType.php index 6d198c5fa..5dfd756f9 100644 --- a/src/Bundle/ChillActivityBundle/Form/ActivityType.php +++ b/src/Bundle/ChillActivityBundle/Form/ActivityType.php @@ -225,6 +225,7 @@ class ActivityType extends AbstractType $builder->add('user', PickUserDynamicType::class, [ 'label' => $activityType->getLabel('user'), 'required' => $activityType->isRequired('user'), + 'multiple' => false, ]); } diff --git a/src/Bundle/ChillActivityBundle/Menu/AccompanyingCourseMenuBuilder.php b/src/Bundle/ChillActivityBundle/Menu/AccompanyingCourseMenuBuilder.php index a177a717c..9884450ec 100644 --- a/src/Bundle/ChillActivityBundle/Menu/AccompanyingCourseMenuBuilder.php +++ b/src/Bundle/ChillActivityBundle/Menu/AccompanyingCourseMenuBuilder.php @@ -18,6 +18,9 @@ use Knp\Menu\MenuItem; use Symfony\Component\Security\Core\Security; use Symfony\Contracts\Translation\TranslatorInterface; +/** + * @implements LocalMenuBuilderInterface + */ class AccompanyingCourseMenuBuilder implements LocalMenuBuilderInterface { protected Security $security; diff --git a/src/Bundle/ChillActivityBundle/Menu/AdminMenuBuilder.php b/src/Bundle/ChillActivityBundle/Menu/AdminMenuBuilder.php index 71a9e3c2a..4b2d348d7 100644 --- a/src/Bundle/ChillActivityBundle/Menu/AdminMenuBuilder.php +++ b/src/Bundle/ChillActivityBundle/Menu/AdminMenuBuilder.php @@ -15,6 +15,9 @@ use Chill\MainBundle\Routing\LocalMenuBuilderInterface; use Knp\Menu\MenuItem; use Symfony\Component\Security\Core\Security; +/** + * @implements LocalMenuBuilderInterface + */ final class AdminMenuBuilder implements LocalMenuBuilderInterface { private Security $security; diff --git a/src/Bundle/ChillActivityBundle/Menu/PersonMenuBuilder.php b/src/Bundle/ChillActivityBundle/Menu/PersonMenuBuilder.php index 89dff9b2b..03a1b09ab 100644 --- a/src/Bundle/ChillActivityBundle/Menu/PersonMenuBuilder.php +++ b/src/Bundle/ChillActivityBundle/Menu/PersonMenuBuilder.php @@ -13,11 +13,15 @@ namespace Chill\ActivityBundle\Menu; use Chill\ActivityBundle\Security\Authorization\ActivityVoter; use Chill\MainBundle\Routing\LocalMenuBuilderInterface; +use Chill\PersonBundle\Entity\Person; use Knp\Menu\MenuItem; use Symfony\Component\Security\Core\Authorization\AuthorizationCheckerInterface; use Symfony\Contracts\Translation\TranslatorInterface; -class PersonMenuBuilder implements LocalMenuBuilderInterface +/** + * @implements LocalMenuBuilderInterface + */ +final class PersonMenuBuilder implements LocalMenuBuilderInterface { /** * @var AuthorizationCheckerInterface @@ -44,7 +48,7 @@ class PersonMenuBuilder implements LocalMenuBuilderInterface if ($this->authorizationChecker->isGranted(ActivityVoter::SEE, $person)) { $menu->addChild( - $this->translator->trans('Activity list'), + $this->translator->trans('Activities'), [ 'route' => 'chill_activity_activity_list', 'routeParameters' => ['person_id' => $person->getId()], diff --git a/src/Bundle/ChillActivityBundle/Repository/ActivityACLAwareRepository.php b/src/Bundle/ChillActivityBundle/Repository/ActivityACLAwareRepository.php index fa36c8d07..185e008eb 100644 --- a/src/Bundle/ChillActivityBundle/Repository/ActivityACLAwareRepository.php +++ b/src/Bundle/ChillActivityBundle/Repository/ActivityACLAwareRepository.php @@ -225,10 +225,9 @@ final class ActivityACLAwareRepository implements ActivityACLAwareRepositoryInte $personToCenter = $metadataPerson->getAssociationMapping('center')['joinColumns'][0]['name']; // acls: - $role = new Role(ActivityVoter::SEE); $reachableCenters = $this->authorizationHelper->getReachableCenters( $this->tokenStorage->getToken()->getUser(), - $role + ActivityVoter::SEE ); if (count($reachableCenters) === 0) { @@ -239,7 +238,7 @@ final class ActivityACLAwareRepository implements ActivityACLAwareRepositoryInte if ('person' === $context) { // we start with activities having the person_id linked to person $where .= sprintf('%s = ? AND ', $activityToPerson); - $parameters[] = $person->getId(); + $parameters[] = $args['context']->getId(); } // we add acl (reachable center and scopes) @@ -252,7 +251,7 @@ final class ActivityACLAwareRepository implements ActivityACLAwareRepositoryInte continue; } // we get all the reachable scopes for this center - $reachableScopes = $this->authorizationHelper->getReachableScopes($this->tokenStorage->getToken()->getUser(), $role, $center); + $reachableScopes = $this->authorizationHelper->getReachableScopes($this->tokenStorage->getToken()->getUser(), ActivityVoter::SEE, $center); // we get the ids for those scopes $reachablesScopesId = array_map( static function (Scope $scope) { diff --git a/src/Bundle/ChillActivityBundle/Resources/views/Activity/_list_item.html.twig b/src/Bundle/ChillActivityBundle/Resources/views/Activity/_list_item.html.twig index 885125aa6..8d1aba2b3 100644 --- a/src/Bundle/ChillActivityBundle/Resources/views/Activity/_list_item.html.twig +++ b/src/Bundle/ChillActivityBundle/Resources/views/Activity/_list_item.html.twig @@ -63,7 +63,7 @@ {% endif %} - {% if activity.user and t.userVisible %} + {% if activity.user is not null and t.userVisible %}

{{ 'Referrer'|trans }}

diff --git a/src/Bundle/ChillActivityBundle/Resources/views/Activity/concernedGroups.html.twig b/src/Bundle/ChillActivityBundle/Resources/views/Activity/concernedGroups.html.twig index 96cfef39b..48eb839d7 100644 --- a/src/Bundle/ChillActivityBundle/Resources/views/Activity/concernedGroups.html.twig +++ b/src/Bundle/ChillActivityBundle/Resources/views/Activity/concernedGroups.html.twig @@ -5,7 +5,7 @@ Maybe should we think about abstracting this file a bit more ? Moving it to PersonBundle ? #} -{% if context == 'calendar_accompanyingCourse' %} +{% if context == 'calendar_accompanyingCourse' or context == 'calendar_person' %} {% import "@ChillCalendar/_invite.html.twig" as invite %} {% endif %} diff --git a/src/Bundle/ChillActivityBundle/Resources/views/Activity/show.html.twig b/src/Bundle/ChillActivityBundle/Resources/views/Activity/show.html.twig index acda43b97..fca6a7658 100644 --- a/src/Bundle/ChillActivityBundle/Resources/views/Activity/show.html.twig +++ b/src/Bundle/ChillActivityBundle/Resources/views/Activity/show.html.twig @@ -34,10 +34,12 @@
-
{{ 'Referrer'|trans|capitalize }}
-
- {{ entity.user|chill_entity_render_box }} -
+ {%- if entity.user is not null %} +
{{ 'Referrer'|trans|capitalize }}
+
+ {{ entity.user|chill_entity_render_box }} +
+ {% endif %} {%- if entity.scope -%}
{{ 'Scope'|trans }}
diff --git a/src/Bundle/ChillActivityBundle/Service/DocGenerator/ActivityContext.php b/src/Bundle/ChillActivityBundle/Service/DocGenerator/ActivityContext.php index 3df0d886d..01b7e2945 100644 --- a/src/Bundle/ChillActivityBundle/Service/DocGenerator/ActivityContext.php +++ b/src/Bundle/ChillActivityBundle/Service/DocGenerator/ActivityContext.php @@ -32,6 +32,9 @@ use Symfony\Component\Form\FormBuilderInterface; use Symfony\Component\Serializer\Normalizer\NormalizerInterface; use Symfony\Contracts\Translation\TranslatorInterface; +/** + * @implements DocGeneratorContextWithPublicFormInterface + */ class ActivityContext implements DocGeneratorContextWithAdminFormInterface, DocGeneratorContextWithPublicFormInterface @@ -237,9 +240,6 @@ class ActivityContext implements return $denormalized; } - /** - * @param Activity $entity - */ public function storeGenerated(DocGeneratorTemplate $template, StoredObject $storedObject, object $entity, array $contextGenerationData): void { $storedObject->setTitle($this->translatableStringHelper->localize($template->getName())); diff --git a/src/Bundle/ChillActivityBundle/Templating/Entity/ActivityReasonRender.php b/src/Bundle/ChillActivityBundle/Templating/Entity/ActivityReasonRender.php index 991591141..c60a8d286 100644 --- a/src/Bundle/ChillActivityBundle/Templating/Entity/ActivityReasonRender.php +++ b/src/Bundle/ChillActivityBundle/Templating/Entity/ActivityReasonRender.php @@ -13,13 +13,18 @@ namespace Chill\ActivityBundle\Templating\Entity; use Chill\ActivityBundle\Entity\ActivityReason; use Chill\MainBundle\Templating\Entity\AbstractChillEntityRender; +use Chill\MainBundle\Templating\Entity\BoxUtilsChillEntityRenderTrait; +use Chill\MainBundle\Templating\Entity\ChillEntityRenderInterface; use Chill\MainBundle\Templating\TranslatableStringHelper; /** * Render activity reason. + * + * @implements ChillEntityRenderInterface */ -class ActivityReasonRender extends AbstractChillEntityRender +class ActivityReasonRender implements ChillEntityRenderInterface { + use BoxUtilsChillEntityRenderTrait; /** * @var TranslatableStringHelper */ @@ -51,9 +56,6 @@ class ActivityReasonRender extends AbstractChillEntityRender $this->getDefaultClosingBox(); } - /** - * @param ActivityReason $entity - */ public function renderString($entity, array $options): string { $category = ''; diff --git a/src/Bundle/ChillActivityBundle/Tests/Controller/ActivityControllerTest.php b/src/Bundle/ChillActivityBundle/Tests/Controller/ActivityControllerTest.php index 8a30a6c9b..8e2c219f0 100644 --- a/src/Bundle/ChillActivityBundle/Tests/Controller/ActivityControllerTest.php +++ b/src/Bundle/ChillActivityBundle/Tests/Controller/ActivityControllerTest.php @@ -121,14 +121,14 @@ final class ActivityControllerTest extends WebTestCase $client->getResponse()->getStatusCode(), 'Unexpected HTTP status code for GET /activity/' ); - $crawler = $client->click($crawler->selectLink('Ajouter une nouvelle activité') + $crawler = $client->click($crawler->selectLink('Ajouter un nouvel échange') ->link()); $reason1 = $this->getRandomActivityReason(); $reason2 = $this->getRandomActivityReason([$reason1->getId()]); // Fill in the form and submit it - $form = $crawler->selectButton('Ajouter une nouvelle activité')->form([ + $form = $crawler->selectButton('Ajouter un nouvel échange')->form([ 'chill_activitybundle_activity' => [ 'date' => '15-01-2015', 'durationTime' => 600, @@ -152,9 +152,9 @@ final class ActivityControllerTest extends WebTestCase ); // Edit the entity - $crawler = $client->click($crawler->selectLink("Modifier l'activité")->link()); + $crawler = $client->click($crawler->selectLink("Modifier l'échange")->link()); - $form = $crawler->selectButton("Sauver l'activité")->form([ + $form = $crawler->selectButton("Sauver l'échange")->form([ 'chill_activitybundle_activity' => [ 'date' => '25-01-2015', // 'remark' => 'Foo' @@ -234,7 +234,7 @@ final class ActivityControllerTest extends WebTestCase $user = new \Chill\MainBundle\Entity\User(); $user ->setPassword($container->get('security.password_encoder') - ->encodePassword($user, 'password')) + ->encodePassword($user, 'password')) ->setUsername($username) ->addGroupCenter($groupCenter); diff --git a/src/Bundle/ChillActivityBundle/Tests/Form/ActivityTypeTest.php b/src/Bundle/ChillActivityBundle/Tests/Form/ActivityTypeTest.php index b6cb6fc7b..df0a602a4 100644 --- a/src/Bundle/ChillActivityBundle/Tests/Form/ActivityTypeTest.php +++ b/src/Bundle/ChillActivityBundle/Tests/Form/ActivityTypeTest.php @@ -112,9 +112,9 @@ final class ActivityTypeTest extends KernelTestCase 'attendee' => true, ]]); -// var_dump($form->getErrors()->count()); var_dump($form->isValid()); -// foreach($form->getErrors() as $e) { fwrite(STDOUT, var_dump($e->getMessage())); } -// var_dump($form->getErrors()); + // var_dump($form->getErrors()->count()); var_dump($form->isValid()); + // foreach($form->getErrors() as $e) { fwrite(STDOUT, var_dump($e->getMessage())); } + // var_dump($form->getErrors()); $this->assertTrue($form->isSynchronized(), 'Test the form is synchronized'); $this->assertTrue($form->isValid(), 'test the form is valid'); diff --git a/src/Bundle/ChillActivityBundle/translations/messages.fr.yml b/src/Bundle/ChillActivityBundle/translations/messages.fr.yml index 4dd67ceb8..18ab56dfe 100644 --- a/src/Bundle/ChillActivityBundle/translations/messages.fr.yml +++ b/src/Bundle/ChillActivityBundle/translations/messages.fr.yml @@ -1,41 +1,41 @@ #general -Show the activity: Voir l'activité -Edit the activity: Modifier l'activité -Activity: Activité +Show the activity: Voir l'échange +Edit the activity: Modifier l'échange +Activity: Échange Duration time: Durée Duration Time: Durée durationTime: durée Travel time: Durée de déplacement -Attendee: Présence de la personne -attendee: présence de la personne +Attendee: Présence de l'usager +attendee: présence de l'usager list_reasons: liste des sujets user_username: nom de l'utilisateur circle_name: nom du cercle Remark: Commentaire No comments: Aucun commentaire -Add a new activity: Ajouter une nouvelle activité -Activity list: Liste des activités +Add a new activity: Ajouter une nouvel échange +Activity list: Liste des échanges present: présent not present: absent Delete: Supprimer Update: Mettre à jour -Update activity: Modifier l'activité +Update activity: Modifier l'échange Scope: Cercle -Activity data: Données de l'activité -Activity location: Localisation de l'activité +Activity data: Données de l'échange +Activity location: Localisation de l'échange No reason associated: Aucun sujet No social issues associated: Aucune problématique sociale No social actions associated: Aucune action d'accompagnement -There isn't any activities.: Aucune activité enregistrée. -type_name: type de l'activité +There isn't any activities.: Aucun échange enregistré. +type_name: type de l'échange person_firstname: prénom person_lastname: nom de famille -person_id: identifiant de la personne +person_id: identifiant de l'usager Type: Type Invisible: Invisible Optional: Optionnel Required: Obligatoire -Persons: Personnes +Persons: Usagers Users: Utilisateurs Emergency: Urgent Sent received: Entrant / Sortant @@ -50,10 +50,10 @@ received: Reçu #forms -Activity creation: Nouvelle activité +Activity creation: Nouvel échange Create: Créer Back to the list: Retour à la liste -Save activity: Sauver l'activité +Save activity: Sauver l'échange Reset form: Remise à zéro du formulaire Choose the duration: Choisir la durée Choose a type: Choisir un type @@ -90,40 +90,40 @@ activity: No documents: Aucun document #timeline -'%user% has done an %activity_type%': '%user% a effectué une activité de type "%activity_type%"' +'%user% has done an %activity_type%': '%user% a effectué un échange de type "%activity_type%"' #controller -'Success : activity created!': L'activité a été créée. -'The form is not valid. The activity has not been created !': Le formulaire est invalide. L'activité n'a pas été créée. -'Success : activity updated!': L'activité a été mise à jour. -'The form is not valid. The activity has not been updated !': Le formulaire est invalide. L'activité n'a pas été mise à jour. +'Success : activity created!': L'échange a été créé. +'The form is not valid. The activity has not been created !': Le formulaire est invalide. L'échange n'a pas été créé. +'Success : activity updated!': L'échange a été mis à jour. +'The form is not valid. The activity has not been updated !': Le formulaire est invalide. L'échange n'a pas été mise à jour. # ROLES -CHILL_ACTIVITY_CREATE: Créer une activité -CHILL_ACTIVITY_UPDATE: Modifier une activité -CHILL_ACTIVITY_SEE: Voir une activité -CHILL_ACTIVITY_SEE_DETAILS: Voir le détail des activités -CHILL_ACTIVITY_DELETE: Supprimer une activité -CHILL_ACTIVITY_STATS: Statistique des activités -CHILL_ACTIVITY_LIST: Liste des activités +CHILL_ACTIVITY_CREATE: Créer un échange +CHILL_ACTIVITY_UPDATE: Modifier un échange +CHILL_ACTIVITY_SEE: Voir un échange +CHILL_ACTIVITY_SEE_DETAILS: Voir le détail des échanges +CHILL_ACTIVITY_DELETE: Supprimer un échange +CHILL_ACTIVITY_STATS: Statistique des échanges +CHILL_ACTIVITY_LIST: Liste des échanges # admin -Activities: Activités -Activity configuration: Configuration des activités -Activity configuration menu: Configuration des activités -Activity types: Types d'activité -Activity type configuration: Configuration des categories d'activités -Activity Reasons: Sujets d'une activité -Activity Reasons Category: Catégories de sujet d'activités -Activity Types Categories: Catégories des types d'activité -Activity Presences: Presences aux activités +Activities: Échanges +Activity configuration: Configuration des échanges +Activity configuration menu: Configuration des échanges +Activity types: Types d'échange +Activity type configuration: Configuration des catégories d'échanges +Activity Reasons: Sujets d'un échange +Activity Reasons Category: Catégories de sujet d'échanges +Activity Types Categories: Catégories des types d'échange +Activity Presences: Presences aux échanges Associated activity reason category is inactive: La catégorie de sujet attachée est inactive # Crud crud: activity_type: - title_new: Nouveau type d'activité + title_new: Nouveau type d'échange title_edit: Edition d'un type d'activité activity_type_category: title_new: Nouvelle catégorie de type d'activité @@ -159,8 +159,8 @@ Create a new activity presence: Créer une nouvelle "Présence aux activités" # activity type type admin ActivityType list: Types d'activités Create a new activity type: Créer un nouveau type d'activité -Persons visible: Visibilité du champ Personnes -Persons label: Libellé du champ Personnes +Persons visible: Visibilité du champ Usagers +Persons label: Libellé du champ Usagers User visible: Visibilité du champ Utilisateur User label: Libellé du champ Utilisateur Date visible: Visibilité du champ Date @@ -183,8 +183,8 @@ Private comment visible: Visibilité du champ Commentaire Privé Private comment label: Libellé du champ Commentaire Privé Emergency visible: Visibilité du champ Urgent Emergency label: Libellé du champ Urgent -Accompanying period visible: Visibilité du champ Période d'accompagnement -Accompanying period label: Libellé du champ Période d'accompagnement +Accompanying period visible: Visibilité du champ parcours d'accompagnement +Accompanying period label: Libellé du champ parcours d'accompagnement Social issues visible: Visibilité du champ Problématiques sociales Social issues label: Libellé du champ Problématiques sociales Social actions visible: Visibilité du champ Action sociale @@ -206,10 +206,10 @@ Are you sure you want to remove the activity about "%name%" ?: Êtes-vous sûr d The activity has been successfully removed.: L'activité a été supprimée. # exports -Exports of activities linked to a person: Exports des activités liées à une personne -Number of activities linked to a person: Nombre d'activités liées à une personne +Exports of activities linked to a person: Exports des activités liées à un usager +Number of activities linked to a person: Nombre d'activités liées à un usager Count activities linked to a person: Nombre d'activités -Count activities linked to a person by various parameters.: Compte le nombre d'activités enregistrées et liées à une personne en fonction de différents paramètres. +Count activities linked to a person by various parameters.: Compte le nombre d'activités enregistrées et liées à un usager en fonction de différents paramètres. Sum activity linked to a person duration: Durée des activités Sum activities linked to a person duration: Durée des activités liés à un usager Sum activities linked to a person duration by various parameters.: Additionne la durée des activités en fonction de différents paramètres. @@ -244,10 +244,10 @@ Activities before this date: Activités avant cette date "Filtered by date of activity: only between %date_from% and %date_to%": "Filtré par date de l'activité: uniquement entre %date_from% et %date_to%" This date should be after the date given in "Implied in an activity after this date" field: Cette date devrait être postérieure à la date donnée dans le champ "activités après cette date" -Filtered by person having an activity in a period: Uniquement les personnes ayant eu une activité dans la période donnée +Filtered by person having an activity in a period: Uniquement les usagers ayant eu une activité dans la période donnée Implied in an activity after this date: Impliqué dans une activité après cette date Implied in an activity before this date: Impliqué dans une activité avant cette date -Filtered by person having an activity between %date_from% and %date_to% with reasons %reasons_name%: Filtré par personnes associées à une activité entre %date_from% et %date_to% avec les sujets %reasons_name% +Filtered by person having an activity between %date_from% and %date_to% with reasons %reasons_name%: Filtré par usager associées à une activité entre %date_from% et %date_to% avec les sujets %reasons_name% Activity reasons for those activities: Sujets de ces activités Filter by activity type: Filtrer les activités par type @@ -336,8 +336,8 @@ export: users name: Nom des utilisateurs users ids: Identifiant des utilisateurs third parties ids: Identifiant des tiers - persons ids: Identifiant des personnes - persons name: Nom des personnes + persons ids: Identifiant des usagers + persons name: Nom des usagers thirds parties: Tiers date: Date de l'activité locationName: Localisation diff --git a/src/Bundle/ChillActivityBundle/translations/messages.nl.yaml b/src/Bundle/ChillActivityBundle/translations/messages.nl.yaml index dac37fc7d..c7dc05f2b 100644 --- a/src/Bundle/ChillActivityBundle/translations/messages.nl.yaml +++ b/src/Bundle/ChillActivityBundle/translations/messages.nl.yaml @@ -47,10 +47,10 @@ Reasons: Onderwerpen #forms -Activity creation: Nouvelle activité +Activity creation: Nouvel échange Create: Créer Back to the list: Retour à la liste -Save activity: Sauver l'activité +Save activity: Sauver l'échange Reset form: Remise à zéro du formulaire Choose the duration: Choisir la durée Choose a type: Choisir un type @@ -79,43 +79,43 @@ activity: No documents: Aucun document #timeline -'%user% has done an %activity_type%': '%user% a effectué une activité de type "%activity_type%"' +'%user% has done an %activity_type%': '%user% a effectué un échange de type "%activity_type%"' #controller -'Success : activity created!': L'activité a été créée. -'The form is not valid. The activity has not been created !': Le formulaire est invalide. L'activité n'a pas été créée. -'Success : activity updated!': L'activité a été mise à jour. -'The form is not valid. The activity has not been updated !': Le formulaire est invalide. L'activité n'a pas été mise à jour. +'Success : activity created!': L'échange a été créé. +'The form is not valid. The activity has not been created !': Le formulaire est invalide. L'échange n'a pas été créé. +'Success : activity updated!': L'échange a été mis à jour. +'The form is not valid. The activity has not been updated !': Le formulaire est invalide. L'échange n'a pas été mis à jour. # ROLES -CHILL_ACTIVITY_CREATE: Créer une activité -CHILL_ACTIVITY_UPDATE: Modifier une activité -CHILL_ACTIVITY_SEE: Voir une activité -CHILL_ACTIVITY_SEE_DETAILS: Voir le détail des activités -CHILL_ACTIVITY_DELETE: Supprimer une activité -CHILL_ACTIVITY_STATS: Statistique des activités -CHILL_ACTIVITY_LIST: Liste des activités +CHILL_ACTIVITY_CREATE: Créer un échange +CHILL_ACTIVITY_UPDATE: Modifier un échange +CHILL_ACTIVITY_SEE: Voir un échange +CHILL_ACTIVITY_SEE_DETAILS: Voir le détail des échanges +CHILL_ACTIVITY_DELETE: Supprimer un échange +CHILL_ACTIVITY_STATS: Statistique des échanges +CHILL_ACTIVITY_LIST: Liste des échanges # admin -Activities: Activités -Activity configuration: Configuration des activités -Activity configuration menu: Configuration des activités -Activity types: Types d'activité -Activity type configuration: Configuration des categories d'activités -Activity Reasons: Sujets d'une activité -Activity Reasons Category: Catégories de sujet d'activités -Activity Types Categories: Catégories des types d'activité -Activity Presences: Presences des activités +Activities: Échanges +Activity configuration: Configuration des échanges +Activity configuration menu: Configuration des échanges +Activity types: Types d'échange +Activity type configuration: Configuration des categories d'échanges +Activity Reasons: Sujets d'un échange +Activity Reasons Category: Catégories de sujet d'échanges +Activity Types Categories: Catégories des types d'échanges +Activity Presences: Presences des échanges # Crud crud: activity_type: - title_new: Nouveau type d'activité - title_edit: Edition d'un type d'activité + title_new: Nouveau type d'échange + title_edit: Edition d'un type d'échange activity_type_category: - title_new: Nouvelle catégorie de type d'activité - title_edit: Edition d'une catégorie de type d'activité + title_new: Nouvelle catégorie de type d'échange + title_edit: Edition d'une catégorie de type d'échange # activity reason admin ActivityReason list: Liste des sujets @@ -124,7 +124,7 @@ Active: Actif Category: Catégorie ActivityReason creation: Nouveau sujet ActivityReason edit: Modification d'un sujet -ActivityReason: Sujet d'activité +ActivityReason: Sujet d'échange The entity is inactive and won't be proposed: Le sujet est inactif et ne sera pas proposé The entity is active and will be proposed: Le sujet est actif et sera proposé @@ -133,13 +133,13 @@ ActivityReasonCategory list: Catégories de sujets Create a new activity category reason: Créer une nouvelle catégorie ActivityReasonCategory creation: Nouvelle catégorie de sujet ActivityReasonCategory edit: Modification d'une catégorie de sujet -ActivityReasonCategory: Catégorie de sujet d'activité +ActivityReasonCategory: Catégorie de sujet d'échange ActivityReasonCategory is active and will be proposed: La catégorie est active et sera proposée ActivityReasonCategory is inactive and won't be proposed: La catégorie est inactive et ne sera pas proposée # activity type type admin -ActivityType list: Types d'activités -Create a new activity type: Créer un nouveau type d'activité +ActivityType list: Types d'échanges +Create a new activity type: Créer un nouveau type d'échange Persons visible: Visibilité du champ Personnes Persons label: Libellé du champ Personnes User visible: Visibilité du champ Utilisateur @@ -177,20 +177,20 @@ Documents label: Libellé du champ Documents # activity type category admin ActivityTypeCategory list: Liste des catégories des types d'activité -Create a new activity type category: Créer une nouvelle catégorie de type d'activité +Create a new activity type category: Créer une nouvelle catégorie de type d'échange # activity delete -Remove activity: Supprimer une activité -Are you sure you want to remove the activity about "%name%" ?: Êtes-vous sûr de vouloir supprimer une activité qui concerne "%name%" ? -The activity has been successfully removed.: L'activité a été supprimée. +Remove activity: Supprimer un échange +Are you sure you want to remove the activity about "%name%" ?: Êtes-vous sûr de vouloir supprimer un échange qui concerne "%name%" ? +The activity has been successfully removed.: L'échange a été supprimée. # exports -Count activities: Nombre d'activités -Count activities by various parameters.: Compte le nombre d'activités enregistrées en fonction de différents paramètres. -Sum activity duration: Total de la durée des activités -Sum activities duration by various parameters.: Additionne la durée des activités en fonction de différents paramètres. -List activities: Liste les activités -Number of activities: Nombre d'activités +Count activities: Nombre d'échanges +Count activities by various parameters.: Compte le nombre d'échanges enregistrées en fonction de différents paramètres. +Sum activity duration: Total de la durée des échanges +Sum activities duration by various parameters.: Additionne la durée des échanges en fonction de différents paramètres. +List activities: Liste les échanges +Number of activities: Nombre d'échanges #filters Filter by reason: Filtrer par sujet d'activité diff --git a/src/Bundle/ChillActivityBundle/translations/validators.fr.yml b/src/Bundle/ChillActivityBundle/translations/validators.fr.yml index f2c104828..053752854 100644 --- a/src/Bundle/ChillActivityBundle/translations/validators.fr.yml +++ b/src/Bundle/ChillActivityBundle/translations/validators.fr.yml @@ -1,22 +1,22 @@ The reasons's level should not be empty: Le niveau du sujet ne peut pas être vide At least one reason must be choosen: Au moins un sujet doit être choisi -For this type of activity, you must add at least one person: Pour ce type d'activité, vous devez ajouter au moins un usager -For this type of activity, you must add at least one user: Pour ce type d'activité, vous devez ajouter au moins un utilisateur -For this type of activity, you must add at least one third party: Pour ce type d'activité, vous devez ajouter au moins un tiers -For this type of activity, user is required: Pour ce type d'activité, l'utilisateur est requis -For this type of activity, date is required: Pour ce type d'activité, la date est requise -For this type of activity, location is required: Pour ce type d'activité, la localisation est requise -For this type of activity, attendee is required: Pour ce type d'activité, le champ "Présence de la personne" est requis -For this type of activity, duration time is required: Pour ce type d'activité, la durée est requise -For this type of activity, travel time is required: Pour ce type d'activité, la durée du trajet est requise -For this type of activity, reasons is required: Pour ce type d'activité, le champ "sujet" est requis -For this type of activity, comment is required: Pour ce type d'activité, un commentaire est requis -For this type of activity, sent/received is required: Pour ce type d'activité, le champ Entrant/Sortant est requis -For this type of activity, document is required: Pour ce type d'activité, un document est requis -For this type of activity, emergency is required: Pour ce type d'activité, le champ "Urgent" est requis -For this type of activity, accompanying period is required: Pour ce type d'activité, le parcours d'accompagnement est requis -For this type of activity, you must add at least one social issue: Pour ce type d'activité, vous devez ajouter au moins une problématique sociale -For this type of activity, you must add at least one social action: Pour ce type d'activité, vous devez indiquer au moins une action sociale +For this type of activity, you must add at least one person: Pour ce type d'échange, vous devez ajouter au moins un usager +For this type of activity, you must add at least one user: Pour ce type d'échange, vous devez ajouter au moins un utilisateur +For this type of activity, you must add at least one third party: Pour ce type d'échange, vous devez ajouter au moins un tiers +For this type of activity, user is required: Pour ce type d'échange, l'utilisateur est requis +For this type of activity, date is required: Pour ce type d'échange, la date est requise +For this type of activity, location is required: Pour ce type d'échange, la localisation est requise +For this type of activity, attendee is required: Pour ce type d'échange, le champ "Présence de l'usager" est requis +For this type of activity, duration time is required: Pour ce type d'échange, la durée est requise +For this type of activity, travel time is required: Pour ce type d'échange, la durée du trajet est requise +For this type of activity, reasons is required: Pour ce type d'échange, le champ "sujet" est requis +For this type of activity, comment is required: Pour ce type d'échange, un commentaire est requis +For this type of activity, sent/received is required: Pour ce type d'échange, le champ Entrant/Sortant est requis +For this type of activity, document is required: Pour ce type d'échange, un document est requis +For this type of activity, emergency is required: Pour ce type d'échange, le champ "Urgent" est requis +For this type of activity, accompanying period is required: Pour ce type d'échange, le parcours d'accompagnement est requis +For this type of activity, you must add at least one social issue: Pour ce type d'échange, vous devez ajouter au moins une problématique sociale +For this type of activity, you must add at least one social action: Pour ce type d'échange, vous devez indiquer au moins une action sociale # admin This parameter must be equal to social issue parameter: Ce paramètre doit être égal au paramètre "Visibilité du champs Problématiques sociales" diff --git a/src/Bundle/ChillAsideActivityBundle/src/DataFixtures/ORM/LoadAsideActivity.php b/src/Bundle/ChillAsideActivityBundle/src/DataFixtures/ORM/LoadAsideActivity.php index d1ac55f40..6f6a11390 100644 --- a/src/Bundle/ChillAsideActivityBundle/src/DataFixtures/ORM/LoadAsideActivity.php +++ b/src/Bundle/ChillAsideActivityBundle/src/DataFixtures/ORM/LoadAsideActivity.php @@ -55,7 +55,7 @@ class LoadAsideActivity extends Fixture implements DependentFixtureInterface $this->getReference('aside_activity_category_0') ) ->setDate((new DateTimeImmutable('today')) - ->sub(new DateInterval('P' . random_int(1, 100) . 'D'))); + ->sub(new DateInterval('P' . random_int(1, 100) . 'D'))); $manager->persist($activity); } diff --git a/src/Bundle/ChillAsideActivityBundle/src/Export/Export/ListAsideActivity.php b/src/Bundle/ChillAsideActivityBundle/src/Export/Export/ListAsideActivity.php index 976f4171c..aee168174 100644 --- a/src/Bundle/ChillAsideActivityBundle/src/Export/Export/ListAsideActivity.php +++ b/src/Bundle/ChillAsideActivityBundle/src/Export/Export/ListAsideActivity.php @@ -160,8 +160,8 @@ final class ListAsideActivity implements ListInterface, GroupedExportInterface return 'export.aside_activity.main_center'; } - /** @var Center $c */ if (null === $value || '' === $value || null === $c = $this->centerRepository->find($value)) { + /** @var Center $c */ return ''; } @@ -190,10 +190,6 @@ final class ListAsideActivity implements ListInterface, GroupedExportInterface ]; } - /** - * @param QueryBuilder $query - * @param array $data - */ public function getResult($query, $data): array { return $query->getQuery()->getResult(AbstractQuery::HYDRATE_ARRAY); diff --git a/src/Bundle/ChillAsideActivityBundle/src/Form/AsideActivityFormType.php b/src/Bundle/ChillAsideActivityBundle/src/Form/AsideActivityFormType.php index c02e53c23..9a95a8d09 100644 --- a/src/Bundle/ChillAsideActivityBundle/src/Form/AsideActivityFormType.php +++ b/src/Bundle/ChillAsideActivityBundle/src/Form/AsideActivityFormType.php @@ -28,22 +28,17 @@ use Symfony\Component\Form\FormBuilderInterface; use Symfony\Component\Form\FormEvent; use Symfony\Component\Form\FormEvents; use Symfony\Component\OptionsResolver\OptionsResolver; -use Symfony\Component\Security\Core\Authentication\Token\Storage\TokenStorageInterface; use function in_array; final class AsideActivityFormType extends AbstractType { - private TokenStorageInterface $storage; - private array $timeChoices; public function __construct( ParameterBagInterface $parameterBag, - TokenStorageInterface $storage ) { $this->timeChoices = $parameterBag->get('chill_aside_activity.form.time_duration'); - $this->storage = $storage; } public function buildForm(FormBuilderInterface $builder, array $options) diff --git a/src/Bundle/ChillAsideActivityBundle/src/Menu/SectionMenuBuilder.php b/src/Bundle/ChillAsideActivityBundle/src/Menu/SectionMenuBuilder.php index d4ed7dbf9..f23fcdc8a 100644 --- a/src/Bundle/ChillAsideActivityBundle/src/Menu/SectionMenuBuilder.php +++ b/src/Bundle/ChillAsideActivityBundle/src/Menu/SectionMenuBuilder.php @@ -44,17 +44,6 @@ class SectionMenuBuilder implements LocalMenuBuilderInterface 'order' => 11, 'icons' => ['plus'], ]); - $menu->addChild($this->translator->trans('Phonecall'), [ - 'route' => 'chill_crud_aside_activity_new', - 'routeParameters' => [ - 'type' => 1, - 'duration' => 900, - ], - ]) - ->setExtras([ - 'order' => 12, - 'icons' => ['plus'], - ]); } } diff --git a/src/Bundle/ChillAsideActivityBundle/src/Templating/Entity/CategoryRender.php b/src/Bundle/ChillAsideActivityBundle/src/Templating/Entity/CategoryRender.php index 7940b42e7..066a0ca52 100644 --- a/src/Bundle/ChillAsideActivityBundle/src/Templating/Entity/CategoryRender.php +++ b/src/Bundle/ChillAsideActivityBundle/src/Templating/Entity/CategoryRender.php @@ -16,6 +16,9 @@ use Chill\MainBundle\Templating\Entity\ChillEntityRenderInterface; use Chill\MainBundle\Templating\TranslatableStringHelper; use Symfony\Component\Templating\EngineInterface; +/** + * @implements ChillEntityRenderInterface + */ final class CategoryRender implements ChillEntityRenderInterface { public const DEFAULT_ARGS = [ @@ -45,9 +48,6 @@ final class CategoryRender implements ChillEntityRenderInterface return $parents; } - /** - * @param AsideActivityCategory $asideActivityCategory - */ public function renderBox($asideActivityCategory, array $options): string { $options = array_merge(self::DEFAULT_ARGS, $options); @@ -63,9 +63,6 @@ final class CategoryRender implements ChillEntityRenderInterface ); } - /** - * @param AsideActivityCategory $asideActivityCategory - */ public function renderString($asideActivityCategory, array $options): string { $options = array_merge(self::DEFAULT_ARGS, $options); @@ -84,9 +81,6 @@ final class CategoryRender implements ChillEntityRenderInterface return implode($options[self::SEPERATOR_KEY], $titles); } - /** - * @param AsideActivityCategory $asideActivityCategory - */ public function supports($asideActivityCategory, array $options): bool { return $asideActivityCategory instanceof AsideActivityCategory; diff --git a/src/Bundle/ChillAsideActivityBundle/src/translations/messages.fr.yml b/src/Bundle/ChillAsideActivityBundle/src/translations/messages.fr.yml index 0c807479f..cc428390c 100644 --- a/src/Bundle/ChillAsideActivityBundle/src/translations/messages.fr.yml +++ b/src/Bundle/ChillAsideActivityBundle/src/translations/messages.fr.yml @@ -21,7 +21,7 @@ Type: Type Invisible: Invisible Optional: Optionnel Required: Obligatoire -Persons: Personnes +Persons: Usagers Users: Utilisateurs Emergency: Urgent by: "Par " @@ -50,7 +50,7 @@ For agent: Pour l'utilisateur date: Date Duration: Durée Note: Note -Choose the agent for whom this activity is created: Choisissez l'agent pour qui l'activité est créée +Choose the agent for whom this activity is created: Choisissez l'agent pour qui l'échange est créé Choose the activity category: Choisir la catégorie #Duration diff --git a/src/Bundle/ChillBudgetBundle/Calculator/CalculatorInterface.php b/src/Bundle/ChillBudgetBundle/Calculator/CalculatorInterface.php index 63b4c7294..2662b896a 100644 --- a/src/Bundle/ChillBudgetBundle/Calculator/CalculatorInterface.php +++ b/src/Bundle/ChillBudgetBundle/Calculator/CalculatorInterface.php @@ -11,12 +11,13 @@ declare(strict_types=1); namespace Chill\BudgetBundle\Calculator; -use Chill\BudgetBundle\Entity\AbstractElement; +use Chill\BudgetBundle\Entity\Charge; +use Chill\BudgetBundle\Entity\Resource; interface CalculatorInterface { /** - * @param AbstractElement[] $elements + * @param array $elements */ public function calculate(array $elements): ?CalculatorResult; diff --git a/src/Bundle/ChillBudgetBundle/Calculator/CalculatorManager.php b/src/Bundle/ChillBudgetBundle/Calculator/CalculatorManager.php index 934c22e36..7987bdfdf 100644 --- a/src/Bundle/ChillBudgetBundle/Calculator/CalculatorManager.php +++ b/src/Bundle/ChillBudgetBundle/Calculator/CalculatorManager.php @@ -12,6 +12,8 @@ declare(strict_types=1); namespace Chill\BudgetBundle\Calculator; use Chill\BudgetBundle\Entity\AbstractElement; +use Chill\BudgetBundle\Entity\Charge; +use Chill\BudgetBundle\Entity\Resource; use OutOfBoundsException; use function array_key_exists; @@ -21,11 +23,14 @@ use function implode; class CalculatorManager { /** - * @var CalculatorInterface[] + * @var array */ - protected $calculators = []; + private array $calculators = []; - protected $defaultCalculator = []; + /** + * @var string[] + */ + private array $defaultCalculator = []; public function addCalculator(CalculatorInterface $calculator, bool $default) { @@ -37,7 +42,7 @@ class CalculatorManager } /** - * @param AbstractElement[] $elements + * @param array $elements * * @return CalculatorResult[] */ @@ -46,23 +51,17 @@ class CalculatorManager $results = []; foreach ($this->defaultCalculator as $alias) { - $calculator = $this->calculators[$alias]; - $result = $calculator->calculate($elements); + $result = $this->getCalculator($alias)->calculate($elements); if (null !== $result) { - $results[$calculator->getAlias()] = $result; + $results[$alias] = $result; } } return $results; } - /** - * @param string $alias - * - * @return CalculatorInterface - */ - public function getCalculator($alias) + public function getCalculator(string $alias): CalculatorInterface { if (false === array_key_exists($alias, $this->calculators)) { throw new OutOfBoundsException("The calculator with alias '{$alias}' does " diff --git a/src/Bundle/ChillBudgetBundle/Controller/ElementController.php b/src/Bundle/ChillBudgetBundle/Controller/ElementController.php index 148afbd35..b5db3cd30 100644 --- a/src/Bundle/ChillBudgetBundle/Controller/ElementController.php +++ b/src/Bundle/ChillBudgetBundle/Controller/ElementController.php @@ -14,6 +14,8 @@ namespace Chill\BudgetBundle\Controller; use Chill\BudgetBundle\Calculator\CalculatorManager; use Chill\BudgetBundle\Entity\Charge; use Chill\BudgetBundle\Entity\Resource; +use Chill\BudgetBundle\Repository\ChargeRepository; +use Chill\BudgetBundle\Repository\ResourceRepository; use Chill\BudgetBundle\Security\Authorization\BudgetElementVoter; use Chill\PersonBundle\Entity\Household\Household; use Chill\PersonBundle\Entity\Person; @@ -29,24 +31,20 @@ use function count; class ElementController extends AbstractController { - protected CalculatorManager $calculator; + private CalculatorManager $calculator; - protected LoggerInterface $chillMainLogger; + private ResourceRepository $resourceRepository; - protected EntityManagerInterface $em; - - protected TranslatorInterface $translator; + private ChargeRepository $chargeRepository; public function __construct( - EntityManagerInterface $em, - TranslatorInterface $translator, - LoggerInterface $chillMainLogger, - CalculatorManager $calculator + CalculatorManager $calculator, + ResourceRepository $resourceRepository, + ChargeRepository $chargeRepository, ) { - $this->em = $em; - $this->translator = $translator; - $this->chillMainLogger = $chillMainLogger; $this->calculator = $calculator; + $this->resourceRepository = $resourceRepository; + $this->chargeRepository = $chargeRepository; } /** @@ -59,24 +57,10 @@ class ElementController extends AbstractController { $this->denyAccessUnlessGranted(BudgetElementVoter::SEE, $person); - $charges = $this->em - ->getRepository(Charge::class) - ->findByPerson($person); + $charges = $this->chargeRepository->findAllByEntity($person); + $resources = $this->resourceRepository->findAllByEntity($person); - $ressources = $this->em - ->getRepository(Resource::class) - ->findByPerson($person); - - $now = new DateTime('now'); - - $actualCharges = $this->em - ->getRepository(Charge::class) - ->findByEntityAndDate($person, $now); - $actualResources = $this->em - ->getRepository(Resource::class) - ->findByEntityAndDate($person, $now); - - $elements = array_merge($actualCharges, $actualResources); + $elements = array_merge($charges, $resources); if (count($elements) > 0) { $results = $this->calculator->calculateDefault($elements); @@ -85,7 +69,7 @@ class ElementController extends AbstractController return $this->render('ChillBudgetBundle:Person:index.html.twig', [ 'person' => $person, 'charges' => $charges, - 'resources' => $ressources, + 'resources' => $resources, 'results' => $results ?? [], ]); } @@ -100,60 +84,19 @@ class ElementController extends AbstractController { $this->denyAccessUnlessGranted(BudgetElementVoter::SEE, $household); - $charges = $this->em - ->getRepository(Charge::class) - ->findByHousehold($household); + $charges = $this->chargeRepository->findAllByEntity($household); + $resources = $this->resourceRepository->findAllByEntity($household); - $ressources = $this->em - ->getRepository(Resource::class) - ->findByHousehold($household); - - $now = new DateTime('now'); - - $actualCharges = $this->em - ->getRepository(Charge::class) - ->findByEntityAndDate($household, $now); - $actualResources = $this->em - ->getRepository(Resource::class) - ->findByEntityAndDate($household, $now); - - $elements = array_merge($actualCharges, $actualResources); + $elements = array_merge($charges, $resources); if (count($elements) > 0) { $results = $this->calculator->calculateDefault($elements); } - // quick solution to calculate the sum, difference and amount from - // controller. This should be done from the calculators - // TODO replace this by calculators - $wholeCharges = $actualCharges; - $wholeResources = $actualResources; - - foreach ($household->getCurrentPersons() as $person) { - $wholeCharges = array_merge( - $wholeCharges, - $this->em - ->getRepository(Charge::class) - ->findByEntityAndDate($person, $now) - ); - $wholeResources = array_merge( - $wholeResources, - $this->em - ->getRepository(Resource::class) - ->findByEntityAndDate($person, $now) - ); - } - return $this->render('ChillBudgetBundle:Household:index.html.twig', [ 'household' => $household, 'charges' => $charges, - 'resources' => $ressources, - 'wholeResources' => array_filter($wholeResources, static function (Resource $r) use ($now) { - return $r->getStartDate() <= $now && ($r->getEndDate() === null || $r->getEndDate() >= $now); - }), - 'wholeCharges' => array_filter($wholeCharges, static function (Charge $c) use ($now) { - return $c->getStartDate() <= $now && ($c->getEndDate() === null || $c->getEndDate() >= $now); - }), + 'resources' => $resources, 'results' => $results ?? [], ]); } diff --git a/src/Bundle/ChillBudgetBundle/Repository/ChargeKindRepository.php b/src/Bundle/ChillBudgetBundle/Repository/ChargeKindRepository.php index 01f5cd737..9aaf68ddf 100644 --- a/src/Bundle/ChillBudgetBundle/Repository/ChargeKindRepository.php +++ b/src/Bundle/ChillBudgetBundle/Repository/ChargeKindRepository.php @@ -30,7 +30,7 @@ final class ChargeKindRepository implements ChargeKindRepositoryInterface } /** - * @return ChargeType[] + * @return array */ public function findAll(): array { @@ -38,7 +38,7 @@ final class ChargeKindRepository implements ChargeKindRepositoryInterface } /** - * @return ChargeType[] + * @return array */ public function findAllActive(): array { @@ -53,7 +53,7 @@ final class ChargeKindRepository implements ChargeKindRepositoryInterface } /** - * @return ChargeType[] + * @return array */ public function findAllByType(string $type): array { @@ -64,7 +64,7 @@ final class ChargeKindRepository implements ChargeKindRepositoryInterface * @param mixed|null $limit * @param mixed|null $offset * - * @return ChargeType[] + * @return array */ public function findBy(array $criteria, ?array $orderBy = null, ?int $limit = null, ?int $offset = null): array { diff --git a/src/Bundle/ChillBudgetBundle/Repository/ChargeKindRepositoryInterface.php b/src/Bundle/ChillBudgetBundle/Repository/ChargeKindRepositoryInterface.php index fb8c9dc35..f92851eba 100644 --- a/src/Bundle/ChillBudgetBundle/Repository/ChargeKindRepositoryInterface.php +++ b/src/Bundle/ChillBudgetBundle/Repository/ChargeKindRepositoryInterface.php @@ -19,25 +19,25 @@ interface ChargeKindRepositoryInterface extends ObjectRepository public function find($id): ?ChargeKind; /** - * @return ChargeType[] + * @return array */ public function findAll(): array; /** - * @return ChargeType[] + * @return array */ public function findAllActive(): array; /** - * @return ChargeType[] + * @return array */ public function findAllByType(string $type): array; /** - * @param mixed|null $limit - * @param mixed|null $offset + * @param int|null $limit + * @param int|null $offset * - * @return ChargeType[] + * @return array */ public function findBy(array $criteria, ?array $orderBy = null, ?int $limit = null, ?int $offset = null): array; diff --git a/src/Bundle/ChillBudgetBundle/Repository/ChargeRepository.php b/src/Bundle/ChillBudgetBundle/Repository/ChargeRepository.php index b2887bd4d..9b89010dc 100644 --- a/src/Bundle/ChillBudgetBundle/Repository/ChargeRepository.php +++ b/src/Bundle/ChillBudgetBundle/Repository/ChargeRepository.php @@ -11,9 +11,12 @@ declare(strict_types=1); namespace Chill\BudgetBundle\Repository; +use Chill\BudgetBundle\Entity\Charge; +use Chill\PersonBundle\Entity\Household\Household; use Chill\PersonBundle\Entity\Person; use DateTime; -use Doctrine\ORM\EntityRepository; +use Doctrine\Bundle\DoctrineBundle\Repository\ServiceEntityRepository; +use Doctrine\Persistence\ManagerRegistry; /** * ChargeRepository. @@ -21,24 +24,44 @@ use Doctrine\ORM\EntityRepository; * This class was generated by the Doctrine ORM. Add your own custom * repository methods below. */ -class ChargeRepository extends EntityRepository +class ChargeRepository extends ServiceEntityRepository { + public function __construct(ManagerRegistry $registry) + { + parent::__construct($registry, Charge::class); + } + + /** + * @return Charge[] + */ + public function findAllByEntity(Person|Household $entity): array + { + $qb = $this->createQueryBuilder('c'); + + $property = $entity instanceof Person ? 'person' : 'household'; + + $qb->where("c.{$property} = :entity") + ->setParameter('entity', $entity); + + return $qb->getQuery()->getResult(); + } + public function findByEntityAndDate($entity, DateTime $date, $sort = null) { $qb = $this->createQueryBuilder('c'); $entityStr = $entity instanceof Person ? 'person' : 'household'; - $qb->where("c.{$entityStr} = :{$entityStr}") - ->andWhere('c.startDate < :date') - ->andWhere('c.startDate < :date OR c.startDate IS NULL'); + $qb->where("c.{$entityStr} = :entity") + ->andWhere('c.startDate <= :date') + ->andWhere('c.endDate > :date OR c.endDate IS NULL'); if (null !== $sort) { $qb->orderBy($sort); } $qb->setParameters([ - $entityStr => $entity, + 'entity' => $entity, 'date' => $date, ]); diff --git a/src/Bundle/ChillBudgetBundle/Repository/ResourceKindRepository.php b/src/Bundle/ChillBudgetBundle/Repository/ResourceKindRepository.php index f7935c5b7..1f9f99753 100644 --- a/src/Bundle/ChillBudgetBundle/Repository/ResourceKindRepository.php +++ b/src/Bundle/ChillBudgetBundle/Repository/ResourceKindRepository.php @@ -30,7 +30,7 @@ final class ResourceKindRepository implements ResourceKindRepositoryInterface } /** - * @return ResourceType[] + * @return list */ public function findAll(): array { @@ -38,7 +38,7 @@ final class ResourceKindRepository implements ResourceKindRepositoryInterface } /** - * @return ResourceType[] + * @return list */ public function findAllActive(): array { @@ -52,8 +52,13 @@ final class ResourceKindRepository implements ResourceKindRepositoryInterface ->getResult(); } + public function findOneByKind(string $kind): ?ResourceKind + { + return $this->repository->findOneBy(['kind' => $kind]) ; + } + /** - * @return ResourceType[] + * @return list */ public function findAllByType(string $type): array { @@ -64,7 +69,7 @@ final class ResourceKindRepository implements ResourceKindRepositoryInterface * @param mixed|null $limit * @param mixed|null $offset * - * @return ResourceType[] + * @return list */ public function findBy(array $criteria, ?array $orderBy = null, ?int $limit = null, ?int $offset = null): array { @@ -76,11 +81,6 @@ final class ResourceKindRepository implements ResourceKindRepositoryInterface return $this->repository->findOneBy($criteria); } - public function findOneByKind(string $kind): ?ResourceKind - { - return $this->repository->findOneBy(['kind' => $kind]); - } - public function getClassName(): string { return ResourceKind::class; diff --git a/src/Bundle/ChillBudgetBundle/Repository/ResourceKindRepositoryInterface.php b/src/Bundle/ChillBudgetBundle/Repository/ResourceKindRepositoryInterface.php index 658a87a3d..dac46ff35 100644 --- a/src/Bundle/ChillBudgetBundle/Repository/ResourceKindRepositoryInterface.php +++ b/src/Bundle/ChillBudgetBundle/Repository/ResourceKindRepositoryInterface.php @@ -19,25 +19,25 @@ interface ResourceKindRepositoryInterface extends ObjectRepository public function find($id): ?ResourceKind; /** - * @return ResourceType[] + * @return list */ public function findAll(): array; /** - * @return ResourceType[] + * @return list */ public function findAllActive(): array; /** - * @return ResourceType[] + * @return list */ public function findAllByType(string $type): array; /** - * @param mixed|null $limit - * @param mixed|null $offset + * @param int|null $limit + * @param int|null $offset * - * @return ResourceType[] + * @return list */ public function findBy(array $criteria, ?array $orderBy = null, ?int $limit = null, ?int $offset = null): array; diff --git a/src/Bundle/ChillBudgetBundle/Repository/ResourceRepository.php b/src/Bundle/ChillBudgetBundle/Repository/ResourceRepository.php index 12f9fd52f..836f13e4b 100644 --- a/src/Bundle/ChillBudgetBundle/Repository/ResourceRepository.php +++ b/src/Bundle/ChillBudgetBundle/Repository/ResourceRepository.php @@ -11,9 +11,13 @@ declare(strict_types=1); namespace Chill\BudgetBundle\Repository; +use Chill\BudgetBundle\Entity\Resource; +use Chill\PersonBundle\Entity\Household\Household; use Chill\PersonBundle\Entity\Person; use DateTime; +use Doctrine\Bundle\DoctrineBundle\Repository\ServiceEntityRepository; use Doctrine\ORM\EntityRepository; +use Doctrine\Persistence\ManagerRegistry; /** * ResourceRepository. @@ -21,28 +25,45 @@ use Doctrine\ORM\EntityRepository; * This class was generated by the Doctrine ORM. Add your own custom * repository methods below. */ -class ResourceRepository extends EntityRepository +class ResourceRepository extends ServiceEntityRepository { - public function findByEntityAndDate($entity, DateTime $date, $sort = null) + public function __construct(ManagerRegistry $registry) + { + parent::__construct($registry, Resource::class); + } + + /** + * @return Resource[] + */ + public function findAllByEntity(Person|Household $entity): array + { + $qb = $this->createQueryBuilder('r'); + + $property = $entity instanceof Person ? 'person' : 'household'; + + $qb->where("r.{$property} = :entity") + ->setParameter('entity', $entity); + + return $qb->getQuery()->getResult(); + } + + public function findByEntityAndDate(Person|Household $entity, DateTime $date, $sort = null) { $qb = $this->createQueryBuilder('c'); $entityStr = $entity instanceof Person ? 'person' : 'household'; - $qb->where("c.{$entityStr} = :{$entityStr}") - // TODO: in controller, the budget and charges asked are also for future and actual - //->andWhere('c.startDate < :date') - // TODO: there is a misconception here, the end date must be lower or null. startDate are never null - //->andWhere('c.startDate < :date OR c.startDate IS NULL'); -; + $qb->where("c.{$entityStr} = :entity") + ->andWhere('c.startDate <= :date') + ->andWhere('c.endDate > :date OR c.endDate IS NULL'); if (null !== $sort) { $qb->orderBy($sort); } $qb->setParameters([ - $entityStr => $entity, - //'date' => $date, + 'entity' => $entity, + 'date' => $date, ]); return $qb->getQuery()->getResult(); diff --git a/src/Bundle/ChillBudgetBundle/Templating/BudgetElementTypeRender.php b/src/Bundle/ChillBudgetBundle/Templating/BudgetElementTypeRender.php index 9cc89e2bf..842e6be4e 100644 --- a/src/Bundle/ChillBudgetBundle/Templating/BudgetElementTypeRender.php +++ b/src/Bundle/ChillBudgetBundle/Templating/BudgetElementTypeRender.php @@ -17,6 +17,9 @@ use Chill\MainBundle\Templating\Entity\ChillEntityRenderInterface; use Chill\MainBundle\Templating\TranslatableStringHelperInterface; use Symfony\Component\Templating\EngineInterface; +/** + * @implements ChillEntityRenderInterface + */ final class BudgetElementTypeRender implements ChillEntityRenderInterface { private EngineInterface $engine; diff --git a/src/Bundle/ChillBudgetBundle/migrations/Version20230328155010.php b/src/Bundle/ChillBudgetBundle/migrations/Version20230328155010.php new file mode 100644 index 000000000..ed524940e --- /dev/null +++ b/src/Bundle/ChillBudgetBundle/migrations/Version20230328155010.php @@ -0,0 +1,56 @@ +addSql(<<<'SQL' + WITH type_to_id AS ( + SELECT DISTINCT charge.charge_id AS id, charge.type + FROM chill_budget.charge + WHERE type <> '' + ) + UPDATE chill_budget.charge_type + SET kind = type_to_id.type + FROM type_to_id + WHERE type_to_id.type <> '' AND type_to_id.id = charge_type.id + SQL); + + $this->addSql(<<<'SQL' + WITH type_to_id AS ( + SELECT DISTINCT resource.resource_id AS id, resource.type + FROM chill_budget. resource + WHERE type <> '' + ) + UPDATE chill_budget.resource_type + SET kind = type_to_id.type + FROM type_to_id + WHERE type_to_id.type <> '' AND type_to_id.id = resource_type.id + SQL); + } + + public function down(Schema $schema): void + { + $this->addSql("UPDATE chill_budget.resource_type SET kind=md5(random()::text) WHERE kind = ''"); + $this->addSql("UPDATE chill_budget.charge_type SET kind=md5(random()::text) WHERE kind = ''"); + } +} diff --git a/src/Bundle/ChillBudgetBundle/translations/messages.fr.yml b/src/Bundle/ChillBudgetBundle/translations/messages.fr.yml index b20477150..a5e5490a0 100644 --- a/src/Bundle/ChillBudgetBundle/translations/messages.fr.yml +++ b/src/Bundle/ChillBudgetBundle/translations/messages.fr.yml @@ -29,7 +29,7 @@ End of validity period: Fin de la période de validité Total: Total Create new resource: Créer une nouvelle ressource Create new charge: Créer une nouvelle charge -See person: Voir personne +See person: Voir usagers There isn't any element recorded: Aucun élément enregistré No resources registered: Aucune ressource enregistrée diff --git a/src/Bundle/ChillCalendarBundle/Controller/CalendarController.php b/src/Bundle/ChillCalendarBundle/Controller/CalendarController.php index 550c6e984..eed693451 100644 --- a/src/Bundle/ChillCalendarBundle/Controller/CalendarController.php +++ b/src/Bundle/ChillCalendarBundle/Controller/CalendarController.php @@ -207,6 +207,7 @@ class CalendarController extends AbstractController 'entityClassName' => Calendar::class, 'entityId' => $entity->getId(), 'template' => $template->getId(), + 'returnPath' => $request->getRequestUri(), ]); } } @@ -377,7 +378,9 @@ class CalendarController extends AbstractController $this->addFlash('success', $this->translator->trans('Success : calendar item created!')); if ($form->get('save_and_upload_doc')->isClicked()) { - return $this->redirectToRoute('chill_calendar_calendardoc_new', ['id' => $entity->getId()]); + return $this->redirectToRoute('chill_calendar_calendardoc_new', [ + 'id' => $entity->getId() + ]); } foreach ($templates as $template) { @@ -386,6 +389,7 @@ class CalendarController extends AbstractController 'entityClassName' => Calendar::class, 'entityId' => $entity->getId(), 'template' => $template->getId(), + 'returnPath' => $this->generateUrl('chill_calendar_calendar_edit', ['id' => $entity->getId()]), ]); } } @@ -526,14 +530,20 @@ class CalendarController extends AbstractController 'comment' => $calendar->getComment()->getComment(), ]; - return $this->redirectToRoute( - 'chill_activity_activity_new', - [ - 'accompanying_period_id' => $calendar->getAccompanyingPeriod()->getId(), - 'activityData' => $activityData, - 'returnPath' => $request->query->get('returnPath', null), - ] - ); + $routeParams = [ + 'activityData' => $activityData, + 'returnPath' => $request->query->get('returnPath', null), + ]; + + if ($calendar->getContext() === 'accompanying_period') { + $routeParams['accompanying_period_id'] = $calendar->getAccompanyingPeriod()->getId(); + } elseif ($calendar->getContext() === 'person') { + $routeParams['person_id'] = $calendar->getPerson()->getId(); + } else { + throw new RuntimeException('context not found for this calendar'); + } + + return $this->redirectToRoute('chill_activity_activity_new', $routeParams); } private function buildListFilterOrder(): FilterOrderHelper @@ -544,21 +554,6 @@ class CalendarController extends AbstractController return $filterOrder->build(); } - private function buildParamsToUrl(?User $user, ?AccompanyingPeriod $accompanyingPeriod): array - { - $params = []; - - if (null !== $user) { - $params['user_id'] = $user->getId(); - } - - if (null !== $accompanyingPeriod) { - $params['id'] = $accompanyingPeriod->getId(); - } - - return $params; - } - /** * Creates a form to delete a Calendar entity by id. */ diff --git a/src/Bundle/ChillCalendarBundle/Controller/CalendarDocController.php b/src/Bundle/ChillCalendarBundle/Controller/CalendarDocController.php index 74f8d93e9..d02e55f32 100644 --- a/src/Bundle/ChillCalendarBundle/Controller/CalendarDocController.php +++ b/src/Bundle/ChillCalendarBundle/Controller/CalendarDocController.php @@ -145,6 +145,9 @@ class CalendarDocController $returnParams = ['id' => $calendarDoc->getCalendar()->getPerson()->getId()]; break; + + default: + throw new \LogicException(sprintf("This context '%s' is not supported", $calendarDoc->getCalendar()->getContext())); } $form = $this->formFactory->createBuilder() diff --git a/src/Bundle/ChillCalendarBundle/Entity/Calendar.php b/src/Bundle/ChillCalendarBundle/Entity/Calendar.php index 0f112cf36..d7f38adf0 100644 --- a/src/Bundle/ChillCalendarBundle/Entity/Calendar.php +++ b/src/Bundle/ChillCalendarBundle/Entity/Calendar.php @@ -29,6 +29,7 @@ use DateTimeImmutable; use Doctrine\Common\Collections\ArrayCollection; use Doctrine\Common\Collections\Collection; use Doctrine\Common\Collections\Criteria; +use Doctrine\Common\Collections\ReadableCollection; use Doctrine\ORM\Mapping as ORM; use LogicException; use Symfony\Component\Serializer\Annotation as Serializer; @@ -92,6 +93,7 @@ class Calendar implements TrackCreationInterface, TrackUpdateInterface, HasCente /** * @ORM\ManyToOne(targetEntity="Chill\PersonBundle\Entity\AccompanyingPeriod", inversedBy="calendars") + * @Serializer\Groups({"calendar:read", "read"}) */ private ?AccompanyingPeriod $accompanyingPeriod = null; @@ -507,12 +509,14 @@ class Calendar implements TrackCreationInterface, TrackUpdateInterface, HasCente } /** - * @return Collection|User[] + * @return ReadableCollection<(int|string), User> * @Serializer\Groups({"calendar:read", "read"}) */ - public function getUsers(): Collection + public function getUsers(): ReadableCollection { - return $this->getInvites()->map(static function (Invite $i) { return $i->getUser(); }); + return $this->getInvites()->map(static function (Invite $i) { + return $i->getUser(); + }); } public function hasCalendarRange(): bool @@ -597,7 +601,9 @@ class Calendar implements TrackCreationInterface, TrackUpdateInterface, HasCente } $invite = $this->invites - ->filter(static function (Invite $invite) use ($user) { return $invite->getUser() === $user; }) + ->filter(static function (Invite $invite) use ($user) { + return $invite->getUser() === $user; + }) ->first(); $this->removeInvite($invite); diff --git a/src/Bundle/ChillCalendarBundle/Export/Aggregator/UrgencyAggregator.php b/src/Bundle/ChillCalendarBundle/Export/Aggregator/UrgencyAggregator.php index a80653441..ad5910461 100644 --- a/src/Bundle/ChillCalendarBundle/Export/Aggregator/UrgencyAggregator.php +++ b/src/Bundle/ChillCalendarBundle/Export/Aggregator/UrgencyAggregator.php @@ -44,14 +44,7 @@ class UrgencyAggregator implements AggregatorInterface public function alterQuery(QueryBuilder $qb, $data) { $qb->addSelect('cal.urgent AS urgency_aggregator'); - - $groupBy = $qb->getDQLPart('groupBy'); - - if (!empty($groupBy)) { - $qb->addGroupBy('urgency_aggregator'); - } else { - $qb->groupBy('urgency_aggregator'); - } + $qb->addGroupBy('urgency_aggregator'); } public function applyOn(): string diff --git a/src/Bundle/ChillCalendarBundle/Export/Export/CountCalendars.php b/src/Bundle/ChillCalendarBundle/Export/Export/CountCalendars.php index 06d6defca..f3bf79547 100644 --- a/src/Bundle/ChillCalendarBundle/Export/Export/CountCalendars.php +++ b/src/Bundle/ChillCalendarBundle/Export/Export/CountCalendars.php @@ -52,7 +52,7 @@ class CountCalendars implements ExportInterface, GroupedExportInterface return 'Exports of calendar'; } - public function getLabels($key, array $values, $data): Closure + public function getLabels($key, array $values, $data) { if ('export_result' !== $key) { throw new LogicException("the key {$key} is not used by this export"); diff --git a/src/Bundle/ChillCalendarBundle/Export/Filter/CalendarRangeFilter.php b/src/Bundle/ChillCalendarBundle/Export/Filter/CalendarRangeFilter.php index fde867b64..d6c38e163 100644 --- a/src/Bundle/ChillCalendarBundle/Export/Filter/CalendarRangeFilter.php +++ b/src/Bundle/ChillCalendarBundle/Export/Filter/CalendarRangeFilter.php @@ -49,23 +49,11 @@ class CalendarRangeFilter implements FilterInterface public function alterQuery(QueryBuilder $qb, $data) { - $where = $qb->getDQLPart('where'); - - dump($data); - - if ($data['hasCalendarRange']) { - $clause = $qb->expr()->isNotNull('cal.calendarRange'); + if (null !== $data['hasCalendarRange']) { + $qb->andWhere($qb->expr()->isNotNull('cal.calendarRange')); } else { - $clause = $qb->expr()->isNull('cal.calendarRange'); + $qb->andWhere($qb->expr()->isNull('cal.calendarRange')); } - - if ($where instanceof Andx) { - $where->add($clause); - } else { - $where = $qb->expr()->andX($clause); - } - - $qb->add('where', $where); } public function applyOn(): string @@ -87,6 +75,8 @@ class CalendarRangeFilter implements FilterInterface public function describeAction($data, $format = 'string'): array { + $choice = ''; + foreach (self::CHOICES as $k => $v) { if ($v === $data['hasCalendarRange']) { $choice = $k; diff --git a/src/Bundle/ChillCalendarBundle/Form/CalendarDocEditType.php b/src/Bundle/ChillCalendarBundle/Form/CalendarDocEditType.php index 26a9d59e2..34a501028 100644 --- a/src/Bundle/ChillCalendarBundle/Form/CalendarDocEditType.php +++ b/src/Bundle/ChillCalendarBundle/Form/CalendarDocEditType.php @@ -26,9 +26,6 @@ class CalendarDocEditType extends AbstractType ->add('title', TextType::class, [ 'label' => 'chill_calendar.Document title', 'required' => true, - ]) - ->add('doc', StoredObjectType::class, [ - 'label' => 'chill_calendar.Document object', ]); } diff --git a/src/Bundle/ChillCalendarBundle/Messenger/Doctrine/CalendarEntityListener.php b/src/Bundle/ChillCalendarBundle/Messenger/Doctrine/CalendarEntityListener.php index 94ba4974c..f97cbc7b2 100644 --- a/src/Bundle/ChillCalendarBundle/Messenger/Doctrine/CalendarEntityListener.php +++ b/src/Bundle/ChillCalendarBundle/Messenger/Doctrine/CalendarEntityListener.php @@ -22,6 +22,9 @@ use Chill\CalendarBundle\Entity\Calendar; use Chill\CalendarBundle\Messenger\Message\CalendarMessage; use Chill\CalendarBundle\Messenger\Message\CalendarRemovedMessage; use Doctrine\ORM\Event\LifecycleEventArgs; +use Doctrine\ORM\Event\PostPersistEventArgs; +use Doctrine\ORM\Event\PostRemoveEventArgs; +use Doctrine\ORM\Event\PostUpdateEventArgs; use Symfony\Component\Messenger\MessageBusInterface; use Symfony\Component\Security\Core\Security; @@ -37,7 +40,7 @@ class CalendarEntityListener $this->security = $security; } - public function postPersist(Calendar $calendar, LifecycleEventArgs $args): void + public function postPersist(Calendar $calendar, PostPersistEventArgs $args): void { if (!$calendar->preventEnqueueChanges) { $this->messageBus->dispatch( @@ -50,7 +53,7 @@ class CalendarEntityListener } } - public function postRemove(Calendar $calendar, LifecycleEventArgs $args): void + public function postRemove(Calendar $calendar, PostRemoveEventArgs $args): void { if (!$calendar->preventEnqueueChanges) { $this->messageBus->dispatch( @@ -62,7 +65,7 @@ class CalendarEntityListener } } - public function postUpdate(Calendar $calendar, LifecycleEventArgs $args): void + public function postUpdate(Calendar $calendar, PostUpdateEventArgs $args): void { if (!$calendar->preventEnqueueChanges) { $this->messageBus->dispatch( diff --git a/src/Bundle/ChillCalendarBundle/Messenger/Doctrine/CalendarRangeEntityListener.php b/src/Bundle/ChillCalendarBundle/Messenger/Doctrine/CalendarRangeEntityListener.php index 7628c7af4..4df548277 100644 --- a/src/Bundle/ChillCalendarBundle/Messenger/Doctrine/CalendarRangeEntityListener.php +++ b/src/Bundle/ChillCalendarBundle/Messenger/Doctrine/CalendarRangeEntityListener.php @@ -22,6 +22,9 @@ use Chill\CalendarBundle\Entity\CalendarRange; use Chill\CalendarBundle\Messenger\Message\CalendarRangeMessage; use Chill\CalendarBundle\Messenger\Message\CalendarRangeRemovedMessage; use Doctrine\ORM\Event\LifecycleEventArgs; +use Doctrine\ORM\Event\PostPersistEventArgs; +use Doctrine\ORM\Event\PostRemoveEventArgs; +use Doctrine\ORM\Event\PostUpdateEventArgs; use Symfony\Component\Messenger\MessageBusInterface; use Symfony\Component\Security\Core\Security; @@ -37,7 +40,7 @@ class CalendarRangeEntityListener $this->security = $security; } - public function postPersist(CalendarRange $calendarRange, LifecycleEventArgs $eventArgs): void + public function postPersist(CalendarRange $calendarRange, PostPersistEventArgs $eventArgs): void { if (!$calendarRange->preventEnqueueChanges) { $this->messageBus->dispatch( @@ -50,7 +53,7 @@ class CalendarRangeEntityListener } } - public function postRemove(CalendarRange $calendarRange, LifecycleEventArgs $eventArgs): void + public function postRemove(CalendarRange $calendarRange, PostRemoveEventArgs $eventArgs): void { if (!$calendarRange->preventEnqueueChanges) { $this->messageBus->dispatch( @@ -62,7 +65,7 @@ class CalendarRangeEntityListener } } - public function postUpdate(CalendarRange $calendarRange, LifecycleEventArgs $eventArgs): void + public function postUpdate(CalendarRange $calendarRange, PostUpdateEventArgs $eventArgs): void { if (!$calendarRange->preventEnqueueChanges) { $this->messageBus->dispatch( diff --git a/src/Bundle/ChillCalendarBundle/Messenger/Handler/CalendarToRemoteHandler.php b/src/Bundle/ChillCalendarBundle/Messenger/Handler/CalendarToRemoteHandler.php index 361fd33c2..9bcc0c434 100644 --- a/src/Bundle/ChillCalendarBundle/Messenger/Handler/CalendarToRemoteHandler.php +++ b/src/Bundle/ChillCalendarBundle/Messenger/Handler/CalendarToRemoteHandler.php @@ -89,10 +89,14 @@ class CalendarToRemoteHandler implements MessageHandlerInterface $newInvites = array_filter( array_map( - function ($id) { return $this->inviteRepository->find($id); }, + function ($id) { + return $this->inviteRepository->find($id); + }, $calendarMessage->getNewInvitesIds(), ), - static function (?Invite $invite) { return null !== $invite; } + static function (?Invite $invite) { + return null !== $invite; + } ); $this->calendarConnector->syncCalendar( diff --git a/src/Bundle/ChillCalendarBundle/RemoteCalendar/Connector/MSGraph/MapCalendarToUser.php b/src/Bundle/ChillCalendarBundle/RemoteCalendar/Connector/MSGraph/MapCalendarToUser.php index 504d48ffc..563bd3a38 100644 --- a/src/Bundle/ChillCalendarBundle/RemoteCalendar/Connector/MSGraph/MapCalendarToUser.php +++ b/src/Bundle/ChillCalendarBundle/RemoteCalendar/Connector/MSGraph/MapCalendarToUser.php @@ -22,6 +22,7 @@ use Chill\MainBundle\Entity\User; use DateTimeImmutable; use LogicException; use Psr\Log\LoggerInterface; +use Symfony\Contracts\HttpClient\Exception\ClientExceptionInterface; use Symfony\Contracts\HttpClient\HttpClientInterface; use function array_key_exists; @@ -74,9 +75,18 @@ class MapCalendarToUser public function getDefaultUserCalendar(string $idOrUserPrincipalName): ?array { - $value = $this->machineHttpClient->request('GET', "users/{$idOrUserPrincipalName}/calendars", [ - 'query' => ['$filter' => 'isDefaultCalendar eq true'], - ])->toArray()['value']; + try { + $value = $this->machineHttpClient->request('GET', "users/{$idOrUserPrincipalName}/calendars", [ + 'query' => ['$filter' => 'isDefaultCalendar eq true'], + ])->toArray()['value']; + } catch (ClientExceptionInterface $e) { + $this->logger->error('[MapCalendarToUser] Error while listing calendars for a user', [ + 'http_status_code' => $e->getResponse()->getStatusCode(), + 'id_user' => $idOrUserPrincipalName, + ]); + + return null; + } return $value[0] ?? null; } diff --git a/src/Bundle/ChillCalendarBundle/RemoteCalendar/Connector/MSGraph/RemoteToLocalSync/CalendarSyncer.php b/src/Bundle/ChillCalendarBundle/RemoteCalendar/Connector/MSGraph/RemoteToLocalSync/CalendarSyncer.php index 984e77d87..c5a640f32 100644 --- a/src/Bundle/ChillCalendarBundle/RemoteCalendar/Connector/MSGraph/RemoteToLocalSync/CalendarSyncer.php +++ b/src/Bundle/ChillCalendarBundle/RemoteCalendar/Connector/MSGraph/RemoteToLocalSync/CalendarSyncer.php @@ -110,11 +110,11 @@ class CalendarSyncer $endDate = RemoteEventConverter::convertStringDateWithoutTimezone($new['end']['dateTime']); if ($startDate->getTimestamp() !== $calendar->getStartDate()->getTimestamp()) { - $calendar->setStartDate($startDate)->setStatus(Calendar::STATUS_MOVED); + $calendar->setStartDate($startDate); } if ($endDate->getTimestamp() !== $calendar->getEndDate()->getTimestamp()) { - $calendar->setEndDate($endDate)->setStatus(Calendar::STATUS_MOVED); + $calendar->setEndDate($endDate); } $calendar diff --git a/src/Bundle/ChillCalendarBundle/RemoteCalendar/Connector/MSGraphRemoteCalendarConnector.php b/src/Bundle/ChillCalendarBundle/RemoteCalendar/Connector/MSGraphRemoteCalendarConnector.php index c376f9680..0454bae69 100644 --- a/src/Bundle/ChillCalendarBundle/RemoteCalendar/Connector/MSGraphRemoteCalendarConnector.php +++ b/src/Bundle/ChillCalendarBundle/RemoteCalendar/Connector/MSGraphRemoteCalendarConnector.php @@ -34,6 +34,7 @@ use Psr\Log\LoggerInterface; use Symfony\Component\HttpFoundation\RedirectResponse; use Symfony\Component\HttpFoundation\Response; use Symfony\Component\Routing\Generator\UrlGeneratorInterface; +use Symfony\Component\Security\Core\Security; use Symfony\Contracts\HttpClient\Exception\ClientExceptionInterface; use Symfony\Contracts\HttpClient\HttpClientInterface; use Symfony\Contracts\Translation\TranslatorInterface; @@ -64,6 +65,8 @@ class MSGraphRemoteCalendarConnector implements RemoteCalendarConnectorInterface private OnBehalfOfUserHttpClient $userHttpClient; + private Security $security; + public function __construct( CalendarRepository $calendarRepository, CalendarRangeRepository $calendarRangeRepository, @@ -74,7 +77,8 @@ class MSGraphRemoteCalendarConnector implements RemoteCalendarConnectorInterface OnBehalfOfUserHttpClient $userHttpClient, RemoteEventConverter $remoteEventConverter, TranslatorInterface $translator, - UrlGeneratorInterface $urlGenerator + UrlGeneratorInterface $urlGenerator, + Security $security ) { $this->calendarRepository = $calendarRepository; $this->calendarRangeRepository = $calendarRangeRepository; @@ -86,6 +90,7 @@ class MSGraphRemoteCalendarConnector implements RemoteCalendarConnectorInterface $this->translator = $translator; $this->urlGenerator = $urlGenerator; $this->userHttpClient = $userHttpClient; + $this->security = $security; } public function countEventsForUser(User $user, DateTimeImmutable $startDate, DateTimeImmutable $endDate): int @@ -133,6 +138,24 @@ class MSGraphRemoteCalendarConnector implements RemoteCalendarConnectorInterface public function isReady(): bool { + $user = $this->security->getUser(); + + if (!$user instanceof User) { + // this is not a user from chill. This is not the role of this class to + // restrict access, so we will just say that we do not have to do anything more + // here... + return true; + } + + if (null === $this->mapCalendarToUser->getUserId($user)) { + // this user is not mapped with remote calendar. The user will have to wait for + // the next calendar subscription iteration + $this->logger->debug('mark user ready for msgraph calendar as he does not have any mapping', [ + 'userId' => $user->getId(), + ]); + return true; + } + return $this->tokenStorage->hasToken(); } @@ -167,7 +190,9 @@ class MSGraphRemoteCalendarConnector implements RemoteCalendarConnectorInterface ] )->toArray(); - $ids = array_map(static function ($item) { return $item['id']; }, $bareEvents['value']); + $ids = array_map(static function ($item) { + return $item['id']; + }, $bareEvents['value']); $existingIdsInRange = $this->calendarRangeRepository->findRemoteIdsPresent($ids); $existingIdsInCalendar = $this->calendarRepository->findRemoteIdsPresent($ids); diff --git a/src/Bundle/ChillCalendarBundle/Repository/CalendarACLAwareRepository.php b/src/Bundle/ChillCalendarBundle/Repository/CalendarACLAwareRepository.php index 6861df341..7c6ef4e13 100644 --- a/src/Bundle/ChillCalendarBundle/Repository/CalendarACLAwareRepository.php +++ b/src/Bundle/ChillCalendarBundle/Repository/CalendarACLAwareRepository.php @@ -215,7 +215,7 @@ class CalendarACLAwareRepository implements CalendarACLAwareRepositoryInterface $qb ->where( $qb->expr()->orX( - // the calendar where the person is the main person: + // the calendar where the person is the main person: $qb->expr()->eq('c.person', ':person'), // when the calendar is in a reachable period, and contains person $qb->expr()->andX( diff --git a/src/Bundle/ChillCalendarBundle/Resources/public/types.ts b/src/Bundle/ChillCalendarBundle/Resources/public/types.ts index ebc7ab7be..c18cfea13 100644 --- a/src/Bundle/ChillCalendarBundle/Resources/public/types.ts +++ b/src/Bundle/ChillCalendarBundle/Resources/public/types.ts @@ -1,4 +1,4 @@ -import {EventInput} from '@fullcalendar/vue3'; +import {EventInput} from '@fullcalendar/core'; import {DateTime, Location, User, UserAssociatedInterface} from '../../../ChillMainBundle/Resources/public/types' ; import {Person} from "../../../ChillPersonBundle/Resources/public/types"; diff --git a/src/Bundle/ChillCalendarBundle/Resources/public/vuejs/Calendar/App.vue b/src/Bundle/ChillCalendarBundle/Resources/public/vuejs/Calendar/App.vue index 472bb525b..e09175a4b 100644 --- a/src/Bundle/ChillCalendarBundle/Resources/public/vuejs/Calendar/App.vue +++ b/src/Bundle/ChillCalendarBundle/Resources/public/vuejs/Calendar/App.vue @@ -15,6 +15,7 @@ :picked="null !== this.$store.getters.getMainUser ? [this.$store.getters.getMainUser] : []" :removableIfSet="false" :displayPicked="false" + :suggested="this.suggestedUsers" @addNewEntity="setMainUser" >
@@ -116,7 +117,6 @@ diff --git a/src/Bundle/ChillMainBundle/Resources/views/Form/bootstrap5/bootstrap_5_horizontal_layout.html.twig b/src/Bundle/ChillMainBundle/Resources/views/Form/bootstrap5/bootstrap_5_horizontal_layout.html.twig index f4a2c3294..1afdbb2c9 100644 --- a/src/Bundle/ChillMainBundle/Resources/views/Form/bootstrap5/bootstrap_5_horizontal_layout.html.twig +++ b/src/Bundle/ChillMainBundle/Resources/views/Form/bootstrap5/bootstrap_5_horizontal_layout.html.twig @@ -68,7 +68,8 @@ {{- form_errors(form) -}}
{% else %} -
+
{{- form_label(form) -}}
+
{{- form_widget(form, widget_attr) -}} {{- form_help(form) -}} {{- form_errors(form) -}} diff --git a/src/Bundle/ChillMainBundle/Resources/views/Form/fields.html.twig b/src/Bundle/ChillMainBundle/Resources/views/Form/fields.html.twig index 15d7625dd..28c55c9c1 100644 --- a/src/Bundle/ChillMainBundle/Resources/views/Form/fields.html.twig +++ b/src/Bundle/ChillMainBundle/Resources/views/Form/fields.html.twig @@ -18,43 +18,48 @@ {% block form_row %} {% apply spaceless %} - {% if form.vars.fullWidth is not defined or form.vars.fullWidth == false %}
-
+ {% if attr.class is not defined or ('cf-title' not in attr.class and 'cf-fields' not in attr.class ) %} + {{ form_label(form) }} {% endif %} - {% endapply %}"> - {% if attr.class is not defined or ('cf-title' not in attr.class and 'cf-fields' not in attr.class ) %} - {{ form_label(form) }} +
+
+ {{ form_widget(form) }} + {{ form_errors(form) }} +
+ {% else %} +
{{ form_label(form) }}
+
{{ form_widget(form) }}
{% endif %} -
-
- {{ form_widget(form) }} - {{ form_errors(form) }} -
- {% else %} - {{ form_widget(form) }} - {% endif %} {% endapply %} {% endblock form_row %} +{# + The block 'form_row' above may be removed ! + Read this note: https://gitlab.com/Chill-Projet/chill-bundles/-/merge_requests/502#note_1311993084 +#} {% block choice_widget_expanded %} {% apply spaceless %} @@ -200,7 +205,6 @@ {% block private_comment_row %} - {{ form_label(form) }} {{ form_row(form) }} {% endblock %} @@ -211,7 +215,6 @@ {% endblock %} {% block comment_row %} - {{ form_label(form) }} {{ form_row(form) }} {% endblock %} @@ -249,7 +252,11 @@ {% block pick_entity_dynamic_widget %} -
+
{% endblock %} {% block pick_postal_code_widget %} @@ -269,4 +276,4 @@ {{ form_errors(form.fixedDate) }}
-{% endblock %} \ No newline at end of file +{% endblock %} diff --git a/src/Bundle/ChillMainBundle/Resources/views/Workflow/_decision.html.twig b/src/Bundle/ChillMainBundle/Resources/views/Workflow/_decision.html.twig index bd9274739..0444abc69 100644 --- a/src/Bundle/ChillMainBundle/Resources/views/Workflow/_decision.html.twig +++ b/src/Bundle/ChillMainBundle/Resources/views/Workflow/_decision.html.twig @@ -66,6 +66,7 @@ {{ form_row(transition_form.future_dest_users) }} {{ form_row(transition_form.future_dest_emails) }} + {{ form_errors(transition_form.future_dest_users) }}

{{ form_label(transition_form.comment) }}

diff --git a/src/Bundle/ChillMainBundle/Routing/LocalMenuBuilderInterface.php b/src/Bundle/ChillMainBundle/Routing/LocalMenuBuilderInterface.php index c4bb0455f..f2b19f84c 100644 --- a/src/Bundle/ChillMainBundle/Routing/LocalMenuBuilderInterface.php +++ b/src/Bundle/ChillMainBundle/Routing/LocalMenuBuilderInterface.php @@ -13,8 +13,18 @@ namespace Chill\MainBundle\Routing; use Knp\Menu\MenuItem; +/** + * Implements a builder for menu + * + * @template TParams of array + */ interface LocalMenuBuilderInterface { + /** + * @param $menuId + * @param MenuItem $menu + * @param TParams $parameters + */ public function buildMenu($menuId, MenuItem $menu, array $parameters); /** diff --git a/src/Bundle/ChillMainBundle/Search/SearchApi.php b/src/Bundle/ChillMainBundle/Search/SearchApi.php index 875383839..1fea71c46 100644 --- a/src/Bundle/ChillMainBundle/Search/SearchApi.php +++ b/src/Bundle/ChillMainBundle/Search/SearchApi.php @@ -11,8 +11,8 @@ declare(strict_types=1); namespace Chill\MainBundle\Search; -use Chill\MainBundle\Pagination\Paginator; use Chill\MainBundle\Pagination\PaginatorFactory; +use Chill\MainBundle\Pagination\PaginatorInterface; use Chill\MainBundle\Serializer\Model\Collection; use Doctrine\DBAL\Types\Types; use Doctrine\ORM\EntityManagerInterface; @@ -30,7 +30,7 @@ class SearchApi private PaginatorFactory $paginator; - private iterable $providers = []; + private iterable $providers; public function __construct( EntityManagerInterface $em, @@ -42,9 +42,6 @@ class SearchApi $this->paginator = $paginator; } - /** - * @return Model/Result[] - */ public function getResults(string $pattern, array $types, array $parameters): Collection { $queries = $this->findQueries($pattern, $types, $parameters); @@ -53,10 +50,10 @@ class SearchApi throw new SearchApiNoQueryException($pattern, $types, $parameters); } - $total = $this->countItems($queries, $types, $parameters); + $total = $this->countItems($queries); $paginator = $this->paginator->create($total); - $rawResults = $this->fetchRawResult($queries, $types, $parameters, $paginator); + $rawResults = $this->fetchRawResult($queries, $types, $paginator); $this->prepareProviders($rawResults); $results = $this->buildResults($rawResults); @@ -64,7 +61,7 @@ class SearchApi return new Collection($results, $paginator); } - private function buildCountQuery(array $queries, $types, $parameters) + private function buildCountQuery(array $queries): array { $query = 'SELECT SUM(c) AS count FROM ({union_unordered}) AS sq'; $unions = []; @@ -88,7 +85,7 @@ class SearchApi $items = []; foreach ($rawResults as $r) { - foreach ($this->providers as $k => $p) { + foreach ($this->providers as $p) { if ($p->supportsResult($r['key'], $r['metadata'])) { $items[] = (new SearchApiResult($r['pertinence'])) ->setResult( @@ -103,7 +100,7 @@ class SearchApi return $items; } - private function buildUnionQuery(array $queries, $types, $parameters, Paginator $paginator) + private function buildUnionQuery(array $queries, PaginatorInterface $paginator): array { $query = '{unions} ORDER BY pertinence DESC LIMIT ? OFFSET ?'; $unions = []; @@ -126,9 +123,9 @@ class SearchApi ]; } - private function countItems($providers, $types, $parameters): int + private function countItems($providers): int { - [$countQuery, $parameters] = $this->buildCountQuery($providers, $types, $parameters); + [$countQuery, $parameters] = $this->buildCountQuery($providers); $rsmCount = new ResultSetMappingBuilder($this->em); $rsmCount->addScalarResult('count', 'count'); $countNq = $this->em->createNativeQuery($countQuery, $rsmCount); @@ -137,9 +134,9 @@ class SearchApi return (int) $countNq->getSingleScalarResult(); } - private function fetchRawResult($queries, $types, $parameters, Paginator $paginator): array + private function fetchRawResult($queries, $types, PaginatorInterface $paginator): array { - [$union, $parameters] = $this->buildUnionQuery($queries, $types, $parameters, $paginator); + [$union, $parameters] = $this->buildUnionQuery($queries, $paginator); $rsm = new ResultSetMappingBuilder($this->em); $rsm->addScalarResult('key', 'key', Types::STRING) ->addScalarResult('metadata', 'metadata', Types::JSON) @@ -172,7 +169,7 @@ class SearchApi ); } - private function prepareProviders(array $rawResults) + private function prepareProviders(array $rawResults): void { $metadatas = []; $providers = []; diff --git a/src/Bundle/ChillMainBundle/Search/SearchApiQuery.php b/src/Bundle/ChillMainBundle/Search/SearchApiQuery.php index c7b661e4f..ad852d95a 100644 --- a/src/Bundle/ChillMainBundle/Search/SearchApiQuery.php +++ b/src/Bundle/ChillMainBundle/Search/SearchApiQuery.php @@ -16,6 +16,18 @@ use function count; use function implode; use function strtr; +/** + * This create a query optimized for searching for the api response. + * + * When build, this class generate a SQL string and a list of a parameters which is suitable for running + * a native SQL query. This have usually the form of + * + * `SELECT '' as key, as metadata, as pertinence FROM WHERE `. + * + * The clause between `<>` are provided through the dedicated method in this class (@link{self::setSelectKey}, + * @link{self::setFromClause}), etc.). + * + */ class SearchApiQuery { private ?string $fromClause = null; diff --git a/src/Bundle/ChillMainBundle/Search/SearchInterface.php b/src/Bundle/ChillMainBundle/Search/SearchInterface.php index 7fced2ff9..a7cd285fe 100644 --- a/src/Bundle/ChillMainBundle/Search/SearchInterface.php +++ b/src/Bundle/ChillMainBundle/Search/SearchInterface.php @@ -71,9 +71,9 @@ interface SearchInterface * @param array $terms the string to search * @param int $start the first result (for pagination) * @param int $limit the number of result (for pagination) - * @param string $format The format for result + * @param "html"|"json" $format The format for result * - * @return string, an HTML string + * @return string|array a string if format is html, an array if format is json */ public function renderResult(array $terms, $start = 0, $limit = 50, array $options = [], $format = 'html'); diff --git a/src/Bundle/ChillMainBundle/Security/Authorization/AbstractChillVoter.php b/src/Bundle/ChillMainBundle/Security/Authorization/AbstractChillVoter.php index ee64f3bc0..02ffc9122 100644 --- a/src/Bundle/ChillMainBundle/Security/Authorization/AbstractChillVoter.php +++ b/src/Bundle/ChillMainBundle/Security/Authorization/AbstractChillVoter.php @@ -26,28 +26,4 @@ use const E_USER_DEPRECATED; */ abstract class AbstractChillVoter extends Voter implements ChillVoterInterface { - protected function supports($attribute, $subject) - { - @trigger_error( - 'This voter should implements the new `supports` ' - . 'methods introduced by Symfony 3.0, and do not rely on ' - . 'getSupportedAttributes and getSupportedClasses methods.', - E_USER_DEPRECATED - ); - - // @TODO: getSupportedAttributes() should be created in here and made abstract or in ChillVoterInterface. - // @TODO: getSupportedClasses() should be created in here and made abstract or in ChillVoterInterface. - return in_array($attribute, $this->getSupportedAttributes($attribute), true) - && in_array(get_class($subject), $this->getSupportedClasses(), true); - } - - protected function voteOnAttribute($attribute, $subject, TokenInterface $token) - { - @trigger_error('This voter should implements the new `voteOnAttribute` ' - . 'methods introduced by Symfony 3.0, and do not rely on ' - . 'isGranted method', E_USER_DEPRECATED); - - // @TODO: isGranted() should be created in here and made abstract or in ChillVoterInterface. - return $this->isGranted($attribute, $subject, $token->getUser()); - } } diff --git a/src/Bundle/ChillMainBundle/Security/Authorization/AuthorizationHelper.php b/src/Bundle/ChillMainBundle/Security/Authorization/AuthorizationHelper.php index 33e9a3db6..828f53757 100644 --- a/src/Bundle/ChillMainBundle/Security/Authorization/AuthorizationHelper.php +++ b/src/Bundle/ChillMainBundle/Security/Authorization/AuthorizationHelper.php @@ -16,7 +16,7 @@ use Chill\MainBundle\Entity\Scope; use Chill\MainBundle\Entity\User; use Chill\MainBundle\Repository\UserACLAwareRepositoryInterface; use Chill\MainBundle\Security\ParentRoleHelper; -use Chill\MainBundle\Security\Resolver\CenterResolverDispatcherInterface; +use Chill\MainBundle\Security\Resolver\CenterResolverManagerInterface; use Chill\MainBundle\Security\Resolver\ScopeResolverDispatcher; use Psr\Log\LoggerInterface; use Symfony\Component\Security\Core\Role\Role; @@ -34,7 +34,7 @@ use function get_class; */ class AuthorizationHelper implements AuthorizationHelperInterface { - private CenterResolverDispatcherInterface $centerResolverDispatcher; + private CenterResolverManagerInterface $centerResolverManager; private LoggerInterface $logger; @@ -45,13 +45,13 @@ class AuthorizationHelper implements AuthorizationHelperInterface private UserACLAwareRepositoryInterface $userACLAwareRepository; public function __construct( - CenterResolverDispatcherInterface $centerResolverDispatcher, + CenterResolverManagerInterface $centerResolverManager, LoggerInterface $logger, ScopeResolverDispatcher $scopeResolverDispatcher, UserACLAwareRepositoryInterface $userACLAwareRepository, ParentRoleHelper $parentRoleHelper ) { - $this->centerResolverDispatcher = $centerResolverDispatcher; + $this->centerResolverManager = $centerResolverManager; $this->logger = $logger; $this->scopeResolverDispatcher = $scopeResolverDispatcher; $this->userACLAwareRepository = $userACLAwareRepository; @@ -63,7 +63,7 @@ class AuthorizationHelper implements AuthorizationHelperInterface * * @param User $user The user * @param array $centers a list of centers which are going to be filtered - * @param Center|string $role + * @param mixed $role */ public function filterReachableCenters(User $user, array $centers, $role): array { @@ -113,13 +113,14 @@ class AuthorizationHelper implements AuthorizationHelperInterface * Get reachable Centers for the given user, role, * and optionally Scope. * - * @return array|Center[] + * @return list
*/ public function getReachableCenters(UserInterface $user, string $role, ?Scope $scope = null): array { if ($role instanceof Role) { $role = $role->getRole(); } + /** @var array $centers */ $centers = []; foreach ($user->getGroupCenters() as $groupCenter) { @@ -129,13 +130,13 @@ class AuthorizationHelper implements AuthorizationHelperInterface //check that the role is in the reachable roles if ($this->isRoleReached($role, $roleScope->getRole())) { if (null === $scope) { - $centers[] = $groupCenter->getCenter(); + $centers[spl_object_hash($groupCenter->getCenter())] = $groupCenter->getCenter(); break; } if ($scope->getId() === $roleScope->getScope()->getId()) { - $centers[] = $groupCenter->getCenter(); + $centers[spl_object_hash($groupCenter->getCenter())] = $groupCenter->getCenter(); break; } @@ -143,7 +144,7 @@ class AuthorizationHelper implements AuthorizationHelperInterface } } - return $centers; + return array_values($centers); } /** @@ -194,12 +195,8 @@ class AuthorizationHelper implements AuthorizationHelperInterface * * @return array|Scope[] */ - public function getReachableScopes(UserInterface $user, string $role, $center): array + public function getReachableScopes(UserInterface $user, string $role, Center|array $center): array { - if ($role instanceof Role) { - $role = $role->getRole(); - } - return $this->getReachableCircles($user, $role, $center); } @@ -252,27 +249,15 @@ class AuthorizationHelper implements AuthorizationHelperInterface */ public function userHasAccess(User $user, $entity, $attribute) { - $center = $this->centerResolverDispatcher->resolveCenter($entity); + $centers = $this->centerResolverManager->resolveCenters($entity); - if (is_iterable($center)) { - foreach ($center as $c) { - if ($this->userHasAccessForCenter($user, $c, $entity, $attribute)) { - return true; - } + foreach ($centers as $c) { + if ($this->userHasAccessForCenter($user, $c, $entity, $attribute)) { + return true; } - - return false; } - if ($center instanceof Center) { - return $this->userHasAccessForCenter($user, $center, $entity, $attribute); - } - - if (null === $center) { - return false; - } - - throw new UnexpectedValueException('could not resolver a center'); + return false; } /** diff --git a/src/Bundle/ChillMainBundle/Security/Authorization/AuthorizationHelperInterface.php b/src/Bundle/ChillMainBundle/Security/Authorization/AuthorizationHelperInterface.php index f7c1f5b46..1176cf1fa 100644 --- a/src/Bundle/ChillMainBundle/Security/Authorization/AuthorizationHelperInterface.php +++ b/src/Bundle/ChillMainBundle/Security/Authorization/AuthorizationHelperInterface.php @@ -21,12 +21,12 @@ interface AuthorizationHelperInterface * Get reachable Centers for the given user, role, * and optionnaly Scope. * - * @return Center[] + * @return list
*/ public function getReachableCenters(UserInterface $user, string $role, ?Scope $scope = null): array; /** - * @param array|Center|Center[] $center + * @param Center|list
$center */ - public function getReachableScopes(UserInterface $user, string $role, $center): array; + public function getReachableScopes(UserInterface $user, string $role, Center|array $center): array; } diff --git a/src/Bundle/ChillMainBundle/Serializer/Model/Counter.php b/src/Bundle/ChillMainBundle/Serializer/Model/Counter.php index 74c285c0d..10669c1c5 100644 --- a/src/Bundle/ChillMainBundle/Serializer/Model/Counter.php +++ b/src/Bundle/ChillMainBundle/Serializer/Model/Counter.php @@ -27,7 +27,7 @@ class Counter implements JsonSerializable return $this->counter; } - public function jsonSerialize() + public function jsonSerialize(): array { return ['count' => $this->counter]; } diff --git a/src/Bundle/ChillMainBundle/Serializer/Normalizer/AddressNormalizer.php b/src/Bundle/ChillMainBundle/Serializer/Normalizer/AddressNormalizer.php index 189860bee..8018fe951 100644 --- a/src/Bundle/ChillMainBundle/Serializer/Normalizer/AddressNormalizer.php +++ b/src/Bundle/ChillMainBundle/Serializer/Normalizer/AddressNormalizer.php @@ -98,8 +98,11 @@ class AddressNormalizer implements ContextAwareNormalizerInterface, NormalizerAw $data['validFrom'] = $address->getValidFrom(); $data['validTo'] = $address->getValidTo(); $data['refStatus'] = $address->getRefStatus(); - $data['point'] = $this->normalizer->normalize($address->getPoint(), $format, - [AbstractNormalizer::GROUPS => ['read']]); + $data['point'] = $this->normalizer->normalize( + $address->getPoint(), + $format, + [AbstractNormalizer::GROUPS => ['read']] + ); $data['isNoAddress'] = $address->isNoAddress(); } elseif ('docgen' === $format) { $dateContext = array_merge($context, ['docgen:expects' => DateTimeInterface::class]); diff --git a/src/Bundle/ChillMainBundle/Service/Import/AddressToReferenceMatcher.php b/src/Bundle/ChillMainBundle/Service/Import/AddressToReferenceMatcher.php index de37cfc15..eab6858d9 100644 --- a/src/Bundle/ChillMainBundle/Service/Import/AddressToReferenceMatcher.php +++ b/src/Bundle/ChillMainBundle/Service/Import/AddressToReferenceMatcher.php @@ -1,5 +1,14 @@ render($t, array_merge([ 'value' => $value, - 'message' => $message ?? 'No value', + 'message' => $message, ], $options)); } } diff --git a/src/Bundle/ChillMainBundle/Templating/Entity/AbstractChillEntityRender.php b/src/Bundle/ChillMainBundle/Templating/Entity/AbstractChillEntityRender.php index 089c62d77..16977fb27 100644 --- a/src/Bundle/ChillMainBundle/Templating/Entity/AbstractChillEntityRender.php +++ b/src/Bundle/ChillMainBundle/Templating/Entity/AbstractChillEntityRender.php @@ -11,15 +11,10 @@ declare(strict_types=1); namespace Chill\MainBundle\Templating\Entity; +/** + * @deprecated load @link{BoxUtilsChillEntityRenderTrait} in the render + */ abstract class AbstractChillEntityRender implements ChillEntityRenderInterface { - protected function getDefaultClosingBox(): string - { - return ''; - } - - protected function getDefaultOpeningBox($classSuffix): string - { - return '
'; - } + use BoxUtilsChillEntityRenderTrait; } diff --git a/src/Bundle/ChillMainBundle/Templating/Entity/AddressRender.php b/src/Bundle/ChillMainBundle/Templating/Entity/AddressRender.php index e9e245984..132884d60 100644 --- a/src/Bundle/ChillMainBundle/Templating/Entity/AddressRender.php +++ b/src/Bundle/ChillMainBundle/Templating/Entity/AddressRender.php @@ -20,6 +20,9 @@ use Symfony\Component\Templating\EngineInterface; use function array_merge; use function strtr; +/** + * @implements ChillEntityRenderInterface
+ */ class AddressRender implements ChillEntityRenderInterface { public const DEFAULT_OPTIONS = [ @@ -39,16 +42,12 @@ class AddressRender implements ChillEntityRenderInterface public function __construct( EngineInterface $templating, - TranslatableStringHelperInterface $translatableStringHelper) - { + TranslatableStringHelperInterface $translatableStringHelper + ) { $this->templating = $templating; $this->translatableStringHelper = $translatableStringHelper; } - /** - * @param Address addr - * @param mixed $addr - */ public function renderBox($addr, array $options): string { $options = array_merge(self::DEFAULT_OPTIONS, $options); @@ -70,8 +69,8 @@ class AddressRender implements ChillEntityRenderInterface { $lines = []; - if (null !== $addr->getPostCode()) { - if ($addr->getPostCode()->getCountry()->getCountryCode() === 'FR') { + if (null !== $addr->getPostcode()) { + if ($addr->getPostcode()->getCountry()->getCountryCode() === 'FR') { $lines[] = $this->renderIntraBuildingLine($addr); $lines[] = $this->renderBuildingLine($addr); $lines[] = $this->renderStreetLine($addr); @@ -118,10 +117,8 @@ class AddressRender implements ChillEntityRenderInterface $res = trim($street . ', ' . $streetNumber, ', '); - if (null !== $addr->getPostCode()->getCountry()->getCountryCode()) { - if ($addr->getPostCode()->getCountry()->getCountryCode() === 'FR') { - $res = trim($streetNumber . ', ' . $street, ', '); - } + if ($addr->getPostcode()->getCountry()->getCountryCode() === 'FR') { + $res = trim($streetNumber . ', ' . $street, ', '); } if ((',' === $res) || ('' === $res)) { @@ -131,10 +128,6 @@ class AddressRender implements ChillEntityRenderInterface return $res; } - /** - * @param Address addr - * @param mixed $addr - */ public function renderString($addr, array $options): string { return implode(' — ', $this->renderLines($addr)); @@ -164,10 +157,8 @@ class AddressRender implements ChillEntityRenderInterface $res = null; } - if (null !== $addr->getPostCode()->getCountry()->getCountryCode()) { - if ($addr->getPostCode()->getCountry()->getCountryCode() === 'FR') { - $res = $addr->getBuildingName(); - } + if ($addr->getPostcode()->getCountry()->getCountryCode() === 'FR') { + $res = $addr->getBuildingName(); } return $res; diff --git a/src/Bundle/ChillMainBundle/Templating/Entity/BoxUtilsChillEntityRenderTrait.php b/src/Bundle/ChillMainBundle/Templating/Entity/BoxUtilsChillEntityRenderTrait.php new file mode 100644 index 000000000..860313cbd --- /dev/null +++ b/src/Bundle/ChillMainBundle/Templating/Entity/BoxUtilsChillEntityRenderTrait.php @@ -0,0 +1,25 @@ +'; + } + + protected function getDefaultOpeningBox($classSuffix): string + { + return '
'; + } +} diff --git a/src/Bundle/ChillMainBundle/Templating/Entity/ChillEntityRender.php b/src/Bundle/ChillMainBundle/Templating/Entity/ChillEntityRender.php index e7f471d35..6b1294d42 100644 --- a/src/Bundle/ChillMainBundle/Templating/Entity/ChillEntityRender.php +++ b/src/Bundle/ChillMainBundle/Templating/Entity/ChillEntityRender.php @@ -14,8 +14,10 @@ namespace Chill\MainBundle\Templating\Entity; /** * Render an entity using `__toString()`. */ -class ChillEntityRender extends AbstractChillEntityRender +class ChillEntityRender implements ChillEntityRenderInterface { + use BoxUtilsChillEntityRenderTrait; + public function renderBox($entity, array $options): string { return $this->getDefaultOpeningBox('default') . $entity diff --git a/src/Bundle/ChillMainBundle/Templating/Entity/ChillEntityRenderInterface.php b/src/Bundle/ChillMainBundle/Templating/Entity/ChillEntityRenderInterface.php index a5a433b5d..9dadc4f7a 100644 --- a/src/Bundle/ChillMainBundle/Templating/Entity/ChillEntityRenderInterface.php +++ b/src/Bundle/ChillMainBundle/Templating/Entity/ChillEntityRenderInterface.php @@ -14,6 +14,8 @@ namespace Chill\MainBundle\Templating\Entity; /** * Interface to implement which will render an entity in template on a custom * manner. + * + * @template T */ interface ChillEntityRenderInterface { @@ -29,7 +31,7 @@ interface ChillEntityRenderInterface * * ``` * - * @param type $entity + * @param T $entity */ public function renderBox($entity, array $options): string; @@ -38,14 +40,12 @@ interface ChillEntityRenderInterface * * Example: returning the name of a person. * - * @param object $entity + * @param T $entity */ public function renderString($entity, array $options): string; /** * Return true if the class support this object for the given options. - * - * @param type $entity */ - public function supports($entity, array $options): bool; + public function supports(object $entity, array $options): bool; } diff --git a/src/Bundle/ChillMainBundle/Templating/Entity/CommentRender.php b/src/Bundle/ChillMainBundle/Templating/Entity/CommentRender.php index 7b5537692..7e567725e 100644 --- a/src/Bundle/ChillMainBundle/Templating/Entity/CommentRender.php +++ b/src/Bundle/ChillMainBundle/Templating/Entity/CommentRender.php @@ -13,33 +13,32 @@ namespace Chill\MainBundle\Templating\Entity; use Chill\MainBundle\Entity\Embeddable\CommentEmbeddable; use Chill\MainBundle\Repository\UserRepository; +use Chill\MainBundle\Repository\UserRepositoryInterface; use Symfony\Component\Templating\EngineInterface; use function array_merge; -class CommentRender extends AbstractChillEntityRender +/** + * @implements ChillEntityRenderInterface + */ +class CommentRender implements ChillEntityRenderInterface { + use BoxUtilsChillEntityRenderTrait; /** * @var EngineInterface */ private $engine; - /** - * @var \Chill\MainBundle\Repository\UserRepository - */ - private $userRepository; + private UserRepositoryInterface $userRepository; public function __construct( - UserRepository $userRepository, + UserRepositoryInterface $userRepository, EngineInterface $engine ) { $this->userRepository = $userRepository; $this->engine = $engine; } - /** - * @param CommentEmbeddable $entity - */ public function renderBox($entity, array $options): string { // default options @@ -50,7 +49,7 @@ class CommentRender extends AbstractChillEntityRender 'metadata' => true, ], $options); - if ($entity->getUserId()) { + if (null !== $entity->getUserId()) { $user = $this->userRepository->find($entity->getUserId()); } @@ -67,9 +66,6 @@ class CommentRender extends AbstractChillEntityRender ); } - /** - * @param CommentEmbeddable $entity - */ public function renderString($entity, array $options): string { return $entity->getComment(); diff --git a/src/Bundle/ChillMainBundle/Templating/Entity/UserRender.php b/src/Bundle/ChillMainBundle/Templating/Entity/UserRender.php index 6780db742..eab014289 100644 --- a/src/Bundle/ChillMainBundle/Templating/Entity/UserRender.php +++ b/src/Bundle/ChillMainBundle/Templating/Entity/UserRender.php @@ -19,6 +19,9 @@ use Symfony\Component\Templating\EngineInterface; use Symfony\Contracts\Translation\TranslatorInterface; use function array_merge; +/** + * @implements ChillEntityRenderInterface + */ class UserRender implements ChillEntityRenderInterface { public const DEFAULT_OPTIONS = [ @@ -50,9 +53,6 @@ class UserRender implements ChillEntityRenderInterface ]); } - /** - * @param User $entity - */ public function renderString($entity, array $options): string { $opts = array_merge(self::DEFAULT_OPTIONS, $options); diff --git a/src/Bundle/ChillMainBundle/Templating/Events/DelegatedBlockRenderingEvent.php b/src/Bundle/ChillMainBundle/Templating/Events/DelegatedBlockRenderingEvent.php index 3d0381e3f..ce02789fd 100644 --- a/src/Bundle/ChillMainBundle/Templating/Events/DelegatedBlockRenderingEvent.php +++ b/src/Bundle/ChillMainBundle/Templating/Events/DelegatedBlockRenderingEvent.php @@ -70,23 +70,23 @@ class DelegatedBlockRenderingEvent extends Event implements ArrayAccess return $this->content; } - public function offsetExists($offset) + public function offsetExists($offset): bool { return isset($this->context[$offset]); } - public function offsetGet($offset) + public function offsetGet($offset): mixed { return $this->context[$offset]; } - public function offsetSet($offset, $value) + public function offsetSet($offset, $value): void { throw new RuntimeException('The event context is read-only, you are not ' . 'allowed to update it.'); } - public function offsetUnset($offset) + public function offsetUnset($offset): void { throw new RuntimeException('The event context is read-only, you are not ' . 'allowed to update it.'); diff --git a/src/Bundle/ChillMainBundle/Tests/Controller/AddressToReferenceMatcherControllerTest.php b/src/Bundle/ChillMainBundle/Tests/Controller/AddressToReferenceMatcherControllerTest.php index 5c51910dc..7bcbe9889 100644 --- a/src/Bundle/ChillMainBundle/Tests/Controller/AddressToReferenceMatcherControllerTest.php +++ b/src/Bundle/ChillMainBundle/Tests/Controller/AddressToReferenceMatcherControllerTest.php @@ -1,5 +1,14 @@ willReturn(static function ($value) { switch ($value) { - case 0: - case 1: - return $value; + case 0: + case 1: + return $value; - case '_header': - return 'export'; + case '_header': + return 'export'; - default: throw new RuntimeException(sprintf('The value %s is not valid', $value)); - } + default: throw new RuntimeException(sprintf('The value %s is not valid', $value)); + } }); $export->getQueryKeys(Argument::Type('array'))->willReturn(['export']); @@ -307,15 +307,15 @@ final class ExportManagerTest extends KernelTestCase ) ->willReturn(static function ($value) { switch ($value) { - case '_header': return 'foo_header'; + case '_header': return 'foo_header'; - case 'cat a': return 'label cat a'; + case 'cat a': return 'label cat a'; - case 'cat b': return 'label cat b'; + case 'cat b': return 'label cat b'; - default: - throw new RuntimeException(sprintf('This value (%s) is not valid', $value)); - } + default: + throw new RuntimeException(sprintf('This value (%s) is not valid', $value)); + } }); $aggregator->addRole()->willReturn(null); //$aggregator->addRole()->shouldBeCalled(); diff --git a/src/Bundle/ChillMainBundle/Tests/Form/DataTransformer/IdToEntityDataTransformerTest.php b/src/Bundle/ChillMainBundle/Tests/Form/DataTransformer/IdToEntityDataTransformerTest.php index 2d2cb8e95..99815d130 100644 --- a/src/Bundle/ChillMainBundle/Tests/Form/DataTransformer/IdToEntityDataTransformerTest.php +++ b/src/Bundle/ChillMainBundle/Tests/Form/DataTransformer/IdToEntityDataTransformerTest.php @@ -77,13 +77,13 @@ final class IdToEntityDataTransformerTest extends TestCase public function testTransformMulti() { - $o1 = new class() { + $o1 = new class () { public function getId() { return 1; } }; - $o2 = new class() { + $o2 = new class () { public function getId() { return 2; @@ -104,7 +104,7 @@ final class IdToEntityDataTransformerTest extends TestCase public function testTransformSingle() { - $o = new class() { + $o = new class () { public function getId() { return 1; diff --git a/src/Bundle/ChillMainBundle/Tests/Security/Resolver/DefaultScopeResolverTest.php b/src/Bundle/ChillMainBundle/Tests/Security/Resolver/DefaultScopeResolverTest.php index 7e6710a20..30d50fca5 100644 --- a/src/Bundle/ChillMainBundle/Tests/Security/Resolver/DefaultScopeResolverTest.php +++ b/src/Bundle/ChillMainBundle/Tests/Security/Resolver/DefaultScopeResolverTest.php @@ -33,7 +33,7 @@ final class DefaultScopeResolverTest extends TestCase public function testHasScopeInterface() { $scope = new Scope(); - $entity = new class($scope) implements HasScopeInterface { + $entity = new class ($scope) implements HasScopeInterface { public function __construct(Scope $scope) { $this->scope = $scope; @@ -52,7 +52,7 @@ final class DefaultScopeResolverTest extends TestCase public function testHasScopesInterface() { - $entity = new class($scopeA = new Scope(), $scopeB = new Scope()) implements HasScopesInterface { + $entity = new class ($scopeA = new Scope(), $scopeB = new Scope()) implements HasScopesInterface { public function __construct(Scope $scopeA, Scope $scopeB) { $this->scopes = [$scopeA, $scopeB]; diff --git a/src/Bundle/ChillMainBundle/Tests/Security/Resolver/ScopeResolverDispatcherTest.php b/src/Bundle/ChillMainBundle/Tests/Security/Resolver/ScopeResolverDispatcherTest.php index e2c5d3879..31e5229bb 100644 --- a/src/Bundle/ChillMainBundle/Tests/Security/Resolver/ScopeResolverDispatcherTest.php +++ b/src/Bundle/ChillMainBundle/Tests/Security/Resolver/ScopeResolverDispatcherTest.php @@ -34,7 +34,7 @@ final class ScopeResolverDispatcherTest extends TestCase public function testHasScopeInterface() { $scope = new Scope(); - $entity = new class($scope) implements HasScopeInterface { + $entity = new class ($scope) implements HasScopeInterface { public function __construct(Scope $scope) { $this->scope = $scope; @@ -52,7 +52,7 @@ final class ScopeResolverDispatcherTest extends TestCase public function testHasScopesInterface() { - $entity = new class($scopeA = new Scope(), $scopeB = new Scope()) implements HasScopesInterface { + $entity = new class ($scopeA = new Scope(), $scopeB = new Scope()) implements HasScopesInterface { public function __construct(Scope $scopeA, Scope $scopeB) { $this->scopes = [$scopeA, $scopeB]; diff --git a/src/Bundle/ChillMainBundle/Tests/Services/Import/AddressToReferenceMatcherTest.php b/src/Bundle/ChillMainBundle/Tests/Services/Import/AddressToReferenceMatcherTest.php index ad2324012..c07e9c978 100644 --- a/src/Bundle/ChillMainBundle/Tests/Services/Import/AddressToReferenceMatcherTest.php +++ b/src/Bundle/ChillMainBundle/Tests/Services/Import/AddressToReferenceMatcherTest.php @@ -1,5 +1,14 @@ setCode('78910') ->setRefPostalCodeId($refPostalCodeId = '78910'.uniqid()) ->setCountry($belgium) - ; + ; $this->entityManager->persist($postalCode); $this->entityManager->flush(); diff --git a/src/Bundle/ChillMainBundle/Validation/Validator/RoleScopeScopePresence.php b/src/Bundle/ChillMainBundle/Validation/Validator/RoleScopeScopePresence.php index 8f783ff8f..09620d2a9 100644 --- a/src/Bundle/ChillMainBundle/Validation/Validator/RoleScopeScopePresence.php +++ b/src/Bundle/ChillMainBundle/Validation/Validator/RoleScopeScopePresence.php @@ -63,18 +63,18 @@ class RoleScopeScopePresence extends ConstraintValidator //if the role scope should have a scope if ( - !in_array($value->getRole(), $this->roleProvider->getRolesWithoutScopes(), true) - && $value->getScope() === null - ) { + !in_array($value->getRole(), $this->roleProvider->getRolesWithoutScopes(), true) + && $value->getScope() === null + ) { $this->context->buildViolation($constraint->messagePresenceRequired) ->setParameter('%role%', $this->translator->trans($value->getRole())) ->addViolation(); $this->logger->debug('the role scope should have a scope, but scope is null. Violation build.'); } elseif // if the scope should be null - ( - in_array($value->getRole(), $this->roleProvider->getRolesWithoutScopes(), true) - && null !== $value->getScope() - ) { + ( + in_array($value->getRole(), $this->roleProvider->getRolesWithoutScopes(), true) + && null !== $value->getScope() + ) { $this->context->buildViolation($constraint->messageNullRequired) ->setParameter('%role%', $this->translator->trans($value->getRole())) ->addViolation(); diff --git a/src/Bundle/ChillMainBundle/Workflow/EntityWorkflowHandlerInterface.php b/src/Bundle/ChillMainBundle/Workflow/EntityWorkflowHandlerInterface.php index 5058fed7c..1d185ba0e 100644 --- a/src/Bundle/ChillMainBundle/Workflow/EntityWorkflowHandlerInterface.php +++ b/src/Bundle/ChillMainBundle/Workflow/EntityWorkflowHandlerInterface.php @@ -11,6 +11,7 @@ declare(strict_types=1); namespace Chill\MainBundle\Workflow; +use Chill\MainBundle\Entity\User; use Chill\MainBundle\Entity\Workflow\EntityWorkflow; interface EntityWorkflowHandlerInterface @@ -36,6 +37,11 @@ interface EntityWorkflowHandlerInterface */ public function getRoleShow(EntityWorkflow $entityWorkflow): ?string; + /** + * @return User[] + */ + public function getSuggestedUsers(EntityWorkflow $entityWorkflow): array; + public function getTemplate(EntityWorkflow $entityWorkflow, array $options = []): string; public function getTemplateData(EntityWorkflow $entityWorkflow, array $options = []): array; diff --git a/src/Bundle/ChillMainBundle/migrations/Version20230301155213.php b/src/Bundle/ChillMainBundle/migrations/Version20230301155213.php index 6d93b71d9..518789213 100644 --- a/src/Bundle/ChillMainBundle/migrations/Version20230301155213.php +++ b/src/Bundle/ChillMainBundle/migrations/Version20230301155213.php @@ -2,6 +2,13 @@ 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\Migrations\Main; use Doctrine\DBAL\Schema\Schema; diff --git a/src/Bundle/ChillMainBundle/migrations/Version20230306142148.php b/src/Bundle/ChillMainBundle/migrations/Version20230306142148.php index 760d8c826..1ae328bf2 100644 --- a/src/Bundle/ChillMainBundle/migrations/Version20230306142148.php +++ b/src/Bundle/ChillMainBundle/migrations/Version20230306142148.php @@ -2,6 +2,13 @@ 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\Migrations\Main; use Doctrine\DBAL\Schema\Schema; diff --git a/src/Bundle/ChillMainBundle/migrations/Version20230306145728.php b/src/Bundle/ChillMainBundle/migrations/Version20230306145728.php index a5e1ffa6f..09a0ece6e 100644 --- a/src/Bundle/ChillMainBundle/migrations/Version20230306145728.php +++ b/src/Bundle/ChillMainBundle/migrations/Version20230306145728.php @@ -2,6 +2,13 @@ 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\Migrations\Main; use Doctrine\DBAL\Schema\Schema; diff --git a/src/Bundle/ChillMainBundle/migrations/Version20230306151218.php b/src/Bundle/ChillMainBundle/migrations/Version20230306151218.php index d3d467bea..0ff928367 100644 --- a/src/Bundle/ChillMainBundle/migrations/Version20230306151218.php +++ b/src/Bundle/ChillMainBundle/migrations/Version20230306151218.php @@ -2,6 +2,13 @@ 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\Migrations\Main; use Doctrine\DBAL\Schema\Schema; diff --git a/src/Bundle/ChillMainBundle/translations/messages+intl-icu.fr.yaml b/src/Bundle/ChillMainBundle/translations/messages+intl-icu.fr.yaml index 4756ff4f7..263a57049 100644 --- a/src/Bundle/ChillMainBundle/translations/messages+intl-icu.fr.yaml +++ b/src/Bundle/ChillMainBundle/translations/messages+intl-icu.fr.yaml @@ -45,3 +45,12 @@ workflow: few {# workflows} other {# workflows} } + +duration: + minute: >- + {m, plural, + =0 {Aucune durée} + one {# minute} + few {# minutes} + other {# minutes} + } diff --git a/src/Bundle/ChillMainBundle/translations/messages.fr.yml b/src/Bundle/ChillMainBundle/translations/messages.fr.yml index f01976e87..be02987b3 100644 --- a/src/Bundle/ChillMainBundle/translations/messages.fr.yml +++ b/src/Bundle/ChillMainBundle/translations/messages.fr.yml @@ -1,8 +1,8 @@ "This program is free software: you can redistribute it and/or modify it under the terms of the GNU Affero General Public License": "Ce programme est un logiciel libre: vous pouvez le redistribuer et/ou le modifier selon les termes de la licence GNU Affero GPL" User manual: Manuel d'utilisation Search: Rechercher -"Search persons, ...": "Recherche des personnes, ..." -Person name: Nom / Prénom de la personne +"Search persons, ...": "Recherche des usagers, ..." +Person name: Nom / Prénom de l'usager Login: Connexion Logout: Se déconnecter Bad credentials.: Le mot de passe et le nom d'utilisateur ne correspondent pas. diff --git a/src/Bundle/ChillPersonBundle/AccompanyingPeriod/SocialIssueConsistency/AccompanyingPeriodSocialIssueConsistencyEntityListener.php b/src/Bundle/ChillPersonBundle/AccompanyingPeriod/SocialIssueConsistency/AccompanyingPeriodSocialIssueConsistencyEntityListener.php index 2479920af..37f309929 100644 --- a/src/Bundle/ChillPersonBundle/AccompanyingPeriod/SocialIssueConsistency/AccompanyingPeriodSocialIssueConsistencyEntityListener.php +++ b/src/Bundle/ChillPersonBundle/AccompanyingPeriod/SocialIssueConsistency/AccompanyingPeriodSocialIssueConsistencyEntityListener.php @@ -14,6 +14,8 @@ namespace Chill\PersonBundle\AccompanyingPeriod\SocialIssueConsistency; use Chill\PersonBundle\Entity\AccompanyingPeriod; use Chill\PersonBundle\Entity\SocialWork\SocialIssue; use Doctrine\ORM\Event\LifecycleEventArgs; +use Doctrine\ORM\Event\PrePersistEventArgs; +use Doctrine\ORM\Event\PreUpdateEventArgs; /** * This service listens for preUpdate and prePersist events on some entities @@ -26,22 +28,22 @@ use Doctrine\ORM\Event\LifecycleEventArgs; */ final class AccompanyingPeriodSocialIssueConsistencyEntityListener { - public function prePersist(AccompanyingPeriodLinkedWithSocialIssuesEntityInterface $entity, LifecycleEventArgs $eventArgs) + public function prePersist(AccompanyingPeriodLinkedWithSocialIssuesEntityInterface $entity, PrePersistEventArgs $eventArgs) { $this->ensureConsistencyEntity($entity); } - public function prePersistAccompanyingPeriod(AccompanyingPeriod $period, LifecycleEventArgs $eventArgs) + public function prePersistAccompanyingPeriod(AccompanyingPeriod $period, PrePersistEventArgs $eventArgs) { $this->ensureConsistencyAccompanyingPeriod($period); } - public function preUpdate(AccompanyingPeriodLinkedWithSocialIssuesEntityInterface $entity, LifecycleEventArgs $eventArgs) + public function preUpdate(AccompanyingPeriodLinkedWithSocialIssuesEntityInterface $entity, PreUpdateEventArgs $eventArgs) { $this->ensureConsistencyEntity($entity); } - public function preUpdateAccompanyingPeriod(AccompanyingPeriod $period, LifecycleEventArgs $eventArgs) + public function preUpdateAccompanyingPeriod(AccompanyingPeriod $period, PreUpdateEventArgs $eventArgs) { $this->ensureConsistencyAccompanyingPeriod($period); } diff --git a/src/Bundle/ChillPersonBundle/Actions/Remove/PersonMove.php b/src/Bundle/ChillPersonBundle/Actions/Remove/PersonMove.php index 385a4b531..13a62094d 100644 --- a/src/Bundle/ChillPersonBundle/Actions/Remove/PersonMove.php +++ b/src/Bundle/ChillPersonBundle/Actions/Remove/PersonMove.php @@ -117,7 +117,7 @@ class PersonMove $from->getId() ); - return $sqls ?? []; + return $sqls; } protected function createDeleteSQL(ClassMetadata $metadata, Person $from, $field): string diff --git a/src/Bundle/ChillPersonBundle/Command/ImportPeopleFromCSVCommand.php b/src/Bundle/ChillPersonBundle/Command/ImportPeopleFromCSVCommand.php deleted file mode 100644 index fe548cd80..000000000 --- a/src/Bundle/ChillPersonBundle/Command/ImportPeopleFromCSVCommand.php +++ /dev/null @@ -1,1180 +0,0 @@ -logger = $logger; - $this->helper = $helper; - $this->em = $em; - $this->customFieldProvider = $customFieldProvider; - $this->eventDispatcher = $eventDispatcher; - $this->formFactory = $formFactory; - - parent::__construct('chill:person:import'); - } - - /** - * This function is a shortcut to addOption. - * - * @param string $name - * @param string $description - * @param string $default - * - * @return ImportPeopleFromCSVCommand - */ - protected function addOptionShortcut($name, $description, $default) - { - $this->addOption($name, null, InputOption::VALUE_OPTIONAL, $description, $default); - - return $this; - } - - protected function configure() - { - $this - ->addArgument('csv_file', InputArgument::REQUIRED, 'The CSV file to import') - ->setDescription('Import people from a csv file') - ->setHelp( - <<<'EOF' - Import people from a csv file. The first row must contains the header column and will determines where the value will be matched. - - Date format: the possible date format may be separatedby an |. The possible format will be tryed from the first to the last. The format should be explained as http://php.net/manual/en/function.strftime.php - - php app/console chill:person:import /tmp/hepc.csv fr_FR.utf8 \ - --firstname="Prénom" --lastname="Nom" \ - --birthdate="D.N." --birthdate_format="%d/%m/%Y" \ - --opening_date_format="%B %Y|%Y" --closing_date="der.contact" \ - --closing_date_format="%Y" --custom-field="3=code" -vvv - EOF - ) - ->addArgument( - 'locale', - InputArgument::REQUIRED, - 'The locale to use in displaying translatable strings from entities' - ) - ->addOption( - 'force-center', - null, - InputOption::VALUE_REQUIRED, - 'The id of the center' - ) - ->addOption( - 'force', - null, - InputOption::VALUE_NONE, - 'Persist people in the database (default is not to persist people)' - ) - ->addOption( - 'delimiter', - 'd', - InputOption::VALUE_OPTIONAL, - 'The delimiter character of the csv file', - ',' - ) - ->addOption( - 'enclosure', - null, - InputOption::VALUE_OPTIONAL, - 'The enclosure character of the csv file', - '"' - ) - ->addOption( - 'escape', - null, - InputOption::VALUE_OPTIONAL, - 'The escape character of the csv file', - '\\' - ) - ->addOption( - 'length', - null, - InputOption::VALUE_OPTIONAL, - 'The length of line to read. 0 means unlimited.', - 0 - ) - ->addOption( - 'dump-choice-matching', - null, - InputOption::VALUE_REQUIRED, - 'The path of the file to dump the matching between label in CSV and answers' - ) - ->addOption( - 'load-choice-matching', - null, - InputOption::VALUE_OPTIONAL, - 'The path of the file to load the matching between label in CSV and answers' - ); - - // mapping columns - foreach (self::$mapping as $m) { - $this->addOptionShortcut($m[0], $m[1], $m[2]); - } - - // other information - $this->addOptionShortcut( - 'birthdate_format', - 'Format preference for ' - . 'birthdate. See help for date formats preferences.', - self::$defaultDateInterpreter - ); - $this->addOptionShortcut( - 'opening_date_format', - 'Format preference for ' - . 'opening date. See help for date formats preferences.', - self::$defaultDateInterpreter - ); - $this->addOptionShortcut( - 'closing_date_format', - 'Format preference for ' - . 'closing date. See help for date formats preferences.', - self::$defaultDateInterpreter - ); - - // mapping column to custom fields - $this->addOption( - 'custom-field', - null, - InputOption::VALUE_REQUIRED | InputOption::VALUE_IS_ARRAY, - 'Mapping a column to a custom fields key. Example: 1=cf_slug' - ); - $this->addOption( - 'skip-interactive-field-mapping', - null, - InputOption::VALUE_NONE, - 'Do not ask for interactive mapping' - ); - } - - /** - * @param array $headers the processed header : an array as prepared by self::processingHeaders - * - * @throws Exception - */ - protected function createPerson(array $row, array $headers): Person - { - // trying to get the opening date - $openingDateString = trim($row[array_search('opening_date', $headers, true)]); - $openingDate = $this->processDate($openingDateString, $this->input->getOption('opening_date_format')); - - // @TODO: Fix the constructor parameter, $openingDate does not exists. - $person = $openingDate instanceof DateTime ? new Person($openingDate) : new Person(); - // add the center - $center = $this->getCenter($row, $headers); - - if (null === $center) { - throw new Exception('center not found'); - } - - $person->setCenter($center); - - foreach ($headers as $column => $info) { - $value = trim($row[$column]); - - switch ($info) { - case 'firstname': - $person->setFirstName($value); - - break; - - case 'lastname': - $person->setLastName($value); - - break; - - case 'birthdate': - $this->processBirthdate($person, $value); - - break; - - case 'gender': - $person->setGender($value); - - break; - - case 'opening_date': - // we have processed this when creating the person object, skipping; - break; - - case 'closing_date': - $this->processClosingDate($person, $value); - - break; - - case 'memo': - $person->setMemo($value); - - break; - - case 'email': - $person->setEmail($value); - - break; - - case 'phonenumber': - $person->setPhonenumber($value); - - break; - - case 'mobilenumber': - $person->setMobilenumber($value); - - break; - // we just keep the column number for those data - case 'postalcode': - $postalCodeValue = $value; - - break; - - case 'street1': - $street1Value = $value; - - break; - - case 'locality': - $localityValue = $value; - - break; - } - } - - // handle address - if (in_array('postalcode', $headers, true)) { - if (!empty($postalCodeValue)) { - $address = new Address(); - $postalCode = $this->guessPostalCode($postalCodeValue, $localityValue ?? ''); - - if (null === $postalCode) { - throw new Exception('The locality is not found'); - } - - $address->setPostcode($postalCode); - - if (in_array('street1', $headers, true)) { - $address->setStreetAddress1($street1Value); - } - $address->setValidFrom(new DateTime('today')); - - $person->addAddress($address); - } - } - - return $person; - } - - protected function dumpAnswerMatching() - { - if ($this->input->hasOption('dump-choice-matching') && !empty($this->input->getOption('dump-choice-matching'))) { - $this->logger->debug('Dump the matching between answer and choices'); - $str = json_encode($this->cacheAnswersMapping, JSON_PRETTY_PRINT); - - $fs = new Filesystem(); - $filename = $this->input->getOption('dump-choice-matching'); - - $fs->dumpFile($filename, $str); - } - } - - /** - * @throws Exception - * - * @return int|void|null - */ - protected function execute(InputInterface $input, OutputInterface $output) - { - $headers = $rawHeaders = []; - $this->input = $input; - $this->output = $output; - - $this->logger->debug('Setting locale to ' . $input->getArgument('locale')); - setlocale(LC_TIME, $input->getArgument('locale')); - - // opening csv as resource - $csv = $this->openCSV(); - - $num = 0; - $line = $this->line = 1; - - try { - while ( - false !== ($row = fgetcsv( - $csv, - $input->getOption('length'), - $input->getOption('delimiter'), - $input->getOption('enclosure'), - $input->getOption('escape') - )) - ) { - $this->logger->debug('Processing line ' . $this->line); - - if (1 === $line) { - $this->logger->debug('Processing line 1, headers'); - $rawHeaders = $row; - $headers = $this->processingHeaders($row); - } else { - $person = $this->createPerson($row, $headers); - - if (count($this->customFieldMapping) > 0) { - $this->processingCustomFields($person, $row); - } - - $event = new Event(); - $event->person = $person; - $event->rawHeaders = $rawHeaders; - $event->row = $row; - $event->headers = $headers; - $event->skipPerson = false; - $event->force = $this->input->getOption('force'); - $event->input = $this->input; - $event->output = $this->output; - $event->helperSet = $this->getHelperSet(); - - $this->eventDispatcher->dispatch('chill_person.person_import', $event); - - if ( - $this->input->getOption('force') === true - && false === $event->skipPerson - ) { - $this->em->persist($person); - } - - ++$num; - } - - ++$line; - ++$this->line; - } - - if ($this->input->getOption('force') === true) { - $this->logger->debug('persisting entitites'); - $this->em->flush(); - } - } finally { - $this->logger->debug('closing csv', ['method' => __METHOD__]); - fclose($csv); - // dump the matching between answer and choices - $this->dumpAnswerMatching(); - } - } - - /** - * @return Center|mixed|object|null - */ - protected function getCenter(array $row, array $headers) - { - if ($this->input->hasOption('force-center') && !empty($this->input->getOption('force-center'))) { - return $this->em->getRepository(Center::class)->find($this->input->getOption('force-center')); - } - - $columnCenter = array_search('center', $headers, true); - $centerName = trim($row[$columnCenter]); - - try { - return $this - ->em - ->createQuery('SELECT c FROM ChillMainBundle:Center c WHERE c.name = :center_name') - ->setParameter('center_name', $centerName) - ->getSingleResult(); - } catch (NonUniqueResultException $e) { - return $this->guessCenter($centerName); - } catch (NoResultException $e) { - return $this->guessCenter($centerName); - } - } - - /** - * @param $centerName - * - * @return Center|mixed|object|null - */ - protected function guessCenter($centerName) - { - if (!array_key_exists('_center_picked', $this->cacheAnswersMapping)) { - $this->cacheAnswersMapping['_center_picked'] = []; - } - - if (array_key_exists($centerName, $this->cacheAnswersMapping['_center_picked'])) { - $id = $this->cacheAnswersMapping['_center_picked'][$centerName]; - - return $this->em->getRepository(Center::class) - ->find($id); - } - - $centers = $this->em->createQuery('SELECT c FROM ChillMainBundle:Center c ' - . 'ORDER BY SIMILARITY(c.name, :center_name) DESC') - ->setParameter('center_name', $centerName) - ->setMaxResults(10) - ->getResult(); - - if (count($centers) > 1) { - if (strtolower($centers[0]->getName()) === strtolower($centerName)) { - return $centers[0]; - } - } - - $centersByName = []; - $names = array_map(static function (Center $c) use (&$centersByName) { - $n = $c->getName(); - $centersByName[$n] = $c; - - return $n; - }, $centers); - $names[] = 'none of them'; - - $helper = $this->getHelper('question'); - $question = new ChoiceQuestion( - sprintf('Which center match the name "%s" ? (default to "%s")', $centerName, $names[0]), - $names, - 0 - ); - - $answer = $helper->ask($this->input, $this->output, $question); - - if ('none of them' === $answer) { - $questionCreate = new ConfirmationQuestion('Would you like to create it ?', false); - $create = $helper->ask($this->input, $this->output, $questionCreate); - - if ($create) { - $center = (new Center()) - ->setName($centerName); - - if ($this->input->getOption('force') === true) { - $this->em->persist($center); - $this->em->flush(); - } - - return $center; - } - } - - $center = $centersByName[$answer]; - - $this->cacheAnswersMapping['_center_picked'][$centerName] = $center->getId(); - - return $center; - } - - /** - * @param $postalCode - * @param $locality - * - * @return mixed|null - */ - protected function guessPostalCode($postalCode, $locality) - { - if (!array_key_exists('_postal_code_picked', $this->cacheAnswersMapping)) { - $this->cacheAnswersMapping['_postal_code_picked'] = []; - } - - if (array_key_exists($postalCode, $this->cacheAnswersMapping['_postal_code_picked'])) { - if (array_key_exists($locality, $this->cacheAnswersMapping['_postal_code_picked'][$postalCode])) { - $id = $this->cacheAnswersMapping['_postal_code_picked'][$postalCode][$locality]; - - return $this->em->getRepository(PostalCode::class)->find($id); - } - } - - $postalCodes = $this->em->createQuery( - 'SELECT pc FROM ' . PostalCode::class . ' pc ' - . 'WHERE pc.code = :postal_code ' - . 'ORDER BY SIMILARITY(pc.name, :locality) DESC ' - ) - ->setMaxResults(10) - ->setParameter('postal_code', $postalCode) - ->setParameter('locality', $locality) - ->getResult(); - - if (count($postalCodes) >= 1) { - if ( - $postalCodes[0]->getCode() === $postalCode - && $postalCodes[0]->getName() === $locality - ) { - return $postalCodes[0]; - } - } - - if (count($postalCodes) === 0) { - return null; - } - - $postalCodeByName = []; - $names = array_map(static function (PostalCode $pc) use (&$postalCodeByName) { - $n = $pc->getName(); - $postalCodeByName[$n] = $pc; - - return $n; - }, $postalCodes); - $names[] = 'none of them'; - - $helper = $this->getHelper('question'); - $question = new ChoiceQuestion( - sprintf( - 'Which postal code match the ' - . 'name "%s" with postal code "%s" ? (default to "%s")', - $locality, - $postalCode, - $names[0] - ), - $names, - 0 - ); - - $answer = $helper->ask($this->input, $this->output, $question); - - if ('none of them' === $answer) { - return null; - } - - $pc = $postalCodeByName[$answer]; - - $this->cacheAnswersMapping['_postal_code_picked'][$postalCode][$locality] = - $pc->getId(); - - return $pc; - } - - protected function interact(InputInterface $input, OutputInterface $output) - { - // preparing the basic - $this->input = $input; - $this->output = $output; - $this->logger = new ConsoleLogger($output); - - $csv = $this->openCSV(); - - // getting the first row - if ( - false !== ($row = fgetcsv( - $csv, - $input->getOption('length'), - $input->getOption('delimiter'), - $input->getOption('enclosure'), - $input->getOption('escape') - )) - ) { - try { - $this->matchColumnToCustomField($row); - } finally { - $this->logger->debug('closing csv', ['method' => __METHOD__]); - fclose($csv); - } - } - - // load the matching between csv and label - $this->loadAnswerMatching(); - } - - /** - * Load the mapping between answer in CSV and value in choices from a json file. - */ - protected function loadAnswerMatching() - { - if ($this->input->hasOption('load-choice-matching')) { - $fs = new Filesystem(); - $filename = $this->input->getOption('load-choice-matching'); - - if (!$fs->exists($filename)) { - $this->logger->warning("The file {$filename} is not found. Choice matching not loaded"); - } else { - $this->logger->debug("Loading {$filename} as choice matching"); - $this->cacheAnswersMapping = json_decode(file_get_contents($filename), true); - } - } - } - - /** - * @param $row - */ - protected function matchColumnToCustomField($row) - { - $cfMappingsOptions = $this->input->getOption('custom-field'); - /** @var \Doctrine\Persistence\ObjectManager $em */ - $em = $this->em; - - foreach ($cfMappingsOptions as $cfMappingStringOption) { - [$rowNumber, $cfSlug] = preg_split('|=|', $cfMappingStringOption); - - // check that the column exists, getting the column name - $column = $row[$rowNumber]; - - if (empty($column)) { - $message = "The column with row {$rowNumber} is empty."; - $this->logger->error($message); - - throw new RuntimeException($message); - } - - // check a custom field exists - try { - $customField = $em->createQuery('SELECT cf ' - . 'FROM ChillCustomFieldsBundle:CustomField cf ' - . 'JOIN cf.customFieldGroup g ' - . 'WHERE cf.slug = :slug ' - . 'AND g.entity = :entity') - ->setParameters([ - 'slug' => $cfSlug, - 'entity' => Person::class, - ]) - ->getSingleResult(); - } catch (\Doctrine\ORM\NoResultException $e) { - $message = sprintf( - "The customfield with slug '%s' does not exists. It was associated with column number %d", - $cfSlug, - $rowNumber - ); - $this->logger->error($message); - - throw new RuntimeException($message); - } - // skip if custom field does not exists - if (null === $customField) { - $this->logger->error("The custom field with slug {$cfSlug} could not be found. " - . 'Stopping this command.'); - - throw new RuntimeException("The custom field with slug {$cfSlug} could not be found. " - . 'Stopping this command.'); - } - - $this->logger->notice(sprintf( - "Matched custom field %s (question : '%s') on column %d (displayed in the file as '%s')", - $customField->getSlug(), - $this->helper->localize($customField->getName()), - $rowNumber, - $column - )); - - $this->customFieldMapping[$rowNumber] = $customField; - } - } - - /** - * @throws RuntimeException - * - * @return resource - */ - protected function openCSV() - { - $fs = new Filesystem(); - $filename = $this->input->getArgument('csv_file'); - - if (!$fs->exists($filename)) { - throw new RuntimeException('The file does not exists or you do not ' - . 'have the right to read it.'); - } - - $resource = fopen($filename, 'rb'); - - if (false === $resource) { - throw new RuntimeException("The file '{$filename}' could not be opened."); - } - - return $resource; - } - - /** - * @param $value - * - * @throws Exception - */ - protected function processBirthdate(Person $person, $value) - { - if (empty($value)) { - return; - } - - $date = $this->processDate($value, $this->input->getOption('birthdate_format')); - - if ($date instanceof DateTime) { - // we correct birthdate if the date is in the future - // the most common error is to set date 100 years to late (ex. 2063 instead of 1963) - if ($date > new DateTime('yesterday')) { - $date = $date->sub(new DateInterval('P100Y')); - } - - $person->setBirthdate($date); - - return; - } - - // if we arrive here, we could not process the date - $this->logger->warning(sprintf( - 'Line %d : the birthdate could not be interpreted. Was %s.', - $this->line, - $value - )); - } - - /** - * Process a custom field choice. - * - * The method try to guess if the result exists amongst the text of the possible - * choices. If the texts exists, then this is picked. Else, ask the user. - * - * @param string $value - * - * @throws Exception - * - * @return string - */ - protected function processChoiceType( - $value, - \Symfony\Component\Form\FormInterface $form, - \Chill\CustomFieldsBundle\Entity\CustomField $cf - ) { - // getting the possible answer and their value : - $view = $form->get($cf->getSlug())->createView(); - $answers = $this->collectChoicesAnswers($view->vars['choices']); - - // if we do not have any answer on the question, throw an error. - if (count($answers) === 0) { - $message = sprintf( - "The question '%s' with slug '%s' does not count any answer.", - $this->helper->localize($cf->getName()), - $cf->getSlug() - ); - - $this->logger->error($message, [ - 'method' => __METHOD__, - 'slug' => $cf->getSlug(), - 'question' => $this->helper->localize($cf->getName()), - ]); - - throw new RuntimeException($message); - } - - if (false === $view->vars['required']) { - $answers[null] = '** no answer'; - } - - // the answer does not exists in cache. Try to find it, or asks the user - if (!isset($this->cacheAnswersMapping[$cf->getSlug()][$value])) { - // try to find the answer (with array_keys and a search value - $values = array_keys( - array_map(static function ($label) { - return trim(strtolower($label)); - }, $answers), - trim(strtolower($value)), - true - ); - - if (count($values) === 1) { - // we could guess an answer ! - $this->logger->info('This question accept multiple answers'); - $this->cacheAnswersMapping[$cf->getSlug()][$value] = - false === $view->vars['multiple'] ? $values[0] : [$values[0]]; - $this->logger->info(sprintf( - "Guessed that value '%s' match with key '%s' " - . 'because the CSV and the label are equals.', - $value, - $values[0] - )); - } else { - // we could nog guess an answer. Asking the user. - $this->output->writeln('I do not know the answer to this question : '); - $this->output->writeln($this->helper->localize($cf->getName())); - - // printing the possible answers - /** @var \Symfony\Component\Console\Helper\Table $table */ - $table = new Table($this->output); - $table->setHeaders(['#', 'label', 'value']); - $i = 0; - - $matchingTableRowAnswer = []; - - foreach ($answers as $key => $answer) { - $table->addRow([ - $i, $answer, $key, - ]); - $matchingTableRowAnswer[$i] = $key; - ++$i; - } - $table->render($this->output); - - $question = new ChoiceQuestion( - sprintf('Please pick your choice for the value "%s"', $value), - array_keys($matchingTableRowAnswer) - ); - $question->setErrorMessage('This choice is not possible'); - - if ($view->vars['multiple']) { - $this->logger->debug('this question is multiple'); - $question->setMultiselect(true); - } - - $selected = $this->getHelper('question')->ask($this->input, $this->output, $question); - - $this->output->writeln( - sprintf( - 'You have selected "%s"', - is_array($answers[$matchingTableRowAnswer[$selected]]) ? - implode(',', $answers[$matchingTableRowAnswer[$selected]]) : - $answers[$matchingTableRowAnswer[$selected]] - ) - ); - - // recording value in cache - $this->cacheAnswersMapping[$cf->getSlug()][$value] = $matchingTableRowAnswer[$selected]; - $this->logger->debug(sprintf( - "Setting the value '%s' in cache for customfield '%s' and answer '%s'", - is_array($this->cacheAnswersMapping[$cf->getSlug()][$value]) ? - implode(', ', $this->cacheAnswersMapping[$cf->getSlug()][$value]) : - $this->cacheAnswersMapping[$cf->getSlug()][$value], - $cf->getSlug(), - $value - )); - } - } - - $form->submit([$cf->getSlug() => $this->cacheAnswersMapping[$cf->getSlug()][$value]]); - $value = $form->getData()[$cf->getSlug()]; - - $this->logger->debug( - sprintf( - "Found value : %s for custom field with question '%s'", - is_array($value) ? implode(',', $value) : $value, - $this->helper->localize($cf->getName()) - ) - ); - - return $value; - } - - /** - * @param $value - * - * @throws Exception - */ - protected function processClosingDate(Person $person, $value) - { - if (empty($value)) { - return; - } - - // we skip if the opening date is now (or after yesterday) - /** @var \Chill\PersonBundle\Entity\AccompanyingPeriod $period */ - $period = $person->getCurrentAccompanyingPeriod(); - - if ($period->getOpeningDate() > new DateTime('yesterday')) { - $this->logger->debug(sprintf( - 'skipping a closing date because opening date is after yesterday (%s)', - $period->getOpeningDate()->format('Y-m-d') - )); - - return; - } - - $date = $this->processDate($value, $this->input->getOption('closing_date_format')); - - if ($date instanceof DateTime) { - // we correct birthdate if the date is in the future - // the most common error is to set date 100 years to late (ex. 2063 instead of 1963) - if ($date > new DateTime('yesterday')) { - $date = $date->sub(new DateInterval('P100Y')); - } - - $period->setClosingDate($date); - $person->close(); - - return; - } - - // if we arrive here, we could not process the date - $this->logger->warning(sprintf( - 'Line %d : the closing date could not be interpreted. Was %s.', - $this->line, - $value - )); - } - - /** - * @param $value - * @param $formats - * - * @return bool|DateTime - */ - protected function processDate($value, $formats) - { - $possibleFormats = explode('|', $formats); - - foreach ($possibleFormats as $format) { - $this->logger->debug("Trying format {$format}", [__METHOD__]); - $dateR = strptime($value, $format); - - if (is_array($dateR) && '' === $dateR['unparsed']) { - $string = sprintf( - '%04d-%02d-%02d %02d:%02d:%02d', - ($dateR['tm_year'] + 1900), - ($dateR['tm_mon'] + 1), - ($dateR['tm_mday']), - ($dateR['tm_hour']), - ($dateR['tm_min']), - ($dateR['tm_sec']) - ); - $date = DateTime::createFromFormat('Y-m-d H:i:s', $string); - $this->logger->debug(sprintf('Interpreting %s as date %s', $value, $date->format('Y-m-d H:i:s'))); - - return $date; - } - } - - // if we arrive here, we could not process the date - $this->logger->debug(sprintf( - 'Line %d : a date could not be interpreted. Was %s.', - $this->line, - $value - )); - - return false; - } - - /** - * @param $row - * - * @throws Exception - */ - protected function processingCustomFields(Person $person, $row) - { - /** @var \Chill\CustomFieldsBundle\Service\CustomFieldProvider $cfProvider */ - $cfProvider = $this->customFieldProvider; - $cfData = []; - - /** @var \Chill\CustomFieldsBundle\Entity\CustomField $$customField */ - foreach ($this->customFieldMapping as $rowNumber => $customField) { - $builder = $this->formFactory->createBuilder(); - $cfProvider->getCustomFieldByType($customField->getType()) - ->buildForm($builder, $customField); - $form = $builder->getForm(); - - // get the type of the form - $type = get_class($form->get($customField->getSlug()) - ->getConfig()->getType()->getInnerType()); - $this->logger->debug(sprintf( - 'Processing a form of type %s', - $type - )); - - switch ($type) { - case \Symfony\Component\Form\Extension\Core\Type\TextType::class: - $cfData[$customField->getSlug()] = - $this->processTextType($row[$rowNumber], $form, $customField); - - break; - - case \Symfony\Component\Form\Extension\Core\Type\ChoiceType::class: - case \Chill\MainBundle\Form\Type\Select2ChoiceType::class: - $cfData[$customField->getSlug()] = - $this->processChoiceType($row[$rowNumber], $form, $customField); - } - } - - $person->setCFData($cfData); - } - - /** - * @return array where keys are column number, and value is information mapped - */ - protected function processingHeaders(array $firstRow): array - { - $availableOptions = array_map( - static fn (array $m) => $m[0], - self::$mapping - ); - $matchedColumnHeaders = $headers = []; - - foreach ($availableOptions as $option) { - $matchedColumnHeaders[$option] = $this->input->getOption($option); - } - - foreach ($firstRow as $key => $content) { - $content = trim($content); - - if (in_array($content, $matchedColumnHeaders, true)) { - $information = array_search($content, $matchedColumnHeaders, true); - $headers[$key] = $information; - $this->logger->notice("Matched {$information} on column {$key} (displayed in the file as '{$content}')"); - } else { - $this->logger->notice("Column with content '{$content}' is ignored"); - } - } - - return $headers; - } - - /** - * Process a text type on a custom field. - * - * @param type $value - * - * @return type - */ - protected function processTextType( - $value, - \Symfony\Component\Form\FormInterface $form, - \Chill\CustomFieldsBundle\Entity\CustomField $cf - ) { - $form->submit([$cf->getSlug() => $value]); - - $value = $form->getData()[$cf->getSlug()]; - - $this->logger->debug(sprintf('Found value : %s for custom field with question ' - . "'%s'", $value, $this->helper->localize($cf->getName()))); - - return $value; - } - - /** - * Recursive method to collect the possibles answer from a ChoiceType (or - * its inherited types). - * - * @param mixed $choices - * - * @throws Exception - * - * @return array where - */ - private function collectChoicesAnswers($choices) - { - $answers = []; - - /** @var \Symfony\Component\Form\ChoiceList\View\ChoiceView $choice */ - foreach ($choices as $choice) { - if ($choice instanceof \Symfony\Component\Form\ChoiceList\View\ChoiceView) { - $answers[$choice->value] = $choice->label; - } elseif ($choice instanceof \Symfony\Component\Form\ChoiceList\View\ChoiceGroupView) { - $answers = $answers + $this->collectChoicesAnswers($choice->choices); - } else { - throw new Exception(sprintf( - "The choice type is not know. Expected '%s' or '%s', get '%s'", - \Symfony\Component\Form\ChoiceList\View\ChoiceView::class, - \Symfony\Component\Form\ChoiceList\View\ChoiceGroupView::class, - get_class($choice) - )); - } - } - - return $answers; - } -} diff --git a/src/Bundle/ChillPersonBundle/Controller/AccompanyingPeriodController.php b/src/Bundle/ChillPersonBundle/Controller/AccompanyingPeriodController.php index d762fa868..e9e27f9c9 100644 --- a/src/Bundle/ChillPersonBundle/Controller/AccompanyingPeriodController.php +++ b/src/Bundle/ChillPersonBundle/Controller/AccompanyingPeriodController.php @@ -70,10 +70,10 @@ class AccompanyingPeriodController extends AbstractController if ($person->isOpen() === false) { $this->get('session')->getFlashBag() ->add('error', $this->get('translator') - ->trans( - 'Beware period is closed', - ['%name%' => $person->__toString()] - )); + ->trans( + 'Beware period is closed', + ['%name%' => $person->__toString()] + )); return $this->redirect( $this->generateUrl('chill_person_accompanying_period_list', [ @@ -99,9 +99,9 @@ class AccompanyingPeriodController extends AbstractController if (count($errors) === 0) { $this->get('session')->getFlashBag() ->add('success', $this->get('translator') - ->trans('An accompanying period has been closed.', [ - '%name%' => $person->__toString(), - ])); + ->trans('An accompanying period has been closed.', [ + '%name%' => $person->__toString(), + ])); $this->getDoctrine()->getManager()->flush(); @@ -113,7 +113,7 @@ class AccompanyingPeriodController extends AbstractController } $this->get('session')->getFlashBag() ->add('error', $this->get('translator') - ->trans('Error! Period not closed!')); + ->trans('Error! Period not closed!')); foreach ($errors as $error) { $this->get('session')->getFlashBag() @@ -251,10 +251,10 @@ class AccompanyingPeriodController extends AbstractController if ($person->isOpen()) { $this->get('session')->getFlashBag() ->add('error', $this->get('translator') - ->trans( - 'Error! Period %name% is not closed ; it can be open', - ['%name%' => $person->__toString()] - )); + ->trans( + 'Error! Period %name% is not closed ; it can be open', + ['%name%' => $person->__toString()] + )); return $this->redirect( $this->generateUrl('chill_person_accompanying_period_list', [ @@ -285,10 +285,10 @@ class AccompanyingPeriodController extends AbstractController if (count($errors) <= 0) { $this->get('session')->getFlashBag() ->add('success', $this->get('translator') - ->trans( - 'An accompanying period has been opened.', - ['%name%' => $person->__toString()] - )); + ->trans( + 'An accompanying period has been opened.', + ['%name%' => $person->__toString()] + )); $this->getDoctrine()->getManager()->flush(); @@ -300,7 +300,7 @@ class AccompanyingPeriodController extends AbstractController } $this->get('session')->getFlashBag() ->add('error', $this->get('translator') - ->trans('Period not opened')); + ->trans('Period not opened')); foreach ($errors as $error) { $this->get('session')->getFlashBag() diff --git a/src/Bundle/ChillPersonBundle/Controller/HouseholdController.php b/src/Bundle/ChillPersonBundle/Controller/HouseholdController.php index ba7c78f65..7b9eb0084 100644 --- a/src/Bundle/ChillPersonBundle/Controller/HouseholdController.php +++ b/src/Bundle/ChillPersonBundle/Controller/HouseholdController.php @@ -82,7 +82,7 @@ class HouseholdController extends AbstractController } usort($accompanyingPeriods, static function ($a, $b) { - return $b->getOpeningDate() > $a->getOpeningDate(); + return $b->getOpeningDate() <=> $a->getOpeningDate(); }); $oldMembers = $household->getNonCurrentMembers(); diff --git a/src/Bundle/ChillPersonBundle/Controller/PersonController.php b/src/Bundle/ChillPersonBundle/Controller/PersonController.php index f4e188f96..ae12c566d 100644 --- a/src/Bundle/ChillPersonBundle/Controller/PersonController.php +++ b/src/Bundle/ChillPersonBundle/Controller/PersonController.php @@ -11,6 +11,8 @@ declare(strict_types=1); namespace Chill\PersonBundle\Controller; +use Chill\MainBundle\Security\Authorization\AuthorizationHelper; +use Chill\MainBundle\Security\Authorization\AuthorizationHelperInterface; use Chill\PersonBundle\Config\ConfigPersonAltNamesHelper; use Chill\PersonBundle\Entity\Household\Household; use Chill\PersonBundle\Entity\Household\HouseholdMember; @@ -20,6 +22,7 @@ use Chill\PersonBundle\Form\PersonType; use Chill\PersonBundle\Privacy\PrivacyEvent; use Chill\PersonBundle\Repository\PersonRepository; use Chill\PersonBundle\Search\SimilarPersonMatcher; +use Chill\PersonBundle\Security\Authorization\PersonVoter; use DateTimeImmutable; use Doctrine\ORM\EntityManagerInterface; use Psr\Log\LoggerInterface; @@ -44,6 +47,8 @@ use function is_array; final class PersonController extends AbstractController { + private AuthorizationHelperInterface $authorizationHelper; + /** * @var ConfigPersonAltNamesHelper */ @@ -85,6 +90,7 @@ final class PersonController extends AbstractController private $validator; public function __construct( + AuthorizationHelperInterface $authorizationHelper, SimilarPersonMatcher $similarPersonMatcher, TranslatorInterface $translator, EventDispatcherInterface $eventDispatcher, @@ -93,8 +99,8 @@ final class PersonController extends AbstractController LoggerInterface $logger, ValidatorInterface $validator, EntityManagerInterface $em, - Security $security ) { + $this->authorizationHelper = $authorizationHelper; $this->similarPersonMatcher = $similarPersonMatcher; $this->translator = $translator; $this->eventDispatcher = $eventDispatcher; @@ -103,7 +109,6 @@ final class PersonController extends AbstractController $this->logger = $logger; $this->validator = $validator; $this->em = $em; - $this->security = $security; } public function editAction($person_id, Request $request) @@ -204,22 +209,15 @@ final class PersonController extends AbstractController * * The next post compare the data with previous one and, if yes, show a * review page if there are "alternate persons". - * - * @return Response|\Symfony\Component\HttpFoundation\RedirectResponse */ - public function newAction(Request $request) + public function newAction(Request $request): Response { $person = new Person(); - if ( - 1 === count($this->security->getUser() - ->getGroupCenters()) - ) { - $person->setCenter( - $this->security->getUser() - ->getGroupCenters()[0] - ->getCenter() - ); + $authorizedCenters =$this->authorizationHelper->getReachableCenters($this->getUser(), PersonVoter::CREATE); + + if (1 === count($authorizedCenters)) { + $person->setCenter($authorizedCenters[0]); } $form = $this->createForm(CreationPersonType::class, $person) diff --git a/src/Bundle/ChillPersonBundle/Controller/ReassignAccompanyingPeriodController.php b/src/Bundle/ChillPersonBundle/Controller/ReassignAccompanyingPeriodController.php index 91b834891..5b2de9f65 100644 --- a/src/Bundle/ChillPersonBundle/Controller/ReassignAccompanyingPeriodController.php +++ b/src/Bundle/ChillPersonBundle/Controller/ReassignAccompanyingPeriodController.php @@ -98,6 +98,7 @@ class ReassignAccompanyingPeriodController extends AbstractController $total = $this->accompanyingPeriodACLAwareRepository->countByUserOpenedAccompanyingPeriod($userFrom); $paginator = $this->paginatorFactory->create($total); + $paginator->setItemsPerPage(50); $periods = $this->accompanyingPeriodACLAwareRepository ->findByUserAndPostalCodesOpenedAccompanyingPeriod( $userFrom, diff --git a/src/Bundle/ChillPersonBundle/DataFixtures/ORM/LoadPeople.php b/src/Bundle/ChillPersonBundle/DataFixtures/ORM/LoadPeople.php index 09f7dd513..4f43879fd 100644 --- a/src/Bundle/ChillPersonBundle/DataFixtures/ORM/LoadPeople.php +++ b/src/Bundle/ChillPersonBundle/DataFixtures/ORM/LoadPeople.php @@ -407,6 +407,7 @@ class LoadPeople extends AbstractFixture implements ContainerAwareInterface, Ord private function createExpectedPerson($default): Person { + /** @var Person $person */ $person = $this->loader->loadData([ Person::class => [ 'person' => [ @@ -439,10 +440,15 @@ class LoadPeople extends AbstractFixture implements ContainerAwareInterface, Ord break; case 'countryOfBirth': + $country = $this->countryRepository + ->findOneBy(['countryCode' => $value]); + $person->setCountryOfBirth($country); + + break; case 'nationality': $country = $this->countryRepository ->findOneBy(['countryCode' => $value]); - $person->{'set' . ucfirst($key)}($country); + $person->setNationality($country); break; @@ -484,42 +490,6 @@ class LoadPeople extends AbstractFixture implements ContainerAwareInterface, Ord return $this->getReference($ref); } - /** - * Create a random address. - * - * @return Address - */ - private function getRandomAddress() - { - return (new Address()) - ->setStreetAddress1($this->faker->streetAddress) - ->setStreetAddress2( - mt_rand(0, 9) > 5 ? $this->faker->streetAddress : '' - ) - ->setPoint( - mt_rand(0, 9) > 5 ? $this->getRandomPoint() : null - ) - ->setPostcode($this->getReference( - LoadPostalCodes::$refs[array_rand(LoadPostalCodes::$refs)] - )) - ->setValidFrom($this->faker->dateTimeBetween('-5 years')); - } - - /** - * Create a random point. - * - * @return Point - */ - private function getRandomPoint() - { - $lonBrussels = 4.35243; - $latBrussels = 50.84676; - $lon = $lonBrussels + 0.01 * mt_rand(-5, 5); - $lat = $latBrussels + 0.01 * mt_rand(-5, 5); - - return Point::fromLonLat($lon, $lat); - } - private function getRandomSocialIssue(): SocialIssue { if (0 === count($this->cacheSocialIssues)) { diff --git a/src/Bundle/ChillPersonBundle/DependencyInjection/Configuration.php b/src/Bundle/ChillPersonBundle/DependencyInjection/Configuration.php index 86993a1bd..f9686c900 100644 --- a/src/Bundle/ChillPersonBundle/DependencyInjection/Configuration.php +++ b/src/Bundle/ChillPersonBundle/DependencyInjection/Configuration.php @@ -129,7 +129,7 @@ class Configuration implements ConfigurationInterface ->defaultValue(false) ->end() ->end() // children of 'root', parent = root -; + ; return $treeBuilder; } diff --git a/src/Bundle/ChillPersonBundle/Entity/AccompanyingPeriod.php b/src/Bundle/ChillPersonBundle/Entity/AccompanyingPeriod.php index ae7b927a6..510e1c327 100644 --- a/src/Bundle/ChillPersonBundle/Entity/AccompanyingPeriod.php +++ b/src/Bundle/ChillPersonBundle/Entity/AccompanyingPeriod.php @@ -42,6 +42,7 @@ use DateTimeInterface; use Doctrine\Common\Collections\ArrayCollection; use Doctrine\Common\Collections\Collection; use Doctrine\Common\Collections\Criteria; +use Doctrine\Common\Collections\ReadableCollection; use Doctrine\ORM\Mapping as ORM; use Iterator; use LogicException; @@ -615,9 +616,9 @@ class AccompanyingPeriod implements /** * Get a list of person which have an adresse available for a valid location. * - * @return Collection|Person[] + * @return ReadableCollection<(int|string), Person> */ - public function getAvailablePersonLocation(): Collection + public function getAvailablePersonLocation(): ReadableCollection { return $this->getOpenParticipations() ->filter( @@ -675,8 +676,9 @@ class AccompanyingPeriod implements /** * @Groups({"read"}) + * @return ReadableCollection<(int|string), Comment> */ - public function getComments(): Collection + public function getComments(): ReadableCollection { $pinnedComment = $this->pinnedComment; @@ -700,7 +702,7 @@ class AccompanyingPeriod implements /** * @Groups({"docgen:read"}) */ - public function getCurrentParticipations(): Collection + public function getCurrentParticipations(): ReadableCollection { return $this->getOpenParticipations(); } @@ -834,7 +836,10 @@ class AccompanyingPeriod implements return $collection->count() > 0 ? $collection->first() : null; } - public function getOpenParticipations(): Collection + /** + * @return ReadableCollection<(int|string), AccompanyingPeriodParticipation> + */ + public function getOpenParticipations(): ReadableCollection { return $this ->getParticipations() @@ -860,8 +865,9 @@ class AccompanyingPeriod implements /** * Get the participation containing a person. + * @return ReadableCollection<(int|string), AccompanyingPeriodParticipation> */ - public function getParticipationsContainsPerson(Person $person): Collection + public function getParticipationsContainsPerson(Person $person): ReadableCollection { return $this ->getParticipations() @@ -881,7 +887,7 @@ class AccompanyingPeriod implements /** * Get a list of all persons which are participating to this course. * - * @psalm-return Collection + * @psalm-return Collection<(int|string), Person|null> */ public function getPersons(): Collection { @@ -1155,7 +1161,7 @@ class AccompanyingPeriod implements public function removeWork(AccompanyingPeriodWork $work): self { - $this->work->removeElement($work); + $this->works->removeElement($work); $work->setAccompanyingPeriod(null); return $this; diff --git a/src/Bundle/ChillPersonBundle/Entity/AccompanyingPeriod/AccompanyingPeriodWork.php b/src/Bundle/ChillPersonBundle/Entity/AccompanyingPeriod/AccompanyingPeriodWork.php index adb5ca358..5361012b3 100644 --- a/src/Bundle/ChillPersonBundle/Entity/AccompanyingPeriod/AccompanyingPeriodWork.php +++ b/src/Bundle/ChillPersonBundle/Entity/AccompanyingPeriod/AccompanyingPeriodWork.php @@ -94,8 +94,8 @@ class AccompanyingPeriodWork implements AccompanyingPeriodLinkedWithSocialIssues * @Serializer\Groups({"accompanying_period_work:create"}) * @Serializer\Groups({"accompanying_period_work:edit"}) * @Serializer\Groups({"read", "docgen:read", "read:accompanyingPeriodWork:light"}) - * @Assert\GreaterThan(propertyPath="startDate", - * message="accompanying_course_work.The endDate should be greater than the start date" + * @Assert\GreaterThanOrEqual(propertyPath="startDate", + * message="accompanying_course_work.The endDate should be greater or equal than the start date" * ) */ private ?DateTimeImmutable $endDate = null; diff --git a/src/Bundle/ChillPersonBundle/Entity/AccompanyingPeriod/AccompanyingPeriodWorkEvaluation.php b/src/Bundle/ChillPersonBundle/Entity/AccompanyingPeriod/AccompanyingPeriodWorkEvaluation.php index 078ef0c3c..8780f7d17 100644 --- a/src/Bundle/ChillPersonBundle/Entity/AccompanyingPeriod/AccompanyingPeriodWorkEvaluation.php +++ b/src/Bundle/ChillPersonBundle/Entity/AccompanyingPeriod/AccompanyingPeriodWorkEvaluation.php @@ -160,6 +160,14 @@ class AccompanyingPeriodWorkEvaluation implements TrackCreationInterface, TrackU */ private ?DateInterval $warningInterval = null; + /** + * @ORM\Column(type="integer", nullable=true) + * @Serializer\Groups({"read", "docgen:read"}) + * @Serializer\Groups({"write"}) + * @Serializer\Groups({"accompanying_period_work_evaluation:create"}) + */ + private ?int $timeSpent = null; + public function __construct() { $this->documents = new ArrayCollection(); @@ -265,6 +273,11 @@ class AccompanyingPeriodWorkEvaluation implements TrackCreationInterface, TrackU return $this->warningInterval; } + public function getTimeSpent(): ?int + { + return $this->timeSpent; + } + public function removeDocument(AccompanyingPeriodWorkEvaluationDocument $document): self { $this->documents->removeElement($document); @@ -322,6 +335,13 @@ class AccompanyingPeriodWorkEvaluation implements TrackCreationInterface, TrackU return $this; } + public function setTimeSpent(?int $timeSpent): self + { + $this->timeSpent = $timeSpent; + + return $this; + } + public function setEvaluation(?Evaluation $evaluation): AccompanyingPeriodWorkEvaluation { if ( diff --git a/src/Bundle/ChillPersonBundle/Entity/Household/Household.php b/src/Bundle/ChillPersonBundle/Entity/Household/Household.php index a544bd6a4..b463312c8 100644 --- a/src/Bundle/ChillPersonBundle/Entity/Household/Household.php +++ b/src/Bundle/ChillPersonBundle/Entity/Household/Household.php @@ -22,6 +22,7 @@ use DateTimeInterface; use Doctrine\Common\Collections\ArrayCollection; use Doctrine\Common\Collections\Collection; use Doctrine\Common\Collections\Criteria; +use Doctrine\Common\Collections\ReadableCollection; use Doctrine\ORM\Mapping as ORM; use Symfony\Component\Serializer\Annotation as Serializer; use Symfony\Component\Validator\Constraints as Assert; @@ -265,7 +266,7 @@ class Household * @Serializer\Groups({"read"}) * @Serializer\SerializedName("current_members_id") */ - public function getCurrentMembersIds(?DateTimeImmutable $now = null): Collection + public function getCurrentMembersIds(?DateTimeImmutable $now = null): ReadableCollection { return $this->getCurrentMembers($now)->map( static fn (HouseholdMember $m) => $m->getId() @@ -332,9 +333,9 @@ class Household * * Return a list of Person, instead of a list of HouseholdMembers * - * @return Person[] + * @return ReadableCollection<(int|string), Person> */ - public function getCurrentPersons(?DateTimeImmutable $now = null): Collection + public function getCurrentPersons(?DateTimeImmutable $now = null): ReadableCollection { return $this->getCurrentMembers($now) ->map(static function (HouseholdMember $m) { @@ -358,9 +359,9 @@ class Household /** * get all the members during a given membership. * - * @return Collection|HouseholdMember[] + * @return ReadableCollection<(int|string), HouseholdMember> */ - public function getMembersDuringMembership(HouseholdMember $membership): Collection + public function getMembersDuringMembership(HouseholdMember $membership): ReadableCollection { return $this->getMembersOnRange( $membership->getStartDate(), @@ -384,7 +385,7 @@ class Household return $this->getMembers()->matching($criteria); } - public function getMembersOnRange(DateTimeImmutable $from, ?DateTimeImmutable $to): Collection + public function getMembersOnRange(DateTimeImmutable $from, ?DateTimeImmutable $to): ReadableCollection { return $this->getMembers()->filter(static function (HouseholdMember $m) use ($from, $to) { if (null === $m->getEndDate() && null !== $to) { diff --git a/src/Bundle/ChillPersonBundle/Entity/Person.php b/src/Bundle/ChillPersonBundle/Entity/Person.php index d107ff4bd..27c34ba23 100644 --- a/src/Bundle/ChillPersonBundle/Entity/Person.php +++ b/src/Bundle/ChillPersonBundle/Entity/Person.php @@ -751,7 +751,7 @@ class Person implements HasCenterInterface, TrackCreationInterface, TrackUpdateI foreach ($this->getAccompanyingPeriodParticipations() ->map(fn (AccompanyingPeriodParticipation $app) => $app->getAccompanyingPeriod()) as $period - ) { + ) { if (!$result->contains($period)) { $result->add($period); } diff --git a/src/Bundle/ChillPersonBundle/Export/Export/ListEvaluation.php b/src/Bundle/ChillPersonBundle/Export/Export/ListEvaluation.php index e7d1e5dfd..010618733 100644 --- a/src/Bundle/ChillPersonBundle/Export/Export/ListEvaluation.php +++ b/src/Bundle/ChillPersonBundle/Export/Export/ListEvaluation.php @@ -47,6 +47,7 @@ class ListEvaluation implements ListInterface, GroupedExportInterface 'endDate', 'maxDate', 'warningInterval', + 'timeSpent', 'acpw_id', 'acpw_startDate', 'acpw_endDate', @@ -295,6 +296,9 @@ class ListEvaluation implements ListInterface, GroupedExportInterface $qb->addSelect(sprintf('workeval.%s AS %s', $field, $field)); } + // add the time spent field + $qb->addSelect('(workeval.timeSpent / 60) AS timeSpent'); + // those with identity foreach (['createdBy', 'updatedBy'] as $field) { $qb->addSelect(sprintf('IDENTITY(workeval.%s) AS %s', $field, $field)); diff --git a/src/Bundle/ChillPersonBundle/Export/Filter/AccompanyingCourseFilters/ReferrerFilter.php b/src/Bundle/ChillPersonBundle/Export/Filter/AccompanyingCourseFilters/ReferrerFilter.php index b37d90d84..bb31a6cde 100644 --- a/src/Bundle/ChillPersonBundle/Export/Filter/AccompanyingCourseFilters/ReferrerFilter.php +++ b/src/Bundle/ChillPersonBundle/Export/Filter/AccompanyingCourseFilters/ReferrerFilter.php @@ -31,13 +31,9 @@ class ReferrerFilter implements FilterInterface private RollingDateConverterInterface $rollingDateConverter; - private UserRender $userRender; - public function __construct( - UserRender $userRender, RollingDateConverterInterface $rollingDateConverter ) { - $this->userRender = $userRender; $this->rollingDateConverter = $rollingDateConverter; } diff --git a/src/Bundle/ChillPersonBundle/Export/Filter/AccompanyingCourseFilters/UserJobFilter.php b/src/Bundle/ChillPersonBundle/Export/Filter/AccompanyingCourseFilters/UserJobFilter.php index 744c41735..05d84d7b2 100644 --- a/src/Bundle/ChillPersonBundle/Export/Filter/AccompanyingCourseFilters/UserJobFilter.php +++ b/src/Bundle/ChillPersonBundle/Export/Filter/AccompanyingCourseFilters/UserJobFilter.php @@ -36,19 +36,15 @@ class UserJobFilter implements FilterInterface private RollingDateConverterInterface $rollingDateConverter; - private Security $security; - private TranslatableStringHelper $translatableStringHelper; private UserJobRepositoryInterface $userJobRepository; public function __construct( - Security $security, TranslatableStringHelper $translatableStringHelper, UserJobRepositoryInterface $userJobRepository, RollingDateConverterInterface $rollingDateConverter ) { - $this->security = $security; $this->translatableStringHelper = $translatableStringHelper; $this->userJobRepository = $userJobRepository; $this->rollingDateConverter = $rollingDateConverter; diff --git a/src/Bundle/ChillPersonBundle/Export/Filter/PersonFilters/AddressRefStatusFilter.php b/src/Bundle/ChillPersonBundle/Export/Filter/PersonFilters/AddressRefStatusFilter.php index e11acd692..0fe1973e9 100644 --- a/src/Bundle/ChillPersonBundle/Export/Filter/PersonFilters/AddressRefStatusFilter.php +++ b/src/Bundle/ChillPersonBundle/Export/Filter/PersonFilters/AddressRefStatusFilter.php @@ -26,13 +26,10 @@ class AddressRefStatusFilter implements \Chill\MainBundle\Export\FilterInterface { private RollingDateConverterInterface $rollingDateConverter; - private TranslatableStringHelperInterface $translatableStringHelper; public function __construct( - TranslatableStringHelperInterface $translatableStringHelper, RollingDateConverterInterface $rollingDateConverter ) { - $this->translatableStringHelper = $translatableStringHelper; $this->rollingDateConverter = $rollingDateConverter; } diff --git a/src/Bundle/ChillPersonBundle/Export/Filter/SocialWorkFilters/ReferrerFilter.php b/src/Bundle/ChillPersonBundle/Export/Filter/SocialWorkFilters/ReferrerFilter.php index b7e9ff56e..8d0da32fb 100644 --- a/src/Bundle/ChillPersonBundle/Export/Filter/SocialWorkFilters/ReferrerFilter.php +++ b/src/Bundle/ChillPersonBundle/Export/Filter/SocialWorkFilters/ReferrerFilter.php @@ -22,13 +22,6 @@ use function in_array; class ReferrerFilter implements FilterInterface { - private UserRender $userRender; - - public function __construct(UserRender $userRender) - { - $this->userRender = $userRender; - } - public function addRole(): ?string { return null; diff --git a/src/Bundle/ChillPersonBundle/Export/Filter/SocialWorkFilters/SocialWorkTypeFilter.php b/src/Bundle/ChillPersonBundle/Export/Filter/SocialWorkFilters/SocialWorkTypeFilter.php index efc005be0..853d50744 100644 --- a/src/Bundle/ChillPersonBundle/Export/Filter/SocialWorkFilters/SocialWorkTypeFilter.php +++ b/src/Bundle/ChillPersonBundle/Export/Filter/SocialWorkFilters/SocialWorkTypeFilter.php @@ -19,7 +19,6 @@ use Chill\PersonBundle\Entity\SocialWork\SocialAction; use Chill\PersonBundle\Export\Declarations; use Chill\PersonBundle\Templating\Entity\SocialActionRender; use Doctrine\ORM\EntityManagerInterface; -use Doctrine\ORM\Query\Expr\Andx; use Doctrine\ORM\QueryBuilder; use Symfony\Component\Form\CallbackTransformer; use Symfony\Component\Form\Extension\Core\Type\HiddenType; @@ -52,45 +51,37 @@ class SocialWorkTypeFilter implements FilterInterface public function alterQuery(QueryBuilder $qb, $data) { - $where = $qb->getDQLPart('where'); - if (count($data['actionType']) > 0) { - $clause = $qb->expr()->in('acpw.socialAction', ':actionType'); - - if ($where instanceof Andx) { - $where->add($clause); - } else { - $where = $qb->expr()->andX($clause); - } - - $qb->setParameter('actionType', $data['actionType']); + $qb + ->andWhere($qb->expr()->in('acpw.socialAction', ':actionType')) + ->setParameter('actionType', $data['actionType']); } if (count($data['goal']) > 0) { - if (!in_array('goal', $qb->getAllAliases(), true)) { - $qb->join('acpw.goals', 'goal'); + if (!in_array('acpw_goal', $qb->getAllAliases(), true)) { + $qb->join('acpw.goals', 'acpw_goal'); } - $where->add( - $qb->expr()->in('goal.id', ':goals') - ); + $orX = $qb->expr()->orX(); + foreach ($data['goal'] as $goal) { + /** @var Goal $goal */ + $andX = $qb->expr()->andX(); + $andX->add($qb->expr()->eq('acpw_goal.goal', $goalId = ':goal_'.uniqid())); + $qb->setParameter($goalId, $goal); - $qb->setParameter('goals', $data['goal']); - } - - if (count($data['result']) > 0) { - if (!in_array('result', $qb->getAllAliases(), true)) { - $qb->join('acpw.results', 'result'); + if (count($data['result']) > 0) { + $orXResult = $qb->expr()->orX(); + foreach ($data['result'] as $result) { + /** @var Result $result */ + $orXResult->add($qb->expr()->isMemberOf($resultId = ':result_'.uniqid(), 'acpw_goal.results')); + $qb->setParameter($resultId, $result); + } + $andX->add($orXResult); + } + $orX->add($andX); } - - $where->add( - $qb->expr()->in('result.id', ':results') - ); - - $qb->setParameter('results', $data['result']); + $qb->andWhere($orX); } - - $qb->add('where', $where); } public function applyOn(): string diff --git a/src/Bundle/ChillPersonBundle/Form/AccompanyingPeriodType.php b/src/Bundle/ChillPersonBundle/Form/AccompanyingPeriodType.php index ab40c253c..f6bf4962e 100644 --- a/src/Bundle/ChillPersonBundle/Form/AccompanyingPeriodType.php +++ b/src/Bundle/ChillPersonBundle/Form/AccompanyingPeriodType.php @@ -65,9 +65,9 @@ class AccompanyingPeriodType extends AbstractType $accompanyingPeriod = $options['data']; if ( - ('close' === $options['period_action']) - || ('create' === $options['period_action']) - || ('update' === $options['period_action'] && !$accompanyingPeriod->isOpen()) + ('close' === $options['period_action']) + || ('create' === $options['period_action']) + || ('update' === $options['period_action'] && !$accompanyingPeriod->isOpen()) ) { $builder->add('closingDate', DateType::class, [ 'required' => true, diff --git a/src/Bundle/ChillPersonBundle/Form/Type/PickPersonDynamicType.php b/src/Bundle/ChillPersonBundle/Form/Type/PickPersonDynamicType.php index b0be9dd27..8ed0b7f37 100644 --- a/src/Bundle/ChillPersonBundle/Form/Type/PickPersonDynamicType.php +++ b/src/Bundle/ChillPersonBundle/Form/Type/PickPersonDynamicType.php @@ -18,21 +18,28 @@ use Symfony\Component\Form\FormInterface; use Symfony\Component\Form\FormView; use Symfony\Component\OptionsResolver\OptionsResolver; use Symfony\Component\Serializer\Normalizer\DenormalizerInterface; +use Symfony\Component\Serializer\Normalizer\NormalizerInterface; use Symfony\Component\Serializer\SerializerInterface; /** - * Pick user dymically, using vuejs module "AddPerson". + * m* Pick user dymically, using vuejs module "AddPerson". */ class PickPersonDynamicType extends AbstractType { private DenormalizerInterface $denormalizer; + private NormalizerInterface $normalizer; + private SerializerInterface $serializer; - public function __construct(DenormalizerInterface $denormalizer, SerializerInterface $serializer) - { + public function __construct( + DenormalizerInterface $denormalizer, + SerializerInterface $serializer, + NormalizerInterface $normalizer + ) { $this->denormalizer = $denormalizer; $this->serializer = $serializer; + $this->normalizer = $normalizer; } public function buildForm(FormBuilderInterface $builder, array $options) @@ -45,6 +52,11 @@ class PickPersonDynamicType extends AbstractType $view->vars['multiple'] = $options['multiple']; $view->vars['types'] = ['person']; $view->vars['uniqid'] = uniqid('pick_user_dyn'); + $view->vars['suggested'] = []; + + foreach ($options['suggested'] as $person) { + $view->vars['suggested'][] = $this->normalizer->normalize($person, 'json', ['groups' => 'read']); + } } public function configureOptions(OptionsResolver $resolver) @@ -52,7 +64,8 @@ class PickPersonDynamicType extends AbstractType $resolver ->setDefault('multiple', false) ->setAllowedTypes('multiple', ['bool']) - ->setDefault('compound', false); + ->setDefault('compound', false) + ->setDefault('suggested', []); } public function getBlockPrefix() diff --git a/src/Bundle/ChillPersonBundle/Menu/PersonMenuBuilder.php b/src/Bundle/ChillPersonBundle/Menu/PersonMenuBuilder.php index 8c46b571e..39ac557fb 100644 --- a/src/Bundle/ChillPersonBundle/Menu/PersonMenuBuilder.php +++ b/src/Bundle/ChillPersonBundle/Menu/PersonMenuBuilder.php @@ -28,6 +28,8 @@ use function count; * * - person details ; * - accompanying period (if `visible`) + * + * @implements LocalMenuBuilderInterface */ class PersonMenuBuilder implements LocalMenuBuilderInterface { diff --git a/src/Bundle/ChillPersonBundle/Privacy/PrivacyEvent.php b/src/Bundle/ChillPersonBundle/Privacy/PrivacyEvent.php index 7168a9703..b691c4e89 100644 --- a/src/Bundle/ChillPersonBundle/Privacy/PrivacyEvent.php +++ b/src/Bundle/ChillPersonBundle/Privacy/PrivacyEvent.php @@ -59,7 +59,7 @@ class PrivacyEvent extends Event /** * @var array */ - private $persons; + private $persons = []; /** * PrivacyEvent constructor. @@ -68,7 +68,6 @@ class PrivacyEvent extends Event { $this->person = $person; $this->args = $args; - $this->persons = []; } public function addPerson(Person $person) diff --git a/src/Bundle/ChillPersonBundle/Repository/PersonACLAwareRepository.php b/src/Bundle/ChillPersonBundle/Repository/PersonACLAwareRepository.php index c068760ee..cc9e7b145 100644 --- a/src/Bundle/ChillPersonBundle/Repository/PersonACLAwareRepository.php +++ b/src/Bundle/ChillPersonBundle/Repository/PersonACLAwareRepository.php @@ -75,7 +75,8 @@ final class PersonACLAwareRepository implements PersonACLAwareRepositoryInterfac $birthdateAfter, $gender, $countryCode, - $phonenumber + $phonenumber, + $city ); return $this->addAuthorizations($query); diff --git a/src/Bundle/ChillPersonBundle/Repository/SocialWork/EvaluationRepository.php b/src/Bundle/ChillPersonBundle/Repository/SocialWork/EvaluationRepository.php index 925d4598b..e8de5a278 100644 --- a/src/Bundle/ChillPersonBundle/Repository/SocialWork/EvaluationRepository.php +++ b/src/Bundle/ChillPersonBundle/Repository/SocialWork/EvaluationRepository.php @@ -24,9 +24,9 @@ final class EvaluationRepository implements EvaluationRepositoryInterface $this->repository = $entityManager->getRepository(Evaluation::class); } - public function find($id, ?int $lockMode = null, ?int $lockVersion = null): ?Evaluation + public function find($id): ?Evaluation { - return $this->repository->find($id, $lockMode, $lockVersion); + return $this->repository->find($id); } /** diff --git a/src/Bundle/ChillPersonBundle/Repository/SocialWork/EvaluationRepositoryInterface.php b/src/Bundle/ChillPersonBundle/Repository/SocialWork/EvaluationRepositoryInterface.php index 9ca390ff9..aa1de34eb 100644 --- a/src/Bundle/ChillPersonBundle/Repository/SocialWork/EvaluationRepositoryInterface.php +++ b/src/Bundle/ChillPersonBundle/Repository/SocialWork/EvaluationRepositoryInterface.php @@ -16,7 +16,7 @@ use Doctrine\Persistence\ObjectRepository; interface EvaluationRepositoryInterface extends ObjectRepository { - public function find($id, ?int $lockMode = null, ?int $lockVersion = null): ?Evaluation; + public function find($id): ?Evaluation; /** * @return array diff --git a/src/Bundle/ChillPersonBundle/Repository/SocialWork/GoalRepository.php b/src/Bundle/ChillPersonBundle/Repository/SocialWork/GoalRepository.php index fd24b7b9d..c667eafbf 100644 --- a/src/Bundle/ChillPersonBundle/Repository/SocialWork/GoalRepository.php +++ b/src/Bundle/ChillPersonBundle/Repository/SocialWork/GoalRepository.php @@ -38,9 +38,9 @@ final class GoalRepository implements ObjectRepository ->getSingleScalarResult(); } - public function find($id, ?int $lockMode = null, ?int $lockVersion = null): ?Goal + public function find($id): ?Goal { - return $this->repository->find($id, $lockMode, $lockVersion); + return $this->repository->find($id); } /** @@ -111,9 +111,9 @@ final class GoalRepository implements ObjectRepository $orx = $qb->expr()->orX(); $i = 0; - foreach ($actions as $action) { + foreach ($actions as $act) { $orx->add(":action_{$i} MEMBER OF g.socialActions"); - $qb->setParameter("action_{$i}", $action); + $qb->setParameter("action_{$i}", $act); } $qb->where($orx); diff --git a/src/Bundle/ChillPersonBundle/Repository/SocialWork/ResultRepository.php b/src/Bundle/ChillPersonBundle/Repository/SocialWork/ResultRepository.php index e751f88cb..747611500 100644 --- a/src/Bundle/ChillPersonBundle/Repository/SocialWork/ResultRepository.php +++ b/src/Bundle/ChillPersonBundle/Repository/SocialWork/ResultRepository.php @@ -48,9 +48,9 @@ final class ResultRepository implements ObjectRepository ->getSingleScalarResult(); } - public function find($id, ?int $lockMode = null, ?int $lockVersion = null): ?Result + public function find($id): ?Result { - return $this->repository->find($id, $lockMode, $lockVersion); + return $this->repository->find($id); } /** @@ -146,9 +146,9 @@ final class ResultRepository implements ObjectRepository $orx = $qb->expr()->orX(); $i = 0; - foreach ($actions as $action) { + foreach ($actions as $act) { $orx->add(":action_{$i} MEMBER OF r.socialActions"); - $qb->setParameter("action_{$i}", $action); + $qb->setParameter("action_{$i}", $act); } $qb->where($orx); diff --git a/src/Bundle/ChillPersonBundle/Repository/SocialWork/SocialActionRepository.php b/src/Bundle/ChillPersonBundle/Repository/SocialWork/SocialActionRepository.php index 370704aed..62ca3d853 100644 --- a/src/Bundle/ChillPersonBundle/Repository/SocialWork/SocialActionRepository.php +++ b/src/Bundle/ChillPersonBundle/Repository/SocialWork/SocialActionRepository.php @@ -32,9 +32,9 @@ final class SocialActionRepository implements ObjectRepository return $this->repository->createQueryBuilder($alias, $indexBy); } - public function find($id, ?int $lockMode = null, ?int $lockVersion = null): ?SocialAction + public function find($id): ?SocialAction { - return $this->repository->find($id, $lockMode, $lockVersion); + return $this->repository->find($id); } /** diff --git a/src/Bundle/ChillPersonBundle/Repository/SocialWork/SocialIssueRepository.php b/src/Bundle/ChillPersonBundle/Repository/SocialWork/SocialIssueRepository.php index 8dd8f6a62..63dfcc510 100644 --- a/src/Bundle/ChillPersonBundle/Repository/SocialWork/SocialIssueRepository.php +++ b/src/Bundle/ChillPersonBundle/Repository/SocialWork/SocialIssueRepository.php @@ -27,9 +27,9 @@ final class SocialIssueRepository implements ObjectRepository $this->repository = $entityManager->getRepository(SocialIssue::class); } - public function find($id, ?int $lockMode = null, ?int $lockVersion = null): ?SocialIssue + public function find($id): ?SocialIssue { - return $this->repository->find($id, $lockMode, $lockVersion); + return $this->repository->find($id); } /** diff --git a/src/Bundle/ChillPersonBundle/Resources/public/vuejs/AccompanyingCourseWorkCreate/index.js b/src/Bundle/ChillPersonBundle/Resources/public/vuejs/AccompanyingCourseWorkCreate/index.js index 7e54e2b0b..1f8a25d3a 100644 --- a/src/Bundle/ChillPersonBundle/Resources/public/vuejs/AccompanyingCourseWorkCreate/index.js +++ b/src/Bundle/ChillPersonBundle/Resources/public/vuejs/AccompanyingCourseWorkCreate/index.js @@ -1,15 +1,22 @@ -import { createApp } from 'vue'; -import { _createI18n } from 'ChillMainAssets/vuejs/_js/i18n'; -import { store } from './store'; -import { personMessages } from 'ChillPersonAssets/vuejs/_js/i18n' +import {createApp} from 'vue'; +import {_createI18n} from 'ChillMainAssets/vuejs/_js/i18n'; +import {store} from './store'; +import {personMessages} from 'ChillPersonAssets/vuejs/_js/i18n' import App from './App.vue'; +import VueToast from "vue-toast-notification"; const i18n = _createI18n(personMessages); const app = createApp({ - template: ``, + template: ``, }) -.use(store) -.use(i18n) -.component('app', App) -.mount('#accompanying_course_work_create'); + .use(store) + .use(i18n) + .use(VueToast, { + position: "bottom-right", + type: "error", + duration: 10000, + dismissible: true, + }) + .component('app', App) + .mount('#accompanying_course_work_create'); diff --git a/src/Bundle/ChillPersonBundle/Resources/public/vuejs/AccompanyingCourseWorkCreate/store.js b/src/Bundle/ChillPersonBundle/Resources/public/vuejs/AccompanyingCourseWorkCreate/store.js index 3eee7c56a..138e6f6ed 100644 --- a/src/Bundle/ChillPersonBundle/Resources/public/vuejs/AccompanyingCourseWorkCreate/store.js +++ b/src/Bundle/ChillPersonBundle/Resources/public/vuejs/AccompanyingCourseWorkCreate/store.js @@ -107,6 +107,9 @@ const store = createStore({ setPostingWork(state) { state.isPostingWork = true; }, + setPostingWorkDone(state) { + state.isPostingWork = false; + }, setStartDate(state, date) { state.startDate = date; }, @@ -150,11 +153,12 @@ const store = createStore({ const url = `/api/1.0/person/accompanying-course/${state.accompanyingCourse.id}/work.json`; commit('setPostingWork'); - makeFetch('POST', url, payload) + return makeFetch('POST', url, payload) .then((response) => { window.location.assign(`/fr/person/accompanying-period/work/${response.id}/edit`) }) .catch((error) => { + commit('setPostingWorkDone'); throw error; }); }, diff --git a/src/Bundle/ChillPersonBundle/Resources/public/vuejs/AccompanyingCourseWorkEdit/App.vue b/src/Bundle/ChillPersonBundle/Resources/public/vuejs/AccompanyingCourseWorkEdit/App.vue index 9a105dd8d..755e4455c 100644 --- a/src/Bundle/ChillPersonBundle/Resources/public/vuejs/AccompanyingCourseWorkEdit/App.vue +++ b/src/Bundle/ChillPersonBundle/Resources/public/vuejs/AccompanyingCourseWorkEdit/App.vue @@ -549,7 +549,14 @@ export default { .catch(e => { console.log(e); throw e; }); }, submit() { - this.$store.dispatch('submit'); + this.$store.dispatch('submit').catch((error) => { + if (error.name === 'ValidationException' || error.name === 'AccessException') { + error.violations.forEach((violation) => this.$toast.open({message: violation})); + } else { + this.$toast.open({message: 'An error occurred'}); + throw error; + } + }); }, saveFormOnTheFly(payload) { console.log('saveFormOnTheFly: type', payload.type, ', data', payload.data); diff --git a/src/Bundle/ChillPersonBundle/Resources/public/vuejs/AccompanyingCourseWorkEdit/components/FormEvaluation.vue b/src/Bundle/ChillPersonBundle/Resources/public/vuejs/AccompanyingCourseWorkEdit/components/FormEvaluation.vue index d6e42f743..7dcb595a3 100644 --- a/src/Bundle/ChillPersonBundle/Resources/public/vuejs/AccompanyingCourseWorkEdit/components/FormEvaluation.vue +++ b/src/Bundle/ChillPersonBundle/Resources/public/vuejs/AccompanyingCourseWorkEdit/components/FormEvaluation.vue @@ -49,6 +49,20 @@ +
+ +
+ +
+
+
@@ -191,6 +205,8 @@ const i18n = { evaluation_choose_a_template: "Choisir un modèle", evaluation_add_a_document: "Ajouter un document", evaluation_add: "Ajouter une évaluation", + evaluation_time_spent: "Temps de rédaction", + select_time_spent: "Indiquez le temps de rédaction", Documents: "Documents", document_add: "Générer ou téléverser un document", document_upload: "Téléverser un document", @@ -224,6 +240,22 @@ export default { maxPostSize: 15000000, required: false, }, + timeSpentChoices: [ + { text: '1 minute', value: 60 }, { text: '2 minutes', value: 120 }, + { text: '3 minutes', value: 180 }, { text: '4 minutes', value: 240 }, + { text: '5 minutes', value: 300 }, { text: '10 minutes', value: 600 }, + { text: '15 minutes', value: 900 },{ text: '20 minutes', value: 1200 }, + { text: '25 minutes', value: 1500 }, { text: '30 minutes', value: 1800 }, + { text: '45 minutes', value: 2700 },{ text: '1 hour', value: 3600 }, + { text: '1 hour 15 minutes', value: 4500 }, { text: '1 hour 30 minutes', value: 5400 }, + { text: '1 hour 45 minutes', value: 6300 }, { text: '2 hours', value: 7200 }, + { text: '2 hours 30 minutes', value: 9000 }, { text: '3 hours', value: 10800 }, + { text: '3 hours 30 minutes', value: 12600 },{ text: '4 hours', value: 14400 }, + { text: '4 hours 30 minutes', value: 16200 },{ text: '5 hours', value: 18000 }, + { text: '5 hours 30 minutes', value: 19800 },{ text: '6 hours', value: 21600 }, + { text: '6 hours 30 minutes', value: 23400 },{ text: '7 hours', value: 25200 }, + { text: '7 hours 30 minutes', value: 27000 },{ text: '8 hours', value: 28800 }, + ] } }, computed: { @@ -265,6 +297,10 @@ export default { get() { return this.evaluation.warningInterval; }, set(v) { this.$store.commit('setEvaluationWarningInterval', { key: this.evaluation.key, days: v }); } }, + timeSpent: { + get() { return this.evaluation.timeSpent }, + set(v) { this.$store.commit('setEvaluationTimeSpent', { key: this.evaluation.key, time: v}) } + }, comment: { get() { return this.evaluation.comment; }, set(v) { this.$store.commit('setEvaluationComment', { key: this.evaluation.key, comment: v }); } diff --git a/src/Bundle/ChillPersonBundle/Resources/public/vuejs/AccompanyingCourseWorkEdit/index.js b/src/Bundle/ChillPersonBundle/Resources/public/vuejs/AccompanyingCourseWorkEdit/index.js index 143d34215..b0868b48b 100644 --- a/src/Bundle/ChillPersonBundle/Resources/public/vuejs/AccompanyingCourseWorkEdit/index.js +++ b/src/Bundle/ChillPersonBundle/Resources/public/vuejs/AccompanyingCourseWorkEdit/index.js @@ -15,7 +15,7 @@ const app = createApp({ .use(VueToast, { position: "bottom-right", type: "error", - duration: 5000, + duration: 10000, dismissible: true }) .use(i18n) diff --git a/src/Bundle/ChillPersonBundle/Resources/public/vuejs/AccompanyingCourseWorkEdit/store.js b/src/Bundle/ChillPersonBundle/Resources/public/vuejs/AccompanyingCourseWorkEdit/store.js index d9f317b4c..47e4b2d3f 100644 --- a/src/Bundle/ChillPersonBundle/Resources/public/vuejs/AccompanyingCourseWorkEdit/store.js +++ b/src/Bundle/ChillPersonBundle/Resources/public/vuejs/AccompanyingCourseWorkEdit/store.js @@ -116,6 +116,7 @@ const store = createStore({ endDate: e.endDate === null || e.endDate === '' ? null : { datetime: datetimeToISO(ISOToDate(e.endDate)) }, maxDate: e.maxDate === null || e.maxDate === '' ? null : { datetime: datetimeToISO(ISOToDate(e.maxDate)) }, warningInterval: intervalDaysToISO(e.warningInterval), + timeSpent: e.timeSpent, comment: e.comment, documents: e.documents }; @@ -138,6 +139,7 @@ const store = createStore({ endDate: e.endDate !== null ? dateToISO(new Date(e.endDate.datetime)) : null, maxDate: e.maxDate !== null ? dateToISO(new Date(e.maxDate.datetime)) : null, warningInterval: e.warningInterval !== null ? intervalISOToDays(e.warningInterval) : null, + timeSpent: e.timeSpent !== null ? e.timeSpent : null, documents: e.documents.map((d, docIndex) => { return Object.assign(d, { key: docIndex @@ -258,6 +260,7 @@ const store = createStore({ endDate: null, maxDate: null, warningInterval: null, + timeSpent: null, comment: "", editEvaluation: true, workflows_availables: state.work.workflows_availables_evaluation, @@ -286,6 +289,10 @@ const store = createStore({ state.evaluationsPicked.find(e => e.key === key) .warningInterval = days; }, + setEvaluationTimeSpent(state, {key, time}) { + state.evaluationsPicked.find(e => e.key === key) + .timeSpent = time; + }, setEvaluationComment(state, {key, comment}) { state.evaluationsPicked.find(e => e.key === key) .comment = comment; @@ -482,7 +489,7 @@ const store = createStore({ ; commit('setIsPosting', true); - console.log('payload', payload); + console.log('the social action', payload); return makeFetch('PUT', url, payload) .then(data => { @@ -493,9 +500,8 @@ const store = createStore({ window.location.assign(`/fr/person/accompanying-period/${state.work.accompanyingPeriod.id}/work`); } }).catch(error => { - console.log('error on submit', error); commit('setIsPosting', false); - commit('setErrors', error.violations); + throw error; }); }, updateDocumentTitle({commit}, payload) { diff --git a/src/Bundle/ChillPersonBundle/Resources/views/AccompanyingCourseWork/_objectifs_results_evaluations.html.twig b/src/Bundle/ChillPersonBundle/Resources/views/AccompanyingCourseWork/_objectifs_results_evaluations.html.twig index 0dd0cc84a..f4198a5c7 100644 --- a/src/Bundle/ChillPersonBundle/Resources/views/AccompanyingCourseWork/_objectifs_results_evaluations.html.twig +++ b/src/Bundle/ChillPersonBundle/Resources/views/AccompanyingCourseWork/_objectifs_results_evaluations.html.twig @@ -118,6 +118,18 @@ {% endif %} {% endif %} + + {% if e.timeSpent is not null and e.timeSpent > 0 %} +
  • + {% set minutes = (e.timeSpent / 60) %} + {{ 'accompanying_course_work.timeSpent'|trans ~ ' : ' }} {{ 'duration.minute'|trans({ '{m}' : minutes }) }} +
  • + {% elseif displayContent is defined and displayContent == 'long' %} +
  • + {{ 'accompanying_course_work.timeSpent'|trans ~ ' : ' }} + {{ 'Not given'|trans }} +
  • + {% endif %} @@ -143,7 +155,7 @@ {% else %} {{ 'No document found'|trans }} {% endif %} - + {% endif %} diff --git a/src/Bundle/ChillPersonBundle/Resources/views/PersonDuplicate/_sidepane.html.twig b/src/Bundle/ChillPersonBundle/Resources/views/PersonDuplicate/_sidepane.html.twig index f7fef7f93..660fff7a6 100644 --- a/src/Bundle/ChillPersonBundle/Resources/views/PersonDuplicate/_sidepane.html.twig +++ b/src/Bundle/ChillPersonBundle/Resources/views/PersonDuplicate/_sidepane.html.twig @@ -36,7 +36,7 @@ {%- macro links(person, options) -%}
      -
    • {{ person.counters.nb_activity }} {{ (person.counters.nb_activity > 1)? 'activités' : 'activité' }}
    • +
    • {{ person.counters.nb_activity }} {{ (person.counters.nb_activity > 1)? 'échanges' : 'échange' }}
    • {{ person.counters.nb_task }} {{ (person.counters.nb_task > 1)? 'tâches' : 'tâche' }}
    • {{ person.counters.nb_document }} {{ (person.counters.nb_document > 1)? 'documents' : 'document' }}
    • {{ person.counters.nb_event }} {{ (person.counters.nb_event > 1)? 'événements' : 'événement' }}
    • diff --git a/src/Bundle/ChillPersonBundle/Search/PersonSearch.php b/src/Bundle/ChillPersonBundle/Search/PersonSearch.php index 83b2cff69..7cd1849a3 100644 --- a/src/Bundle/ChillPersonBundle/Search/PersonSearch.php +++ b/src/Bundle/ChillPersonBundle/Search/PersonSearch.php @@ -26,6 +26,7 @@ use Chill\PersonBundle\Repository\PersonACLAwareRepositoryInterface; use DateTime; use Exception; use libphonenumber\PhoneNumber; +use libphonenumber\PhoneNumberUtil; use Symfony\Component\Form\Extension\Core\Type\TextType; use Symfony\Component\Form\FormBuilderInterface; use Symfony\Component\Templating\EngineInterface; @@ -115,23 +116,23 @@ class PersonSearch extends AbstractSearch implements HasAdvancedSearchFormInterf { $string = '@person '; - $string .= $data['_default'] ? '' : $data['_default'] . ' '; + $string .= !isset($data['_default']) ? '' : $data['_default'] . ' '; foreach (['firstname', 'lastname', 'gender', 'city'] as $key) { - $string .= $data[$key] ? '' : $key . ':' . + $string .= !isset($data[$key]) ? '' : $key . ':' . // add quote if contains spaces (strpos($data[$key], ' ') !== false ? '"' . $data[$key] . '"' : $data[$key]) . ' '; } foreach (['birthdate', 'birthdate-before', 'birthdate-after'] as $key) { - $string .= $data[$key] ? + $string .= !isset($data[$key]) ? '' : $key . ':' . $data[$key]->format('Y-m-d') . ' '; } - $string .= $data['phonenumber'] ? '' : 'phonenumber:' . $data['phonenumber']->getNationalNumber(); + $string .= !isset($data['phonenumber']) ? '' : 'phonenumber:' . $data['phonenumber']->getNationalNumber(); return $string; } @@ -162,12 +163,12 @@ class PersonSearch extends AbstractSearch implements HasAdvancedSearchFormInterf $phonenumber = new PhoneNumber(); $phonenumber->setNationalNumber($terms['phonenumber']); } catch (Exception $ex) { - throw new ParsingException('The date for phonenumber is ' + throw new ParsingException("The data for phonenumber is " . 'not parsable', 0, $ex); } - } - $data['phonenumber'] = $phonenumber ?? null; + $data['phonenumber'] = $phonenumber; + } return $data; } @@ -202,15 +203,6 @@ class PersonSearch extends AbstractSearch implements HasAdvancedSearchFormInterf return true; } - /** - * (non-PHPdoc). - * - * @see \Chill\MainBundle\Search\SearchInterface::renderResult() - * - * @param mixed $start - * @param mixed $limit - * @param mixed $format - */ public function renderResult(array $terms, $start = 0, $limit = 50, array $options = [], $format = 'html') { $terms = $this->findAdditionnalInDefault($terms); @@ -235,15 +227,13 @@ class PersonSearch extends AbstractSearch implements HasAdvancedSearchFormInterf ] ); } - - if ('json' === $format) { - return [ - 'results' => $this->search($terms, $start, $limit, array_merge($options, ['simplify' => true])), - 'pagination' => [ - 'more' => $paginator->hasNextPage(), - ], - ]; - } + // format is "json" + return [ + 'results' => $this->search($terms, $start, $limit, array_merge($options, ['simplify' => true])), + 'pagination' => [ + 'more' => $paginator->hasNextPage(), + ], + ]; } public function supports($domain, $format) @@ -266,14 +256,30 @@ class PersonSearch extends AbstractSearch implements HasAdvancedSearchFormInterf 'city' => $city, ] = $terms + array_fill_keys(self::POSSIBLE_KEYS, null); - foreach (['birthdateBefore', 'birthdateAfter', 'birthdate'] as $v) { - if (null !== ${$v}) { - try { - ${$v} = new DateTime(${$v}); - } catch (Exception $e) { - throw new ParsingException('The date is ' - . 'not parsable', 0, $e); - } + if (null !== $birthdate) { + try { + $birthdate = new DateTime($birthdate); + } catch (Exception $e) { + throw new ParsingException('The date is ' + . 'not parsable', 0, $e); + } + } + + if (null !== $birthdateBefore) { + try { + $birthdateBefore = new DateTime($birthdateBefore); + } catch (Exception $e) { + throw new ParsingException('The date is ' + . 'not parsable', 0, $e); + } + } + + if (null !== $birthdateAfter) { + try { + $birthdateAfter = new DateTime($birthdateAfter); + } catch (Exception $e) { + throw new ParsingException('The date is ' + . 'not parsable', 0, $e); } } @@ -310,14 +316,30 @@ class PersonSearch extends AbstractSearch implements HasAdvancedSearchFormInterf 'city' => $city, ] = $terms + array_fill_keys(self::POSSIBLE_KEYS, null); - foreach (['birthdateBefore', 'birthdateAfter', 'birthdate'] as $v) { - if (null !== ${$v}) { - try { - ${$v} = new DateTime(${$v}); - } catch (Exception $e) { - throw new ParsingException('The date is ' - . 'not parsable', 0, $e); - } + if (null !== $birthdate) { + try { + $birthdate = new DateTime($birthdate); + } catch (Exception $e) { + throw new ParsingException('The date is ' + . 'not parsable', 0, $e); + } + } + + if (null !== $birthdateBefore) { + try { + $birthdateBefore = new DateTime($birthdateBefore); + } catch (Exception $e) { + throw new ParsingException('The date is ' + . 'not parsable', 0, $e); + } + } + + if (null !== $birthdateAfter) { + try { + $birthdateAfter = new DateTime($birthdateAfter); + } catch (Exception $e) { + throw new ParsingException('The date is ' + . 'not parsable', 0, $e); } } diff --git a/src/Bundle/ChillPersonBundle/Search/SearchHouseholdApiProvider.php b/src/Bundle/ChillPersonBundle/Search/SearchHouseholdApiProvider.php index 02d944d15..819554252 100644 --- a/src/Bundle/ChillPersonBundle/Search/SearchHouseholdApiProvider.php +++ b/src/Bundle/ChillPersonBundle/Search/SearchHouseholdApiProvider.php @@ -84,15 +84,19 @@ class SearchHouseholdApiProvider implements SearchApiInterface count($phoneResult->getFound()) > 0 ? $phoneResult->getFound()[0] : null ); + $previousFrom = $query->getFromClause(); + $previousParams = $query->getFromParams(); + $query - ->setDistinct(true, 'household_id') + ->setDistinct(true, 'cpphm.household_id') ->setFromClause( - 'view_chill_person_household_address AS vcpha ' . - 'JOIN chill_person_person AS person ON vcpha.person_id = person.id' + $previousFrom . ' '. + 'JOIN chill_person_household_members AS cpphm ON cpphm.person_id = person.id', + $previousParams ) + ->andWhereClause('(cpphm.startDate <= NOW() AND (cpphm.endDate IS NULL or cpphm.endDate > NOW()))') ->setSelectKey('household') - ->andWhereClause('vcpha.validTo IS NULL', []) - ->setSelectJsonbMetadata("jsonb_build_object('id', vcpha.household_id)"); + ->setSelectJsonbMetadata("jsonb_build_object('id', cpphm.household_id)"); return $query; } diff --git a/src/Bundle/ChillPersonBundle/Search/SimilarPersonMatcher.php b/src/Bundle/ChillPersonBundle/Search/SimilarPersonMatcher.php index 7684ac3c3..c77c0758e 100644 --- a/src/Bundle/ChillPersonBundle/Search/SimilarPersonMatcher.php +++ b/src/Bundle/ChillPersonBundle/Search/SimilarPersonMatcher.php @@ -80,7 +80,7 @@ class SimilarPersonMatcher ->where('SIMILARITY(p.fullnameCanonical, UNACCENT(LOWER(:fullName))) >= :precision') ->andWhere($qb->expr()->in('center_history.center', ':centers')) ->andWhere($qb->expr()->andX( - $qb->expr()->lte('center_history.startDate', 'CURRENT_DATE()'), + $qb->expr()->lte('center_history.startDate', 'CURRENT_DATE()'), $qb->expr()->orX( $qb->expr()->isNull('center_history.endDate'), $qb->expr()->gt('center_history.endDate', 'CURRENT_DATE()') diff --git a/src/Bundle/ChillPersonBundle/Security/Authorization/AccompanyingPeriodWorkEvaluationVoter.php b/src/Bundle/ChillPersonBundle/Security/Authorization/AccompanyingPeriodWorkEvaluationVoter.php index 3861d5dd6..cfa867266 100644 --- a/src/Bundle/ChillPersonBundle/Security/Authorization/AccompanyingPeriodWorkEvaluationVoter.php +++ b/src/Bundle/ChillPersonBundle/Security/Authorization/AccompanyingPeriodWorkEvaluationVoter.php @@ -51,7 +51,7 @@ class AccompanyingPeriodWorkEvaluationVoter extends Voter implements ChillVoterI { switch ($attribute) { case self::STATS: - return $this->security->isGranted(AccompanyingPeriodWorkVoter::STATS, $subject); + return $this->security->isGranted(AccompanyingPeriodVoter::STATS, $subject); case self::SEE: return $this->security->isGranted(AccompanyingPeriodWorkVoter::SEE, $subject->getAccompanyingPeriodWork()); diff --git a/src/Bundle/ChillPersonBundle/Security/AuthorizedCenterOnPersonCreation.php b/src/Bundle/ChillPersonBundle/Security/AuthorizedCenterOnPersonCreation.php index 6f8800d65..1244f921f 100644 --- a/src/Bundle/ChillPersonBundle/Security/AuthorizedCenterOnPersonCreation.php +++ b/src/Bundle/ChillPersonBundle/Security/AuthorizedCenterOnPersonCreation.php @@ -24,12 +24,12 @@ class AuthorizedCenterOnPersonCreation implements AuthorizedCenterOnPersonCreati public function __construct(AuthorizationHelperForCurrentUserInterface $authorizationHelperForCurrentUser, ParameterBagInterface $parameterBag) { $this->authorizationHelperForCurrentUser = $authorizationHelperForCurrentUser; - $this->showCenter = $parameterBag->get('chill_main')['acl']['form_show_centers']; + $this->showCenters = $parameterBag->get('chill_main')['acl']['form_show_centers']; } public function getCenters(): array { - if (!$this->showCenter) { + if (!$this->showCenters) { return []; } diff --git a/src/Bundle/ChillPersonBundle/Serializer/Normalizer/MembersEditorNormalizer.php b/src/Bundle/ChillPersonBundle/Serializer/Normalizer/MembersEditorNormalizer.php index 08286f1bd..740ea808c 100644 --- a/src/Bundle/ChillPersonBundle/Serializer/Normalizer/MembersEditorNormalizer.php +++ b/src/Bundle/ChillPersonBundle/Serializer/Normalizer/MembersEditorNormalizer.php @@ -181,7 +181,7 @@ class MembersEditorNormalizer implements DenormalizerAwareInterface, Denormalize { if ( null === $data['concerned'] ?? null - && false === ·\is_array('concerned') + && false === \is_array('concerned') ) { throw new Exception\UnexpectedValueException("The schema does not have any key 'concerned'"); } diff --git a/src/Bundle/ChillPersonBundle/Service/DocGenerator/AccompanyingPeriodContext.php b/src/Bundle/ChillPersonBundle/Service/DocGenerator/AccompanyingPeriodContext.php index bbfb67b43..4a08eff08 100644 --- a/src/Bundle/ChillPersonBundle/Service/DocGenerator/AccompanyingPeriodContext.php +++ b/src/Bundle/ChillPersonBundle/Service/DocGenerator/AccompanyingPeriodContext.php @@ -27,6 +27,7 @@ use Chill\PersonBundle\Entity\Person; use Chill\PersonBundle\Repository\PersonRepository; use Chill\PersonBundle\Templating\Entity\PersonRenderInterface; use DateTime; +use Doctrine\Common\Collections\ArrayCollection; use Doctrine\ORM\EntityManagerInterface; use Doctrine\ORM\EntityRepository; use Symfony\Bridge\Doctrine\Form\Type\EntityType; @@ -38,6 +39,9 @@ use Symfony\Contracts\Translation\TranslatorInterface; use function array_key_exists; +/** + * @template-implements DocGeneratorContextWithPublicFormInterface + */ class AccompanyingPeriodContext implements DocGeneratorContextWithAdminFormInterface, DocGeneratorContextWithPublicFormInterface @@ -153,12 +157,12 @@ class AccompanyingPeriodContext implements /** * @param AccompanyingPeriod $entity */ - public function buildPublicForm(FormBuilderInterface $builder, DocGeneratorTemplate $template, $entity): void + public function buildPublicForm(FormBuilderInterface $builder, DocGeneratorTemplate $template, mixed $entity): void { $options = $template->getOptions(); - $persons = $entity->getCurrentParticipations()->map(static function (AccompanyingPeriodParticipation $p) { + $persons = new ArrayCollection($entity->getCurrentParticipations()->map(static function (AccompanyingPeriodParticipation $p) { return $p->getPerson(); - }); + })->toArray()); foreach ($entity->getCurrentParticipations() as $p) { foreach ($p->getPerson()->getResources() as $r) { @@ -286,9 +290,6 @@ class AccompanyingPeriodContext implements return $denormalized; } - /** - * @param AccompanyingPeriod $entity - */ public function storeGenerated(DocGeneratorTemplate $template, StoredObject $storedObject, object $entity, array $contextGenerationData): void { $doc = new AccompanyingCourseDocument(); diff --git a/src/Bundle/ChillPersonBundle/Service/DocGenerator/AccompanyingPeriodWorkContext.php b/src/Bundle/ChillPersonBundle/Service/DocGenerator/AccompanyingPeriodWorkContext.php index 59f5fdb0c..ad1952596 100644 --- a/src/Bundle/ChillPersonBundle/Service/DocGenerator/AccompanyingPeriodWorkContext.php +++ b/src/Bundle/ChillPersonBundle/Service/DocGenerator/AccompanyingPeriodWorkContext.php @@ -24,6 +24,8 @@ use Symfony\Component\Serializer\Normalizer\NormalizerInterface; * * Although there isn't any document associated to AccompanyingPeriodWork, this context * is use by @link{AccompanyingPeriodWorkEvaluationContext}. + * + * @implements DocGeneratorContextWithPublicFormInterface */ class AccompanyingPeriodWorkContext implements DocGeneratorContextWithPublicFormInterface { @@ -56,17 +58,11 @@ class AccompanyingPeriodWorkContext implements DocGeneratorContextWithPublicForm $builder->remove('category'); } - /** - * @param AccompanyingPeriodWork $entity - */ public function buildPublicForm(FormBuilderInterface $builder, DocGeneratorTemplate $template, $entity): void { $this->periodContext->buildPublicForm($builder, $template, $entity->getAccompanyingPeriod()); } - /** - * @param AccompanyingPeriodWork $entity - */ public function getData(DocGeneratorTemplate $template, $entity, array $contextGenerationData = []): array { $data = $this->periodContext->getData($template, $entity->getAccompanyingPeriod(), $contextGenerationData); @@ -88,9 +84,6 @@ class AccompanyingPeriodWorkContext implements DocGeneratorContextWithPublicForm return AccompanyingPeriodWork::class; } - /** - * @param AccompanyingPeriodWork $entity - */ public function getFormData(DocGeneratorTemplate $template, $entity): array { return $this->periodContext->getFormData($template, $entity->getAccompanyingPeriod()); @@ -113,17 +106,17 @@ class AccompanyingPeriodWorkContext implements DocGeneratorContextWithPublicForm public function hasPublicForm(DocGeneratorTemplate $template, $entity): bool { - return $this->periodContext->hasPublicForm($template, $entity); + return $this->periodContext->hasPublicForm($template, $entity->getAccompanyingPeriod()); } public function contextGenerationDataNormalize(DocGeneratorTemplate $template, $entity, array $data): array { - return $this->periodContext->contextGenerationDataNormalize($template, $entity, $data); + return $this->periodContext->contextGenerationDataNormalize($template, $entity->getAccompanyingPeriod(), $data); } public function contextGenerationDataDenormalize(DocGeneratorTemplate $template, $entity, array $data): array { - return $this->periodContext->contextGenerationDataDenormalize($template, $entity, $data); + return $this->periodContext->contextGenerationDataDenormalize($template, $entity->getAccompanyingPeriod(), $data); } public function storeGenerated(DocGeneratorTemplate $template, StoredObject $storedObject, object $entity, array $contextGenerationData): void diff --git a/src/Bundle/ChillPersonBundle/Service/DocGenerator/AccompanyingPeriodWorkEvaluationContext.php b/src/Bundle/ChillPersonBundle/Service/DocGenerator/AccompanyingPeriodWorkEvaluationContext.php index 978aac066..4718b7b00 100644 --- a/src/Bundle/ChillPersonBundle/Service/DocGenerator/AccompanyingPeriodWorkEvaluationContext.php +++ b/src/Bundle/ChillPersonBundle/Service/DocGenerator/AccompanyingPeriodWorkEvaluationContext.php @@ -26,6 +26,9 @@ use Symfony\Component\Form\FormBuilderInterface; use Symfony\Component\Serializer\Normalizer\AbstractNormalizer; use Symfony\Component\Serializer\Normalizer\NormalizerInterface; +/** + * @implements DocGeneratorContextWithPublicFormInterface + */ class AccompanyingPeriodWorkEvaluationContext implements DocGeneratorContextWithAdminFormInterface, DocGeneratorContextWithPublicFormInterface @@ -102,17 +105,11 @@ class AccompanyingPeriodWorkEvaluationContext implements ]); } - /** - * @param AccompanyingPeriodWorkEvaluation $entity - */ public function buildPublicForm(FormBuilderInterface $builder, DocGeneratorTemplate $template, $entity): void { $this->accompanyingPeriodWorkContext->buildPublicForm($builder, $template, $entity->getAccompanyingPeriodWork()); } - /** - * @param AccompanyingPeriodWorkEvaluation $entity - */ public function getData(DocGeneratorTemplate $template, $entity, array $contextGenerationData = []): array { $data = $this->accompanyingPeriodWorkContext @@ -139,9 +136,6 @@ class AccompanyingPeriodWorkEvaluationContext implements return AccompanyingPeriodWorkEvaluation::class; } - /** - * @param AccompanyingPeriodWorkEvaluation $entity - */ public function getFormData(DocGeneratorTemplate $template, $entity): array { return $this->accompanyingPeriodWorkContext->getFormData( @@ -177,13 +171,13 @@ class AccompanyingPeriodWorkEvaluationContext implements public function contextGenerationDataNormalize(DocGeneratorTemplate $template, $entity, array $data): array { return $this->accompanyingPeriodWorkContext - ->contextGenerationDataNormalize($template, $entity, $data); + ->contextGenerationDataNormalize($template, $entity->getAccompanyingPeriodWork(), $data); } public function contextGenerationDataDenormalize(DocGeneratorTemplate $template, $entity, array $data): array { return $this->accompanyingPeriodWorkContext - ->contextGenerationDataDenormalize($template, $entity, $data); + ->contextGenerationDataDenormalize($template, $entity->getAccompanyingPeriodWork(), $data); } public function storeGenerated(DocGeneratorTemplate $template, StoredObject $storedObject, object $entity, array $contextGenerationData): void diff --git a/src/Bundle/ChillPersonBundle/Service/DocGenerator/PersonContext.php b/src/Bundle/ChillPersonBundle/Service/DocGenerator/PersonContext.php index ff3c4ef49..c7c7d2352 100644 --- a/src/Bundle/ChillPersonBundle/Service/DocGenerator/PersonContext.php +++ b/src/Bundle/ChillPersonBundle/Service/DocGenerator/PersonContext.php @@ -249,9 +249,6 @@ final class PersonContext implements PersonContextInterface ]; } - /** - * @param Person $entity - */ public function storeGenerated(DocGeneratorTemplate $template, StoredObject $storedObject, object $entity, array $contextGenerationData): void { $doc = new PersonDocument(); diff --git a/src/Bundle/ChillPersonBundle/Service/DocGenerator/PersonContextInterface.php b/src/Bundle/ChillPersonBundle/Service/DocGenerator/PersonContextInterface.php index ab50655a0..6de8c1c50 100644 --- a/src/Bundle/ChillPersonBundle/Service/DocGenerator/PersonContextInterface.php +++ b/src/Bundle/ChillPersonBundle/Service/DocGenerator/PersonContextInterface.php @@ -18,6 +18,9 @@ use Chill\DocStoreBundle\Entity\StoredObject; use Chill\PersonBundle\Entity\Person; use Symfony\Component\Form\FormBuilderInterface; +/** + * @template-extends DocGeneratorContextWithPublicFormInterface + */ interface PersonContextInterface extends DocGeneratorContextWithAdminFormInterface, DocGeneratorContextWithPublicFormInterface { public function adminFormReverseTransform(array $data): array; @@ -26,10 +29,7 @@ interface PersonContextInterface extends DocGeneratorContextWithAdminFormInterfa public function buildAdminForm(FormBuilderInterface $builder): void; - /** - * @param Person $entity - */ - public function buildPublicForm(FormBuilderInterface $builder, DocGeneratorTemplate $template, $entity): void; + public function buildPublicForm(FormBuilderInterface $builder, DocGeneratorTemplate $template, mixed $entity): void; public function getData(DocGeneratorTemplate $template, $entity, array $contextGenerationData = []): array; @@ -37,7 +37,7 @@ interface PersonContextInterface extends DocGeneratorContextWithAdminFormInterfa public function getEntityClass(): string; - public function getFormData(DocGeneratorTemplate $template, $entity): array; + public function getFormData(DocGeneratorTemplate $template, mixed $entity): array; public function getName(): string; @@ -52,8 +52,5 @@ interface PersonContextInterface extends DocGeneratorContextWithAdminFormInterfa public function contextGenerationDataDenormalize(DocGeneratorTemplate $template, $entity, array $data): array; - /** - * @param Person $entity - */ public function storeGenerated(DocGeneratorTemplate $template, StoredObject $storedObject, object $entity, array $contextGenerationData): void; } diff --git a/src/Bundle/ChillPersonBundle/Templating/Entity/ClosingMotiveRender.php b/src/Bundle/ChillPersonBundle/Templating/Entity/ClosingMotiveRender.php index 688136b35..0064a53d5 100644 --- a/src/Bundle/ChillPersonBundle/Templating/Entity/ClosingMotiveRender.php +++ b/src/Bundle/ChillPersonBundle/Templating/Entity/ClosingMotiveRender.php @@ -12,14 +12,19 @@ declare(strict_types=1); namespace Chill\PersonBundle\Templating\Entity; use Chill\MainBundle\Templating\Entity\AbstractChillEntityRender; +use Chill\MainBundle\Templating\Entity\BoxUtilsChillEntityRenderTrait; +use Chill\MainBundle\Templating\Entity\ChillEntityRenderInterface; use Chill\MainBundle\Templating\TranslatableStringHelper; use Chill\PersonBundle\Entity\AccompanyingPeriod\ClosingMotive; /** * Render closing motive. + * + * @implements ChillEntityRenderInterface */ -class ClosingMotiveRender extends AbstractChillEntityRender +class ClosingMotiveRender implements ChillEntityRenderInterface { + use BoxUtilsChillEntityRenderTrait; private const SEPARATOR = ' > '; /** @@ -40,9 +45,6 @@ class ClosingMotiveRender extends AbstractChillEntityRender $this->getDefaultClosingBox(); } - /** - * @param ClosingMotive $entity - */ public function renderString($entity, array $options): string { return $this->renderStringRecursive( @@ -57,12 +59,12 @@ class ClosingMotiveRender extends AbstractChillEntityRender return $entity instanceof ClosingMotive; } - protected function renderStringRecursive(ClosingMotive $motive, $existing, array $options) + private function renderStringRecursive(ClosingMotive $motive, string $existing, array $options) { $newExisting = $this->translatableStringHelper->localize($motive->getName()); if ($motive->hasParent()) { - if (!empty($existing)) { + if ('' !== $existing) { $newExisting = $newExisting . self::SEPARATOR . $existing; } @@ -73,7 +75,7 @@ class ClosingMotiveRender extends AbstractChillEntityRender ); } - if (!empty($existing)) { + if ('' !== $existing) { return $newExisting . self::SEPARATOR . $existing; } diff --git a/src/Bundle/ChillPersonBundle/Templating/Entity/PersonRender.php b/src/Bundle/ChillPersonBundle/Templating/Entity/PersonRender.php index 9fb60b040..05d9b3009 100644 --- a/src/Bundle/ChillPersonBundle/Templating/Entity/PersonRender.php +++ b/src/Bundle/ChillPersonBundle/Templating/Entity/PersonRender.php @@ -12,6 +12,8 @@ declare(strict_types=1); namespace Chill\PersonBundle\Templating\Entity; use Chill\MainBundle\Templating\Entity\AbstractChillEntityRender; +use Chill\MainBundle\Templating\Entity\BoxUtilsChillEntityRenderTrait; +use Chill\MainBundle\Templating\Entity\ChillEntityRenderInterface; use Chill\PersonBundle\Config\ConfigPersonAltNamesHelper; use Chill\PersonBundle\Entity\Person; use Symfony\Component\Templating\EngineInterface; @@ -22,8 +24,9 @@ use function array_key_exists; /** * Render a Person. */ -class PersonRender extends AbstractChillEntityRender implements PersonRenderInterface +class PersonRender implements PersonRenderInterface { + use BoxUtilsChillEntityRenderTrait; private ConfigPersonAltNamesHelper $configAltNamesHelper; private EngineInterface $engine; @@ -40,9 +43,6 @@ class PersonRender extends AbstractChillEntityRender implements PersonRenderInte $this->translator = $translator; } - /** - * @param Person $person - */ public function renderBox($person, array $options): string { $params = [ @@ -72,9 +72,6 @@ class PersonRender extends AbstractChillEntityRender implements PersonRenderInte $this->getDefaultClosingBox(); } - /** - * @param Person $person - */ public function renderString($person, array $options): string { $options = array_merge(['addAge' => true], $options); diff --git a/src/Bundle/ChillPersonBundle/Templating/Entity/PersonRenderInterface.php b/src/Bundle/ChillPersonBundle/Templating/Entity/PersonRenderInterface.php index cc42ec305..2f69d31a9 100644 --- a/src/Bundle/ChillPersonBundle/Templating/Entity/PersonRenderInterface.php +++ b/src/Bundle/ChillPersonBundle/Templating/Entity/PersonRenderInterface.php @@ -12,9 +12,12 @@ declare(strict_types=1); namespace Chill\PersonBundle\Templating\Entity; use Chill\MainBundle\Templating\Entity\ChillEntityRenderInterface; +use Chill\PersonBundle\Entity\Person; /** * Render a Person. + * + * @extends ChillEntityRenderInterface */ interface PersonRenderInterface extends ChillEntityRenderInterface { diff --git a/src/Bundle/ChillPersonBundle/Templating/Entity/ResourceKindRender.php b/src/Bundle/ChillPersonBundle/Templating/Entity/ResourceKindRender.php index b1aa31e41..61c674b76 100644 --- a/src/Bundle/ChillPersonBundle/Templating/Entity/ResourceKindRender.php +++ b/src/Bundle/ChillPersonBundle/Templating/Entity/ResourceKindRender.php @@ -15,6 +15,9 @@ use Chill\MainBundle\Templating\Entity\ChillEntityRenderInterface; use Chill\MainBundle\Templating\TranslatableStringHelper; use Chill\PersonBundle\Entity\Person\PersonResourceKind; +/** + * @implements ChillEntityRenderInterface + */ final class ResourceKindRender implements ChillEntityRenderInterface { private TranslatableStringHelper $translatableStringHelper; diff --git a/src/Bundle/ChillPersonBundle/Templating/Entity/SocialActionRender.php b/src/Bundle/ChillPersonBundle/Templating/Entity/SocialActionRender.php index bfe49c0a4..dd8083878 100644 --- a/src/Bundle/ChillPersonBundle/Templating/Entity/SocialActionRender.php +++ b/src/Bundle/ChillPersonBundle/Templating/Entity/SocialActionRender.php @@ -20,6 +20,9 @@ use function array_merge; use function array_reverse; use function implode; +/** + * @implements ChillEntityRenderInterface + */ class SocialActionRender implements ChillEntityRenderInterface { public const AND_CHILDREN_MENTION = 'show_and_children_mention'; diff --git a/src/Bundle/ChillPersonBundle/Templating/Entity/SocialIssueRender.php b/src/Bundle/ChillPersonBundle/Templating/Entity/SocialIssueRender.php index 62d17f47e..f3962535b 100644 --- a/src/Bundle/ChillPersonBundle/Templating/Entity/SocialIssueRender.php +++ b/src/Bundle/ChillPersonBundle/Templating/Entity/SocialIssueRender.php @@ -19,6 +19,9 @@ use Symfony\Contracts\Translation\TranslatorInterface; use function array_reverse; use function implode; +/** + * @implements ChillEntityRenderInterface + */ final class SocialIssueRender implements ChillEntityRenderInterface { public const AND_CHILDREN_MENTION = 'show_and_children_mention'; @@ -53,9 +56,6 @@ final class SocialIssueRender implements ChillEntityRenderInterface $this->translator = $translator; } - /** - * @param SocialIssue $socialIssue - */ public function renderBox($socialIssue, array $options): string { $options = array_merge(self::DEFAULT_ARGS, $options); @@ -74,9 +74,6 @@ final class SocialIssueRender implements ChillEntityRenderInterface ); } - /** - * @param SocialIssue $socialIssue - */ public function renderString($socialIssue, array $options): string { /** @var SocialIssue $socialIssue */ diff --git a/src/Bundle/ChillPersonBundle/Tests/AccompanyingPeriod/SocialIssueConsistency/AccompanyingPeriodSocialIssueConsistencyEntityListenerTest.php b/src/Bundle/ChillPersonBundle/Tests/AccompanyingPeriod/SocialIssueConsistency/AccompanyingPeriodSocialIssueConsistencyEntityListenerTest.php index 0c8c3e0c3..8ac092647 100644 --- a/src/Bundle/ChillPersonBundle/Tests/AccompanyingPeriod/SocialIssueConsistency/AccompanyingPeriodSocialIssueConsistencyEntityListenerTest.php +++ b/src/Bundle/ChillPersonBundle/Tests/AccompanyingPeriod/SocialIssueConsistency/AccompanyingPeriodSocialIssueConsistencyEntityListenerTest.php @@ -114,7 +114,7 @@ final class AccompanyingPeriodSocialIssueConsistencyEntityListenerTest extends T protected function generateClass(AccompanyingPeriod $period, Collection $socialIssues): AccompanyingPeriodLinkedWithSocialIssuesEntityInterface { - return new class($period, $socialIssues) implements AccompanyingPeriodLinkedWithSocialIssuesEntityInterface { + return new class ($period, $socialIssues) implements AccompanyingPeriodLinkedWithSocialIssuesEntityInterface { public Collection $socialIssues; public AccompanyingPeriod $period; diff --git a/src/Bundle/ChillPersonBundle/Tests/Serializer/Normalizer/PersonDocGenNormalizerTest.php b/src/Bundle/ChillPersonBundle/Tests/Serializer/Normalizer/PersonDocGenNormalizerTest.php index 28ae1c89c..e85813d62 100644 --- a/src/Bundle/ChillPersonBundle/Tests/Serializer/Normalizer/PersonDocGenNormalizerTest.php +++ b/src/Bundle/ChillPersonBundle/Tests/Serializer/Normalizer/PersonDocGenNormalizerTest.php @@ -159,7 +159,7 @@ final class PersonDocGenNormalizerTest extends KernelTestCase $householdMember = new HouseholdMember(); $householdMember ->setPosition((new Position())->setAllowHolder(true)->setLabel(['fr' => 'position']) - ->setShareHousehold(true)) + ->setShareHousehold(true)) ->setHolder(true); $person->addHouseholdParticipation($householdMember); $household->addMember($householdMember); @@ -171,7 +171,7 @@ final class PersonDocGenNormalizerTest extends KernelTestCase $householdMember = new HouseholdMember(); $householdMember ->setPosition((new Position())->setAllowHolder(true)->setLabel(['fr' => 'position2']) - ->setShareHousehold(true)) + ->setShareHousehold(true)) ->setHolder(false); $person->addHouseholdParticipation($householdMember); $household->addMember($householdMember); diff --git a/src/Bundle/ChillPersonBundle/Tests/Validator/AccompanyingPeriod/ParticipationOverlapValidatorTest.php b/src/Bundle/ChillPersonBundle/Tests/Validator/AccompanyingPeriod/ParticipationOverlapValidatorTest.php index 1110bbe7b..a4c67f565 100644 --- a/src/Bundle/ChillPersonBundle/Tests/Validator/AccompanyingPeriod/ParticipationOverlapValidatorTest.php +++ b/src/Bundle/ChillPersonBundle/Tests/Validator/AccompanyingPeriod/ParticipationOverlapValidatorTest.php @@ -12,14 +12,12 @@ declare(strict_types=1); namespace Validator\AccompanyingPeriod; use Chill\PersonBundle\Entity\AccompanyingPeriod; -use Chill\PersonBundle\Entity\AccompanyingPeriodParticipation; use Chill\PersonBundle\Entity\Person; use Chill\PersonBundle\Templating\Entity\PersonRenderInterface; use Chill\PersonBundle\Validator\Constraints\AccompanyingPeriod\ParticipationOverlap; use Chill\PersonBundle\Validator\Constraints\AccompanyingPeriod\ParticipationOverlapValidator; use Chill\ThirdPartyBundle\Entity\ThirdParty; use Chill\ThirdPartyBundle\Templating\Entity\ThirdPartyRender; -use Doctrine\Common\Collections\ArrayCollection; use Prophecy\Argument; use Prophecy\PhpUnit\ProphecyTrait; use Symfony\Component\Validator\Test\ConstraintValidatorTestCase; @@ -28,39 +26,92 @@ use Symfony\Component\Validator\Test\ConstraintValidatorTestCase; * @internal * @coversNothing */ -final class ParticipationOverlapValidatorTest extends ConstraintValidatorTestCase +class ParticipationOverlapValidatorTest extends ConstraintValidatorTestCase { use ProphecyTrait; - /** - * @return mixed - */ - public function getConstraint() + public function testNoViolation(): void { - return new ParticipationOverlap(); - } + $constraint = $this->getConstraint(); - public function testOneParticipation() - { $period = new AccompanyingPeriod(); - $person = new Person(); + $person1 = new Person(); + $person2 = new Person(); - $collection = new ArrayCollection([ - new AccompanyingPeriodParticipation($period, $person), - ]); + $period->createParticipationFor($person1); + $period->createParticipationFor($person2); - $this->validator->validate($collection, $this->getConstraint()); + $this->validator->validate($period->getParticipations(), $constraint); $this->assertNoViolation(); } - protected function createValidator() + public function testHasTwoParticipationsOverlaps(): void + { + $constraint = $this->getConstraint(); + + $period = new AccompanyingPeriod(); + $person1 = new Person(); + $reflectionPerson = new \ReflectionClass($person1); + $personId = $reflectionPerson->getProperty('id'); + $personId->setAccessible(true); + $personId->setValue($person1, 1); + $person2 = new Person(); + + $period->createParticipationFor($person1); + $period->createParticipationFor($person1); + $period->createParticipationFor($person2); + + $this->validator->validate($period->getParticipations(), $constraint); + + $this->buildViolation('participation-overlaps') + ->setParameters([ + '{{ start }}' => (new \DateTimeImmutable('today'))->format('d-m-Y'), + '{{ end }}' => null, + '{{ ids }}' => [null, null], + '{{ name }}' => 'person' + ]) + ->assertRaised(); + } + + public function testHasTwoParticipationsButDoNotOverlaps(): void + { + $constraint = $this->getConstraint(); + + $period = new AccompanyingPeriod(); + $person1 = new Person(); + $reflectionPerson = new \ReflectionClass($person1); + $personId = $reflectionPerson->getProperty('id'); + $personId->setAccessible(true); + $personId->setValue($person1, 1); + $person2 = new Person(); + + $participation1 = $period->createParticipationFor($person1); + $period->createParticipationFor($person1); + $participation1->setEndDate(new \DateTime('now')); + $period->createParticipationFor($person2); + + $this->validator->validate($period->getParticipations(), $constraint); + + $this->assertNoViolation(); + } + protected function createValidator(): ParticipationOverlapValidator { $personRender = $this->prophesize(PersonRenderInterface::class); - $personRender->renderString(Argument::is(Person::class), [])->willReturn('person'); + $personRender->renderString(Argument::type(Person::class), []) + ->willReturn('person'); $thirdPartyRender = $this->prophesize(ThirdPartyRender::class); - $thirdPartyRender->renderString(Argument::is(ThirdParty::class), [])->willReturn('thirdparty'); + $thirdPartyRender->renderString(Argument::type(ThirdParty::class), []) + ->willReturn('third-party'); - return new ParticipationOverlapValidator($personRender->reveal(), $thirdPartyRender->reveal()); + return new ParticipationOverlapValidator( + $personRender->reveal(), + $thirdPartyRender->reveal() + ); + } + + public function getConstraint(): ParticipationOverlap + { + return new ParticipationOverlap(['message' => 'participation-overlaps']); } } diff --git a/src/Bundle/ChillPersonBundle/Validator/Constraints/AccompanyingPeriod/ParticipationOverlapValidator.php b/src/Bundle/ChillPersonBundle/Validator/Constraints/AccompanyingPeriod/ParticipationOverlapValidator.php index 9c9991a1a..67ee00756 100644 --- a/src/Bundle/ChillPersonBundle/Validator/Constraints/AccompanyingPeriod/ParticipationOverlapValidator.php +++ b/src/Bundle/ChillPersonBundle/Validator/Constraints/AccompanyingPeriod/ParticipationOverlapValidator.php @@ -61,9 +61,9 @@ class ParticipationOverlapValidator extends ConstraintValidator throw new UnexpectedTypeException($participation, AccompanyingPeriodParticipation::class); } - $personId = $participation->getPerson()->getId(); + $hashPerson = spl_object_hash($participation->getPerson()); - $participationList[$personId][] = $participation; + $participationList[$hashPerson][] = $participation; } foreach ($participationList as $group) { @@ -78,15 +78,14 @@ class ParticipationOverlapValidator extends ConstraintValidator if ($overlaps->hasIntersections()) { foreach ($overlaps->getIntersections() as [$start, $end, $ids]) { - $msg = null === $end ? $constraint->message : - $constraint->message; + $msg = $constraint->message; $this->context->buildViolation($msg) ->setParameters([ '{{ start }}' => $start->format('d-m-Y'), '{{ end }}' => null === $end ? null : $end->format('d-m-Y'), '{{ ids }}' => $ids, - '{{ name }}' => $this->personRender->renderString($participation->getPerson(), []), + '{{ name }}' => $this->personRender->renderString($participations[0]->getPerson(), []), ]) ->addViolation(); } diff --git a/src/Bundle/ChillPersonBundle/Workflow/AccompanyingPeriodWorkEvaluationDocumentWorkflowHandler.php b/src/Bundle/ChillPersonBundle/Workflow/AccompanyingPeriodWorkEvaluationDocumentWorkflowHandler.php index 735463fc2..500daab6f 100644 --- a/src/Bundle/ChillPersonBundle/Workflow/AccompanyingPeriodWorkEvaluationDocumentWorkflowHandler.php +++ b/src/Bundle/ChillPersonBundle/Workflow/AccompanyingPeriodWorkEvaluationDocumentWorkflowHandler.php @@ -97,6 +97,21 @@ class AccompanyingPeriodWorkEvaluationDocumentWorkflowHandler implements EntityW return AccompanyingPeriodWorkEvaluationDocumentVoter::SEE; } + public function getSuggestedUsers(EntityWorkflow $entityWorkflow): array + { + $suggestedUsers = $entityWorkflow->getUsersInvolved(); + + $referrer = $this->getRelatedEntity($entityWorkflow) + ->getAccompanyingPeriodWorkEvaluation() + ->getAccompanyingPeriodWork() + ->getAccompanyingPeriod() + ->getUser(); + + $suggestedUsers[spl_object_hash($referrer)] = $referrer; + + return $suggestedUsers; + } + public function getTemplate(EntityWorkflow $entityWorkflow, array $options = []): string { return '@ChillPerson/Workflow/_evaluation_document.html.twig'; diff --git a/src/Bundle/ChillPersonBundle/Workflow/AccompanyingPeriodWorkEvaluationWorkflowHandler.php b/src/Bundle/ChillPersonBundle/Workflow/AccompanyingPeriodWorkEvaluationWorkflowHandler.php index 25edce03b..db67ef045 100644 --- a/src/Bundle/ChillPersonBundle/Workflow/AccompanyingPeriodWorkEvaluationWorkflowHandler.php +++ b/src/Bundle/ChillPersonBundle/Workflow/AccompanyingPeriodWorkEvaluationWorkflowHandler.php @@ -87,6 +87,20 @@ class AccompanyingPeriodWorkEvaluationWorkflowHandler implements EntityWorkflowH return AccompanyingPeriodWorkEvaluationVoter::SEE; } + public function getSuggestedUsers(EntityWorkflow $entityWorkflow): array + { + $suggestedUsers = $entityWorkflow->getUsersInvolved(); + + $referrer = $this->getRelatedEntity($entityWorkflow) + ->getAccompanyingPeriodWork() + ->getAccompanyingPeriod() + ->getUser(); + + $suggestedUsers[spl_object_hash($referrer)] = $referrer; + + return $suggestedUsers; + } + public function getTemplate(EntityWorkflow $entityWorkflow, array $options = []): string { return '@ChillPerson/Workflow/_evaluation.html.twig'; diff --git a/src/Bundle/ChillPersonBundle/Workflow/AccompanyingPeriodWorkWorkflowHandler.php b/src/Bundle/ChillPersonBundle/Workflow/AccompanyingPeriodWorkWorkflowHandler.php index b6829ab77..3cdf23f88 100644 --- a/src/Bundle/ChillPersonBundle/Workflow/AccompanyingPeriodWorkWorkflowHandler.php +++ b/src/Bundle/ChillPersonBundle/Workflow/AccompanyingPeriodWorkWorkflowHandler.php @@ -94,6 +94,21 @@ class AccompanyingPeriodWorkWorkflowHandler implements EntityWorkflowHandlerInte return null; } + public function getSuggestedUsers(EntityWorkflow $entityWorkflow): array + { + $suggestedUsers = $entityWorkflow->getUsersInvolved(); + + $referrer = $this->getRelatedEntity($entityWorkflow) + ->getAccompanyingPeriod() + ->getUser(); + + if (null !== $referrer) { + $suggestedUsers[spl_object_hash($referrer)] = $referrer; + } + + return $suggestedUsers; + } + public function getTemplate(EntityWorkflow $entityWorkflow, array $options = []): string { return '@ChillPerson/Workflow/_accompanying_period_work.html.twig'; diff --git a/src/Bundle/ChillPersonBundle/migrations/Version20230210104424.php b/src/Bundle/ChillPersonBundle/migrations/Version20230210104424.php new file mode 100644 index 000000000..0e2369db4 --- /dev/null +++ b/src/Bundle/ChillPersonBundle/migrations/Version20230210104424.php @@ -0,0 +1,33 @@ +addSql('ALTER TABLE chill_person_accompanying_period_work_evaluation ADD timeSpent INT DEFAULT NULL'); + } + + public function down(Schema $schema): void + { + $this->addSql('ALTER TABLE chill_person_accompanying_period_work_evaluation DROP timeSpent'); + } +} diff --git a/src/Bundle/ChillPersonBundle/translations/messages.fr.yml b/src/Bundle/ChillPersonBundle/translations/messages.fr.yml index bdbd64cdc..18e3ab13f 100644 --- a/src/Bundle/ChillPersonBundle/translations/messages.fr.yml +++ b/src/Bundle/ChillPersonBundle/translations/messages.fr.yml @@ -47,8 +47,8 @@ Phonenumber: 'Numéro de téléphone' phonenumber: numéro de téléphone Mobilenumber: 'Numéro de téléphone portable' mobilenumber: numéro de téléphone portable -Accept short text message ?: La personne a donné l'autorisation d'utiliser ce no de téléphone pour l'envoi de rappel par SMS -Accept short text message: La personne a donné l'autorisation d'utiliser ce no de téléphone pour l'envoi de rappel par SMS +Accept short text message ?: L'usager a donné l'autorisation d'utiliser ce no de téléphone pour l'envoi de rappel par SMS +Accept short text message: L'usager a donné l'autorisation d'utiliser ce no de téléphone pour l'envoi de rappel par SMS Other phonenumber: Autre numéro de téléphone Others phone numbers: Autres numéros de téléphone No additional phone numbers: Aucun numéro de téléphone supplémentaire @@ -85,9 +85,9 @@ Course number: Parcours n° Civility: Civilité choose civility: -- All genders: tous les genres -Any person selected: Aucune personne sélectionnée -Create a household and add an address: Ajouter une adresse pour une personne non suivie et seule dans un ménage -A new household will be created. The person will be member of this household.: Un nouveau ménage va être créé. La personne sera membre de ce ménage. +Any person selected: Aucun usager sélectionné +Create a household and add an address: Ajouter une adresse pour un usager non suivie et seule dans un ménage +A new household will be created. The person will be member of this household.: Un nouveau ménage va être créé. L'usager sera membre de ce ménage. Comment on the gender: Commentaire sur le genre genderComment: Commentaire sur le genre maritalStatus: État civil @@ -136,10 +136,10 @@ address_country_name: Pays address_country_code: Code pays 'Alreay existing person': 'Dossiers déjà encodés' -'Add the person': 'Ajouter la personne' -'Add the person and create an accompanying period': "Créer la personne ET créer une période d'accompagnement" -'Add the person and create a household': "Créer la personne ET créer un ménage" -Show person: Voir le dossier de la personne +'Add the person': "Ajouter l'usager" +'Add the person and create an accompanying period': "Créer l'usager et créer un parcours d'accompagnement" +'Add the person and create a household': "Créer l'usager et créer un ménage" +Show person: Voir le dossier de l'usager 'Confirm the creation': 'Confirmer la création' 'You will create this person': 'Vous allez créer le dossier suivant' Return: Retour @@ -148,51 +148,51 @@ Reset: 'Remise à zéro' 'The person data has been updated': 'Les données ont été mises à jour.' 'The person data provided are not valid': 'Les données introduites ne sont pas valides' '{1} The person field %field% is incorrect. Please check. | ]1, Inf] Several person fields are incorrect. Please check.': '{1} Le champs %field% est incorrect. Veuillez le corriger. | ]1, Inf] Plusieurs champs sont incorrects. Veuillez les vérifier.' -'Add a person': 'Ajout d''une personne' -'Person Menu': 'Menu personne' +'Add a person': 'Ajout d''un usager' +'Person Menu': 'Menu usager' 'The person data are not valid': 'Les données de votre formulaire sont invalides.' -'%nb% person with similar name. Please verify that this is a new person': '{1} Une personne a un nom similaire. Vérifiez qu''il ne s''agit pas d''elle. | ]1, Inf] %nb% personnes ont un nom similaire. Vérifiez qu''il ne s''agit pas de l''une d''elles.' +'%nb% person with similar name. Please verify that this is a new person': '{1} Une usager a un nom similaire. Vérifiez qu''il ne s''agit pas d''elle. | ]1, Inf] %nb% usagers ont un nom similaire. Vérifiez qu''il ne s''agit pas de l''une d''elles.' 'The person has been created': 'Le dossier a été créé' -'Person search results': 'Recherche de personnes' -Person search results by phonenumber: Recherche de personnes par numéro de téléphone -'Search within persons': 'Recherche parmi les personnes' -Open person file: Ouvrir le dossier de la personne +'Person search results': 'Recherche de usagers' +Person search results by phonenumber: Recherche d'usager par numéro de téléphone +'Search within persons': 'Recherche parmi les usagers' +Open person file: Ouvrir le dossier de l'usager and %number% other: '{0} et aucun autre| {1} et une autre |]1, Inf] et %number% autres' -'%total% persons matching the search pattern:': '{0} Aucune personne ne correspond aux termes de recherche : | {1} Une personne a été trouvée par la recherche : | ]1,Inf] %total% personnes correspondent aux termes de recherche :' +'%total% persons matching the search pattern:': '{0} Aucune usager ne correspond aux termes de recherche : | {1} Un usager a été trouvé par la recherche : | ]1,Inf] %total% usagers correspondent aux termes de recherche :' 'Last opening since %last_opening%': 'Dernière ouverture le %last_opening%.' 'Person accompanying period - %name%': 'Historique du dossier - %name%' 'Opening date': 'Date d''ouverture' 'Closing date': 'Date de clôture' 'Period opened': 'Période ouverte' -'Close accompanying period': 'Clôre la période' -'Open accompanying period': 'Ouvrir la période' +'Close accompanying period': 'Clôre le parcours' +'Open accompanying period': 'Ouvrir le parcours' Period number %number%: 'Période n° %number%' -'Add an accompanying period in the past': Ajouter une période d'accompagnement dans le passé -Begin a new accompanying period: Commencer une nouvelle période d'accompagnement -Create an accompanying period: Créer une période d'accompagnement -'A period has been created.': Une période d'accompagnement a été créée. -'Error! Period not created!': La période d'accompagnement n'a pas été créée. -Update accompanying period: Mettre à jour une période d'accompagnement -'An accompanying period has been updated.': Une période d'accompagnement a été mise à jour -'Error when updating the period': Erreur pendant la mise à jour de la période d'accompagnement. -'An accompanying period has been closed.': Une période d'accompagnement a été fermée. -'Error! Period not closed!': "Erreur: la période d'accompagnement n'a pas été fermée." -'An accompanying period has been opened.': Une période d'accompagnement a été ouverte. +'Add an accompanying period in the past': Ajouter un parcours d'accompagnement dans le passé +Begin a new accompanying period: Commencer un nouveau parcours d'accompagnement +Create an accompanying period: Créer un parcours d'accompagnement +'A period has been created.': Un parcours d'accompagnement a été créé. +'Error! Period not created!': Le parcours d'accompagnement n'a pas été créé. +Update accompanying period: Mettre à jour un parcours d'accompagnement +'An accompanying period has been updated.': Un parcours d'accompagnement a été mise à jour +'Error when updating the period': Erreur pendant la mise à jour du parcours d'accompagnement. +'An accompanying period has been closed.': Un parcours d'accompagnement a été fermée. +'Error! Period not closed!': "Erreur: le parcours d'accompagnement n'a pas été fermé." +'An accompanying period has been opened.': Un parcours d'accompagnement a été ouvert. 'No remark': Pas de remarque -'Period not opened': "La période d'accompagnement n'a pas été ouverte" -"Period not opened : form is invalid": "La période n'a pas été ouverte: le formulaire est invalide." +'Period not opened': "Le parcours d'accompagnement n'a pas été ouvert" +"Period not opened : form is invalid": "Le parcours d'accompagnement n'a pas été ouverte: le formulaire est invalide." 'Closing motive': 'Motif de clôture' This course is closed: Ce parcours est clôturé Close accompanying course: Clôturer le parcours Re-open accompanying course: Ré-ouvrir le parcours -'Person details': 'Détails de la personne' +'Person details': "Détails de l'usager" 'Update details for %name%': 'Modifier détails de %name%' -An accompanying period ends: Une periode d'accompagnement se clôture -An accompanying period starts: Une période d'accompagnement est ouverte -Any accompanying periods are open: Aucune période d'accompagnement ouverte -An accompanying period is open: Une période d'accompagnement est ouverte -Accompanying period list: Périodes d'accompagnement -Accompanying period list for person: Périodes d'accompagnement de la personne +An accompanying period ends: Un parcours d'accompagnement se clôture +An accompanying period starts: Un parcours d'accompagnement est ouvert +Any accompanying periods are open: Aucune parcours d'accompagnement ouvert +An accompanying period is open: Un parcours d'accompagnement est ouvert +Accompanying period list: Parcours d'accompagnement +Accompanying period list for person: Parcours d'accompagnement de l'usager Accompanying period: Parcours d'accompagnement Any accompanying period: Aucun parcours d'accompagnement period: Parcours @@ -200,17 +200,17 @@ New accompanying course: Nouveau parcours d'accompagnement Choose a motive: Motif de fermeture Re-open accompanying period: Ré-ouvrir Re-Open a period: Ré-ouvrir -Are you sure you want to re-open this period ?: Êtes-vous sûr de vouloir ré-ouvrir cette période d'accompagnement ? -'The period has been re-opened': La période d'accompagnement a été ré-ouverte. +Are you sure you want to re-open this period ?: Êtes-vous sûr de vouloir ré-ouvrir cet parcours d'accompagnement ? +'The period has been re-opened': Le parcours d'accompagnement a été ré-ouverte. Pediod closing form is not valid: Le formulaire n'est pas valide Accompanying user: Accompagnant No accompanying user: Aucun accompagnant No data given: Pas d'information -Participants: Personnes impliquées +Participants: Usagers impliquées Create an accompanying course: Créer un parcours Accompanying courses of users: Parcours des utilisateurs This accompanying course is still a draft: Ce parcours est encore à l'état brouillon. -Associated peoples: Personnes concernées +Associated peoples: Usagers concernées Resources: Interlocuteurs privilégiés Any requestor to this accompanying course: Aucun demandeur pour ce parcours Social action: Action d'accompagnement @@ -222,47 +222,47 @@ Social issues: Problématiques sociales Pick a social issue: Choisir une problématique sociale Last events on accompanying course: Dernières actions de suivi Edit & activate accompanying course: Modifier et valider -See accompanying periods: Voir toutes les périodes d'accompagnement -See accompanying period: Voir la période -Edit accompanying period: Modifier la période -See this period: Voir cette période +See accompanying periods: Voir tous les parcours d'accompagnement +See accompanying period: Voir le parcours +Edit accompanying period: Modifier le parcours +See this period: Voir cet parcours Requestor: Demandeur No requestor: Pas de demandeur No resources: "Pas d'interlocuteurs privilégiés" -Persons associated: Personnes concernés +Persons associated: Usagers concernés Referrer: Référent Referrers: Agents traitants Referrer2: Agent traitant No referrer: Pas d'agent traitant -Some peoples does not belong to any household currently. Add them to an household soon: Certaines personnes n'appartiennent à aucun ménage actuellement. Renseignez leur ménage dès que possible. +Some peoples does not belong to any household currently. Add them to an household soon: Certains usagers n'appartiennent à aucun ménage actuellement. Renseignez leur ménage dès que possible. Add to household now: Ajouter à un ménage Any resource for this accompanying course: Aucun interlocuteur privilégié pour ce parcours course.draft: Brouillon course.closed: Clôturé Origin: Origine de la demande -Delete accompanying period: Supprimer la période d'accompagnement -Are you sure you want to remove the accompanying period "%id%" ?: Êtes-vous sûr de vouloir supprimer la période d'accompagnement %id% ? -The accompanying course has been successfully removed.: La période d'accompagnement a été supprimée. +Delete accompanying period: Supprimer le parcours d'accompagnement +Are you sure you want to remove the accompanying period "%id%" ?: Êtes-vous sûr de vouloir supprimer le parcours d'accompagnement %id% ? +The accompanying course has been successfully removed.: Le parcours d'accompagnement a été supprimé. Concerned scopes: Services concernés # person resource person_resources_menu: "Personnes ressources" -Person resources: "Ressources de la personne" -Add a person resource: "Ajouter une ressource" -edit resource: "Modifier ressource" -Remove resource: "Supprimer ressource" +Person resources: "Personnes ressources de l'usager" +Add a person resource: "Ajouter une person ressource" +edit resource: "Modifier la ressource" +Remove resource: "Supprimer la ressource" Are you sure you want to remove the resource for "%name%" ?: Étes-vous sûr de vouloir supprimer cette ressource de %name%? The resource has been successfully removed.: "La ressource a été supprimée." -List of resources: "Liste des ressources" -There are no available resources: "Aucun ressource" +List of resources: "Liste des personnes ressources" +There are no available resources: "Aucun personne ressource" no comment found: "Aucun commentaire" Select a type: "Choisissez un type" -Select a person: "Choisissez une personne" +Select a person: "Choisissez un usager" Kind: "Type" # pickAPersonType -Pick a person: Choisir une personne +Pick a person: Choisir un usager # Address No address given: Pas d'adresse renseignée @@ -277,19 +277,19 @@ New address : Nouvelle adresse New address for %name% : Nouvelle adresse pour %name% The new address was created successfully: La nouvelle adresse a été créée Add an address: Ajouter une adresse -Back to the person details: Retour aux détails de la personne +Back to the person details: Retour aux détails de l'usager # Residential address Residential addresses history for %name%: Historique des adresses de résidence de %name% Residential addresses history: Historique des adresses de résidence Add a residential address: Ajouter une adresse de résidence Which kind of residential address would you create ?: Quel type d'adresse de résidence voulez-vous créer? -The address of another person: L'adresse d'une autre personne +The address of another person: L'adresse d'une autre usager A new address: Une nouvelle adresse -residential_address_person_explanation: L'adresse sera positionnée auprès d'une personne. Lorsque la personne déménage, l'adresse de résidence suivra également cette personne +residential_address_person_explanation: L'adresse sera positionnée auprès d'un usager. Lorsque l'usager déménage, l'adresse de résidence suivra également cette usager residential_address_new_address_explanation: Créer une nouvelle adresse. L'adresse sera fixe. New residential address: Nouvelle adresse de résidence -Host person: Choisir l'adresse d'une personne +Host person: Choisir l'adresse d'un usager The new residential address was created successfully: La nouvelle adresse de résidence a été créée Edit a residential address: Modifier l'addresse de résidence The residential address was updated successfully: L'adresse de résidence a été mise à jour @@ -303,29 +303,29 @@ Residential address had been deleted: L'adresse de résidence a été supprimée #timeline Timeline: Historique -Closing the accompanying period: Fermeture de la période d'accompagnement -Opening the accompanying period: Ouverture d'une période d'accompagnement +Closing the accompanying period: Fermeture du parcours d'accompagnement +Opening the accompanying period: Ouverture d'un parcours d'accompagnement 'Timeline for %name%': 'Historique de %name%' # ROLES -CHILL_PERSON_SEE: Voir les personnes -CHILL_PERSON_UPDATE: Modifier les personnes -CHILL_PERSON_CREATE: Ajouter des personnes -CHILL_PERSON_STATS: Statistiques sur les personnes -CHILL_PERSON_LISTS: Liste des personnes -CHILL_PERSON_DUPLICATE: Gérer les doublons de personnes +CHILL_PERSON_SEE: Voir les usagers +CHILL_PERSON_UPDATE: Modifier les usagers +CHILL_PERSON_CREATE: Ajouter des usagers +CHILL_PERSON_STATS: Statistiques sur les usagers +CHILL_PERSON_LISTS: Liste des usagers +CHILL_PERSON_DUPLICATE: Gérer les doublons d'usagers -CHILL_PERSON_ACCOMPANYING_PERIOD_SEE: Vision simplifiée d'une période d'accompagnement -CHILL_PERSON_ACCOMPANYING_PERIOD_CONFIDENTIAL: Voir et modifier les périodes d'accompagnement confidentielles -CHILL_PERSON_ACCOMPANYING_PERIOD_DELETE: Supprimer une période d'accompagnement +CHILL_PERSON_ACCOMPANYING_PERIOD_SEE: Vision simplifiée d'un parcours d'accompagnement +CHILL_PERSON_ACCOMPANYING_PERIOD_CONFIDENTIAL: Voir et modifier les parcours d'accompagnement confidentielles +CHILL_PERSON_ACCOMPANYING_PERIOD_DELETE: Supprimer un pacours d'accompagnement CHILL_PERSON_ACCOMPANYING_PERIOD_RE_OPEN: Ré-ouvrir un parcours clotûré CHILL_PERSON_ACCOMPANYING_PERIOD_TOGGLE_CONFIDENTIAL_ALL: Modifier la confidentialité de tous les parcours -CHILL_PERSON_ACCOMPANYING_PERIOD_CRUD_CONFIDENTIAL: Voir les périodes d'accompagnement confidentielles -CHILL_PERSON_ACCOMPANYING_PERIOD_CREATE: Créer une période d'accompagnement -CHILL_PERSON_ACCOMPANYING_PERIOD_UPDATE: Modifier une période d'accompagnement -CHILL_PERSON_ACCOMPANYING_PERIOD_FULL: Voir les détails, créer, supprimer et mettre à jour une période d'accompagnement +CHILL_PERSON_ACCOMPANYING_PERIOD_CRUD_CONFIDENTIAL: Voir les parcours d'accompagnement confidentiels +CHILL_PERSON_ACCOMPANYING_PERIOD_CREATE: Créer un parcours d'accompagnement +CHILL_PERSON_ACCOMPANYING_PERIOD_UPDATE: Modifier un parcours d'accompagnement +CHILL_PERSON_ACCOMPANYING_PERIOD_FULL: Voir les détails, créer, supprimer et mettre à jour un parcours d'accompagnement CHILL_PERSON_ACCOMPANYING_COURSE_REASSIGN_BULK: Réassigner les parcours en lot -CHILL_PERSON_ACCOMPANYING_PERIOD_SEE_DETAILS: Voir les détails d'une période d'accompagnement +CHILL_PERSON_ACCOMPANYING_PERIOD_SEE_DETAILS: Voir les détails d'un parcours d'accompagnement CHILL_PERSON_ACCOMPANYING_PERIOD_STATS: Statistiques sur les parcours d'accompagnement CHILL_MAIN_ACCOMPANYING_PERIOD_WORK_CREATE: Créer une action d'accompagnement @@ -342,28 +342,28 @@ CHILL_PERSON_HOUSEHOLD_EDIT: Modifier les ménages CHILL_PERSON_HOUSEHOLD_STATS: Statistiques sur les ménages #period -Period closed!: Période clôturée! +Period closed!: Parcours clôturé! Pediod closing form is not valide: Le formulaire de fermeture n'est pas valide #widget ## widget person_list -Accompanyied people: Personnes accompagnées +Accompanyied people: Usagers accompagnés ## exports -Exports of persons: Exports des personnes -Count people by various parameters.: Compte le nombre de personnes en fonction de différents filtres. -Count people: Nombre de personnes -List peoples: Liste des personnes -Create a list of people according to various filters.: Crée une liste des personnes selon différents filtres. +Exports of persons: Exports des usagers +Count people by various parameters.: Compte le nombre d'usagers en fonction de différents filtres. +Count people: Nombre d'usagers +List peoples: Liste des usagers +Create a list of people according to various filters.: Crée une liste d'usagers selon différents filtres. Fields to include in export: Champs à inclure dans l'export Address valid at this date: Addresse valide à cette date Data valid at this date: Données valides à cette date Data regarding center, addresses, and so on will be computed at this date: Les données concernant le centre, l'adresse, le ménage, sera calculé à cette date. List duplicates: Liste des doublons -Create a list of duplicate people: Créer la liste des personnes détectées comme doublons. -Count people participating in an accompanying course: Nombre de personnes concernées par un parcours -Count people participating in an accompanying course by various parameters.: Compte le nombre de personnes concernées par un parcours +Create a list of duplicate people: Créer la liste des usagers détectés comme doublons. +Count people participating in an accompanying course: Nombre d'usagers concernés par un parcours +Count people participating in an accompanying course by various parameters.: Compte le nombre d'usagers concernées par un parcours Exports of accompanying courses: Exports des parcours d'accompagnement Count accompanying courses: Nombre de parcours @@ -384,33 +384,33 @@ Count evaluation by various parameters.: Compte le nombre d'évaluations selon d Exports of households: Exports des ménages ## persons filters -Filter by person gender: Filtrer les personnes par genre +Filter by person gender: Filtrer les usagers par genre Accepted genders: Genres acceptés 'Filtering by genders: only %genders%': 'Filtré par genre: seulement %genders%' -Filter by person's nationality: Filtrer les personnes par nationalité +Filter by person's nationality: Filtrer les usagers par nationalité Nationalities: Nationalités Choose countries: Choisir les nationalités 'Filtered by nationality : %nationalities%': 'Filtré par nationalité : seulement %nationalities%' -Filter by person's birthdate: Filtrer les personnes par date de naissance +Filter by person's birthdate: Filtrer les usagers par date de naissance Born after this date: Nés après cette date Born before this date: Nés avant cette date This field should not be empty: Ce champ ne peut pas être vide This date should be after the date given in "born after" field: Cette date doit être après la date donnée du le champ "nés après le" -"Filtered by person's birthdate: between %date_from% and %date_to%": "Filtré par date de naissance de la personne: uniquement nés entre le %date_from% et %date_to%" +"Filtered by person's birthdate: between %date_from% and %date_to%": "Filtré par date de naissance de l'usager: uniquement nés entre le %date_from% et %date_to%" -Filter by person's deathdate: Filtrer les personnes par date de décès -"Filtered by person's deathdate: between %date_from% and %date_to%": "Filtré par date de naissance de la personne: uniquement nés entre le %date_from% et %date_to%" +Filter by person's deathdate: Filtrer les usagers par date de décès. +"Filtered by person's deathdate: between %date_from% and %date_to%": "Filtré par date de naissance de l'usager: uniquement nés entre le %date_from% et %date_to%" Death after this date: Décédé après cette date Deathdate before: Décédé avant cette date Alive: Vivant Deceased: Décédé Filter in relation to this date: Filtrer par rapport à cette date -"Filtered by a state of %deadOrAlive%: at this date %date_calc%": Filtré par personnes qui sont %deadOrAlive% à cette date %date_calc% +"Filtered by a state of %deadOrAlive%: at this date %date_calc%": Filtré par usagers qui sont %deadOrAlive% à cette date %date_calc% -Filter by person's age: Filtrer les personnes par age -"Filtered by person's age: between %min_age% and %max_age%": "Filtré par âge de la personne entre %min_age% et %max_age%" +Filter by person's age: Filtrer les usagers par age. +"Filtered by person's age: between %min_age% and %max_age%": "Filtré par âge de l'usager entre %min_age% et %max_age%" Minimum age: Âge minimum Maximum age: Âge maximum The minimum age should be less than the maximum age.: L'âge minimum doit être plus bas que l'âge maximum. @@ -420,38 +420,38 @@ Date during which residential address was valid: Date de validité Family composition: Composition familiale Family composition at this time: Composition familiale à cette date. -Filter by person's marital status: Filtrer les personnes par état matrimonial +Filter by person's marital status: Filtrer les usagers par état matrimonial Filtered by person's marital status: Filtré par état matrimonial Marital status at this time: État matrimonial par rapport à cette date -Filter by entrusted child status: Filtrer les personnes "enfant confié" -Filtered by entrusted child status: Uniquement les personnes qui sont "enfant confié" +Filter by entrusted child status: Filtrer les usagers "enfant confié" +Filtered by entrusted child status: Uniquement les usagers qui sont "enfant confié" -Filter by nomadic status: Filtrer les personnes "gens du voyage" -Filtered by nomadic status: Uniquement les personnes qui sont "gens du voyage" +Filter by nomadic status: Filtrer les usagers "gens du voyage" +Filtered by nomadic status: Uniquement les usagers qui sont "gens du voyage" -"Filter by person's who have a residential address located at another user": Filtrer les personnes qui ont une addresse de résidence chez une autre personne -"Filtered by person's who have a residential address located at another user": Uniquement les personnes qui ont une addresse de résidence chez une autre personne +"Filter by person's who have a residential address located at another user": Filtrer les usagers qui ont une addresse de résidence chez une autre usager +"Filtered by person's who have a residential address located at another user": Uniquement les usagers qui ont une addresse de résidence chez une autre usager -Filter by person's that are alive or have deceased at a certain date: Filtrer les personnes qui sont décédées ou vivantes à une certaine date -Filtered by person's that are alive or have deceased at a certain date: Uniquement les personnes qui sont décédées ou vivantes à une certaine date +Filter by person's that are alive or have deceased at a certain date: Filtrer les usagers qui sont décédés ou vivantes à une certaine date +Filtered by person's that are alive or have deceased at a certain date: Uniquement les usagers qui sont décédés ou vivantes à une certaine date -"Filter by accompanying period: active period": "Filtrer les personnes par période d'accompagnement: en file active" -Having an accompanying period opened after this date: Ayant une période d'accompagnement ouverte après cette date -Having an accompanying period ending before this date, or still opened at this date: Ayant une période d'accompagnement fermée après cette date, ou toujours ouverte à cette date -"Filtered by accompanying period: persons having an accompanying period opened after the %date_from% and closed before the %date_to% (or still opened at the %date_to%)": "Filtré par période d'accompagnement: personnes ayant une période d'accompagnement ouverte après le %date_from%, et cloturée le %date_to% (ou toujours ouverte le %date_to%)" +"Filter by accompanying period: active period": "Filtrer les usagers par parcours d'accompagnement: en file active" +Having an accompanying period opened after this date: Ayant un parcours d'accompagnement ouverte après cette date +Having an accompanying period ending before this date, or still opened at this date: Ayant un parcours d'accompagnement fermée après cette date, ou toujours ouverte à cette date +"Filtered by accompanying period: persons having an accompanying period opened after the %date_from% and closed before the %date_to% (or still opened at the %date_to%)": "Filtré par parcours d'accompagnement: usagers ayant un parcours d'accompagnement ouvert après le %date_from%, et cloturé le %date_to% (ou toujours ouvert le %date_to%)" -"Filter by accompanying period: starting between two dates": "Filtrer les personnes par période d'accompagnement: début de la période entre deux dates" -"Having an accompanying period opened before this date": "Ayant une période d'accompagnement ouverte avant cette date" -"Filtered by accompanying period: persons having an accompanying period opened between the %date_from% and %date_to%": "Filtrer par période d'accompagnement: ayant une période ouverte entre le %date_from% et le %date_to%" +"Filter by accompanying period: starting between two dates": "Filtrer les usagers par parcours d'accompagnement: début de la période entre deux dates" +"Having an accompanying period opened before this date": "Ayant un parcours d'accompagnement ouvert avant cette date" +"Filtered by accompanying period: persons having an accompanying period opened between the %date_from% and %date_to%": "Filtrer par parcours d'accompagnement: ayant un parcours ouvert entre le %date_from% et le %date_to%" -"Filter by accompanying period: closed between two dates": "Filtrer les personnes par période d'accompagnement: période fermée entre deux dates" -Having an accompanying period closed after this date: Ayant une période d'accompagnement fermée après cette date -"Having an accompanying period closed before this date": "Ayant une période d'accompagnement fermée avant cette date" -"Filtered by accompanying period: persons having an accompanying period closed between the %date_from% and %date_to%": "Filtrer par période d'accompagnement: ayant une période fermée entre le %date_from% et le %date_to%" +"Filter by accompanying period: closed between two dates": "Filtrer les usagers par parcours d'accompagnement: parcours fermé entre deux dates" +Having an accompanying period closed after this date: Ayant un parcours d'accompagnement fermé après cette date +"Having an accompanying period closed before this date": "Ayant un parcours d'accompagnement fermé avant cette date" +"Filtered by accompanying period: persons having an accompanying period closed between the %date_from% and %date_to%": "Filtrer par parcours d'accompagnement: ayant un parcours fermé entre le %date_from% et le %date_to%" -Filter by person having an activity in a period: Filtrer les personnes ayant eu une échange pendant la période donnée -Filtered by person having an activity between %date_from% and %date_to% with reasons %reasons_name%: Uniquement les personnes associées à une échange entre %date_from% et %date_to% avec les sujets %reasons_name% +Filter by person having an activity in a period: Filtrer les usagers ayant eu un échange pendant la période donnée +Filtered by person having an activity between %date_from% and %date_to% with reasons %reasons_name%: Uniquement les usagers associés à un échange entre %date_from% et %date_to% avec les sujets %reasons_name% ## accompanying course filters/aggr @@ -483,8 +483,8 @@ acp_geog_agg_unitname: Zone géographique acp_geog_agg_unitrefid: Clé de la zone géographique Geographical layer: Couche géographique Select a geographical layer: Choisir une couche géographique -Group people by geographical unit based on his address: Grouper les personnes par zone géographique (sur base de l'adresse) -Filter by person's geographical unit (based on address): Filter les personnes par zone géographique (sur base de l'adresse) +Group people by geographical unit based on his address: Grouper les usagers par zone géographique (sur base de l'adresse) +Filter by person's geographical unit (based on address): Filter les usagers par zone géographique (sur base de l'adresse) Filter by socialaction: Filtrer les parcours par action d'accompagnement Accepted socialactions: Actions d'accompagnement @@ -500,9 +500,9 @@ Evaluation: Évaluation "Filtered by evaluations: only %evals%": "Filtré par évaluation: uniquement %evals%" Group by evaluation: Grouper les parcours par évaluation -Filter accompanying course by activity type: Filtrer les parcours par type d'activité -Accepted activitytypes: Types d'activités -"Filtered by activity types: only %activitytypes%": "Filtré par type d'activité: seulement %activitytypes%" +Filter accompanying course by activity type: Filtrer les parcours par type d'échange +Accepted activitytypes: Types d'échanges +"Filtered by activity types: only %activitytypes%": "Filtré par type d'échange: seulement %activitytypes%" Filter by origin: Filtrer les parcours par origine du parcours Accepted origins: Origines @@ -520,12 +520,12 @@ Administrative location: Localisation administrative "Filtered by administratives locations: only %locations%": "Filtré par localisation administrative: uniquement %locations%" Group by administrative location: Grouper les parcours par localisation administrative -Filter by requestor: Filtrer les parcours selon la présence du demandeur au sein des personnes concernées +Filter by requestor: Filtrer les parcours selon la présence du demandeur au sein des usagers concernés Accepted choices: '' -is person concerned: Le demandeur est une personne concernée -is other person: Le demandeur est une personne, mais n'est pas concernée +is person concerned: Le demandeur est un usager concerné +is other person: Le demandeur est un usager, mais n'est pas concerné no requestor: Le parcours ne comporte pas de demandeur -"Filtered by requestor: only %choice%": "Filtré par présence du demandeur au sein des personnes concernées: uniquement si %choice%" +"Filtered by requestor: only %choice%": "Filtré par présence du demandeur au sein des usagers concernés: uniquement si %choice%" Group by requestor: Grouper les parcours selon la nature du demandeur Filter by confidential: Filtrer les parcours par confidentialité @@ -647,24 +647,24 @@ Rounded month duration: Durée en mois (arrondie) current duration: en cours duration 0 month: 0 mois (<15 jours) ' months': ' mois' -Group people by nationality: Grouper les personnes par nationalités +Group people by nationality: Grouper les usagers par nationalités Group by level: Grouper par niveau Group by continents: Grouper par continent Group by country: Grouper par pays -Group people by gender: Grouper les personnes par genre -Group people by their professional situation: Grouper les personnes par situation professionelle -Group people by marital status: Grouper les personnes par état matrimonial +Group people by gender: Grouper les usagers par genre +Group people by their professional situation: Grouper les usagers par situation professionelle +Group people by marital status: Grouper les usagers par état matrimonial -Aggregate by household position: Grouper les personnes par position dans le ménage +Aggregate by household position: Grouper les usagers par position dans le ménage Household position in relation to this date: Position dans le ménage par rapport à cette date Household position: Position dans le ménage -Aggregate by age: Grouper les personnes par âge +Aggregate by age: Grouper les usagers par âge Calculate age in relation to this date: Calculer l'âge par rapport à cette date -Group people by country of birth: Grouper les personnes par pays de naissance -Similar persons: Personnes similaires +Group people by country of birth: Grouper les usagers par pays de naissance +Similar persons: Usagers similaires crud: closing_motive: @@ -775,8 +775,8 @@ closing_motive: any parent: Aucun parent new child: Nouvel enfant -Person configuration: Configuration du module "Personnes" -Configuration of person bundle: Configuration du module "Personnes" +Person configuration: Configuration du module "Usagers" +Configuration of person bundle: Configuration du module "Usagers" person_admin: accompanying_period: Parcours d'accompagnement What would you like to configure ?: Que souhaitez-vous configurer ? @@ -784,7 +784,7 @@ person_admin: closing motives list: Liste des motifs de clotûre closing motive explanation: > Les motifs de clotûre donnent des indications sur la fermeture - d'une période d'accompagnement. + d'un parcours d'accompagnement. origin: Origines marital status: États civils marital status list: Liste des états civils @@ -825,11 +825,11 @@ Edit Accompanying Course: Modifier le parcours Close Accompanying Course: Clôturer le parcours Create Accompanying Course: Créer un nouveau parcours Drop Accompanying Course: Supprimer le parcours -This course is located at a temporarily address. You should locate this course to an user: Le parcours est localisé à une adresse temporaire. Il devrait être localisé auprès d'une personne concernée. +This course is located at a temporarily address. You should locate this course to an user: Le parcours est localisé à une adresse temporaire. Il devrait être localisé auprès d'un usager concerné. Accompanying course location: Localisation du parcours This course is located by: Localisé auprès de This course has a temporarily location: Localisation temporaire -Choose a person to locate by: Localiser auprès d'une personne concernée +Choose a person to locate by: Localiser auprès d'un usager concerné Associate at least one member with an household, and set an address to this household: Associez au moins un membre du parcours à un ménage, et indiquez une adresse à ce ménage. Locate by: Localiser auprès de fix it: Compléter @@ -884,7 +884,7 @@ Household configuration: Gestion des ménages # accompanying course work Accompanying Course Actions: Actions d'accompagnements Accompanying Course Action: Action d'accompagnement -Are you sure you want to remove this work of the accompanying period %name% ?: Êtes-vous sûr de vouloir supprimer cette action de la période d'accompagnement %name% ? +Are you sure you want to remove this work of the accompanying period %name% ?: Êtes-vous sûr de vouloir supprimer cette action du parcours d'accompagnement %name% ? The accompanying period work has been successfully removed.: L'action d'accompagnement a été supprimée. accompanying_course_work: create: Créer une action @@ -908,6 +908,7 @@ accompanying_course_work: remove: Supprimer une action d'accompagnement social_evaluation: Évaluation private_comment: Commentaire privé + timeSpent: Temps de rédaction # @@ -915,37 +916,37 @@ Person addresses: Adresses de résidence Household addresses: Adresses de domicile Insert an address: Insérer une adresse see social issues: Voir les problématiques sociales -see persons associated: Voir les personnes concernées +see persons associated: Voir les usagers concernés docgen: Accompanying Period basic: "Parcours d'accompagnement (basique)" Accompanying period work: "Action d'accompagnement" Accompanying period work context: "Evaluation des actions d'accompagnement" - Main person: Personne principale - person 1: Première personne - person 2: Seconde personne - Ask for main person: Demander à l'utilisateur de préciser la personne principale - Ask for person 1: Demander à l'utilisateur de préciser la première personne - Ask for person 2: Demander à l'utilisateur de préciser la seconde personne + Main person: Usager principal + person 1: Premièr usager + person 2: Second usager + Ask for main person: Demander à l'utilisateur de préciser l'usager principal + Ask for person 1: Demander à l'utilisateur de préciser le premièr usager + Ask for person 2: Demander à l'utilisateur de préciser le second usager A basic context for accompanying period: Contexte pour les parcours A context for accompanying period work: Contexte pour les actions d'accompagnement A context for accompanying period work evaluation: Contexte pour les évaluations dans les actions d'accompagnement - Person basic: Personne (basique) - A basic context for person: Contexte pour les personnes + Person basic: Usager (basique) + A basic context for person: Contexte pour les usagers Label for third party: Label à afficher aux utilisateurs Document title: Titre du document généré period_notification: period_designated_subject: Vous êtes référent d'un parcours d'accompagnement You are designated to a new period: Vous avez été désigné référent d'un parcours d'accompagnement. - Persons are: Les personnes concernées sont les suivantes + Persons are: Les usagers concernés sont les suivantes Social issues are: Les problématiques sociales renseignées sont les suivantes See it online: Visualisez le parcours en ligne - Person locating period has moved: La personne qui localise un parcours a déménagé + Person locating period has moved: L'usager qui localise un parcours a déménagé -You are getting a notification for a period which does not exists any more: Cette notification ne correspond pas à une période d'accompagnement valide. -You are getting a notification for a period you are not allowed to see: La notification fait référence à une période d'accompagnement à laquelle vous n'avez pas accès. -This is the minimal period details: Période d'accompagnement n° +You are getting a notification for a period which does not exists any more: Cette notification ne correspond pas à un parcours d'accompagnement valide. +You are getting a notification for a period you are not allowed to see: La notification fait référence à un parcours d'accompagnement à laquelle vous n'avez pas accès. +This is the minimal period details: Parcours d'accompagnement n° household_composition: No composition yet: Aucune composition familiale renseignée @@ -1009,7 +1010,7 @@ export: person: by_household_composition: Household composition: Composition du ménage - Group course by household composition: Grouper les personnes par composition familiale + Group course by household composition: Grouper les usagers par composition familiale Calc date: Date de calcul de la composition du ménage course: by_referrer: @@ -1053,13 +1054,13 @@ export: Filtered by person's geographical unit (based on address) computed at %datecalc%, only %units%: Filtré par unité géographique (sur base de l'adresse), calculé le %datecalc%, seulement %units% person: by_composition: - Filter by household composition: Filtrer les personnes par composition du ménage + Filter by household composition: Filtrer les usagers par composition du ménage Accepted compositions: Composition de ménages Date calc: Date de calcul 'Filtered by composition at %date%: only %compositions%': 'Filtré par composition du ménage, le %date%, seulement %compositions%' by_no_composition: - Filter persons without household composition: Filtrer les personnes sans composition de ménage (ni ménage) - Persons filtered by no composition at %date%: Uniquement les personnes sans composition de ménage à la date du %date% + Filter persons without household composition: Filtrer les usagers sans composition de ménage (ni ménage) + Persons filtered by no composition at %date%: Uniquement les usagers sans composition de ménage à la date du %date% Date calc: Date de calcul by_address_ref_status: Filter by person's address ref status: Filtrer par comparaison avec l'adresse de référence @@ -1083,11 +1084,11 @@ export: 'Filtered by creator job: only %jobs%': 'Filtré par métier du créateur: seulement %jobs%' list: person_with_acp: - List peoples having an accompanying period: Liste des personnes ayant un parcours d'accompagnement - Create a list of people having an accompaying periods, according to various filters.: Génère une liste des personnes ayant un parcours d'accompagnement, selon différents critères liés au parcours ou à l'usager + List peoples having an accompanying period: Liste des usagers ayant un parcours d'accompagnement + Create a list of people having an accompaying periods, according to various filters.: Génère une liste des usagers ayant un parcours d'accompagnement, selon différents critères liés au parcours ou à l'usager acp: - List of accompanying periods: Liste de périodes d'accompagnements - Generate a list of accompanying periods, filtered on different parameters.: Génère une liste des périodes d'accompagnement, filtrée sur différents paramètres. + List of accompanying periods: Liste des parcours d'accompagnements + Generate a list of accompanying periods, filtered on different parameters.: Génère une liste des parcours d'accompagnement, filtrée sur différents paramètres. Date of calculation for associated elements: Date de calcul des éléments associés The associated referree, localisation, and other elements will be valid at this date: Les éléments associés, comme la localisation, le référent et d'autres éléments seront valides à cette date id: Identifiant du parcours @@ -1114,8 +1115,8 @@ export: locationPersonId: Identifiant de l'usager auprès duquel le parcours est localisé acpaddress_fieldscountry: Pays de l'adresse isRequestorPerson: Le demandeur est-il un usager ? - requestorPersonId: Identifiant du demandeur personne - acprequestorPerson: Nom du demandeur personne + requestorPersonId: Identifiant du demandeur usager + acprequestorPerson: Nom du demandeur usager scopes: Services socialIssues: Problématiques sociales eval: @@ -1146,6 +1147,7 @@ export: updatedAt: Date de modification createdBy: Créé par updatedBy: Modifié par + timeSpent: Temps de rédaction (minutes) acpw: List of accompanying period works: Liste des actions List description: Génère une liste des actions d'accompagnement, filtrée sur différents paramètres. diff --git a/src/Bundle/ChillPersonBundle/translations/validators.fr.yml b/src/Bundle/ChillPersonBundle/translations/validators.fr.yml index 496a84921..f005755b1 100644 --- a/src/Bundle/ChillPersonBundle/translations/validators.fr.yml +++ b/src/Bundle/ChillPersonBundle/translations/validators.fr.yml @@ -10,7 +10,7 @@ 'Opening date can not be null': 'La date d''ouverure ne peut être nulle' 'Closing date is not valid': 'La date de fermeture n''est pas valide' 'Closing date can not be null': 'La date de fermeture ne peut être nulle' -The date of closing is before the date of opening: La période de fermeture est avant la période d'ouverture +The date of closing is before the date of opening: La date de fermeture est avant la date d'ouverture The closing date must be later than the date of creation: La date de clôture doit être postérieure à la date de création du parcours The birthdate must be before %date%: La date de naissance doit être avant le %date% 'Invalid phone number: it should begin with the international prefix starting with "+", hold only digits and be smaller than 20 characters. Ex: +33123456789': 'Numéro de téléphone invalide: il doit commencer par le préfixe international précédé de "+", ne comporter que des chiffres et faire moins de 20 caractères. Ex: +31623456789' @@ -47,19 +47,19 @@ household: max_holder_overflowed: Il ne peut y avoir plus de deux titulaires simultanément. Or, avec cette modification, ce nombre sera dépassé entre le {{ start }} et le {{ end }}. household_membership: The end date must be after start date: La date de la fin de l'appartenance doit être postérieure à la date de début. - Person with membership covering: Une personne ne peut pas appartenir à deux ménages simultanément. Or, avec cette modification, %person_name% appartiendrait à %nbHousehold% ménages à partir du %from%. + Person with membership covering: Un usager ne peut pas appartenir à deux ménages simultanément. Or, avec cette modification, %person_name% appartiendrait à %nbHousehold% ménages à partir du %from%. # Accompanying period '{{ name }} is already associated to this accompanying course.': '{{ name }} est déjà associé à ce parcours.' A course must contains at least one social issue: 'Un parcours doit être associé à au moins une problématique sociale' A course must be associated to at least one scope: 'Un parcours doit être associé à au moins un service' -The social %name% issue cannot be deleted because it is associated with an activity or an action: 'La problématique sociale "%name%" ne peut pas être supprimée car elle est associée à une activité ou une action' +The social %name% issue cannot be deleted because it is associated with an activity or an action: 'La problématique sociale "%name%" ne peut pas être supprimée car elle est associée à un échange ou une action' A confidential parcours must have a referrer: 'Un parcours confidentiel doit avoir un référent' Only the referrer can change the confidentiality of a parcours: 'Seul le référent peut modifier la confidentialité' # resource You must associate at least one entity: Associez un usager, un tiers ou indiquez une description libre -You cannot associate a resource with the same person: Vous ne pouvez pas ajouter la personne elle-même en tant que ressource. +You cannot associate a resource with the same person: Vous ne pouvez pas ajouter l'usager lui-même en tant que ressource. #location The period must remain located: 'Un parcours doit être localisé' @@ -67,7 +67,10 @@ The person where the course is located must be associated to the course. Change #relationship relationship: - duplicate: Une relation de filiation existe déjà entre ces 2 personnes + duplicate: Une relation de filiation existe déjà entre ces 2 usagers person_creation: If you want to create an household, an address is required: Pour la création d'un ménage, une adresse est requise + +accompanying_course_work: + The endDate should be greater or equal than the start date: La date de fin doit être égale ou supérieure à la date de début diff --git a/src/Bundle/ChillReportBundle/Export/Export/ReportList.php b/src/Bundle/ChillReportBundle/Export/Export/ReportList.php index d06ebb0f6..21606d807 100644 --- a/src/Bundle/ChillReportBundle/Export/Export/ReportList.php +++ b/src/Bundle/ChillReportBundle/Export/Export/ReportList.php @@ -158,7 +158,7 @@ class ReportList implements ExportElementValidatedInterface, ListInterface ); } - public function getLabels($key, array $values, $data): Closure + public function getLabels($key, array $values, $data) { switch ($key) { case 'person_birthdate': @@ -248,7 +248,7 @@ class ReportList implements ExportElementValidatedInterface, ListInterface ->getRepository(\Chill\MainBundle\Entity\Country::class); // load all countries in a single query - $countryRepository->findBy(['countryCode' => $values]); + $countryRepository->findBy(['countryCode' => $values]); return function ($value) use ($key, $countryRepository) { if ('_header' === $value) { @@ -541,7 +541,7 @@ class ReportList implements ExportElementValidatedInterface, ListInterface . ' | ' . $label; } - if ('_other' === $slugChoice && $cfType->isChecked($cf, $choiceSlug, $decoded)) { + if ('_other' === $slugChoice && $cfType->isChecked($cf, $slugChoice, $decoded)) { return $cfType->extractOtherValue($cf, $decoded); } diff --git a/src/Bundle/ChillReportBundle/Tests/Timeline/TimelineProviderTest.php b/src/Bundle/ChillReportBundle/Tests/Timeline/TimelineProviderTest.php index 6091c51a8..9f39fb87e 100644 --- a/src/Bundle/ChillReportBundle/Tests/Timeline/TimelineProviderTest.php +++ b/src/Bundle/ChillReportBundle/Tests/Timeline/TimelineProviderTest.php @@ -74,7 +74,7 @@ final class TimelineProviderTest extends WebTestCase $report = (new Report()) ->setUser(self::$em->getRepository(\Chill\MainBundle\Entity\User::class) - ->findOneByUsername('center a_social')) + ->findOneByUsername('center a_social')) ->setDate(new DateTime('2015-05-02')) ->setPerson($this->person) ->setCFGroup($this->getHousingCustomFieldsGroup()) @@ -92,7 +92,7 @@ final class TimelineProviderTest extends WebTestCase { //static::$em->refresh($this->person); //static::$em->refresh($this->report); - // static::$em->remove($this->person); + // static::$em->remove($this->person); //static::$em->remove($this->report); } diff --git a/src/Bundle/ChillReportBundle/translations/messages.fr.yml b/src/Bundle/ChillReportBundle/translations/messages.fr.yml index 9cd2d5d8c..cfde70521 100644 --- a/src/Bundle/ChillReportBundle/translations/messages.fr.yml +++ b/src/Bundle/ChillReportBundle/translations/messages.fr.yml @@ -8,7 +8,7 @@ 'Update the report': 'Modifier le rapport' 'Report list': 'Liste des rapports' Details: Détails -Person: Personne +Person: Usager Scope: Cercle Date: Date User: Utilisateur @@ -17,7 +17,7 @@ User: Utilisateur Report data: Données du rapport 'Report view : %name%': 'Rapport : %name%' Report: Rapport -No report registered for this person.: Aucun rapport pour cette personne. +No report registered for this person.: Aucun rapport pour cet usager. #Flash messages 'Success : report created!': "Succès : le rapport a bien été créé !" @@ -52,4 +52,4 @@ CHILL_REPORT_LISTS: Liste des rapports "Report's question": Question du rapport Filter by report's date: Filtrer par date de rapport Report is after this date: Rapports après cette date -Report is before this date: Rapports avant cette date \ No newline at end of file +Report is before this date: Rapports avant cette date diff --git a/src/Bundle/ChillTaskBundle/Controller/TaskController.php b/src/Bundle/ChillTaskBundle/Controller/TaskController.php index 68ae65c99..6525d5572 100644 --- a/src/Bundle/ChillTaskBundle/Controller/TaskController.php +++ b/src/Bundle/ChillTaskBundle/Controller/TaskController.php @@ -83,7 +83,7 @@ class TaskController extends AbstractController if (null === $task) { throw $this->createNotFoundException("task with id '{$taskId}' and type " - . "'{$type}' does not exists"); + . "'{$kind}' does not exists"); } $workflow = $registry->get($task); diff --git a/src/Bundle/ChillTaskBundle/translations/messages.fr.yml b/src/Bundle/ChillTaskBundle/translations/messages.fr.yml index 8d1d2b39d..d437baac2 100644 --- a/src/Bundle/ChillTaskBundle/translations/messages.fr.yml +++ b/src/Bundle/ChillTaskBundle/translations/messages.fr.yml @@ -14,7 +14,7 @@ Scope: Cercle "Unit": "" Task: Tâche Details: Détails -Person: Personne +Person: Usager Date: Date Dates: Dates User: Utilisateur @@ -49,7 +49,7 @@ User: Utilisateur "Tasks for {{ name }}": "Tâches pour {{ name }}" "No description": "Pas de description" "No dates specified": "Dates non spécifiées" -"No one assignee": "Aucune personne assignée" +"No one assignee": "Aucune usager assigné" "Task types": Types de tâches Days: Jour(s) Weeks: Semaine(s) @@ -59,7 +59,7 @@ Filter the tasks: Filtrer les tâches Filter: Filtrer Any user: Tous les utilisateurs Unassigned: Non assigné -Associated person: Personne associée +Associated person: Usager associé Default task: Tâche par défaut Not assigned: Aucun utilisateur assigné For person: Pour @@ -117,5 +117,5 @@ CHILL_TASK_TASK_DELETE: Supprimer une tâche CHILL_TASK_TASK_SHOW: Voir une tâche CHILL_TASK_TASK_UPDATE: Modifier une tâche CHILL_TASK_TASK_CREATE_FOR_COURSE: Créer une tâche pour un parcours -CHILL_TASK_TASK_CREATE_FOR_PERSON: Créer une tâche pour une personne +CHILL_TASK_TASK_CREATE_FOR_PERSON: Créer une tâche pour un usager diff --git a/src/Bundle/ChillThirdPartyBundle/DataFixtures/ORM/LoadThirdParty.php b/src/Bundle/ChillThirdPartyBundle/DataFixtures/ORM/LoadThirdParty.php index 058fa119d..6b40f01b9 100644 --- a/src/Bundle/ChillThirdPartyBundle/DataFixtures/ORM/LoadThirdParty.php +++ b/src/Bundle/ChillThirdPartyBundle/DataFixtures/ORM/LoadThirdParty.php @@ -66,22 +66,6 @@ class LoadThirdParty extends Fixture implements DependentFixtureInterface $manager->flush(); } - private function createAddress(): ObjectSet - { - $loader = new NativeLoader(); - - return $loader->loadData([ - Address::class => [ - 'address1' => [ - 'name' => '', - 'telephone' => $this->phoneNumberUtil->getExampleNumber('FR'), - 'email' => '', - 'comment' => '', - ], - ], - ]); - } - private function getCenters(): Iterator { $references = array_map( diff --git a/src/Bundle/ChillThirdPartyBundle/Entity/ThirdParty.php b/src/Bundle/ChillThirdPartyBundle/Entity/ThirdParty.php index 966e40bd1..ca24d2442 100644 --- a/src/Bundle/ChillThirdPartyBundle/Entity/ThirdParty.php +++ b/src/Bundle/ChillThirdPartyBundle/Entity/ThirdParty.php @@ -23,6 +23,7 @@ use DateTimeImmutable; use DateTimeInterface; use Doctrine\Common\Collections\ArrayCollection; use Doctrine\Common\Collections\Collection; +use Doctrine\Common\Collections\ReadableCollection; use Doctrine\ORM\Mapping as ORM; use libphonenumber\PhoneNumber; use Symfony\Component\Serializer\Annotation\Context; @@ -153,7 +154,7 @@ class ThirdParty implements TrackCreationInterface, TrackUpdateInterface * @ORM\OneToMany(targetEntity="Chill\ThirdPartyBundle\Entity\ThirdParty", mappedBy="parent", * cascade={"persist"}, orphanRemoval=true) * - * @var Collection|ThirdParty[] + * @var Collection<(int|string), ThirdParty> * @Assert\Valid(traverse=true) */ private Collection $children; @@ -400,7 +401,7 @@ class ThirdParty implements TrackCreationInterface, TrackUpdateInterface /** * Get the children where active = true. */ - public function getActiveChildren(): Collection + public function getActiveChildren(): ReadableCollection { return $this->children->filter(static fn (ThirdParty $tp) => $tp->getActive()); } diff --git a/src/Bundle/ChillThirdPartyBundle/Form/ChoiceLoader/ThirdPartyChoiceLoader.php b/src/Bundle/ChillThirdPartyBundle/Form/ChoiceLoader/ThirdPartyChoiceLoader.php index 5c990c9ad..7d5bded0f 100644 --- a/src/Bundle/ChillThirdPartyBundle/Form/ChoiceLoader/ThirdPartyChoiceLoader.php +++ b/src/Bundle/ChillThirdPartyBundle/Form/ChoiceLoader/ThirdPartyChoiceLoader.php @@ -23,6 +23,8 @@ use function in_array; /** * Lazy load third parties. + * + * @deprecated As the PickThirdPartyType is deprecated, this should not be in use */ class ThirdPartyChoiceLoader implements ChoiceLoaderInterface { @@ -57,10 +59,6 @@ class ThirdPartyChoiceLoader implements ChoiceLoaderInterface $choices = []; foreach ($values as $value) { - if (empty($value)) { - continue; - } - $party = $this->partyRepository->find($value); if (false === in_array($this->center, $party->getCenters()->toArray(), true)) { diff --git a/src/Bundle/ChillThirdPartyBundle/Form/Type/PickThirdPartyType.php b/src/Bundle/ChillThirdPartyBundle/Form/Type/PickThirdPartyType.php index 259fb63f4..ed4b3c1e7 100644 --- a/src/Bundle/ChillThirdPartyBundle/Form/Type/PickThirdPartyType.php +++ b/src/Bundle/ChillThirdPartyBundle/Form/Type/PickThirdPartyType.php @@ -29,6 +29,10 @@ use function array_merge; use function count; use function is_array; +/** + * @deprecated use the @link{PickThirdPartyDynamicType::class} + * @note do remove ThirdPartyChoiceLoader if this class is removed + */ class PickThirdPartyType extends AbstractType { /** diff --git a/src/Bundle/ChillThirdPartyBundle/Form/Type/PickThirdPartyTypeCategoryType.php b/src/Bundle/ChillThirdPartyBundle/Form/Type/PickThirdPartyTypeCategoryType.php index b8b19d1d6..eb7966084 100644 --- a/src/Bundle/ChillThirdPartyBundle/Form/Type/PickThirdPartyTypeCategoryType.php +++ b/src/Bundle/ChillThirdPartyBundle/Form/Type/PickThirdPartyTypeCategoryType.php @@ -88,22 +88,12 @@ class PickThirdPartyTypeCategoryType extends \Symfony\Component\Form\AbstractTyp return ChoiceType::class; } - public function reverseTransform($value) + private function reverseTransform($value) { if (null === $value) { return null; } - if (is_array($value)) { - $r = []; - - foreach ($value as $v) { - $r[] = $this->transform($v); - } - - return $r; - } - if ($value instanceof ThirdPartyCategory) { return 'category:' . $value->getId(); } diff --git a/src/Bundle/ChillThirdPartyBundle/Form/Type/PickThirdpartyDynamicType.php b/src/Bundle/ChillThirdPartyBundle/Form/Type/PickThirdpartyDynamicType.php index ada4064eb..eb9e7e5ea 100644 --- a/src/Bundle/ChillThirdPartyBundle/Form/Type/PickThirdpartyDynamicType.php +++ b/src/Bundle/ChillThirdPartyBundle/Form/Type/PickThirdpartyDynamicType.php @@ -18,6 +18,7 @@ use Symfony\Component\Form\FormInterface; use Symfony\Component\Form\FormView; use Symfony\Component\OptionsResolver\OptionsResolver; use Symfony\Component\Serializer\Normalizer\DenormalizerInterface; +use Symfony\Component\Serializer\Normalizer\NormalizerInterface; use Symfony\Component\Serializer\SerializerInterface; /** @@ -27,12 +28,15 @@ class PickThirdpartyDynamicType extends AbstractType { private DenormalizerInterface $denormalizer; + private NormalizerInterface $normalizer; + private SerializerInterface $serializer; - public function __construct(DenormalizerInterface $denormalizer, SerializerInterface $serializer) + public function __construct(DenormalizerInterface $denormalizer, SerializerInterface $serializer, NormalizerInterface $normalizer) { $this->denormalizer = $denormalizer; $this->serializer = $serializer; + $this->normalizer = $normalizer; } public function buildForm(FormBuilderInterface $builder, array $options) @@ -45,6 +49,11 @@ class PickThirdpartyDynamicType extends AbstractType $view->vars['multiple'] = $options['multiple']; $view->vars['types'] = ['thirdparty']; $view->vars['uniqid'] = uniqid('pick_user_dyn'); + $view->vars['suggested'] = []; + + foreach ($options['suggested'] as $tp) { + $view->vars['suggested'][] = $this->normalizer->normalize($tp, 'json', ['groups' => 'read']); + } } public function configureOptions(OptionsResolver $resolver) @@ -52,7 +61,8 @@ class PickThirdpartyDynamicType extends AbstractType $resolver ->setDefault('multiple', false) ->setAllowedTypes('multiple', ['bool']) - ->setDefault('compound', false); + ->setDefault('compound', false) + ->setDefault('suggested', []); } public function getBlockPrefix() diff --git a/src/Bundle/ChillThirdPartyBundle/Repository/ThirdPartyRepository.php b/src/Bundle/ChillThirdPartyBundle/Repository/ThirdPartyRepository.php index 6739621ed..76e15ef17 100644 --- a/src/Bundle/ChillThirdPartyBundle/Repository/ThirdPartyRepository.php +++ b/src/Bundle/ChillThirdPartyBundle/Repository/ThirdPartyRepository.php @@ -33,9 +33,8 @@ final class ThirdPartyRepository implements ObjectRepository /** * count amongst parties associated to $centers, with $terms parameters. * - * @param type $terms */ - public function countByMemberOfCenters(array $centers, $terms = []): int + public function countByMemberOfCenters(array $centers, array $terms = []): int { $qb = $this->buildQuery($centers, $terms); $qb->select('COUNT(tp)'); @@ -181,7 +180,7 @@ final class ThirdPartyRepository implements ObjectRepository if (array_key_exists('name', $terms) || array_key_exists('_default', $terms)) { $term = $terms['name'] ?? $terms['_default']; - if (empty($term)) { + if (null === $term || '' === $term) { return; } $qb->andWhere($qb->expr()->like('UNACCENT(LOWER(tp.name))', 'UNACCENT(LOWER(:name))')); diff --git a/src/Bundle/ChillThirdPartyBundle/Search/ThirdPartySearch.php b/src/Bundle/ChillThirdPartyBundle/Search/ThirdPartySearch.php index 22ae23014..2c7948a2d 100644 --- a/src/Bundle/ChillThirdPartyBundle/Search/ThirdPartySearch.php +++ b/src/Bundle/ChillThirdPartyBundle/Search/ThirdPartySearch.php @@ -15,6 +15,7 @@ use Chill\MainBundle\Pagination\PaginatorFactory; use Chill\MainBundle\Search\SearchInterface; use Chill\MainBundle\Security\Authorization\AuthorizationHelper; use Chill\ThirdPartyBundle\Entity\ThirdParty; +use Chill\ThirdPartyBundle\Repository\ThirdPartyRepository; use Chill\ThirdPartyBundle\Security\Voter\ThirdPartyVoter; use Doctrine\ORM\EntityManagerInterface; use Symfony\Component\Security\Core\Authentication\Token\Storage\TokenStorageInterface; @@ -47,16 +48,20 @@ class ThirdPartySearch implements SearchInterface */ protected $tokenStorage; + private ThirdPartyRepository $thirdPartyRepository; + public function __construct( EntityManagerInterface $em, TokenStorageInterface $tokenStorage, AuthorizationHelper $authorizationHelper, - PaginatorFactory $paginatorFactory + PaginatorFactory $paginatorFactory, + ThirdPartyRepository $thirdPartyRepository ) { $this->em = $em; $this->tokenStorage = $tokenStorage; $this->authorizationHelper = $authorizationHelper; $this->paginatorFactory = $paginatorFactory; + $this->thirdPartyRepository = $thirdPartyRepository; } public function getOrder(): int @@ -74,7 +79,7 @@ class ThirdPartySearch implements SearchInterface $centers = $this->authorizationHelper ->getReachableCenters( $this->tokenStorage->getToken()->getUser(), - new Role(ThirdPartyVoter::SHOW) + ThirdPartyVoter::SHOW ); $total = $this->count($centers, $terms); $paginator = $this->paginatorFactory->create($total); @@ -84,7 +89,7 @@ class ThirdPartySearch implements SearchInterface if ('json' === $format) { return [ - 'results' => $this->em->getRepository(ThirdParty::class) + 'results' => $this->thirdPartyRepository ->findByMemberOfCenters( $centers, $start, @@ -95,6 +100,8 @@ class ThirdPartySearch implements SearchInterface 'more' => $paginator->hasNextPage(), ]; } + // format "html" + throw new \UnexpectedValueException("format html not supported"); } public function supports($domain, $format): bool @@ -104,7 +111,7 @@ class ThirdPartySearch implements SearchInterface protected function count($centers, $terms): int { - return $this->em->getRepository(ThirdParty::class) + return $this->thirdPartyRepository ->countByMemberOfCenters($centers, $terms); } } diff --git a/src/Bundle/ChillThirdPartyBundle/Serializer/Normalizer/ThirdPartyNormalizer.php b/src/Bundle/ChillThirdPartyBundle/Serializer/Normalizer/ThirdPartyNormalizer.php index 5f4cd1a9a..7b2721511 100644 --- a/src/Bundle/ChillThirdPartyBundle/Serializer/Normalizer/ThirdPartyNormalizer.php +++ b/src/Bundle/ChillThirdPartyBundle/Serializer/Normalizer/ThirdPartyNormalizer.php @@ -15,6 +15,7 @@ use Chill\MainBundle\Templating\TranslatableStringHelperInterface; use Chill\ThirdPartyBundle\Entity\ThirdParty; use Chill\ThirdPartyBundle\Entity\ThirdPartyCategory; use Chill\ThirdPartyBundle\Templating\Entity\ThirdPartyRender; +use Symfony\Component\Serializer\Exception\UnexpectedValueException; use Symfony\Component\Serializer\Normalizer\NormalizerAwareInterface; use Symfony\Component\Serializer\Normalizer\NormalizerAwareTrait; use Symfony\Component\Serializer\Normalizer\NormalizerInterface; @@ -35,12 +36,12 @@ class ThirdPartyNormalizer implements NormalizerAwareInterface, NormalizerInterf $this->translatableStringHelper = $translatableStringHelper; } - /** - * @param ThirdParty $thirdParty - * @param string|null $format - */ public function normalize($thirdParty, $format = null, array $context = []) { + if (!$thirdParty instanceof ThirdParty) { + throw new UnexpectedValueException(); + } + return [ 'type' => 'thirdparty', 'firstname' => $thirdParty->getFirstname(), diff --git a/src/Bundle/ChillThirdPartyBundle/Templating/Entity/ThirdPartyRender.php b/src/Bundle/ChillThirdPartyBundle/Templating/Entity/ThirdPartyRender.php index 7e708f757..ece12f5c9 100644 --- a/src/Bundle/ChillThirdPartyBundle/Templating/Entity/ThirdPartyRender.php +++ b/src/Bundle/ChillThirdPartyBundle/Templating/Entity/ThirdPartyRender.php @@ -12,12 +12,18 @@ declare(strict_types=1); namespace Chill\ThirdPartyBundle\Templating\Entity; use Chill\MainBundle\Templating\Entity\AbstractChillEntityRender; +use Chill\MainBundle\Templating\Entity\BoxUtilsChillEntityRenderTrait; +use Chill\MainBundle\Templating\Entity\ChillEntityRenderInterface; use Chill\MainBundle\Templating\TranslatableStringHelper; use Chill\ThirdPartyBundle\Entity\ThirdParty; use Symfony\Component\Templating\EngineInterface; -class ThirdPartyRender extends AbstractChillEntityRender +/** + * @implements ChillEntityRenderInterface + */ +class ThirdPartyRender implements ChillEntityRenderInterface { + use BoxUtilsChillEntityRenderTrait; protected EngineInterface $engine; protected TranslatableStringHelper $translatableStringHelper; @@ -30,9 +36,6 @@ class ThirdPartyRender extends AbstractChillEntityRender $this->translatableStringHelper = $translatableStringHelper; } - /** - * @param ThirdParty $entity - */ public function renderBox($entity, array $options): string { $params = [ @@ -59,9 +62,6 @@ class ThirdPartyRender extends AbstractChillEntityRender $this->getDefaultClosingBox(); } - /** - * @param ThirdParty $entity - */ public function renderString($entity, array $options): string { if ($entity->getCivility() !== null) { diff --git a/src/Bundle/ChillThirdPartyBundle/config/services/search.yaml b/src/Bundle/ChillThirdPartyBundle/config/services/search.yaml index 62b5dd205..08f8f5ad8 100644 --- a/src/Bundle/ChillThirdPartyBundle/config/services/search.yaml +++ b/src/Bundle/ChillThirdPartyBundle/config/services/search.yaml @@ -1,10 +1,7 @@ services: Chill\ThirdPartyBundle\Search\ThirdPartySearch: - arguments: - $em: '@Doctrine\ORM\EntityManagerInterface' - $tokenStorage: '@Symfony\Component\Security\Core\Authentication\Token\Storage\TokenStorageInterface' - $authorizationHelper: '@Chill\MainBundle\Security\Authorization\AuthorizationHelper' - $paginatorFactory: '@Chill\MainBundle\Pagination\PaginatorFactory' + autowire: true + autoconfigure: true tags: - { name: 'chill.search', alias: '3party' } diff --git a/src/Bundle/ChillThirdPartyBundle/migrations/Version20230215175150.php b/src/Bundle/ChillThirdPartyBundle/migrations/Version20230215175150.php index 223c9aeae..fefe1c339 100644 --- a/src/Bundle/ChillThirdPartyBundle/migrations/Version20230215175150.php +++ b/src/Bundle/ChillThirdPartyBundle/migrations/Version20230215175150.php @@ -25,7 +25,7 @@ final class Version20230215175150 extends AbstractMigration implements Container public function down(Schema $schema): void { $this->addSql('ALTER TABLE chill_3party.third_party DROP profession'); -// $this->addSql('ALTER TABLE chill_3party.third_party ADD profession_id INT DEFAULT NULL'); + // $this->addSql('ALTER TABLE chill_3party.third_party ADD profession_id INT DEFAULT NULL'); } public function getDescription(): string diff --git a/src/Bundle/ChillWopiBundle/src/Controller/Convert.php b/src/Bundle/ChillWopiBundle/src/Controller/Convert.php index aced2d0c5..b3697aafd 100644 --- a/src/Bundle/ChillWopiBundle/src/Controller/Convert.php +++ b/src/Bundle/ChillWopiBundle/src/Controller/Convert.php @@ -93,14 +93,8 @@ class Convert return new Response($response->getContent(), Response::HTTP_OK, [ 'Content-Type' => 'application/pdf', ]); - } catch (ClientExceptionInterface $exception) { - return $this->onConversionFailed($url, $response); - } catch (RedirectionExceptionInterface $e) { - return $this->onConversionFailed($url, $response); - } catch (ServerExceptionInterface $e) { - return $this->onConversionFailed($url, $response); - } catch (TransportExceptionInterface $e) { - return $this->onConversionFailed($url, $response); + } catch (ClientExceptionInterface|TransportExceptionInterface|RedirectionExceptionInterface|ServerExceptionInterface $exception) { + return $this->onConversionFailed($url, $exception->getResponse()); } } diff --git a/src/Bundle/ChillWopiBundle/src/Controller/Editor.php b/src/Bundle/ChillWopiBundle/src/Controller/Editor.php index d19a98052..ab4276ec4 100644 --- a/src/Bundle/ChillWopiBundle/src/Controller/Editor.php +++ b/src/Bundle/ChillWopiBundle/src/Controller/Editor.php @@ -20,6 +20,7 @@ use Chill\WopiBundle\Service\Controller\ResponderInterface; use Exception; use Lexik\Bundle\JWTAuthenticationBundle\Services\JWTTokenManagerInterface; use loophp\psr17\Psr17Interface; +use Symfony\Component\HttpFoundation\Request; use Symfony\Component\HttpFoundation\Response; use Symfony\Component\HttpKernel\Exception\AccessDeniedHttpException; use Symfony\Component\HttpKernel\Exception\NotFoundHttpException; @@ -81,7 +82,7 @@ final class Editor $this->router = $router; } - public function __invoke(string $fileId): Response + public function __invoke(string $fileId, Request $request): Response { if (null === $user = $this->security->getUser()) { throw new AccessDeniedHttpException('Please authenticate to access this feature'); @@ -104,7 +105,8 @@ final class Editor $this->engine ->render('@ChillWopi/Editor/stored_object_failure.html.twig') ); - } elseif (StoredObject::STATUS_PENDING === $storedObject->getStatus()) { + } + if (StoredObject::STATUS_PENDING === $storedObject->getStatus()) { return new Response( $this->engine ->render('@ChillWopi/Editor/stored_object_pending.html.twig', [ @@ -150,6 +152,7 @@ final class Editor UrlGeneratorInterface::ABSOLUTE_URL ), 'closebutton' => 1, + 'lang' => $request->getLocale(), ] ) ); diff --git a/src/Bundle/ChillWopiBundle/src/Resources/views/Editor/page.html.twig b/src/Bundle/ChillWopiBundle/src/Resources/views/Editor/page.html.twig index 6534dfd30..c96833aa1 100644 --- a/src/Bundle/ChillWopiBundle/src/Resources/views/Editor/page.html.twig +++ b/src/Bundle/ChillWopiBundle/src/Resources/views/Editor/page.html.twig @@ -25,6 +25,7 @@
      +
      diff --git a/src/Bundle/ChillWopiBundle/src/Service/Wopi/ChillDocumentManager.php b/src/Bundle/ChillWopiBundle/src/Service/Wopi/ChillDocumentManager.php index 19b4dc9b4..ce75cafa8 100644 --- a/src/Bundle/ChillWopiBundle/src/Service/Wopi/ChillDocumentManager.php +++ b/src/Bundle/ChillWopiBundle/src/Service/Wopi/ChillDocumentManager.php @@ -76,7 +76,7 @@ final class ChillDocumentManager implements DocumentManagerInterface $document->setFilename($data['name']); $this->entityManager->persist($document); - $this->entityManager->flush($document); + $this->entityManager->flush(); // TODO : Ask proper mapping. // Available: basename, name, extension, content, size @@ -134,7 +134,7 @@ final class ChillDocumentManager implements DocumentManagerInterface */ public function getCreationDate(Document $document): DateTimeInterface { - return $document->getCreationDate(); + return $document->getCreatedAt() ?? new \DateTimeImmutable('now'); } /** diff --git a/src/Bundle/ChillWopiBundle/src/Service/Wopi/UserManager.php b/src/Bundle/ChillWopiBundle/src/Service/Wopi/UserManager.php index dc030192b..3fb3b544e 100644 --- a/src/Bundle/ChillWopiBundle/src/Service/Wopi/UserManager.php +++ b/src/Bundle/ChillWopiBundle/src/Service/Wopi/UserManager.php @@ -32,7 +32,7 @@ class UserManager implements \ChampsLibres\WopiBundle\Contracts\UserManagerInter return null; } - return (string) $user->getLabel(); + return $user->getLabel(); } public function getUserId(string $accessToken, string $fileId, RequestInterface $request): ?string