diff --git a/.dockerignore b/.dockerignore new file mode 100644 index 0000000..d28de9e --- /dev/null +++ b/.dockerignore @@ -0,0 +1,47 @@ +###> symfony/framework-bundle ### +/.env.local +/.env.local.php +/.env.*.local +/config/secrets/prod/prod.decrypt.private.php +/public/bundles/ +/var/ +/vendor/ +###< symfony/framework-bundle ### + +###> phpunit/phpunit ### +.phpunit.cache/ +coverage/ +###< phpunit/phpunit ### + +###> friendsofphp/php-cs-fixer ### +/.php-cs-fixer.cache +###< friendsofphp/php-cs-fixer ### + +# Editors +/.idea +.vscode + +# Bundles +/public/js/jquery.collection.js +/templates/jquery.collection.html.twig + +# Yarn packages. +node_modules + +# Docker +.data + +# MISC +/*.sql +/data +/src/.preload.php + +# Code coverage and QA reports +public/dev + +# Mac DS_Store +.DS_Store + +# Docker image specific +/docs +/.github/ \ No newline at end of file diff --git a/.env b/.env old mode 100644 new mode 100755 index 44445fd..bad2167 --- a/.env +++ b/.env @@ -1,20 +1,23 @@ ###> symfony/framework-bundle ### APP_ENV=dev APP_SECRET=a216576ec4fb8ccdae78d6915fa7278e +#TRUSTED_PROXIES=127.0.0.0/8,10.0.0.0/8,172.16.0.0/12,192.168.0.0/16 +#TRUSTED_HOSTS='^localhost|example\.com$' ###< symfony/framework-bundle ### ###> symfony/mailer ### -MAILER_DSN=null://null +MAILER_DSN=smtp://bep:password@mail:1025 ###< symfony/mailer ### ###> doctrine/doctrine-bundle ### -DATABASE_URL=mysql://db_user:db_password@127.0.0.1:3306/db_name?serverVersion=5.7 +DATABASE_URL=mysql://bep:password@db:3306/bep?serverVersion=mariadb-10.11.0 ###< doctrine/doctrine-bundle ### # Routing information ROUTE_PROTOCOL=http ROUTE_HOST=localhost -ROUTE_BASE=/ +ROUTE_BASE= +TRUSTED_PROXIES=127.0.0.1 # Piwik PIWIK_ENABLED=false diff --git a/.github/workflows/main.yaml b/.github/workflows/main.yaml new file mode 100644 index 0000000..dabe5f6 --- /dev/null +++ b/.github/workflows/main.yaml @@ -0,0 +1,151 @@ +name: Unit Tests & Tagged Deploy + +# based on: https://docs.docker.com/build/ci/github-actions/multi-platform/#distribute-build-across-multiple-runners + +on: + push: + branches: + - '*' + tags: + - 'v*' + +env: + REGISTRY_IMAGE: dhilsfu/bep + DB_NAME: pipeline_db + DB_USER: pipeline_user + DB_PASSWORD: pipeline_password + + +jobs: + build: + runs-on: ubuntu-latest + strategy: + fail-fast: false + matrix: + platform: + # - linux/386 + - linux/amd64 + # - linux/arm/v5 + - linux/arm/v7 + - linux/arm64 + # - linux/mips64le + # - linux/ppc64le + # - linux/s390x + steps: + - name: Prepare + run: | + platform=${{ matrix.platform }} + echo "PLATFORM_PAIR=${platform//\//-}" >> $GITHUB_ENV + + - name: Checkout source code + uses: actions/checkout@v4 + + - name: Docker meta + id: meta + uses: docker/metadata-action@v5 + with: + images: ${{ env.REGISTRY_IMAGE }} + + - name: Set up QEMU + uses: docker/setup-qemu-action@v3 + + - name: Set up Docker Buildx + uses: docker/setup-buildx-action@v3 + + - name: Login to Docker Hub + uses: docker/login-action@v3 + with: + username: ${{ secrets.DOCKER_HUB_USERNAME }} + password: ${{ secrets.DOCKER_HUB_ACCESS_TOKEN }} + + - name: Build and push by digest + id: build + uses: docker/build-push-action@v5 + with: + context: . + platforms: ${{ matrix.platform }} + labels: ${{ steps.meta.outputs.labels }} + outputs: type=image,name=${{ env.REGISTRY_IMAGE }},push-by-digest=true,name-canonical=true,push=true + cache-from: type=registry,ref=${{ env.REGISTRY_IMAGE }}:buildcache-${{ env.PLATFORM_PAIR }} + cache-to: type=registry,ref=${{ env.REGISTRY_IMAGE }}:buildcache-${{ env.PLATFORM_PAIR }},mode=max + + - name: Shutdown Ubuntu MySQL (SUDO) + run: sudo service mysql stop + + - name: Set up MariaDB + uses: getong/mariadb-action@v1.1 + with: + mysql database: ${{ env.DB_NAME }}_test + mysql user: ${{ env.DB_USER }} + mysql password: ${{ env.DB_PASSWORD }} + + - name: Run Unit Tests + run: | + touch .env.test.local + echo DATABASE_URL="mysql://${{ env.DB_USER }}:${{ env.DB_PASSWORD }}@127.0.0.1:3306/${{ env.DB_NAME }}?serverVersion=mariadb-10.11.0" >> .env.test.local + docker run --rm \ + -v "${GITHUB_WORKSPACE}/.env.test.local":/var/www/html/.env.test.local \ + --network host \ + --platform=${{ matrix.platform }} \ + ${{ env.REGISTRY_IMAGE }}@${{ steps.build.outputs.digest }} make test + + - name: Export digest + run: | + mkdir -p /tmp/digests + digest="${{ steps.build.outputs.digest }}" + touch "/tmp/digests/${digest#sha256:}" + + - name: Upload digest + uses: actions/upload-artifact@v4 + with: + name: digests-${{ env.PLATFORM_PAIR }} + path: /tmp/digests/* + if-no-files-found: error + retention-days: 1 + + push: + runs-on: ubuntu-latest + if: startsWith(github.ref, 'refs/tags/') + needs: + - build + steps: + - name: Download digests + uses: actions/download-artifact@v4 + with: + path: /tmp/digests + pattern: digests-* + merge-multiple: true + + - name: Docker meta + id: meta + uses: docker/metadata-action@v5 + with: + images: ${{ env.REGISTRY_IMAGE }} + + - name: Set up Docker Buildx + uses: docker/setup-buildx-action@v3 + + - name: Login to Docker Hub + uses: docker/login-action@v3 + with: + username: ${{ secrets.DOCKER_HUB_USERNAME }} + password: ${{ secrets.DOCKER_HUB_ACCESS_TOKEN }} + + - name: Create manifest list and push + working-directory: /tmp/digests + run: | + docker buildx imagetools create $(jq -cr '.tags | map("-t " + .) | join(" ")' <<< "$DOCKER_METADATA_OUTPUT_JSON") \ + $(printf '${{ env.REGISTRY_IMAGE }}@sha256:%s ' *) + + - name: Inspect image + run: | + docker buildx imagetools inspect ${{ env.REGISTRY_IMAGE }}:${{ steps.meta.outputs.version }} + + - name: Trigger Gitlab Deploy Job + run: | + curl -X POST \ + --fail \ + -F token=${{ secrets.GITLAB_CI_TOKEN }} \ + -F "ref=main" \ + -F "variables[APP_RELEASE_TAG]=${{github.ref_name}}" \ + https://git.lib.sfu.ca/api/v4/projects/569/trigger/pipeline \ No newline at end of file diff --git a/.gitignore b/.gitignore index 5404f39..c7f40a7 100644 --- a/.gitignore +++ b/.gitignore @@ -8,37 +8,36 @@ /vendor/ ###< symfony/framework-bundle ### -###> symfony/phpunit-bridge ### -.phpunit -.phpunit.result.cache -/phpunit.xml -###< symfony/phpunit-bridge ### - ###> phpunit/phpunit ### -/phpunit.xml -.phpunit.result.cache +.phpunit.cache/ +coverage/ ###< phpunit/phpunit ### ###> friendsofphp/php-cs-fixer ### -/.php-cs-fixer.php /.php-cs-fixer.cache ###< friendsofphp/php-cs-fixer ### +# Editors /.idea -/public/yarn +.vscode + +# Bundles +/public/js/jquery.collection.js /templates/jquery.collection.html.twig -# deployment -/config/deploy.yaml +# Yarn packages. +node_modules -# backups -*.sql +# Docker +.data -# public things managed by other things. -/public/dev -/public/docs -/public/images/blog -/public/js/jquery.collection.js +# MISC +/*.sql /data +/src/.preload.php + +# Code coverage and QA reports +public/dev +# Mac DS_Store .DS_Store \ No newline at end of file diff --git a/.gitmodules b/.gitmodules deleted file mode 100644 index 6b67798..0000000 --- a/.gitmodules +++ /dev/null @@ -1,8 +0,0 @@ -[submodule "deployment"] - path = deployment - url = https://github.com/ubermichael/deployment - branch = main -[submodule "etc"] - path = etc - url = https://github.com/ubermichael/symake - branch = main diff --git a/.php-cs-fixer.dist.php b/.php-cs-fixer.dist.php index 6900fdd..424801a 100644 --- a/.php-cs-fixer.dist.php +++ b/.php-cs-fixer.dist.php @@ -1,11 +1,5 @@ -This source file is subject to the GPL v2, bundled -with this source code in the file LICENSE. -HEADER; - $finder = PhpCsFixer\Finder::create() ->in(__DIR__ . '/src') ->in(__DIR__ . '/tests') @@ -25,8 +19,8 @@ '@PhpCsFixer' => true, '@PSR2' => true, - '@PHP74Migration' => true, - '@PHP74Migration:risky' => true, + '@PHP82Migration' => true, + '@PHP80Migration:risky' => true, 'align_multiline_comment' => [ 'comment_type' => 'all_multiline', @@ -37,14 +31,10 @@ 'backtick_to_shell_exec' => true, 'blank_line_after_namespace' => true, 'blank_line_after_opening_tag' => true, -// 'blank_line_before_statement' => [ -// 'statements' => [ -// 'declare', 'die', 'exit', 'for', 'foreach', 'return', 'try', -// ] -// ], - 'braces' => [ - 'allow_single_line_closure' => true, - 'position_after_functions_and_oop_constructs' => 'same' + + 'curly_braces_position' => [ + 'classes_opening_brace' => 'same_line', + 'functions_opening_brace' => 'same_line', ], 'cast_spaces' => [ @@ -77,9 +67,6 @@ 'import_functions' => false, ], - 'header_comment' => [ - 'header' => $header, - ], 'heredoc_to_nowdoc' => true, 'implode_call' => true, diff --git a/.yarnrc b/.yarnrc deleted file mode 100644 index 0334220..0000000 --- a/.yarnrc +++ /dev/null @@ -1 +0,0 @@ ---modules-folder public/yarn diff --git a/Dockerfile b/Dockerfile new file mode 100644 index 0000000..331130c --- /dev/null +++ b/Dockerfile @@ -0,0 +1,33 @@ +FROM node:21.6-slim AS bep-prod-assets +WORKDIR /app + +RUN apt-get update \ + && apt-get install -y git \ + && npm upgrade -g npm \ + && npm upgrade -g yarn \ + && rm -rf /var/lib/apt/lists/* + +# build js deps +COPY public/package.json public/yarn.lock /app/ + +RUN yarn --production \ + && yarn cache clean + + +FROM dhilsfu/symfony-base:php-8.2-apache AS bep +ENV GIT_REPO=https://github.com/sfu-dhil/bep + +# basic deps installer (no script/plugings) +COPY --chown=www-data:www-data --chmod=775 composer.json composer.lock /var/www/html/ +RUN composer install --no-scripts + +# copy project files and install all symfony deps +COPY --chown=www-data:www-data --chmod=775 . /var/www/html +# copy webpacked js and libs +COPY --chown=www-data:www-data --chmod=775 --from=bep-prod-assets /app/node_modules /var/www/html/public/node_modules + +RUN mkdir -p data/prod data/dev data/test var/cache/prod var/cache/dev var/cache/test var/sessions var/log \ + && chown -R www-data:www-data data var \ + && chmod -R 775 data var \ + && composer install \ + && ./bin/console cache:clear \ No newline at end of file diff --git a/Makefile b/Makefile index 56c24e4..fad4d0e 100644 --- a/Makefile +++ b/Makefile @@ -1,9 +1,147 @@ # Silence output slightly # .SILENT: -DB := bep -PROJECT := bep +PHP ?= $(shell which php) +CONSOLE := $(PHP) bin/console +SYMFONY ?= $(shell which symfony) +PHPUNIT := ./vendor/bin/phpunit +PHPCSF := ./vendor/bin/php-cs-fixer +PHPSTAN := ./vendor/bin/phpstan +TWIGCS := ./vendor/bin/twigcs -include etc/Makefile +CODE_DIRS := bin config migrations src templates tests + +## -- Help +help: ## Outputs this help screen + @grep -E '(^[a-zA-Z0-9._-]+:.*?##.*$$)|(^##)' $(MAKEFILE_LIST) | sed -e 's/^.*Makefile[^:]*://' | awk 'BEGIN {FS = ":.*?## "}{printf "\033[32m%-30s\033[0m %s\n", $$1, $$2}' | sed -e 's/\[32m##/[33m/' + + +## -- Tests + +test.reset: ## Create a test database and load the fixtures in it + rm -rf var/cache/test/* data/test/* + rm -f var/log/test-*.log + $(CONSOLE) --env=test doctrine:database:create --quiet --if-not-exists + $(CONSOLE) --env=test doctrine:schema:drop --quiet --force + $(CONSOLE) --env=test doctrine:schema:create --quiet + $(CONSOLE) --env=test doctrine:schema:validate --quiet + $(CONSOLE) --env=test doctrine:cache:clear-metadata --quiet + $(CONSOLE) --env=test doctrine:fixtures:load --quiet --no-interaction --group=dev + +test.run: ## Directly run tests. Use optional path=/path/to/tests to limit target + $(PHPUNIT) $(path) + +test: test.reset test.run ## Run all tests. Use optional path=/path/to/tests to limit target + +test.cover: test.reset ## Generate a test cover report + $(PHP) -dpcov.enabled=1 -dpcov.directory=. -dpcov.exclude="~vendor~" $(PHPUNIT) $(path) --coverage-html=coverage + +test.cover.view: ## Open the test coverage html file + open coverage/index.html + + +## -- Cache targets + +cc: ## Clear the symfony cache + $(CONSOLE) cache:clear + $(CONSOLE) cache:warmup + +cc.purge: ## Remove cache and log files + rm -rf var/cache/*/* + rm -f var/log/* + + +## -- Assets + +assets: ## Link assets into /public + $(CONSOLE) assets:install --symlink + + +## Database migrations + +migrate: ## Run any migrations as required + $(CONSOLE) doctrine:migrations:migrate --no-interaction --allow-no-migration + +migrate.down: ## Undo one migration + # This is arcane nonsense and only works in GNU Make + $(eval CURRENT=$(shell $(CONSOLE) doctrine:migrations:current)) + $(CONSOLE) doctrine:migrations:execute '$(CURRENT)' --down + +migrate.diff: ## Generate a migration by diffing the db and entities + $(CONSOLE) doctrine:migrations:diff --no-interaction --quiet + +migrate.status: ## Status of database migrations + $(CONSOLE) doctrine:migrations:status + +migrate.rollup: ## Roll up all migrations in to a schema definition + rm -rf migrations/* + $(CONSOLE) doctrine:migrations:dump-schema --no-interaction --quiet + $(CONSOLE) doctrine:migrations:rollup --no-interaction --quiet + $(PHPCSF) fix migrations + +migrate.reset: ## Reset all migrations metadata + $(CONSOLE) doctrine:migrations:version --delete --all --no-interaction --quiet + $(CONSOLE) doctrine:migrations:version --add --all --no-interaction --quiet + + +## -- Container debug targets + +dump.autowire: ## Show autowireable services + $(CONSOLE) debug:autowiring --all + +dump.container: ## Show container information + $(CONSOLE) debug:container + +dump.env: ## Show all environment variables in the container + $(CONSOLE) debug:container --env-vars + +dump.params: ## List all of the nines container parameters + $(CONSOLE) debug:container --parameters + +dump.router: ## Display rounting information + $(CONSOLE) debug:router + +dump.twig: ## Show all twig configuration + $(CONSOLE) debug:twig + + +## -- Coding standards fixing + +fix: ## Fix the code with the CS rules + $(PHPCSF) fix $(path) + +fix.cc: ## Remove the PHP CS Cache file + rm -f var/cache/php_cs.cache + +fix.all: fix.cc fix ## Ignore the CS cache and fix the code with the CS rules + +fix.list: ## Check the code against the CS rules + $(PHPCSF) fix --dry-run -v $(path) + +## -- Coding standards checking + +lint-all: stan.cc stan twiglint twigcs yamllint + +symlint: yamllint twiglint ## Run the symfony linting checks + $(SYMFONY) security:check --quiet + $(CONSOLE) lint:container --quiet + $(CONSOLE) doctrine:schema:validate --quiet --skip-sync -vvv --no-interaction + +twiglint: ## Check the twig templates for syntax errors + $(CONSOLE) lint:twig templates + +twigcs: ## Check the twig templates against the coding standards + $(TWIGCS) templates + +yamllint: + $(CONSOLE) lint:yaml templates + +stan: ## Run static analysis + $(PHPSTAN) --memory-limit=1G analyze $(CODE_DIRS) + +stan.cc: ## Clear the static analysis cache + $(PHPSTAN) clear-result-cache + +stan.baseline: ## Generate a new phpstan baseline file + $(PHPSTAN) --memory-limit=1G analyze --generate-baseline $(CODE_DIRS) -## -- Local make file diff --git a/README.md b/README.md index 75a6293..117aaa3 100644 --- a/README.md +++ b/README.md @@ -1,55 +1,188 @@ # Books in English Parishes -[Books in English Parishes][bep] (affectionately known as BEP) is a PHP application written using the -[Symfony Framework][symfony]. It is a digital tool for collecting data and metadata +[Books in English Parishes][https://dhil.lib.sfu.ca/bep] (affectionately known as BEP) is a PHP application written using the +[Symfony Framework][https://symfony.com]. It is a digital tool for collecting data and metadata about books used in English parishes. ## Requirements -We have tried to keep the requirements minimal. How you install these -requirements is up to you, but we have [provided some recommendations][setup] - -- Apache >= 2.4 -- PHP >= 7.4 -- Composer >= 2.0 -- MariaDB >= 10.8[^1] -- Yarn >= 1.22 - -## Installation - -1. Fork and clone the project from [GitHub][github-bep]. -2. Install the git submodules. `git submodule update --init` is a good way to do this -3. Install composer dependencies with `composer install`. -4. Install yarn dependencies with `yarn install`. -4. Create a MariaDB database and user. - - ```sql - DROP DATABASE IF EXISTS bep; - CREATE DATABASE bep; - DROP USER IF EXISTS bep@localhost; - CREATE USER bep@localhost IDENTIFIED BY 'abc123'; - GRANT ALL ON bep.* TO bep@localhost; - ``` -5. Copy .env to .env.local and edit configuration to suite your needs. -6. Either 1) create the schema and load fixture data, or 2) load a MySQLDump file - if one has been provided. - 1. ```bash - php ./bin/console doctrine:schema:create --quiet - php ./bin/console doctrine:fixtures:load --group=dev --purger=fk_purger - ``` - 2. ```bash - mysql bep < bep.sql - ``` - -7. Visit http://localhost/bep -8. happy coding! - -Some of the steps above are made easier with the included [MakeFiles](etc/README.md) -which are in a git submodule. If you missed step 2 above they will be missing. - -[bep]: https://dhil.lib.sfu.ca/bep -[symfony]: https://symfony.com -[github-bep]: https://github.com/sfu-dhil/bep -[setup]: https://sfu-dhil.github.io/dhil-docs/dev/ - -[^1]: A similar version of MySQL should also work, but will not be supported. +- [Docker Desktop](https://www.docker.com/products/docker-desktop/) +- A copy of the `bep.sql` database sql file. If you are not sure what these are or where to get them, you should contact the [Digital Humanities Innovation Lab](mailto:dhil@sfu.ca) for access. This file should be placed in the root folder. + +## Initialize the Application + +First you must setup the database for the first time + + docker compose up -d db + # wait 30 after the command has fully completed + docker exec -it bep_db bash -c "mysql -u bep -ppassword bep < /bep.sql" + +Next you must start the whole application + + docker compose up -d --build + +BEP will now be available at `http://localhost:8080/` + +### Create your admin user credentials + + docker exec -it bep_app ./bin/console nines:user:create '' '' + docker exec -it bep_app ./bin/console nines:user:password + docker exec -it bep_app ./bin/console nines:user:promote ROLE_ADMIN + docker exec -it bep_app ./bin/console nines:user:activate + +example: + + docker exec -it bep_app ./bin/console nines:user:create test@test.com 'Test User' 'DHIL' + docker exec -it bep_app ./bin/console nines:user:password test@test.com test_password + docker exec -it bep_app ./bin/console nines:user:promote test@test.com ROLE_ADMIN + docker exec -it bep_app ./bin/console nines:user:activate test@test.com + +## General Usage + +### Starting the Application + + docker compose up -d + +### Stopping the Application + + docker compose down + +### Rebuilding the Application (after upstream or js/php package changes) + + docker compose up -d --build + +### Viewing logs (each container) + + docker logs -f bep_app + docker logs -f bep_db + docker logs -f bep_mail + +### Accessing the Application + + http://localhost:8080/ + +### Accessing the Database + +Command line: + + docker exec -it bep_db mysql -u bep -ppassword bep + +Through a database management tool: +- Host:`127.0.0.1` +- Port: `13306` +- Username: `bep` +- Password: `password` + +### Accessing Mailhog (catches emails sent by the app) + + http://localhost:8025/ + +### Database Migrations + +Migrate up to latest + + docker exec -it bep_app make migrate + +## Updating Application Dependencies + +### Yarn (javascript) + +First setup an image to build the yarn deps in + + docker build -t bep_yarn_helper --target bep-prod-assets . + +Then run the following as needed + + # add new package + docker run -it --rm -v $(pwd)/public:/app bep_yarn_helper yarn add [package] + + # update a package + docker run -it --rm -v $(pwd)/public:/app bep_yarn_helper yarn upgrade [package] + + # update all packages + docker run -it --rm -v $(pwd)/public:/app bep_yarn_helper yarn upgrade + +Note: If you are having problems starting/building the application due to javascript dependencies issues you can also run a standalone node container to help resolve them + + docker run -it --rm -v $(pwd)/public:/app -w /app node:19.5 bash + + [check Dockerfile for the 'apt-get update' code piece of bep-prod-assets] + + yarn ... + +After you update a dependency make sure to rebuild the images + + docker compose down + docker compose up -d + +### Composer (php) + + # add new package + docker exec -it bep_app composer require [vendor/package] + + # add new dev package + docker exec -it bep_app composer require --dev [vendor/package] + + # update a package + docker exec -it bep_app composer update [vendor/package] + + # update all packages + docker exec -it bep_app composer update + +Note: If you are having problems starting/building the application due to php dependencies issues you can also run a standalone php container to help resolve them + + docker run -it -v $(pwd):/var/www/html -w /var/www/html dhilsfu/symfony-base:php-8.2-apache bash + + [check Dockerfile for the 'apt-get update' code piece of bep] + + composer ... + +After you update a dependency make sure to rebuild the images + + docker compose down + docker compose up -d + +## Tests + +First make sure the application and database are started with `docker compose up -d` + +### Unit Tests + + docker exec -it bep_app make test + +### Generate Code Coverage + + docker exec -it bep_app make test.cover + make test.cover.view + +If the coverage file doesn't open automatically you can manually open it `coverage/index.html` + +## Misc + +### PHP Code standards + +See standards errors + + docker exec -it bep_app make lint-all + docker exec -it bep_app make symlint + + # or + docker exec -it bep_app make stan + docker exec -it bep_app make twiglint + docker exec -it bep_app make twigcs + docker exec -it bep_app make yamllint + docker exec -it bep_app make symlint + + +Automatically fix some standards errors + + docker exec -it bep_app make fix.all + +### Debug helpers + + docker exec -it bep_app make dump.autowire + docker exec -it bep_app make dump.container + docker exec -it bep_app make dump.env + docker exec -it bep_app make dump.params + docker exec -it bep_app make dump.router + docker exec -it bep_app make dump.twig diff --git a/bin/console b/bin/console index 5de0e1c..c933dc5 100755 --- a/bin/console +++ b/bin/console @@ -3,40 +3,15 @@ use App\Kernel; use Symfony\Bundle\FrameworkBundle\Console\Application; -use Symfony\Component\Console\Input\ArgvInput; -use Symfony\Component\ErrorHandler\Debug; -if (!in_array(PHP_SAPI, ['cli', 'phpdbg', 'embed'], true)) { - echo 'Warning: The console should be invoked via the CLI version of PHP, not the '.PHP_SAPI.' SAPI'.PHP_EOL; +if (!is_file(dirname(__DIR__).'/vendor/autoload_runtime.php')) { + throw new LogicException('Symfony Runtime is missing. Try running "composer require symfony/runtime".'); } -set_time_limit(0); +require_once dirname(__DIR__).'/vendor/autoload_runtime.php'; -require dirname(__DIR__).'/vendor/autoload.php'; +return function (array $context) { + $kernel = new Kernel($context['APP_ENV'], (bool) $context['APP_DEBUG']); -if (!class_exists(Application::class)) { - throw new LogicException('You need to add "symfony/framework-bundle" as a Composer dependency.'); -} - -$input = new ArgvInput(); -if (null !== $env = $input->getParameterOption(['--env', '-e'], null, true)) { - putenv('APP_ENV='.$_SERVER['APP_ENV'] = $_ENV['APP_ENV'] = $env); -} - -if ($input->hasParameterOption('--no-debug', true)) { - putenv('APP_DEBUG='.$_SERVER['APP_DEBUG'] = $_ENV['APP_DEBUG'] = '0'); -} - -require dirname(__DIR__).'/config/bootstrap.php'; - -if ($_SERVER['APP_DEBUG']) { - umask(0000); - - if (class_exists(Debug::class)) { - Debug::enable(); - } -} - -$kernel = new Kernel($_SERVER['APP_ENV'], (bool) $_SERVER['APP_DEBUG']); -$application = new Application($kernel); -$application->run($input); + return new Application($kernel); +}; diff --git a/composer.json b/composer.json index 74c7231..1ab8f09 100644 --- a/composer.json +++ b/composer.json @@ -4,73 +4,75 @@ "description": "Books in English Parishes", "license": "GPL-2.0-or-later", "require": { - "php": ">=7.4", + "php": "^8.2", "ext-ctype": "*", "ext-iconv": "*", "ext-imagick": "*", "ext-json": "*", "beberlei/doctrineextensions": "^1.3", "aternus/geonames-client": "^2.2", - "doctrine/annotations": "^1.0", - "doctrine/cache": "^2.1", - "doctrine/common": "^3.2", - "doctrine/doctrine-bundle": "^2.3", + "doctrine/cache": "^2.2", + "doctrine/common": "^3.4", + "doctrine/doctrine-bundle": "^2.10", "doctrine/doctrine-migrations-bundle": "^3.2", - "doctrine/orm": "^2.7", + "doctrine/orm": "^2.15", + "knplabs/knp-menu-bundle": "^3.2", + "knplabs/knp-paginator-bundle": "^6.2", "ninsuo/symfony-collection": "^2.1", - "phpdocumentor/reflection-docblock": "^5.2", + "phpdocumentor/reflection-docblock": "^5.3", "sensio/framework-extra-bundle": "^6.2", - "symfony/asset": "4.4.*", - "symfony/console": "4.4.*", - "symfony/dotenv": "4.4.*", - "symfony/expression-language": "4.4.*", - "symfony/flex": "^1.17.1", - "symfony/form": "4.4.*", - "symfony/framework-bundle": "4.4.*", - "symfony/http-client": "4.4.*", - "symfony/intl": "4.4.*", - "symfony/mailer": "4.4.*", - "symfony/monolog-bundle": "^3.1", - "symfony/process": "4.4.*", - "symfony/property-access": "4.4.*", - "symfony/property-info": "4.4.*", - "symfony/proxy-manager-bridge": "4.4.*", - "symfony/security-bundle": "4.4.*", - "symfony/serializer": "4.4.*", - "symfony/translation": "4.4.*", - "symfony/twig-bundle": "4.4.*", - "symfony/validator": "4.4.*", - "symfony/web-link": "4.4.*", - "symfony/yaml": "4.4.*", + "sfu-dhil/nines": "6.3.17", + "symfony/asset": "6.3.*", + "symfony/console": "6.3.*", + "symfony/dotenv": "6.3.*", + "symfony/expression-language": "6.3.*", + "symfony/flex": "^2.3.2", + "symfony/form": "6.3.*", + "symfony/framework-bundle": "6.3.*", + "symfony/http-client": "6.3.*", + "symfony/http-foundation": "6.3.*", + "symfony/intl": "6.3.*", + "symfony/mailer": "6.3.*", + "symfony/monolog-bundle": "^3.8", + "symfony/process": "6.3.*", + "symfony/property-access": "6.3.*", + "symfony/property-info": "6.3.*", + "symfony/proxy-manager-bridge": "6.3.*", + "symfony/runtime": "6.3.*", + "symfony/security-bundle": "6.3.*", + "symfony/serializer": "6.3.*", + "symfony/translation": "6.3.*", + "symfony/twig-bundle": "6.3.*", + "symfony/validator": "6.3.*", + "symfony/web-link": "6.3.*", + "symfony/yaml": "6.3.*", "tetranz/select2entity-bundle": "^3.1", - "twig/extra-bundle": "^2.12|^3.0", - "twig/intl-extra": "^3.0", - "twig/string-extra": "^3.0", - "twig/twig": "^2.12|^3.0", - "ubermichael/nines": "dev-4.x-up" + "twig/extra-bundle": "^3.7", + "twig/intl-extra": "^3.7", + "twig/string-extra": "^3.7", + "twig/twig": "^3.7" }, "require-dev": { - "dama/doctrine-test-bundle": "^6.7", - "deployer/deployer": "^6.8", + "dama/doctrine-test-bundle": "^7.2", "doctrine/doctrine-fixtures-bundle": "^3.4", - "friendsofphp/php-cs-fixer": "^3.4", - "friendsoftwig/twigcs": "^5.1", - "phpstan/phpstan": "^1.3", + "friendsofphp/php-cs-fixer": "^3.22", + "friendsoftwig/twigcs": "^6.2", + "phpstan/phpstan": "^1.10", "phpstan/phpstan-doctrine": "^1.3", - "phpstan/phpstan-symfony": "^1.1", - "phpunit/phpunit": "^9.5", - "symfony/browser-kit": "4.4.*", - "symfony/css-selector": "4.4.*", - "symfony/debug-bundle": "4.4.*", - "symfony/maker-bundle": "^1.36", - "symfony/phpunit-bridge": "^6.0", - "symfony/stopwatch": "4.4.*", - "symfony/web-profiler-bundle": "4.4.*" + "phpstan/phpstan-symfony": "^1.3", + "phpunit/phpunit": "^9.6", + "symfony/browser-kit": "6.3.*", + "symfony/css-selector": "6.3.*", + "symfony/debug-bundle": "6.3.*", + "symfony/maker-bundle": "^1.50", + "symfony/phpunit-bridge": "^6.3", + "symfony/stopwatch": "6.3.*", + "symfony/web-profiler-bundle": "6.3.*" }, "repositories": [ { - "type": "github", - "url": "https://github.com/ubermichael/nines-bundles.git" + "type": "git", + "url": "https://github.com/sfu-dhil/nines-bundles.git" } ], "config": { @@ -79,7 +81,8 @@ }, "sort-packages": true, "allow-plugins": { - "symfony/flex": true + "symfony/flex": true, + "symfony/runtime": true } }, "autoload": { @@ -120,7 +123,7 @@ "extra": { "symfony": { "allow-contrib": false, - "require": "4.4.*" + "require": "6.3.*" } } } diff --git a/composer.lock b/composer.lock index 4618dd2..772fd22 100644 --- a/composer.lock +++ b/composer.lock @@ -4,20 +4,20 @@ "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies", "This file is @generated automatically" ], - "content-hash": "dcc047c4c9559b6547741a786e990b17", + "content-hash": "bba9d486afd314c548a52428dd8a9b55", "packages": [ { "name": "aternus/geonames-client", - "version": "2.2.2", + "version": "2.3.1", "source": { "type": "git", "url": "https://github.com/Aternus/geonames-client.git", - "reference": "fb5c26c62aadff39118a18c4fbadd322aab1602f" + "reference": "0d996ee5670b1df091da52df3e001dd37d90908b" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/Aternus/geonames-client/zipball/fb5c26c62aadff39118a18c4fbadd322aab1602f", - "reference": "fb5c26c62aadff39118a18c4fbadd322aab1602f", + "url": "https://api.github.com/repos/Aternus/geonames-client/zipball/0d996ee5670b1df091da52df3e001dd37d90908b", + "reference": "0d996ee5670b1df091da52df3e001dd37d90908b", "shasum": "" }, "require": { @@ -65,31 +65,36 @@ "issues": "https://github.com/Aternus/geonames-client/issues", "source": "https://github.com/Aternus/geonames-client" }, - "time": "2021-11-27T14:28:45+00:00" + "time": "2024-01-03T00:01:26+00:00" }, { "name": "beberlei/doctrineextensions", - "version": "v1.3.0", + "version": "v1.5.0", "source": { "type": "git", "url": "https://github.com/beberlei/DoctrineExtensions.git", - "reference": "008f162f191584a6c37c03a803f718802ba9dd9a" + "reference": "281f1650641c2f438b0a54d8eaa7ba50ac7e3eb6" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/beberlei/DoctrineExtensions/zipball/008f162f191584a6c37c03a803f718802ba9dd9a", - "reference": "008f162f191584a6c37c03a803f718802ba9dd9a", + "url": "https://api.github.com/repos/beberlei/DoctrineExtensions/zipball/281f1650641c2f438b0a54d8eaa7ba50ac7e3eb6", + "reference": "281f1650641c2f438b0a54d8eaa7ba50ac7e3eb6", "shasum": "" }, "require": { - "doctrine/orm": "^2.7", + "doctrine/orm": "^2.19 || ^3.0", "php": "^7.2 || ^8.0" }, "require-dev": { - "friendsofphp/php-cs-fixer": "^2.14", - "nesbot/carbon": "*", - "phpunit/phpunit": "^7.0 || ^8.0 || ^9.0", - "symfony/yaml": "^4.2 || ^5.0", + "doctrine/annotations": "^1.14 || ^2", + "doctrine/coding-standard": "^9.0.2 || ^12.0", + "nesbot/carbon": "^2.72 || ^3", + "phpstan/phpstan": "^1.10", + "phpunit/phpunit": "^8.5 || ^9.6", + "squizlabs/php_codesniffer": "^3.8", + "symfony/cache": "^5.4 || ^6.4 || ^7.0", + "symfony/yaml": "^5.4 || ^6.4 || ^7.0", + "vimeo/psalm": "^3.18 || ^5.22", "zf1/zend-date": "^1.12", "zf1/zend-registry": "^1.12" }, @@ -120,38 +125,41 @@ "orm" ], "support": { - "source": "https://github.com/beberlei/DoctrineExtensions/tree/v1.3.0" + "source": "https://github.com/beberlei/DoctrineExtensions/tree/v1.5.0" }, - "time": "2020-11-29T07:37:23+00:00" + "time": "2024-03-03T17:55:15+00:00" }, { "name": "doctrine/annotations", - "version": "1.13.3", + "version": "2.0.1", "source": { "type": "git", "url": "https://github.com/doctrine/annotations.git", - "reference": "648b0343343565c4a056bfc8392201385e8d89f0" + "reference": "e157ef3f3124bbf6fe7ce0ffd109e8a8ef284e7f" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/doctrine/annotations/zipball/648b0343343565c4a056bfc8392201385e8d89f0", - "reference": "648b0343343565c4a056bfc8392201385e8d89f0", + "url": "https://api.github.com/repos/doctrine/annotations/zipball/e157ef3f3124bbf6fe7ce0ffd109e8a8ef284e7f", + "reference": "e157ef3f3124bbf6fe7ce0ffd109e8a8ef284e7f", "shasum": "" }, "require": { - "doctrine/lexer": "1.*", + "doctrine/lexer": "^2 || ^3", "ext-tokenizer": "*", - "php": "^7.1 || ^8.0", + "php": "^7.2 || ^8.0", "psr/cache": "^1 || ^2 || ^3" }, "require-dev": { - "doctrine/cache": "^1.11 || ^2.0", - "doctrine/coding-standard": "^6.0 || ^8.1", - "phpstan/phpstan": "^1.4.10 || ^1.8.0", - "phpunit/phpunit": "^7.5 || ^8.0 || ^9.1.5", - "symfony/cache": "^4.4 || ^5.2", + "doctrine/cache": "^2.0", + "doctrine/coding-standard": "^10", + "phpstan/phpstan": "^1.8.0", + "phpunit/phpunit": "^7.5 || ^8.5 || ^9.5", + "symfony/cache": "^5.4 || ^6", "vimeo/psalm": "^4.10" }, + "suggest": { + "php": "PHP 8.0 or higher comes with attributes, a native replacement for annotations" + }, "type": "library", "autoload": { "psr-4": { @@ -193,9 +201,9 @@ ], "support": { "issues": "https://github.com/doctrine/annotations/issues", - "source": "https://github.com/doctrine/annotations/tree/1.13.3" + "source": "https://github.com/doctrine/annotations/tree/2.0.1" }, - "time": "2022-07-02T10:48:51+00:00" + "time": "2023-02-02T22:02:53+00:00" }, { "name": "doctrine/cache", @@ -292,32 +300,34 @@ }, { "name": "doctrine/collections", - "version": "1.7.0", + "version": "2.2.2", "source": { "type": "git", "url": "https://github.com/doctrine/collections.git", - "reference": "07d15c8a766e664ec271ae84e5dfc597aeeb03b1" + "reference": "d8af7f248c74f195f7347424600fd9e17b57af59" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/doctrine/collections/zipball/07d15c8a766e664ec271ae84e5dfc597aeeb03b1", - "reference": "07d15c8a766e664ec271ae84e5dfc597aeeb03b1", + "url": "https://api.github.com/repos/doctrine/collections/zipball/d8af7f248c74f195f7347424600fd9e17b57af59", + "reference": "d8af7f248c74f195f7347424600fd9e17b57af59", "shasum": "" }, "require": { - "doctrine/deprecations": "^0.5.3 || ^1", - "php": "^7.1.3 || ^8.0" + "doctrine/deprecations": "^1", + "php": "^8.1" }, "require-dev": { - "doctrine/coding-standard": "^9.0", - "phpstan/phpstan": "^1.4.8", - "phpunit/phpunit": "^7.5 || ^8.5 || ^9.1.5", - "vimeo/psalm": "^4.22" + "doctrine/coding-standard": "^12", + "ext-json": "*", + "phpstan/phpstan": "^1.8", + "phpstan/phpstan-phpunit": "^1.0", + "phpunit/phpunit": "^10.5", + "vimeo/psalm": "^5.11" }, "type": "library", "autoload": { "psr-4": { - "Doctrine\\Common\\Collections\\": "lib/Doctrine/Common/Collections" + "Doctrine\\Common\\Collections\\": "src" } }, "notification-url": "https://packagist.org/downloads/", @@ -356,22 +366,36 @@ ], "support": { "issues": "https://github.com/doctrine/collections/issues", - "source": "https://github.com/doctrine/collections/tree/1.7.0" + "source": "https://github.com/doctrine/collections/tree/2.2.2" }, - "time": "2022-08-18T05:44:45+00:00" + "funding": [ + { + "url": "https://www.doctrine-project.org/sponsorship.html", + "type": "custom" + }, + { + "url": "https://www.patreon.com/phpdoctrine", + "type": "patreon" + }, + { + "url": "https://tidelift.com/funding/github/packagist/doctrine%2Fcollections", + "type": "tidelift" + } + ], + "time": "2024-04-18T06:56:21+00:00" }, { "name": "doctrine/common", - "version": "3.3.0", + "version": "3.4.4", "source": { "type": "git", "url": "https://github.com/doctrine/common.git", - "reference": "c824e95d4c83b7102d8bc60595445a6f7d540f96" + "reference": "0aad4b7ab7ce8c6602dfbb1e1a24581275fb9d1a" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/doctrine/common/zipball/c824e95d4c83b7102d8bc60595445a6f7d540f96", - "reference": "c824e95d4c83b7102d8bc60595445a6f7d540f96", + "url": "https://api.github.com/repos/doctrine/common/zipball/0aad4b7ab7ce8c6602dfbb1e1a24581275fb9d1a", + "reference": "0aad4b7ab7ce8c6602dfbb1e1a24581275fb9d1a", "shasum": "" }, "require": { @@ -379,18 +403,19 @@ "php": "^7.1 || ^8.0" }, "require-dev": { - "doctrine/coding-standard": "^9.0", + "doctrine/coding-standard": "^9.0 || ^10.0", + "doctrine/collections": "^1", "phpstan/phpstan": "^1.4.1", "phpstan/phpstan-phpunit": "^1", "phpunit/phpunit": "^7.5.20 || ^8.5 || ^9.0", "squizlabs/php_codesniffer": "^3.0", - "symfony/phpunit-bridge": "^4.0.5", + "symfony/phpunit-bridge": "^6.1", "vimeo/psalm": "^4.4" }, "type": "library", "autoload": { "psr-4": { - "Doctrine\\Common\\": "lib/Doctrine/Common" + "Doctrine\\Common\\": "src" } }, "notification-url": "https://packagist.org/downloads/", @@ -432,7 +457,7 @@ ], "support": { "issues": "https://github.com/doctrine/common/issues", - "source": "https://github.com/doctrine/common/tree/3.3.0" + "source": "https://github.com/doctrine/common/tree/3.4.4" }, "funding": [ { @@ -448,42 +473,44 @@ "type": "tidelift" } ], - "time": "2022-02-05T18:28:51+00:00" + "time": "2024-04-16T13:35:33+00:00" }, { "name": "doctrine/dbal", - "version": "3.4.1", + "version": "3.8.4", "source": { "type": "git", "url": "https://github.com/doctrine/dbal.git", - "reference": "94e016428884227245fb1219e0de7d8b86ca16d7" + "reference": "b05e48a745f722801f55408d0dbd8003b403dbbd" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/doctrine/dbal/zipball/94e016428884227245fb1219e0de7d8b86ca16d7", - "reference": "94e016428884227245fb1219e0de7d8b86ca16d7", + "url": "https://api.github.com/repos/doctrine/dbal/zipball/b05e48a745f722801f55408d0dbd8003b403dbbd", + "reference": "b05e48a745f722801f55408d0dbd8003b403dbbd", "shasum": "" }, "require": { "composer-runtime-api": "^2", "doctrine/cache": "^1.11|^2.0", "doctrine/deprecations": "^0.5.3|^1", - "doctrine/event-manager": "^1.0", + "doctrine/event-manager": "^1|^2", "php": "^7.4 || ^8.0", "psr/cache": "^1|^2|^3", "psr/log": "^1|^2|^3" }, "require-dev": { - "doctrine/coding-standard": "9.0.0", - "jetbrains/phpstorm-stubs": "2022.1", - "phpstan/phpstan": "1.8.2", - "phpstan/phpstan-strict-rules": "^1.3", - "phpunit/phpunit": "9.5.21", - "psalm/plugin-phpunit": "0.17.0", - "squizlabs/php_codesniffer": "3.7.1", - "symfony/cache": "^5.4|^6.0", - "symfony/console": "^4.4|^5.4|^6.0", - "vimeo/psalm": "4.24.0" + "doctrine/coding-standard": "12.0.0", + "fig/log-test": "^1", + "jetbrains/phpstorm-stubs": "2023.1", + "phpstan/phpstan": "1.10.58", + "phpstan/phpstan-strict-rules": "^1.5", + "phpunit/phpunit": "9.6.16", + "psalm/plugin-phpunit": "0.18.4", + "slevomat/coding-standard": "8.13.1", + "squizlabs/php_codesniffer": "3.9.0", + "symfony/cache": "^5.4|^6.0|^7.0", + "symfony/console": "^4.4|^5.4|^6.0|^7.0", + "vimeo/psalm": "4.30.0" }, "suggest": { "symfony/console": "For helpful console commands such as SQL execution and import of files." @@ -543,7 +570,7 @@ ], "support": { "issues": "https://github.com/doctrine/dbal/issues", - "source": "https://github.com/doctrine/dbal/tree/3.4.1" + "source": "https://github.com/doctrine/dbal/tree/3.8.4" }, "funding": [ { @@ -559,29 +586,33 @@ "type": "tidelift" } ], - "time": "2022-08-16T18:37:46+00:00" + "time": "2024-04-25T07:04:44+00:00" }, { "name": "doctrine/deprecations", - "version": "v1.0.0", + "version": "1.1.3", "source": { "type": "git", "url": "https://github.com/doctrine/deprecations.git", - "reference": "0e2a4f1f8cdfc7a92ec3b01c9334898c806b30de" + "reference": "dfbaa3c2d2e9a9df1118213f3b8b0c597bb99fab" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/doctrine/deprecations/zipball/0e2a4f1f8cdfc7a92ec3b01c9334898c806b30de", - "reference": "0e2a4f1f8cdfc7a92ec3b01c9334898c806b30de", + "url": "https://api.github.com/repos/doctrine/deprecations/zipball/dfbaa3c2d2e9a9df1118213f3b8b0c597bb99fab", + "reference": "dfbaa3c2d2e9a9df1118213f3b8b0c597bb99fab", "shasum": "" }, "require": { - "php": "^7.1|^8.0" + "php": "^7.1 || ^8.0" }, "require-dev": { "doctrine/coding-standard": "^9", - "phpunit/phpunit": "^7.5|^8.5|^9.5", - "psr/log": "^1|^2|^3" + "phpstan/phpstan": "1.4.10 || 1.10.15", + "phpstan/phpstan-phpunit": "^1.0", + "phpunit/phpunit": "^7.5 || ^8.5 || ^9.5", + "psalm/plugin-phpunit": "0.18.4", + "psr/log": "^1 || ^2 || ^3", + "vimeo/psalm": "4.30.0 || 5.12.0" }, "suggest": { "psr/log": "Allows logging deprecations via PSR-3 logger implementation" @@ -600,62 +631,68 @@ "homepage": "https://www.doctrine-project.org/", "support": { "issues": "https://github.com/doctrine/deprecations/issues", - "source": "https://github.com/doctrine/deprecations/tree/v1.0.0" + "source": "https://github.com/doctrine/deprecations/tree/1.1.3" }, - "time": "2022-05-02T15:47:09+00:00" + "time": "2024-01-30T19:34:25+00:00" }, { "name": "doctrine/doctrine-bundle", - "version": "2.7.0", + "version": "2.12.0", "source": { "type": "git", "url": "https://github.com/doctrine/DoctrineBundle.git", - "reference": "d2088fc50494e4e7441fecca54732245a613eeb6" + "reference": "5418e811a14724068e95e0ba43353b903ada530f" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/doctrine/DoctrineBundle/zipball/d2088fc50494e4e7441fecca54732245a613eeb6", - "reference": "d2088fc50494e4e7441fecca54732245a613eeb6", + "url": "https://api.github.com/repos/doctrine/DoctrineBundle/zipball/5418e811a14724068e95e0ba43353b903ada530f", + "reference": "5418e811a14724068e95e0ba43353b903ada530f", "shasum": "" }, "require": { - "doctrine/annotations": "^1", "doctrine/cache": "^1.11 || ^2.0", - "doctrine/dbal": "^2.13.1|^3.3.2", - "doctrine/persistence": "^2.2|^3", + "doctrine/dbal": "^3.7.0 || ^4.0", + "doctrine/persistence": "^2.2 || ^3", "doctrine/sql-formatter": "^1.0.1", - "php": "^7.1 || ^8.0", - "symfony/cache": "^4.3.3|^5.0|^6.0", - "symfony/config": "^4.4.3|^5.0|^6.0", - "symfony/console": "^3.4.30|^4.3.3|^5.0|^6.0", - "symfony/dependency-injection": "^4.4.18|^5.0|^6.0", - "symfony/deprecation-contracts": "^2.1|^3", - "symfony/doctrine-bridge": "^4.4.22|^5.2.7|^6.0", - "symfony/framework-bundle": "^3.4.30|^4.3.3|^5.0|^6.0", - "symfony/service-contracts": "^1.1.1|^2.0|^3" + "php": "^7.4 || ^8.0", + "symfony/cache": "^5.4 || ^6.0 || ^7.0", + "symfony/config": "^5.4 || ^6.0 || ^7.0", + "symfony/console": "^5.4 || ^6.0 || ^7.0", + "symfony/dependency-injection": "^5.4 || ^6.0 || ^7.0", + "symfony/deprecation-contracts": "^2.1 || ^3", + "symfony/doctrine-bridge": "^5.4.19 || ^6.0.7 || ^7.0", + "symfony/framework-bundle": "^5.4 || ^6.0 || ^7.0", + "symfony/polyfill-php80": "^1.15", + "symfony/service-contracts": "^1.1.1 || ^2.0 || ^3" }, "conflict": { - "doctrine/orm": "<2.10|>=3.0", - "twig/twig": "<1.34|>=2.0,<2.4" + "doctrine/annotations": ">=3.0", + "doctrine/orm": "<2.17 || >=4.0", + "twig/twig": "<1.34 || >=2.0 <2.4" }, "require-dev": { - "doctrine/coding-standard": "^9.0", - "doctrine/orm": "^2.11 || ^3.0", + "doctrine/annotations": "^1 || ^2", + "doctrine/coding-standard": "^12", + "doctrine/deprecations": "^1.0", + "doctrine/orm": "^2.17 || ^3.0", "friendsofphp/proxy-manager-lts": "^1.0", - "phpunit/phpunit": "^7.5 || ^8.0 || ^9.3 || ^10.0", - "psalm/plugin-phpunit": "^0.16.1", - "psalm/plugin-symfony": "^3", - "psr/log": "^1.1.4|^2.0|^3.0", - "symfony/phpunit-bridge": "^5.2|^6.0", - "symfony/property-info": "^4.3.3|^5.0|^6.0", - "symfony/proxy-manager-bridge": "^3.4|^4.3.3|^5.0|^6.0", - "symfony/security-bundle": "^4.4|^5.0|^6.0", - "symfony/twig-bridge": "^3.4.30|^4.3.3|^5.0|^6.0", - "symfony/validator": "^3.4.30|^4.3.3|^5.0|^6.0", - "symfony/web-profiler-bundle": "^3.4.30|^4.3.3|^5.0|^6.0", - "symfony/yaml": "^3.4.30|^4.3.3|^5.0|^6.0", - "twig/twig": "^1.34|^2.12|^3.0", - "vimeo/psalm": "^4.7" + "phpunit/phpunit": "^9.5.26", + "psalm/plugin-phpunit": "^0.18.4", + "psalm/plugin-symfony": "^5", + "psr/log": "^1.1.4 || ^2.0 || ^3.0", + "symfony/phpunit-bridge": "^6.1 || ^7.0", + "symfony/property-info": "^5.4 || ^6.0 || ^7.0", + "symfony/proxy-manager-bridge": "^5.4 || ^6.0 || ^7.0", + "symfony/security-bundle": "^5.4 || ^6.0 || ^7.0", + "symfony/stopwatch": "^5.4 || ^6.0 || ^7.0", + "symfony/string": "^5.4 || ^6.0 || ^7.0", + "symfony/twig-bridge": "^5.4 || ^6.0 || ^7.0", + "symfony/validator": "^5.4 || ^6.0 || ^7.0", + "symfony/var-exporter": "^5.4 || ^6.2 || ^7.0", + "symfony/web-profiler-bundle": "^5.4 || ^6.0 || ^7.0", + "symfony/yaml": "^5.4 || ^6.0 || ^7.0", + "twig/twig": "^1.34 || ^2.12 || ^3.0", + "vimeo/psalm": "^5.15" }, "suggest": { "doctrine/orm": "The Doctrine ORM integration is optional in the bundle.", @@ -665,7 +702,7 @@ "type": "symfony-bundle", "autoload": { "psr-4": { - "Doctrine\\Bundle\\DoctrineBundle\\": "" + "Doctrine\\Bundle\\DoctrineBundle\\": "src" } }, "notification-url": "https://packagist.org/downloads/", @@ -700,7 +737,7 @@ ], "support": { "issues": "https://github.com/doctrine/DoctrineBundle/issues", - "source": "https://github.com/doctrine/DoctrineBundle/tree/2.7.0" + "source": "https://github.com/doctrine/DoctrineBundle/tree/2.12.0" }, "funding": [ { @@ -716,38 +753,44 @@ "type": "tidelift" } ], - "time": "2022-06-10T10:55:26+00:00" + "time": "2024-03-19T07:20:37+00:00" }, { "name": "doctrine/doctrine-migrations-bundle", - "version": "3.2.2", + "version": "3.3.0", "source": { "type": "git", "url": "https://github.com/doctrine/DoctrineMigrationsBundle.git", - "reference": "3393f411ba25ade21969c33f2053220044854d01" + "reference": "1dd42906a5fb9c5960723e2ebb45c68006493835" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/doctrine/DoctrineMigrationsBundle/zipball/3393f411ba25ade21969c33f2053220044854d01", - "reference": "3393f411ba25ade21969c33f2053220044854d01", + "url": "https://api.github.com/repos/doctrine/DoctrineMigrationsBundle/zipball/1dd42906a5fb9c5960723e2ebb45c68006493835", + "reference": "1dd42906a5fb9c5960723e2ebb45c68006493835", "shasum": "" }, "require": { - "doctrine/doctrine-bundle": "~1.0|~2.0", + "doctrine/doctrine-bundle": "^2.4", "doctrine/migrations": "^3.2", "php": "^7.2|^8.0", - "symfony/framework-bundle": "~3.4|~4.0|~5.0|~6.0" + "symfony/deprecation-contracts": "^2.1 || ^3", + "symfony/framework-bundle": "^5.4 || ^6.0 || ^7.0" }, "require-dev": { - "doctrine/coding-standard": "^8.0", - "doctrine/orm": "^2.6", - "doctrine/persistence": "^1.3||^2.0", - "phpstan/phpstan": "^0.12", - "phpstan/phpstan-deprecation-rules": "^0.12", - "phpstan/phpstan-phpunit": "^0.12", - "phpstan/phpstan-strict-rules": "^0.12", - "phpunit/phpunit": "^8.0|^9.0", - "vimeo/psalm": "^4.11" + "doctrine/coding-standard": "^12", + "doctrine/orm": "^2.6 || ^3", + "doctrine/persistence": "^2.0 || ^3 ", + "phpstan/phpstan": "^1.4", + "phpstan/phpstan-deprecation-rules": "^1", + "phpstan/phpstan-phpunit": "^1", + "phpstan/phpstan-strict-rules": "^1.1", + "phpstan/phpstan-symfony": "^1.3", + "phpunit/phpunit": "^8.5|^9.5", + "psalm/plugin-phpunit": "^0.18.4", + "psalm/plugin-symfony": "^3 || ^5", + "symfony/phpunit-bridge": "^6.3 || ^7", + "symfony/var-exporter": "^5.4 || ^6 || ^7", + "vimeo/psalm": "^4.30 || ^5.15" }, "type": "symfony-bundle", "autoload": { @@ -785,7 +828,7 @@ ], "support": { "issues": "https://github.com/doctrine/DoctrineMigrationsBundle/issues", - "source": "https://github.com/doctrine/DoctrineMigrationsBundle/tree/3.2.2" + "source": "https://github.com/doctrine/DoctrineMigrationsBundle/tree/3.3.0" }, "funding": [ { @@ -801,38 +844,38 @@ "type": "tidelift" } ], - "time": "2022-02-01T18:08:07+00:00" + "time": "2023-11-13T19:44:41+00:00" }, { "name": "doctrine/event-manager", - "version": "1.1.2", + "version": "2.0.0", "source": { "type": "git", "url": "https://github.com/doctrine/event-manager.git", - "reference": "eb2ecf80e3093e8f3c2769ac838e27d8ede8e683" + "reference": "750671534e0241a7c50ea5b43f67e23eb5c96f32" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/doctrine/event-manager/zipball/eb2ecf80e3093e8f3c2769ac838e27d8ede8e683", - "reference": "eb2ecf80e3093e8f3c2769ac838e27d8ede8e683", + "url": "https://api.github.com/repos/doctrine/event-manager/zipball/750671534e0241a7c50ea5b43f67e23eb5c96f32", + "reference": "750671534e0241a7c50ea5b43f67e23eb5c96f32", "shasum": "" }, "require": { - "php": "^7.1 || ^8.0" + "php": "^8.1" }, "conflict": { "doctrine/common": "<2.9" }, "require-dev": { - "doctrine/coding-standard": "^9", - "phpstan/phpstan": "~1.4.10 || ^1.5.4", - "phpunit/phpunit": "^7.5 || ^8.5 || ^9.5", - "vimeo/psalm": "^4.22" + "doctrine/coding-standard": "^10", + "phpstan/phpstan": "^1.8.8", + "phpunit/phpunit": "^9.5", + "vimeo/psalm": "^4.28" }, "type": "library", "autoload": { "psr-4": { - "Doctrine\\Common\\": "lib/Doctrine/Common" + "Doctrine\\Common\\": "src" } }, "notification-url": "https://packagist.org/downloads/", @@ -876,7 +919,7 @@ ], "support": { "issues": "https://github.com/doctrine/event-manager/issues", - "source": "https://github.com/doctrine/event-manager/tree/1.1.2" + "source": "https://github.com/doctrine/event-manager/tree/2.0.0" }, "funding": [ { @@ -892,32 +935,32 @@ "type": "tidelift" } ], - "time": "2022-07-27T22:18:11+00:00" + "time": "2022-10-12T20:59:15+00:00" }, { "name": "doctrine/inflector", - "version": "2.0.4", + "version": "2.0.10", "source": { "type": "git", "url": "https://github.com/doctrine/inflector.git", - "reference": "8b7ff3e4b7de6b2c84da85637b59fd2880ecaa89" + "reference": "5817d0659c5b50c9b950feb9af7b9668e2c436bc" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/doctrine/inflector/zipball/8b7ff3e4b7de6b2c84da85637b59fd2880ecaa89", - "reference": "8b7ff3e4b7de6b2c84da85637b59fd2880ecaa89", + "url": "https://api.github.com/repos/doctrine/inflector/zipball/5817d0659c5b50c9b950feb9af7b9668e2c436bc", + "reference": "5817d0659c5b50c9b950feb9af7b9668e2c436bc", "shasum": "" }, "require": { "php": "^7.2 || ^8.0" }, "require-dev": { - "doctrine/coding-standard": "^8.2", - "phpstan/phpstan": "^0.12", - "phpstan/phpstan-phpunit": "^0.12", - "phpstan/phpstan-strict-rules": "^0.12", - "phpunit/phpunit": "^7.0 || ^8.0 || ^9.0", - "vimeo/psalm": "^4.10" + "doctrine/coding-standard": "^11.0", + "phpstan/phpstan": "^1.8", + "phpstan/phpstan-phpunit": "^1.1", + "phpstan/phpstan-strict-rules": "^1.3", + "phpunit/phpunit": "^8.5 || ^9.5", + "vimeo/psalm": "^4.25 || ^5.4" }, "type": "library", "autoload": { @@ -967,7 +1010,7 @@ ], "support": { "issues": "https://github.com/doctrine/inflector/issues", - "source": "https://github.com/doctrine/inflector/tree/2.0.4" + "source": "https://github.com/doctrine/inflector/tree/2.0.10" }, "funding": [ { @@ -983,34 +1026,34 @@ "type": "tidelift" } ], - "time": "2021-10-22T20:16:43+00:00" + "time": "2024-02-18T20:23:39+00:00" }, { "name": "doctrine/instantiator", - "version": "1.4.1", + "version": "2.0.0", "source": { "type": "git", "url": "https://github.com/doctrine/instantiator.git", - "reference": "10dcfce151b967d20fde1b34ae6640712c3891bc" + "reference": "c6222283fa3f4ac679f8b9ced9a4e23f163e80d0" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/doctrine/instantiator/zipball/10dcfce151b967d20fde1b34ae6640712c3891bc", - "reference": "10dcfce151b967d20fde1b34ae6640712c3891bc", + "url": "https://api.github.com/repos/doctrine/instantiator/zipball/c6222283fa3f4ac679f8b9ced9a4e23f163e80d0", + "reference": "c6222283fa3f4ac679f8b9ced9a4e23f163e80d0", "shasum": "" }, "require": { - "php": "^7.1 || ^8.0" + "php": "^8.1" }, "require-dev": { - "doctrine/coding-standard": "^9", + "doctrine/coding-standard": "^11", "ext-pdo": "*", "ext-phar": "*", - "phpbench/phpbench": "^0.16 || ^1", - "phpstan/phpstan": "^1.4", - "phpstan/phpstan-phpunit": "^1", - "phpunit/phpunit": "^7.5 || ^8.5 || ^9.5", - "vimeo/psalm": "^4.22" + "phpbench/phpbench": "^1.2", + "phpstan/phpstan": "^1.9.4", + "phpstan/phpstan-phpunit": "^1.3", + "phpunit/phpunit": "^9.5.27", + "vimeo/psalm": "^5.4" }, "type": "library", "autoload": { @@ -1037,7 +1080,7 @@ ], "support": { "issues": "https://github.com/doctrine/instantiator/issues", - "source": "https://github.com/doctrine/instantiator/tree/1.4.1" + "source": "https://github.com/doctrine/instantiator/tree/2.0.0" }, "funding": [ { @@ -1053,35 +1096,36 @@ "type": "tidelift" } ], - "time": "2022-03-03T08:28:38+00:00" + "time": "2022-12-30T00:23:10+00:00" }, { "name": "doctrine/lexer", - "version": "1.2.3", + "version": "3.0.1", "source": { "type": "git", "url": "https://github.com/doctrine/lexer.git", - "reference": "c268e882d4dbdd85e36e4ad69e02dc284f89d229" + "reference": "31ad66abc0fc9e1a1f2d9bc6a42668d2fbbcd6dd" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/doctrine/lexer/zipball/c268e882d4dbdd85e36e4ad69e02dc284f89d229", - "reference": "c268e882d4dbdd85e36e4ad69e02dc284f89d229", + "url": "https://api.github.com/repos/doctrine/lexer/zipball/31ad66abc0fc9e1a1f2d9bc6a42668d2fbbcd6dd", + "reference": "31ad66abc0fc9e1a1f2d9bc6a42668d2fbbcd6dd", "shasum": "" }, "require": { - "php": "^7.1 || ^8.0" + "php": "^8.1" }, "require-dev": { - "doctrine/coding-standard": "^9.0", - "phpstan/phpstan": "^1.3", - "phpunit/phpunit": "^7.5 || ^8.5 || ^9.5", - "vimeo/psalm": "^4.11" + "doctrine/coding-standard": "^12", + "phpstan/phpstan": "^1.10", + "phpunit/phpunit": "^10.5", + "psalm/plugin-phpunit": "^0.18.3", + "vimeo/psalm": "^5.21" }, "type": "library", "autoload": { "psr-4": { - "Doctrine\\Common\\Lexer\\": "lib/Doctrine/Common/Lexer" + "Doctrine\\Common\\Lexer\\": "src" } }, "notification-url": "https://packagist.org/downloads/", @@ -1113,7 +1157,7 @@ ], "support": { "issues": "https://github.com/doctrine/lexer/issues", - "source": "https://github.com/doctrine/lexer/tree/1.2.3" + "source": "https://github.com/doctrine/lexer/tree/3.0.1" }, "funding": [ { @@ -1129,52 +1173,51 @@ "type": "tidelift" } ], - "time": "2022-02-28T11:07:21+00:00" + "time": "2024-02-05T11:56:58+00:00" }, { "name": "doctrine/migrations", - "version": "3.5.2", + "version": "3.7.4", "source": { "type": "git", "url": "https://github.com/doctrine/migrations.git", - "reference": "61c6ef3a10b7df43c3b6388a184754f26e58700a" + "reference": "954e0a314c2f0eb9fb418210445111747de254a6" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/doctrine/migrations/zipball/61c6ef3a10b7df43c3b6388a184754f26e58700a", - "reference": "61c6ef3a10b7df43c3b6388a184754f26e58700a", + "url": "https://api.github.com/repos/doctrine/migrations/zipball/954e0a314c2f0eb9fb418210445111747de254a6", + "reference": "954e0a314c2f0eb9fb418210445111747de254a6", "shasum": "" }, "require": { "composer-runtime-api": "^2", - "doctrine/dbal": "^3.3", + "doctrine/dbal": "^3.5.1 || ^4", "doctrine/deprecations": "^0.5.3 || ^1", - "doctrine/event-manager": "^1.0", - "friendsofphp/proxy-manager-lts": "^1.0", - "php": "^7.4 || ^8.0", + "doctrine/event-manager": "^1.2 || ^2.0", + "php": "^8.1", "psr/log": "^1.1.3 || ^2 || ^3", - "symfony/console": "^4.4.16 || ^5.4 || ^6.0", - "symfony/stopwatch": "^4.4 || ^5.4 || ^6.0" + "symfony/console": "^5.4 || ^6.0 || ^7.0", + "symfony/stopwatch": "^5.4 || ^6.0 || ^7.0", + "symfony/var-exporter": "^6.2 || ^7.0" }, "conflict": { - "doctrine/orm": "<2.12" + "doctrine/orm": "<2.12 || >=4" }, "require-dev": { - "doctrine/coding-standard": "^9", - "doctrine/orm": "^2.12", + "doctrine/coding-standard": "^12", + "doctrine/orm": "^2.13 || ^3", "doctrine/persistence": "^2 || ^3", "doctrine/sql-formatter": "^1.0", - "ergebnis/composer-normalize": "^2.9", "ext-pdo_sqlite": "*", - "phpstan/phpstan": "^1.5", - "phpstan/phpstan-deprecation-rules": "^1", - "phpstan/phpstan-phpunit": "^1.1", - "phpstan/phpstan-strict-rules": "^1.1", - "phpstan/phpstan-symfony": "^1.1", - "phpunit/phpunit": "^9.5", - "symfony/cache": "^4.4 || ^5.4 || ^6.0", - "symfony/process": "^4.4 || ^5.4 || ^6.0", - "symfony/yaml": "^4.4 || ^5.4 || ^6.0" + "phpstan/phpstan": "^1.10", + "phpstan/phpstan-deprecation-rules": "^1.1", + "phpstan/phpstan-phpunit": "^1.3", + "phpstan/phpstan-strict-rules": "^1.4", + "phpstan/phpstan-symfony": "^1.3", + "phpunit/phpunit": "^10.3", + "symfony/cache": "^5.4 || ^6.0 || ^7.0", + "symfony/process": "^5.4 || ^6.0 || ^7.0", + "symfony/yaml": "^5.4 || ^6.0 || ^7.0" }, "suggest": { "doctrine/sql-formatter": "Allows to generate formatted SQL with the diff command.", @@ -1184,12 +1227,6 @@ "bin/doctrine-migrations" ], "type": "library", - "extra": { - "composer-normalize": { - "indent-size": 4, - "indent-style": "space" - } - }, "autoload": { "psr-4": { "Doctrine\\Migrations\\": "lib/Doctrine/Migrations" @@ -1222,7 +1259,7 @@ ], "support": { "issues": "https://github.com/doctrine/migrations/issues", - "source": "https://github.com/doctrine/migrations/tree/3.5.2" + "source": "https://github.com/doctrine/migrations/tree/3.7.4" }, "funding": [ { @@ -1238,55 +1275,56 @@ "type": "tidelift" } ], - "time": "2022-08-04T14:29:49+00:00" + "time": "2024-03-06T13:41:11+00:00" }, { "name": "doctrine/orm", - "version": "2.13.1", + "version": "2.19.5", "source": { "type": "git", "url": "https://github.com/doctrine/orm.git", - "reference": "35c44a56677adb3ce796138b6e4934ce93ec6811" + "reference": "94986af28452da42a46a4489d1c958a2e5d710e5" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/doctrine/orm/zipball/35c44a56677adb3ce796138b6e4934ce93ec6811", - "reference": "35c44a56677adb3ce796138b6e4934ce93ec6811", + "url": "https://api.github.com/repos/doctrine/orm/zipball/94986af28452da42a46a4489d1c958a2e5d710e5", + "reference": "94986af28452da42a46a4489d1c958a2e5d710e5", "shasum": "" }, "require": { "composer-runtime-api": "^2", "doctrine/cache": "^1.12.1 || ^2.1.1", - "doctrine/collections": "^1.5", + "doctrine/collections": "^1.5 || ^2.1", "doctrine/common": "^3.0.3", "doctrine/dbal": "^2.13.1 || ^3.2", "doctrine/deprecations": "^0.5.3 || ^1", - "doctrine/event-manager": "^1.1", + "doctrine/event-manager": "^1.2 || ^2", "doctrine/inflector": "^1.4 || ^2.0", - "doctrine/instantiator": "^1.3", - "doctrine/lexer": "^1.2.3", + "doctrine/instantiator": "^1.3 || ^2", + "doctrine/lexer": "^2 || ^3", "doctrine/persistence": "^2.4 || ^3", "ext-ctype": "*", "php": "^7.1 || ^8.0", "psr/cache": "^1 || ^2 || ^3", - "symfony/console": "^3.0 || ^4.0 || ^5.0 || ^6.0", + "symfony/console": "^4.2 || ^5.0 || ^6.0 || ^7.0", "symfony/polyfill-php72": "^1.23", "symfony/polyfill-php80": "^1.16" }, "conflict": { - "doctrine/annotations": "<1.13 || >= 2.0" + "doctrine/annotations": "<1.13 || >= 3.0" }, "require-dev": { - "doctrine/annotations": "^1.13", - "doctrine/coding-standard": "^9.0", + "doctrine/annotations": "^1.13 || ^2", + "doctrine/coding-standard": "^9.0.2 || ^12.0", "phpbench/phpbench": "^0.16.10 || ^1.0", - "phpstan/phpstan": "~1.4.10 || 1.8.2", - "phpunit/phpunit": "^7.5 || ^8.5 || ^9.5", + "phpstan/phpstan": "~1.4.10 || 1.10.59", + "phpunit/phpunit": "^7.5 || ^8.5 || ^9.6", "psr/log": "^1 || ^2 || ^3", - "squizlabs/php_codesniffer": "3.7.1", - "symfony/cache": "^4.4 || ^5.4 || ^6.0", - "symfony/yaml": "^3.4 || ^4.0 || ^5.0 || ^6.0", - "vimeo/psalm": "4.26.0" + "squizlabs/php_codesniffer": "3.7.2", + "symfony/cache": "^4.4 || ^5.4 || ^6.4 || ^7.0", + "symfony/var-exporter": "^4.4 || ^5.4 || ^6.2 || ^7.0", + "symfony/yaml": "^3.4 || ^4.0 || ^5.0 || ^6.0 || ^7.0", + "vimeo/psalm": "4.30.0 || 5.22.2" }, "suggest": { "ext-dom": "Provides support for XSD validation for XML mapping files", @@ -1299,7 +1337,7 @@ "type": "library", "autoload": { "psr-4": { - "Doctrine\\ORM\\": "lib/Doctrine/ORM" + "Doctrine\\ORM\\": "src" } }, "notification-url": "https://packagist.org/downloads/", @@ -1336,50 +1374,46 @@ ], "support": { "issues": "https://github.com/doctrine/orm/issues", - "source": "https://github.com/doctrine/orm/tree/2.13.1" + "source": "https://github.com/doctrine/orm/tree/2.19.5" }, - "time": "2022-08-08T09:00:16+00:00" + "time": "2024-04-30T06:49:54+00:00" }, { "name": "doctrine/persistence", - "version": "2.5.4", + "version": "3.3.2", "source": { "type": "git", "url": "https://github.com/doctrine/persistence.git", - "reference": "830c2ba42093e0e428eca37568ab36bd8008bc17" + "reference": "477da35bd0255e032826f440b94b3e37f2d56f42" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/doctrine/persistence/zipball/830c2ba42093e0e428eca37568ab36bd8008bc17", - "reference": "830c2ba42093e0e428eca37568ab36bd8008bc17", + "url": "https://api.github.com/repos/doctrine/persistence/zipball/477da35bd0255e032826f440b94b3e37f2d56f42", + "reference": "477da35bd0255e032826f440b94b3e37f2d56f42", "shasum": "" }, "require": { - "doctrine/cache": "^1.11 || ^2.0", - "doctrine/collections": "^1.0", - "doctrine/deprecations": "^0.5.3 || ^1", - "doctrine/event-manager": "^1.0", - "php": "^7.1 || ^8.0", + "doctrine/event-manager": "^1 || ^2", + "php": "^7.2 || ^8.0", "psr/cache": "^1.0 || ^2.0 || ^3.0" }, "conflict": { - "doctrine/annotations": "<1.0 || >=2.0", "doctrine/common": "<2.10" }, "require-dev": { "composer/package-versions-deprecated": "^1.11", - "doctrine/annotations": "^1.0", - "doctrine/coding-standard": "^9.0", + "doctrine/coding-standard": "^11", "doctrine/common": "^3.0", - "phpstan/phpstan": "~1.4.10 || 1.5.0", - "phpunit/phpunit": "^7.5.20 || ^8.5 || ^9.5", + "phpstan/phpstan": "1.9.4", + "phpstan/phpstan-phpunit": "^1", + "phpstan/phpstan-strict-rules": "^1.1", + "phpunit/phpunit": "^8.5 || ^9.5", "symfony/cache": "^4.4 || ^5.4 || ^6.0", - "vimeo/psalm": "4.22.0" + "vimeo/psalm": "4.30.0 || 5.3.0" }, "type": "library", "autoload": { "psr-4": { - "Doctrine\\Common\\": "src/Common", "Doctrine\\Persistence\\": "src/Persistence" } }, @@ -1414,7 +1448,7 @@ } ], "description": "The Doctrine Persistence project is a set of shared interfaces and functionality that the different Doctrine object mappers share.", - "homepage": "https://doctrine-project.org/projects/persistence.html", + "homepage": "https://www.doctrine-project.org/projects/persistence.html", "keywords": [ "mapper", "object", @@ -1424,7 +1458,7 @@ ], "support": { "issues": "https://github.com/doctrine/persistence/issues", - "source": "https://github.com/doctrine/persistence/tree/2.5.4" + "source": "https://github.com/doctrine/persistence/tree/3.3.2" }, "funding": [ { @@ -1440,27 +1474,30 @@ "type": "tidelift" } ], - "time": "2022-08-06T22:06:57+00:00" + "time": "2024-03-12T14:54:36+00:00" }, { "name": "doctrine/sql-formatter", - "version": "1.1.3", + "version": "1.3.0", "source": { "type": "git", "url": "https://github.com/doctrine/sql-formatter.git", - "reference": "25a06c7bf4c6b8218f47928654252863ffc890a5" + "reference": "3447381095d32a171fe3a58323749f44dbb5ac7d" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/doctrine/sql-formatter/zipball/25a06c7bf4c6b8218f47928654252863ffc890a5", - "reference": "25a06c7bf4c6b8218f47928654252863ffc890a5", + "url": "https://api.github.com/repos/doctrine/sql-formatter/zipball/3447381095d32a171fe3a58323749f44dbb5ac7d", + "reference": "3447381095d32a171fe3a58323749f44dbb5ac7d", "shasum": "" }, "require": { - "php": "^7.1 || ^8.0" + "php": "^7.2 || ^8.0" }, "require-dev": { - "bamarni/composer-bin-plugin": "^1.4" + "doctrine/coding-standard": "^9.0", + "phpstan/phpstan": "^1.0", + "phpunit/phpunit": "^8.5 || ^9.6", + "vimeo/psalm": "^4.11" }, "bin": [ "bin/sql-formatter" @@ -1490,33 +1527,32 @@ ], "support": { "issues": "https://github.com/doctrine/sql-formatter/issues", - "source": "https://github.com/doctrine/sql-formatter/tree/1.1.3" + "source": "https://github.com/doctrine/sql-formatter/tree/1.3.0" }, - "time": "2022-05-23T21:33:49+00:00" + "time": "2024-05-06T21:49:18+00:00" }, { "name": "egulias/email-validator", - "version": "3.2.1", + "version": "4.0.2", "source": { "type": "git", "url": "https://github.com/egulias/EmailValidator.git", - "reference": "f88dcf4b14af14a98ad96b14b2b317969eab6715" + "reference": "ebaaf5be6c0286928352e054f2d5125608e5405e" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/egulias/EmailValidator/zipball/f88dcf4b14af14a98ad96b14b2b317969eab6715", - "reference": "f88dcf4b14af14a98ad96b14b2b317969eab6715", + "url": "https://api.github.com/repos/egulias/EmailValidator/zipball/ebaaf5be6c0286928352e054f2d5125608e5405e", + "reference": "ebaaf5be6c0286928352e054f2d5125608e5405e", "shasum": "" }, "require": { - "doctrine/lexer": "^1.2", - "php": ">=7.2", - "symfony/polyfill-intl-idn": "^1.15" + "doctrine/lexer": "^2.0 || ^3.0", + "php": ">=8.1", + "symfony/polyfill-intl-idn": "^1.26" }, "require-dev": { - "php-coveralls/php-coveralls": "^2.2", - "phpunit/phpunit": "^8.5.8|^9.3.3", - "vimeo/psalm": "^4" + "phpunit/phpunit": "^10.2", + "vimeo/psalm": "^5.12" }, "suggest": { "ext-intl": "PHP Internationalization Libraries are required to use the SpoofChecking validation" @@ -1524,7 +1560,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-master": "3.0.x-dev" + "dev-master": "4.0.x-dev" } }, "autoload": { @@ -1552,7 +1588,7 @@ ], "support": { "issues": "https://github.com/egulias/EmailValidator/issues", - "source": "https://github.com/egulias/EmailValidator/tree/3.2.1" + "source": "https://github.com/egulias/EmailValidator/tree/4.0.2" }, "funding": [ { @@ -1560,26 +1596,86 @@ "type": "github" } ], - "time": "2022-06-18T20:57:19+00:00" + "time": "2023-10-06T06:47:41+00:00" + }, + { + "name": "excelwebzone/recaptcha-bundle", + "version": "v1.5.40", + "source": { + "type": "git", + "url": "https://github.com/excelwebzone/EWZRecaptchaBundle.git", + "reference": "5e6c96f67cc0776b7cd795730321c3f492737399" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/excelwebzone/EWZRecaptchaBundle/zipball/5e6c96f67cc0776b7cd795730321c3f492737399", + "reference": "5e6c96f67cc0776b7cd795730321c3f492737399", + "shasum": "" + }, + "require": { + "google/recaptcha": "^1.1", + "php": "^7.1 || ^8.0", + "symfony/form": "^2.8 || ^3.0 || ^4.0 || ^5.0 || ^6.0 || ^7.0", + "symfony/framework-bundle": "^2.8 || ^3.0 || ^4.0 || ^5.0 || ^6.0 || ^7.0", + "symfony/security-bundle": "^2.8 || ^3.0 || ^4.0 || ^5.0 || ^6.0 || ^7.0", + "symfony/validator": "^2.8 || ^3.0 || ^4.0 || ^5.0 || ^6.0 || ^7.0", + "symfony/yaml": "^2.8 || ^3.0 || ^4.0 || ^5.0 || ^6.0 || ^7.0", + "twig/twig": "^1.40 || ^2.9 || ^3.0" + }, + "require-dev": { + "phpunit/phpunit": "^7 || ^8 || ^9.5" + }, + "type": "symfony-bundle", + "extra": { + "symfony": { + "allow-contrib": "true" + } + }, + "autoload": { + "psr-4": { + "EWZ\\Bundle\\RecaptchaBundle\\": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Michael H. Arieli", + "email": "excelwebzone@gmail.com", + "homepage": "http://excelwebzone.com/" + } + ], + "description": "This bundle provides easy reCAPTCHA form field integration", + "homepage": "https://github.com/excelwebzone/EWZRecaptchaBundle", + "keywords": [ + "recaptcha" + ], + "support": { + "issues": "https://github.com/excelwebzone/EWZRecaptchaBundle/issues", + "source": "https://github.com/excelwebzone/EWZRecaptchaBundle/tree/v1.5.40" + }, + "time": "2024-01-09T14:23:35+00:00" }, { "name": "friendsofphp/proxy-manager-lts", - "version": "v1.0.12", + "version": "v1.0.18", "source": { "type": "git", "url": "https://github.com/FriendsOfPHP/proxy-manager-lts.git", - "reference": "8419f0158715b30d4b99a5bd37c6a39671994ad7" + "reference": "2c8a6cffc3220e99352ad958fe7cf06bf6f7690f" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/FriendsOfPHP/proxy-manager-lts/zipball/8419f0158715b30d4b99a5bd37c6a39671994ad7", - "reference": "8419f0158715b30d4b99a5bd37c6a39671994ad7", + "url": "https://api.github.com/repos/FriendsOfPHP/proxy-manager-lts/zipball/2c8a6cffc3220e99352ad958fe7cf06bf6f7690f", + "reference": "2c8a6cffc3220e99352ad958fe7cf06bf6f7690f", "shasum": "" }, "require": { "laminas/laminas-code": "~3.4.1|^4.0", "php": ">=7.1", - "symfony/filesystem": "^4.4.17|^5.0|^6.0" + "symfony/filesystem": "^4.4.17|^5.0|^6.0|^7.0" }, "conflict": { "laminas/laminas-stdlib": "<3.2.1", @@ -1590,7 +1686,7 @@ }, "require-dev": { "ext-phar": "*", - "symfony/phpunit-bridge": "^5.4|^6.0" + "symfony/phpunit-bridge": "^5.4|^6.0|^7.0" }, "type": "library", "extra": { @@ -1630,7 +1726,7 @@ ], "support": { "issues": "https://github.com/FriendsOfPHP/proxy-manager-lts/issues", - "source": "https://github.com/FriendsOfPHP/proxy-manager-lts/tree/v1.0.12" + "source": "https://github.com/FriendsOfPHP/proxy-manager-lts/tree/v1.0.18" }, "funding": [ { @@ -1642,26 +1738,78 @@ "type": "tidelift" } ], - "time": "2022-05-05T09:31:05+00:00" + "time": "2024-03-20T12:50:41+00:00" + }, + { + "name": "google/recaptcha", + "version": "1.3.0", + "source": { + "type": "git", + "url": "https://github.com/google/recaptcha.git", + "reference": "d59a801e98a4e9174814a6d71bbc268dff1202df" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/google/recaptcha/zipball/d59a801e98a4e9174814a6d71bbc268dff1202df", + "reference": "d59a801e98a4e9174814a6d71bbc268dff1202df", + "shasum": "" + }, + "require": { + "php": ">=8" + }, + "require-dev": { + "friendsofphp/php-cs-fixer": "^3.14", + "php-coveralls/php-coveralls": "^2.5", + "phpunit/phpunit": "^10" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.3.x-dev" + } + }, + "autoload": { + "psr-4": { + "ReCaptcha\\": "src/ReCaptcha" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "description": "Client library for reCAPTCHA, a free service that protects websites from spam and abuse.", + "homepage": "https://www.google.com/recaptcha/", + "keywords": [ + "Abuse", + "captcha", + "recaptcha", + "spam" + ], + "support": { + "forum": "https://groups.google.com/forum/#!forum/recaptcha", + "issues": "https://github.com/google/recaptcha/issues", + "source": "https://github.com/google/recaptcha" + }, + "time": "2023-02-18T17:41:46+00:00" }, { "name": "guzzlehttp/guzzle", - "version": "7.4.5", + "version": "7.8.1", "source": { "type": "git", "url": "https://github.com/guzzle/guzzle.git", - "reference": "1dd98b0564cb3f6bd16ce683cb755f94c10fbd82" + "reference": "41042bc7ab002487b876a0683fc8dce04ddce104" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/guzzle/guzzle/zipball/1dd98b0564cb3f6bd16ce683cb755f94c10fbd82", - "reference": "1dd98b0564cb3f6bd16ce683cb755f94c10fbd82", + "url": "https://api.github.com/repos/guzzle/guzzle/zipball/41042bc7ab002487b876a0683fc8dce04ddce104", + "reference": "41042bc7ab002487b876a0683fc8dce04ddce104", "shasum": "" }, "require": { "ext-json": "*", - "guzzlehttp/promises": "^1.5", - "guzzlehttp/psr7": "^1.9 || ^2.4", + "guzzlehttp/promises": "^1.5.3 || ^2.0.1", + "guzzlehttp/psr7": "^1.9.1 || ^2.5.1", "php": "^7.2.5 || ^8.0", "psr/http-client": "^1.0", "symfony/deprecation-contracts": "^2.2 || ^3.0" @@ -1670,10 +1818,11 @@ "psr/http-client-implementation": "1.0" }, "require-dev": { - "bamarni/composer-bin-plugin": "^1.4.1", + "bamarni/composer-bin-plugin": "^1.8.2", "ext-curl": "*", - "php-http/client-integration-tests": "^3.0", - "phpunit/phpunit": "^8.5.5 || ^9.3.5", + "php-http/client-integration-tests": "dev-master#2c025848417c1135031fdf9c728ee53d0a7ceaee as 3.0.999", + "php-http/message-factory": "^1.1", + "phpunit/phpunit": "^8.5.36 || ^9.6.15", "psr/log": "^1.1 || ^2.0 || ^3.0" }, "suggest": { @@ -1683,8 +1832,9 @@ }, "type": "library", "extra": { - "branch-alias": { - "dev-master": "7.4-dev" + "bamarni-bin": { + "bin-links": true, + "forward-command": false } }, "autoload": { @@ -1750,7 +1900,7 @@ ], "support": { "issues": "https://github.com/guzzle/guzzle/issues", - "source": "https://github.com/guzzle/guzzle/tree/7.4.5" + "source": "https://github.com/guzzle/guzzle/tree/7.8.1" }, "funding": [ { @@ -1766,38 +1916,37 @@ "type": "tidelift" } ], - "time": "2022-06-20T22:16:13+00:00" + "time": "2023-12-03T20:35:24+00:00" }, { "name": "guzzlehttp/promises", - "version": "1.5.1", + "version": "2.0.2", "source": { "type": "git", "url": "https://github.com/guzzle/promises.git", - "reference": "fe752aedc9fd8fcca3fe7ad05d419d32998a06da" + "reference": "bbff78d96034045e58e13dedd6ad91b5d1253223" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/guzzle/promises/zipball/fe752aedc9fd8fcca3fe7ad05d419d32998a06da", - "reference": "fe752aedc9fd8fcca3fe7ad05d419d32998a06da", + "url": "https://api.github.com/repos/guzzle/promises/zipball/bbff78d96034045e58e13dedd6ad91b5d1253223", + "reference": "bbff78d96034045e58e13dedd6ad91b5d1253223", "shasum": "" }, "require": { - "php": ">=5.5" + "php": "^7.2.5 || ^8.0" }, "require-dev": { - "symfony/phpunit-bridge": "^4.4 || ^5.1" + "bamarni/composer-bin-plugin": "^1.8.2", + "phpunit/phpunit": "^8.5.36 || ^9.6.15" }, "type": "library", "extra": { - "branch-alias": { - "dev-master": "1.5-dev" + "bamarni-bin": { + "bin-links": true, + "forward-command": false } }, "autoload": { - "files": [ - "src/functions_include.php" - ], "psr-4": { "GuzzleHttp\\Promise\\": "src/" } @@ -1834,7 +1983,7 @@ ], "support": { "issues": "https://github.com/guzzle/promises/issues", - "source": "https://github.com/guzzle/promises/tree/1.5.1" + "source": "https://github.com/guzzle/promises/tree/2.0.2" }, "funding": [ { @@ -1850,26 +1999,26 @@ "type": "tidelift" } ], - "time": "2021-10-22T20:56:57+00:00" + "time": "2023-12-03T20:19:20+00:00" }, { "name": "guzzlehttp/psr7", - "version": "2.4.0", + "version": "2.6.2", "source": { "type": "git", "url": "https://github.com/guzzle/psr7.git", - "reference": "13388f00956b1503577598873fffb5ae994b5737" + "reference": "45b30f99ac27b5ca93cb4831afe16285f57b8221" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/guzzle/psr7/zipball/13388f00956b1503577598873fffb5ae994b5737", - "reference": "13388f00956b1503577598873fffb5ae994b5737", + "url": "https://api.github.com/repos/guzzle/psr7/zipball/45b30f99ac27b5ca93cb4831afe16285f57b8221", + "reference": "45b30f99ac27b5ca93cb4831afe16285f57b8221", "shasum": "" }, "require": { "php": "^7.2.5 || ^8.0", "psr/http-factory": "^1.0", - "psr/http-message": "^1.0", + "psr/http-message": "^1.1 || ^2.0", "ralouphie/getallheaders": "^3.0" }, "provide": { @@ -1877,17 +2026,18 @@ "psr/http-message-implementation": "1.0" }, "require-dev": { - "bamarni/composer-bin-plugin": "^1.4.1", + "bamarni/composer-bin-plugin": "^1.8.2", "http-interop/http-factory-tests": "^0.9", - "phpunit/phpunit": "^8.5.8 || ^9.3.10" + "phpunit/phpunit": "^8.5.36 || ^9.6.15" }, "suggest": { "laminas/laminas-httphandlerrunner": "Emit PSR-7 responses" }, "type": "library", "extra": { - "branch-alias": { - "dev-master": "2.4-dev" + "bamarni-bin": { + "bin-links": true, + "forward-command": false } }, "autoload": { @@ -1949,7 +2099,7 @@ ], "support": { "issues": "https://github.com/guzzle/psr7/issues", - "source": "https://github.com/guzzle/psr7/tree/2.4.0" + "source": "https://github.com/guzzle/psr7/tree/2.6.2" }, "funding": [ { @@ -1965,42 +2115,43 @@ "type": "tidelift" } ], - "time": "2022-06-20T21:43:11+00:00" + "time": "2023-12-03T20:05:35+00:00" }, { "name": "knplabs/knp-components", - "version": "v3.4.0", + "version": "v4.4.0", "source": { "type": "git", "url": "https://github.com/KnpLabs/knp-components.git", - "reference": "d990ef101bab58a078b6eb7250e57f5c68af5604" + "reference": "59ef316e34e814449d8718d7151946bdbb5e553f" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/KnpLabs/knp-components/zipball/d990ef101bab58a078b6eb7250e57f5c68af5604", - "reference": "d990ef101bab58a078b6eb7250e57f5c68af5604", + "url": "https://api.github.com/repos/KnpLabs/knp-components/zipball/59ef316e34e814449d8718d7151946bdbb5e553f", + "reference": "59ef316e34e814449d8718d7151946bdbb5e553f", "shasum": "" }, "require": { - "php": "^7.3 || ^8.0", - "symfony/event-dispatcher-contracts": "^1.1 || ^2.0", - "symfony/http-foundation": "^4.4 || ^5.4 || ^6.0" + "php": "^8.0", + "symfony/event-dispatcher-contracts": "^3.0" }, "conflict": { - "doctrine/dbal": "<2.10" + "doctrine/dbal": "<3.8" }, "require-dev": { - "doctrine/mongodb-odm": "^2.0", - "doctrine/orm": "^2.7", - "doctrine/phpcr-odm": "^1.2", + "doctrine/dbal": "^3.8 || ^4.0", + "doctrine/mongodb-odm": "^2.5.5", + "doctrine/orm": "^2.13 || ^3.0", + "doctrine/phpcr-odm": "^1.8 || ^2.0", "ext-pdo_sqlite": "*", - "jackalope/jackalope-doctrine-dbal": "^1.2", - "phpunit/phpunit": "^9.5", + "jackalope/jackalope-doctrine-dbal": "^1.12 || ^2.0", + "phpunit/phpunit": "^9.6", "propel/propel1": "^1.7", "ruflin/elastica": "^7.0", "solarium/solarium": "^6.0", - "symfony/http-kernel": "^4.4 || ^5.4 || ^6.0", - "symfony/property-access": "^4.4 || ^5.4 || ^6.0" + "symfony/http-foundation": "^5.4.38 || ^6.4.4 || ^7.0", + "symfony/http-kernel": "^5.4.38 || ^6.4.4 || ^7.0", + "symfony/property-access": "^5.4.38 || ^6.4.4 || ^7.0" }, "suggest": { "doctrine/common": "to allow usage pagination with Doctrine ArrayCollection", @@ -2010,12 +2161,13 @@ "propel/propel1": "to allow usage pagination with Propel ORM", "ruflin/elastica": "to allow usage pagination with ElasticSearch Client", "solarium/solarium": "to allow usage pagination with Solarium Client", - "symfony/property-access": "To allow sorting arrays" + "symfony/http-foundation": "to retrieve arguments from Request", + "symfony/property-access": "to allow sorting arrays" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "3.x-dev" + "dev-master": "4.x-dev" } }, "autoload": { @@ -2038,7 +2190,7 @@ } ], "description": "Knplabs component library", - "homepage": "http://github.com/KnpLabs/knp-components", + "homepage": "https://github.com/KnpLabs/knp-components", "keywords": [ "components", "knp", @@ -2048,37 +2200,38 @@ ], "support": { "issues": "https://github.com/KnpLabs/knp-components/issues", - "source": "https://github.com/KnpLabs/knp-components/tree/v3.4.0" + "source": "https://github.com/KnpLabs/knp-components/tree/v4.4.0" }, - "time": "2021-12-04T18:46:24+00:00" + "time": "2024-04-23T07:05:01+00:00" }, { "name": "knplabs/knp-menu", - "version": "v3.3.0", + "version": "v3.5.0", "source": { "type": "git", "url": "https://github.com/KnpLabs/KnpMenu.git", - "reference": "8bd3dc2afa22c65617c563c5e25e62d6e23e98c7" + "reference": "c39403f7c427d1b72cc56f38df0a075b4b9191fe" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/KnpLabs/KnpMenu/zipball/8bd3dc2afa22c65617c563c5e25e62d6e23e98c7", - "reference": "8bd3dc2afa22c65617c563c5e25e62d6e23e98c7", + "url": "https://api.github.com/repos/KnpLabs/KnpMenu/zipball/c39403f7c427d1b72cc56f38df0a075b4b9191fe", + "reference": "c39403f7c427d1b72cc56f38df0a075b4b9191fe", "shasum": "" }, "require": { - "php": "^7.3 || ^8.0" + "php": "^8.1" }, "conflict": { - "twig/twig": "<1.40 || >=2,<2.9" + "twig/twig": "<1.42.3 || >=2,<2.9" }, "require-dev": { - "phpunit/phpunit": "^9.5", - "psr/container": "^1.0", - "symfony/http-foundation": "^4.4 || ^5.0 || ^6.0", - "symfony/phpunit-bridge": "^5.3", - "symfony/routing": "^4.4 || ^5.0 || ^6.0", - "twig/twig": "^1.40 || ^2.9 || ^3.0" + "phpstan/phpstan": "^1.10", + "phpunit/phpunit": "^9.6", + "psr/container": "^1.0 || ^2.0", + "symfony/http-foundation": "^5.4 || ^6.0 || ^7.0", + "symfony/phpunit-bridge": "^7.0", + "symfony/routing": "^5.4 || ^6.0 || ^7.0", + "twig/twig": "^2.16 || ^3.0" }, "suggest": { "twig/twig": "for the TwigRenderer and the integration with your templates" @@ -2086,7 +2239,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-master": "3.3-dev" + "dev-master": "3.x-dev" } }, "autoload": { @@ -2120,34 +2273,35 @@ ], "support": { "issues": "https://github.com/KnpLabs/KnpMenu/issues", - "source": "https://github.com/KnpLabs/KnpMenu/tree/v3.3.0" + "source": "https://github.com/KnpLabs/KnpMenu/tree/v3.5.0" }, - "time": "2021-10-23T15:01:04+00:00" + "time": "2024-03-23T15:35:09+00:00" }, { "name": "knplabs/knp-menu-bundle", - "version": "v3.2.0", + "version": "v3.4.1", "source": { "type": "git", "url": "https://github.com/KnpLabs/KnpMenuBundle.git", - "reference": "a0b4224f872d74ae939589eb1ccf0e11291370a9" + "reference": "925dd71fc9d7c31dd852a0537757be60c25e3afe" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/KnpLabs/KnpMenuBundle/zipball/a0b4224f872d74ae939589eb1ccf0e11291370a9", - "reference": "a0b4224f872d74ae939589eb1ccf0e11291370a9", + "url": "https://api.github.com/repos/KnpLabs/KnpMenuBundle/zipball/925dd71fc9d7c31dd852a0537757be60c25e3afe", + "reference": "925dd71fc9d7c31dd852a0537757be60c25e3afe", "shasum": "" }, "require": { - "knplabs/knp-menu": "^3.1", - "php": "^7.2 || ^8.0", - "symfony/framework-bundle": "^3.4 | ^4.4 | ^5.0 | ^6.0" + "knplabs/knp-menu": "^3.3", + "php": "^8.1", + "symfony/deprecation-contracts": "^2.5 | ^3.3", + "symfony/framework-bundle": "^5.4 | ^6.0 | ^7.0" }, "require-dev": { - "phpunit/phpunit": "^8.5 | ^9.5", - "symfony/expression-language": "^3.4 | ^4.4 | ^5.0 | ^6.0", - "symfony/phpunit-bridge": "^5.2 | ^6.0", - "symfony/templating": "^3.4 | ^4.4 | ^5.0 | ^6.0" + "phpunit/phpunit": "^10.5 | ^11.0.3", + "symfony/expression-language": "^5.4 | ^6.0 | ^7.0", + "symfony/phpunit-bridge": "^6.0 | ^7.0", + "symfony/templating": "^5.4 | ^6.0 | ^7.0" }, "type": "symfony-bundle", "extra": { @@ -2184,41 +2338,41 @@ ], "support": { "issues": "https://github.com/KnpLabs/KnpMenuBundle/issues", - "source": "https://github.com/KnpLabs/KnpMenuBundle/tree/v3.2.0" + "source": "https://github.com/KnpLabs/KnpMenuBundle/tree/v3.4.1" }, - "time": "2021-10-24T07:53:34+00:00" + "time": "2024-04-15T13:35:09+00:00" }, { "name": "knplabs/knp-paginator-bundle", - "version": "v5.8.0", + "version": "v6.3.0", "source": { "type": "git", "url": "https://github.com/KnpLabs/KnpPaginatorBundle.git", - "reference": "216b9d5708001788321916c5b7632da9fb9ef6ca" + "reference": "f51fe26df07a08c1b3f272474401ef8a008b190c" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/KnpLabs/KnpPaginatorBundle/zipball/216b9d5708001788321916c5b7632da9fb9ef6ca", - "reference": "216b9d5708001788321916c5b7632da9fb9ef6ca", + "url": "https://api.github.com/repos/KnpLabs/KnpPaginatorBundle/zipball/f51fe26df07a08c1b3f272474401ef8a008b190c", + "reference": "f51fe26df07a08c1b3f272474401ef8a008b190c", "shasum": "" }, "require": { - "knplabs/knp-components": "^2.4 || ^3.0", - "php": "^7.3 || ^8.0", - "symfony/config": "^4.4 || ^5.3 || ^6.0", - "symfony/dependency-injection": "^4.4 || ^5.3 || ^6.0", - "symfony/event-dispatcher": "^4.4 || ^5.3 || ^6.0", - "symfony/http-foundation": "^4.4 || ^5.3 || ^6.0", - "symfony/http-kernel": "^4.4 || ^5.3 || ^6.0", - "symfony/routing": "^4.4 || ^5.3 || ^6.0", - "symfony/translation": "^4.4 || ^5.3 || ^6.0", - "twig/twig": "^2.0 || ^3.0" + "knplabs/knp-components": "^4.1", + "php": "^8.1", + "symfony/config": "^6.3 || ^7.0", + "symfony/dependency-injection": "^6.3 || ^7.0", + "symfony/event-dispatcher": "^6.3 || ^7.0", + "symfony/http-foundation": "^6.3 || ^7.0", + "symfony/http-kernel": "^6.3 || ^7.0", + "symfony/routing": "^6.3 || ^7.0", + "symfony/translation": "^6.3 || ^7.0", + "twig/twig": "^3.0" }, "require-dev": { - "phpstan/phpstan": "^0.12.93", - "phpunit/phpunit": "^8.5 || ^9.5", - "symfony/expression-language": "^4.4 || ^5.3 || ^6.0", - "symfony/templating": "^4.4 || ^5.3 || ^6.0" + "phpstan/phpstan": "^1.9", + "phpunit/phpunit": "^9.5", + "symfony/expression-language": "^6.3 || ^7.0", + "symfony/templating": "^6.3 || ^7.0" }, "type": "symfony-bundle", "extra": { @@ -2238,15 +2392,15 @@ "authors": [ { "name": "KnpLabs Team", - "homepage": "http://knplabs.com" + "homepage": "https://knplabs.com" }, { "name": "Symfony Community", - "homepage": "http://github.com/KnpLabs/KnpPaginatorBundle/contributors" + "homepage": "https://github.com/KnpLabs/KnpPaginatorBundle/contributors" } ], "description": "Paginator bundle for Symfony to automate pagination and simplify sorting and other features", - "homepage": "http://github.com/KnpLabs/KnpPaginatorBundle", + "homepage": "https://github.com/KnpLabs/KnpPaginatorBundle", "keywords": [ "bundle", "knp", @@ -2258,35 +2412,35 @@ ], "support": { "issues": "https://github.com/KnpLabs/KnpPaginatorBundle/issues", - "source": "https://github.com/KnpLabs/KnpPaginatorBundle/tree/v5.8.0" + "source": "https://github.com/KnpLabs/KnpPaginatorBundle/tree/v6.3.0" }, - "time": "2021-10-30T08:27:46+00:00" + "time": "2023-11-19T08:15:37+00:00" }, { "name": "laminas/laminas-code", - "version": "4.6.0", + "version": "4.13.0", "source": { "type": "git", "url": "https://github.com/laminas/laminas-code.git", - "reference": "16ec7577ff315d53ac2e1b1f03a344d8fe680a6e" + "reference": "7353d4099ad5388e84737dd16994316a04f48dbf" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/laminas/laminas-code/zipball/16ec7577ff315d53ac2e1b1f03a344d8fe680a6e", - "reference": "16ec7577ff315d53ac2e1b1f03a344d8fe680a6e", + "url": "https://api.github.com/repos/laminas/laminas-code/zipball/7353d4099ad5388e84737dd16994316a04f48dbf", + "reference": "7353d4099ad5388e84737dd16994316a04f48dbf", "shasum": "" }, "require": { - "php": ">=7.4, <8.2" + "php": "~8.1.0 || ~8.2.0 || ~8.3.0" }, "require-dev": { - "doctrine/annotations": "^1.13.2", + "doctrine/annotations": "^2.0.1", "ext-phar": "*", - "laminas/laminas-coding-standard": "^2.3.0", - "laminas/laminas-stdlib": "^3.6.1", - "phpunit/phpunit": "^9.5.10", - "psalm/plugin-phpunit": "^0.17.0", - "vimeo/psalm": "^4.13.1" + "laminas/laminas-coding-standard": "^2.5.0", + "laminas/laminas-stdlib": "^3.17.0", + "phpunit/phpunit": "^10.3.3", + "psalm/plugin-phpunit": "^0.18.4", + "vimeo/psalm": "^5.15.0" }, "suggest": { "doctrine/annotations": "Doctrine\\Common\\Annotations >=1.0 for annotation features", @@ -2294,9 +2448,6 @@ }, "type": "library", "autoload": { - "files": [ - "polyfill/ReflectionEnumPolyfill.php" - ], "psr-4": { "Laminas\\Code\\": "src/" } @@ -2326,111 +2477,134 @@ "type": "community_bridge" } ], - "time": "2022-07-28T22:46:52+00:00" + "time": "2023-10-18T10:00:55+00:00" }, { - "name": "minimalcode/search", - "version": "1.0.1", + "name": "league/uri", + "version": "7.4.1", "source": { "type": "git", - "url": "https://github.com/minimalcode-org/search.git", - "reference": "7cd5c61e4ae8c29e3043297e2368bd479d115b3a" + "url": "https://github.com/thephpleague/uri.git", + "reference": "bedb6e55eff0c933668addaa7efa1e1f2c417cc4" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/minimalcode-org/search/zipball/7cd5c61e4ae8c29e3043297e2368bd479d115b3a", - "reference": "7cd5c61e4ae8c29e3043297e2368bd479d115b3a", + "url": "https://api.github.com/repos/thephpleague/uri/zipball/bedb6e55eff0c933668addaa7efa1e1f2c417cc4", + "reference": "bedb6e55eff0c933668addaa7efa1e1f2c417cc4", "shasum": "" }, "require": { - "php": ">=5.4" + "league/uri-interfaces": "^7.3", + "php": "^8.1" }, - "require-dev": { - "phpunit/phpunit": "4.8.*" + "conflict": { + "league/uri-schemes": "^1.0" }, "suggest": { - "solarium/solarium": "*" + "ext-bcmath": "to improve IPV4 host parsing", + "ext-fileinfo": "to create Data URI from file contennts", + "ext-gmp": "to improve IPV4 host parsing", + "ext-intl": "to handle IDN host with the best performance", + "jeremykendall/php-domain-parser": "to resolve Public Suffix and Top Level Domain", + "league/uri-components": "Needed to easily manipulate URI objects components", + "php-64bit": "to improve IPV4 host parsing", + "symfony/polyfill-intl-idn": "to handle IDN host via the Symfony polyfill if ext-intl is not present" }, "type": "library", + "extra": { + "branch-alias": { + "dev-master": "7.x-dev" + } + }, "autoload": { "psr-4": { - "Minimalcode\\Search\\": "src/Minimalcode/Search/" + "League\\Uri\\": "" } }, "notification-url": "https://packagist.org/downloads/", "license": [ - "Apache-2.0" + "MIT" ], "authors": [ { - "name": "Fabio Piro", - "email": "pirofabio@gmail.com" + "name": "Ignace Nyamagana Butera", + "email": "nyamsprod@gmail.com", + "homepage": "https://nyamsprod.com" } ], - "description": "Fluent Lucene-Sorl Query Builder for PHP", - "homepage": "http://minimalcode.org", + "description": "URI manipulation library", + "homepage": "https://uri.thephpleague.com", "keywords": [ - "builder", - "lucene", - "query", - "solr" + "data-uri", + "file-uri", + "ftp", + "hostname", + "http", + "https", + "middleware", + "parse_str", + "parse_url", + "psr-7", + "query-string", + "querystring", + "rfc3986", + "rfc3987", + "rfc6570", + "uri", + "uri-template", + "url", + "ws" ], "support": { - "issues": "https://github.com/minimalcode-org/search/issues", - "source": "https://github.com/minimalcode-org/search/tree/master" + "docs": "https://uri.thephpleague.com", + "forum": "https://thephpleague.slack.com", + "issues": "https://github.com/thephpleague/uri-src/issues", + "source": "https://github.com/thephpleague/uri/tree/7.4.1" }, - "time": "2017-02-05T00:00:15+00:00" + "funding": [ + { + "url": "https://github.com/sponsors/nyamsprod", + "type": "github" + } + ], + "time": "2024-03-23T07:42:40+00:00" }, { - "name": "monolog/monolog", - "version": "1.27.1", + "name": "league/uri-interfaces", + "version": "7.4.1", "source": { "type": "git", - "url": "https://github.com/Seldaek/monolog.git", - "reference": "904713c5929655dc9b97288b69cfeedad610c9a1" + "url": "https://github.com/thephpleague/uri-interfaces.git", + "reference": "8d43ef5c841032c87e2de015972c06f3865ef718" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/Seldaek/monolog/zipball/904713c5929655dc9b97288b69cfeedad610c9a1", - "reference": "904713c5929655dc9b97288b69cfeedad610c9a1", + "url": "https://api.github.com/repos/thephpleague/uri-interfaces/zipball/8d43ef5c841032c87e2de015972c06f3865ef718", + "reference": "8d43ef5c841032c87e2de015972c06f3865ef718", "shasum": "" }, "require": { - "php": ">=5.3.0", - "psr/log": "~1.0" - }, - "provide": { - "psr/log-implementation": "1.0.0" - }, - "require-dev": { - "aws/aws-sdk-php": "^2.4.9 || ^3.0", - "doctrine/couchdb": "~1.0@dev", - "graylog2/gelf-php": "~1.0", - "php-amqplib/php-amqplib": "~2.4", - "php-console/php-console": "^3.1.3", - "phpstan/phpstan": "^0.12.59", - "phpunit/phpunit": "~4.5", - "ruflin/elastica": ">=0.90 <3.0", - "sentry/sentry": "^0.13", - "swiftmailer/swiftmailer": "^5.3|^6.0" + "ext-filter": "*", + "php": "^8.1", + "psr/http-factory": "^1", + "psr/http-message": "^1.1 || ^2.0" }, "suggest": { - "aws/aws-sdk-php": "Allow sending log messages to AWS services like DynamoDB", - "doctrine/couchdb": "Allow sending log messages to a CouchDB server", - "ext-amqp": "Allow sending log messages to an AMQP server (1.0+ required)", - "ext-mongo": "Allow sending log messages to a MongoDB server", - "graylog2/gelf-php": "Allow sending log messages to a GrayLog2 server", - "mongodb/mongodb": "Allow sending log messages to a MongoDB server via PHP Driver", - "php-amqplib/php-amqplib": "Allow sending log messages to an AMQP server using php-amqplib", - "php-console/php-console": "Allow sending log messages to Google Chrome", - "rollbar/rollbar": "Allow sending log messages to Rollbar", - "ruflin/elastica": "Allow sending log messages to an Elastic Search server", - "sentry/sentry": "Allow sending log messages to a Sentry server" + "ext-bcmath": "to improve IPV4 host parsing", + "ext-gmp": "to improve IPV4 host parsing", + "ext-intl": "to handle IDN host with the best performance", + "php-64bit": "to improve IPV4 host parsing", + "symfony/polyfill-intl-idn": "to handle IDN host via the Symfony polyfill if ext-intl is not present" }, "type": "library", + "extra": { + "branch-alias": { + "dev-master": "7.x-dev" + } + }, "autoload": { "psr-4": { - "Monolog\\": "src/Monolog" + "League\\Uri\\": "" } }, "notification-url": "https://packagist.org/downloads/", @@ -2439,53 +2613,77 @@ ], "authors": [ { - "name": "Jordi Boggiano", - "email": "j.boggiano@seld.be", - "homepage": "http://seld.be" + "name": "Ignace Nyamagana Butera", + "email": "nyamsprod@gmail.com", + "homepage": "https://nyamsprod.com" } ], - "description": "Sends your logs to files, sockets, inboxes, databases and various web services", - "homepage": "http://github.com/Seldaek/monolog", + "description": "Common interfaces and classes for URI representation and interaction", + "homepage": "https://uri.thephpleague.com", "keywords": [ - "log", - "logging", - "psr-3" + "data-uri", + "file-uri", + "ftp", + "hostname", + "http", + "https", + "parse_str", + "parse_url", + "psr-7", + "query-string", + "querystring", + "rfc3986", + "rfc3987", + "rfc6570", + "uri", + "url", + "ws" ], "support": { - "issues": "https://github.com/Seldaek/monolog/issues", - "source": "https://github.com/Seldaek/monolog/tree/1.27.1" + "docs": "https://uri.thephpleague.com", + "forum": "https://thephpleague.slack.com", + "issues": "https://github.com/thephpleague/uri-src/issues", + "source": "https://github.com/thephpleague/uri-interfaces/tree/7.4.1" }, "funding": [ { - "url": "https://github.com/Seldaek", + "url": "https://github.com/sponsors/nyamsprod", "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/monolog/monolog", - "type": "tidelift" } ], - "time": "2022-06-09T08:53:42+00:00" + "time": "2024-03-23T07:42:40+00:00" }, { - "name": "ninsuo/symfony-collection", - "version": "2.1.33", + "name": "masterminds/html5", + "version": "2.9.0", "source": { "type": "git", - "url": "https://github.com/ninsuo/symfony-collection.git", - "reference": "231f790eee9ea2c3301ac45f5fe4fbb09ec4289c" + "url": "https://github.com/Masterminds/html5-php.git", + "reference": "f5ac2c0b0a2eefca70b2ce32a5809992227e75a6" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/ninsuo/symfony-collection/zipball/231f790eee9ea2c3301ac45f5fe4fbb09ec4289c", - "reference": "231f790eee9ea2c3301ac45f5fe4fbb09ec4289c", + "url": "https://api.github.com/repos/Masterminds/html5-php/zipball/f5ac2c0b0a2eefca70b2ce32a5809992227e75a6", + "reference": "f5ac2c0b0a2eefca70b2ce32a5809992227e75a6", "shasum": "" }, + "require": { + "ext-dom": "*", + "php": ">=5.3.0" + }, + "require-dev": { + "phpunit/phpunit": "^4.8.35 || ^5.7.21 || ^6 || ^7 || ^8 || ^9" + }, "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.7-dev" + } + }, "autoload": { - "classmap": [ - "ScriptHandler.php" - ] + "psr-4": { + "Masterminds\\": "src" + } }, "notification-url": "https://packagist.org/downloads/", "license": [ @@ -2493,56 +2691,100 @@ ], "authors": [ { - "name": "Alain Tiemblo", - "email": "ninsuo@gmail.com" + "name": "Matt Butcher", + "email": "technosophos@gmail.com" + }, + { + "name": "Matt Farina", + "email": "matt@mattfarina.com" + }, + { + "name": "Asmir Mustafic", + "email": "goetas@gmail.com" } ], - "description": "A jQuery plugin that manages adding, deleting and moving elements from a Symfony collection", + "description": "An HTML5 parser and serializer.", + "homepage": "http://masterminds.github.io/html5-php", + "keywords": [ + "HTML5", + "dom", + "html", + "parser", + "querypath", + "serializer", + "xml" + ], "support": { - "issues": "https://github.com/ninsuo/symfony-collection/issues", - "source": "https://github.com/ninsuo/symfony-collection/tree/2.1.33" + "issues": "https://github.com/Masterminds/html5-php/issues", + "source": "https://github.com/Masterminds/html5-php/tree/2.9.0" }, - "time": "2020-01-13T12:54:48+00:00" + "time": "2024-03-31T07:05:07+00:00" }, { - "name": "nyholm/psr7", - "version": "1.5.1", + "name": "monolog/monolog", + "version": "3.6.0", "source": { "type": "git", - "url": "https://github.com/Nyholm/psr7.git", - "reference": "f734364e38a876a23be4d906a2a089e1315be18a" + "url": "https://github.com/Seldaek/monolog.git", + "reference": "4b18b21a5527a3d5ffdac2fd35d3ab25a9597654" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/Nyholm/psr7/zipball/f734364e38a876a23be4d906a2a089e1315be18a", - "reference": "f734364e38a876a23be4d906a2a089e1315be18a", + "url": "https://api.github.com/repos/Seldaek/monolog/zipball/4b18b21a5527a3d5ffdac2fd35d3ab25a9597654", + "reference": "4b18b21a5527a3d5ffdac2fd35d3ab25a9597654", "shasum": "" }, "require": { - "php": ">=7.1", - "php-http/message-factory": "^1.0", - "psr/http-factory": "^1.0", - "psr/http-message": "^1.0" + "php": ">=8.1", + "psr/log": "^2.0 || ^3.0" }, "provide": { - "psr/http-factory-implementation": "1.0", - "psr/http-message-implementation": "1.0" + "psr/log-implementation": "3.0.0" }, "require-dev": { - "http-interop/http-factory-tests": "^0.9", - "php-http/psr7-integration-tests": "^1.0", - "phpunit/phpunit": "^7.5 || 8.5 || 9.4", - "symfony/error-handler": "^4.4" + "aws/aws-sdk-php": "^3.0", + "doctrine/couchdb": "~1.0@dev", + "elasticsearch/elasticsearch": "^7 || ^8", + "ext-json": "*", + "graylog2/gelf-php": "^1.4.2 || ^2.0", + "guzzlehttp/guzzle": "^7.4.5", + "guzzlehttp/psr7": "^2.2", + "mongodb/mongodb": "^1.8", + "php-amqplib/php-amqplib": "~2.4 || ^3", + "phpstan/phpstan": "^1.9", + "phpstan/phpstan-deprecation-rules": "^1.0", + "phpstan/phpstan-strict-rules": "^1.4", + "phpunit/phpunit": "^10.5.17", + "predis/predis": "^1.1 || ^2", + "ruflin/elastica": "^7", + "symfony/mailer": "^5.4 || ^6", + "symfony/mime": "^5.4 || ^6" + }, + "suggest": { + "aws/aws-sdk-php": "Allow sending log messages to AWS services like DynamoDB", + "doctrine/couchdb": "Allow sending log messages to a CouchDB server", + "elasticsearch/elasticsearch": "Allow sending log messages to an Elasticsearch server via official client", + "ext-amqp": "Allow sending log messages to an AMQP server (1.0+ required)", + "ext-curl": "Required to send log messages using the IFTTTHandler, the LogglyHandler, the SendGridHandler, the SlackWebhookHandler or the TelegramBotHandler", + "ext-mbstring": "Allow to work properly with unicode symbols", + "ext-mongodb": "Allow sending log messages to a MongoDB server (via driver)", + "ext-openssl": "Required to send log messages using SSL", + "ext-sockets": "Allow sending log messages to a Syslog server (via UDP driver)", + "graylog2/gelf-php": "Allow sending log messages to a GrayLog2 server", + "mongodb/mongodb": "Allow sending log messages to a MongoDB server (via library)", + "php-amqplib/php-amqplib": "Allow sending log messages to an AMQP server using php-amqplib", + "rollbar/rollbar": "Allow sending log messages to Rollbar", + "ruflin/elastica": "Allow sending log messages to an Elastic Search server" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "1.4-dev" + "dev-main": "3.x-dev" } }, "autoload": { "psr-4": { - "Nyholm\\Psr7\\": "src/" + "Monolog\\": "src/Monolog" } }, "notification-url": "https://packagist.org/downloads/", @@ -2551,63 +2793,111 @@ ], "authors": [ { - "name": "Tobias Nyholm", - "email": "tobias.nyholm@gmail.com" - }, - { - "name": "Martijn van der Ven", - "email": "martijn@vanderven.se" + "name": "Jordi Boggiano", + "email": "j.boggiano@seld.be", + "homepage": "https://seld.be" } ], - "description": "A fast PHP7 implementation of PSR-7", - "homepage": "https://tnyholm.se", + "description": "Sends your logs to files, sockets, inboxes, databases and various web services", + "homepage": "https://github.com/Seldaek/monolog", "keywords": [ - "psr-17", - "psr-7" + "log", + "logging", + "psr-3" ], "support": { - "issues": "https://github.com/Nyholm/psr7/issues", - "source": "https://github.com/Nyholm/psr7/tree/1.5.1" + "issues": "https://github.com/Seldaek/monolog/issues", + "source": "https://github.com/Seldaek/monolog/tree/3.6.0" }, "funding": [ { - "url": "https://github.com/Zegnat", + "url": "https://github.com/Seldaek", "type": "github" }, { - "url": "https://github.com/nyholm", - "type": "github" + "url": "https://tidelift.com/funding/github/packagist/monolog/monolog", + "type": "tidelift" + } + ], + "time": "2024-04-12T21:02:21+00:00" + }, + { + "name": "ninsuo/symfony-collection", + "version": "2.1.33", + "source": { + "type": "git", + "url": "https://github.com/ninsuo/symfony-collection.git", + "reference": "231f790eee9ea2c3301ac45f5fe4fbb09ec4289c" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/ninsuo/symfony-collection/zipball/231f790eee9ea2c3301ac45f5fe4fbb09ec4289c", + "reference": "231f790eee9ea2c3301ac45f5fe4fbb09ec4289c", + "shasum": "" + }, + "type": "library", + "autoload": { + "classmap": [ + "ScriptHandler.php" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Alain Tiemblo", + "email": "ninsuo@gmail.com" } ], - "time": "2022-06-22T07:13:36+00:00" + "description": "A jQuery plugin that manages adding, deleting and moving elements from a Symfony collection", + "support": { + "issues": "https://github.com/ninsuo/symfony-collection/issues", + "source": "https://github.com/ninsuo/symfony-collection/tree/2.1.33" + }, + "time": "2020-01-13T12:54:48+00:00" }, { - "name": "php-http/message-factory", - "version": "v1.0.2", + "name": "nyholm/psr7", + "version": "1.8.1", "source": { "type": "git", - "url": "https://github.com/php-http/message-factory.git", - "reference": "a478cb11f66a6ac48d8954216cfed9aa06a501a1" + "url": "https://github.com/Nyholm/psr7.git", + "reference": "aa5fc277a4f5508013d571341ade0c3886d4d00e" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/php-http/message-factory/zipball/a478cb11f66a6ac48d8954216cfed9aa06a501a1", - "reference": "a478cb11f66a6ac48d8954216cfed9aa06a501a1", + "url": "https://api.github.com/repos/Nyholm/psr7/zipball/aa5fc277a4f5508013d571341ade0c3886d4d00e", + "reference": "aa5fc277a4f5508013d571341ade0c3886d4d00e", "shasum": "" }, "require": { - "php": ">=5.4", - "psr/http-message": "^1.0" + "php": ">=7.2", + "psr/http-factory": "^1.0", + "psr/http-message": "^1.1 || ^2.0" + }, + "provide": { + "php-http/message-factory-implementation": "1.0", + "psr/http-factory-implementation": "1.0", + "psr/http-message-implementation": "1.0" + }, + "require-dev": { + "http-interop/http-factory-tests": "^0.9", + "php-http/message-factory": "^1.0", + "php-http/psr7-integration-tests": "^1.0", + "phpunit/phpunit": "^7.5 || ^8.5 || ^9.4", + "symfony/error-handler": "^4.4" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "1.0-dev" + "dev-master": "1.8-dev" } }, "autoload": { "psr-4": { - "Http\\Message\\": "src/" + "Nyholm\\Psr7\\": "src/" } }, "notification-url": "https://packagist.org/downloads/", @@ -2616,24 +2906,35 @@ ], "authors": [ { - "name": "Márk Sági-Kazár", - "email": "mark.sagikazar@gmail.com" + "name": "Tobias Nyholm", + "email": "tobias.nyholm@gmail.com" + }, + { + "name": "Martijn van der Ven", + "email": "martijn@vanderven.se" } ], - "description": "Factory interfaces for PSR-7 HTTP Message", - "homepage": "http://php-http.org", + "description": "A fast PHP7 implementation of PSR-7", + "homepage": "https://tnyholm.se", "keywords": [ - "factory", - "http", - "message", - "stream", - "uri" + "psr-17", + "psr-7" ], "support": { - "issues": "https://github.com/php-http/message-factory/issues", - "source": "https://github.com/php-http/message-factory/tree/master" + "issues": "https://github.com/Nyholm/psr7/issues", + "source": "https://github.com/Nyholm/psr7/tree/1.8.1" }, - "time": "2015-12-19T14:08:53+00:00" + "funding": [ + { + "url": "https://github.com/Zegnat", + "type": "github" + }, + { + "url": "https://github.com/nyholm", + "type": "github" + } + ], + "time": "2023-11-13T09:31:12+00:00" }, { "name": "phpdocumentor/reflection-common", @@ -2690,28 +2991,35 @@ }, { "name": "phpdocumentor/reflection-docblock", - "version": "5.3.0", + "version": "5.4.0", "source": { "type": "git", "url": "https://github.com/phpDocumentor/ReflectionDocBlock.git", - "reference": "622548b623e81ca6d78b721c5e029f4ce664f170" + "reference": "298d2febfe79d03fe714eb871d5538da55205b1a" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/phpDocumentor/ReflectionDocBlock/zipball/622548b623e81ca6d78b721c5e029f4ce664f170", - "reference": "622548b623e81ca6d78b721c5e029f4ce664f170", + "url": "https://api.github.com/repos/phpDocumentor/ReflectionDocBlock/zipball/298d2febfe79d03fe714eb871d5538da55205b1a", + "reference": "298d2febfe79d03fe714eb871d5538da55205b1a", "shasum": "" }, "require": { + "doctrine/deprecations": "^1.1", "ext-filter": "*", - "php": "^7.2 || ^8.0", + "php": "^7.4 || ^8.0", "phpdocumentor/reflection-common": "^2.2", - "phpdocumentor/type-resolver": "^1.3", + "phpdocumentor/type-resolver": "^1.7", + "phpstan/phpdoc-parser": "^1.7", "webmozart/assert": "^1.9.1" }, "require-dev": { - "mockery/mockery": "~1.3.2", - "psalm/phar": "^4.8" + "mockery/mockery": "~1.3.5", + "phpstan/extension-installer": "^1.1", + "phpstan/phpstan": "^1.8", + "phpstan/phpstan-mockery": "^1.1", + "phpstan/phpstan-webmozart-assert": "^1.2", + "phpunit/phpunit": "^9.5", + "vimeo/psalm": "^5.13" }, "type": "library", "extra": { @@ -2735,37 +3043,45 @@ }, { "name": "Jaap van Otterdijk", - "email": "account@ijaap.nl" + "email": "opensource@ijaap.nl" } ], "description": "With this component, a library can provide support for annotations via DocBlocks or otherwise retrieve information that is embedded in a DocBlock.", "support": { "issues": "https://github.com/phpDocumentor/ReflectionDocBlock/issues", - "source": "https://github.com/phpDocumentor/ReflectionDocBlock/tree/5.3.0" + "source": "https://github.com/phpDocumentor/ReflectionDocBlock/tree/5.4.0" }, - "time": "2021-10-19T17:43:47+00:00" + "time": "2024-04-09T21:13:58+00:00" }, { "name": "phpdocumentor/type-resolver", - "version": "1.6.1", + "version": "1.8.2", "source": { "type": "git", "url": "https://github.com/phpDocumentor/TypeResolver.git", - "reference": "77a32518733312af16a44300404e945338981de3" + "reference": "153ae662783729388a584b4361f2545e4d841e3c" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/phpDocumentor/TypeResolver/zipball/77a32518733312af16a44300404e945338981de3", - "reference": "77a32518733312af16a44300404e945338981de3", + "url": "https://api.github.com/repos/phpDocumentor/TypeResolver/zipball/153ae662783729388a584b4361f2545e4d841e3c", + "reference": "153ae662783729388a584b4361f2545e4d841e3c", "shasum": "" }, "require": { - "php": "^7.2 || ^8.0", - "phpdocumentor/reflection-common": "^2.0" + "doctrine/deprecations": "^1.0", + "php": "^7.3 || ^8.0", + "phpdocumentor/reflection-common": "^2.0", + "phpstan/phpdoc-parser": "^1.13" }, "require-dev": { "ext-tokenizer": "*", - "psalm/phar": "^4.8" + "phpbench/phpbench": "^1.2", + "phpstan/extension-installer": "^1.1", + "phpstan/phpstan": "^1.8", + "phpstan/phpstan-phpunit": "^1.1", + "phpunit/phpunit": "^9.5", + "rector/rector": "^0.13.9", + "vimeo/psalm": "^4.25" }, "type": "library", "extra": { @@ -2791,26 +3107,73 @@ "description": "A PSR-5 based resolver of Class names, Types and Structural Element Names", "support": { "issues": "https://github.com/phpDocumentor/TypeResolver/issues", - "source": "https://github.com/phpDocumentor/TypeResolver/tree/1.6.1" + "source": "https://github.com/phpDocumentor/TypeResolver/tree/1.8.2" + }, + "time": "2024-02-23T11:10:43+00:00" + }, + { + "name": "phpstan/phpdoc-parser", + "version": "1.29.0", + "source": { + "type": "git", + "url": "https://github.com/phpstan/phpdoc-parser.git", + "reference": "536889f2b340489d328f5ffb7b02bb6b183ddedc" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/phpstan/phpdoc-parser/zipball/536889f2b340489d328f5ffb7b02bb6b183ddedc", + "reference": "536889f2b340489d328f5ffb7b02bb6b183ddedc", + "shasum": "" + }, + "require": { + "php": "^7.2 || ^8.0" }, - "time": "2022-03-15T21:29:03+00:00" + "require-dev": { + "doctrine/annotations": "^2.0", + "nikic/php-parser": "^4.15", + "php-parallel-lint/php-parallel-lint": "^1.2", + "phpstan/extension-installer": "^1.0", + "phpstan/phpstan": "^1.5", + "phpstan/phpstan-phpunit": "^1.1", + "phpstan/phpstan-strict-rules": "^1.0", + "phpunit/phpunit": "^9.5", + "symfony/process": "^5.2" + }, + "type": "library", + "autoload": { + "psr-4": { + "PHPStan\\PhpDocParser\\": [ + "src/" + ] + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "description": "PHPDoc parser with support for nullable, intersection and generic types", + "support": { + "issues": "https://github.com/phpstan/phpdoc-parser/issues", + "source": "https://github.com/phpstan/phpdoc-parser/tree/1.29.0" + }, + "time": "2024-05-06T12:04:23+00:00" }, { "name": "psr/cache", - "version": "1.0.1", + "version": "3.0.0", "source": { "type": "git", "url": "https://github.com/php-fig/cache.git", - "reference": "d11b50ad223250cf17b86e38383413f5a6764bf8" + "reference": "aa5030cfa5405eccfdcb1083ce040c2cb8d253bf" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/php-fig/cache/zipball/d11b50ad223250cf17b86e38383413f5a6764bf8", - "reference": "d11b50ad223250cf17b86e38383413f5a6764bf8", + "url": "https://api.github.com/repos/php-fig/cache/zipball/aa5030cfa5405eccfdcb1083ce040c2cb8d253bf", + "reference": "aa5030cfa5405eccfdcb1083ce040c2cb8d253bf", "shasum": "" }, "require": { - "php": ">=5.3.0" + "php": ">=8.0.0" }, "type": "library", "extra": { @@ -2830,7 +3193,7 @@ "authors": [ { "name": "PHP-FIG", - "homepage": "http://www.php-fig.org/" + "homepage": "https://www.php-fig.org/" } ], "description": "Common interface for caching libraries", @@ -2840,28 +3203,81 @@ "psr-6" ], "support": { - "source": "https://github.com/php-fig/cache/tree/master" + "source": "https://github.com/php-fig/cache/tree/3.0.0" }, - "time": "2016-08-06T20:24:11+00:00" + "time": "2021-02-03T23:26:27+00:00" + }, + { + "name": "psr/clock", + "version": "1.0.0", + "source": { + "type": "git", + "url": "https://github.com/php-fig/clock.git", + "reference": "e41a24703d4560fd0acb709162f73b8adfc3aa0d" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/php-fig/clock/zipball/e41a24703d4560fd0acb709162f73b8adfc3aa0d", + "reference": "e41a24703d4560fd0acb709162f73b8adfc3aa0d", + "shasum": "" + }, + "require": { + "php": "^7.0 || ^8.0" + }, + "type": "library", + "autoload": { + "psr-4": { + "Psr\\Clock\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "PHP-FIG", + "homepage": "https://www.php-fig.org/" + } + ], + "description": "Common interface for reading the clock.", + "homepage": "https://github.com/php-fig/clock", + "keywords": [ + "clock", + "now", + "psr", + "psr-20", + "time" + ], + "support": { + "issues": "https://github.com/php-fig/clock/issues", + "source": "https://github.com/php-fig/clock/tree/1.0.0" + }, + "time": "2022-11-25T14:36:26+00:00" }, { "name": "psr/container", - "version": "1.1.2", + "version": "2.0.2", "source": { "type": "git", "url": "https://github.com/php-fig/container.git", - "reference": "513e0666f7216c7459170d56df27dfcefe1689ea" + "reference": "c71ecc56dfe541dbd90c5360474fbc405f8d5963" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/php-fig/container/zipball/513e0666f7216c7459170d56df27dfcefe1689ea", - "reference": "513e0666f7216c7459170d56df27dfcefe1689ea", + "url": "https://api.github.com/repos/php-fig/container/zipball/c71ecc56dfe541dbd90c5360474fbc405f8d5963", + "reference": "c71ecc56dfe541dbd90c5360474fbc405f8d5963", "shasum": "" }, "require": { "php": ">=7.4.0" }, "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.0.x-dev" + } + }, "autoload": { "psr-4": { "Psr\\Container\\": "src/" @@ -2888,9 +3304,9 @@ ], "support": { "issues": "https://github.com/php-fig/container/issues", - "source": "https://github.com/php-fig/container/tree/1.1.2" + "source": "https://github.com/php-fig/container/tree/2.0.2" }, - "time": "2021-11-05T16:50:12+00:00" + "time": "2021-11-05T16:47:00+00:00" }, { "name": "psr/event-dispatcher", @@ -2944,21 +3360,21 @@ }, { "name": "psr/http-client", - "version": "1.0.1", + "version": "1.0.3", "source": { "type": "git", "url": "https://github.com/php-fig/http-client.git", - "reference": "2dfb5f6c5eff0e91e20e913f8c5452ed95b86621" + "reference": "bb5906edc1c324c9a05aa0873d40117941e5fa90" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/php-fig/http-client/zipball/2dfb5f6c5eff0e91e20e913f8c5452ed95b86621", - "reference": "2dfb5f6c5eff0e91e20e913f8c5452ed95b86621", + "url": "https://api.github.com/repos/php-fig/http-client/zipball/bb5906edc1c324c9a05aa0873d40117941e5fa90", + "reference": "bb5906edc1c324c9a05aa0873d40117941e5fa90", "shasum": "" }, "require": { "php": "^7.0 || ^8.0", - "psr/http-message": "^1.0" + "psr/http-message": "^1.0 || ^2.0" }, "type": "library", "extra": { @@ -2978,7 +3394,7 @@ "authors": [ { "name": "PHP-FIG", - "homepage": "http://www.php-fig.org/" + "homepage": "https://www.php-fig.org/" } ], "description": "Common interface for HTTP clients", @@ -2990,27 +3406,27 @@ "psr-18" ], "support": { - "source": "https://github.com/php-fig/http-client/tree/master" + "source": "https://github.com/php-fig/http-client" }, - "time": "2020-06-29T06:28:15+00:00" + "time": "2023-09-23T14:17:50+00:00" }, { "name": "psr/http-factory", - "version": "1.0.1", + "version": "1.0.2", "source": { "type": "git", "url": "https://github.com/php-fig/http-factory.git", - "reference": "12ac7fcd07e5b077433f5f2bee95b3a771bf61be" + "reference": "e616d01114759c4c489f93b099585439f795fe35" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/php-fig/http-factory/zipball/12ac7fcd07e5b077433f5f2bee95b3a771bf61be", - "reference": "12ac7fcd07e5b077433f5f2bee95b3a771bf61be", + "url": "https://api.github.com/repos/php-fig/http-factory/zipball/e616d01114759c4c489f93b099585439f795fe35", + "reference": "e616d01114759c4c489f93b099585439f795fe35", "shasum": "" }, "require": { "php": ">=7.0.0", - "psr/http-message": "^1.0" + "psr/http-message": "^1.0 || ^2.0" }, "type": "library", "extra": { @@ -3030,7 +3446,7 @@ "authors": [ { "name": "PHP-FIG", - "homepage": "http://www.php-fig.org/" + "homepage": "https://www.php-fig.org/" } ], "description": "Common interfaces for PSR-7 HTTP message factories", @@ -3045,31 +3461,31 @@ "response" ], "support": { - "source": "https://github.com/php-fig/http-factory/tree/master" + "source": "https://github.com/php-fig/http-factory/tree/1.0.2" }, - "time": "2019-04-30T12:38:16+00:00" + "time": "2023-04-10T20:10:41+00:00" }, { "name": "psr/http-message", - "version": "1.0.1", + "version": "2.0", "source": { "type": "git", "url": "https://github.com/php-fig/http-message.git", - "reference": "f6561bf28d520154e4b0ec72be95418abe6d9363" + "reference": "402d35bcb92c70c026d1a6a9883f06b2ead23d71" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/php-fig/http-message/zipball/f6561bf28d520154e4b0ec72be95418abe6d9363", - "reference": "f6561bf28d520154e4b0ec72be95418abe6d9363", + "url": "https://api.github.com/repos/php-fig/http-message/zipball/402d35bcb92c70c026d1a6a9883f06b2ead23d71", + "reference": "402d35bcb92c70c026d1a6a9883f06b2ead23d71", "shasum": "" }, "require": { - "php": ">=5.3.0" + "php": "^7.2 || ^8.0" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "1.0.x-dev" + "dev-master": "2.0.x-dev" } }, "autoload": { @@ -3084,7 +3500,7 @@ "authors": [ { "name": "PHP-FIG", - "homepage": "http://www.php-fig.org/" + "homepage": "https://www.php-fig.org/" } ], "description": "Common interface for HTTP messages", @@ -3098,31 +3514,34 @@ "response" ], "support": { - "source": "https://github.com/php-fig/http-message/tree/master" + "source": "https://github.com/php-fig/http-message/tree/2.0" }, - "time": "2016-08-06T14:39:51+00:00" + "time": "2023-04-04T09:54:51+00:00" }, { "name": "psr/link", - "version": "1.0.0", + "version": "2.0.1", "source": { "type": "git", "url": "https://github.com/php-fig/link.git", - "reference": "eea8e8662d5cd3ae4517c9b864493f59fca95562" + "reference": "84b159194ecfd7eaa472280213976e96415433f7" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/php-fig/link/zipball/eea8e8662d5cd3ae4517c9b864493f59fca95562", - "reference": "eea8e8662d5cd3ae4517c9b864493f59fca95562", + "url": "https://api.github.com/repos/php-fig/link/zipball/84b159194ecfd7eaa472280213976e96415433f7", + "reference": "84b159194ecfd7eaa472280213976e96415433f7", "shasum": "" }, "require": { - "php": ">=5.3.0" + "php": ">=8.0.0" + }, + "suggest": { + "fig/link-util": "Provides some useful PSR-13 utilities" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "1.0.x-dev" + "dev-master": "2.0.x-dev" } }, "autoload": { @@ -3141,6 +3560,7 @@ } ], "description": "Common interfaces for HTTP links", + "homepage": "https://github.com/php-fig/link", "keywords": [ "http", "http-link", @@ -3150,36 +3570,36 @@ "rest" ], "support": { - "source": "https://github.com/php-fig/link/tree/master" + "source": "https://github.com/php-fig/link/tree/2.0.1" }, - "time": "2016-10-28T16:06:13+00:00" + "time": "2021-03-11T23:00:27+00:00" }, { "name": "psr/log", - "version": "1.1.4", + "version": "3.0.0", "source": { "type": "git", "url": "https://github.com/php-fig/log.git", - "reference": "d49695b909c3b7628b6289db5479a1c204601f11" + "reference": "fe5ea303b0887d5caefd3d431c3e61ad47037001" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/php-fig/log/zipball/d49695b909c3b7628b6289db5479a1c204601f11", - "reference": "d49695b909c3b7628b6289db5479a1c204601f11", + "url": "https://api.github.com/repos/php-fig/log/zipball/fe5ea303b0887d5caefd3d431c3e61ad47037001", + "reference": "fe5ea303b0887d5caefd3d431c3e61ad47037001", "shasum": "" }, "require": { - "php": ">=5.3.0" + "php": ">=8.0.0" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "1.1.x-dev" + "dev-master": "3.x-dev" } }, "autoload": { "psr-4": { - "Psr\\Log\\": "Psr/Log/" + "Psr\\Log\\": "src" } }, "notification-url": "https://packagist.org/downloads/", @@ -3200,9 +3620,9 @@ "psr-3" ], "support": { - "source": "https://github.com/php-fig/log/tree/1.1.4" + "source": "https://github.com/php-fig/log/tree/3.0.0" }, - "time": "2021-05-03T11:20:27+00:00" + "time": "2021-07-14T16:46:02+00:00" }, { "name": "ralouphie/getallheaders", @@ -3250,20 +3670,20 @@ }, { "name": "sensio/framework-extra-bundle", - "version": "v6.2.6", + "version": "v6.2.10", "source": { "type": "git", "url": "https://github.com/sensiolabs/SensioFrameworkExtraBundle.git", - "reference": "6bd976c99ef3f78e31c9490a10ba6dd8901076eb" + "reference": "2f886f4b31f23c76496901acaedfedb6936ba61f" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sensiolabs/SensioFrameworkExtraBundle/zipball/6bd976c99ef3f78e31c9490a10ba6dd8901076eb", - "reference": "6bd976c99ef3f78e31c9490a10ba6dd8901076eb", + "url": "https://api.github.com/repos/sensiolabs/SensioFrameworkExtraBundle/zipball/2f886f4b31f23c76496901acaedfedb6936ba61f", + "reference": "2f886f4b31f23c76496901acaedfedb6936ba61f", "shasum": "" }, "require": { - "doctrine/annotations": "^1.0", + "doctrine/annotations": "^1.0|^2.0", "php": ">=7.2.5", "symfony/config": "^4.4|^5.0|^6.0", "symfony/dependency-injection": "^4.4|^5.0|^6.0", @@ -3321,154 +3741,112 @@ "controllers" ], "support": { - "issues": "https://github.com/sensiolabs/SensioFrameworkExtraBundle/issues", - "source": "https://github.com/sensiolabs/SensioFrameworkExtraBundle/tree/v6.2.6" + "source": "https://github.com/sensiolabs/SensioFrameworkExtraBundle/tree/v6.2.10" }, - "time": "2022-01-14T11:51:13+00:00" + "abandoned": "Symfony", + "time": "2023-02-24T14:57:12+00:00" }, { - "name": "solarium/solarium", - "version": "6.2.6", + "name": "sfu-dhil/nines", + "version": "v6.3.17", "source": { "type": "git", - "url": "https://github.com/solariumphp/solarium.git", - "reference": "cefde7709ba6290b78bb98d4ca11899cc0eb956e" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/solariumphp/solarium/zipball/cefde7709ba6290b78bb98d4ca11899cc0eb956e", - "reference": "cefde7709ba6290b78bb98d4ca11899cc0eb956e", - "shasum": "" + "url": "https://github.com/sfu-dhil/nines-bundles.git", + "reference": "6c8633b6c83bf29810daf704ec5faa82edda64b4" }, "require": { - "composer-runtime-api": ">=2.0", + "doctrine/cache": "^2.2", + "doctrine/inflector": "^2.0", + "doctrine/persistence": "^3.1", + "egulias/email-validator": "^4.0", + "excelwebzone/recaptcha-bundle": "^1.5", + "ext-imagick": "*", "ext-json": "*", - "php": "^7.3 || ^8.0", - "psr/event-dispatcher": "^1.0", - "psr/http-client": "^1.0", - "psr/http-factory": "^1.0", - "symfony/event-dispatcher-contracts": "^1.0 || ^2.0 || ^3.0" + "guzzlehttp/guzzle": "^6.5||^7.5", + "knplabs/knp-menu-bundle": "^3.2", + "knplabs/knp-paginator-bundle": "^6.2", + "nyholm/psr7": "^1.5", + "php": ">=8.2.0", + "sensio/framework-extra-bundle": "^6.2", + "symfony/form": "6.3.*", + "symfony/html-sanitizer": "6.3.*", + "symfony/mailer": "6.3.*", + "symfony/monolog-bundle": "^3.8", + "symfony/security-bundle": "6.3.*", + "symfony/serializer-pack": "^1.3", + "symfony/twig-bundle": "6.3.*", + "symfony/validator": "6.3.*", + "twig/string-extra": "^3.5" }, "require-dev": { - "escapestudios/symfony2-coding-standard": "^3.11", - "guzzlehttp/guzzle": "^7.2", - "nyholm/psr7": "^1.2", - "php-http/guzzle7-adapter": "^0.1", - "phpstan/extension-installer": "^1.0", - "phpstan/phpstan": "^1.0", - "phpstan/phpstan-phpunit": "^1.0", - "phpunit/phpunit": "^9.5", - "roave/security-advisories": "dev-master", - "symfony/event-dispatcher": "^4.3 || ^5.0 || ^6.0" + "dama/doctrine-test-bundle": "^7.2", + "doctrine/doctrine-fixtures-bundle": "^3.4", + "friendsofphp/php-cs-fixer": "^3.49", + "friendsoftwig/twigcs": "^6.4", + "liip/test-fixtures-bundle": "^2.6.0", + "phpstan/phpstan": "^1.10", + "phpstan/phpstan-doctrine": "^1.3", + "phpstan/phpstan-symfony": "^1.2", + "phpunit/phpunit": "^9.6", + "symfony/browser-kit": "6.3.*", + "symfony/css-selector": "6.3.*", + "symfony/maker-bundle": "^1.50", + "symfony/phpunit-bridge": "6.3.*", + "symfony/test-pack": "^1.1" }, "type": "library", "autoload": { "psr-4": { - "Solarium\\": "src/" + "Nines\\BlogBundle\\": "BlogBundle", + "Nines\\DublinCoreBundle\\": "DublinCoreBundle", + "Nines\\EditorBundle\\": "EditorBundle", + "Nines\\FeedbackBundle\\": "FeedbackBundle", + "Nines\\MakerBundle\\": "MakerBundle", + "Nines\\MediaBundle\\": "MediaBundle", + "Nines\\UserBundle\\": "UserBundle", + "Nines\\UtilBundle\\": "UtilBundle" } }, - "notification-url": "https://packagist.org/downloads/", "license": [ - "BSD-3-Clause" + "gpl" ], "authors": [ { - "name": "See GitHub contributors", - "homepage": "https://github.com/solariumphp/solarium/contributors" - } - ], - "description": "PHP Solr client", - "homepage": "http://www.solarium-project.org", - "keywords": [ - "php", - "search", - "solr" - ], - "support": { - "issues": "https://github.com/solariumphp/solarium/issues", - "source": "https://github.com/solariumphp/solarium/tree/6.2.6" - }, - "time": "2022-07-22T10:29:01+00:00" - }, - { - "name": "soundasleep/html2text", - "version": "2.0.0", - "source": { - "type": "git", - "url": "https://github.com/soundasleep/html2text.git", - "reference": "aa214620d7beecd5cef8b1c32102a9204edb82f5" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/soundasleep/html2text/zipball/aa214620d7beecd5cef8b1c32102a9204edb82f5", - "reference": "aa214620d7beecd5cef8b1c32102a9204edb82f5", - "shasum": "" - }, - "require": { - "ext-dom": "*", - "ext-libxml": "*", - "php": "^7.0|^8.0" - }, - "require-dev": { - "phpunit/phpunit": "^7.0|^8.0|^9.0", - "soundasleep/component-tests": "^0.2" - }, - "type": "library", - "autoload": { - "psr-4": { - "Soundasleep\\": "src" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ + "name": "Michael Joyce", + "email": "ubermichael@gmail.com" + }, { - "name": "Jevon Wright", - "homepage": "https://jevon.org", - "role": "Developer" + "name": "Andrew Gardener", + "email": "andrew.e.gardner@gmail.com" } ], - "description": "A PHP script to convert HTML into a plain text format", - "homepage": "https://github.com/soundasleep/html2text", - "keywords": [ - "email", - "html", - "php", - "text" - ], - "support": { - "email": "support@jevon.org", - "issues": "https://github.com/soundasleep/html2text/issues", - "source": "https://github.com/soundasleep/html2text/tree/2.0.0" - }, - "time": "2022-01-29T19:05:09+00:00" + "description": "Some useful bundles.", + "time": "2024-05-10T17:16:17+00:00" }, { "name": "symfony/asset", - "version": "v4.4.40", + "version": "v6.3.12", "source": { "type": "git", "url": "https://github.com/symfony/asset.git", - "reference": "4dee0d02664f2d06005c56b8e43612b7a372e47d" + "reference": "a579e67adaa9586a007abd1b6faf97296eef08ec" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/asset/zipball/4dee0d02664f2d06005c56b8e43612b7a372e47d", - "reference": "4dee0d02664f2d06005c56b8e43612b7a372e47d", + "url": "https://api.github.com/repos/symfony/asset/zipball/a579e67adaa9586a007abd1b6faf97296eef08ec", + "reference": "a579e67adaa9586a007abd1b6faf97296eef08ec", "shasum": "" }, "require": { - "php": ">=7.1.3", - "symfony/polyfill-php80": "^1.16" + "php": ">=8.1" }, - "require-dev": { - "symfony/http-foundation": "^3.4|^4.0|^5.0", - "symfony/http-kernel": "^3.4|^4.0|^5.0" + "conflict": { + "symfony/http-foundation": "<5.4" }, - "suggest": { - "symfony/http-foundation": "" + "require-dev": { + "symfony/http-client": "^5.4|^6.0", + "symfony/http-foundation": "^5.4|^6.0", + "symfony/http-kernel": "^5.4|^6.0" }, "type": "library", "autoload": { @@ -3496,7 +3874,7 @@ "description": "Manages URL generation and versioning of web assets such as CSS stylesheets, JavaScript files and image files", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/asset/tree/v4.4.40" + "source": "https://github.com/symfony/asset/tree/v6.3.12" }, "funding": [ { @@ -3512,60 +3890,61 @@ "type": "tidelift" } ], - "time": "2022-03-07T18:38:28+00:00" + "time": "2024-01-23T14:35:58+00:00" }, { "name": "symfony/cache", - "version": "v4.4.44", + "version": "v6.3.12", "source": { "type": "git", "url": "https://github.com/symfony/cache.git", - "reference": "db611fb1b86e2223d406c5bf3d813536c95de7ce" + "reference": "d085eedf33550ce014230bc51fca8df726ed7ac5" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/cache/zipball/db611fb1b86e2223d406c5bf3d813536c95de7ce", - "reference": "db611fb1b86e2223d406c5bf3d813536c95de7ce", + "url": "https://api.github.com/repos/symfony/cache/zipball/d085eedf33550ce014230bc51fca8df726ed7ac5", + "reference": "d085eedf33550ce014230bc51fca8df726ed7ac5", "shasum": "" }, "require": { - "php": ">=7.1.3", - "psr/cache": "^1.0|^2.0", - "psr/log": "^1|^2|^3", - "symfony/cache-contracts": "^1.1.7|^2", - "symfony/polyfill-php73": "^1.9", - "symfony/polyfill-php80": "^1.16", - "symfony/service-contracts": "^1.1|^2", - "symfony/var-exporter": "^4.2|^5.0" + "php": ">=8.1", + "psr/cache": "^2.0|^3.0", + "psr/log": "^1.1|^2|^3", + "symfony/cache-contracts": "^2.5|^3", + "symfony/service-contracts": "^2.5|^3", + "symfony/var-exporter": "^6.3.6" }, "conflict": { - "doctrine/dbal": "<2.7", - "symfony/dependency-injection": "<3.4", - "symfony/http-kernel": "<4.4|>=5.0", - "symfony/var-dumper": "<4.4" + "doctrine/dbal": "<2.13.1", + "symfony/dependency-injection": "<5.4", + "symfony/http-kernel": "<5.4", + "symfony/var-dumper": "<5.4" }, "provide": { - "psr/cache-implementation": "1.0|2.0", - "psr/simple-cache-implementation": "1.0|2.0", - "symfony/cache-implementation": "1.0|2.0" + "psr/cache-implementation": "2.0|3.0", + "psr/simple-cache-implementation": "1.0|2.0|3.0", + "symfony/cache-implementation": "1.1|2.0|3.0" }, "require-dev": { "cache/integration-tests": "dev-master", - "doctrine/cache": "^1.6|^2.0", - "doctrine/dbal": "^2.7|^3.0", - "predis/predis": "^1.1", - "psr/simple-cache": "^1.0|^2.0", - "symfony/config": "^4.2|^5.0", - "symfony/dependency-injection": "^3.4|^4.1|^5.0", - "symfony/filesystem": "^4.4|^5.0", - "symfony/http-kernel": "^4.4", - "symfony/var-dumper": "^4.4|^5.0" + "doctrine/dbal": "^2.13.1|^3|^4", + "predis/predis": "^1.1|^2.0", + "psr/simple-cache": "^1.0|^2.0|^3.0", + "symfony/config": "^5.4|^6.0", + "symfony/dependency-injection": "^5.4|^6.0", + "symfony/filesystem": "^5.4|^6.0", + "symfony/http-kernel": "^5.4|^6.0", + "symfony/messenger": "^5.4|^6.0", + "symfony/var-dumper": "^5.4|^6.0" }, "type": "library", "autoload": { "psr-4": { "Symfony\\Component\\Cache\\": "" }, + "classmap": [ + "Traits/ValueWrapper.php" + ], "exclude-from-classmap": [ "/Tests/" ] @@ -3584,14 +3963,14 @@ "homepage": "https://symfony.com/contributors" } ], - "description": "Provides an extended PSR-6, PSR-16 (and tags) implementation", + "description": "Provides extended PSR-6, PSR-16 (and tags) implementations", "homepage": "https://symfony.com", "keywords": [ "caching", "psr6" ], "support": { - "source": "https://github.com/symfony/cache/tree/v4.4.44" + "source": "https://github.com/symfony/cache/tree/v6.3.12" }, "funding": [ { @@ -3607,33 +3986,30 @@ "type": "tidelift" } ], - "time": "2022-07-20T09:59:04+00:00" + "time": "2024-01-23T14:42:18+00:00" }, { "name": "symfony/cache-contracts", - "version": "v2.5.2", + "version": "v3.5.0", "source": { "type": "git", "url": "https://github.com/symfony/cache-contracts.git", - "reference": "64be4a7acb83b6f2bf6de9a02cee6dad41277ebc" + "reference": "df6a1a44c890faded49a5fca33c2d5c5fd3c2197" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/cache-contracts/zipball/64be4a7acb83b6f2bf6de9a02cee6dad41277ebc", - "reference": "64be4a7acb83b6f2bf6de9a02cee6dad41277ebc", + "url": "https://api.github.com/repos/symfony/cache-contracts/zipball/df6a1a44c890faded49a5fca33c2d5c5fd3c2197", + "reference": "df6a1a44c890faded49a5fca33c2d5c5fd3c2197", "shasum": "" }, "require": { - "php": ">=7.2.5", - "psr/cache": "^1.0|^2.0|^3.0" - }, - "suggest": { - "symfony/cache-implementation": "" + "php": ">=8.1", + "psr/cache": "^3.0" }, "type": "library", "extra": { "branch-alias": { - "dev-main": "2.5-dev" + "dev-main": "3.5-dev" }, "thanks": { "name": "symfony/contracts", @@ -3670,7 +4046,7 @@ "standards" ], "support": { - "source": "https://github.com/symfony/cache-contracts/tree/v2.5.2" + "source": "https://github.com/symfony/cache-contracts/tree/v3.5.0" }, "funding": [ { @@ -3686,46 +4062,36 @@ "type": "tidelift" } ], - "time": "2022-01-02T09:53:40+00:00" + "time": "2024-04-18T09:32:20+00:00" }, { - "name": "symfony/config", - "version": "v4.4.44", + "name": "symfony/clock", + "version": "v6.3.12", "source": { "type": "git", - "url": "https://github.com/symfony/config.git", - "reference": "ed42f8f9da528d2c6cae36fe1f380b0c1d8f0658" + "url": "https://github.com/symfony/clock.git", + "reference": "b0fd66f03a9afb104a8def4e893fa96e1699c39b" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/config/zipball/ed42f8f9da528d2c6cae36fe1f380b0c1d8f0658", - "reference": "ed42f8f9da528d2c6cae36fe1f380b0c1d8f0658", + "url": "https://api.github.com/repos/symfony/clock/zipball/b0fd66f03a9afb104a8def4e893fa96e1699c39b", + "reference": "b0fd66f03a9afb104a8def4e893fa96e1699c39b", "shasum": "" }, "require": { - "php": ">=7.1.3", - "symfony/filesystem": "^3.4|^4.0|^5.0", - "symfony/polyfill-ctype": "~1.8", - "symfony/polyfill-php80": "^1.16", - "symfony/polyfill-php81": "^1.22" - }, - "conflict": { - "symfony/finder": "<3.4" - }, - "require-dev": { - "symfony/event-dispatcher": "^3.4|^4.0|^5.0", - "symfony/finder": "^3.4|^4.0|^5.0", - "symfony/messenger": "^4.1|^5.0", - "symfony/service-contracts": "^1.1|^2", - "symfony/yaml": "^3.4|^4.0|^5.0" + "php": ">=8.1", + "psr/clock": "^1.0" }, - "suggest": { - "symfony/yaml": "To use the yaml reference dumper" + "provide": { + "psr/clock-implementation": "1.0" }, "type": "library", "autoload": { + "files": [ + "Resources/now.php" + ], "psr-4": { - "Symfony\\Component\\Config\\": "" + "Symfony\\Component\\Clock\\": "" }, "exclude-from-classmap": [ "/Tests/" @@ -3737,18 +4103,23 @@ ], "authors": [ { - "name": "Fabien Potencier", - "email": "fabien@symfony.com" + "name": "Nicolas Grekas", + "email": "p@tchwork.com" }, { "name": "Symfony Community", "homepage": "https://symfony.com/contributors" } ], - "description": "Helps you find, load, combine, autofill and validate configuration values of any kind", + "description": "Decouples applications from the system clock", "homepage": "https://symfony.com", + "keywords": [ + "clock", + "psr20", + "time" + ], "support": { - "source": "https://github.com/symfony/config/tree/v4.4.44" + "source": "https://github.com/symfony/clock/tree/v6.3.12" }, "funding": [ { @@ -3764,58 +4135,43 @@ "type": "tidelift" } ], - "time": "2022-07-20T09:59:04+00:00" + "time": "2024-01-23T14:35:58+00:00" }, { - "name": "symfony/console", - "version": "v4.4.44", + "name": "symfony/config", + "version": "v6.3.12", "source": { "type": "git", - "url": "https://github.com/symfony/console.git", - "reference": "c35fafd7f12ebd6f9e29c95a370df7f1fb171a40" + "url": "https://github.com/symfony/config.git", + "reference": "66b548223ec2569cc9f997f0dfbe8c3cfed9417e" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/console/zipball/c35fafd7f12ebd6f9e29c95a370df7f1fb171a40", - "reference": "c35fafd7f12ebd6f9e29c95a370df7f1fb171a40", + "url": "https://api.github.com/repos/symfony/config/zipball/66b548223ec2569cc9f997f0dfbe8c3cfed9417e", + "reference": "66b548223ec2569cc9f997f0dfbe8c3cfed9417e", "shasum": "" }, "require": { - "php": ">=7.1.3", - "symfony/polyfill-mbstring": "~1.0", - "symfony/polyfill-php73": "^1.8", - "symfony/polyfill-php80": "^1.16", - "symfony/service-contracts": "^1.1|^2" + "php": ">=8.1", + "symfony/deprecation-contracts": "^2.5|^3", + "symfony/filesystem": "^5.4|^6.0", + "symfony/polyfill-ctype": "~1.8" }, "conflict": { - "psr/log": ">=3", - "symfony/dependency-injection": "<3.4", - "symfony/event-dispatcher": "<4.3|>=5", - "symfony/lock": "<4.4", - "symfony/process": "<3.3" - }, - "provide": { - "psr/log-implementation": "1.0|2.0" + "symfony/finder": "<5.4", + "symfony/service-contracts": "<2.5" }, "require-dev": { - "psr/log": "^1|^2", - "symfony/config": "^3.4|^4.0|^5.0", - "symfony/dependency-injection": "^3.4|^4.0|^5.0", - "symfony/event-dispatcher": "^4.3", - "symfony/lock": "^4.4|^5.0", - "symfony/process": "^3.4|^4.0|^5.0", - "symfony/var-dumper": "^4.3|^5.0" - }, - "suggest": { - "psr/log": "For using the console logger", - "symfony/event-dispatcher": "", - "symfony/lock": "", - "symfony/process": "" + "symfony/event-dispatcher": "^5.4|^6.0", + "symfony/finder": "^5.4|^6.0", + "symfony/messenger": "^5.4|^6.0", + "symfony/service-contracts": "^2.5|^3", + "symfony/yaml": "^5.4|^6.0" }, "type": "library", "autoload": { "psr-4": { - "Symfony\\Component\\Console\\": "" + "Symfony\\Component\\Config\\": "" }, "exclude-from-classmap": [ "/Tests/" @@ -3835,10 +4191,10 @@ "homepage": "https://symfony.com/contributors" } ], - "description": "Eases the creation of beautiful and testable command line interfaces", + "description": "Helps you find, load, combine, autofill and validate configuration values of any kind", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/console/tree/v4.4.44" + "source": "https://github.com/symfony/config/tree/v6.3.12" }, "funding": [ { @@ -3854,36 +4210,52 @@ "type": "tidelift" } ], - "time": "2022-07-20T09:59:04+00:00" + "time": "2024-01-23T14:35:58+00:00" }, { - "name": "symfony/debug", - "version": "v4.4.44", + "name": "symfony/console", + "version": "v6.3.12", "source": { "type": "git", - "url": "https://github.com/symfony/debug.git", - "reference": "1a692492190773c5310bc7877cb590c04c2f05be" + "url": "https://github.com/symfony/console.git", + "reference": "6f69929b2421cf733a5b791dde3c3a2cfa6340cd" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/debug/zipball/1a692492190773c5310bc7877cb590c04c2f05be", - "reference": "1a692492190773c5310bc7877cb590c04c2f05be", + "url": "https://api.github.com/repos/symfony/console/zipball/6f69929b2421cf733a5b791dde3c3a2cfa6340cd", + "reference": "6f69929b2421cf733a5b791dde3c3a2cfa6340cd", "shasum": "" }, "require": { - "php": ">=7.1.3", - "psr/log": "^1|^2|^3" + "php": ">=8.1", + "symfony/deprecation-contracts": "^2.5|^3", + "symfony/polyfill-mbstring": "~1.0", + "symfony/service-contracts": "^2.5|^3", + "symfony/string": "^5.4|^6.0" }, "conflict": { - "symfony/http-kernel": "<3.4" + "symfony/dependency-injection": "<5.4", + "symfony/dotenv": "<5.4", + "symfony/event-dispatcher": "<5.4", + "symfony/lock": "<5.4", + "symfony/process": "<5.4" + }, + "provide": { + "psr/log-implementation": "1.0|2.0|3.0" }, "require-dev": { - "symfony/http-kernel": "^3.4|^4.0|^5.0" + "psr/log": "^1|^2|^3", + "symfony/config": "^5.4|^6.0", + "symfony/dependency-injection": "^5.4|^6.0", + "symfony/event-dispatcher": "^5.4|^6.0", + "symfony/lock": "^5.4|^6.0", + "symfony/process": "^5.4|^6.0", + "symfony/var-dumper": "^5.4|^6.0" }, "type": "library", "autoload": { "psr-4": { - "Symfony\\Component\\Debug\\": "" + "Symfony\\Component\\Console\\": "" }, "exclude-from-classmap": [ "/Tests/" @@ -3903,10 +4275,16 @@ "homepage": "https://symfony.com/contributors" } ], - "description": "Provides tools to ease debugging PHP code", - "homepage": "https://symfony.com", + "description": "Eases the creation of beautiful and testable command line interfaces", + "homepage": "https://symfony.com", + "keywords": [ + "cli", + "command-line", + "console", + "terminal" + ], "support": { - "source": "https://github.com/symfony/debug/tree/v4.4.44" + "source": "https://github.com/symfony/console/tree/v6.3.12" }, "funding": [ { @@ -3922,50 +4300,44 @@ "type": "tidelift" } ], - "abandoned": "symfony/error-handler", - "time": "2022-07-28T16:29:46+00:00" + "time": "2024-01-23T16:21:43+00:00" }, { "name": "symfony/dependency-injection", - "version": "v4.4.44", + "version": "v6.3.12", "source": { "type": "git", "url": "https://github.com/symfony/dependency-injection.git", - "reference": "25502a57182ba1e15da0afd64c975cae4d0a1471" + "reference": "3ca6c70bef0644be86d5acd962f11a6a6aa9382d" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/dependency-injection/zipball/25502a57182ba1e15da0afd64c975cae4d0a1471", - "reference": "25502a57182ba1e15da0afd64c975cae4d0a1471", + "url": "https://api.github.com/repos/symfony/dependency-injection/zipball/3ca6c70bef0644be86d5acd962f11a6a6aa9382d", + "reference": "3ca6c70bef0644be86d5acd962f11a6a6aa9382d", "shasum": "" }, "require": { - "php": ">=7.1.3", - "psr/container": "^1.0", - "symfony/polyfill-php80": "^1.16", - "symfony/service-contracts": "^1.1.6|^2" + "php": ">=8.1", + "psr/container": "^1.1|^2.0", + "symfony/deprecation-contracts": "^2.5|^3", + "symfony/service-contracts": "^2.5|^3.0", + "symfony/var-exporter": "^6.2.10" }, "conflict": { - "symfony/config": "<4.3|>=5.0", - "symfony/finder": "<3.4", - "symfony/proxy-manager-bridge": "<3.4", - "symfony/yaml": "<4.4.26" + "ext-psr": "<1.1|>=2", + "symfony/config": "<6.1", + "symfony/finder": "<5.4", + "symfony/proxy-manager-bridge": "<6.3", + "symfony/yaml": "<5.4" }, "provide": { - "psr/container-implementation": "1.0", - "symfony/service-implementation": "1.0|2.0" + "psr/container-implementation": "1.1|2.0", + "symfony/service-implementation": "1.1|2.0|3.0" }, "require-dev": { - "symfony/config": "^4.3", - "symfony/expression-language": "^3.4|^4.0|^5.0", - "symfony/yaml": "^4.4.26|^5.0" - }, - "suggest": { - "symfony/config": "", - "symfony/expression-language": "For using expressions in service container configuration", - "symfony/finder": "For using double-star glob patterns or when GLOB_BRACE portability is required", - "symfony/proxy-manager-bridge": "Generate service proxies to lazy load them", - "symfony/yaml": "" + "symfony/config": "^6.1", + "symfony/expression-language": "^5.4|^6.0", + "symfony/yaml": "^5.4|^6.0" }, "type": "library", "autoload": { @@ -3993,7 +4365,7 @@ "description": "Allows you to standardize and centralize the way objects are constructed in your application", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/dependency-injection/tree/v4.4.44" + "source": "https://github.com/symfony/dependency-injection/tree/v6.3.12" }, "funding": [ { @@ -4009,29 +4381,29 @@ "type": "tidelift" } ], - "time": "2022-07-20T09:59:04+00:00" + "time": "2024-01-30T08:17:33+00:00" }, { "name": "symfony/deprecation-contracts", - "version": "v2.5.2", + "version": "v3.5.0", "source": { "type": "git", "url": "https://github.com/symfony/deprecation-contracts.git", - "reference": "e8b495ea28c1d97b5e0c121748d6f9b53d075c66" + "reference": "0e0d29ce1f20deffb4ab1b016a7257c4f1e789a1" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/deprecation-contracts/zipball/e8b495ea28c1d97b5e0c121748d6f9b53d075c66", - "reference": "e8b495ea28c1d97b5e0c121748d6f9b53d075c66", + "url": "https://api.github.com/repos/symfony/deprecation-contracts/zipball/0e0d29ce1f20deffb4ab1b016a7257c4f1e789a1", + "reference": "0e0d29ce1f20deffb4ab1b016a7257c4f1e789a1", "shasum": "" }, "require": { - "php": ">=7.1" + "php": ">=8.1" }, "type": "library", "extra": { "branch-alias": { - "dev-main": "2.5-dev" + "dev-main": "3.5-dev" }, "thanks": { "name": "symfony/contracts", @@ -4060,7 +4432,7 @@ "description": "A generic function and convention to trigger deprecation notices", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/deprecation-contracts/tree/v2.5.2" + "source": "https://github.com/symfony/deprecation-contracts/tree/v3.5.0" }, "funding": [ { @@ -4076,73 +4448,73 @@ "type": "tidelift" } ], - "time": "2022-01-02T09:53:40+00:00" + "time": "2024-04-18T09:32:20+00:00" }, { "name": "symfony/doctrine-bridge", - "version": "v4.4.44", + "version": "v6.3.12", "source": { "type": "git", "url": "https://github.com/symfony/doctrine-bridge.git", - "reference": "5d5a797a5bb03b68bdb62d6d16e7d599769f9bcb" + "reference": "395b7bfd32b0f7700877c50ab1452f283c99878a" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/doctrine-bridge/zipball/5d5a797a5bb03b68bdb62d6d16e7d599769f9bcb", - "reference": "5d5a797a5bb03b68bdb62d6d16e7d599769f9bcb", + "url": "https://api.github.com/repos/symfony/doctrine-bridge/zipball/395b7bfd32b0f7700877c50ab1452f283c99878a", + "reference": "395b7bfd32b0f7700877c50ab1452f283c99878a", "shasum": "" }, "require": { - "doctrine/event-manager": "~1.0", - "doctrine/persistence": "^1.3|^2|^3", - "php": ">=7.1.3", + "doctrine/event-manager": "^1.2|^2", + "doctrine/persistence": "^2|^3", + "php": ">=8.1", + "symfony/deprecation-contracts": "^2.5|^3", "symfony/polyfill-ctype": "~1.8", "symfony/polyfill-mbstring": "~1.0", - "symfony/polyfill-php80": "^1.16", - "symfony/service-contracts": "^1.1|^2" + "symfony/service-contracts": "^2.5|^3" }, "conflict": { - "doctrine/dbal": "<2.7", + "doctrine/annotations": "<1.13.1", + "doctrine/dbal": "<2.13.1", "doctrine/lexer": "<1.1", - "doctrine/orm": "<2.6.3", - "phpunit/phpunit": "<4.8.35|<5.4.3,>=5.0", - "symfony/dependency-injection": "<3.4", - "symfony/form": "<4.4", - "symfony/http-kernel": "<4.3.7", - "symfony/messenger": "<4.3", - "symfony/proxy-manager-bridge": "<4.4.19", - "symfony/security-core": "<4.4", - "symfony/validator": "<4.4.2|<5.0.2,>=5.0" + "doctrine/orm": "<2.12", + "symfony/cache": "<5.4", + "symfony/dependency-injection": "<6.2", + "symfony/form": "<5.4.21|>=6,<6.2.7", + "symfony/http-foundation": "<6.3", + "symfony/http-kernel": "<6.2", + "symfony/lock": "<6.3", + "symfony/messenger": "<5.4", + "symfony/property-info": "<5.4", + "symfony/security-bundle": "<5.4", + "symfony/security-core": "<6.0", + "symfony/validator": "<5.4.25|>=6,<6.2.12|>=6.3,<6.3.1" }, "require-dev": { - "composer/package-versions-deprecated": "^1.8", - "doctrine/annotations": "^1.10.4", - "doctrine/collections": "~1.0", + "doctrine/annotations": "^1.13.1|^2", + "doctrine/collections": "^1.0|^2.0", "doctrine/data-fixtures": "^1.1", - "doctrine/dbal": "^2.7|^3.0", - "doctrine/orm": "^2.6.3", - "symfony/config": "^4.2|^5.0", - "symfony/dependency-injection": "^3.4|^4.0|^5.0", - "symfony/expression-language": "^3.4|^4.0|^5.0", - "symfony/form": "^4.4.41|^5.0.11", - "symfony/http-kernel": "^4.3.7", - "symfony/messenger": "^4.4|^5.0", - "symfony/property-access": "^3.4|^4.0|^5.0", - "symfony/property-info": "^3.4|^4.0|^5.0", - "symfony/proxy-manager-bridge": "^3.4|^4.0|^5.0", - "symfony/security-core": "^4.4|^5.0", - "symfony/stopwatch": "^3.4|^4.0|^5.0", - "symfony/translation": "^3.4|^4.0|^5.0", - "symfony/validator": "^4.4.2|^5.0.2", - "symfony/var-dumper": "^3.4|^4.0|^5.0" - }, - "suggest": { - "doctrine/data-fixtures": "", - "doctrine/dbal": "", - "doctrine/orm": "", - "symfony/form": "", - "symfony/property-info": "", - "symfony/validator": "" + "doctrine/dbal": "^2.13.1|^3|^4", + "doctrine/orm": "^2.12|^3", + "psr/log": "^1|^2|^3", + "symfony/cache": "^5.4|^6.0", + "symfony/config": "^5.4|^6.0", + "symfony/dependency-injection": "^6.2", + "symfony/doctrine-messenger": "^5.4|^6.0", + "symfony/expression-language": "^5.4|^6.0", + "symfony/form": "^5.4.21|^6.2.7", + "symfony/http-kernel": "^6.3", + "symfony/lock": "^6.3", + "symfony/messenger": "^5.4|^6.0", + "symfony/property-access": "^5.4|^6.0", + "symfony/property-info": "^5.4|^6.0", + "symfony/proxy-manager-bridge": "^5.4|^6.0", + "symfony/security-core": "^6.0", + "symfony/stopwatch": "^5.4|^6.0", + "symfony/translation": "^5.4|^6.0", + "symfony/uid": "^5.4|^6.0", + "symfony/validator": "^5.4.25|~6.2.12|^6.3.1", + "symfony/var-dumper": "^5.4|^6.0" }, "type": "symfony-bridge", "autoload": { @@ -4170,7 +4542,7 @@ "description": "Provides integration for Doctrine with various Symfony components", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/doctrine-bridge/tree/v4.4.44" + "source": "https://github.com/symfony/doctrine-bridge/tree/v6.3.12" }, "funding": [ { @@ -4186,27 +4558,32 @@ "type": "tidelift" } ], - "time": "2022-07-20T09:59:04+00:00" + "time": "2024-01-23T14:42:18+00:00" }, { "name": "symfony/dotenv", - "version": "v4.4.37", + "version": "v6.3.12", "source": { "type": "git", "url": "https://github.com/symfony/dotenv.git", - "reference": "fcedd6d382b3afc3e1e786aa4e4fc4cf06f564cf" + "reference": "d9eaf699978601af5a50c26cbc4326158d9bd8b0" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/dotenv/zipball/fcedd6d382b3afc3e1e786aa4e4fc4cf06f564cf", - "reference": "fcedd6d382b3afc3e1e786aa4e4fc4cf06f564cf", + "url": "https://api.github.com/repos/symfony/dotenv/zipball/d9eaf699978601af5a50c26cbc4326158d9bd8b0", + "reference": "d9eaf699978601af5a50c26cbc4326158d9bd8b0", "shasum": "" }, "require": { - "php": ">=7.1.3" + "php": ">=8.1" + }, + "conflict": { + "symfony/console": "<5.4", + "symfony/process": "<5.4" }, "require-dev": { - "symfony/process": "^3.4.2|^4.0|^5.0" + "symfony/console": "^5.4|^6.0", + "symfony/process": "^5.4|^6.0" }, "type": "library", "autoload": { @@ -4239,7 +4616,7 @@ "environment" ], "support": { - "source": "https://github.com/symfony/dotenv/tree/v4.4.37" + "source": "https://github.com/symfony/dotenv/tree/v6.3.12" }, "funding": [ { @@ -4255,32 +4632,38 @@ "type": "tidelift" } ], - "time": "2022-01-02T09:41:36+00:00" + "time": "2024-01-23T14:35:58+00:00" }, { "name": "symfony/error-handler", - "version": "v4.4.44", + "version": "v6.3.12", "source": { "type": "git", "url": "https://github.com/symfony/error-handler.git", - "reference": "be731658121ef2d8be88f3a1ec938148a9237291" + "reference": "93a8400a7eaaaf385b2d6f71e30e064baa639629" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/error-handler/zipball/be731658121ef2d8be88f3a1ec938148a9237291", - "reference": "be731658121ef2d8be88f3a1ec938148a9237291", + "url": "https://api.github.com/repos/symfony/error-handler/zipball/93a8400a7eaaaf385b2d6f71e30e064baa639629", + "reference": "93a8400a7eaaaf385b2d6f71e30e064baa639629", "shasum": "" }, "require": { - "php": ">=7.1.3", + "php": ">=8.1", "psr/log": "^1|^2|^3", - "symfony/debug": "^4.4.5", - "symfony/var-dumper": "^4.4|^5.0" + "symfony/var-dumper": "^5.4|^6.0" + }, + "conflict": { + "symfony/deprecation-contracts": "<2.5" }, "require-dev": { - "symfony/http-kernel": "^4.4|^5.0", - "symfony/serializer": "^4.4|^5.0" + "symfony/deprecation-contracts": "^2.5|^3", + "symfony/http-kernel": "^5.4|^6.0", + "symfony/serializer": "^5.4|^6.0" }, + "bin": [ + "Resources/bin/patch-type-declarations" + ], "type": "library", "autoload": { "psr-4": { @@ -4307,7 +4690,7 @@ "description": "Provides tools to manage errors and ease debugging PHP code", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/error-handler/tree/v4.4.44" + "source": "https://github.com/symfony/error-handler/tree/v6.3.12" }, "funding": [ { @@ -4323,47 +4706,43 @@ "type": "tidelift" } ], - "time": "2022-07-28T16:29:46+00:00" + "time": "2024-01-23T14:35:58+00:00" }, { "name": "symfony/event-dispatcher", - "version": "v4.4.44", + "version": "v6.3.12", "source": { "type": "git", "url": "https://github.com/symfony/event-dispatcher.git", - "reference": "1e866e9e5c1b22168e0ce5f0b467f19bba61266a" + "reference": "6e344ddd3c18c525b5e5a4e996f3debda48e3078" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/event-dispatcher/zipball/1e866e9e5c1b22168e0ce5f0b467f19bba61266a", - "reference": "1e866e9e5c1b22168e0ce5f0b467f19bba61266a", + "url": "https://api.github.com/repos/symfony/event-dispatcher/zipball/6e344ddd3c18c525b5e5a4e996f3debda48e3078", + "reference": "6e344ddd3c18c525b5e5a4e996f3debda48e3078", "shasum": "" }, "require": { - "php": ">=7.1.3", - "symfony/event-dispatcher-contracts": "^1.1", - "symfony/polyfill-php80": "^1.16" + "php": ">=8.1", + "symfony/event-dispatcher-contracts": "^2.5|^3" }, "conflict": { - "symfony/dependency-injection": "<3.4" + "symfony/dependency-injection": "<5.4", + "symfony/service-contracts": "<2.5" }, "provide": { "psr/event-dispatcher-implementation": "1.0", - "symfony/event-dispatcher-implementation": "1.1" + "symfony/event-dispatcher-implementation": "2.0|3.0" }, "require-dev": { "psr/log": "^1|^2|^3", - "symfony/config": "^3.4|^4.0|^5.0", - "symfony/dependency-injection": "^3.4|^4.0|^5.0", - "symfony/error-handler": "~3.4|~4.4", - "symfony/expression-language": "^3.4|^4.0|^5.0", - "symfony/http-foundation": "^3.4|^4.0|^5.0", - "symfony/service-contracts": "^1.1|^2", - "symfony/stopwatch": "^3.4|^4.0|^5.0" - }, - "suggest": { - "symfony/dependency-injection": "", - "symfony/http-kernel": "" + "symfony/config": "^5.4|^6.0", + "symfony/dependency-injection": "^5.4|^6.0", + "symfony/error-handler": "^5.4|^6.0", + "symfony/expression-language": "^5.4|^6.0", + "symfony/http-foundation": "^5.4|^6.0", + "symfony/service-contracts": "^2.5|^3", + "symfony/stopwatch": "^5.4|^6.0" }, "type": "library", "autoload": { @@ -4391,7 +4770,7 @@ "description": "Provides tools that allow your application components to communicate with each other by dispatching events and listening to them", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/event-dispatcher/tree/v4.4.44" + "source": "https://github.com/symfony/event-dispatcher/tree/v6.3.12" }, "funding": [ { @@ -4407,33 +4786,30 @@ "type": "tidelift" } ], - "time": "2022-07-20T09:59:04+00:00" + "time": "2024-01-23T14:35:58+00:00" }, { "name": "symfony/event-dispatcher-contracts", - "version": "v1.1.13", + "version": "v3.5.0", "source": { "type": "git", "url": "https://github.com/symfony/event-dispatcher-contracts.git", - "reference": "1d5cd762abaa6b2a4169d3e77610193a7157129e" + "reference": "8f93aec25d41b72493c6ddff14e916177c9efc50" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/event-dispatcher-contracts/zipball/1d5cd762abaa6b2a4169d3e77610193a7157129e", - "reference": "1d5cd762abaa6b2a4169d3e77610193a7157129e", + "url": "https://api.github.com/repos/symfony/event-dispatcher-contracts/zipball/8f93aec25d41b72493c6ddff14e916177c9efc50", + "reference": "8f93aec25d41b72493c6ddff14e916177c9efc50", "shasum": "" }, "require": { - "php": ">=7.1.3" - }, - "suggest": { - "psr/event-dispatcher": "", - "symfony/event-dispatcher-implementation": "" + "php": ">=8.1", + "psr/event-dispatcher": "^1" }, "type": "library", "extra": { "branch-alias": { - "dev-main": "1.1-dev" + "dev-main": "3.5-dev" }, "thanks": { "name": "symfony/contracts", @@ -4470,7 +4846,7 @@ "standards" ], "support": { - "source": "https://github.com/symfony/event-dispatcher-contracts/tree/v1.1.13" + "source": "https://github.com/symfony/event-dispatcher-contracts/tree/v3.5.0" }, "funding": [ { @@ -4486,26 +4862,27 @@ "type": "tidelift" } ], - "time": "2022-01-02T09:41:36+00:00" + "time": "2024-04-18T09:32:20+00:00" }, { "name": "symfony/expression-language", - "version": "v4.4.44", + "version": "v6.3.12", "source": { "type": "git", "url": "https://github.com/symfony/expression-language.git", - "reference": "13f0e1fd96066299eb39c87473446805fcf57c41" + "reference": "89f6dc6f1883c3dc3c31d418038966c9b1766617" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/expression-language/zipball/13f0e1fd96066299eb39c87473446805fcf57c41", - "reference": "13f0e1fd96066299eb39c87473446805fcf57c41", + "url": "https://api.github.com/repos/symfony/expression-language/zipball/89f6dc6f1883c3dc3c31d418038966c9b1766617", + "reference": "89f6dc6f1883c3dc3c31d418038966c9b1766617", "shasum": "" }, "require": { - "php": ">=7.1.3", - "symfony/cache": "^3.4|^4.0|^5.0", - "symfony/service-contracts": "^1.1|^2" + "php": ">=8.1", + "symfony/cache": "^5.4|^6.0", + "symfony/deprecation-contracts": "^2.5|^3", + "symfony/service-contracts": "^2.5|^3" }, "type": "library", "autoload": { @@ -4533,7 +4910,7 @@ "description": "Provides an engine that can compile and evaluate expressions", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/expression-language/tree/v4.4.44" + "source": "https://github.com/symfony/expression-language/tree/v6.3.12" }, "funding": [ { @@ -4549,26 +4926,26 @@ "type": "tidelift" } ], - "time": "2022-07-20T09:59:04+00:00" + "time": "2024-01-23T14:35:58+00:00" }, { "name": "symfony/filesystem", - "version": "v4.4.42", + "version": "v6.3.12", "source": { "type": "git", "url": "https://github.com/symfony/filesystem.git", - "reference": "815412ee8971209bd4c1eecd5f4f481eacd44bf5" + "reference": "9f4b59b7906ccb0692d7565f98012fd1679eedfc" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/filesystem/zipball/815412ee8971209bd4c1eecd5f4f481eacd44bf5", - "reference": "815412ee8971209bd4c1eecd5f4f481eacd44bf5", + "url": "https://api.github.com/repos/symfony/filesystem/zipball/9f4b59b7906ccb0692d7565f98012fd1679eedfc", + "reference": "9f4b59b7906ccb0692d7565f98012fd1679eedfc", "shasum": "" }, "require": { - "php": ">=7.1.3", + "php": ">=8.1", "symfony/polyfill-ctype": "~1.8", - "symfony/polyfill-php80": "^1.16" + "symfony/polyfill-mbstring": "~1.8" }, "type": "library", "autoload": { @@ -4596,7 +4973,7 @@ "description": "Provides basic utilities for the filesystem", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/filesystem/tree/v4.4.42" + "source": "https://github.com/symfony/filesystem/tree/v6.3.12" }, "funding": [ { @@ -4612,25 +4989,27 @@ "type": "tidelift" } ], - "time": "2022-05-20T08:49:14+00:00" + "time": "2024-01-23T14:35:58+00:00" }, { "name": "symfony/finder", - "version": "v4.4.44", + "version": "v6.3.5", "source": { "type": "git", "url": "https://github.com/symfony/finder.git", - "reference": "66bd787edb5e42ff59d3523f623895af05043e4f" + "reference": "a1b31d88c0e998168ca7792f222cbecee47428c4" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/finder/zipball/66bd787edb5e42ff59d3523f623895af05043e4f", - "reference": "66bd787edb5e42ff59d3523f623895af05043e4f", + "url": "https://api.github.com/repos/symfony/finder/zipball/a1b31d88c0e998168ca7792f222cbecee47428c4", + "reference": "a1b31d88c0e998168ca7792f222cbecee47428c4", "shasum": "" }, "require": { - "php": ">=7.1.3", - "symfony/polyfill-php80": "^1.16" + "php": ">=8.1" + }, + "require-dev": { + "symfony/filesystem": "^6.0" }, "type": "library", "autoload": { @@ -4658,7 +5037,7 @@ "description": "Finds files and directories via an intuitive fluent interface", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/finder/tree/v4.4.44" + "source": "https://github.com/symfony/finder/tree/v6.3.5" }, "funding": [ { @@ -4674,32 +5053,32 @@ "type": "tidelift" } ], - "time": "2022-07-29T07:35:46+00:00" + "time": "2023-09-26T12:56:25+00:00" }, { "name": "symfony/flex", - "version": "v1.19.3", + "version": "v2.4.5", "source": { "type": "git", "url": "https://github.com/symfony/flex.git", - "reference": "ab0453b16029e131c112df1a76e59eb2a47e1f67" + "reference": "b0a405f40614c9f584b489d54f91091817b0e26e" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/flex/zipball/ab0453b16029e131c112df1a76e59eb2a47e1f67", - "reference": "ab0453b16029e131c112df1a76e59eb2a47e1f67", + "url": "https://api.github.com/repos/symfony/flex/zipball/b0a405f40614c9f584b489d54f91091817b0e26e", + "reference": "b0a405f40614c9f584b489d54f91091817b0e26e", "shasum": "" }, "require": { - "composer-plugin-api": "^1.0|^2.0", - "php": ">=7.1" + "composer-plugin-api": "^2.1", + "php": ">=8.0" }, "require-dev": { - "composer/composer": "^1.0.2|^2.0", - "symfony/dotenv": "^4.4|^5.0|^6.0", - "symfony/filesystem": "^4.4|^5.0|^6.0", - "symfony/phpunit-bridge": "^4.4.12|^5.0|^6.0", - "symfony/process": "^4.4|^5.0|^6.0" + "composer/composer": "^2.1", + "symfony/dotenv": "^5.4|^6.0", + "symfony/filesystem": "^5.4|^6.0", + "symfony/phpunit-bridge": "^5.4|^6.0", + "symfony/process": "^5.4|^6.0" }, "type": "composer-plugin", "extra": { @@ -4723,7 +5102,7 @@ "description": "Composer plugin for Symfony", "support": { "issues": "https://github.com/symfony/flex/issues", - "source": "https://github.com/symfony/flex/tree/v1.19.3" + "source": "https://github.com/symfony/flex/tree/v2.4.5" }, "funding": [ { @@ -4739,61 +5118,60 @@ "type": "tidelift" } ], - "time": "2022-08-07T09:39:08+00:00" + "time": "2024-03-02T08:16:47+00:00" }, { "name": "symfony/form", - "version": "v4.4.44", + "version": "v6.3.12", "source": { "type": "git", "url": "https://github.com/symfony/form.git", - "reference": "db35f2e2c237c41baa8036d256f1b913a2430d04" + "reference": "bf78d0298e2bc6313063bdc1e6d85d5e05e1dc88" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/form/zipball/db35f2e2c237c41baa8036d256f1b913a2430d04", - "reference": "db35f2e2c237c41baa8036d256f1b913a2430d04", + "url": "https://api.github.com/repos/symfony/form/zipball/bf78d0298e2bc6313063bdc1e6d85d5e05e1dc88", + "reference": "bf78d0298e2bc6313063bdc1e6d85d5e05e1dc88", "shasum": "" }, "require": { - "php": ">=7.1.3", - "symfony/event-dispatcher": "^4.3", - "symfony/intl": "^4.4|^5.0", - "symfony/options-resolver": "~4.3|^5.0", + "php": ">=8.1", + "symfony/deprecation-contracts": "^2.5|^3", + "symfony/event-dispatcher": "^5.4|^6.0", + "symfony/options-resolver": "^5.4|^6.0", "symfony/polyfill-ctype": "~1.8", + "symfony/polyfill-intl-icu": "^1.21", "symfony/polyfill-mbstring": "~1.0", - "symfony/polyfill-php80": "^1.16", - "symfony/property-access": "^3.4.40|^4.4.8|^5.0.8", - "symfony/service-contracts": "^1.1|^2" + "symfony/property-access": "^5.4|^6.0", + "symfony/service-contracts": "^2.5|^3" }, "conflict": { - "phpunit/phpunit": "<4.8.35|<5.4.3,>=5.0", - "symfony/console": "<4.3", - "symfony/dependency-injection": "<3.4", - "symfony/doctrine-bridge": "<3.4", - "symfony/framework-bundle": "<3.4", - "symfony/http-kernel": "<4.4", - "symfony/intl": "<4.3", - "symfony/translation": "<4.2", - "symfony/twig-bridge": "<3.4.5|<4.0.5,>=4.0" + "symfony/console": "<5.4", + "symfony/dependency-injection": "<5.4", + "symfony/doctrine-bridge": "<5.4.21|>=6,<6.2.7", + "symfony/error-handler": "<5.4", + "symfony/framework-bundle": "<5.4", + "symfony/http-kernel": "<5.4", + "symfony/translation": "<5.4.35|>=6.0,<6.3.12|>=6.4,<6.4.3", + "symfony/translation-contracts": "<2.5", + "symfony/twig-bridge": "<6.3" }, "require-dev": { - "doctrine/collections": "~1.0", - "symfony/config": "^3.4|^4.0|^5.0", - "symfony/console": "^4.3|^5.0", - "symfony/dependency-injection": "^3.4|^4.0|^5.0", - "symfony/expression-language": "^3.4|^4.0|^5.0", - "symfony/http-foundation": "^3.4|^4.0|^5.0", - "symfony/http-kernel": "^4.4", - "symfony/security-csrf": "^3.4|^4.0|^5.0", - "symfony/translation": "^4.2|^5.0", - "symfony/validator": "^4.4.17|^5.1.9", - "symfony/var-dumper": "^4.3|^5.0" - }, - "suggest": { - "symfony/security-csrf": "For protecting forms against CSRF attacks.", - "symfony/twig-bridge": "For templating with Twig.", - "symfony/validator": "For form validation." + "doctrine/collections": "^1.0|^2.0", + "symfony/config": "^5.4|^6.0", + "symfony/console": "^5.4|^6.0", + "symfony/dependency-injection": "^5.4|^6.0", + "symfony/expression-language": "^5.4|^6.0", + "symfony/html-sanitizer": "^6.1", + "symfony/http-foundation": "^5.4|^6.0", + "symfony/http-kernel": "^5.4|^6.0", + "symfony/intl": "^5.4|^6.0", + "symfony/security-core": "^6.2", + "symfony/security-csrf": "^5.4|^6.0", + "symfony/translation": "^5.4.35|~6.3.12|^6.4.3", + "symfony/uid": "^5.4|^6.0", + "symfony/validator": "^5.4|^6.0", + "symfony/var-dumper": "^5.4|^6.0" }, "type": "library", "autoload": { @@ -4821,7 +5199,7 @@ "description": "Allows to easily create, process and reuse HTML forms", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/form/tree/v4.4.44" + "source": "https://github.com/symfony/form/tree/v6.3.12" }, "funding": [ { @@ -4837,109 +5215,107 @@ "type": "tidelift" } ], - "time": "2022-07-20T09:59:04+00:00" + "time": "2024-01-23T16:21:43+00:00" }, { "name": "symfony/framework-bundle", - "version": "v4.4.44", + "version": "v6.3.12", "source": { "type": "git", "url": "https://github.com/symfony/framework-bundle.git", - "reference": "3cbca8f6b93681102cab0fe0e3c23d16e4d0ded3" + "reference": "e144e3757296bed367ec3b764d8438891af75f78" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/framework-bundle/zipball/3cbca8f6b93681102cab0fe0e3c23d16e4d0ded3", - "reference": "3cbca8f6b93681102cab0fe0e3c23d16e4d0ded3", + "url": "https://api.github.com/repos/symfony/framework-bundle/zipball/e144e3757296bed367ec3b764d8438891af75f78", + "reference": "e144e3757296bed367ec3b764d8438891af75f78", "shasum": "" }, "require": { + "composer-runtime-api": ">=2.1", "ext-xml": "*", - "php": ">=7.1.3", - "symfony/cache": "^4.4|^5.0", - "symfony/config": "^4.4.11|~5.0.11|^5.1.3", - "symfony/dependency-injection": "^4.4.38|^5.0.1", - "symfony/error-handler": "^4.4.1|^5.0.1", - "symfony/filesystem": "^3.4|^4.0|^5.0", - "symfony/finder": "^3.4|^4.0|^5.0", - "symfony/http-foundation": "^4.4|^5.0", - "symfony/http-kernel": "^4.4", + "php": ">=8.1", + "symfony/cache": "^5.4|^6.0", + "symfony/config": "^6.1", + "symfony/dependency-injection": "^6.3.1", + "symfony/deprecation-contracts": "^2.5|^3", + "symfony/error-handler": "^6.1", + "symfony/event-dispatcher": "^5.4|^6.0", + "symfony/filesystem": "^5.4|^6.0", + "symfony/finder": "^5.4|^6.0", + "symfony/http-foundation": "^6.3", + "symfony/http-kernel": "^6.3", "symfony/polyfill-mbstring": "~1.0", - "symfony/polyfill-php80": "^1.16", - "symfony/routing": "^4.4.12|^5.1.4" + "symfony/routing": "^5.4|^6.0" }, "conflict": { + "doctrine/annotations": "<1.13.1", "doctrine/persistence": "<1.3", - "phpdocumentor/reflection-docblock": "<3.0|>=3.2.0,<3.2.2", - "phpdocumentor/type-resolver": "<0.3.0|1.3.*", - "phpunit/phpunit": "<4.8.35|<5.4.3,>=5.0", - "symfony/asset": "<3.4", - "symfony/browser-kit": "<4.3", - "symfony/console": "<4.4.21", - "symfony/dom-crawler": "<4.3", - "symfony/dotenv": "<4.3.6", - "symfony/form": "<4.3.5", - "symfony/http-client": "<4.4", - "symfony/lock": "<4.4", - "symfony/mailer": "<4.4", - "symfony/messenger": "<4.4", - "symfony/mime": "<4.4", - "symfony/property-info": "<3.4", - "symfony/security-bundle": "<4.4", - "symfony/serializer": "<4.4", - "symfony/stopwatch": "<3.4", - "symfony/translation": "<4.4", - "symfony/twig-bridge": "<4.1.1", - "symfony/twig-bundle": "<4.4", - "symfony/validator": "<4.4", - "symfony/web-profiler-bundle": "<4.4", - "symfony/workflow": "<4.3.6" + "phpdocumentor/reflection-docblock": "<3.2.2", + "phpdocumentor/type-resolver": "<1.4.0", + "symfony/asset": "<5.4", + "symfony/clock": "<6.3", + "symfony/console": "<5.4|>=7.0", + "symfony/dom-crawler": "<6.3", + "symfony/dotenv": "<5.4", + "symfony/form": "<5.4", + "symfony/http-client": "<6.3", + "symfony/lock": "<5.4", + "symfony/mailer": "<5.4", + "symfony/messenger": "<6.3", + "symfony/mime": "<6.2", + "symfony/property-access": "<5.4", + "symfony/property-info": "<5.4", + "symfony/security-core": "<5.4", + "symfony/security-csrf": "<5.4", + "symfony/serializer": "<6.3", + "symfony/stopwatch": "<5.4", + "symfony/translation": "<6.2.8", + "symfony/twig-bridge": "<5.4", + "symfony/twig-bundle": "<5.4", + "symfony/validator": "<6.3", + "symfony/web-profiler-bundle": "<5.4", + "symfony/workflow": "<5.4" }, "require-dev": { - "doctrine/annotations": "^1.10.4", - "doctrine/cache": "^1.0|^2.0", + "doctrine/annotations": "^1.13.1|^2", "doctrine/persistence": "^1.3|^2|^3", - "paragonie/sodium_compat": "^1.8", "phpdocumentor/reflection-docblock": "^3.0|^4.0|^5.0", - "symfony/asset": "^3.4|^4.0|^5.0", - "symfony/browser-kit": "^4.3|^5.0", - "symfony/console": "^4.4.42|^5.4.9", - "symfony/css-selector": "^3.4|^4.0|^5.0", - "symfony/dom-crawler": "^4.4.30|^5.3.7", - "symfony/dotenv": "^4.3.6|^5.0", - "symfony/expression-language": "^3.4|^4.0|^5.0", - "symfony/form": "^4.3.5|^5.0", - "symfony/http-client": "^4.4|^5.0", - "symfony/lock": "^4.4|^5.0", - "symfony/mailer": "^4.4|^5.0", - "symfony/messenger": "^4.4|^5.0", - "symfony/mime": "^4.4|^5.0", + "symfony/asset": "^5.4|^6.0", + "symfony/asset-mapper": "^6.3", + "symfony/browser-kit": "^5.4|^6.0", + "symfony/clock": "^6.2", + "symfony/console": "^5.4.9|^6.0.9", + "symfony/css-selector": "^5.4|^6.0", + "symfony/dom-crawler": "^6.3", + "symfony/dotenv": "^5.4|^6.0", + "symfony/expression-language": "^5.4|^6.0", + "symfony/form": "^5.4|^6.0", + "symfony/html-sanitizer": "^6.1", + "symfony/http-client": "^6.3", + "symfony/lock": "^5.4|^6.0", + "symfony/mailer": "^5.4|^6.0", + "symfony/messenger": "^6.3", + "symfony/mime": "^6.2", + "symfony/notifier": "^5.4|^6.0", "symfony/polyfill-intl-icu": "~1.0", - "symfony/process": "^3.4|^4.0|^5.0", - "symfony/property-info": "^3.4|^4.0|^5.0", - "symfony/security-core": "^3.4|^4.4|^5.2", - "symfony/security-csrf": "^3.4|^4.0|^5.0", - "symfony/security-http": "^3.4|^4.0|^5.0", - "symfony/serializer": "^4.4|^5.0", - "symfony/stopwatch": "^3.4|^4.0|^5.0", - "symfony/templating": "^3.4|^4.0|^5.0", - "symfony/translation": "^4.4|^5.0", - "symfony/twig-bundle": "^4.4|^5.0", - "symfony/validator": "^4.4|^5.0", - "symfony/web-link": "^4.4|^5.0", - "symfony/workflow": "^4.3.6|^5.0", - "symfony/yaml": "^3.4|^4.0|^5.0", - "twig/twig": "^1.43|^2.13|^3.0.4" - }, - "suggest": { - "ext-apcu": "For best performance of the system caches", - "symfony/console": "For using the console commands", - "symfony/form": "For using forms", - "symfony/property-info": "For using the property_info service", - "symfony/serializer": "For using the serializer service", - "symfony/validator": "For using validation", - "symfony/web-link": "For using web links, features such as preloading, prefetching or prerendering", - "symfony/yaml": "For using the debug:config and lint:yaml commands" + "symfony/process": "^5.4|^6.0", + "symfony/property-info": "^5.4|^6.0", + "symfony/rate-limiter": "^5.4|^6.0", + "symfony/scheduler": "^6.3", + "symfony/security-bundle": "^5.4|^6.0", + "symfony/semaphore": "^5.4|^6.0", + "symfony/serializer": "^6.3", + "symfony/stopwatch": "^5.4|^6.0", + "symfony/string": "^5.4|^6.0", + "symfony/translation": "^6.2.8", + "symfony/twig-bundle": "^5.4|^6.0", + "symfony/uid": "^5.4|^6.0", + "symfony/validator": "^6.3", + "symfony/web-link": "^5.4|^6.0", + "symfony/workflow": "^5.4|^6.0", + "symfony/yaml": "^5.4|^6.0", + "twig/twig": "^2.10|^3.0" }, "type": "symfony-bundle", "autoload": { @@ -4967,7 +5343,76 @@ "description": "Provides a tight integration between Symfony components and the Symfony full-stack framework", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/framework-bundle/tree/v4.4.44" + "source": "https://github.com/symfony/framework-bundle/tree/v6.3.12" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2024-01-23T16:21:43+00:00" + }, + { + "name": "symfony/html-sanitizer", + "version": "v6.3.12", + "source": { + "type": "git", + "url": "https://github.com/symfony/html-sanitizer.git", + "reference": "77d508d1d91f9894a9d7b2384bf832a70197752a" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/html-sanitizer/zipball/77d508d1d91f9894a9d7b2384bf832a70197752a", + "reference": "77d508d1d91f9894a9d7b2384bf832a70197752a", + "shasum": "" + }, + "require": { + "ext-dom": "*", + "league/uri": "^6.5|^7.0", + "masterminds/html5": "^2.7.2", + "php": ">=8.1" + }, + "type": "library", + "autoload": { + "psr-4": { + "Symfony\\Component\\HtmlSanitizer\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Titouan Galopin", + "email": "galopintitouan@gmail.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Provides an object-oriented API to sanitize untrusted HTML input for safe insertion into a document's DOM.", + "homepage": "https://symfony.com", + "keywords": [ + "Purifier", + "html", + "sanitizer" + ], + "support": { + "source": "https://github.com/symfony/html-sanitizer/tree/v6.3.12" }, "funding": [ { @@ -4983,44 +5428,52 @@ "type": "tidelift" } ], - "time": "2022-07-20T09:59:04+00:00" + "time": "2024-01-23T14:35:58+00:00" }, { "name": "symfony/http-client", - "version": "v4.4.44", + "version": "v6.3.12", "source": { "type": "git", "url": "https://github.com/symfony/http-client.git", - "reference": "900632460c2ed5fa656b13cb911ff8f702918618" + "reference": "510c51058dbef5db7d49c704954f32d6527d17f8" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/http-client/zipball/900632460c2ed5fa656b13cb911ff8f702918618", - "reference": "900632460c2ed5fa656b13cb911ff8f702918618", + "url": "https://api.github.com/repos/symfony/http-client/zipball/510c51058dbef5db7d49c704954f32d6527d17f8", + "reference": "510c51058dbef5db7d49c704954f32d6527d17f8", "shasum": "" }, "require": { - "php": ">=7.1.3", + "php": ">=8.1", "psr/log": "^1|^2|^3", - "symfony/http-client-contracts": "^1.1.10|^2", - "symfony/polyfill-php73": "^1.11", - "symfony/polyfill-php80": "^1.16", - "symfony/service-contracts": "^1.0|^2" + "symfony/deprecation-contracts": "^2.5|^3", + "symfony/http-client-contracts": "^3", + "symfony/service-contracts": "^2.5|^3" + }, + "conflict": { + "php-http/discovery": "<1.15", + "symfony/http-foundation": "<6.3" }, "provide": { "php-http/async-client-implementation": "*", "php-http/client-implementation": "*", "psr/http-client-implementation": "1.0", - "symfony/http-client-implementation": "1.1|2.0" + "symfony/http-client-implementation": "3.0" }, "require-dev": { + "amphp/amp": "^2.5", + "amphp/http-client": "^4.2.1", + "amphp/http-tunnel": "^1.0", + "amphp/socket": "^1.1", "guzzlehttp/promises": "^1.4", "nyholm/psr7": "^1.0", "php-http/httplug": "^1.0|^2.0", "psr/http-client": "^1.0", - "symfony/dependency-injection": "^4.3|^5.0", - "symfony/http-kernel": "^4.4.13", - "symfony/process": "^4.2|^5.0" + "symfony/dependency-injection": "^5.4|^6.0", + "symfony/http-kernel": "^5.4|^6.0", + "symfony/process": "^5.4|^6.0", + "symfony/stopwatch": "^5.4|^6.0" }, "type": "library", "autoload": { @@ -5047,8 +5500,11 @@ ], "description": "Provides powerful methods to fetch HTTP resources synchronously or asynchronously", "homepage": "https://symfony.com", + "keywords": [ + "http" + ], "support": { - "source": "https://github.com/symfony/http-client/tree/v4.4.44" + "source": "https://github.com/symfony/http-client/tree/v6.3.12" }, "funding": [ { @@ -5064,32 +5520,29 @@ "type": "tidelift" } ], - "time": "2022-07-27T17:16:03+00:00" + "time": "2024-01-29T14:46:07+00:00" }, { "name": "symfony/http-client-contracts", - "version": "v2.5.2", + "version": "v3.5.0", "source": { "type": "git", "url": "https://github.com/symfony/http-client-contracts.git", - "reference": "ba6a9f0e8f3edd190520ee3b9a958596b6ca2e70" + "reference": "20414d96f391677bf80078aa55baece78b82647d" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/http-client-contracts/zipball/ba6a9f0e8f3edd190520ee3b9a958596b6ca2e70", - "reference": "ba6a9f0e8f3edd190520ee3b9a958596b6ca2e70", + "url": "https://api.github.com/repos/symfony/http-client-contracts/zipball/20414d96f391677bf80078aa55baece78b82647d", + "reference": "20414d96f391677bf80078aa55baece78b82647d", "shasum": "" }, "require": { - "php": ">=7.2.5" - }, - "suggest": { - "symfony/http-client-implementation": "" + "php": ">=8.1" }, "type": "library", "extra": { "branch-alias": { - "dev-main": "2.5-dev" + "dev-main": "3.5-dev" }, "thanks": { "name": "symfony/contracts", @@ -5099,7 +5552,10 @@ "autoload": { "psr-4": { "Symfony\\Contracts\\HttpClient\\": "" - } + }, + "exclude-from-classmap": [ + "/Test/" + ] }, "notification-url": "https://packagist.org/downloads/", "license": [ @@ -5126,7 +5582,7 @@ "standards" ], "support": { - "source": "https://github.com/symfony/http-client-contracts/tree/v2.5.2" + "source": "https://github.com/symfony/http-client-contracts/tree/v3.5.0" }, "funding": [ { @@ -5142,31 +5598,40 @@ "type": "tidelift" } ], - "time": "2022-04-12T15:48:08+00:00" + "time": "2024-04-18T09:32:20+00:00" }, { "name": "symfony/http-foundation", - "version": "v4.4.44", + "version": "v6.3.12", "source": { "type": "git", "url": "https://github.com/symfony/http-foundation.git", - "reference": "9bc83c2f78949fc64503134a3139a7b055890d06" + "reference": "3b72add708d48e8c08f7152df2d0b8d5303408fa" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/http-foundation/zipball/9bc83c2f78949fc64503134a3139a7b055890d06", - "reference": "9bc83c2f78949fc64503134a3139a7b055890d06", + "url": "https://api.github.com/repos/symfony/http-foundation/zipball/3b72add708d48e8c08f7152df2d0b8d5303408fa", + "reference": "3b72add708d48e8c08f7152df2d0b8d5303408fa", "shasum": "" }, "require": { - "php": ">=7.1.3", - "symfony/mime": "^4.3|^5.0", + "php": ">=8.1", + "symfony/deprecation-contracts": "^2.5|^3", "symfony/polyfill-mbstring": "~1.1", - "symfony/polyfill-php80": "^1.16" + "symfony/polyfill-php83": "^1.27" + }, + "conflict": { + "symfony/cache": "<6.3" }, "require-dev": { - "predis/predis": "~1.0", - "symfony/expression-language": "^3.4|^4.0|^5.0" + "doctrine/dbal": "^2.13.1|^3|^4", + "predis/predis": "^1.1|^2.0", + "symfony/cache": "^6.3", + "symfony/dependency-injection": "^5.4|^6.0", + "symfony/expression-language": "^5.4|^6.0", + "symfony/http-kernel": "^5.4.12|^6.0.12|^6.1.4", + "symfony/mime": "^5.4|^6.0", + "symfony/rate-limiter": "^5.2|^6.0" }, "type": "library", "autoload": { @@ -5194,7 +5659,7 @@ "description": "Defines an object-oriented layer for the HTTP specification", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/http-foundation/tree/v4.4.44" + "source": "https://github.com/symfony/http-foundation/tree/v6.3.12" }, "funding": [ { @@ -5210,67 +5675,76 @@ "type": "tidelift" } ], - "time": "2022-07-20T09:59:04+00:00" + "time": "2024-01-23T14:35:58+00:00" }, { "name": "symfony/http-kernel", - "version": "v4.4.44", + "version": "v6.3.12", "source": { "type": "git", "url": "https://github.com/symfony/http-kernel.git", - "reference": "9e444442334fae9637ef3209bc2abddfef49e714" + "reference": "f7d160e46a6e0d3183e7a3846d4e3b4d04d5898b" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/http-kernel/zipball/9e444442334fae9637ef3209bc2abddfef49e714", - "reference": "9e444442334fae9637ef3209bc2abddfef49e714", + "url": "https://api.github.com/repos/symfony/http-kernel/zipball/f7d160e46a6e0d3183e7a3846d4e3b4d04d5898b", + "reference": "f7d160e46a6e0d3183e7a3846d4e3b4d04d5898b", "shasum": "" }, "require": { - "php": ">=7.1.3", - "psr/log": "^1|^2", - "symfony/error-handler": "^4.4", - "symfony/event-dispatcher": "^4.4", - "symfony/http-client-contracts": "^1.1|^2", - "symfony/http-foundation": "^4.4.30|^5.3.7", - "symfony/polyfill-ctype": "^1.8", - "symfony/polyfill-php73": "^1.9", - "symfony/polyfill-php80": "^1.16" + "php": ">=8.1", + "psr/log": "^1|^2|^3", + "symfony/deprecation-contracts": "^2.5|^3", + "symfony/error-handler": "^6.3", + "symfony/event-dispatcher": "^5.4|^6.0", + "symfony/http-foundation": "^6.3.4", + "symfony/polyfill-ctype": "^1.8" }, "conflict": { - "symfony/browser-kit": "<4.3", - "symfony/config": "<3.4", - "symfony/console": ">=5", - "symfony/dependency-injection": "<4.3", - "symfony/translation": "<4.2", - "twig/twig": "<1.43|<2.13,>=2" + "symfony/browser-kit": "<5.4", + "symfony/cache": "<5.4", + "symfony/config": "<6.1", + "symfony/console": "<5.4", + "symfony/dependency-injection": "<6.3.4", + "symfony/doctrine-bridge": "<5.4", + "symfony/form": "<5.4", + "symfony/http-client": "<5.4", + "symfony/http-client-contracts": "<2.5", + "symfony/mailer": "<5.4", + "symfony/messenger": "<5.4", + "symfony/translation": "<5.4", + "symfony/translation-contracts": "<2.5", + "symfony/twig-bridge": "<5.4", + "symfony/validator": "<5.4", + "symfony/var-dumper": "<6.3", + "twig/twig": "<2.13" }, "provide": { - "psr/log-implementation": "1.0|2.0" + "psr/log-implementation": "1.0|2.0|3.0" }, "require-dev": { "psr/cache": "^1.0|^2.0|^3.0", - "symfony/browser-kit": "^4.3|^5.0", - "symfony/config": "^3.4|^4.0|^5.0", - "symfony/console": "^3.4|^4.0", - "symfony/css-selector": "^3.4|^4.0|^5.0", - "symfony/dependency-injection": "^4.3|^5.0", - "symfony/dom-crawler": "^3.4|^4.0|^5.0", - "symfony/expression-language": "^3.4|^4.0|^5.0", - "symfony/finder": "^3.4|^4.0|^5.0", - "symfony/process": "^3.4|^4.0|^5.0", - "symfony/routing": "^3.4|^4.0|^5.0", - "symfony/stopwatch": "^3.4|^4.0|^5.0", - "symfony/templating": "^3.4|^4.0|^5.0", - "symfony/translation": "^4.2|^5.0", - "symfony/translation-contracts": "^1.1|^2", - "twig/twig": "^1.43|^2.13|^3.0.4" - }, - "suggest": { - "symfony/browser-kit": "", - "symfony/config": "", - "symfony/console": "", - "symfony/dependency-injection": "" + "symfony/browser-kit": "^5.4|^6.0", + "symfony/clock": "^6.2", + "symfony/config": "^6.1", + "symfony/console": "^5.4|^6.0", + "symfony/css-selector": "^5.4|^6.0", + "symfony/dependency-injection": "^6.3.4", + "symfony/dom-crawler": "^5.4|^6.0", + "symfony/expression-language": "^5.4|^6.0", + "symfony/finder": "^5.4|^6.0", + "symfony/http-client-contracts": "^2.5|^3", + "symfony/process": "^5.4|^6.0", + "symfony/property-access": "^5.4.5|^6.0.5", + "symfony/routing": "^5.4|^6.0", + "symfony/serializer": "^6.3", + "symfony/stopwatch": "^5.4|^6.0", + "symfony/translation": "^5.4|^6.0", + "symfony/translation-contracts": "^2.5|^3", + "symfony/uid": "^5.4|^6.0", + "symfony/validator": "^6.3", + "symfony/var-exporter": "^6.2", + "twig/twig": "^2.13|^3.0.4" }, "type": "library", "autoload": { @@ -5298,78 +5772,7 @@ "description": "Provides a structured process for converting a Request into a Response", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/http-kernel/tree/v4.4.44" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "time": "2022-07-29T12:23:38+00:00" - }, - { - "name": "symfony/inflector", - "version": "v4.4.44", - "source": { - "type": "git", - "url": "https://github.com/symfony/inflector.git", - "reference": "66185be61805b1e44a5c4000929e700228d426cc" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/inflector/zipball/66185be61805b1e44a5c4000929e700228d426cc", - "reference": "66185be61805b1e44a5c4000929e700228d426cc", - "shasum": "" - }, - "require": { - "php": ">=7.1.3", - "symfony/polyfill-ctype": "~1.8", - "symfony/polyfill-php80": "^1.16" - }, - "type": "library", - "autoload": { - "psr-4": { - "Symfony\\Component\\Inflector\\": "" - }, - "exclude-from-classmap": [ - "/Tests/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Bernhard Schussek", - "email": "bschussek@gmail.com" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" - } - ], - "description": "Converts words between their singular and plural forms (English only)", - "homepage": "https://symfony.com", - "keywords": [ - "inflection", - "pluralize", - "singularize", - "string", - "symfony", - "words" - ], - "support": { - "source": "https://github.com/symfony/inflector/tree/v4.4.44" + "source": "https://github.com/symfony/http-kernel/tree/v6.3.12" }, "funding": [ { @@ -5385,42 +5788,35 @@ "type": "tidelift" } ], - "abandoned": "EnglishInflector from the String component", - "time": "2022-07-20T09:59:04+00:00" + "time": "2024-01-30T20:05:26+00:00" }, { "name": "symfony/intl", - "version": "v4.4.44", + "version": "v6.3.12", "source": { "type": "git", "url": "https://github.com/symfony/intl.git", - "reference": "834ba2af906d8e3531afcad9c13f4c43c5935592" + "reference": "db1c2e9fc5c28622587a1e975a6346e93d0417c2" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/intl/zipball/834ba2af906d8e3531afcad9c13f4c43c5935592", - "reference": "834ba2af906d8e3531afcad9c13f4c43c5935592", + "url": "https://api.github.com/repos/symfony/intl/zipball/db1c2e9fc5c28622587a1e975a6346e93d0417c2", + "reference": "db1c2e9fc5c28622587a1e975a6346e93d0417c2", "shasum": "" }, "require": { - "php": ">=7.1.3", - "symfony/polyfill-intl-icu": "~1.0", - "symfony/polyfill-php80": "^1.16" + "php": ">=8.1" }, "require-dev": { - "symfony/filesystem": "^3.4|^4.0|^5.0" - }, - "suggest": { - "ext-intl": "to use the component with locales other than \"en\"" + "symfony/filesystem": "^5.4|^6.0", + "symfony/finder": "^5.4|^6.0", + "symfony/var-exporter": "^5.4|^6.0" }, "type": "library", "autoload": { "psr-4": { "Symfony\\Component\\Intl\\": "" }, - "classmap": [ - "Resources/stubs" - ], "exclude-from-classmap": [ "/Tests/" ] @@ -5447,7 +5843,7 @@ "homepage": "https://symfony.com/contributors" } ], - "description": "Provides a PHP replacement layer for the C intl extension that includes additional data from the ICU library", + "description": "Provides access to the localization data of the ICU library", "homepage": "https://symfony.com", "keywords": [ "i18n", @@ -5458,7 +5854,7 @@ "localization" ], "support": { - "source": "https://github.com/symfony/intl/tree/v4.4.44" + "source": "https://github.com/symfony/intl/tree/v6.3.12" }, "funding": [ { @@ -5474,44 +5870,43 @@ "type": "tidelift" } ], - "time": "2022-07-20T09:59:04+00:00" + "time": "2024-01-23T14:42:18+00:00" }, { "name": "symfony/mailer", - "version": "v4.4.44", + "version": "v6.3.12", "source": { "type": "git", "url": "https://github.com/symfony/mailer.git", - "reference": "5f514a86368c53cf0d6c67aa40f7771fdf1ceb0c" + "reference": "3cbb745658179fb1a68ba87a4a4f16ee99dcb821" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/mailer/zipball/5f514a86368c53cf0d6c67aa40f7771fdf1ceb0c", - "reference": "5f514a86368c53cf0d6c67aa40f7771fdf1ceb0c", + "url": "https://api.github.com/repos/symfony/mailer/zipball/3cbb745658179fb1a68ba87a4a4f16ee99dcb821", + "reference": "3cbb745658179fb1a68ba87a4a4f16ee99dcb821", "shasum": "" }, "require": { - "egulias/email-validator": "^2.1.10|^3", - "php": ">=7.1.3", + "egulias/email-validator": "^2.1.10|^3|^4", + "php": ">=8.1", + "psr/event-dispatcher": "^1", "psr/log": "^1|^2|^3", - "symfony/event-dispatcher": "^4.3", - "symfony/mime": "^4.4.21|^5.2.6", - "symfony/polyfill-php80": "^1.16", - "symfony/service-contracts": "^1.1|^2" + "symfony/event-dispatcher": "^5.4|^6.0", + "symfony/mime": "^6.2", + "symfony/service-contracts": "^2.5|^3" }, "conflict": { - "symfony/http-kernel": "<4.4", - "symfony/sendgrid-mailer": "<4.4" + "symfony/http-client-contracts": "<2.5", + "symfony/http-kernel": "<5.4", + "symfony/messenger": "<6.2", + "symfony/mime": "<6.2", + "symfony/twig-bridge": "<6.2.1" }, "require-dev": { - "symfony/amazon-mailer": "^4.4|^5.0", - "symfony/google-mailer": "^4.4|^5.0", - "symfony/http-client-contracts": "^1.1|^2", - "symfony/mailchimp-mailer": "^4.4|^5.0", - "symfony/mailgun-mailer": "^4.4|^5.0", - "symfony/messenger": "^4.4|^5.0", - "symfony/postmark-mailer": "^4.4|^5.0", - "symfony/sendgrid-mailer": "^4.4|^5.0" + "symfony/console": "^5.4|^6.0", + "symfony/http-client": "^5.4|^6.0", + "symfony/messenger": "^6.2", + "symfony/twig-bridge": "^6.2" }, "type": "library", "autoload": { @@ -5539,7 +5934,7 @@ "description": "Helps sending emails", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/mailer/tree/v4.4.44" + "source": "https://github.com/symfony/mailer/tree/v6.3.12" }, "funding": [ { @@ -5555,35 +5950,43 @@ "type": "tidelift" } ], - "time": "2022-07-20T09:59:04+00:00" + "time": "2024-01-29T14:46:07+00:00" }, { "name": "symfony/mime", - "version": "v4.4.44", + "version": "v6.3.12", "source": { "type": "git", "url": "https://github.com/symfony/mime.git", - "reference": "72748976b0cc82b44fcae1d66c9df7b598b543c4" + "reference": "4b24dcaf8dfcd23fb7abb5b9df11e8c8093db68a" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/mime/zipball/72748976b0cc82b44fcae1d66c9df7b598b543c4", - "reference": "72748976b0cc82b44fcae1d66c9df7b598b543c4", + "url": "https://api.github.com/repos/symfony/mime/zipball/4b24dcaf8dfcd23fb7abb5b9df11e8c8093db68a", + "reference": "4b24dcaf8dfcd23fb7abb5b9df11e8c8093db68a", "shasum": "" }, "require": { - "php": ">=7.1.3", + "php": ">=8.1", + "symfony/deprecation-contracts": "^2.5|^3", "symfony/polyfill-intl-idn": "^1.10", - "symfony/polyfill-mbstring": "^1.0", - "symfony/polyfill-php80": "^1.16" + "symfony/polyfill-mbstring": "^1.0" }, "conflict": { "egulias/email-validator": "~3.0.0", - "symfony/mailer": "<4.4" + "phpdocumentor/reflection-docblock": "<3.2.2", + "phpdocumentor/type-resolver": "<1.4.0", + "symfony/mailer": "<5.4", + "symfony/serializer": "<6.3.12|>=6.4,<6.4.3" }, "require-dev": { - "egulias/email-validator": "^2.1.10|^3.1", - "symfony/dependency-injection": "^3.4|^4.1|^5.0" + "egulias/email-validator": "^2.1.10|^3.1|^4", + "league/html-to-markdown": "^5.0", + "phpdocumentor/reflection-docblock": "^3.0|^4.0|^5.0", + "symfony/dependency-injection": "^5.4|^6.0", + "symfony/property-access": "^5.4|^6.0", + "symfony/property-info": "^5.4|^6.0", + "symfony/serializer": "~6.3.12|^6.4.3" }, "type": "library", "autoload": { @@ -5615,7 +6018,7 @@ "mime-type" ], "support": { - "source": "https://github.com/symfony/mime/tree/v4.4.44" + "source": "https://github.com/symfony/mime/tree/v6.3.12" }, "funding": [ { @@ -5631,43 +6034,41 @@ "type": "tidelift" } ], - "time": "2022-07-20T09:59:04+00:00" + "time": "2024-01-30T08:17:33+00:00" }, { "name": "symfony/monolog-bridge", - "version": "v4.4.43", + "version": "v6.3.12", "source": { "type": "git", "url": "https://github.com/symfony/monolog-bridge.git", - "reference": "ad09c9980b912e757c4ecd8363cebf3039d1d471" + "reference": "b655801218307a85cc0ebb853ac289446db3084a" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/monolog-bridge/zipball/ad09c9980b912e757c4ecd8363cebf3039d1d471", - "reference": "ad09c9980b912e757c4ecd8363cebf3039d1d471", + "url": "https://api.github.com/repos/symfony/monolog-bridge/zipball/b655801218307a85cc0ebb853ac289446db3084a", + "reference": "b655801218307a85cc0ebb853ac289446db3084a", "shasum": "" }, "require": { - "monolog/monolog": "^1.25.1", - "php": ">=7.1.3", - "symfony/http-kernel": "^4.3", - "symfony/polyfill-php80": "^1.16", - "symfony/service-contracts": "^1.1|^2" + "monolog/monolog": "^1.25.1|^2|^3", + "php": ">=8.1", + "symfony/http-kernel": "^5.4|^6.0", + "symfony/service-contracts": "^2.5|^3" }, "conflict": { - "symfony/console": "<3.4", - "symfony/http-foundation": "<3.4" + "symfony/console": "<5.4", + "symfony/http-foundation": "<5.4", + "symfony/security-core": "<6.0" }, "require-dev": { - "symfony/console": "^3.4|^4.0|^5.0", - "symfony/http-client": "^4.4|^5.0", - "symfony/security-core": "^3.4|^4.0|^5.0", - "symfony/var-dumper": "^3.4|^4.0|^5.0" - }, - "suggest": { - "symfony/console": "For the possibility to show log messages in console commands depending on verbosity settings.", - "symfony/http-kernel": "For using the debugging handlers together with the response life cycle of the HTTP kernel.", - "symfony/var-dumper": "For using the debugging handlers like the console handler or the log server handler." + "symfony/console": "^5.4|^6.0", + "symfony/http-client": "^5.4|^6.0", + "symfony/mailer": "^5.4|^6.0", + "symfony/messenger": "^5.4|^6.0", + "symfony/mime": "^5.4|^6.0", + "symfony/security-core": "^6.0", + "symfony/var-dumper": "^5.4|^6.0" }, "type": "symfony-bridge", "autoload": { @@ -5695,7 +6096,7 @@ "description": "Provides integration for Monolog with various Symfony components", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/monolog-bridge/tree/v4.4.43" + "source": "https://github.com/symfony/monolog-bridge/tree/v6.3.12" }, "funding": [ { @@ -5711,34 +6112,34 @@ "type": "tidelift" } ], - "time": "2022-06-16T12:12:11+00:00" + "time": "2024-01-29T14:47:00+00:00" }, { "name": "symfony/monolog-bundle", - "version": "v3.8.0", + "version": "v3.10.0", "source": { "type": "git", "url": "https://github.com/symfony/monolog-bundle.git", - "reference": "a41bbcdc1105603b6d73a7d9a43a3788f8e0fb7d" + "reference": "414f951743f4aa1fd0f5bf6a0e9c16af3fe7f181" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/monolog-bundle/zipball/a41bbcdc1105603b6d73a7d9a43a3788f8e0fb7d", - "reference": "a41bbcdc1105603b6d73a7d9a43a3788f8e0fb7d", + "url": "https://api.github.com/repos/symfony/monolog-bundle/zipball/414f951743f4aa1fd0f5bf6a0e9c16af3fe7f181", + "reference": "414f951743f4aa1fd0f5bf6a0e9c16af3fe7f181", "shasum": "" }, "require": { - "monolog/monolog": "^1.22 || ^2.0 || ^3.0", - "php": ">=7.1.3", - "symfony/config": "~4.4 || ^5.0 || ^6.0", - "symfony/dependency-injection": "^4.4 || ^5.0 || ^6.0", - "symfony/http-kernel": "~4.4 || ^5.0 || ^6.0", - "symfony/monolog-bridge": "~4.4 || ^5.0 || ^6.0" + "monolog/monolog": "^1.25.1 || ^2.0 || ^3.0", + "php": ">=7.2.5", + "symfony/config": "^5.4 || ^6.0 || ^7.0", + "symfony/dependency-injection": "^5.4 || ^6.0 || ^7.0", + "symfony/http-kernel": "^5.4 || ^6.0 || ^7.0", + "symfony/monolog-bridge": "^5.4 || ^6.0 || ^7.0" }, "require-dev": { - "symfony/console": "~4.4 || ^5.0 || ^6.0", - "symfony/phpunit-bridge": "^5.2 || ^6.0", - "symfony/yaml": "~4.4 || ^5.0 || ^6.0" + "symfony/console": "^5.4 || ^6.0 || ^7.0", + "symfony/phpunit-bridge": "^6.3 || ^7.0", + "symfony/yaml": "^5.4 || ^6.0 || ^7.0" }, "type": "symfony-bundle", "extra": { @@ -5776,7 +6177,7 @@ ], "support": { "issues": "https://github.com/symfony/monolog-bundle/issues", - "source": "https://github.com/symfony/monolog-bundle/tree/v3.8.0" + "source": "https://github.com/symfony/monolog-bundle/tree/v3.10.0" }, "funding": [ { @@ -5792,30 +6193,103 @@ "type": "tidelift" } ], - "time": "2022-05-10T14:24:36+00:00" + "time": "2023-11-06T17:08:13+00:00" }, { "name": "symfony/options-resolver", - "version": "v4.4.44", + "version": "v6.3.0", + "source": { + "type": "git", + "url": "https://github.com/symfony/options-resolver.git", + "reference": "a10f19f5198d589d5c33333cffe98dc9820332dd" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/options-resolver/zipball/a10f19f5198d589d5c33333cffe98dc9820332dd", + "reference": "a10f19f5198d589d5c33333cffe98dc9820332dd", + "shasum": "" + }, + "require": { + "php": ">=8.1", + "symfony/deprecation-contracts": "^2.5|^3" + }, + "type": "library", + "autoload": { + "psr-4": { + "Symfony\\Component\\OptionsResolver\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Fabien Potencier", + "email": "fabien@symfony.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Provides an improved replacement for the array_replace PHP function", + "homepage": "https://symfony.com", + "keywords": [ + "config", + "configuration", + "options" + ], + "support": { + "source": "https://github.com/symfony/options-resolver/tree/v6.3.0" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2023-05-12T14:21:09+00:00" + }, + { + "name": "symfony/password-hasher", + "version": "v6.3.12", "source": { "type": "git", - "url": "https://github.com/symfony/options-resolver.git", - "reference": "583f56160f716dd435f1cd721fd14b548f4bb510" + "url": "https://github.com/symfony/password-hasher.git", + "reference": "513140986f5d6ca1b1ef86f47166a36654571bfe" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/options-resolver/zipball/583f56160f716dd435f1cd721fd14b548f4bb510", - "reference": "583f56160f716dd435f1cd721fd14b548f4bb510", + "url": "https://api.github.com/repos/symfony/password-hasher/zipball/513140986f5d6ca1b1ef86f47166a36654571bfe", + "reference": "513140986f5d6ca1b1ef86f47166a36654571bfe", "shasum": "" }, "require": { - "php": ">=7.1.3", - "symfony/polyfill-php80": "^1.16" + "php": ">=8.1" + }, + "conflict": { + "symfony/security-core": "<5.4" + }, + "require-dev": { + "symfony/console": "^5.4|^6.0", + "symfony/security-core": "^5.4|^6.0" }, "type": "library", "autoload": { "psr-4": { - "Symfony\\Component\\OptionsResolver\\": "" + "Symfony\\Component\\PasswordHasher\\": "" }, "exclude-from-classmap": [ "/Tests/" @@ -5827,23 +6301,22 @@ ], "authors": [ { - "name": "Fabien Potencier", - "email": "fabien@symfony.com" + "name": "Robin Chalas", + "email": "robin.chalas@gmail.com" }, { "name": "Symfony Community", "homepage": "https://symfony.com/contributors" } ], - "description": "Provides an improved replacement for the array_replace PHP function", + "description": "Provides password hashing utilities", "homepage": "https://symfony.com", "keywords": [ - "config", - "configuration", - "options" + "hashing", + "password" ], "support": { - "source": "https://github.com/symfony/options-resolver/tree/v4.4.44" + "source": "https://github.com/symfony/password-hasher/tree/v6.3.12" }, "funding": [ { @@ -5859,20 +6332,20 @@ "type": "tidelift" } ], - "time": "2022-07-20T09:59:04+00:00" + "time": "2024-01-23T14:35:58+00:00" }, { "name": "symfony/polyfill-intl-grapheme", - "version": "v1.26.0", + "version": "v1.29.0", "source": { "type": "git", "url": "https://github.com/symfony/polyfill-intl-grapheme.git", - "reference": "433d05519ce6990bf3530fba6957499d327395c2" + "reference": "32a9da87d7b3245e09ac426c83d334ae9f06f80f" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-intl-grapheme/zipball/433d05519ce6990bf3530fba6957499d327395c2", - "reference": "433d05519ce6990bf3530fba6957499d327395c2", + "url": "https://api.github.com/repos/symfony/polyfill-intl-grapheme/zipball/32a9da87d7b3245e09ac426c83d334ae9f06f80f", + "reference": "32a9da87d7b3245e09ac426c83d334ae9f06f80f", "shasum": "" }, "require": { @@ -5883,9 +6356,6 @@ }, "type": "library", "extra": { - "branch-alias": { - "dev-main": "1.26-dev" - }, "thanks": { "name": "symfony/polyfill", "url": "https://github.com/symfony/polyfill" @@ -5924,7 +6394,7 @@ "shim" ], "support": { - "source": "https://github.com/symfony/polyfill-intl-grapheme/tree/v1.26.0" + "source": "https://github.com/symfony/polyfill-intl-grapheme/tree/v1.29.0" }, "funding": [ { @@ -5940,20 +6410,20 @@ "type": "tidelift" } ], - "time": "2022-05-24T11:49:31+00:00" + "time": "2024-01-29T20:11:03+00:00" }, { "name": "symfony/polyfill-intl-icu", - "version": "v1.26.0", + "version": "v1.29.0", "source": { "type": "git", "url": "https://github.com/symfony/polyfill-intl-icu.git", - "reference": "e407643d610e5f2c8a4b14189150f68934bf5e48" + "reference": "07094a28851a49107f3ab4f9120ca2975a64b6e1" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-intl-icu/zipball/e407643d610e5f2c8a4b14189150f68934bf5e48", - "reference": "e407643d610e5f2c8a4b14189150f68934bf5e48", + "url": "https://api.github.com/repos/symfony/polyfill-intl-icu/zipball/07094a28851a49107f3ab4f9120ca2975a64b6e1", + "reference": "07094a28851a49107f3ab4f9120ca2975a64b6e1", "shasum": "" }, "require": { @@ -5964,9 +6434,6 @@ }, "type": "library", "extra": { - "branch-alias": { - "dev-main": "1.26-dev" - }, "thanks": { "name": "symfony/polyfill", "url": "https://github.com/symfony/polyfill" @@ -6011,7 +6478,7 @@ "shim" ], "support": { - "source": "https://github.com/symfony/polyfill-intl-icu/tree/v1.26.0" + "source": "https://github.com/symfony/polyfill-intl-icu/tree/v1.29.0" }, "funding": [ { @@ -6027,20 +6494,20 @@ "type": "tidelift" } ], - "time": "2022-05-24T11:49:31+00:00" + "time": "2024-01-29T20:12:16+00:00" }, { "name": "symfony/polyfill-intl-idn", - "version": "v1.26.0", + "version": "v1.29.0", "source": { "type": "git", "url": "https://github.com/symfony/polyfill-intl-idn.git", - "reference": "59a8d271f00dd0e4c2e518104cc7963f655a1aa8" + "reference": "a287ed7475f85bf6f61890146edbc932c0fff919" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-intl-idn/zipball/59a8d271f00dd0e4c2e518104cc7963f655a1aa8", - "reference": "59a8d271f00dd0e4c2e518104cc7963f655a1aa8", + "url": "https://api.github.com/repos/symfony/polyfill-intl-idn/zipball/a287ed7475f85bf6f61890146edbc932c0fff919", + "reference": "a287ed7475f85bf6f61890146edbc932c0fff919", "shasum": "" }, "require": { @@ -6053,9 +6520,6 @@ }, "type": "library", "extra": { - "branch-alias": { - "dev-main": "1.26-dev" - }, "thanks": { "name": "symfony/polyfill", "url": "https://github.com/symfony/polyfill" @@ -6098,7 +6562,7 @@ "shim" ], "support": { - "source": "https://github.com/symfony/polyfill-intl-idn/tree/v1.26.0" + "source": "https://github.com/symfony/polyfill-intl-idn/tree/v1.29.0" }, "funding": [ { @@ -6114,20 +6578,20 @@ "type": "tidelift" } ], - "time": "2022-05-24T11:49:31+00:00" + "time": "2024-01-29T20:11:03+00:00" }, { "name": "symfony/polyfill-intl-normalizer", - "version": "v1.26.0", + "version": "v1.29.0", "source": { "type": "git", "url": "https://github.com/symfony/polyfill-intl-normalizer.git", - "reference": "219aa369ceff116e673852dce47c3a41794c14bd" + "reference": "bc45c394692b948b4d383a08d7753968bed9a83d" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-intl-normalizer/zipball/219aa369ceff116e673852dce47c3a41794c14bd", - "reference": "219aa369ceff116e673852dce47c3a41794c14bd", + "url": "https://api.github.com/repos/symfony/polyfill-intl-normalizer/zipball/bc45c394692b948b4d383a08d7753968bed9a83d", + "reference": "bc45c394692b948b4d383a08d7753968bed9a83d", "shasum": "" }, "require": { @@ -6138,9 +6602,6 @@ }, "type": "library", "extra": { - "branch-alias": { - "dev-main": "1.26-dev" - }, "thanks": { "name": "symfony/polyfill", "url": "https://github.com/symfony/polyfill" @@ -6182,7 +6643,7 @@ "shim" ], "support": { - "source": "https://github.com/symfony/polyfill-intl-normalizer/tree/v1.26.0" + "source": "https://github.com/symfony/polyfill-intl-normalizer/tree/v1.29.0" }, "funding": [ { @@ -6198,20 +6659,20 @@ "type": "tidelift" } ], - "time": "2022-05-24T11:49:31+00:00" + "time": "2024-01-29T20:11:03+00:00" }, { "name": "symfony/polyfill-mbstring", - "version": "v1.26.0", + "version": "v1.29.0", "source": { "type": "git", "url": "https://github.com/symfony/polyfill-mbstring.git", - "reference": "9344f9cb97f3b19424af1a21a3b0e75b0a7d8d7e" + "reference": "9773676c8a1bb1f8d4340a62efe641cf76eda7ec" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-mbstring/zipball/9344f9cb97f3b19424af1a21a3b0e75b0a7d8d7e", - "reference": "9344f9cb97f3b19424af1a21a3b0e75b0a7d8d7e", + "url": "https://api.github.com/repos/symfony/polyfill-mbstring/zipball/9773676c8a1bb1f8d4340a62efe641cf76eda7ec", + "reference": "9773676c8a1bb1f8d4340a62efe641cf76eda7ec", "shasum": "" }, "require": { @@ -6225,9 +6686,6 @@ }, "type": "library", "extra": { - "branch-alias": { - "dev-main": "1.26-dev" - }, "thanks": { "name": "symfony/polyfill", "url": "https://github.com/symfony/polyfill" @@ -6265,7 +6723,7 @@ "shim" ], "support": { - "source": "https://github.com/symfony/polyfill-mbstring/tree/v1.26.0" + "source": "https://github.com/symfony/polyfill-mbstring/tree/v1.29.0" }, "funding": [ { @@ -6281,20 +6739,20 @@ "type": "tidelift" } ], - "time": "2022-05-24T11:49:31+00:00" + "time": "2024-01-29T20:11:03+00:00" }, { "name": "symfony/polyfill-php72", - "version": "v1.26.0", + "version": "v1.29.0", "source": { "type": "git", "url": "https://github.com/symfony/polyfill-php72.git", - "reference": "bf44a9fd41feaac72b074de600314a93e2ae78e2" + "reference": "861391a8da9a04cbad2d232ddd9e4893220d6e25" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-php72/zipball/bf44a9fd41feaac72b074de600314a93e2ae78e2", - "reference": "bf44a9fd41feaac72b074de600314a93e2ae78e2", + "url": "https://api.github.com/repos/symfony/polyfill-php72/zipball/861391a8da9a04cbad2d232ddd9e4893220d6e25", + "reference": "861391a8da9a04cbad2d232ddd9e4893220d6e25", "shasum": "" }, "require": { @@ -6302,9 +6760,6 @@ }, "type": "library", "extra": { - "branch-alias": { - "dev-main": "1.26-dev" - }, "thanks": { "name": "symfony/polyfill", "url": "https://github.com/symfony/polyfill" @@ -6341,86 +6796,7 @@ "shim" ], "support": { - "source": "https://github.com/symfony/polyfill-php72/tree/v1.26.0" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "time": "2022-05-24T11:49:31+00:00" - }, - { - "name": "symfony/polyfill-php73", - "version": "v1.26.0", - "source": { - "type": "git", - "url": "https://github.com/symfony/polyfill-php73.git", - "reference": "e440d35fa0286f77fb45b79a03fedbeda9307e85" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-php73/zipball/e440d35fa0286f77fb45b79a03fedbeda9307e85", - "reference": "e440d35fa0286f77fb45b79a03fedbeda9307e85", - "shasum": "" - }, - "require": { - "php": ">=7.1" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "1.26-dev" - }, - "thanks": { - "name": "symfony/polyfill", - "url": "https://github.com/symfony/polyfill" - } - }, - "autoload": { - "files": [ - "bootstrap.php" - ], - "psr-4": { - "Symfony\\Polyfill\\Php73\\": "" - }, - "classmap": [ - "Resources/stubs" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Nicolas Grekas", - "email": "p@tchwork.com" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" - } - ], - "description": "Symfony polyfill backporting some PHP 7.3+ features to lower PHP versions", - "homepage": "https://symfony.com", - "keywords": [ - "compatibility", - "polyfill", - "portable", - "shim" - ], - "support": { - "source": "https://github.com/symfony/polyfill-php73/tree/v1.26.0" + "source": "https://github.com/symfony/polyfill-php72/tree/v1.29.0" }, "funding": [ { @@ -6436,20 +6812,20 @@ "type": "tidelift" } ], - "time": "2022-05-24T11:49:31+00:00" + "time": "2024-01-29T20:11:03+00:00" }, { "name": "symfony/polyfill-php80", - "version": "v1.26.0", + "version": "v1.29.0", "source": { "type": "git", "url": "https://github.com/symfony/polyfill-php80.git", - "reference": "cfa0ae98841b9e461207c13ab093d76b0fa7bace" + "reference": "87b68208d5c1188808dd7839ee1e6c8ec3b02f1b" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-php80/zipball/cfa0ae98841b9e461207c13ab093d76b0fa7bace", - "reference": "cfa0ae98841b9e461207c13ab093d76b0fa7bace", + "url": "https://api.github.com/repos/symfony/polyfill-php80/zipball/87b68208d5c1188808dd7839ee1e6c8ec3b02f1b", + "reference": "87b68208d5c1188808dd7839ee1e6c8ec3b02f1b", "shasum": "" }, "require": { @@ -6457,9 +6833,6 @@ }, "type": "library", "extra": { - "branch-alias": { - "dev-main": "1.26-dev" - }, "thanks": { "name": "symfony/polyfill", "url": "https://github.com/symfony/polyfill" @@ -6503,7 +6876,7 @@ "shim" ], "support": { - "source": "https://github.com/symfony/polyfill-php80/tree/v1.26.0" + "source": "https://github.com/symfony/polyfill-php80/tree/v1.29.0" }, "funding": [ { @@ -6519,30 +6892,28 @@ "type": "tidelift" } ], - "time": "2022-05-10T07:21:04+00:00" + "time": "2024-01-29T20:11:03+00:00" }, { - "name": "symfony/polyfill-php81", - "version": "v1.26.0", + "name": "symfony/polyfill-php83", + "version": "v1.29.0", "source": { "type": "git", - "url": "https://github.com/symfony/polyfill-php81.git", - "reference": "13f6d1271c663dc5ae9fb843a8f16521db7687a1" + "url": "https://github.com/symfony/polyfill-php83.git", + "reference": "86fcae159633351e5fd145d1c47de6c528f8caff" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-php81/zipball/13f6d1271c663dc5ae9fb843a8f16521db7687a1", - "reference": "13f6d1271c663dc5ae9fb843a8f16521db7687a1", + "url": "https://api.github.com/repos/symfony/polyfill-php83/zipball/86fcae159633351e5fd145d1c47de6c528f8caff", + "reference": "86fcae159633351e5fd145d1c47de6c528f8caff", "shasum": "" }, "require": { - "php": ">=7.1" + "php": ">=7.1", + "symfony/polyfill-php80": "^1.14" }, "type": "library", "extra": { - "branch-alias": { - "dev-main": "1.26-dev" - }, "thanks": { "name": "symfony/polyfill", "url": "https://github.com/symfony/polyfill" @@ -6553,7 +6924,7 @@ "bootstrap.php" ], "psr-4": { - "Symfony\\Polyfill\\Php81\\": "" + "Symfony\\Polyfill\\Php83\\": "" }, "classmap": [ "Resources/stubs" @@ -6573,7 +6944,7 @@ "homepage": "https://symfony.com/contributors" } ], - "description": "Symfony polyfill backporting some PHP 8.1+ features to lower PHP versions", + "description": "Symfony polyfill backporting some PHP 8.3+ features to lower PHP versions", "homepage": "https://symfony.com", "keywords": [ "compatibility", @@ -6582,7 +6953,7 @@ "shim" ], "support": { - "source": "https://github.com/symfony/polyfill-php81/tree/v1.26.0" + "source": "https://github.com/symfony/polyfill-php83/tree/v1.29.0" }, "funding": [ { @@ -6598,25 +6969,24 @@ "type": "tidelift" } ], - "time": "2022-05-24T11:49:31+00:00" + "time": "2024-01-29T20:11:03+00:00" }, { "name": "symfony/process", - "version": "v4.4.44", + "version": "v6.3.12", "source": { "type": "git", "url": "https://github.com/symfony/process.git", - "reference": "5cee9cdc4f7805e2699d9fd66991a0e6df8252a2" + "reference": "6c5eceb88510fc6ccd7044f2bacb21a3c0993882" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/process/zipball/5cee9cdc4f7805e2699d9fd66991a0e6df8252a2", - "reference": "5cee9cdc4f7805e2699d9fd66991a0e6df8252a2", + "url": "https://api.github.com/repos/symfony/process/zipball/6c5eceb88510fc6ccd7044f2bacb21a3c0993882", + "reference": "6c5eceb88510fc6ccd7044f2bacb21a3c0993882", "shasum": "" }, "require": { - "php": ">=7.1.3", - "symfony/polyfill-php80": "^1.16" + "php": ">=8.1" }, "type": "library", "autoload": { @@ -6644,7 +7014,7 @@ "description": "Executes commands in sub-processes", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/process/tree/v4.4.44" + "source": "https://github.com/symfony/process/tree/v6.3.12" }, "funding": [ { @@ -6660,32 +7030,29 @@ "type": "tidelift" } ], - "time": "2022-06-27T13:16:42+00:00" + "time": "2024-01-23T14:35:58+00:00" }, { "name": "symfony/property-access", - "version": "v4.4.44", + "version": "v6.3.12", "source": { "type": "git", "url": "https://github.com/symfony/property-access.git", - "reference": "d49682f6f0764df725c95128213a38f7e0a9f358" + "reference": "bbf7228ce2673538e1502cf1613d84ecfe8548d0" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/property-access/zipball/d49682f6f0764df725c95128213a38f7e0a9f358", - "reference": "d49682f6f0764df725c95128213a38f7e0a9f358", + "url": "https://api.github.com/repos/symfony/property-access/zipball/bbf7228ce2673538e1502cf1613d84ecfe8548d0", + "reference": "bbf7228ce2673538e1502cf1613d84ecfe8548d0", "shasum": "" }, "require": { - "php": ">=7.1.3", - "symfony/inflector": "^3.4|^4.0|^5.0", - "symfony/polyfill-php80": "^1.16" + "php": ">=8.1", + "symfony/deprecation-contracts": "^2.5|^3", + "symfony/property-info": "^5.4|^6.0" }, "require-dev": { - "symfony/cache": "^3.4|^4.0|^5.0" - }, - "suggest": { - "psr/cache-implementation": "To cache access methods." + "symfony/cache": "^5.4|^6.0" }, "type": "library", "autoload": { @@ -6720,11 +7087,11 @@ "injection", "object", "property", - "property path", + "property-path", "reflection" ], "support": { - "source": "https://github.com/symfony/property-access/tree/v4.4.44" + "source": "https://github.com/symfony/property-access/tree/v6.3.12" }, "funding": [ { @@ -6740,44 +7107,38 @@ "type": "tidelift" } ], - "time": "2022-06-27T13:16:42+00:00" + "time": "2024-01-23T14:35:58+00:00" }, { "name": "symfony/property-info", - "version": "v4.4.44", + "version": "v6.3.12", "source": { "type": "git", "url": "https://github.com/symfony/property-info.git", - "reference": "442d69db54b0549ef7478a85275bea603230070f" + "reference": "ad9640f115b090503d52e8c8d5029e6041a40ccb" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/property-info/zipball/442d69db54b0549ef7478a85275bea603230070f", - "reference": "442d69db54b0549ef7478a85275bea603230070f", + "url": "https://api.github.com/repos/symfony/property-info/zipball/ad9640f115b090503d52e8c8d5029e6041a40ccb", + "reference": "ad9640f115b090503d52e8c8d5029e6041a40ccb", "shasum": "" }, "require": { - "php": ">=7.1.3", - "symfony/inflector": "^3.4|^4.0|^5.0", - "symfony/polyfill-php80": "^1.16" + "php": ">=8.1", + "symfony/string": "^5.4|^6.0" }, "conflict": { - "phpdocumentor/reflection-docblock": "<3.0|>=3.2.0,<3.2.2", - "phpdocumentor/type-resolver": "<0.3.0|1.3.*", - "symfony/dependency-injection": "<3.4" + "phpdocumentor/reflection-docblock": "<5.2", + "phpdocumentor/type-resolver": "<1.5.1", + "symfony/dependency-injection": "<5.4" }, "require-dev": { - "doctrine/annotations": "^1.10.4", - "phpdocumentor/reflection-docblock": "^3.0|^4.0|^5.0", - "symfony/cache": "^3.4|^4.0|^5.0", - "symfony/dependency-injection": "^3.4|^4.0|^5.0", - "symfony/serializer": "^3.4|^4.0|^5.0" - }, - "suggest": { - "phpdocumentor/reflection-docblock": "To use the PHPDoc", - "psr/cache-implementation": "To cache results", - "symfony/doctrine-bridge": "To use Doctrine metadata", - "symfony/serializer": "To use Serializer metadata" + "doctrine/annotations": "^1.10.4|^2", + "phpdocumentor/reflection-docblock": "^5.2", + "phpstan/phpdoc-parser": "^1.0", + "symfony/cache": "^5.4|^6.0", + "symfony/dependency-injection": "^5.4|^6.0", + "symfony/serializer": "^5.4|^6.0" }, "type": "library", "autoload": { @@ -6813,7 +7174,7 @@ "validator" ], "support": { - "source": "https://github.com/symfony/property-info/tree/v4.4.44" + "source": "https://github.com/symfony/property-info/tree/v6.3.12" }, "funding": [ { @@ -6829,30 +7190,30 @@ "type": "tidelift" } ], - "time": "2022-07-18T08:30:40+00:00" + "time": "2024-01-23T16:21:43+00:00" }, { "name": "symfony/proxy-manager-bridge", - "version": "v4.4.39", + "version": "v6.3.12", "source": { "type": "git", "url": "https://github.com/symfony/proxy-manager-bridge.git", - "reference": "66c4de1f6fc16371c06762d6b7fafab2308a15a1" + "reference": "96a0f63d2934991f231bf3d389d5922786dc79ca" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/proxy-manager-bridge/zipball/66c4de1f6fc16371c06762d6b7fafab2308a15a1", - "reference": "66c4de1f6fc16371c06762d6b7fafab2308a15a1", + "url": "https://api.github.com/repos/symfony/proxy-manager-bridge/zipball/96a0f63d2934991f231bf3d389d5922786dc79ca", + "reference": "96a0f63d2934991f231bf3d389d5922786dc79ca", "shasum": "" }, "require": { "friendsofphp/proxy-manager-lts": "^1.0.2", - "php": ">=7.1.3", - "symfony/dependency-injection": "^4.0|^5.0", - "symfony/polyfill-php80": "^1.16" + "php": ">=8.1", + "symfony/dependency-injection": "^6.3", + "symfony/deprecation-contracts": "^2.5|^3" }, "require-dev": { - "symfony/config": "^3.4|^4.0|^5.0" + "symfony/config": "^6.1" }, "type": "symfony-bridge", "autoload": { @@ -6880,7 +7241,7 @@ "description": "Provides integration for ProxyManager with various Symfony components", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/proxy-manager-bridge/tree/v4.4.39" + "source": "https://github.com/symfony/proxy-manager-bridge/tree/v6.3.12" }, "funding": [ { @@ -6896,46 +7257,40 @@ "type": "tidelift" } ], - "time": "2022-02-25T10:38:15+00:00" + "time": "2024-01-23T14:35:58+00:00" }, { "name": "symfony/routing", - "version": "v4.4.44", + "version": "v6.3.12", "source": { "type": "git", "url": "https://github.com/symfony/routing.git", - "reference": "f7751fd8b60a07f3f349947a309b5bdfce22d6ae" + "reference": "c7a3dcdd44d14022bf0d9d27f14a7b238f7e3e85" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/routing/zipball/f7751fd8b60a07f3f349947a309b5bdfce22d6ae", - "reference": "f7751fd8b60a07f3f349947a309b5bdfce22d6ae", + "url": "https://api.github.com/repos/symfony/routing/zipball/c7a3dcdd44d14022bf0d9d27f14a7b238f7e3e85", + "reference": "c7a3dcdd44d14022bf0d9d27f14a7b238f7e3e85", "shasum": "" }, "require": { - "php": ">=7.1.3", - "symfony/polyfill-php80": "^1.16" + "php": ">=8.1", + "symfony/deprecation-contracts": "^2.5|^3" }, "conflict": { - "symfony/config": "<4.2", - "symfony/dependency-injection": "<3.4", - "symfony/yaml": "<3.4" + "doctrine/annotations": "<1.12", + "symfony/config": "<6.2", + "symfony/dependency-injection": "<5.4", + "symfony/yaml": "<5.4" }, "require-dev": { - "doctrine/annotations": "^1.10.4", + "doctrine/annotations": "^1.12|^2", "psr/log": "^1|^2|^3", - "symfony/config": "^4.2|^5.0", - "symfony/dependency-injection": "^3.4|^4.0|^5.0", - "symfony/expression-language": "^3.4|^4.0|^5.0", - "symfony/http-foundation": "^3.4|^4.0|^5.0", - "symfony/yaml": "^3.4|^4.0|^5.0" - }, - "suggest": { - "doctrine/annotations": "For using the annotation loader", - "symfony/config": "For using the all-in-one router or any loader", - "symfony/expression-language": "For using expression matching", - "symfony/http-foundation": "For using a Symfony Request object", - "symfony/yaml": "For using the YAML loader" + "symfony/config": "^6.2", + "symfony/dependency-injection": "^5.4|^6.0", + "symfony/expression-language": "^5.4|^6.0", + "symfony/http-foundation": "^5.4|^6.0", + "symfony/yaml": "^5.4|^6.0" }, "type": "library", "autoload": { @@ -6969,7 +7324,7 @@ "url" ], "support": { - "source": "https://github.com/symfony/routing/tree/v4.4.44" + "source": "https://github.com/symfony/routing/tree/v6.3.12" }, "funding": [ { @@ -6985,64 +7340,44 @@ "type": "tidelift" } ], - "time": "2022-07-20T09:59:04+00:00" + "time": "2024-01-30T13:17:59+00:00" }, { - "name": "symfony/security-bundle", - "version": "v4.4.44", + "name": "symfony/runtime", + "version": "v6.3.12", "source": { "type": "git", - "url": "https://github.com/symfony/security-bundle.git", - "reference": "d2a6bf4aeb75e75d3faacf9bec286e0de58394b6" + "url": "https://github.com/symfony/runtime.git", + "reference": "a8d2b8f6033a33c224b43065a10bab5e4f0be486" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/security-bundle/zipball/d2a6bf4aeb75e75d3faacf9bec286e0de58394b6", - "reference": "d2a6bf4aeb75e75d3faacf9bec286e0de58394b6", + "url": "https://api.github.com/repos/symfony/runtime/zipball/a8d2b8f6033a33c224b43065a10bab5e4f0be486", + "reference": "a8d2b8f6033a33c224b43065a10bab5e4f0be486", "shasum": "" }, "require": { - "ext-xml": "*", - "php": ">=7.1.3", - "symfony/config": "^4.2|^5.0", - "symfony/dependency-injection": "^4.4|^5.0", - "symfony/http-kernel": "^4.4", - "symfony/polyfill-php80": "^1.16", - "symfony/security-core": "^4.4", - "symfony/security-csrf": "^4.2|^5.0", - "symfony/security-guard": "^4.2|^5.0", - "symfony/security-http": "^4.4.5" + "composer-plugin-api": "^1.0|^2.0", + "php": ">=8.1" }, "conflict": { - "symfony/browser-kit": "<4.2", - "symfony/console": "<3.4", - "symfony/framework-bundle": "<4.4", - "symfony/ldap": "<4.4", - "symfony/twig-bundle": "<4.4" + "symfony/dotenv": "<5.4" }, "require-dev": { - "doctrine/annotations": "^1.10.4", - "symfony/asset": "^3.4|^4.0|^5.0", - "symfony/browser-kit": "^4.2|^5.0", - "symfony/console": "^3.4|^4.0|^5.0", - "symfony/css-selector": "^3.4|^4.0|^5.0", - "symfony/dom-crawler": "^3.4|^4.0|^5.0", - "symfony/expression-language": "^3.4|^4.0|^5.0", - "symfony/form": "^3.4|^4.0|^5.0", - "symfony/framework-bundle": "^4.4|^5.0", - "symfony/process": "^3.4|^4.0|^5.0", - "symfony/serializer": "^4.4|^5.0", - "symfony/translation": "^3.4|^4.0|^5.0", - "symfony/twig-bridge": "^3.4|^4.0|^5.0", - "symfony/twig-bundle": "^4.4|^5.0", - "symfony/validator": "^3.4|^4.0|^5.0", - "symfony/yaml": "^3.4|^4.0|^5.0", - "twig/twig": "^1.43|^2.13|^3.0.4" + "composer/composer": "^1.0.2|^2.0", + "symfony/console": "^5.4.9|^6.0.9", + "symfony/dotenv": "^5.4|^6.0", + "symfony/http-foundation": "^5.4|^6.0", + "symfony/http-kernel": "^5.4|^6.0" + }, + "type": "composer-plugin", + "extra": { + "class": "Symfony\\Component\\Runtime\\Internal\\ComposerPlugin" }, - "type": "symfony-bundle", "autoload": { "psr-4": { - "Symfony\\Bundle\\SecurityBundle\\": "" + "Symfony\\Component\\Runtime\\": "", + "Symfony\\Runtime\\Symfony\\Component\\": "Internal/" }, "exclude-from-classmap": [ "/Tests/" @@ -7054,18 +7389,21 @@ ], "authors": [ { - "name": "Fabien Potencier", - "email": "fabien@symfony.com" + "name": "Nicolas Grekas", + "email": "p@tchwork.com" }, { "name": "Symfony Community", "homepage": "https://symfony.com/contributors" } ], - "description": "Provides a tight integration of the Security component into the Symfony full-stack framework", + "description": "Enables decoupling PHP applications from global state", "homepage": "https://symfony.com", + "keywords": [ + "runtime" + ], "support": { - "source": "https://github.com/symfony/security-bundle/tree/v4.4.44" + "source": "https://github.com/symfony/runtime/tree/v6.3.12" }, "funding": [ { @@ -7081,55 +7419,79 @@ "type": "tidelift" } ], - "time": "2022-07-20T09:59:04+00:00" + "time": "2024-01-23T14:35:58+00:00" }, { - "name": "symfony/security-core", - "version": "v4.4.44", + "name": "symfony/security-bundle", + "version": "v6.3.12", "source": { "type": "git", - "url": "https://github.com/symfony/security-core.git", - "reference": "e9a969b5e391d0983d7766503e22b481cb4c7338" + "url": "https://github.com/symfony/security-bundle.git", + "reference": "60eeacf3bbcbc830919824fbacaf6a9c0ecd0244" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/security-core/zipball/e9a969b5e391d0983d7766503e22b481cb4c7338", - "reference": "e9a969b5e391d0983d7766503e22b481cb4c7338", + "url": "https://api.github.com/repos/symfony/security-bundle/zipball/60eeacf3bbcbc830919824fbacaf6a9c0ecd0244", + "reference": "60eeacf3bbcbc830919824fbacaf6a9c0ecd0244", "shasum": "" }, "require": { - "php": ">=7.1.3", - "symfony/event-dispatcher-contracts": "^1.1|^2", - "symfony/polyfill-php80": "^1.16", - "symfony/service-contracts": "^1.1.6|^2" + "composer-runtime-api": ">=2.1", + "ext-xml": "*", + "php": ">=8.1", + "symfony/clock": "^6.3", + "symfony/config": "^6.1", + "symfony/dependency-injection": "^6.2", + "symfony/deprecation-contracts": "^2.5|^3", + "symfony/event-dispatcher": "^5.4|^6.0", + "symfony/http-foundation": "^6.2", + "symfony/http-kernel": "^6.2", + "symfony/password-hasher": "^5.4|^6.0", + "symfony/security-core": "^6.2", + "symfony/security-csrf": "^5.4|^6.0", + "symfony/security-http": "^6.3.6", + "symfony/service-contracts": "^2.5|^3" }, "conflict": { - "symfony/event-dispatcher": "<4.3|>=5", - "symfony/ldap": "<4.4", - "symfony/security-guard": "<4.3" + "symfony/browser-kit": "<5.4", + "symfony/console": "<5.4", + "symfony/framework-bundle": "<6.3", + "symfony/http-client": "<5.4", + "symfony/ldap": "<5.4", + "symfony/twig-bundle": "<5.4" }, "require-dev": { - "psr/container": "^1.0|^2.0", - "psr/log": "^1|^2|^3", - "symfony/event-dispatcher": "^4.3", - "symfony/expression-language": "^3.4|^4.0|^5.0", - "symfony/http-foundation": "^3.4|^4.0|^5.0", - "symfony/ldap": "^4.4|^5.0", - "symfony/translation": "^4.4|^5.0", - "symfony/validator": "^3.4.31|^4.3.4|^5.0" - }, - "suggest": { - "psr/container-implementation": "To instantiate the Security class", - "symfony/event-dispatcher": "", - "symfony/expression-language": "For using the expression voter", - "symfony/http-foundation": "", - "symfony/ldap": "For using LDAP integration", - "symfony/validator": "For using the user password constraint" + "doctrine/annotations": "^1.10.4|^2", + "symfony/asset": "^5.4|^6.0", + "symfony/browser-kit": "^5.4|^6.0", + "symfony/console": "^5.4|^6.0", + "symfony/css-selector": "^5.4|^6.0", + "symfony/dom-crawler": "^5.4|^6.0", + "symfony/expression-language": "^5.4|^6.0", + "symfony/form": "^5.4|^6.0", + "symfony/framework-bundle": "^6.3", + "symfony/http-client": "^5.4|^6.0", + "symfony/ldap": "^5.4|^6.0", + "symfony/process": "^5.4|^6.0", + "symfony/rate-limiter": "^5.4|^6.0", + "symfony/serializer": "^5.4|^6.0", + "symfony/translation": "^5.4|^6.0", + "symfony/twig-bridge": "^5.4|^6.0", + "symfony/twig-bundle": "^5.4|^6.0", + "symfony/validator": "^5.4|^6.0", + "symfony/yaml": "^5.4|^6.0", + "twig/twig": "^2.13|^3.0.4", + "web-token/jwt-checker": "^3.1", + "web-token/jwt-signature-algorithm-ecdsa": "^3.1", + "web-token/jwt-signature-algorithm-eddsa": "^3.1", + "web-token/jwt-signature-algorithm-hmac": "^3.1", + "web-token/jwt-signature-algorithm-none": "^3.1", + "web-token/jwt-signature-algorithm-rsa": "^3.1" }, - "type": "library", + "type": "symfony-bundle", "autoload": { "psr-4": { - "Symfony\\Component\\Security\\Core\\": "" + "Symfony\\Bundle\\SecurityBundle\\": "" }, "exclude-from-classmap": [ "/Tests/" @@ -7149,10 +7511,10 @@ "homepage": "https://symfony.com/contributors" } ], - "description": "Symfony Security Component - Core Library", + "description": "Provides a tight integration of the Security component into the Symfony full-stack framework", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/security-core/tree/v4.4.44" + "source": "https://github.com/symfony/security-bundle/tree/v6.3.12" }, "funding": [ { @@ -7168,40 +7530,54 @@ "type": "tidelift" } ], - "time": "2022-07-20T09:59:04+00:00" + "time": "2024-01-23T14:42:18+00:00" }, { - "name": "symfony/security-csrf", - "version": "v4.4.37", + "name": "symfony/security-core", + "version": "v6.3.12", "source": { "type": "git", - "url": "https://github.com/symfony/security-csrf.git", - "reference": "45c956ef58135091f53732646a0acd28034f02c0" + "url": "https://github.com/symfony/security-core.git", + "reference": "a2e6a338aaf4efec722839ec49f88eed2d752f92" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/security-csrf/zipball/45c956ef58135091f53732646a0acd28034f02c0", - "reference": "45c956ef58135091f53732646a0acd28034f02c0", + "url": "https://api.github.com/repos/symfony/security-core/zipball/a2e6a338aaf4efec722839ec49f88eed2d752f92", + "reference": "a2e6a338aaf4efec722839ec49f88eed2d752f92", "shasum": "" }, "require": { - "php": ">=7.1.3", - "symfony/polyfill-php80": "^1.16", - "symfony/security-core": "^3.4|^4.0|^5.0" + "php": ">=8.1", + "symfony/deprecation-contracts": "^2.5|^3", + "symfony/event-dispatcher-contracts": "^2.5|^3", + "symfony/password-hasher": "^5.4|^6.0", + "symfony/service-contracts": "^2.5|^3" }, "conflict": { - "symfony/http-foundation": "<3.4" + "symfony/event-dispatcher": "<5.4", + "symfony/http-foundation": "<5.4", + "symfony/ldap": "<5.4", + "symfony/security-guard": "<5.4", + "symfony/translation": "<5.4.35|>=6.0,<6.3.12|>=6.4,<6.4.3", + "symfony/validator": "<5.4" }, "require-dev": { - "symfony/http-foundation": "^3.4|^4.0|^5.0" - }, - "suggest": { - "symfony/http-foundation": "For using the class SessionTokenStorage." + "psr/cache": "^1.0|^2.0|^3.0", + "psr/container": "^1.1|^2.0", + "psr/log": "^1|^2|^3", + "symfony/cache": "^5.4|^6.0", + "symfony/event-dispatcher": "^5.4|^6.0", + "symfony/expression-language": "^5.4|^6.0", + "symfony/http-foundation": "^5.4|^6.0", + "symfony/ldap": "^5.4|^6.0", + "symfony/string": "^5.4|^6.0", + "symfony/translation": "^5.4.35|~6.3.12|^6.4.3", + "symfony/validator": "^5.4|^6.0" }, "type": "library", "autoload": { "psr-4": { - "Symfony\\Component\\Security\\Csrf\\": "" + "Symfony\\Component\\Security\\Core\\": "" }, "exclude-from-classmap": [ "/Tests/" @@ -7221,10 +7597,10 @@ "homepage": "https://symfony.com/contributors" } ], - "description": "Symfony Security Component - CSRF Library", + "description": "Symfony Security Component - Core Library", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/security-csrf/tree/v4.4.37" + "source": "https://github.com/symfony/security-core/tree/v6.3.12" }, "funding": [ { @@ -7240,34 +7616,36 @@ "type": "tidelift" } ], - "time": "2022-01-02T09:41:36+00:00" + "time": "2024-01-23T14:42:18+00:00" }, { - "name": "symfony/security-guard", - "version": "v4.4.37", + "name": "symfony/security-csrf", + "version": "v6.3.12", "source": { "type": "git", - "url": "https://github.com/symfony/security-guard.git", - "reference": "cf8922b164e1659726c8852663eaaa593eef668c" + "url": "https://github.com/symfony/security-csrf.git", + "reference": "7d6ba797b8523da6d2e5b59994e7a73d305ce4b5" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/security-guard/zipball/cf8922b164e1659726c8852663eaaa593eef668c", - "reference": "cf8922b164e1659726c8852663eaaa593eef668c", + "url": "https://api.github.com/repos/symfony/security-csrf/zipball/7d6ba797b8523da6d2e5b59994e7a73d305ce4b5", + "reference": "7d6ba797b8523da6d2e5b59994e7a73d305ce4b5", "shasum": "" }, "require": { - "php": ">=7.1.3", - "symfony/security-core": "^3.4.22|^4.2.3|^5.0", - "symfony/security-http": "^4.4.1" + "php": ">=8.1", + "symfony/security-core": "^5.4|^6.0" + }, + "conflict": { + "symfony/http-foundation": "<5.4" }, "require-dev": { - "psr/log": "^1|^2|^3" + "symfony/http-foundation": "^5.4|^6.0" }, "type": "library", "autoload": { "psr-4": { - "Symfony\\Component\\Security\\Guard\\": "" + "Symfony\\Component\\Security\\Csrf\\": "" }, "exclude-from-classmap": [ "/Tests/" @@ -7287,10 +7665,10 @@ "homepage": "https://symfony.com/contributors" } ], - "description": "Symfony Security Component - Guard", + "description": "Symfony Security Component - CSRF Library", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/security-guard/tree/v4.4.37" + "source": "https://github.com/symfony/security-csrf/tree/v6.3.12" }, "funding": [ { @@ -7306,42 +7684,51 @@ "type": "tidelift" } ], - "time": "2022-01-02T09:41:36+00:00" + "time": "2024-01-23T14:35:58+00:00" }, { "name": "symfony/security-http", - "version": "v4.4.44", + "version": "v6.3.12", "source": { "type": "git", "url": "https://github.com/symfony/security-http.git", - "reference": "edb73e18f50f91bfe325e0524b68d9cf99a58f22" + "reference": "09eb813655cd9b1f679f4d984721633e9a0bab60" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/security-http/zipball/edb73e18f50f91bfe325e0524b68d9cf99a58f22", - "reference": "edb73e18f50f91bfe325e0524b68d9cf99a58f22", + "url": "https://api.github.com/repos/symfony/security-http/zipball/09eb813655cd9b1f679f4d984721633e9a0bab60", + "reference": "09eb813655cd9b1f679f4d984721633e9a0bab60", "shasum": "" }, "require": { - "php": ">=7.1.3", - "symfony/http-foundation": "^3.4.40|^4.4.7|^5.0.7", - "symfony/http-kernel": "^4.4", - "symfony/polyfill-php80": "^1.16", - "symfony/property-access": "^3.4|^4.0|^5.0", - "symfony/security-core": "^4.4.8" + "php": ">=8.1", + "symfony/deprecation-contracts": "^2.5|^3", + "symfony/http-foundation": "^5.4|^6.0", + "symfony/http-kernel": "^6.3", + "symfony/polyfill-mbstring": "~1.0", + "symfony/property-access": "^5.4|^6.0", + "symfony/security-core": "^6.3", + "symfony/service-contracts": "^2.5|^3" }, "conflict": { - "symfony/event-dispatcher": ">=5", - "symfony/security-csrf": "<3.4.11|~4.0,<4.0.11" + "symfony/clock": "<6.3", + "symfony/event-dispatcher": "<5.4.9|>=6,<6.0.9", + "symfony/http-client-contracts": "<3.0", + "symfony/security-bundle": "<5.4", + "symfony/security-csrf": "<5.4" }, "require-dev": { "psr/log": "^1|^2|^3", - "symfony/routing": "^3.4|^4.0|^5.0", - "symfony/security-csrf": "^3.4.11|^4.0.11|^5.0" - }, - "suggest": { - "symfony/routing": "For using the HttpUtils class to create sub-requests, redirect the user, and match URLs", - "symfony/security-csrf": "For using tokens to protect authentication/logout attempts" + "symfony/cache": "^5.4|^6.0", + "symfony/clock": "^6.3", + "symfony/expression-language": "^5.4|^6.0", + "symfony/http-client-contracts": "^3.0", + "symfony/rate-limiter": "^5.4|^6.0", + "symfony/routing": "^5.4|^6.0", + "symfony/security-csrf": "^5.4|^6.0", + "symfony/translation": "^5.4|^6.0", + "web-token/jwt-checker": "^3.1", + "web-token/jwt-signature-algorithm-ecdsa": "^3.1" }, "type": "library", "autoload": { @@ -7369,7 +7756,7 @@ "description": "Symfony Security Component - HTTP Integration", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/security-http/tree/v4.4.44" + "source": "https://github.com/symfony/security-http/tree/v6.3.12" }, "funding": [ { @@ -7385,57 +7772,57 @@ "type": "tidelift" } ], - "time": "2022-07-26T16:38:53+00:00" + "time": "2024-01-23T14:42:18+00:00" }, { "name": "symfony/serializer", - "version": "v4.4.44", + "version": "v6.3.12", "source": { "type": "git", "url": "https://github.com/symfony/serializer.git", - "reference": "375509ca128d3e8b38df92af74814c765571911e" + "reference": "917d5ecbd6a7aece5b6a33c7aab82ee087d69803" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/serializer/zipball/375509ca128d3e8b38df92af74814c765571911e", - "reference": "375509ca128d3e8b38df92af74814c765571911e", + "url": "https://api.github.com/repos/symfony/serializer/zipball/917d5ecbd6a7aece5b6a33c7aab82ee087d69803", + "reference": "917d5ecbd6a7aece5b6a33c7aab82ee087d69803", "shasum": "" }, "require": { - "php": ">=7.1.3", - "symfony/polyfill-ctype": "~1.8", - "symfony/polyfill-php80": "^1.16" + "php": ">=8.1", + "symfony/deprecation-contracts": "^2.5|^3", + "symfony/polyfill-ctype": "~1.8" }, "conflict": { - "phpdocumentor/reflection-docblock": "<3.0|>=3.2.0,<3.2.2", - "phpdocumentor/type-resolver": "<0.3.0|1.3.*", - "symfony/dependency-injection": "<3.4", - "symfony/property-access": "<3.4", - "symfony/property-info": "<3.4", - "symfony/yaml": "<3.4" + "doctrine/annotations": "<1.12", + "phpdocumentor/reflection-docblock": "<3.2.2", + "phpdocumentor/type-resolver": "<1.4.0", + "symfony/dependency-injection": "<5.4", + "symfony/property-access": "<5.4", + "symfony/property-info": "<5.4.24|>=6,<6.2.11", + "symfony/uid": "<5.4", + "symfony/yaml": "<5.4" }, "require-dev": { - "doctrine/annotations": "^1.10.4", + "doctrine/annotations": "^1.12|^2", "phpdocumentor/reflection-docblock": "^3.2|^4.0|^5.0", - "symfony/cache": "^3.4|^4.0|^5.0", - "symfony/config": "^3.4|^4.0|^5.0", - "symfony/dependency-injection": "^3.4|^4.0|^5.0", - "symfony/error-handler": "^4.4|^5.0", - "symfony/http-foundation": "^3.4|^4.0|^5.0", - "symfony/mime": "^4.4|^5.0", - "symfony/property-access": "^4.4.36|^5.3.13", - "symfony/property-info": "^3.4.13|~4.0|^5.0", - "symfony/validator": "^3.4|^4.0|^5.0", - "symfony/yaml": "^3.4|^4.0|^5.0" - }, - "suggest": { - "doctrine/annotations": "For using the annotation mapping.", - "psr/cache-implementation": "For using the metadata cache.", - "symfony/config": "For using the XML mapping loader.", - "symfony/http-foundation": "For using a MIME type guesser within the DataUriNormalizer.", - "symfony/property-access": "For using the ObjectNormalizer.", - "symfony/property-info": "To deserialize relations.", - "symfony/yaml": "For using the default YAML mapping loader." + "symfony/cache": "^5.4|^6.0", + "symfony/config": "^5.4|^6.0", + "symfony/console": "^5.4|^6.0", + "symfony/dependency-injection": "^5.4|^6.0", + "symfony/error-handler": "^5.4|^6.0", + "symfony/filesystem": "^5.4|^6.0", + "symfony/form": "^5.4|^6.0", + "symfony/http-foundation": "^5.4|^6.0", + "symfony/http-kernel": "^5.4|^6.0", + "symfony/mime": "^5.4|^6.0", + "symfony/property-access": "^5.4.26|^6.3", + "symfony/property-info": "^5.4.24|^6.2.11", + "symfony/uid": "^5.4|^6.0", + "symfony/validator": "^5.4|^6.0", + "symfony/var-dumper": "^5.4|^6.0", + "symfony/var-exporter": "^5.4|^6.0", + "symfony/yaml": "^5.4|^6.0" }, "type": "library", "autoload": { @@ -7463,7 +7850,58 @@ "description": "Handles serializing and deserializing data structures, including object graphs, into array structures or other formats like XML and JSON.", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/serializer/tree/v4.4.44" + "source": "https://github.com/symfony/serializer/tree/v6.3.12" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2024-01-30T08:17:33+00:00" + }, + { + "name": "symfony/serializer-pack", + "version": "v1.3.0", + "source": { + "type": "git", + "url": "https://github.com/symfony/serializer-pack.git", + "reference": "2844d81a5fc86b617b82f44a8bfcaaba1d583eee" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/serializer-pack/zipball/2844d81a5fc86b617b82f44a8bfcaaba1d583eee", + "reference": "2844d81a5fc86b617b82f44a8bfcaaba1d583eee", + "shasum": "" + }, + "require": { + "phpdocumentor/reflection-docblock": "*", + "phpstan/phpdoc-parser": "*", + "symfony/property-access": "*", + "symfony/property-info": "*", + "symfony/serializer": "*" + }, + "conflict": { + "symfony/property-info": "<5.4", + "symfony/serializer": "<5.4" + }, + "type": "symfony-pack", + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "description": "A pack for the Symfony serializer", + "support": { + "issues": "https://github.com/symfony/serializer-pack/issues", + "source": "https://github.com/symfony/serializer-pack/tree/v1.3.0" }, "funding": [ { @@ -7479,37 +7917,34 @@ "type": "tidelift" } ], - "time": "2022-07-28T12:55:20+00:00" + "time": "2023-06-03T13:55:25+00:00" }, { "name": "symfony/service-contracts", - "version": "v2.5.2", + "version": "v3.5.0", "source": { "type": "git", "url": "https://github.com/symfony/service-contracts.git", - "reference": "4b426aac47d6427cc1a1d0f7e2ac724627f5966c" + "reference": "bd1d9e59a81d8fa4acdcea3f617c581f7475a80f" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/service-contracts/zipball/4b426aac47d6427cc1a1d0f7e2ac724627f5966c", - "reference": "4b426aac47d6427cc1a1d0f7e2ac724627f5966c", + "url": "https://api.github.com/repos/symfony/service-contracts/zipball/bd1d9e59a81d8fa4acdcea3f617c581f7475a80f", + "reference": "bd1d9e59a81d8fa4acdcea3f617c581f7475a80f", "shasum": "" }, "require": { - "php": ">=7.2.5", - "psr/container": "^1.1", - "symfony/deprecation-contracts": "^2.1|^3" + "php": ">=8.1", + "psr/container": "^1.1|^2.0", + "symfony/deprecation-contracts": "^2.5|^3" }, "conflict": { "ext-psr": "<1.1|>=2" }, - "suggest": { - "symfony/service-implementation": "" - }, "type": "library", "extra": { "branch-alias": { - "dev-main": "2.5-dev" + "dev-main": "3.5-dev" }, "thanks": { "name": "symfony/contracts", @@ -7519,7 +7954,10 @@ "autoload": { "psr-4": { "Symfony\\Contracts\\Service\\": "" - } + }, + "exclude-from-classmap": [ + "/Test/" + ] }, "notification-url": "https://packagist.org/downloads/", "license": [ @@ -7546,7 +7984,7 @@ "standards" ], "support": { - "source": "https://github.com/symfony/service-contracts/tree/v2.5.2" + "source": "https://github.com/symfony/service-contracts/tree/v3.5.0" }, "funding": [ { @@ -7562,25 +8000,25 @@ "type": "tidelift" } ], - "time": "2022-05-30T19:17:29+00:00" + "time": "2024-04-18T09:32:20+00:00" }, { "name": "symfony/stopwatch", - "version": "v4.4.38", + "version": "v6.3.12", "source": { "type": "git", "url": "https://github.com/symfony/stopwatch.git", - "reference": "7f4f5a8122f7530d688cc9edf2f8c9261552fa2d" + "reference": "416596166641f1f728b0a64f5b9dd07cceb410c1" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/stopwatch/zipball/7f4f5a8122f7530d688cc9edf2f8c9261552fa2d", - "reference": "7f4f5a8122f7530d688cc9edf2f8c9261552fa2d", + "url": "https://api.github.com/repos/symfony/stopwatch/zipball/416596166641f1f728b0a64f5b9dd07cceb410c1", + "reference": "416596166641f1f728b0a64f5b9dd07cceb410c1", "shasum": "" }, "require": { - "php": ">=7.1.3", - "symfony/service-contracts": "^1.0|^2" + "php": ">=8.1", + "symfony/service-contracts": "^2.5|^3" }, "type": "library", "autoload": { @@ -7608,7 +8046,7 @@ "description": "Provides a way to profile code", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/stopwatch/tree/v4.4.38" + "source": "https://github.com/symfony/stopwatch/tree/v6.3.12" }, "funding": [ { @@ -7624,38 +8062,38 @@ "type": "tidelift" } ], - "time": "2022-02-18T15:34:20+00:00" + "time": "2024-01-23T14:35:58+00:00" }, { "name": "symfony/string", - "version": "v5.4.11", + "version": "v6.3.12", "source": { "type": "git", "url": "https://github.com/symfony/string.git", - "reference": "5eb661e49ad389e4ae2b6e4df8d783a8a6548322" + "reference": "bce75043af265dc8aca536a6ab1d6b3181763529" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/string/zipball/5eb661e49ad389e4ae2b6e4df8d783a8a6548322", - "reference": "5eb661e49ad389e4ae2b6e4df8d783a8a6548322", + "url": "https://api.github.com/repos/symfony/string/zipball/bce75043af265dc8aca536a6ab1d6b3181763529", + "reference": "bce75043af265dc8aca536a6ab1d6b3181763529", "shasum": "" }, "require": { - "php": ">=7.2.5", + "php": ">=8.1", "symfony/polyfill-ctype": "~1.8", "symfony/polyfill-intl-grapheme": "~1.0", "symfony/polyfill-intl-normalizer": "~1.0", - "symfony/polyfill-mbstring": "~1.0", - "symfony/polyfill-php80": "~1.15" + "symfony/polyfill-mbstring": "~1.0" }, "conflict": { - "symfony/translation-contracts": ">=3.0" + "symfony/translation-contracts": "<2.5" }, "require-dev": { - "symfony/error-handler": "^4.4|^5.0|^6.0", - "symfony/http-client": "^4.4|^5.0|^6.0", - "symfony/translation-contracts": "^1.1|^2", - "symfony/var-exporter": "^4.4|^5.0|^6.0" + "symfony/error-handler": "^5.4|^6.0", + "symfony/http-client": "^5.4|^6.0", + "symfony/intl": "^6.2", + "symfony/translation-contracts": "^2.5|^3.0", + "symfony/var-exporter": "^5.4|^6.0" }, "type": "library", "autoload": { @@ -7694,7 +8132,7 @@ "utf8" ], "support": { - "source": "https://github.com/symfony/string/tree/v5.4.11" + "source": "https://github.com/symfony/string/tree/v6.3.12" }, "funding": [ { @@ -7710,55 +8148,61 @@ "type": "tidelift" } ], - "time": "2022-07-24T16:15:25+00:00" + "time": "2024-01-23T14:35:58+00:00" }, { "name": "symfony/translation", - "version": "v4.4.44", + "version": "v6.3.12", "source": { "type": "git", "url": "https://github.com/symfony/translation.git", - "reference": "af947fefc306cec6ea5a1f6160c7e305a71f2493" + "reference": "5c67cd1b1635be525f4dbe89042cdc3749a89ff5" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/translation/zipball/af947fefc306cec6ea5a1f6160c7e305a71f2493", - "reference": "af947fefc306cec6ea5a1f6160c7e305a71f2493", + "url": "https://api.github.com/repos/symfony/translation/zipball/5c67cd1b1635be525f4dbe89042cdc3749a89ff5", + "reference": "5c67cd1b1635be525f4dbe89042cdc3749a89ff5", "shasum": "" }, "require": { - "php": ">=7.1.3", + "php": ">=8.1", + "symfony/deprecation-contracts": "^2.5|^3", "symfony/polyfill-mbstring": "~1.0", - "symfony/polyfill-php80": "^1.16", - "symfony/translation-contracts": "^1.1.6|^2" + "symfony/translation-contracts": "^2.5|^3.0" }, "conflict": { - "symfony/config": "<3.4", - "symfony/dependency-injection": "<3.4", - "symfony/http-kernel": "<4.4", - "symfony/yaml": "<3.4" + "symfony/config": "<5.4", + "symfony/console": "<5.4", + "symfony/dependency-injection": "<5.4", + "symfony/http-client-contracts": "<2.5", + "symfony/http-kernel": "<5.4", + "symfony/service-contracts": "<2.5", + "symfony/twig-bundle": "<5.4", + "symfony/yaml": "<5.4" }, "provide": { - "symfony/translation-implementation": "1.0|2.0" + "symfony/translation-implementation": "2.3|3.0" }, "require-dev": { + "nikic/php-parser": "^4.18|^5.0", "psr/log": "^1|^2|^3", - "symfony/config": "^3.4|^4.0|^5.0", - "symfony/console": "^3.4|^4.0|^5.0", - "symfony/dependency-injection": "^3.4|^4.0|^5.0", - "symfony/finder": "~2.8|~3.0|~4.0|^5.0", - "symfony/http-kernel": "^4.4", - "symfony/intl": "^3.4|^4.0|^5.0", - "symfony/service-contracts": "^1.1.2|^2", - "symfony/yaml": "^3.4|^4.0|^5.0" - }, - "suggest": { - "psr/log-implementation": "To use logging capability in translator", - "symfony/config": "", - "symfony/yaml": "" + "symfony/config": "^5.4|^6.0", + "symfony/console": "^5.4|^6.0", + "symfony/dependency-injection": "^5.4|^6.0", + "symfony/finder": "^5.4|^6.0", + "symfony/http-client-contracts": "^2.5|^3.0", + "symfony/http-kernel": "^5.4|^6.0", + "symfony/intl": "^5.4|^6.0", + "symfony/polyfill-intl-icu": "^1.21", + "symfony/routing": "^5.4|^6.0", + "symfony/service-contracts": "^2.5|^3", + "symfony/yaml": "^5.4|^6.0" }, "type": "library", "autoload": { + "files": [ + "Resources/functions.php" + ], "psr-4": { "Symfony\\Component\\Translation\\": "" }, @@ -7783,7 +8227,7 @@ "description": "Provides tools to internationalize your application", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/translation/tree/v4.4.44" + "source": "https://github.com/symfony/translation/tree/v6.3.12" }, "funding": [ { @@ -7799,32 +8243,29 @@ "type": "tidelift" } ], - "time": "2022-07-20T09:59:04+00:00" + "time": "2024-01-23T14:35:58+00:00" }, { "name": "symfony/translation-contracts", - "version": "v2.5.2", + "version": "v3.5.0", "source": { "type": "git", "url": "https://github.com/symfony/translation-contracts.git", - "reference": "136b19dd05cdf0709db6537d058bcab6dd6e2dbe" + "reference": "b9d2189887bb6b2e0367a9fc7136c5239ab9b05a" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/translation-contracts/zipball/136b19dd05cdf0709db6537d058bcab6dd6e2dbe", - "reference": "136b19dd05cdf0709db6537d058bcab6dd6e2dbe", + "url": "https://api.github.com/repos/symfony/translation-contracts/zipball/b9d2189887bb6b2e0367a9fc7136c5239ab9b05a", + "reference": "b9d2189887bb6b2e0367a9fc7136c5239ab9b05a", "shasum": "" }, "require": { - "php": ">=7.2.5" - }, - "suggest": { - "symfony/translation-implementation": "" + "php": ">=8.1" }, "type": "library", "extra": { "branch-alias": { - "dev-main": "2.5-dev" + "dev-main": "3.5-dev" }, "thanks": { "name": "symfony/contracts", @@ -7834,7 +8275,10 @@ "autoload": { "psr-4": { "Symfony\\Contracts\\Translation\\": "" - } + }, + "exclude-from-classmap": [ + "/Test/" + ] }, "notification-url": "https://packagist.org/downloads/", "license": [ @@ -7861,7 +8305,7 @@ "standards" ], "support": { - "source": "https://github.com/symfony/translation-contracts/tree/v2.5.2" + "source": "https://github.com/symfony/translation-contracts/tree/v3.5.0" }, "funding": [ { @@ -7877,81 +8321,72 @@ "type": "tidelift" } ], - "time": "2022-06-27T16:58:25+00:00" + "time": "2024-04-18T09:32:20+00:00" }, { "name": "symfony/twig-bridge", - "version": "v4.4.44", + "version": "v6.3.12", "source": { "type": "git", "url": "https://github.com/symfony/twig-bridge.git", - "reference": "53e4f5ed93901d857ec07e2440cc113537c1a489" + "reference": "dd34e348a9237d40eb7a791ee14de6efbadd5108" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/twig-bridge/zipball/53e4f5ed93901d857ec07e2440cc113537c1a489", - "reference": "53e4f5ed93901d857ec07e2440cc113537c1a489", + "url": "https://api.github.com/repos/symfony/twig-bridge/zipball/dd34e348a9237d40eb7a791ee14de6efbadd5108", + "reference": "dd34e348a9237d40eb7a791ee14de6efbadd5108", "shasum": "" }, "require": { - "php": ">=7.1.3", - "symfony/polyfill-php80": "^1.16", - "symfony/translation-contracts": "^1.1|^2", - "twig/twig": "^1.43|^2.13|^3.0.4" + "php": ">=8.1", + "symfony/translation-contracts": "^2.5|^3", + "twig/twig": "^2.13|^3.0.4" }, "conflict": { - "symfony/console": "<3.4", - "symfony/form": "<4.4", - "symfony/http-foundation": "<4.3", - "symfony/translation": "<4.2", - "symfony/workflow": "<4.3" + "phpdocumentor/reflection-docblock": "<3.2.2", + "phpdocumentor/type-resolver": "<1.4.0", + "symfony/console": "<5.4", + "symfony/form": "<6.3", + "symfony/http-foundation": "<5.4", + "symfony/http-kernel": "<6.2", + "symfony/mime": "<6.2", + "symfony/translation": "<5.4", + "symfony/workflow": "<5.4" }, "require-dev": { - "egulias/email-validator": "^2.1.10|^3", - "symfony/asset": "^3.4|^4.0|^5.0", - "symfony/console": "^3.4|^4.0|^5.0", - "symfony/dependency-injection": "^3.4|^4.0|^5.0", - "symfony/error-handler": "^4.4|^5.0", - "symfony/expression-language": "^3.4|^4.0|^5.0", - "symfony/finder": "^3.4|^4.0|^5.0", - "symfony/form": "^4.4.17", - "symfony/http-foundation": "^4.3|^5.0", - "symfony/http-kernel": "^4.4", - "symfony/intl": "^4.4|^5.0", - "symfony/mime": "^4.3|^5.0", + "doctrine/annotations": "^1.12|^2", + "egulias/email-validator": "^2.1.10|^3|^4", + "league/html-to-markdown": "^5.0", + "phpdocumentor/reflection-docblock": "^3.0|^4.0|^5.0", + "symfony/asset": "^5.4|^6.0", + "symfony/asset-mapper": "^6.3", + "symfony/console": "^5.4|^6.0", + "symfony/dependency-injection": "^5.4|^6.0", + "symfony/expression-language": "^5.4|^6.0", + "symfony/finder": "^5.4|^6.0", + "symfony/form": "^6.3", + "symfony/html-sanitizer": "^6.1", + "symfony/http-foundation": "^5.4|^6.0", + "symfony/http-kernel": "^6.2", + "symfony/intl": "^5.4|^6.0", + "symfony/mime": "^6.2", "symfony/polyfill-intl-icu": "~1.0", - "symfony/routing": "^3.4|^4.0|^5.0", + "symfony/property-info": "^5.4|^6.0", + "symfony/routing": "^5.4|^6.0", "symfony/security-acl": "^2.8|^3.0", - "symfony/security-core": "^3.0|^4.0|^5.0", - "symfony/security-csrf": "^3.4|^4.0|^5.0", - "symfony/security-http": "^3.4|^4.0|^5.0", - "symfony/stopwatch": "^3.4|^4.0|^5.0", - "symfony/templating": "^3.4|^4.0|^5.0", - "symfony/translation": "^4.2.1|^5.0", - "symfony/web-link": "^4.4|^5.0", - "symfony/workflow": "^4.3|^5.0", - "symfony/yaml": "^3.4|^4.0|^5.0", + "symfony/security-core": "^5.4|^6.0", + "symfony/security-csrf": "^5.4|^6.0", + "symfony/security-http": "^5.4|^6.0", + "symfony/serializer": "~6.3.12|^6.4.3", + "symfony/stopwatch": "^5.4|^6.0", + "symfony/translation": "^6.1", + "symfony/web-link": "^5.4|^6.0", + "symfony/workflow": "^5.4|^6.0", + "symfony/yaml": "^5.4|^6.0", "twig/cssinliner-extra": "^2.12|^3", "twig/inky-extra": "^2.12|^3", "twig/markdown-extra": "^2.12|^3" }, - "suggest": { - "symfony/asset": "For using the AssetExtension", - "symfony/expression-language": "For using the ExpressionExtension", - "symfony/finder": "", - "symfony/form": "For using the FormExtension", - "symfony/http-kernel": "For using the HttpKernelExtension", - "symfony/routing": "For using the RoutingExtension", - "symfony/security-core": "For using the SecurityExtension", - "symfony/security-csrf": "For using the CsrfExtension", - "symfony/security-http": "For using the LogoutUrlExtension", - "symfony/stopwatch": "For using the StopwatchExtension", - "symfony/templating": "For using the TwigEngine", - "symfony/translation": "For using the TranslationExtension", - "symfony/var-dumper": "For using the DumpExtension", - "symfony/web-link": "For using the WebLinkExtension", - "symfony/yaml": "For using the YamlExtension" - }, "type": "symfony-bridge", "autoload": { "psr-4": { @@ -7978,7 +8413,7 @@ "description": "Provides integration for Twig with various Symfony components", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/twig-bridge/tree/v4.4.44" + "source": "https://github.com/symfony/twig-bridge/tree/v6.3.12" }, "funding": [ { @@ -7994,51 +8429,48 @@ "type": "tidelift" } ], - "time": "2022-07-20T09:59:04+00:00" + "time": "2024-01-30T08:17:33+00:00" }, { "name": "symfony/twig-bundle", - "version": "v4.4.41", + "version": "v6.3.12", "source": { "type": "git", "url": "https://github.com/symfony/twig-bundle.git", - "reference": "164c1edc69f2c7ee337323efc78a8a8a263f45ff" + "reference": "820d2a7a2b876b287215a6b93f482dace8057d9b" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/twig-bundle/zipball/164c1edc69f2c7ee337323efc78a8a8a263f45ff", - "reference": "164c1edc69f2c7ee337323efc78a8a8a263f45ff", + "url": "https://api.github.com/repos/symfony/twig-bundle/zipball/820d2a7a2b876b287215a6b93f482dace8057d9b", + "reference": "820d2a7a2b876b287215a6b93f482dace8057d9b", "shasum": "" }, - "require": { - "php": ">=7.1.3", - "symfony/http-foundation": "^4.3|^5.0", - "symfony/http-kernel": "^4.4", - "symfony/polyfill-ctype": "~1.8", - "symfony/polyfill-php80": "^1.16", - "symfony/twig-bridge": "^4.4|^5.0", - "twig/twig": "^1.43|^2.13|^3.0.4" + "require": { + "composer-runtime-api": ">=2.1", + "php": ">=8.1", + "symfony/config": "^6.1", + "symfony/dependency-injection": "^6.1", + "symfony/http-foundation": "^5.4|^6.0", + "symfony/http-kernel": "^6.2", + "symfony/twig-bridge": "^6.3", + "twig/twig": "^2.13|^3.0.4" }, "conflict": { - "symfony/dependency-injection": "<4.1", - "symfony/framework-bundle": "<4.4", - "symfony/translation": "<4.2" + "symfony/framework-bundle": "<5.4", + "symfony/translation": "<5.4" }, "require-dev": { - "doctrine/annotations": "^1.10.4", - "doctrine/cache": "^1.0|^2.0", - "symfony/asset": "^3.4|^4.0|^5.0", - "symfony/dependency-injection": "^4.2.5|^5.0", - "symfony/expression-language": "^3.4|^4.0|^5.0", - "symfony/finder": "^3.4|^4.0|^5.0", - "symfony/form": "^3.4|^4.0|^5.0", - "symfony/framework-bundle": "^4.4|^5.0", - "symfony/routing": "^3.4|^4.0|^5.0", - "symfony/stopwatch": "^3.4|^4.0|^5.0", - "symfony/templating": "^3.4|^4.0|^5.0", - "symfony/translation": "^4.2|^5.0", - "symfony/web-link": "^3.4|^4.0|^5.0", - "symfony/yaml": "^3.4|^4.0|^5.0" + "doctrine/annotations": "^1.10.4|^2", + "symfony/asset": "^5.4|^6.0", + "symfony/expression-language": "^5.4|^6.0", + "symfony/finder": "^5.4|^6.0", + "symfony/form": "^5.4|^6.0", + "symfony/framework-bundle": "^5.4|^6.0", + "symfony/routing": "^5.4|^6.0", + "symfony/stopwatch": "^5.4|^6.0", + "symfony/translation": "^5.4|^6.0", + "symfony/web-link": "^5.4|^6.0", + "symfony/yaml": "^5.4|^6.0" }, "type": "symfony-bundle", "autoload": { @@ -8066,7 +8498,7 @@ "description": "Provides a tight integration of Twig into the Symfony full-stack framework", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/twig-bundle/tree/v4.4.41" + "source": "https://github.com/symfony/twig-bundle/tree/v6.3.12" }, "funding": [ { @@ -8082,69 +8514,59 @@ "type": "tidelift" } ], - "time": "2022-04-12T15:19:55+00:00" + "time": "2024-01-23T14:35:58+00:00" }, { "name": "symfony/validator", - "version": "v4.4.44", + "version": "v6.3.12", "source": { "type": "git", "url": "https://github.com/symfony/validator.git", - "reference": "4b566c8d15f3490b0e72b42dd33ea8d2b4857cb1" + "reference": "5e3ac975cc36d22db979225c587eed3d1f172bb8" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/validator/zipball/4b566c8d15f3490b0e72b42dd33ea8d2b4857cb1", - "reference": "4b566c8d15f3490b0e72b42dd33ea8d2b4857cb1", + "url": "https://api.github.com/repos/symfony/validator/zipball/5e3ac975cc36d22db979225c587eed3d1f172bb8", + "reference": "5e3ac975cc36d22db979225c587eed3d1f172bb8", "shasum": "" }, "require": { - "php": ">=7.1.3", + "php": ">=8.1", + "symfony/deprecation-contracts": "^2.5|^3", "symfony/polyfill-ctype": "~1.8", "symfony/polyfill-mbstring": "~1.0", - "symfony/polyfill-php80": "^1.16", - "symfony/translation-contracts": "^1.1|^2" + "symfony/polyfill-php83": "^1.27", + "symfony/translation-contracts": "^2.5|^3" }, "conflict": { + "doctrine/annotations": "<1.13", "doctrine/lexer": "<1.1", - "phpunit/phpunit": "<4.8.35|<5.4.3,>=5.0", - "symfony/dependency-injection": "<3.4", - "symfony/http-kernel": "<4.4", - "symfony/intl": "<4.3", - "symfony/translation": ">=5.0", - "symfony/yaml": "<3.4" + "symfony/dependency-injection": "<5.4", + "symfony/expression-language": "<5.4", + "symfony/http-kernel": "<5.4", + "symfony/intl": "<5.4", + "symfony/property-info": "<5.4", + "symfony/translation": "<5.4.35|>=6.0,<6.3.12|>=6.4,<6.4.3", + "symfony/yaml": "<5.4" }, "require-dev": { - "doctrine/annotations": "^1.10.4", - "doctrine/cache": "^1.0|^2.0", - "egulias/email-validator": "^2.1.10|^3", - "symfony/cache": "^3.4|^4.0|^5.0", - "symfony/config": "^3.4|^4.0|^5.0", - "symfony/dependency-injection": "^3.4|^4.0|^5.0", - "symfony/expression-language": "^3.4|^4.0|^5.0", - "symfony/http-client": "^4.3|^5.0", - "symfony/http-foundation": "^4.1|^5.0", - "symfony/http-kernel": "^4.4", - "symfony/intl": "^4.3|^5.0", - "symfony/mime": "^4.4|^5.0", - "symfony/property-access": "^3.4|^4.0|^5.0", - "symfony/property-info": "^3.4|^4.0|^5.0", - "symfony/translation": "^4.2", - "symfony/yaml": "^3.4|^4.0|^5.0" - }, - "suggest": { - "doctrine/annotations": "For using the annotation mapping. You will also need doctrine/cache.", - "doctrine/cache": "For using the default cached annotation reader.", - "egulias/email-validator": "Strict (RFC compliant) email validation", - "psr/cache-implementation": "For using the mapping cache.", - "symfony/config": "", - "symfony/expression-language": "For using the Expression validator", - "symfony/http-foundation": "", - "symfony/intl": "", - "symfony/property-access": "For accessing properties within comparison constraints", - "symfony/property-info": "To automatically add NotNull and Type constraints", - "symfony/translation": "For translating validation errors.", - "symfony/yaml": "" + "doctrine/annotations": "^1.13|^2", + "egulias/email-validator": "^2.1.10|^3|^4", + "symfony/cache": "^5.4|^6.0", + "symfony/config": "^5.4|^6.0", + "symfony/console": "^5.4|^6.0", + "symfony/dependency-injection": "^5.4|^6.0", + "symfony/expression-language": "^5.4|^6.0", + "symfony/finder": "^5.4|^6.0", + "symfony/http-client": "^5.4|^6.0", + "symfony/http-foundation": "^5.4|^6.0", + "symfony/http-kernel": "^5.4|^6.0", + "symfony/intl": "^5.4|^6.0", + "symfony/mime": "^5.4|^6.0", + "symfony/property-access": "^5.4|^6.0", + "symfony/property-info": "^5.4|^6.0", + "symfony/translation": "^5.4.35|~6.3.12|^6.4.3", + "symfony/yaml": "^5.4|^6.0" }, "type": "library", "autoload": { @@ -8172,7 +8594,7 @@ "description": "Provides tools to validate values", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/validator/tree/v4.4.44" + "source": "https://github.com/symfony/validator/tree/v6.3.12" }, "funding": [ { @@ -8188,42 +8610,37 @@ "type": "tidelift" } ], - "time": "2022-07-20T09:59:04+00:00" + "time": "2024-01-29T14:46:07+00:00" }, { "name": "symfony/var-dumper", - "version": "v4.4.44", + "version": "v6.3.12", "source": { "type": "git", "url": "https://github.com/symfony/var-dumper.git", - "reference": "f19951007dae942cc79b979c1fe26bfdfbeb54ed" + "reference": "5791cc448c78a1a7879812d8073cc6690286e488" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/var-dumper/zipball/f19951007dae942cc79b979c1fe26bfdfbeb54ed", - "reference": "f19951007dae942cc79b979c1fe26bfdfbeb54ed", + "url": "https://api.github.com/repos/symfony/var-dumper/zipball/5791cc448c78a1a7879812d8073cc6690286e488", + "reference": "5791cc448c78a1a7879812d8073cc6690286e488", "shasum": "" }, "require": { - "php": ">=7.1.3", - "symfony/polyfill-mbstring": "~1.0", - "symfony/polyfill-php72": "~1.5", - "symfony/polyfill-php80": "^1.16" + "php": ">=8.1", + "symfony/deprecation-contracts": "^2.5|^3", + "symfony/polyfill-mbstring": "~1.0" }, "conflict": { - "phpunit/phpunit": "<4.8.35|<5.4.3,>=5.0", - "symfony/console": "<3.4" + "symfony/console": "<5.4" }, "require-dev": { "ext-iconv": "*", - "symfony/console": "^3.4|^4.0|^5.0", - "symfony/process": "^4.4|^5.0", - "twig/twig": "^1.43|^2.13|^3.0.4" - }, - "suggest": { - "ext-iconv": "To convert non-UTF-8 strings to UTF-8 (or symfony/polyfill-iconv in case ext-iconv cannot be used).", - "ext-intl": "To show region name in time zone dump", - "symfony/console": "To use the ServerDumpCommand and/or the bin/var-dump-server script" + "symfony/console": "^5.4|^6.0", + "symfony/http-kernel": "^5.4|^6.0", + "symfony/process": "^5.4|^6.0", + "symfony/uid": "^5.4|^6.0", + "twig/twig": "^2.13|^3.0.4" }, "bin": [ "Resources/bin/var-dump-server" @@ -8261,7 +8678,7 @@ "dump" ], "support": { - "source": "https://github.com/symfony/var-dumper/tree/v4.4.44" + "source": "https://github.com/symfony/var-dumper/tree/v6.3.12" }, "funding": [ { @@ -8277,28 +8694,27 @@ "type": "tidelift" } ], - "time": "2022-07-20T09:59:04+00:00" + "time": "2024-01-23T16:21:43+00:00" }, { "name": "symfony/var-exporter", - "version": "v4.4.43", + "version": "v6.3.12", "source": { "type": "git", "url": "https://github.com/symfony/var-exporter.git", - "reference": "4a7a3a3d55c471d396e6d28011368b7b83cb518b" + "reference": "ea6fe0e7d188f4b34c28a00d3f9a58ee33801a4b" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/var-exporter/zipball/4a7a3a3d55c471d396e6d28011368b7b83cb518b", - "reference": "4a7a3a3d55c471d396e6d28011368b7b83cb518b", + "url": "https://api.github.com/repos/symfony/var-exporter/zipball/ea6fe0e7d188f4b34c28a00d3f9a58ee33801a4b", + "reference": "ea6fe0e7d188f4b34c28a00d3f9a58ee33801a4b", "shasum": "" }, "require": { - "php": ">=7.1.3", - "symfony/polyfill-php80": "^1.16" + "php": ">=8.1" }, "require-dev": { - "symfony/var-dumper": "^4.4.9|^5.0.9" + "symfony/var-dumper": "^5.4|^6.0" }, "type": "library", "autoload": { @@ -8331,10 +8747,12 @@ "export", "hydrate", "instantiate", + "lazy-loading", + "proxy", "serialize" ], "support": { - "source": "https://github.com/symfony/var-exporter/tree/v4.4.43" + "source": "https://github.com/symfony/var-exporter/tree/v6.3.12" }, "funding": [ { @@ -8350,40 +8768,34 @@ "type": "tidelift" } ], - "time": "2022-05-27T11:44:32+00:00" + "time": "2024-01-23T14:35:58+00:00" }, { "name": "symfony/web-link", - "version": "v4.4.37", + "version": "v6.3.12", "source": { "type": "git", "url": "https://github.com/symfony/web-link.git", - "reference": "ab13621fd0c0119ad9ebc7179be7c5a1fc6a542d" + "reference": "0bc29a164b8c9c683d5eb0f839762c055d01e42e" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/web-link/zipball/ab13621fd0c0119ad9ebc7179be7c5a1fc6a542d", - "reference": "ab13621fd0c0119ad9ebc7179be7c5a1fc6a542d", + "url": "https://api.github.com/repos/symfony/web-link/zipball/0bc29a164b8c9c683d5eb0f839762c055d01e42e", + "reference": "0bc29a164b8c9c683d5eb0f839762c055d01e42e", "shasum": "" }, "require": { - "php": ">=7.1.3", - "psr/link": "^1.0", - "symfony/polyfill-php72": "^1.5", - "symfony/polyfill-php80": "^1.16" + "php": ">=8.1", + "psr/link": "^1.1|^2.0" }, "conflict": { - "symfony/http-kernel": "<4.3" + "symfony/http-kernel": "<5.4" }, "provide": { - "psr/link-implementation": "1.0" + "psr/link-implementation": "1.0|2.0" }, "require-dev": { - "symfony/http-foundation": "^4.4|^5.0", - "symfony/http-kernel": "^4.3|^5.0" - }, - "suggest": { - "symfony/http-kernel": "" + "symfony/http-kernel": "^5.4|^6.0" }, "type": "library", "autoload": { @@ -8423,7 +8835,7 @@ "push" ], "support": { - "source": "https://github.com/symfony/web-link/tree/v4.4.37" + "source": "https://github.com/symfony/web-link/tree/v6.3.12" }, "funding": [ { @@ -8439,35 +8851,36 @@ "type": "tidelift" } ], - "time": "2022-01-02T09:41:36+00:00" + "time": "2024-01-23T14:35:58+00:00" }, { "name": "symfony/yaml", - "version": "v4.4.44", + "version": "v6.3.12", "source": { "type": "git", "url": "https://github.com/symfony/yaml.git", - "reference": "c2b28c10fb3b7ac67bafa7b8f952cd83f35acde2" + "reference": "8ab9bb61e9b862c9b481af745ff163bc5e5e6246" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/yaml/zipball/c2b28c10fb3b7ac67bafa7b8f952cd83f35acde2", - "reference": "c2b28c10fb3b7ac67bafa7b8f952cd83f35acde2", + "url": "https://api.github.com/repos/symfony/yaml/zipball/8ab9bb61e9b862c9b481af745ff163bc5e5e6246", + "reference": "8ab9bb61e9b862c9b481af745ff163bc5e5e6246", "shasum": "" }, "require": { - "php": ">=7.1.3", - "symfony/polyfill-ctype": "~1.8" + "php": ">=8.1", + "symfony/deprecation-contracts": "^2.5|^3", + "symfony/polyfill-ctype": "^1.8" }, "conflict": { - "symfony/console": "<3.4" + "symfony/console": "<5.4" }, "require-dev": { - "symfony/console": "^3.4|^4.0|^5.0" - }, - "suggest": { - "symfony/console": "For validating YAML files using the lint command" + "symfony/console": "^5.4|^6.0" }, + "bin": [ + "Resources/bin/yaml-lint" + ], "type": "library", "autoload": { "psr-4": { @@ -8494,7 +8907,7 @@ "description": "Loads and dumps YAML files", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/yaml/tree/v4.4.44" + "source": "https://github.com/symfony/yaml/tree/v6.3.12" }, "funding": [ { @@ -8510,7 +8923,7 @@ "type": "tidelift" } ], - "time": "2022-06-27T13:16:42+00:00" + "time": "2024-01-23T14:35:58+00:00" }, { "name": "tetranz/select2entity-bundle", @@ -8571,27 +8984,27 @@ }, { "name": "twig/extra-bundle", - "version": "v3.4.0", + "version": "v3.8.0", "source": { "type": "git", "url": "https://github.com/twigphp/twig-extra-bundle.git", - "reference": "2e58256b0e9fe52f30149347c0547e4633304765" + "reference": "32807183753de0388c8e59f7ac2d13bb47311140" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/twigphp/twig-extra-bundle/zipball/2e58256b0e9fe52f30149347c0547e4633304765", - "reference": "2e58256b0e9fe52f30149347c0547e4633304765", + "url": "https://api.github.com/repos/twigphp/twig-extra-bundle/zipball/32807183753de0388c8e59f7ac2d13bb47311140", + "reference": "32807183753de0388c8e59f7ac2d13bb47311140", "shasum": "" }, "require": { "php": ">=7.2.5", - "symfony/framework-bundle": "^4.4|^5.0|^6.0", - "symfony/twig-bundle": "^4.4|^5.0|^6.0", - "twig/twig": "^2.7|^3.0" + "symfony/framework-bundle": "^5.4|^6.0|^7.0", + "symfony/twig-bundle": "^5.4|^6.0|^7.0", + "twig/twig": "^3.0" }, "require-dev": { "league/commonmark": "^1.0|^2.0", - "symfony/phpunit-bridge": "^4.4.9|^5.0.9|^6.0", + "symfony/phpunit-bridge": "^6.4|^7.0", "twig/cache-extra": "^3.0", "twig/cssinliner-extra": "^2.12|^3.0", "twig/html-extra": "^2.12|^3.0", @@ -8601,11 +9014,6 @@ "twig/string-extra": "^2.12|^3.0" }, "type": "symfony-bundle", - "extra": { - "branch-alias": { - "dev-master": "3.2-dev" - } - }, "autoload": { "psr-4": { "Twig\\Extra\\TwigExtraBundle\\": "" @@ -8634,7 +9042,7 @@ "twig" ], "support": { - "source": "https://github.com/twigphp/twig-extra-bundle/tree/v3.4.0" + "source": "https://github.com/twigphp/twig-extra-bundle/tree/v3.8.0" }, "funding": [ { @@ -8646,36 +9054,31 @@ "type": "tidelift" } ], - "time": "2022-01-04T13:58:53+00:00" + "time": "2023-11-21T14:02:01+00:00" }, { "name": "twig/intl-extra", - "version": "v3.4.2", + "version": "v3.8.0", "source": { "type": "git", "url": "https://github.com/twigphp/intl-extra.git", - "reference": "151e50fad9c7915bd56f0adf3f0cb3c47e6ed28a" + "reference": "7b3db67c700735f473a265a97e1adaeba3e6ca0c" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/twigphp/intl-extra/zipball/151e50fad9c7915bd56f0adf3f0cb3c47e6ed28a", - "reference": "151e50fad9c7915bd56f0adf3f0cb3c47e6ed28a", + "url": "https://api.github.com/repos/twigphp/intl-extra/zipball/7b3db67c700735f473a265a97e1adaeba3e6ca0c", + "reference": "7b3db67c700735f473a265a97e1adaeba3e6ca0c", "shasum": "" }, "require": { - "php": ">=7.1.3", - "symfony/intl": "^4.4|^5.0|^6.0", - "twig/twig": "^2.7|^3.0" + "php": ">=7.2.5", + "symfony/intl": "^5.4|^6.0|^7.0", + "twig/twig": "^3.0" }, "require-dev": { - "symfony/phpunit-bridge": "^4.4.9|^5.0.9|^6.0" + "symfony/phpunit-bridge": "^6.4|^7.0" }, "type": "library", - "extra": { - "branch-alias": { - "dev-master": "3.2-dev" - } - }, "autoload": { "psr-4": { "Twig\\Extra\\Intl\\": "" @@ -8703,7 +9106,7 @@ "twig" ], "support": { - "source": "https://github.com/twigphp/intl-extra/tree/v3.4.2" + "source": "https://github.com/twigphp/intl-extra/tree/v3.8.0" }, "funding": [ { @@ -8715,37 +9118,32 @@ "type": "tidelift" } ], - "time": "2022-06-10T08:33:05+00:00" + "time": "2023-11-21T17:27:48+00:00" }, { "name": "twig/string-extra", - "version": "v3.4.0", + "version": "v3.8.0", "source": { "type": "git", "url": "https://github.com/twigphp/string-extra.git", - "reference": "03608ae2e9c270a961e8cf1b75751e8635ad3e3c" + "reference": "b0c9037d96baff79abe368dc092a59b726517548" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/twigphp/string-extra/zipball/03608ae2e9c270a961e8cf1b75751e8635ad3e3c", - "reference": "03608ae2e9c270a961e8cf1b75751e8635ad3e3c", + "url": "https://api.github.com/repos/twigphp/string-extra/zipball/b0c9037d96baff79abe368dc092a59b726517548", + "reference": "b0c9037d96baff79abe368dc092a59b726517548", "shasum": "" }, "require": { "php": ">=7.2.5", - "symfony/string": "^5.0|^6.0", + "symfony/string": "^5.4|^6.0|^7.0", "symfony/translation-contracts": "^1.1|^2|^3", - "twig/twig": "^2.7|^3.0" + "twig/twig": "^3.0" }, "require-dev": { - "symfony/phpunit-bridge": "^4.4.9|^5.0.9|^6.0" + "symfony/phpunit-bridge": "^6.4|^7.0" }, "type": "library", - "extra": { - "branch-alias": { - "dev-master": "3.2-dev" - } - }, "autoload": { "psr-4": { "Twig\\Extra\\String\\": "" @@ -8775,7 +9173,7 @@ "unicode" ], "support": { - "source": "https://github.com/twigphp/string-extra/tree/v3.4.0" + "source": "https://github.com/twigphp/string-extra/tree/v3.8.0" }, "funding": [ { @@ -8787,38 +9185,41 @@ "type": "tidelift" } ], - "time": "2022-01-02T10:02:25+00:00" + "time": "2023-11-21T14:02:01+00:00" }, { "name": "twig/twig", - "version": "v3.4.3", + "version": "v3.9.3", "source": { "type": "git", "url": "https://github.com/twigphp/Twig.git", - "reference": "c38fd6b0b7f370c198db91ffd02e23b517426b58" + "reference": "a842d75fed59cdbcbd3a3ad7fb9eb768fc350d58" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/twigphp/Twig/zipball/c38fd6b0b7f370c198db91ffd02e23b517426b58", - "reference": "c38fd6b0b7f370c198db91ffd02e23b517426b58", + "url": "https://api.github.com/repos/twigphp/Twig/zipball/a842d75fed59cdbcbd3a3ad7fb9eb768fc350d58", + "reference": "a842d75fed59cdbcbd3a3ad7fb9eb768fc350d58", "shasum": "" }, "require": { "php": ">=7.2.5", + "symfony/deprecation-contracts": "^2.5|^3", "symfony/polyfill-ctype": "^1.8", - "symfony/polyfill-mbstring": "^1.3" + "symfony/polyfill-mbstring": "^1.3", + "symfony/polyfill-php80": "^1.22" }, "require-dev": { - "psr/container": "^1.0", - "symfony/phpunit-bridge": "^4.4.9|^5.0.9|^6.0" + "psr/container": "^1.0|^2.0", + "symfony/phpunit-bridge": "^5.4.9|^6.4|^7.0" }, "type": "library", - "extra": { - "branch-alias": { - "dev-master": "3.4-dev" - } - }, "autoload": { + "files": [ + "src/Resources/core.php", + "src/Resources/debug.php", + "src/Resources/escaper.php", + "src/Resources/string_loader.php" + ], "psr-4": { "Twig\\": "src/" } @@ -8851,7 +9252,7 @@ ], "support": { "issues": "https://github.com/twigphp/Twig/issues", - "source": "https://github.com/twigphp/Twig/tree/v3.4.3" + "source": "https://github.com/twigphp/Twig/tree/v3.9.3" }, "funding": [ { @@ -8863,76 +9264,7 @@ "type": "tidelift" } ], - "time": "2022-09-28T08:42:51+00:00" - }, - { - "name": "ubermichael/nines", - "version": "dev-4.x-up", - "source": { - "type": "git", - "url": "https://github.com/ubermichael/nines-bundles.git", - "reference": "7ca1e08f7e7c904e980a39f0f21226463fbba54d" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/ubermichael/nines-bundles/zipball/7ca1e08f7e7c904e980a39f0f21226463fbba54d", - "reference": "7ca1e08f7e7c904e980a39f0f21226463fbba54d", - "shasum": "" - }, - "require": { - "doctrine/cache": "^2.1", - "doctrine/inflector": "^2.0", - "doctrine/persistence": "^2.5", - "egulias/email-validator": "^3.1", - "ext-imagick": "*", - "ext-json": "*", - "guzzlehttp/guzzle": "^7.4", - "knplabs/knp-menu-bundle": "^3.2", - "knplabs/knp-paginator-bundle": "^5.8", - "minimalcode/search": "^1.0", - "nyholm/psr7": "^1.4", - "php": ">=7.4.0", - "sensio/framework-extra-bundle": "^5.1|^6.2", - "solarium/solarium": "^6.0", - "soundasleep/html2text": "^2.0", - "twig/string-extra": "^3.0" - }, - "require-dev": { - "doctrine/doctrine-fixtures-bundle": "^3.4", - "liip/test-fixtures-bundle": "^1.0.0", - "symfony/browser-kit": "4.4.*", - "symfony/css-selector": "4.4.*", - "symfony/phpunit-bridge": "^5.0" - }, - "type": "library", - "autoload": { - "psr-4": { - "Nines\\BlogBundle\\": "BlogBundle", - "Nines\\DublinCoreBundle\\": "DublinCoreBundle", - "Nines\\EditorBundle\\": "EditorBundle", - "Nines\\FeedbackBundle\\": "FeedbackBundle", - "Nines\\MakerBundle\\": "MakerBundle", - "Nines\\MediaBundle\\": "MediaBundle", - "Nines\\SolrBundle\\": "SolrBundle", - "Nines\\UserBundle\\": "UserBundle", - "Nines\\UtilBundle\\": "UtilBundle" - } - }, - "license": [ - "gpl" - ], - "authors": [ - { - "name": "Michael Joyce", - "email": "ubermichael@gmail.com" - } - ], - "description": "Some useful bundles.", - "support": { - "source": "https://github.com/ubermichael/nines-bundles/tree/4.x-up", - "issues": "https://github.com/ubermichael/nines-bundles/issues" - }, - "time": "2022-06-30T19:32:28+00:00" + "time": "2024-04-18T11:59:33+00:00" }, { "name": "webmozart/assert", @@ -8996,30 +9328,30 @@ "packages-dev": [ { "name": "composer/pcre", - "version": "1.0.1", + "version": "3.1.3", "source": { "type": "git", "url": "https://github.com/composer/pcre.git", - "reference": "67a32d7d6f9f560b726ab25a061b38ff3a80c560" + "reference": "5b16e25a5355f1f3afdfc2f954a0a80aec4826a8" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/composer/pcre/zipball/67a32d7d6f9f560b726ab25a061b38ff3a80c560", - "reference": "67a32d7d6f9f560b726ab25a061b38ff3a80c560", + "url": "https://api.github.com/repos/composer/pcre/zipball/5b16e25a5355f1f3afdfc2f954a0a80aec4826a8", + "reference": "5b16e25a5355f1f3afdfc2f954a0a80aec4826a8", "shasum": "" }, "require": { - "php": "^5.3.2 || ^7.0 || ^8.0" + "php": "^7.4 || ^8.0" }, "require-dev": { "phpstan/phpstan": "^1.3", "phpstan/phpstan-strict-rules": "^1.1", - "symfony/phpunit-bridge": "^4.2 || ^5" + "symfony/phpunit-bridge": "^5" }, "type": "library", "extra": { "branch-alias": { - "dev-main": "1.x-dev" + "dev-main": "3.x-dev" } }, "autoload": { @@ -9047,7 +9379,7 @@ ], "support": { "issues": "https://github.com/composer/pcre/issues", - "source": "https://github.com/composer/pcre/tree/1.0.1" + "source": "https://github.com/composer/pcre/tree/3.1.3" }, "funding": [ { @@ -9063,20 +9395,20 @@ "type": "tidelift" } ], - "time": "2022-01-21T20:24:37+00:00" + "time": "2024-03-19T10:26:25+00:00" }, { "name": "composer/semver", - "version": "3.3.2", + "version": "3.4.0", "source": { "type": "git", "url": "https://github.com/composer/semver.git", - "reference": "3953f23262f2bff1919fc82183ad9acb13ff62c9" + "reference": "35e8d0af4486141bc745f23a29cc2091eb624a32" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/composer/semver/zipball/3953f23262f2bff1919fc82183ad9acb13ff62c9", - "reference": "3953f23262f2bff1919fc82183ad9acb13ff62c9", + "url": "https://api.github.com/repos/composer/semver/zipball/35e8d0af4486141bc745f23a29cc2091eb624a32", + "reference": "35e8d0af4486141bc745f23a29cc2091eb624a32", "shasum": "" }, "require": { @@ -9126,9 +9458,9 @@ "versioning" ], "support": { - "irc": "irc://irc.freenode.org/composer", + "irc": "ircs://irc.libera.chat:6697/composer", "issues": "https://github.com/composer/semver/issues", - "source": "https://github.com/composer/semver/tree/3.3.2" + "source": "https://github.com/composer/semver/tree/3.4.0" }, "funding": [ { @@ -9144,31 +9476,31 @@ "type": "tidelift" } ], - "time": "2022-04-01T19:23:25+00:00" + "time": "2023-08-31T09:50:34+00:00" }, { "name": "composer/xdebug-handler", - "version": "2.0.5", + "version": "3.0.5", "source": { "type": "git", "url": "https://github.com/composer/xdebug-handler.git", - "reference": "9e36aeed4616366d2b690bdce11f71e9178c579a" + "reference": "6c1925561632e83d60a44492e0b344cf48ab85ef" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/composer/xdebug-handler/zipball/9e36aeed4616366d2b690bdce11f71e9178c579a", - "reference": "9e36aeed4616366d2b690bdce11f71e9178c579a", + "url": "https://api.github.com/repos/composer/xdebug-handler/zipball/6c1925561632e83d60a44492e0b344cf48ab85ef", + "reference": "6c1925561632e83d60a44492e0b344cf48ab85ef", "shasum": "" }, "require": { - "composer/pcre": "^1", - "php": "^5.3.2 || ^7.0 || ^8.0", + "composer/pcre": "^1 || ^2 || ^3", + "php": "^7.2.5 || ^8.0", "psr/log": "^1 || ^2 || ^3" }, "require-dev": { "phpstan/phpstan": "^1.0", "phpstan/phpstan-strict-rules": "^1.1", - "symfony/phpunit-bridge": "^4.2 || ^5.0 || ^6.0" + "phpunit/phpunit": "^8.5 || ^9.6 || ^10.5" }, "type": "library", "autoload": { @@ -9192,9 +9524,9 @@ "performance" ], "support": { - "irc": "irc://irc.freenode.org/composer", + "irc": "ircs://irc.libera.chat:6697/composer", "issues": "https://github.com/composer/xdebug-handler/issues", - "source": "https://github.com/composer/xdebug-handler/tree/2.0.5" + "source": "https://github.com/composer/xdebug-handler/tree/3.0.5" }, "funding": [ { @@ -9210,44 +9542,44 @@ "type": "tidelift" } ], - "time": "2022-02-24T20:20:32+00:00" + "time": "2024-05-06T16:37:16+00:00" }, { "name": "dama/doctrine-test-bundle", - "version": "v6.7.5", + "version": "v7.3.0", "source": { "type": "git", "url": "https://github.com/dmaicher/doctrine-test-bundle.git", - "reference": "af6f8e8c56fcfdf2ae039b97607883961a14af9c" + "reference": "688eea6529ea894b83deada10c83662d7804f34b" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/dmaicher/doctrine-test-bundle/zipball/af6f8e8c56fcfdf2ae039b97607883961a14af9c", - "reference": "af6f8e8c56fcfdf2ae039b97607883961a14af9c", + "url": "https://api.github.com/repos/dmaicher/doctrine-test-bundle/zipball/688eea6529ea894b83deada10c83662d7804f34b", + "reference": "688eea6529ea894b83deada10c83662d7804f34b", "shasum": "" }, "require": { - "doctrine/dbal": "^2.9.3 || ^3.0", - "doctrine/doctrine-bundle": "^1.11 || ^2.0", + "doctrine/dbal": "^3.3", + "doctrine/doctrine-bundle": "^2.2.2", "ext-json": "*", - "php": "^7.1 || ^8.0", + "php": "^7.3 || ^8.0", "psr/cache": "^1.0 || ^2.0 || ^3.0", - "symfony/cache": "^4.4 || ^5.3 || ^6.0", - "symfony/framework-bundle": "^4.4 || ^5.3 || ^6.0" + "symfony/cache": "^5.4 || ^6.0", + "symfony/framework-bundle": "^5.4 || ^6.0" }, "require-dev": { "behat/behat": "^3.0", "doctrine/cache": "^1.12", "phpstan/phpstan": "^1.2", - "phpunit/phpunit": "^7.0 || ^8.0 || ^9.0", - "symfony/phpunit-bridge": "^5.3 || ^6.0", - "symfony/process": "^4.4 || ^5.3 || ^6.0", - "symfony/yaml": "^4.4 || ^5.3 || ^6.0" + "phpunit/phpunit": "^8.0 || ^9.0 || ^10.0", + "symfony/phpunit-bridge": "^6.0", + "symfony/process": "^5.4 || ^6.0", + "symfony/yaml": "^5.4 || ^6.0" }, "type": "symfony-bundle", "extra": { "branch-alias": { - "dev-master": "6.x-dev" + "dev-master": "7.x-dev" } }, "autoload": { @@ -9275,168 +9607,46 @@ ], "support": { "issues": "https://github.com/dmaicher/doctrine-test-bundle/issues", - "source": "https://github.com/dmaicher/doctrine-test-bundle/tree/v6.7.5" - }, - "time": "2022-02-08T16:00:51+00:00" - }, - { - "name": "deployer/deployer", - "version": "v6.9.0", - "source": { - "type": "git", - "url": "https://github.com/deployphp/deployer.git", - "reference": "c4380effdc9f6d9c6ae549bb76f0a22bcb1d31d2" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/deployphp/deployer/zipball/c4380effdc9f6d9c6ae549bb76f0a22bcb1d31d2", - "reference": "c4380effdc9f6d9c6ae549bb76f0a22bcb1d31d2", - "shasum": "" - }, - "require": { - "deployer/phar-update": "~2.2", - "php": "^7.2 || ^8.0", - "pimple/pimple": "~3.0", - "symfony/console": "~2.7|~3.0|~4.0|~5.0", - "symfony/process": "~2.7|~3.0|~4.0|~5.0", - "symfony/yaml": "~2.7|~3.0|~4.0|~5.0" - }, - "require-dev": { - "phpunit/phpunit": "^8" - }, - "bin": [ - "bin/dep" - ], - "type": "library", - "autoload": { - "files": [ - "src/Support/helpers.php", - "src/functions.php" - ], - "psr-4": { - "Deployer\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Anton Medvedev", - "email": "anton@medv.io" - } - ], - "description": "Deployment Tool", - "homepage": "https://deployer.org", - "support": { - "docs": "https://deployer.org/docs", - "issues": "https://github.com/deployphp/deployer/issues", - "source": "https://github.com/deployphp/deployer" - }, - "funding": [ - { - "url": "https://github.com/antonmedv", - "type": "github" - } - ], - "time": "2022-08-03T18:09:01+00:00" - }, - { - "name": "deployer/phar-update", - "version": "v2.2.0", - "source": { - "type": "git", - "url": "https://github.com/deployphp/phar-update.git", - "reference": "9ad07422f2cd43a1382ee8e134bdcd3a374848e3" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/deployphp/phar-update/zipball/9ad07422f2cd43a1382ee8e134bdcd3a374848e3", - "reference": "9ad07422f2cd43a1382ee8e134bdcd3a374848e3", - "shasum": "" - }, - "require": { - "php": ">=5.3.3", - "symfony/console": "~2.7|~3.0|~4.0|~5.0" - }, - "require-dev": { - "mikey179/vfsstream": "1.1.0", - "phpunit/phpunit": "3.7.*", - "symfony/process": "~2.7|~3.0|~4.0|~5.0" - }, - "type": "library", - "autoload": { - "psr-4": { - "Deployer\\Component\\PharUpdate\\": "src/", - "Deployer\\Component\\PHPUnit\\": "src/PHPUnit/", - "Deployer\\Component\\Version\\": "src/Version/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Kevin Herrera", - "email": "kevin@herrera.io", - "homepage": "http://kevin.herrera.io" - }, - { - "name": "Anton Medvedev", - "email": "anton@medv.io", - "homepage": "https://medv.io" - } - ], - "description": "Integrates Phar Update to Symfony Console.", - "homepage": "https://github.com/deployphp/phar-update", - "keywords": [ - "console", - "phar", - "update" - ], - "support": { - "issues": "https://github.com/deployphp/phar-update/issues", - "source": "https://github.com/deployphp/phar-update/tree/v2.2.0" + "source": "https://github.com/dmaicher/doctrine-test-bundle/tree/v7.3.0" }, - "abandoned": true, - "time": "2019-12-12T13:45:57+00:00" + "time": "2023-11-27T21:29:42+00:00" }, { "name": "doctrine/data-fixtures", - "version": "1.5.3", + "version": "1.7.0", "source": { "type": "git", "url": "https://github.com/doctrine/data-fixtures.git", - "reference": "ba37bfb776de763c5bf04a36d074cd5f5a083c42" + "reference": "bbcb74f2ac6dbe81a14b3c3687d7623490a0448f" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/doctrine/data-fixtures/zipball/ba37bfb776de763c5bf04a36d074cd5f5a083c42", - "reference": "ba37bfb776de763c5bf04a36d074cd5f5a083c42", + "url": "https://api.github.com/repos/doctrine/data-fixtures/zipball/bbcb74f2ac6dbe81a14b3c3687d7623490a0448f", + "reference": "bbcb74f2ac6dbe81a14b3c3687d7623490a0448f", "shasum": "" }, "require": { - "doctrine/common": "^2.13|^3.0", - "doctrine/persistence": "^1.3.3|^2.0|^3.0", - "php": "^7.2 || ^8.0" + "doctrine/deprecations": "^0.5.3 || ^1.0", + "doctrine/persistence": "^2.0|^3.0", + "php": "^7.4 || ^8.0" }, "conflict": { - "doctrine/dbal": "<2.13", + "doctrine/dbal": "<3.5 || >=5", + "doctrine/orm": "<2.14 || >=4", "doctrine/phpcr-odm": "<1.3.0" }, "require-dev": { - "doctrine/coding-standard": "^9.0", - "doctrine/dbal": "^2.13 || ^3.0", + "doctrine/annotations": "^1.12 || ^2", + "doctrine/coding-standard": "^12", + "doctrine/dbal": "^3.5 || ^4", "doctrine/mongodb-odm": "^1.3.0 || ^2.0.0", - "doctrine/orm": "^2.7.0", + "doctrine/orm": "^2.14 || ^3", "ext-sqlite3": "*", - "jangregor/phpstan-prophecy": "^1", - "phpstan/phpstan": "^1.5", - "phpunit/phpunit": "^8.5 || ^9.5", - "symfony/cache": "^5.0 || ^6.0", - "vimeo/psalm": "^4.10" + "phpstan/phpstan": "^1.10", + "phpunit/phpunit": "^9.6.13 || ^10.4.2", + "symfony/cache": "^5.4 || ^6.3 || ^7", + "symfony/var-exporter": "^5.4 || ^6.3 || ^7", + "vimeo/psalm": "^5.9" }, "suggest": { "alcaeus/mongo-php-adapter": "For using MongoDB ODM 1.3 with PHP 7 (deprecated)", @@ -9447,7 +9657,7 @@ "type": "library", "autoload": { "psr-4": { - "Doctrine\\Common\\DataFixtures\\": "lib/Doctrine/Common/DataFixtures" + "Doctrine\\Common\\DataFixtures\\": "src" } }, "notification-url": "https://packagist.org/downloads/", @@ -9467,7 +9677,7 @@ ], "support": { "issues": "https://github.com/doctrine/data-fixtures/issues", - "source": "https://github.com/doctrine/data-fixtures/tree/1.5.3" + "source": "https://github.com/doctrine/data-fixtures/tree/1.7.0" }, "funding": [ { @@ -9483,45 +9693,49 @@ "type": "tidelift" } ], - "time": "2022-04-19T10:01:44+00:00" + "time": "2023-11-24T11:18:31+00:00" }, { "name": "doctrine/doctrine-fixtures-bundle", - "version": "3.4.2", + "version": "3.6.0", "source": { "type": "git", "url": "https://github.com/doctrine/DoctrineFixturesBundle.git", - "reference": "601988c5b46dbd20a0f886f967210aba378a6fd5" + "reference": "87f5d53708a3855aa018bf0a00d0d4b0ef58a956" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/doctrine/DoctrineFixturesBundle/zipball/601988c5b46dbd20a0f886f967210aba378a6fd5", - "reference": "601988c5b46dbd20a0f886f967210aba378a6fd5", + "url": "https://api.github.com/repos/doctrine/DoctrineFixturesBundle/zipball/87f5d53708a3855aa018bf0a00d0d4b0ef58a956", + "reference": "87f5d53708a3855aa018bf0a00d0d4b0ef58a956", "shasum": "" }, "require": { "doctrine/data-fixtures": "^1.3", - "doctrine/doctrine-bundle": "^1.11|^2.0", - "doctrine/orm": "^2.6.0", - "doctrine/persistence": "^1.3.7|^2.0|^3.0", - "php": "^7.1 || ^8.0", - "symfony/config": "^3.4|^4.3|^5.0|^6.0", - "symfony/console": "^3.4|^4.3|^5.0|^6.0", - "symfony/dependency-injection": "^3.4.47|^4.3|^5.0|^6.0", - "symfony/doctrine-bridge": "^3.4|^4.1|^5.0|^6.0", - "symfony/http-kernel": "^3.4|^4.3|^5.0|^6.0" + "doctrine/doctrine-bundle": "^2.2", + "doctrine/orm": "^2.14.0 || ^3.0", + "doctrine/persistence": "^2.4|^3.0", + "php": "^7.4 || ^8.0", + "symfony/config": "^5.4|^6.0|^7.0", + "symfony/console": "^5.4|^6.0|^7.0", + "symfony/dependency-injection": "^5.4|^6.0|^7.0", + "symfony/deprecation-contracts": "^2.1|^3", + "symfony/doctrine-bridge": "^5.4|^6.0|^7.0", + "symfony/http-kernel": "^5.4|^6.0|^7.0" + }, + "conflict": { + "doctrine/dbal": "< 3" }, "require-dev": { - "doctrine/coding-standard": "^9", - "phpstan/phpstan": "^1.4.10", - "phpunit/phpunit": "^7.5.20 || ^8.5.26 || ^9.5.20", - "symfony/phpunit-bridge": "^6.0.8", - "vimeo/psalm": "^4.22" + "doctrine/coding-standard": "^12", + "phpstan/phpstan": "^1.10.39", + "phpunit/phpunit": "^9.6.13", + "symfony/phpunit-bridge": "^6.3.6", + "vimeo/psalm": "^5.15" }, "type": "symfony-bundle", "autoload": { "psr-4": { - "Doctrine\\Bundle\\FixturesBundle\\": "" + "Doctrine\\Bundle\\FixturesBundle\\": "src" } }, "notification-url": "https://packagist.org/downloads/", @@ -9550,7 +9764,7 @@ ], "support": { "issues": "https://github.com/doctrine/DoctrineFixturesBundle/issues", - "source": "https://github.com/doctrine/DoctrineFixturesBundle/tree/3.4.2" + "source": "https://github.com/doctrine/DoctrineFixturesBundle/tree/3.6.0" }, "funding": [ { @@ -9566,56 +9780,54 @@ "type": "tidelift" } ], - "time": "2022-04-28T17:58:29+00:00" + "time": "2024-05-02T18:06:53+00:00" }, { "name": "friendsofphp/php-cs-fixer", - "version": "v3.4.0", + "version": "v3.56.0", "source": { "type": "git", - "url": "https://github.com/FriendsOfPHP/PHP-CS-Fixer.git", - "reference": "47177af1cfb9dab5d1cc4daf91b7179c2efe7fad" + "url": "https://github.com/PHP-CS-Fixer/PHP-CS-Fixer.git", + "reference": "4429303e62a4ce583ddfe64ff5c34c76bcf74931" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/FriendsOfPHP/PHP-CS-Fixer/zipball/47177af1cfb9dab5d1cc4daf91b7179c2efe7fad", - "reference": "47177af1cfb9dab5d1cc4daf91b7179c2efe7fad", + "url": "https://api.github.com/repos/PHP-CS-Fixer/PHP-CS-Fixer/zipball/4429303e62a4ce583ddfe64ff5c34c76bcf74931", + "reference": "4429303e62a4ce583ddfe64ff5c34c76bcf74931", "shasum": "" }, "require": { - "composer/semver": "^3.2", - "composer/xdebug-handler": "^2.0", - "doctrine/annotations": "^1.12", + "composer/semver": "^3.4", + "composer/xdebug-handler": "^3.0.3", + "ext-filter": "*", "ext-json": "*", "ext-tokenizer": "*", - "php": "^7.2.5 || ^8.0", - "php-cs-fixer/diff": "^2.0", - "symfony/console": "^4.4.20 || ^5.1.3 || ^6.0", - "symfony/event-dispatcher": "^4.4.20 || ^5.0 || ^6.0", - "symfony/filesystem": "^4.4.20 || ^5.0 || ^6.0", - "symfony/finder": "^4.4.20 || ^5.0 || ^6.0", - "symfony/options-resolver": "^4.4.20 || ^5.0 || ^6.0", - "symfony/polyfill-mbstring": "^1.23", - "symfony/polyfill-php80": "^1.23", - "symfony/polyfill-php81": "^1.23", - "symfony/process": "^4.4.20 || ^5.0 || ^6.0", - "symfony/stopwatch": "^4.4.20 || ^5.0 || ^6.0" + "php": "^7.4 || ^8.0", + "sebastian/diff": "^4.0 || ^5.0 || ^6.0", + "symfony/console": "^5.4 || ^6.0 || ^7.0", + "symfony/event-dispatcher": "^5.4 || ^6.0 || ^7.0", + "symfony/filesystem": "^5.4 || ^6.0 || ^7.0", + "symfony/finder": "^5.4 || ^6.0 || ^7.0", + "symfony/options-resolver": "^5.4 || ^6.0 || ^7.0", + "symfony/polyfill-mbstring": "^1.28", + "symfony/polyfill-php80": "^1.28", + "symfony/polyfill-php81": "^1.28", + "symfony/process": "^5.4 || ^6.0 || ^7.0", + "symfony/stopwatch": "^5.4 || ^6.0 || ^7.0" }, "require-dev": { + "facile-it/paraunit": "^1.3 || ^2.0", + "infection/infection": "^0.27.11", "justinrainbow/json-schema": "^5.2", - "keradus/cli-executor": "^1.5", - "mikey179/vfsstream": "^1.6.8", - "php-coveralls/php-coveralls": "^2.5.2", + "keradus/cli-executor": "^2.1", + "mikey179/vfsstream": "^1.6.11", + "php-coveralls/php-coveralls": "^2.7", "php-cs-fixer/accessible-object": "^1.1", - "php-cs-fixer/phpunit-constraint-isidenticalstring": "^1.2", - "php-cs-fixer/phpunit-constraint-xmlmatchesxsd": "^1.2.1", - "phpspec/prophecy": "^1.15", - "phpspec/prophecy-phpunit": "^1.1 || ^2.0", - "phpunit/phpunit": "^8.5.21 || ^9.5", - "phpunitgoodpractices/polyfill": "^1.5", - "phpunitgoodpractices/traits": "^1.9.1", - "symfony/phpunit-bridge": "^5.2.4 || ^6.0", - "symfony/yaml": "^4.4.20 || ^5.0 || ^6.0" + "php-cs-fixer/phpunit-constraint-isidenticalstring": "^1.4", + "php-cs-fixer/phpunit-constraint-xmlmatchesxsd": "^1.4", + "phpunit/phpunit": "^9.6 || ^10.5.5 || ^11.0.2", + "symfony/var-dumper": "^5.4 || ^6.0 || ^7.0", + "symfony/yaml": "^5.4 || ^6.0 || ^7.0" }, "suggest": { "ext-dom": "For handling output formats in XML", @@ -9645,9 +9857,15 @@ } ], "description": "A tool to automatically fix PHP code style", + "keywords": [ + "Static code analysis", + "fixer", + "standards", + "static analysis" + ], "support": { - "issues": "https://github.com/FriendsOfPHP/PHP-CS-Fixer/issues", - "source": "https://github.com/FriendsOfPHP/PHP-CS-Fixer/tree/v3.4.0" + "issues": "https://github.com/PHP-CS-Fixer/PHP-CS-Fixer/issues", + "source": "https://github.com/PHP-CS-Fixer/PHP-CS-Fixer/tree/v3.56.0" }, "funding": [ { @@ -9655,30 +9873,36 @@ "type": "github" } ], - "time": "2021-12-11T16:25:08+00:00" + "time": "2024-05-07T15:50:05+00:00" }, { "name": "friendsoftwig/twigcs", - "version": "v5.1.0", + "version": "6.4.0", "source": { "type": "git", "url": "https://github.com/friendsoftwig/twigcs.git", - "reference": "c82b078e9c199bc57375e557fb888b04f53420b2" + "reference": "954e1af488d649cf329f35deaedf2b8fe2cf4b56" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/friendsoftwig/twigcs/zipball/c82b078e9c199bc57375e557fb888b04f53420b2", - "reference": "c82b078e9c199bc57375e557fb888b04f53420b2", + "url": "https://api.github.com/repos/friendsoftwig/twigcs/zipball/954e1af488d649cf329f35deaedf2b8fe2cf4b56", + "reference": "954e1af488d649cf329f35deaedf2b8fe2cf4b56", "shasum": "" }, "require": { - "php": "^7.2 || ^8.0", - "symfony/console": "^3.4 || ^4.3 || ^5.0", - "symfony/filesystem": "^3.4 || ^4.3 || ^5.0", - "symfony/finder": "^3.4 || ^4.3 || ^5.0" + "ext-ctype": "*", + "ext-hash": "*", + "ext-json": "*", + "ext-mbstring": "*", + "ext-simplexml": "*", + "php": "~8.0.0 || ~8.1.0 || ~8.2.0 || ~8.3.0", + "symfony/console": "^4.4 || ^5.3 || ^6.0 || ^7.0", + "symfony/filesystem": "^4.4 || ^5.3 || ^6.0 || ^7.0", + "symfony/finder": "^4.4 || ^5.3 || ^6.0 || ^7.0" }, "require-dev": { - "phpunit/phpunit": "^8.0 || ^9.0" + "phpunit/phpunit": "^9.6.15", + "symfony/phpunit-bridge": "^7.0.1" }, "bin": [ "bin/twigcs" @@ -9702,22 +9926,22 @@ "description": "Checkstyle automation for Twig", "support": { "issues": "https://github.com/friendsoftwig/twigcs/issues", - "source": "https://github.com/friendsoftwig/twigcs/tree/v5.1.0" + "source": "https://github.com/friendsoftwig/twigcs/tree/6.4.0" }, - "time": "2021-09-21T21:04:19+00:00" + "time": "2023-12-05T07:36:35+00:00" }, { "name": "myclabs/deep-copy", - "version": "1.11.0", + "version": "1.11.1", "source": { "type": "git", "url": "https://github.com/myclabs/DeepCopy.git", - "reference": "14daed4296fae74d9e3201d2c4925d1acb7aa614" + "reference": "7284c22080590fb39f2ffa3e9057f10a4ddd0e0c" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/myclabs/DeepCopy/zipball/14daed4296fae74d9e3201d2c4925d1acb7aa614", - "reference": "14daed4296fae74d9e3201d2c4925d1acb7aa614", + "url": "https://api.github.com/repos/myclabs/DeepCopy/zipball/7284c22080590fb39f2ffa3e9057f10a4ddd0e0c", + "reference": "7284c22080590fb39f2ffa3e9057f10a4ddd0e0c", "shasum": "" }, "require": { @@ -9755,7 +9979,7 @@ ], "support": { "issues": "https://github.com/myclabs/DeepCopy/issues", - "source": "https://github.com/myclabs/DeepCopy/tree/1.11.0" + "source": "https://github.com/myclabs/DeepCopy/tree/1.11.1" }, "funding": [ { @@ -9763,29 +9987,31 @@ "type": "tidelift" } ], - "time": "2022-03-03T13:19:32+00:00" + "time": "2023-03-08T13:26:56+00:00" }, { "name": "nikic/php-parser", - "version": "v4.14.0", + "version": "v5.0.2", "source": { "type": "git", "url": "https://github.com/nikic/PHP-Parser.git", - "reference": "34bea19b6e03d8153165d8f30bba4c3be86184c1" + "reference": "139676794dc1e9231bf7bcd123cfc0c99182cb13" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/nikic/PHP-Parser/zipball/34bea19b6e03d8153165d8f30bba4c3be86184c1", - "reference": "34bea19b6e03d8153165d8f30bba4c3be86184c1", + "url": "https://api.github.com/repos/nikic/PHP-Parser/zipball/139676794dc1e9231bf7bcd123cfc0c99182cb13", + "reference": "139676794dc1e9231bf7bcd123cfc0c99182cb13", "shasum": "" }, "require": { + "ext-ctype": "*", + "ext-json": "*", "ext-tokenizer": "*", - "php": ">=7.0" + "php": ">=7.4" }, "require-dev": { "ircmaxell/php-yacc": "^0.0.7", - "phpunit/phpunit": "^6.5 || ^7.0 || ^8.0 || ^9.0" + "phpunit/phpunit": "^7.0 || ^8.0 || ^9.0" }, "bin": [ "bin/php-parse" @@ -9793,7 +10019,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-master": "4.9-dev" + "dev-master": "5.0-dev" } }, "autoload": { @@ -9817,26 +10043,27 @@ ], "support": { "issues": "https://github.com/nikic/PHP-Parser/issues", - "source": "https://github.com/nikic/PHP-Parser/tree/v4.14.0" + "source": "https://github.com/nikic/PHP-Parser/tree/v5.0.2" }, - "time": "2022-05-31T20:59:12+00:00" + "time": "2024-03-05T20:51:40+00:00" }, { "name": "phar-io/manifest", - "version": "2.0.3", + "version": "2.0.4", "source": { "type": "git", "url": "https://github.com/phar-io/manifest.git", - "reference": "97803eca37d319dfa7826cc2437fc020857acb53" + "reference": "54750ef60c58e43759730615a392c31c80e23176" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/phar-io/manifest/zipball/97803eca37d319dfa7826cc2437fc020857acb53", - "reference": "97803eca37d319dfa7826cc2437fc020857acb53", + "url": "https://api.github.com/repos/phar-io/manifest/zipball/54750ef60c58e43759730615a392c31c80e23176", + "reference": "54750ef60c58e43759730615a392c31c80e23176", "shasum": "" }, "require": { "ext-dom": "*", + "ext-libxml": "*", "ext-phar": "*", "ext-xmlwriter": "*", "phar-io/version": "^3.0.1", @@ -9874,84 +10101,35 @@ "role": "Developer" } ], - "description": "Component for reading phar.io manifest information from a PHP Archive (PHAR)", - "support": { - "issues": "https://github.com/phar-io/manifest/issues", - "source": "https://github.com/phar-io/manifest/tree/2.0.3" - }, - "time": "2021-07-20T11:28:43+00:00" - }, - { - "name": "phar-io/version", - "version": "3.2.1", - "source": { - "type": "git", - "url": "https://github.com/phar-io/version.git", - "reference": "4f7fd7836c6f332bb2933569e566a0d6c4cbed74" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/phar-io/version/zipball/4f7fd7836c6f332bb2933569e566a0d6c4cbed74", - "reference": "4f7fd7836c6f332bb2933569e566a0d6c4cbed74", - "shasum": "" - }, - "require": { - "php": "^7.2 || ^8.0" - }, - "type": "library", - "autoload": { - "classmap": [ - "src/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Arne Blankerts", - "email": "arne@blankerts.de", - "role": "Developer" - }, - { - "name": "Sebastian Heuer", - "email": "sebastian@phpeople.de", - "role": "Developer" - }, - { - "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de", - "role": "Developer" - } - ], - "description": "Library for handling version information and constraints", + "description": "Component for reading phar.io manifest information from a PHP Archive (PHAR)", "support": { - "issues": "https://github.com/phar-io/version/issues", - "source": "https://github.com/phar-io/version/tree/3.2.1" + "issues": "https://github.com/phar-io/manifest/issues", + "source": "https://github.com/phar-io/manifest/tree/2.0.4" }, - "time": "2022-02-21T01:04:05+00:00" + "funding": [ + { + "url": "https://github.com/theseer", + "type": "github" + } + ], + "time": "2024-03-03T12:33:53+00:00" }, { - "name": "php-cs-fixer/diff", - "version": "v2.0.2", + "name": "phar-io/version", + "version": "3.2.1", "source": { "type": "git", - "url": "https://github.com/PHP-CS-Fixer/diff.git", - "reference": "29dc0d507e838c4580d018bd8b5cb412474f7ec3" + "url": "https://github.com/phar-io/version.git", + "reference": "4f7fd7836c6f332bb2933569e566a0d6c4cbed74" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/PHP-CS-Fixer/diff/zipball/29dc0d507e838c4580d018bd8b5cb412474f7ec3", - "reference": "29dc0d507e838c4580d018bd8b5cb412474f7ec3", + "url": "https://api.github.com/repos/phar-io/version/zipball/4f7fd7836c6f332bb2933569e566a0d6c4cbed74", + "reference": "4f7fd7836c6f332bb2933569e566a0d6c4cbed74", "shasum": "" }, "require": { - "php": "^5.6 || ^7.0 || ^8.0" - }, - "require-dev": { - "phpunit/phpunit": "^5.7.23 || ^6.4.3 || ^7.0", - "symfony/process": "^3.3" + "php": "^7.2 || ^8.0" }, "type": "library", "autoload": { @@ -9965,104 +10143,40 @@ ], "authors": [ { - "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de" + "name": "Arne Blankerts", + "email": "arne@blankerts.de", + "role": "Developer" }, { - "name": "Kore Nordmann", - "email": "mail@kore-nordmann.de" - } - ], - "description": "sebastian/diff v3 backport support for PHP 5.6+", - "homepage": "https://github.com/PHP-CS-Fixer", - "keywords": [ - "diff" - ], - "support": { - "issues": "https://github.com/PHP-CS-Fixer/diff/issues", - "source": "https://github.com/PHP-CS-Fixer/diff/tree/v2.0.2" - }, - "time": "2020-10-14T08:32:19+00:00" - }, - { - "name": "phpspec/prophecy", - "version": "v1.15.0", - "source": { - "type": "git", - "url": "https://github.com/phpspec/prophecy.git", - "reference": "bbcd7380b0ebf3961ee21409db7b38bc31d69a13" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/phpspec/prophecy/zipball/bbcd7380b0ebf3961ee21409db7b38bc31d69a13", - "reference": "bbcd7380b0ebf3961ee21409db7b38bc31d69a13", - "shasum": "" - }, - "require": { - "doctrine/instantiator": "^1.2", - "php": "^7.2 || ~8.0, <8.2", - "phpdocumentor/reflection-docblock": "^5.2", - "sebastian/comparator": "^3.0 || ^4.0", - "sebastian/recursion-context": "^3.0 || ^4.0" - }, - "require-dev": { - "phpspec/phpspec": "^6.0 || ^7.0", - "phpunit/phpunit": "^8.0 || ^9.0" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.x-dev" - } - }, - "autoload": { - "psr-4": { - "Prophecy\\": "src/Prophecy" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Konstantin Kudryashov", - "email": "ever.zet@gmail.com", - "homepage": "http://everzet.com" + "name": "Sebastian Heuer", + "email": "sebastian@phpeople.de", + "role": "Developer" }, { - "name": "Marcello Duarte", - "email": "marcello.duarte@gmail.com" + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de", + "role": "Developer" } ], - "description": "Highly opinionated mocking framework for PHP 5.3+", - "homepage": "https://github.com/phpspec/prophecy", - "keywords": [ - "Double", - "Dummy", - "fake", - "mock", - "spy", - "stub" - ], + "description": "Library for handling version information and constraints", "support": { - "issues": "https://github.com/phpspec/prophecy/issues", - "source": "https://github.com/phpspec/prophecy/tree/v1.15.0" + "issues": "https://github.com/phar-io/version/issues", + "source": "https://github.com/phar-io/version/tree/3.2.1" }, - "time": "2021-12-08T12:19:24+00:00" + "time": "2022-02-21T01:04:05+00:00" }, { "name": "phpstan/phpstan", - "version": "1.8.2", + "version": "1.10.67", "source": { "type": "git", "url": "https://github.com/phpstan/phpstan.git", - "reference": "c53312ecc575caf07b0e90dee43883fdf90ca67c" + "reference": "16ddbe776f10da6a95ebd25de7c1dbed397dc493" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/phpstan/phpstan/zipball/c53312ecc575caf07b0e90dee43883fdf90ca67c", - "reference": "c53312ecc575caf07b0e90dee43883fdf90ca67c", + "url": "https://api.github.com/repos/phpstan/phpstan/zipball/16ddbe776f10da6a95ebd25de7c1dbed397dc493", + "reference": "16ddbe776f10da6a95ebd25de7c1dbed397dc493", "shasum": "" }, "require": { @@ -10086,9 +10200,16 @@ "MIT" ], "description": "PHPStan - PHP Static Analysis Tool", + "keywords": [ + "dev", + "static analysis" + ], "support": { + "docs": "https://phpstan.org/user-guide/getting-started", + "forum": "https://github.com/phpstan/phpstan/discussions", "issues": "https://github.com/phpstan/phpstan/issues", - "source": "https://github.com/phpstan/phpstan/tree/1.8.2" + "security": "https://github.com/phpstan/phpstan/security/policy", + "source": "https://github.com/phpstan/phpstan-src" }, "funding": [ { @@ -10098,35 +10219,27 @@ { "url": "https://github.com/phpstan", "type": "github" - }, - { - "url": "https://www.patreon.com/phpstan", - "type": "patreon" - }, - { - "url": "https://tidelift.com/funding/github/packagist/phpstan/phpstan", - "type": "tidelift" } ], - "time": "2022-07-20T09:57:31+00:00" + "time": "2024-04-16T07:22:02+00:00" }, { "name": "phpstan/phpstan-doctrine", - "version": "1.3.12", + "version": "1.3.69", "source": { "type": "git", "url": "https://github.com/phpstan/phpstan-doctrine.git", - "reference": "c5ec462889f3bcee32be57ff26f775295836c173" + "reference": "ac567407e750b94e2133dace33b19082ad9ed751" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/phpstan/phpstan-doctrine/zipball/c5ec462889f3bcee32be57ff26f775295836c173", - "reference": "c5ec462889f3bcee32be57ff26f775295836c173", + "url": "https://api.github.com/repos/phpstan/phpstan-doctrine/zipball/ac567407e750b94e2133dace33b19082ad9ed751", + "reference": "ac567407e750b94e2133dace33b19082ad9ed751", "shasum": "" }, "require": { "php": "^7.2 || ^8.0", - "phpstan/phpstan": "^1.8.0" + "phpstan/phpstan": "^1.10.64" }, "conflict": { "doctrine/collections": "<1.0", @@ -10136,22 +10249,26 @@ "doctrine/persistence": "<1.3" }, "require-dev": { - "doctrine/annotations": "^1.11.0", - "doctrine/collections": "^1.6", + "cache/array-adapter": "^1.1", + "composer/semver": "^3.3.2", + "cweagans/composer-patches": "^1.7.3", + "doctrine/annotations": "^1.11 || ^2.0", + "doctrine/collections": "^1.6 || ^2.1", "doctrine/common": "^2.7 || ^3.0", "doctrine/dbal": "^2.13.8 || ^3.3.3", - "doctrine/lexer": "^1.2.1", - "doctrine/mongodb-odm": "^1.3 || ^2.1", - "doctrine/orm": "^2.11.0", - "doctrine/persistence": "^1.3.8 || ^2.2.1", + "doctrine/lexer": "^2.0 || ^3.0", + "doctrine/mongodb-odm": "^1.3 || ^2.4.3", + "doctrine/orm": "^2.16.0", + "doctrine/persistence": "^2.2.1 || ^3.2", + "gedmo/doctrine-extensions": "^3.8", "nesbot/carbon": "^2.49", "nikic/php-parser": "^4.13.2", "php-parallel-lint/php-parallel-lint": "^1.2", - "phpstan/phpstan-phpunit": "^1.0", - "phpstan/phpstan-strict-rules": "^1.0", - "phpunit/phpunit": "^9.5.10", - "ramsey/uuid-doctrine": "^1.5.0", - "symfony/cache": "^4.4.35" + "phpstan/phpstan-phpunit": "^1.3.13", + "phpstan/phpstan-strict-rules": "^1.5.1", + "phpunit/phpunit": "^9.6.16", + "ramsey/uuid": "^4.2", + "symfony/cache": "^5.4" }, "type": "phpstan-extension", "extra": { @@ -10174,28 +10291,28 @@ "description": "Doctrine extensions for PHPStan", "support": { "issues": "https://github.com/phpstan/phpstan-doctrine/issues", - "source": "https://github.com/phpstan/phpstan-doctrine/tree/1.3.12" + "source": "https://github.com/phpstan/phpstan-doctrine/tree/1.3.69" }, - "time": "2022-08-08T18:06:58+00:00" + "time": "2024-04-18T12:56:14+00:00" }, { "name": "phpstan/phpstan-symfony", - "version": "1.2.9", + "version": "1.3.12", "source": { "type": "git", "url": "https://github.com/phpstan/phpstan-symfony.git", - "reference": "f4cb3b8915d3656e780f305f01c86b70ff933272" + "reference": "f4b9407fa3203aebafd422ae8f0eb1ef94659a80" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/phpstan/phpstan-symfony/zipball/f4cb3b8915d3656e780f305f01c86b70ff933272", - "reference": "f4cb3b8915d3656e780f305f01c86b70ff933272", + "url": "https://api.github.com/repos/phpstan/phpstan-symfony/zipball/f4b9407fa3203aebafd422ae8f0eb1ef94659a80", + "reference": "f4b9407fa3203aebafd422ae8f0eb1ef94659a80", "shasum": "" }, "require": { "ext-simplexml": "*", "php": "^7.2 || ^8.0", - "phpstan/phpstan": "^1.8.2" + "phpstan/phpstan": "^1.10.62" }, "conflict": { "symfony/framework-bundle": "<3.0" @@ -10203,19 +10320,20 @@ "require-dev": { "nikic/php-parser": "^4.13.0", "php-parallel-lint/php-parallel-lint": "^1.2", - "phpstan/phpstan-phpunit": "^1.0", - "phpstan/phpstan-strict-rules": "^1.0", - "phpunit/phpunit": "^9.5", + "phpstan/phpstan-phpunit": "^1.3.11", + "phpstan/phpstan-strict-rules": "^1.5.1", + "phpunit/phpunit": "^8.5.29 || ^9.5", "psr/container": "1.0 || 1.1.1", - "symfony/config": "^4.2 || ^5.0", - "symfony/console": "^4.0 || ^5.0", - "symfony/dependency-injection": "^4.0 || ^5.0", - "symfony/form": "^4.0 || ^5.0", - "symfony/framework-bundle": "^4.4 || ^5.0", - "symfony/http-foundation": "^5.1", - "symfony/messenger": "^4.2 || ^5.0", + "symfony/config": "^5.4 || ^6.1", + "symfony/console": "^5.4 || ^6.1", + "symfony/dependency-injection": "^5.4 || ^6.1", + "symfony/form": "^5.4 || ^6.1", + "symfony/framework-bundle": "^5.4 || ^6.1", + "symfony/http-foundation": "^5.4 || ^6.1", + "symfony/messenger": "^5.4", "symfony/polyfill-php80": "^1.24", - "symfony/serializer": "^4.0 || ^5.0" + "symfony/serializer": "^5.4", + "symfony/service-contracts": "^2.2.0" }, "type": "phpstan-extension", "extra": { @@ -10245,29 +10363,29 @@ "description": "Symfony Framework extensions and rules for PHPStan", "support": { "issues": "https://github.com/phpstan/phpstan-symfony/issues", - "source": "https://github.com/phpstan/phpstan-symfony/tree/1.2.9" + "source": "https://github.com/phpstan/phpstan-symfony/tree/1.3.12" }, - "time": "2022-08-05T20:13:38+00:00" + "time": "2024-04-14T13:30:23+00:00" }, { "name": "phpunit/php-code-coverage", - "version": "9.2.15", + "version": "9.2.31", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/php-code-coverage.git", - "reference": "2e9da11878c4202f97915c1cb4bb1ca318a63f5f" + "reference": "48c34b5d8d983006bd2adc2d0de92963b9155965" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/php-code-coverage/zipball/2e9da11878c4202f97915c1cb4bb1ca318a63f5f", - "reference": "2e9da11878c4202f97915c1cb4bb1ca318a63f5f", + "url": "https://api.github.com/repos/sebastianbergmann/php-code-coverage/zipball/48c34b5d8d983006bd2adc2d0de92963b9155965", + "reference": "48c34b5d8d983006bd2adc2d0de92963b9155965", "shasum": "" }, "require": { "ext-dom": "*", "ext-libxml": "*", "ext-xmlwriter": "*", - "nikic/php-parser": "^4.13.0", + "nikic/php-parser": "^4.18 || ^5.0", "php": ">=7.3", "phpunit/php-file-iterator": "^3.0.3", "phpunit/php-text-template": "^2.0.2", @@ -10282,8 +10400,8 @@ "phpunit/phpunit": "^9.3" }, "suggest": { - "ext-pcov": "*", - "ext-xdebug": "*" + "ext-pcov": "PHP extension that provides line coverage", + "ext-xdebug": "PHP extension that provides line coverage as well as branch and path coverage" }, "type": "library", "extra": { @@ -10316,7 +10434,8 @@ ], "support": { "issues": "https://github.com/sebastianbergmann/php-code-coverage/issues", - "source": "https://github.com/sebastianbergmann/php-code-coverage/tree/9.2.15" + "security": "https://github.com/sebastianbergmann/php-code-coverage/security/policy", + "source": "https://github.com/sebastianbergmann/php-code-coverage/tree/9.2.31" }, "funding": [ { @@ -10324,7 +10443,7 @@ "type": "github" } ], - "time": "2022-03-07T09:28:20+00:00" + "time": "2024-03-02T06:37:42+00:00" }, { "name": "phpunit/php-file-iterator", @@ -10569,20 +10688,20 @@ }, { "name": "phpunit/phpunit", - "version": "9.5.21", + "version": "9.6.19", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/phpunit.git", - "reference": "0e32b76be457de00e83213528f6bb37e2a38fcb1" + "reference": "a1a54a473501ef4cdeaae4e06891674114d79db8" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/0e32b76be457de00e83213528f6bb37e2a38fcb1", - "reference": "0e32b76be457de00e83213528f6bb37e2a38fcb1", + "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/a1a54a473501ef4cdeaae4e06891674114d79db8", + "reference": "a1a54a473501ef4cdeaae4e06891674114d79db8", "shasum": "" }, "require": { - "doctrine/instantiator": "^1.3.1", + "doctrine/instantiator": "^1.3.1 || ^2", "ext-dom": "*", "ext-json": "*", "ext-libxml": "*", @@ -10593,30 +10712,26 @@ "phar-io/manifest": "^2.0.3", "phar-io/version": "^3.0.2", "php": ">=7.3", - "phpspec/prophecy": "^1.12.1", - "phpunit/php-code-coverage": "^9.2.13", + "phpunit/php-code-coverage": "^9.2.28", "phpunit/php-file-iterator": "^3.0.5", "phpunit/php-invoker": "^3.1.1", "phpunit/php-text-template": "^2.0.3", "phpunit/php-timer": "^5.0.2", "sebastian/cli-parser": "^1.0.1", "sebastian/code-unit": "^1.0.6", - "sebastian/comparator": "^4.0.5", + "sebastian/comparator": "^4.0.8", "sebastian/diff": "^4.0.3", "sebastian/environment": "^5.1.3", - "sebastian/exporter": "^4.0.3", + "sebastian/exporter": "^4.0.5", "sebastian/global-state": "^5.0.1", "sebastian/object-enumerator": "^4.0.3", "sebastian/resource-operations": "^3.0.3", - "sebastian/type": "^3.0", + "sebastian/type": "^3.2", "sebastian/version": "^3.0.2" }, - "require-dev": { - "phpspec/prophecy-phpunit": "^2.0.1" - }, "suggest": { - "ext-soap": "*", - "ext-xdebug": "*" + "ext-soap": "To be able to generate mocks based on WSDL files", + "ext-xdebug": "PHP extension that provides line coverage as well as branch and path coverage" }, "bin": [ "phpunit" @@ -10624,7 +10739,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-master": "9.5-dev" + "dev-master": "9.6-dev" } }, "autoload": { @@ -10655,7 +10770,8 @@ ], "support": { "issues": "https://github.com/sebastianbergmann/phpunit/issues", - "source": "https://github.com/sebastianbergmann/phpunit/tree/9.5.21" + "security": "https://github.com/sebastianbergmann/phpunit/security/policy", + "source": "https://github.com/sebastianbergmann/phpunit/tree/9.6.19" }, "funding": [ { @@ -10665,75 +10781,26 @@ { "url": "https://github.com/sebastianbergmann", "type": "github" - } - ], - "time": "2022-06-19T12:14:25+00:00" - }, - { - "name": "pimple/pimple", - "version": "v3.5.0", - "source": { - "type": "git", - "url": "https://github.com/silexphp/Pimple.git", - "reference": "a94b3a4db7fb774b3d78dad2315ddc07629e1bed" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/silexphp/Pimple/zipball/a94b3a4db7fb774b3d78dad2315ddc07629e1bed", - "reference": "a94b3a4db7fb774b3d78dad2315ddc07629e1bed", - "shasum": "" - }, - "require": { - "php": ">=7.2.5", - "psr/container": "^1.1 || ^2.0" - }, - "require-dev": { - "symfony/phpunit-bridge": "^5.4@dev" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "3.4.x-dev" - } - }, - "autoload": { - "psr-0": { - "Pimple": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ + }, { - "name": "Fabien Potencier", - "email": "fabien@symfony.com" + "url": "https://tidelift.com/funding/github/packagist/phpunit/phpunit", + "type": "tidelift" } ], - "description": "Pimple, a simple Dependency Injection Container", - "homepage": "https://pimple.symfony.com", - "keywords": [ - "container", - "dependency injection" - ], - "support": { - "source": "https://github.com/silexphp/Pimple/tree/v3.5.0" - }, - "time": "2021-10-28T11:13:42+00:00" + "time": "2024-04-05T04:35:58+00:00" }, { "name": "sebastian/cli-parser", - "version": "1.0.1", + "version": "1.0.2", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/cli-parser.git", - "reference": "442e7c7e687e42adc03470c7b668bc4b2402c0b2" + "reference": "2b56bea83a09de3ac06bb18b92f068e60cc6f50b" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/cli-parser/zipball/442e7c7e687e42adc03470c7b668bc4b2402c0b2", - "reference": "442e7c7e687e42adc03470c7b668bc4b2402c0b2", + "url": "https://api.github.com/repos/sebastianbergmann/cli-parser/zipball/2b56bea83a09de3ac06bb18b92f068e60cc6f50b", + "reference": "2b56bea83a09de3ac06bb18b92f068e60cc6f50b", "shasum": "" }, "require": { @@ -10768,7 +10835,7 @@ "homepage": "https://github.com/sebastianbergmann/cli-parser", "support": { "issues": "https://github.com/sebastianbergmann/cli-parser/issues", - "source": "https://github.com/sebastianbergmann/cli-parser/tree/1.0.1" + "source": "https://github.com/sebastianbergmann/cli-parser/tree/1.0.2" }, "funding": [ { @@ -10776,7 +10843,7 @@ "type": "github" } ], - "time": "2020-09-28T06:08:49+00:00" + "time": "2024-03-02T06:27:43+00:00" }, { "name": "sebastian/code-unit", @@ -10891,16 +10958,16 @@ }, { "name": "sebastian/comparator", - "version": "4.0.6", + "version": "4.0.8", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/comparator.git", - "reference": "55f4261989e546dc112258c7a75935a81a7ce382" + "reference": "fa0f136dd2334583309d32b62544682ee972b51a" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/comparator/zipball/55f4261989e546dc112258c7a75935a81a7ce382", - "reference": "55f4261989e546dc112258c7a75935a81a7ce382", + "url": "https://api.github.com/repos/sebastianbergmann/comparator/zipball/fa0f136dd2334583309d32b62544682ee972b51a", + "reference": "fa0f136dd2334583309d32b62544682ee972b51a", "shasum": "" }, "require": { @@ -10953,7 +11020,7 @@ ], "support": { "issues": "https://github.com/sebastianbergmann/comparator/issues", - "source": "https://github.com/sebastianbergmann/comparator/tree/4.0.6" + "source": "https://github.com/sebastianbergmann/comparator/tree/4.0.8" }, "funding": [ { @@ -10961,24 +11028,24 @@ "type": "github" } ], - "time": "2020-10-26T15:49:45+00:00" + "time": "2022-09-14T12:41:17+00:00" }, { "name": "sebastian/complexity", - "version": "2.0.2", + "version": "2.0.3", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/complexity.git", - "reference": "739b35e53379900cc9ac327b2147867b8b6efd88" + "reference": "25f207c40d62b8b7aa32f5ab026c53561964053a" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/complexity/zipball/739b35e53379900cc9ac327b2147867b8b6efd88", - "reference": "739b35e53379900cc9ac327b2147867b8b6efd88", + "url": "https://api.github.com/repos/sebastianbergmann/complexity/zipball/25f207c40d62b8b7aa32f5ab026c53561964053a", + "reference": "25f207c40d62b8b7aa32f5ab026c53561964053a", "shasum": "" }, "require": { - "nikic/php-parser": "^4.7", + "nikic/php-parser": "^4.18 || ^5.0", "php": ">=7.3" }, "require-dev": { @@ -11010,7 +11077,7 @@ "homepage": "https://github.com/sebastianbergmann/complexity", "support": { "issues": "https://github.com/sebastianbergmann/complexity/issues", - "source": "https://github.com/sebastianbergmann/complexity/tree/2.0.2" + "source": "https://github.com/sebastianbergmann/complexity/tree/2.0.3" }, "funding": [ { @@ -11018,20 +11085,20 @@ "type": "github" } ], - "time": "2020-10-26T15:52:27+00:00" + "time": "2023-12-22T06:19:30+00:00" }, { "name": "sebastian/diff", - "version": "4.0.4", + "version": "4.0.6", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/diff.git", - "reference": "3461e3fccc7cfdfc2720be910d3bd73c69be590d" + "reference": "ba01945089c3a293b01ba9badc29ad55b106b0bc" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/diff/zipball/3461e3fccc7cfdfc2720be910d3bd73c69be590d", - "reference": "3461e3fccc7cfdfc2720be910d3bd73c69be590d", + "url": "https://api.github.com/repos/sebastianbergmann/diff/zipball/ba01945089c3a293b01ba9badc29ad55b106b0bc", + "reference": "ba01945089c3a293b01ba9badc29ad55b106b0bc", "shasum": "" }, "require": { @@ -11076,7 +11143,7 @@ ], "support": { "issues": "https://github.com/sebastianbergmann/diff/issues", - "source": "https://github.com/sebastianbergmann/diff/tree/4.0.4" + "source": "https://github.com/sebastianbergmann/diff/tree/4.0.6" }, "funding": [ { @@ -11084,20 +11151,20 @@ "type": "github" } ], - "time": "2020-10-26T13:10:38+00:00" + "time": "2024-03-02T06:30:58+00:00" }, { "name": "sebastian/environment", - "version": "5.1.4", + "version": "5.1.5", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/environment.git", - "reference": "1b5dff7bb151a4db11d49d90e5408e4e938270f7" + "reference": "830c43a844f1f8d5b7a1f6d6076b784454d8b7ed" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/environment/zipball/1b5dff7bb151a4db11d49d90e5408e4e938270f7", - "reference": "1b5dff7bb151a4db11d49d90e5408e4e938270f7", + "url": "https://api.github.com/repos/sebastianbergmann/environment/zipball/830c43a844f1f8d5b7a1f6d6076b784454d8b7ed", + "reference": "830c43a844f1f8d5b7a1f6d6076b784454d8b7ed", "shasum": "" }, "require": { @@ -11139,7 +11206,7 @@ ], "support": { "issues": "https://github.com/sebastianbergmann/environment/issues", - "source": "https://github.com/sebastianbergmann/environment/tree/5.1.4" + "source": "https://github.com/sebastianbergmann/environment/tree/5.1.5" }, "funding": [ { @@ -11147,20 +11214,20 @@ "type": "github" } ], - "time": "2022-04-03T09:37:03+00:00" + "time": "2023-02-03T06:03:51+00:00" }, { "name": "sebastian/exporter", - "version": "4.0.4", + "version": "4.0.6", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/exporter.git", - "reference": "65e8b7db476c5dd267e65eea9cab77584d3cfff9" + "reference": "78c00df8f170e02473b682df15bfcdacc3d32d72" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/exporter/zipball/65e8b7db476c5dd267e65eea9cab77584d3cfff9", - "reference": "65e8b7db476c5dd267e65eea9cab77584d3cfff9", + "url": "https://api.github.com/repos/sebastianbergmann/exporter/zipball/78c00df8f170e02473b682df15bfcdacc3d32d72", + "reference": "78c00df8f170e02473b682df15bfcdacc3d32d72", "shasum": "" }, "require": { @@ -11216,7 +11283,7 @@ ], "support": { "issues": "https://github.com/sebastianbergmann/exporter/issues", - "source": "https://github.com/sebastianbergmann/exporter/tree/4.0.4" + "source": "https://github.com/sebastianbergmann/exporter/tree/4.0.6" }, "funding": [ { @@ -11224,20 +11291,20 @@ "type": "github" } ], - "time": "2021-11-11T14:18:36+00:00" + "time": "2024-03-02T06:33:00+00:00" }, { "name": "sebastian/global-state", - "version": "5.0.5", + "version": "5.0.7", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/global-state.git", - "reference": "0ca8db5a5fc9c8646244e629625ac486fa286bf2" + "reference": "bca7df1f32ee6fe93b4d4a9abbf69e13a4ada2c9" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/global-state/zipball/0ca8db5a5fc9c8646244e629625ac486fa286bf2", - "reference": "0ca8db5a5fc9c8646244e629625ac486fa286bf2", + "url": "https://api.github.com/repos/sebastianbergmann/global-state/zipball/bca7df1f32ee6fe93b4d4a9abbf69e13a4ada2c9", + "reference": "bca7df1f32ee6fe93b4d4a9abbf69e13a4ada2c9", "shasum": "" }, "require": { @@ -11280,7 +11347,7 @@ ], "support": { "issues": "https://github.com/sebastianbergmann/global-state/issues", - "source": "https://github.com/sebastianbergmann/global-state/tree/5.0.5" + "source": "https://github.com/sebastianbergmann/global-state/tree/5.0.7" }, "funding": [ { @@ -11288,24 +11355,24 @@ "type": "github" } ], - "time": "2022-02-14T08:28:10+00:00" + "time": "2024-03-02T06:35:11+00:00" }, { "name": "sebastian/lines-of-code", - "version": "1.0.3", + "version": "1.0.4", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/lines-of-code.git", - "reference": "c1c2e997aa3146983ed888ad08b15470a2e22ecc" + "reference": "e1e4a170560925c26d424b6a03aed157e7dcc5c5" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/lines-of-code/zipball/c1c2e997aa3146983ed888ad08b15470a2e22ecc", - "reference": "c1c2e997aa3146983ed888ad08b15470a2e22ecc", + "url": "https://api.github.com/repos/sebastianbergmann/lines-of-code/zipball/e1e4a170560925c26d424b6a03aed157e7dcc5c5", + "reference": "e1e4a170560925c26d424b6a03aed157e7dcc5c5", "shasum": "" }, "require": { - "nikic/php-parser": "^4.6", + "nikic/php-parser": "^4.18 || ^5.0", "php": ">=7.3" }, "require-dev": { @@ -11337,7 +11404,7 @@ "homepage": "https://github.com/sebastianbergmann/lines-of-code", "support": { "issues": "https://github.com/sebastianbergmann/lines-of-code/issues", - "source": "https://github.com/sebastianbergmann/lines-of-code/tree/1.0.3" + "source": "https://github.com/sebastianbergmann/lines-of-code/tree/1.0.4" }, "funding": [ { @@ -11345,7 +11412,7 @@ "type": "github" } ], - "time": "2020-11-28T06:42:11+00:00" + "time": "2023-12-22T06:20:34+00:00" }, { "name": "sebastian/object-enumerator", @@ -11461,16 +11528,16 @@ }, { "name": "sebastian/recursion-context", - "version": "4.0.4", + "version": "4.0.5", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/recursion-context.git", - "reference": "cd9d8cf3c5804de4341c283ed787f099f5506172" + "reference": "e75bd0f07204fec2a0af9b0f3cfe97d05f92efc1" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/recursion-context/zipball/cd9d8cf3c5804de4341c283ed787f099f5506172", - "reference": "cd9d8cf3c5804de4341c283ed787f099f5506172", + "url": "https://api.github.com/repos/sebastianbergmann/recursion-context/zipball/e75bd0f07204fec2a0af9b0f3cfe97d05f92efc1", + "reference": "e75bd0f07204fec2a0af9b0f3cfe97d05f92efc1", "shasum": "" }, "require": { @@ -11509,10 +11576,10 @@ } ], "description": "Provides functionality to recursively process PHP variables", - "homepage": "http://www.github.com/sebastianbergmann/recursion-context", + "homepage": "https://github.com/sebastianbergmann/recursion-context", "support": { "issues": "https://github.com/sebastianbergmann/recursion-context/issues", - "source": "https://github.com/sebastianbergmann/recursion-context/tree/4.0.4" + "source": "https://github.com/sebastianbergmann/recursion-context/tree/4.0.5" }, "funding": [ { @@ -11520,20 +11587,20 @@ "type": "github" } ], - "time": "2020-10-26T13:17:30+00:00" + "time": "2023-02-03T06:07:39+00:00" }, { "name": "sebastian/resource-operations", - "version": "3.0.3", + "version": "3.0.4", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/resource-operations.git", - "reference": "0f4443cb3a1d92ce809899753bc0d5d5a8dd19a8" + "reference": "05d5692a7993ecccd56a03e40cd7e5b09b1d404e" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/resource-operations/zipball/0f4443cb3a1d92ce809899753bc0d5d5a8dd19a8", - "reference": "0f4443cb3a1d92ce809899753bc0d5d5a8dd19a8", + "url": "https://api.github.com/repos/sebastianbergmann/resource-operations/zipball/05d5692a7993ecccd56a03e40cd7e5b09b1d404e", + "reference": "05d5692a7993ecccd56a03e40cd7e5b09b1d404e", "shasum": "" }, "require": { @@ -11545,7 +11612,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-master": "3.0-dev" + "dev-main": "3.0-dev" } }, "autoload": { @@ -11566,8 +11633,7 @@ "description": "Provides a list of PHP built-in functions that operate on resources", "homepage": "https://www.github.com/sebastianbergmann/resource-operations", "support": { - "issues": "https://github.com/sebastianbergmann/resource-operations/issues", - "source": "https://github.com/sebastianbergmann/resource-operations/tree/3.0.3" + "source": "https://github.com/sebastianbergmann/resource-operations/tree/3.0.4" }, "funding": [ { @@ -11575,20 +11641,20 @@ "type": "github" } ], - "time": "2020-09-28T06:45:17+00:00" + "time": "2024-03-14T16:00:52+00:00" }, { "name": "sebastian/type", - "version": "3.0.0", + "version": "3.2.1", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/type.git", - "reference": "b233b84bc4465aff7b57cf1c4bc75c86d00d6dad" + "reference": "75e2c2a32f5e0b3aef905b9ed0b179b953b3d7c7" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/type/zipball/b233b84bc4465aff7b57cf1c4bc75c86d00d6dad", - "reference": "b233b84bc4465aff7b57cf1c4bc75c86d00d6dad", + "url": "https://api.github.com/repos/sebastianbergmann/type/zipball/75e2c2a32f5e0b3aef905b9ed0b179b953b3d7c7", + "reference": "75e2c2a32f5e0b3aef905b9ed0b179b953b3d7c7", "shasum": "" }, "require": { @@ -11600,7 +11666,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-master": "3.0-dev" + "dev-master": "3.2-dev" } }, "autoload": { @@ -11623,7 +11689,7 @@ "homepage": "https://github.com/sebastianbergmann/type", "support": { "issues": "https://github.com/sebastianbergmann/type/issues", - "source": "https://github.com/sebastianbergmann/type/tree/3.0.0" + "source": "https://github.com/sebastianbergmann/type/tree/3.2.1" }, "funding": [ { @@ -11631,7 +11697,7 @@ "type": "github" } ], - "time": "2022-03-15T09:54:48+00:00" + "time": "2023-02-03T06:13:03+00:00" }, { "name": "sebastian/version", @@ -11688,31 +11754,27 @@ }, { "name": "symfony/browser-kit", - "version": "v4.4.44", + "version": "v6.3.12", "source": { "type": "git", "url": "https://github.com/symfony/browser-kit.git", - "reference": "2a1ff40723ef6b29c8229a860a9c8f815ad7dbbb" + "reference": "867868fca3a0939236ab89600f9480eee74843ce" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/browser-kit/zipball/2a1ff40723ef6b29c8229a860a9c8f815ad7dbbb", - "reference": "2a1ff40723ef6b29c8229a860a9c8f815ad7dbbb", + "url": "https://api.github.com/repos/symfony/browser-kit/zipball/867868fca3a0939236ab89600f9480eee74843ce", + "reference": "867868fca3a0939236ab89600f9480eee74843ce", "shasum": "" }, "require": { - "php": ">=7.1.3", - "symfony/dom-crawler": "^3.4|^4.0|^5.0", - "symfony/polyfill-php80": "^1.16" + "php": ">=8.1", + "symfony/dom-crawler": "^5.4|^6.0" }, "require-dev": { - "symfony/css-selector": "^3.4|^4.0|^5.0", - "symfony/http-client": "^4.3|^5.0", - "symfony/mime": "^4.3|^5.0", - "symfony/process": "^3.4|^4.0|^5.0" - }, - "suggest": { - "symfony/process": "" + "symfony/css-selector": "^5.4|^6.0", + "symfony/http-client": "^5.4|^6.0", + "symfony/mime": "^5.4|^6.0", + "symfony/process": "^5.4|^6.0" }, "type": "library", "autoload": { @@ -11740,7 +11802,7 @@ "description": "Simulates the behavior of a web browser, allowing you to make requests, click on links and submit forms programmatically", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/browser-kit/tree/v4.4.44" + "source": "https://github.com/symfony/browser-kit/tree/v6.3.12" }, "funding": [ { @@ -11756,25 +11818,24 @@ "type": "tidelift" } ], - "time": "2022-07-25T12:56:14+00:00" + "time": "2024-01-23T14:35:58+00:00" }, { "name": "symfony/css-selector", - "version": "v4.4.44", + "version": "v6.3.12", "source": { "type": "git", "url": "https://github.com/symfony/css-selector.git", - "reference": "bd0a6737e48de45b4b0b7b6fc98c78404ddceaed" + "reference": "7bb2f446287397cc41ebd9acfa0755b16db05fbc" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/css-selector/zipball/bd0a6737e48de45b4b0b7b6fc98c78404ddceaed", - "reference": "bd0a6737e48de45b4b0b7b6fc98c78404ddceaed", + "url": "https://api.github.com/repos/symfony/css-selector/zipball/7bb2f446287397cc41ebd9acfa0755b16db05fbc", + "reference": "7bb2f446287397cc41ebd9acfa0755b16db05fbc", "shasum": "" }, "require": { - "php": ">=7.1.3", - "symfony/polyfill-php80": "^1.16" + "php": ">=8.1" }, "type": "library", "autoload": { @@ -11806,7 +11867,7 @@ "description": "Converts CSS selectors to XPath expressions", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/css-selector/tree/v4.4.44" + "source": "https://github.com/symfony/css-selector/tree/v6.3.12" }, "funding": [ { @@ -11822,42 +11883,37 @@ "type": "tidelift" } ], - "time": "2022-06-27T13:16:42+00:00" + "time": "2024-01-23T14:35:58+00:00" }, { "name": "symfony/debug-bundle", - "version": "v4.4.37", + "version": "v6.3.12", "source": { "type": "git", "url": "https://github.com/symfony/debug-bundle.git", - "reference": "f21cce588be146c9111cb9041f0784a6534fd648" + "reference": "a7c57aecdb226c5293675e51c2fd6a7ed9a8a9a4" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/debug-bundle/zipball/f21cce588be146c9111cb9041f0784a6534fd648", - "reference": "f21cce588be146c9111cb9041f0784a6534fd648", + "url": "https://api.github.com/repos/symfony/debug-bundle/zipball/a7c57aecdb226c5293675e51c2fd6a7ed9a8a9a4", + "reference": "a7c57aecdb226c5293675e51c2fd6a7ed9a8a9a4", "shasum": "" }, "require": { "ext-xml": "*", - "php": ">=7.1.3", - "symfony/http-kernel": "^3.4|^4.0|^5.0", - "symfony/polyfill-php80": "^1.16", - "symfony/twig-bridge": "^3.4|^4.0|^5.0", - "symfony/var-dumper": "^4.1.1|^5.0" + "php": ">=8.1", + "symfony/dependency-injection": "^5.4|^6.0", + "symfony/http-kernel": "^5.4|^6.0", + "symfony/twig-bridge": "^5.4|^6.0", + "symfony/var-dumper": "^5.4|^6.0" }, "conflict": { - "symfony/config": "<4.2", - "symfony/dependency-injection": "<3.4" + "symfony/config": "<5.4", + "symfony/dependency-injection": "<5.4" }, "require-dev": { - "symfony/config": "^4.2|^5.0", - "symfony/dependency-injection": "^3.4|^4.0|^5.0", - "symfony/web-profiler-bundle": "^3.4|^4.0|^5.0" - }, - "suggest": { - "symfony/config": "For service container configuration", - "symfony/dependency-injection": "For using as a service from the container" + "symfony/config": "^5.4|^6.0", + "symfony/web-profiler-bundle": "^5.4|^6.0" }, "type": "symfony-bundle", "autoload": { @@ -11885,7 +11941,7 @@ "description": "Provides a tight integration of the Symfony VarDumper component and the ServerLogCommand from MonologBridge into the Symfony full-stack framework", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/debug-bundle/tree/v4.4.37" + "source": "https://github.com/symfony/debug-bundle/tree/v6.3.12" }, "funding": [ { @@ -11901,37 +11957,30 @@ "type": "tidelift" } ], - "time": "2022-01-02T09:41:36+00:00" + "time": "2024-01-23T14:35:58+00:00" }, { "name": "symfony/dom-crawler", - "version": "v4.4.44", + "version": "v6.3.12", "source": { "type": "git", "url": "https://github.com/symfony/dom-crawler.git", - "reference": "53cee1108a9748682b1268bc1a76a3d6a665ede2" + "reference": "e412abb0a443dc2c29decb96cac476aed7b8234b" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/dom-crawler/zipball/53cee1108a9748682b1268bc1a76a3d6a665ede2", - "reference": "53cee1108a9748682b1268bc1a76a3d6a665ede2", + "url": "https://api.github.com/repos/symfony/dom-crawler/zipball/e412abb0a443dc2c29decb96cac476aed7b8234b", + "reference": "e412abb0a443dc2c29decb96cac476aed7b8234b", "shasum": "" }, "require": { - "php": ">=7.1.3", + "masterminds/html5": "^2.6", + "php": ">=8.1", "symfony/polyfill-ctype": "~1.8", - "symfony/polyfill-mbstring": "~1.0", - "symfony/polyfill-php80": "^1.16" - }, - "conflict": { - "masterminds/html5": "<2.6" + "symfony/polyfill-mbstring": "~1.0" }, "require-dev": { - "masterminds/html5": "^2.6", - "symfony/css-selector": "^3.4|^4.0|^5.0" - }, - "suggest": { - "symfony/css-selector": "" + "symfony/css-selector": "^5.4|^6.0" }, "type": "library", "autoload": { @@ -11959,7 +12008,7 @@ "description": "Eases DOM navigation for HTML and XML documents", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/dom-crawler/tree/v4.4.44" + "source": "https://github.com/symfony/dom-crawler/tree/v6.3.12" }, "funding": [ { @@ -11975,51 +12024,54 @@ "type": "tidelift" } ], - "time": "2022-06-27T13:16:42+00:00" + "time": "2024-01-23T14:35:58+00:00" }, { "name": "symfony/maker-bundle", - "version": "v1.39.0", + "version": "v1.53.0", "source": { "type": "git", "url": "https://github.com/symfony/maker-bundle.git", - "reference": "f2b99ba44e22a44fcf724affa53b5539b25fde90" + "reference": "8d2f3f96704766837548d177fe3ae39ae94822d9" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/maker-bundle/zipball/f2b99ba44e22a44fcf724affa53b5539b25fde90", - "reference": "f2b99ba44e22a44fcf724affa53b5539b25fde90", + "url": "https://api.github.com/repos/symfony/maker-bundle/zipball/8d2f3f96704766837548d177fe3ae39ae94822d9", + "reference": "8d2f3f96704766837548d177fe3ae39ae94822d9", "shasum": "" }, "require": { - "doctrine/inflector": "^1.2|^2.0", - "nikic/php-parser": "^4.11", - "php": ">=7.1.3", - "symfony/config": "^4.4|^5.0|^6.0", - "symfony/console": "^4.4|^5.0|^6.0", - "symfony/dependency-injection": "^4.4|^5.0|^6.0", + "doctrine/inflector": "^2.0", + "nikic/php-parser": "^4.18|^5.0", + "php": ">=8.1", + "symfony/config": "^6.3|^7.0", + "symfony/console": "^6.3|^7.0", + "symfony/dependency-injection": "^6.3|^7.0", "symfony/deprecation-contracts": "^2.2|^3", - "symfony/filesystem": "^4.4|^5.0|^6.0", - "symfony/finder": "^4.4|^5.0|^6.0", - "symfony/framework-bundle": "^4.4|^5.0|^6.0", - "symfony/http-kernel": "^4.4|^5.0|^6.0" + "symfony/filesystem": "^6.3|^7.0", + "symfony/finder": "^6.3|^7.0", + "symfony/framework-bundle": "^6.3|^7.0", + "symfony/http-kernel": "^6.3|^7.0", + "symfony/process": "^6.3|^7.0" + }, + "conflict": { + "doctrine/doctrine-bundle": "<2.4", + "doctrine/orm": "<2.10" }, "require-dev": { "composer/semver": "^3.0", - "doctrine/doctrine-bundle": "^1.12.3|^2.0", - "doctrine/orm": "^2.3", - "symfony/http-client": "^4.4|^5.0|^6.0", - "symfony/phpunit-bridge": "^4.4|^5.0|^6.0", - "symfony/polyfill-php80": "^1.16.0", - "symfony/process": "^4.4|^5.0|^6.0", - "symfony/security-core": "^4.4|^5.0|^6.0", - "symfony/yaml": "^4.4|^5.0|^6.0", - "twig/twig": "^2.0|^3.0" + "doctrine/doctrine-bundle": "^2.5.0", + "doctrine/orm": "^2.10.0", + "symfony/http-client": "^6.3|^7.0", + "symfony/phpunit-bridge": "^6.3|^7.0", + "symfony/security-core": "^6.3|^7.0", + "symfony/yaml": "^6.3|^7.0", + "twig/twig": "^3.0|^4.x-dev" }, "type": "symfony-bundle", "extra": { "branch-alias": { - "dev-main": "1.0-dev" + "dev-main": "1.x-dev" } }, "autoload": { @@ -12041,13 +12093,14 @@ "homepage": "https://symfony.com/doc/current/bundles/SymfonyMakerBundle/index.html", "keywords": [ "code generator", + "dev", "generator", "scaffold", "scaffolding" ], "support": { "issues": "https://github.com/symfony/maker-bundle/issues", - "source": "https://github.com/symfony/maker-bundle/tree/v1.39.0" + "source": "https://github.com/symfony/maker-bundle/tree/v1.53.0" }, "funding": [ { @@ -12063,20 +12116,20 @@ "type": "tidelift" } ], - "time": "2022-04-21T18:16:11+00:00" + "time": "2024-02-01T10:05:38+00:00" }, { "name": "symfony/phpunit-bridge", - "version": "v6.1.3", + "version": "v6.4.7", "source": { "type": "git", "url": "https://github.com/symfony/phpunit-bridge.git", - "reference": "75c2fa71d049c1f48e39d208c0cefba97e66335a" + "reference": "a33ca737283c76617c4089a8425c7785b344e283" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/phpunit-bridge/zipball/75c2fa71d049c1f48e39d208c0cefba97e66335a", - "reference": "75c2fa71d049c1f48e39d208c0cefba97e66335a", + "url": "https://api.github.com/repos/symfony/phpunit-bridge/zipball/a33ca737283c76617c4089a8425c7785b344e283", + "reference": "a33ca737283c76617c4089a8425c7785b344e283", "shasum": "" }, "require": { @@ -12086,11 +12139,9 @@ "phpunit/phpunit": "<7.5|9.1.2" }, "require-dev": { - "symfony/deprecation-contracts": "^2.1|^3.0", - "symfony/error-handler": "^5.4|^6.0" - }, - "suggest": { - "symfony/error-handler": "For tracking deprecated interfaces usages at runtime with DebugClassLoader" + "symfony/deprecation-contracts": "^2.5|^3.0", + "symfony/error-handler": "^5.4|^6.0|^7.0", + "symfony/polyfill-php81": "^1.27" }, "bin": [ "bin/simple-phpunit" @@ -12130,7 +12181,83 @@ "description": "Provides utilities for PHPUnit, especially user deprecation notices management", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/phpunit-bridge/tree/v6.1.3" + "source": "https://github.com/symfony/phpunit-bridge/tree/v6.4.7" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2024-04-18T09:22:46+00:00" + }, + { + "name": "symfony/polyfill-php81", + "version": "v1.29.0", + "source": { + "type": "git", + "url": "https://github.com/symfony/polyfill-php81.git", + "reference": "c565ad1e63f30e7477fc40738343c62b40bc672d" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/polyfill-php81/zipball/c565ad1e63f30e7477fc40738343c62b40bc672d", + "reference": "c565ad1e63f30e7477fc40738343c62b40bc672d", + "shasum": "" + }, + "require": { + "php": ">=7.1" + }, + "type": "library", + "extra": { + "thanks": { + "name": "symfony/polyfill", + "url": "https://github.com/symfony/polyfill" + } + }, + "autoload": { + "files": [ + "bootstrap.php" + ], + "psr-4": { + "Symfony\\Polyfill\\Php81\\": "" + }, + "classmap": [ + "Resources/stubs" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Nicolas Grekas", + "email": "p@tchwork.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Symfony polyfill backporting some PHP 8.1+ features to lower PHP versions", + "homepage": "https://symfony.com", + "keywords": [ + "compatibility", + "polyfill", + "portable", + "shim" + ], + "support": { + "source": "https://github.com/symfony/polyfill-php81/tree/v1.29.0" }, "funding": [ { @@ -12146,42 +12273,41 @@ "type": "tidelift" } ], - "time": "2022-07-28T13:40:41+00:00" + "time": "2024-01-29T20:11:03+00:00" }, { "name": "symfony/web-profiler-bundle", - "version": "v4.4.44", + "version": "v6.3.12", "source": { "type": "git", "url": "https://github.com/symfony/web-profiler-bundle.git", - "reference": "346128217ae50ac62d32b2d42257b90598dc9fc2" + "reference": "920efdd0f53f088b44963cf89368038ee39719b9" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/web-profiler-bundle/zipball/346128217ae50ac62d32b2d42257b90598dc9fc2", - "reference": "346128217ae50ac62d32b2d42257b90598dc9fc2", + "url": "https://api.github.com/repos/symfony/web-profiler-bundle/zipball/920efdd0f53f088b44963cf89368038ee39719b9", + "reference": "920efdd0f53f088b44963cf89368038ee39719b9", "shasum": "" }, "require": { - "php": ">=7.1.3", - "symfony/config": "^4.2|^5.0", - "symfony/framework-bundle": "^4.4|^5.0", - "symfony/http-kernel": "^4.4", - "symfony/polyfill-php80": "^1.16", - "symfony/routing": "^4.3|^5.0", - "symfony/twig-bundle": "^4.2|^5.0", - "twig/twig": "^1.43|^2.13|^3.0.4" + "php": ">=8.1", + "symfony/config": "^5.4|^6.0", + "symfony/framework-bundle": "^5.4|^6.0,<6.4", + "symfony/http-kernel": "^6.3", + "symfony/routing": "^5.4|^6.0", + "symfony/twig-bundle": "^5.4|^6.0", + "twig/twig": "^2.13|^3.0.4" }, "conflict": { - "symfony/form": "<4.3", - "symfony/messenger": "<4.2" + "symfony/form": "<5.4", + "symfony/mailer": "<5.4", + "symfony/messenger": "<5.4" }, "require-dev": { - "symfony/browser-kit": "^4.3|^5.0", - "symfony/console": "^4.3|^5.0", - "symfony/css-selector": "^3.4|^4.0|^5.0", - "symfony/dependency-injection": "^3.4|^4.0|^5.0", - "symfony/stopwatch": "^3.4|^4.0|^5.0" + "symfony/browser-kit": "^5.4|^6.0", + "symfony/console": "^5.4|^6.0", + "symfony/css-selector": "^5.4|^6.0", + "symfony/stopwatch": "^5.4|^6.0" }, "type": "symfony-bundle", "autoload": { @@ -12208,8 +12334,11 @@ ], "description": "Provides a development tool that gives detailed information about the execution of any request", "homepage": "https://symfony.com", + "keywords": [ + "dev" + ], "support": { - "source": "https://github.com/symfony/web-profiler-bundle/tree/v4.4.44" + "source": "https://github.com/symfony/web-profiler-bundle/tree/v6.3.12" }, "funding": [ { @@ -12225,20 +12354,20 @@ "type": "tidelift" } ], - "time": "2022-07-20T09:59:04+00:00" + "time": "2024-01-23T16:21:43+00:00" }, { "name": "theseer/tokenizer", - "version": "1.2.1", + "version": "1.2.3", "source": { "type": "git", "url": "https://github.com/theseer/tokenizer.git", - "reference": "34a41e998c2183e22995f158c581e7b5e755ab9e" + "reference": "737eda637ed5e28c3413cb1ebe8bb52cbf1ca7a2" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/theseer/tokenizer/zipball/34a41e998c2183e22995f158c581e7b5e755ab9e", - "reference": "34a41e998c2183e22995f158c581e7b5e755ab9e", + "url": "https://api.github.com/repos/theseer/tokenizer/zipball/737eda637ed5e28c3413cb1ebe8bb52cbf1ca7a2", + "reference": "737eda637ed5e28c3413cb1ebe8bb52cbf1ca7a2", "shasum": "" }, "require": { @@ -12267,7 +12396,7 @@ "description": "A small library for converting tokenized PHP source code into XML and potentially other formats", "support": { "issues": "https://github.com/theseer/tokenizer/issues", - "source": "https://github.com/theseer/tokenizer/tree/1.2.1" + "source": "https://github.com/theseer/tokenizer/tree/1.2.3" }, "funding": [ { @@ -12275,23 +12404,21 @@ "type": "github" } ], - "time": "2021-07-28T10:34:58+00:00" + "time": "2024-03-03T12:36:25+00:00" } ], "aliases": [], "minimum-stability": "stable", - "stability-flags": { - "ubermichael/nines": 20 - }, + "stability-flags": [], "prefer-stable": false, "prefer-lowest": false, "platform": { - "php": ">=7.4", + "php": "^8.2", "ext-ctype": "*", "ext-iconv": "*", "ext-imagick": "*", "ext-json": "*" }, "platform-dev": [], - "plugin-api-version": "2.3.0" + "plugin-api-version": "2.6.0" } diff --git a/config/bootstrap.php b/config/bootstrap.php deleted file mode 100644 index 55560fb..0000000 --- a/config/bootstrap.php +++ /dev/null @@ -1,23 +0,0 @@ -=1.2) -if (is_array($env = @include dirname(__DIR__).'/.env.local.php') && (!isset($env['APP_ENV']) || ($_SERVER['APP_ENV'] ?? $_ENV['APP_ENV'] ?? $env['APP_ENV']) === $env['APP_ENV'])) { - (new Dotenv(false))->populate($env); -} else { - // load all the .env files - (new Dotenv(false))->loadEnv(dirname(__DIR__).'/.env'); -} - -$_SERVER += $_ENV; -$_SERVER['APP_ENV'] = $_ENV['APP_ENV'] = ($_SERVER['APP_ENV'] ?? $_ENV['APP_ENV'] ?? null) ?: 'dev'; -$_SERVER['APP_DEBUG'] = $_SERVER['APP_DEBUG'] ?? $_ENV['APP_DEBUG'] ?? 'prod' !== $_SERVER['APP_ENV']; -$_SERVER['APP_DEBUG'] = $_ENV['APP_DEBUG'] = (int) $_SERVER['APP_DEBUG'] || filter_var($_SERVER['APP_DEBUG'], FILTER_VALIDATE_BOOLEAN) ? '1' : '0'; diff --git a/config/bundles.php b/config/bundles.php index 6bc322d..71e1476 100644 --- a/config/bundles.php +++ b/config/bundles.php @@ -17,10 +17,8 @@ Tetranz\Select2EntityBundle\TetranzSelect2EntityBundle::class => ['all' => true], Doctrine\Bundle\FixturesBundle\DoctrineFixturesBundle::class => ['dev' => true, 'test' => true], DAMA\DoctrineTestBundle\DAMADoctrineTestBundle::class => ['test' => true], - Nines\BlogBundle\NinesBlogBundle::class => ['all' => true], Nines\EditorBundle\NinesEditorBundle::class => ['all' => true], - Nines\MakerBundle\NinesMakerBundle::class => ['dev' => true], Nines\MediaBundle\NinesMediaBundle::class => ['all' => true], Nines\UserBundle\NinesUserBundle::class => ['all' => true], Nines\UtilBundle\NinesUtilBundle::class => ['all' => true], diff --git a/config/deploy.yaml.dist b/config/deploy.yaml.dist deleted file mode 100644 index 44551e7..0000000 --- a/config/deploy.yaml.dist +++ /dev/null @@ -1,29 +0,0 @@ - -# define the hosts -dhil.lib.sfu.ca: - stage: dhil - become: ~ - deploy_path: ~ - user: ~ - ssh_multiplexing: false - -# The settings key must start with a dot(.) to prevent it being treated as -# a host in the inventory. -.settings: - application: bep - repository: ~ - branch: main - shared_files: - - .env.local - shared_dirs: - - var/log - - var/sessions - - public/images - writable_dirs: - - var/log - - var/sessions - - var/cache - - public/images - context: system_u:object_r:httpd_sys_rw_content_t:s0 - composer_options: 'install --no-progress --optimize-autoloader --no-interaction' - site_path: /mvm diff --git a/config/packages/dama_doctrine_test_bundle.yaml b/config/packages/dama_doctrine_test_bundle.yaml new file mode 100644 index 0000000..3482cba --- /dev/null +++ b/config/packages/dama_doctrine_test_bundle.yaml @@ -0,0 +1,5 @@ +when@test: + dama_doctrine_test: + enable_static_connection: true + enable_static_meta_data_cache: true + enable_static_query_cache: true diff --git a/config/packages/debug.yaml b/config/packages/debug.yaml new file mode 100644 index 0000000..ad874af --- /dev/null +++ b/config/packages/debug.yaml @@ -0,0 +1,5 @@ +when@dev: + debug: + # Forwards VarDumper Data clones to a centralized server allowing to inspect dumps on CLI or in your browser. + # See the "server:dump" command to start a new server. + dump_destination: "tcp://%env(VAR_DUMPER_SERVER)%" diff --git a/config/packages/dev/debug.yaml b/config/packages/dev/debug.yaml deleted file mode 100644 index 26d4e53..0000000 --- a/config/packages/dev/debug.yaml +++ /dev/null @@ -1,4 +0,0 @@ -debug: - # Forwards VarDumper Data clones to a centralized server allowing to inspect dumps on CLI or in your browser. - # See the "server:dump" command to start a new server. - dump_destination: "tcp://%env(VAR_DUMPER_SERVER)%" diff --git a/config/packages/dev/monolog.yaml b/config/packages/dev/monolog.yaml deleted file mode 100644 index d66ee7b..0000000 --- a/config/packages/dev/monolog.yaml +++ /dev/null @@ -1,8 +0,0 @@ -monolog: - handlers: - main: - type: rotating_file - path: "%kernel.logs_dir%/%kernel.environment%.log" - level: warning - channels: ["!event", "!doctrine", "!console", "!translation"] - max_files: 1 diff --git a/config/packages/dev/web_profiler.yaml b/config/packages/dev/web_profiler.yaml deleted file mode 100644 index e92166a..0000000 --- a/config/packages/dev/web_profiler.yaml +++ /dev/null @@ -1,6 +0,0 @@ -web_profiler: - toolbar: true - intercept_redirects: false - -framework: - profiler: { only_exceptions: false } diff --git a/config/packages/doctrine.yaml b/config/packages/doctrine.yaml index e8abe58..d13b097 100644 --- a/config/packages/doctrine.yaml +++ b/config/packages/doctrine.yaml @@ -13,7 +13,36 @@ doctrine: mappings: App: is_bundle: false - type: annotation + type: attribute dir: '%kernel.project_dir%/src/Entity' prefix: 'App\Entity' alias: App + +when@test: + doctrine: + dbal: + url: '%env(resolve:DATABASE_URL)%' + # "TEST_TOKEN" is typically set by ParaTest + dbname_suffix: '_test%env(default::TEST_TOKEN)%' + +when@prod: + doctrine: + orm: + auto_generate_proxy_classes: false + metadata_cache_driver: + type: pool + pool: doctrine.system_cache_pool + query_cache_driver: + type: pool + pool: doctrine.system_cache_pool + result_cache_driver: + type: pool + pool: doctrine.result_cache_pool + + framework: + cache: + pools: + doctrine.result_cache_pool: + adapter: cache.app + doctrine.system_cache_pool: + adapter: cache.system diff --git a/config/packages/framework.yaml b/config/packages/framework.yaml index 6efd824..f6d022e 100644 --- a/config/packages/framework.yaml +++ b/config/packages/framework.yaml @@ -3,13 +3,16 @@ framework: csrf_protection: true http_method_override: true + trusted_proxies: '%env(TRUSTED_PROXIES)%' + trusted_headers: ['x-forwarded-for', 'x-forwarded-host', 'x-forwarded-proto', 'x-forwarded-port', 'x-forwarded-prefix'] + # Enables session support. Note that the session will ONLY be started if you read or write from it. # Remove or comment this section to explicitly disable session support. session: handler_id: null cookie_secure: auto cookie_samesite: lax - name: PHP_SESSION_bep + name: PHP_SESSION_BEP cookie_path: '%router.request_context.base_url%' cookie_domain: '%router.request_context.host%' @@ -19,3 +22,9 @@ framework: log: true error_controller: Nines\UtilBundle\Controller\ErrorController::show + +when@test: + framework: + test: true + session: + storage_factory_id: session.storage.factory.mock_file \ No newline at end of file diff --git a/config/packages/knp_menu.yaml b/config/packages/knp_menu.yaml new file mode 100644 index 0000000..03edd82 --- /dev/null +++ b/config/packages/knp_menu.yaml @@ -0,0 +1,3 @@ +knp_menu: + twig: + template: '@KnpMenu/menu.html.twig' diff --git a/config/packages/knp_paginator.yaml b/config/packages/knp_paginator.yaml index f0a195a..346daba 100644 --- a/config/packages/knp_paginator.yaml +++ b/config/packages/knp_paginator.yaml @@ -6,5 +6,5 @@ knp_paginator: sort_direction_name: direction # sort direction query parameter name distinct: true # ensure distinct results, useful when ORM queries are using GROUP BY statements template: - pagination: "@KnpPaginator/Pagination/twitter_bootstrap_v3_pagination.html.twig" # sliding pagination controls template - sortable: "@KnpPaginator/Pagination/sortable_link.html.twig" # sort link template \ No newline at end of file + pagination: "@NinesUtil/pagination/bootstrap_v5_pagination.html.twig" + sortable: "@KnpPaginator/Pagination/sortable_link.html.twig" \ No newline at end of file diff --git a/config/packages/monolog.yaml b/config/packages/monolog.yaml new file mode 100644 index 0000000..e98f89c --- /dev/null +++ b/config/packages/monolog.yaml @@ -0,0 +1,39 @@ +monolog: + channels: + - deprecation # Deprecations are logged in the dedicated "deprecation" channel when it exists + +when@dev: + monolog: + handlers: + main: + type: rotating_file + path: "%kernel.logs_dir%/%kernel.environment%.log" + # level: debug + # level: warning + level: notice + channels: ["!event", "!doctrine", "!console", "!translation"] + max_files: 1 + +when@test: + monolog: + handlers: + main: + type: rotating_file + max_files: 1 + path: "%kernel.logs_dir%/%kernel.environment%.log" + # level: debug + level: warning + channels: ['!event', '!doctrine', '!console', '!translation'] + console: + type: console + channels: ['!event', '!doctrine', '!console', '!translation'] + +when@prod: + monolog: + handlers: + main: + type: rotating_file + path: "%kernel.logs_dir%/%kernel.environment%.log" + level: notice + channels: ["!event", "!doctrine", "!console", "!translation"] + max_files: 30 diff --git a/config/packages/nines_editor.yaml b/config/packages/nines_editor.yaml deleted file mode 100644 index ba6ee21..0000000 --- a/config/packages/nines_editor.yaml +++ /dev/null @@ -1,2 +0,0 @@ -nines_editor: - upload_dir: public/uploads/tinymce diff --git a/config/packages/nines_user.yaml b/config/packages/nines_user.yaml index 021cdd1..29c33bd 100644 --- a/config/packages/nines_user.yaml +++ b/config/packages/nines_user.yaml @@ -3,8 +3,6 @@ nines_user: - ROLE_ADMIN - ROLE_BLOG_ADMIN - ROLE_CONTENT_ADMIN - - ROLE_DC_ADMIN - - ROLE_FEEDBACK_ADMIN - ROLE_MEDIA_ADMIN - ROLE_USER_ADMIN after_login_route: homepage diff --git a/config/packages/prod/deprecations.yaml b/config/packages/prod/deprecations.yaml deleted file mode 100644 index 920a061..0000000 --- a/config/packages/prod/deprecations.yaml +++ /dev/null @@ -1,8 +0,0 @@ -# As of Symfony 5.1, deprecations are logged in the dedicated "deprecation" channel when it exists -#monolog: -# channels: [deprecation] -# handlers: -# deprecation: -# type: stream -# channels: [deprecation] -# path: "%kernel.logs_dir%/%kernel.environment%.deprecations.log" diff --git a/config/packages/prod/doctrine.yaml b/config/packages/prod/doctrine.yaml deleted file mode 100644 index 084f59a..0000000 --- a/config/packages/prod/doctrine.yaml +++ /dev/null @@ -1,20 +0,0 @@ -doctrine: - orm: - auto_generate_proxy_classes: false - metadata_cache_driver: - type: pool - pool: doctrine.system_cache_pool - query_cache_driver: - type: pool - pool: doctrine.system_cache_pool - result_cache_driver: - type: pool - pool: doctrine.result_cache_pool - -framework: - cache: - pools: - doctrine.result_cache_pool: - adapter: cache.app - doctrine.system_cache_pool: - adapter: cache.system diff --git a/config/packages/prod/monolog.yaml b/config/packages/prod/monolog.yaml deleted file mode 100644 index d9faa74..0000000 --- a/config/packages/prod/monolog.yaml +++ /dev/null @@ -1,8 +0,0 @@ -monolog: - handlers: - main: - type: rotating_file - path: "%kernel.logs_dir%/%kernel.environment%.log" - level: warning - channels: ["!event", "!doctrine", "!console", "!translation"] - max_files: 30 diff --git a/config/packages/prod/routing.yaml b/config/packages/prod/routing.yaml deleted file mode 100644 index b3e6a0a..0000000 --- a/config/packages/prod/routing.yaml +++ /dev/null @@ -1,3 +0,0 @@ -framework: - router: - strict_requirements: null diff --git a/config/packages/routing.yaml b/config/packages/routing.yaml index 7e97762..a97fce7 100644 --- a/config/packages/routing.yaml +++ b/config/packages/routing.yaml @@ -1,3 +1,13 @@ framework: router: utf8: true + + # Configure how to generate URLs in non-HTTP contexts, such as CLI commands. + # See https://symfony.com/doc/current/routing.html#generating-urls-in-commands + #default_uri: http://localhost + default_uri: '%router.request_context.scheme%://%router.request_context.host%%router.request_context.base_url%' + +when@prod: + framework: + router: + strict_requirements: null \ No newline at end of file diff --git a/config/packages/security.yaml b/config/packages/security.yaml index 9aec245..1650d40 100644 --- a/config/packages/security.yaml +++ b/config/packages/security.yaml @@ -1,29 +1,30 @@ security: - encoders: - Nines\UserBundle\Entity\User: - algorithm: auto - - # https://symfony.com/doc/current/security.html#where-do-users-come-from-user-providers + password_hashers: + Symfony\Component\Security\Core\User\PasswordAuthenticatedUserInterface: 'auto' providers: - # used to reload user from session & other features (e.g. switch_user) app_user_provider: entity: class: Nines\UserBundle\Entity\User property: email firewalls: dev: - pattern: ^/(_(profiler|wdt)|css|images|js)/ + pattern: ^/(_(profiler|wdt|error)|css|images|js)/ security: false main: - anonymous: lazy - guard: - authenticators: - - Nines\UserBundle\Security\LoginFormAuthenticator + lazy: true + provider: app_user_provider + form_login: + login_path: nines_user_security_login + check_path: nines_user_security_login + post_only: true + form_only: true + enable_csrf: true + username_parameter: email + password_parameter: password user_checker: Nines\UserBundle\Security\UserChecker logout: path: nines_user_security_logout target: homepage - remember_me: secret: '%kernel.secret%' lifetime: 604800 # 1 week @@ -37,31 +38,36 @@ security: ROLE_ADMIN: - ROLE_BLOG_ADMIN - ROLE_CONTENT_ADMIN - - ROLE_DC_ADMIN - - ROLE_FEEDBACK_ADMIN - ROLE_MEDIA_ADMIN - ROLE_USER_ADMIN - ROLE_USER ROLE_BLOG_ADMIN: ROLE_USER - ROLE_COMMENT_ADMIN: ROLE_USER ROLE_CONTENT_ADMIN: ROLE_USER # Easy way to control access for large sections of your site # Note: Only the *first* access control that matches will be used access_control: # Default controller stuff - open to the public - - { path: ^/$, roles: IS_AUTHENTICATED_ANONYMOUSLY } - - { path: ^/privacy$, roles: IS_AUTHENTICATED_ANONYMOUSLY } + - { path: ^%router.request_context.base_url%/$, roles: PUBLIC_ACCESS } + - { path: ^%router.request_context.base_url%/privacy$, roles: PUBLIC_ACCESS } # user controller stuff - open to the public - - { path: ^/request$, roles: IS_AUTHENTICATED_ANONYMOUSLY } - - { path: ^/reset, roles: IS_AUTHENTICATED_ANONYMOUSLY } - - { path: ^/login$, roles: IS_AUTHENTICATED_ANONYMOUSLY } - - # Other controllers that should never be public - - { path: ^/dublin_core/element, roles: ROLE_USER } - - { path: ^/feedback/comment_note, roles: ROLE_USER } - - { path: ^/feedback/comment_status, roles: ROLE_USER } + - { path: ^%router.request_context.base_url%/request$, roles: PUBLIC_ACCESS } + - { path: ^%router.request_context.base_url%/reset, roles: PUBLIC_ACCESS } + - { path: ^%router.request_context.base_url%/login$, roles: PUBLIC_ACCESS } # Temporary to keep the rest of the site private. - - { path: ^/, roles: ROLE_USER } + - { path: ^%router.request_context.base_url%/, roles: ROLE_USER } + +when@test: + security: + password_hashers: + # By default, password hashers are resource intensive and take time. This is + # important to generate secure password hashes. In tests however, secure hashes + # are not important, waste resources and increase test times. The following + # reduces the work factor to the lowest possible values. + Symfony\Component\Security\Core\User\PasswordAuthenticatedUserInterface: + algorithm: auto + cost: 4 # Lowest possible value for bcrypt + time_cost: 3 # Lowest possible value for argon + memory_cost: 10 # Lowest possible value for argon diff --git a/config/packages/test/dama_doctrine_test_bundle.yaml b/config/packages/test/dama_doctrine_test_bundle.yaml deleted file mode 100644 index 80b0091..0000000 --- a/config/packages/test/dama_doctrine_test_bundle.yaml +++ /dev/null @@ -1,4 +0,0 @@ -dama_doctrine_test: - enable_static_connection: true - enable_static_meta_data_cache: true - enable_static_query_cache: true diff --git a/config/packages/test/debug.yaml b/config/packages/test/debug.yaml deleted file mode 100644 index 26d4e53..0000000 --- a/config/packages/test/debug.yaml +++ /dev/null @@ -1,4 +0,0 @@ -debug: - # Forwards VarDumper Data clones to a centralized server allowing to inspect dumps on CLI or in your browser. - # See the "server:dump" command to start a new server. - dump_destination: "tcp://%env(VAR_DUMPER_SERVER)%" diff --git a/config/packages/test/doctrine.yaml b/config/packages/test/doctrine.yaml deleted file mode 100644 index 94dfb93..0000000 --- a/config/packages/test/doctrine.yaml +++ /dev/null @@ -1,5 +0,0 @@ -doctrine: - dbal: - url: '%env(resolve:DATABASE_URL)%' -# # "TEST_TOKEN" is typically set by ParaTest -# dbname_suffix: '_test%env(default::TEST_TOKEN)%' diff --git a/config/packages/test/framework.yaml b/config/packages/test/framework.yaml deleted file mode 100644 index d051c84..0000000 --- a/config/packages/test/framework.yaml +++ /dev/null @@ -1,4 +0,0 @@ -framework: - test: true - session: - storage_id: session.storage.mock_file diff --git a/config/packages/test/monolog.yaml b/config/packages/test/monolog.yaml deleted file mode 100644 index 0f950f5..0000000 --- a/config/packages/test/monolog.yaml +++ /dev/null @@ -1,12 +0,0 @@ -monolog: - use_microseconds: false - handlers: - main: - type: rotating_file - max_files: 1 - path: "%kernel.logs_dir%/%kernel.environment%.log" - level: warning - channels: ['!event', '!doctrine', '!console', '!translation'] - console: - type: console - channels: ['!event', '!doctrine', '!console', '!translation'] diff --git a/config/packages/test/twig.yaml b/config/packages/test/twig.yaml deleted file mode 100644 index 8c6e0b4..0000000 --- a/config/packages/test/twig.yaml +++ /dev/null @@ -1,2 +0,0 @@ -twig: - strict_variables: true diff --git a/config/packages/test/validator.yaml b/config/packages/test/validator.yaml deleted file mode 100644 index 1e5ab78..0000000 --- a/config/packages/test/validator.yaml +++ /dev/null @@ -1,3 +0,0 @@ -framework: - validation: - not_compromised_password: false diff --git a/config/packages/test/web_profiler.yaml b/config/packages/test/web_profiler.yaml deleted file mode 100644 index 03752de..0000000 --- a/config/packages/test/web_profiler.yaml +++ /dev/null @@ -1,6 +0,0 @@ -web_profiler: - toolbar: false - intercept_redirects: false - -framework: - profiler: { collect: false } diff --git a/config/packages/tetranzselect2entity.yaml b/config/packages/tetranzselect2entity.yaml new file mode 100644 index 0000000..9d7d80d --- /dev/null +++ b/config/packages/tetranzselect2entity.yaml @@ -0,0 +1,3 @@ +tetranz_select2_entity: + theme: 'bootstrap-5' + width: 100% \ No newline at end of file diff --git a/config/packages/twig.yaml b/config/packages/twig.yaml index bcd1b94..d7221d0 100644 --- a/config/packages/twig.yaml +++ b/config/packages/twig.yaml @@ -7,11 +7,12 @@ twig: format: Y-m-d g:i:s A interval_format: '%%d days' form_themes: - - 'bootstrap_3_horizontal_layout.html.twig' - - "@NinesUtil/form/fields.html.twig" + - '@NinesUtil/form/bootstrap_5_horizontal_layout.html.twig' - '@TetranzSelect2Entity/Form/fields.html.twig' - 'jquery.collection.html.twig' globals: + asset_prefix: '%env(default::string:ROUTE_BASE)%' + nines_editor_config: js/editor-config.js text_service: '@Nines\UtilBundle\Services\Text' image_manager: '@Nines\MediaBundle\Service\ImageManager' linker: '@Nines\UtilBundle\Services\EntityLinker' @@ -19,5 +20,13 @@ twig: piwik_url: '%dhil.piwik_url%' piwik_siteid: '%dhil.piwik_siteid%' piwik_domain: '%dhil.piwik_domain%' - nines_editor_config: js/editor-config.js date_format: Y-m-d + git_repo: '%env(default::string:GIT_REPO)%' + git_commit: '%env(default::string:GIT_COMMIT)%' + git_commit_short: '%env(default::string:GIT_COMMIT_SHORT)%' + git_branch: '%env(default::string:GIT_BRANCH)%' + git_tag: '%env(default::string:GIT_TAG)%' + +when@test: + twig: + strict_variables: true \ No newline at end of file diff --git a/config/packages/validator.yaml b/config/packages/validator.yaml index 350786a..0201281 100644 --- a/config/packages/validator.yaml +++ b/config/packages/validator.yaml @@ -6,3 +6,8 @@ framework: # For instance, basic validation constraints will be inferred from Doctrine's metadata. #auto_mapping: # App\Entity\: [] + +when@test: + framework: + validation: + not_compromised_password: false diff --git a/config/packages/web_profiler.yaml b/config/packages/web_profiler.yaml new file mode 100644 index 0000000..b946111 --- /dev/null +++ b/config/packages/web_profiler.yaml @@ -0,0 +1,17 @@ +when@dev: + web_profiler: + toolbar: true + intercept_redirects: false + + framework: + profiler: + only_exceptions: false + collect_serializer_data: true + +when@test: + web_profiler: + toolbar: false + intercept_redirects: false + + framework: + profiler: { collect: false } diff --git a/config/preload.php b/config/preload.php index 064bdcd..5ebcdb2 100644 --- a/config/preload.php +++ b/config/preload.php @@ -1,9 +1,5 @@ - * This source file is subject to the GPL v2, bundled - * with this source code in the file LICENSE. - */ - namespace DoctrineMigrations; use Doctrine\DBAL\Schema\Schema; diff --git a/migrations/2022/06/Version20220629191415.php b/migrations/2022/06/Version20220629191415.php index a59c715..54ad8ab 100644 --- a/migrations/2022/06/Version20220629191415.php +++ b/migrations/2022/06/Version20220629191415.php @@ -2,12 +2,6 @@ declare(strict_types=1); -/* - * (c) 2022 Michael Joyce - * This source file is subject to the GPL v2, bundled - * with this source code in the file LICENSE. - */ - namespace DoctrineMigrations; use Doctrine\DBAL\Schema\Schema; diff --git a/migrations/2022/07/Version20220705213739.php b/migrations/2022/07/Version20220705213739.php index 83757f5..f3014e7 100644 --- a/migrations/2022/07/Version20220705213739.php +++ b/migrations/2022/07/Version20220705213739.php @@ -2,12 +2,6 @@ declare(strict_types=1); -/* - * (c) 2022 Michael Joyce - * This source file is subject to the GPL v2, bundled - * with this source code in the file LICENSE. - */ - namespace DoctrineMigrations; use Doctrine\DBAL\Schema\Schema; diff --git a/migrations/2024/05/Version20240509214529.php b/migrations/2024/05/Version20240509214529.php new file mode 100644 index 0000000..2048df9 --- /dev/null +++ b/migrations/2024/05/Version20240509214529.php @@ -0,0 +1,63 @@ +addSql('ALTER TABLE nines_blog_page DROP FOREIGN KEY FK_F4DA3AB0A76ED395'); + $this->addSql('ALTER TABLE nines_blog_page ADD CONSTRAINT FK_23FD24C7A76ED395 FOREIGN KEY (user_id) REFERENCES nines_user (id) ON DELETE CASCADE'); + $this->addSql('ALTER TABLE nines_blog_post DROP FOREIGN KEY FK_BA5AE01D6BF700BD'); + $this->addSql('ALTER TABLE nines_blog_post DROP FOREIGN KEY FK_BA5AE01DA76ED395'); + $this->addSql('ALTER TABLE nines_blog_post DROP FOREIGN KEY FK_BA5AE01D12469DE2'); + $this->addSql('ALTER TABLE nines_blog_post ADD CONSTRAINT FK_6D7DFE6A12469DE2 FOREIGN KEY (category_id) REFERENCES nines_blog_post_category (id) ON DELETE CASCADE'); + $this->addSql('ALTER TABLE nines_blog_post ADD CONSTRAINT FK_6D7DFE6A6BF700BD FOREIGN KEY (status_id) REFERENCES nines_blog_post_status (id) ON DELETE CASCADE'); + $this->addSql('ALTER TABLE nines_blog_post ADD CONSTRAINT FK_6D7DFE6AA76ED395 FOREIGN KEY (user_id) REFERENCES nines_user (id) ON DELETE CASCADE'); + $this->addSql('ALTER TABLE nines_media_audio ADD checksum VARCHAR(32) DEFAULT NULL, ADD source_url LONGTEXT DEFAULT NULL, DROP public'); + $this->addSql('CREATE INDEX IDX_9D15F751DE6FDF9A ON nines_media_audio (checksum)'); + $this->addSql('CREATE FULLTEXT INDEX IDX_9D15F751A58240EF ON nines_media_audio (source_url)'); + $this->addSql('ALTER TABLE nines_media_image ADD checksum VARCHAR(32) DEFAULT NULL, ADD source_url LONGTEXT DEFAULT NULL, DROP public'); + $this->addSql('CREATE INDEX IDX_4055C59BDE6FDF9A ON nines_media_image (checksum)'); + $this->addSql('CREATE FULLTEXT INDEX IDX_4055C59BA58240EF ON nines_media_image (source_url)'); + $this->addSql('ALTER TABLE nines_media_pdf ADD checksum VARCHAR(32) DEFAULT NULL, ADD source_url LONGTEXT DEFAULT NULL, DROP public'); + $this->addSql('CREATE INDEX IDX_9286B706DE6FDF9A ON nines_media_pdf (checksum)'); + $this->addSql('CREATE FULLTEXT INDEX IDX_9286B706A58240EF ON nines_media_pdf (source_url)'); + $this->addSql('ALTER TABLE transaction_transaction_category DROP FOREIGN KEY FK_7F5D163D2FC0CB0F'); + $this->addSql('ALTER TABLE transaction_transaction_category ADD CONSTRAINT FK_7F5D163D2FC0CB0F FOREIGN KEY (transaction_id) REFERENCES transact (id)'); + } + + public function down(Schema $schema) : void { + // this down() migration is auto-generated, please modify it to your needs + $this->addSql('DROP INDEX IDX_4055C59BDE6FDF9A ON nines_media_image'); + $this->addSql('DROP INDEX IDX_4055C59BA58240EF ON nines_media_image'); + $this->addSql('ALTER TABLE nines_media_image ADD public TINYINT(1) NOT NULL, DROP checksum, DROP source_url'); + $this->addSql('ALTER TABLE nines_blog_post DROP FOREIGN KEY FK_6D7DFE6A12469DE2'); + $this->addSql('ALTER TABLE nines_blog_post DROP FOREIGN KEY FK_6D7DFE6A6BF700BD'); + $this->addSql('ALTER TABLE nines_blog_post DROP FOREIGN KEY FK_6D7DFE6AA76ED395'); + $this->addSql('ALTER TABLE nines_blog_post ADD CONSTRAINT FK_BA5AE01D6BF700BD FOREIGN KEY (status_id) REFERENCES nines_blog_post_status (id)'); + $this->addSql('ALTER TABLE nines_blog_post ADD CONSTRAINT FK_BA5AE01DA76ED395 FOREIGN KEY (user_id) REFERENCES nines_user (id)'); + $this->addSql('ALTER TABLE nines_blog_post ADD CONSTRAINT FK_BA5AE01D12469DE2 FOREIGN KEY (category_id) REFERENCES nines_blog_post_category (id)'); + $this->addSql('DROP INDEX IDX_9D15F751DE6FDF9A ON nines_media_audio'); + $this->addSql('DROP INDEX IDX_9D15F751A58240EF ON nines_media_audio'); + $this->addSql('ALTER TABLE nines_media_audio ADD public TINYINT(1) NOT NULL, DROP checksum, DROP source_url'); + $this->addSql('ALTER TABLE transaction_transaction_category DROP FOREIGN KEY FK_7F5D163D2FC0CB0F'); + $this->addSql('ALTER TABLE transaction_transaction_category ADD CONSTRAINT FK_7F5D163D2FC0CB0F FOREIGN KEY (transaction_id) REFERENCES transact (id) ON DELETE CASCADE'); + $this->addSql('DROP INDEX IDX_9286B706DE6FDF9A ON nines_media_pdf'); + $this->addSql('DROP INDEX IDX_9286B706A58240EF ON nines_media_pdf'); + $this->addSql('ALTER TABLE nines_media_pdf ADD public TINYINT(1) NOT NULL, DROP checksum, DROP source_url'); + $this->addSql('ALTER TABLE nines_blog_page DROP FOREIGN KEY FK_23FD24C7A76ED395'); + $this->addSql('ALTER TABLE nines_blog_page ADD CONSTRAINT FK_F4DA3AB0A76ED395 FOREIGN KEY (user_id) REFERENCES nines_user (id)'); + } +} diff --git a/migrations/2024/05/Version20240510223025.php b/migrations/2024/05/Version20240510223025.php new file mode 100644 index 0000000..8ff5d95 --- /dev/null +++ b/migrations/2024/05/Version20240510223025.php @@ -0,0 +1,129 @@ +addSql('ALTER TABLE archdeaconry DROP FOREIGN KEY FK_36CE5E07B600009'); + $this->addSql('ALTER TABLE archdeaconry ADD CONSTRAINT FK_36CE5E07B600009 FOREIGN KEY (diocese_id) REFERENCES diocese (id) ON DELETE CASCADE'); + $this->addSql('ALTER TABLE book DROP FOREIGN KEY FK_CBE5A33153033E82'); + $this->addSql('ALTER TABLE book ADD CONSTRAINT FK_CBE5A33153033E82 FOREIGN KEY (monarch_id) REFERENCES monarch (id) ON DELETE SET NULL'); + $this->addSql('ALTER TABLE county DROP FOREIGN KEY FK_58E2FF25AE3899'); + $this->addSql('ALTER TABLE county ADD CONSTRAINT FK_58E2FF25AE3899 FOREIGN KEY (nation_id) REFERENCES nation (id) ON DELETE CASCADE'); + $this->addSql('ALTER TABLE diocese DROP FOREIGN KEY FK_8849E742E946114A'); + $this->addSql('ALTER TABLE diocese ADD CONSTRAINT FK_8849E742E946114A FOREIGN KEY (province_id) REFERENCES province (id) ON DELETE CASCADE'); + $this->addSql('ALTER TABLE holding DROP FOREIGN KEY FK_5BBFD8168707B11F'); + $this->addSql('ALTER TABLE holding ADD CONSTRAINT FK_5BBFD8168707B11F FOREIGN KEY (parish_id) REFERENCES parish (id) ON DELETE CASCADE'); + $this->addSql('ALTER TABLE injunction DROP FOREIGN KEY FK_A2FAC1E153033E82'); + $this->addSql('ALTER TABLE injunction DROP FOREIGN KEY FK_A2FAC1E1E946114A'); + $this->addSql('ALTER TABLE injunction DROP FOREIGN KEY FK_A2FAC1E1AE3899'); + $this->addSql('ALTER TABLE injunction DROP FOREIGN KEY FK_A2FAC1E13BEA4CEE'); + $this->addSql('ALTER TABLE injunction DROP FOREIGN KEY FK_A2FAC1E1B600009'); + $this->addSql('ALTER TABLE injunction ADD CONSTRAINT FK_A2FAC1E153033E82 FOREIGN KEY (monarch_id) REFERENCES monarch (id) ON DELETE SET NULL'); + $this->addSql('ALTER TABLE injunction ADD CONSTRAINT FK_A2FAC1E1E946114A FOREIGN KEY (province_id) REFERENCES province (id) ON DELETE SET NULL'); + $this->addSql('ALTER TABLE injunction ADD CONSTRAINT FK_A2FAC1E1AE3899 FOREIGN KEY (nation_id) REFERENCES nation (id) ON DELETE SET NULL'); + $this->addSql('ALTER TABLE injunction ADD CONSTRAINT FK_A2FAC1E13BEA4CEE FOREIGN KEY (archdeaconry_id) REFERENCES archdeaconry (id) ON DELETE SET NULL'); + $this->addSql('ALTER TABLE injunction ADD CONSTRAINT FK_A2FAC1E1B600009 FOREIGN KEY (diocese_id) REFERENCES diocese (id) ON DELETE SET NULL'); + $this->addSql('ALTER TABLE inventory DROP FOREIGN KEY FK_B12D4A3653033E82'); + $this->addSql('ALTER TABLE inventory DROP FOREIGN KEY FK_B12D4A36320375DF'); + $this->addSql('ALTER TABLE inventory DROP FOREIGN KEY FK_B12D4A368707B11F'); + $this->addSql('ALTER TABLE inventory DROP FOREIGN KEY FK_B12D4A36E75A3578'); + $this->addSql('ALTER TABLE inventory ADD CONSTRAINT FK_B12D4A3653033E82 FOREIGN KEY (monarch_id) REFERENCES monarch (id) ON DELETE SET NULL'); + $this->addSql('ALTER TABLE inventory ADD CONSTRAINT FK_B12D4A36320375DF FOREIGN KEY (manuscript_source_id) REFERENCES manuscript_source (id) ON DELETE SET NULL'); + $this->addSql('ALTER TABLE inventory ADD CONSTRAINT FK_B12D4A368707B11F FOREIGN KEY (parish_id) REFERENCES parish (id) ON DELETE CASCADE'); + $this->addSql('ALTER TABLE inventory ADD CONSTRAINT FK_B12D4A36E75A3578 FOREIGN KEY (print_source_id) REFERENCES print_source (id) ON DELETE SET NULL'); + $this->addSql('ALTER TABLE manuscript_source DROP FOREIGN KEY FK_5F8A7F732956195F'); + $this->addSql('ALTER TABLE manuscript_source DROP FOREIGN KEY FK_5F8A7F732E39CD42'); + $this->addSql('ALTER TABLE manuscript_source ADD CONSTRAINT FK_CE3EE8022E39CD42 FOREIGN KEY (source_category_id) REFERENCES source_category (id) ON DELETE CASCADE'); + $this->addSql('ALTER TABLE manuscript_source ADD CONSTRAINT FK_CE3EE8022956195F FOREIGN KEY (archive_id) REFERENCES archive (id) ON DELETE CASCADE'); + $this->addSql('ALTER TABLE parish DROP FOREIGN KEY FK_DFF9A9783BEA4CEE'); + $this->addSql('ALTER TABLE parish DROP FOREIGN KEY FK_DFF9A97875E23604'); + $this->addSql('ALTER TABLE parish ADD CONSTRAINT FK_DFF9A9783BEA4CEE FOREIGN KEY (archdeaconry_id) REFERENCES archdeaconry (id) ON DELETE CASCADE'); + $this->addSql('ALTER TABLE parish ADD CONSTRAINT FK_DFF9A97875E23604 FOREIGN KEY (town_id) REFERENCES town (id) ON DELETE SET NULL'); + $this->addSql('ALTER TABLE print_source DROP FOREIGN KEY FK_534D01C12E39CD42'); + $this->addSql('ALTER TABLE print_source ADD CONSTRAINT FK_534D01C12E39CD42 FOREIGN KEY (source_category_id) REFERENCES source_category (id) ON DELETE CASCADE'); + $this->addSql('ALTER TABLE province DROP FOREIGN KEY FK_4ADAD40BAE3899'); + $this->addSql('ALTER TABLE province ADD CONSTRAINT FK_4ADAD40BAE3899 FOREIGN KEY (nation_id) REFERENCES nation (id) ON DELETE CASCADE'); + $this->addSql('ALTER TABLE town DROP FOREIGN KEY FK_4CE6C7A485E73F45'); + $this->addSql('ALTER TABLE town ADD CONSTRAINT FK_4CE6C7A485E73F45 FOREIGN KEY (county_id) REFERENCES county (id) ON DELETE CASCADE'); + $this->addSql('ALTER TABLE transact DROP FOREIGN KEY FK_FA42B7F653033E82'); + $this->addSql('ALTER TABLE transact DROP FOREIGN KEY FK_FA42B7F6320375DF'); + $this->addSql('ALTER TABLE transact DROP FOREIGN KEY FK_FA42B7F68707B11F'); + $this->addSql('ALTER TABLE transact DROP FOREIGN KEY FK_FA42B7F6E75A3578'); + $this->addSql('ALTER TABLE transact ADD CONSTRAINT FK_FA42B7F653033E82 FOREIGN KEY (monarch_id) REFERENCES monarch (id) ON DELETE SET NULL'); + $this->addSql('ALTER TABLE transact ADD CONSTRAINT FK_FA42B7F6320375DF FOREIGN KEY (manuscript_source_id) REFERENCES manuscript_source (id) ON DELETE SET NULL'); + $this->addSql('ALTER TABLE transact ADD CONSTRAINT FK_FA42B7F68707B11F FOREIGN KEY (parish_id) REFERENCES parish (id) ON DELETE CASCADE'); + $this->addSql('ALTER TABLE transact ADD CONSTRAINT FK_FA42B7F6E75A3578 FOREIGN KEY (print_source_id) REFERENCES print_source (id) ON DELETE SET NULL'); + $this->addSql('ALTER TABLE transaction_transaction_category DROP FOREIGN KEY FK_7F5D163D2FC0CB0F'); + $this->addSql('ALTER TABLE transaction_transaction_category ADD CONSTRAINT FK_7F5D163D2FC0CB0F FOREIGN KEY (transaction_id) REFERENCES transact (id) ON DELETE CASCADE'); + } + + public function down(Schema $schema) : void { + // this down() migration is auto-generated, please modify it to your needs + $this->addSql('ALTER TABLE archdeaconry DROP FOREIGN KEY FK_36CE5E07B600009'); + $this->addSql('ALTER TABLE archdeaconry ADD CONSTRAINT FK_36CE5E07B600009 FOREIGN KEY (diocese_id) REFERENCES diocese (id)'); + $this->addSql('ALTER TABLE holding DROP FOREIGN KEY FK_5BBFD8168707B11F'); + $this->addSql('ALTER TABLE holding ADD CONSTRAINT FK_5BBFD8168707B11F FOREIGN KEY (parish_id) REFERENCES parish (id)'); + $this->addSql('ALTER TABLE transaction_transaction_category DROP FOREIGN KEY FK_7F5D163D2FC0CB0F'); + $this->addSql('ALTER TABLE transaction_transaction_category ADD CONSTRAINT FK_7F5D163D2FC0CB0F FOREIGN KEY (transaction_id) REFERENCES transact (id)'); + $this->addSql('ALTER TABLE injunction DROP FOREIGN KEY FK_A2FAC1E1AE3899'); + $this->addSql('ALTER TABLE injunction DROP FOREIGN KEY FK_A2FAC1E1B600009'); + $this->addSql('ALTER TABLE injunction DROP FOREIGN KEY FK_A2FAC1E1E946114A'); + $this->addSql('ALTER TABLE injunction DROP FOREIGN KEY FK_A2FAC1E13BEA4CEE'); + $this->addSql('ALTER TABLE injunction DROP FOREIGN KEY FK_A2FAC1E153033E82'); + $this->addSql('ALTER TABLE injunction ADD CONSTRAINT FK_A2FAC1E1AE3899 FOREIGN KEY (nation_id) REFERENCES nation (id)'); + $this->addSql('ALTER TABLE injunction ADD CONSTRAINT FK_A2FAC1E1B600009 FOREIGN KEY (diocese_id) REFERENCES diocese (id)'); + $this->addSql('ALTER TABLE injunction ADD CONSTRAINT FK_A2FAC1E1E946114A FOREIGN KEY (province_id) REFERENCES province (id)'); + $this->addSql('ALTER TABLE injunction ADD CONSTRAINT FK_A2FAC1E13BEA4CEE FOREIGN KEY (archdeaconry_id) REFERENCES archdeaconry (id)'); + $this->addSql('ALTER TABLE injunction ADD CONSTRAINT FK_A2FAC1E153033E82 FOREIGN KEY (monarch_id) REFERENCES monarch (id)'); + $this->addSql('ALTER TABLE transact DROP FOREIGN KEY FK_FA42B7F68707B11F'); + $this->addSql('ALTER TABLE transact DROP FOREIGN KEY FK_FA42B7F6320375DF'); + $this->addSql('ALTER TABLE transact DROP FOREIGN KEY FK_FA42B7F6E75A3578'); + $this->addSql('ALTER TABLE transact DROP FOREIGN KEY FK_FA42B7F653033E82'); + $this->addSql('ALTER TABLE transact ADD CONSTRAINT FK_FA42B7F68707B11F FOREIGN KEY (parish_id) REFERENCES parish (id)'); + $this->addSql('ALTER TABLE transact ADD CONSTRAINT FK_FA42B7F6320375DF FOREIGN KEY (manuscript_source_id) REFERENCES manuscript_source (id)'); + $this->addSql('ALTER TABLE transact ADD CONSTRAINT FK_FA42B7F6E75A3578 FOREIGN KEY (print_source_id) REFERENCES print_source (id)'); + $this->addSql('ALTER TABLE transact ADD CONSTRAINT FK_FA42B7F653033E82 FOREIGN KEY (monarch_id) REFERENCES monarch (id)'); + $this->addSql('ALTER TABLE parish DROP FOREIGN KEY FK_DFF9A9783BEA4CEE'); + $this->addSql('ALTER TABLE parish DROP FOREIGN KEY FK_DFF9A97875E23604'); + $this->addSql('ALTER TABLE parish ADD CONSTRAINT FK_DFF9A9783BEA4CEE FOREIGN KEY (archdeaconry_id) REFERENCES archdeaconry (id)'); + $this->addSql('ALTER TABLE parish ADD CONSTRAINT FK_DFF9A97875E23604 FOREIGN KEY (town_id) REFERENCES town (id)'); + $this->addSql('ALTER TABLE county DROP FOREIGN KEY FK_58E2FF25AE3899'); + $this->addSql('ALTER TABLE county ADD CONSTRAINT FK_58E2FF25AE3899 FOREIGN KEY (nation_id) REFERENCES nation (id)'); + $this->addSql('ALTER TABLE province DROP FOREIGN KEY FK_4ADAD40BAE3899'); + $this->addSql('ALTER TABLE province ADD CONSTRAINT FK_4ADAD40BAE3899 FOREIGN KEY (nation_id) REFERENCES nation (id)'); + $this->addSql('ALTER TABLE print_source DROP FOREIGN KEY FK_534D01C12E39CD42'); + $this->addSql('ALTER TABLE print_source ADD CONSTRAINT FK_534D01C12E39CD42 FOREIGN KEY (source_category_id) REFERENCES source_category (id)'); + $this->addSql('ALTER TABLE diocese DROP FOREIGN KEY FK_8849E742E946114A'); + $this->addSql('ALTER TABLE diocese ADD CONSTRAINT FK_8849E742E946114A FOREIGN KEY (province_id) REFERENCES province (id)'); + $this->addSql('ALTER TABLE town DROP FOREIGN KEY FK_4CE6C7A485E73F45'); + $this->addSql('ALTER TABLE town ADD CONSTRAINT FK_4CE6C7A485E73F45 FOREIGN KEY (county_id) REFERENCES county (id)'); + $this->addSql('ALTER TABLE inventory DROP FOREIGN KEY FK_B12D4A36320375DF'); + $this->addSql('ALTER TABLE inventory DROP FOREIGN KEY FK_B12D4A36E75A3578'); + $this->addSql('ALTER TABLE inventory DROP FOREIGN KEY FK_B12D4A368707B11F'); + $this->addSql('ALTER TABLE inventory DROP FOREIGN KEY FK_B12D4A3653033E82'); + $this->addSql('ALTER TABLE inventory ADD CONSTRAINT FK_B12D4A36320375DF FOREIGN KEY (manuscript_source_id) REFERENCES manuscript_source (id)'); + $this->addSql('ALTER TABLE inventory ADD CONSTRAINT FK_B12D4A36E75A3578 FOREIGN KEY (print_source_id) REFERENCES print_source (id)'); + $this->addSql('ALTER TABLE inventory ADD CONSTRAINT FK_B12D4A368707B11F FOREIGN KEY (parish_id) REFERENCES parish (id)'); + $this->addSql('ALTER TABLE inventory ADD CONSTRAINT FK_B12D4A3653033E82 FOREIGN KEY (monarch_id) REFERENCES monarch (id)'); + $this->addSql('ALTER TABLE book DROP FOREIGN KEY FK_CBE5A33153033E82'); + $this->addSql('ALTER TABLE book ADD CONSTRAINT FK_CBE5A33153033E82 FOREIGN KEY (monarch_id) REFERENCES monarch (id)'); + $this->addSql('ALTER TABLE manuscript_source DROP FOREIGN KEY FK_CE3EE8022E39CD42'); + $this->addSql('ALTER TABLE manuscript_source DROP FOREIGN KEY FK_CE3EE8022956195F'); + $this->addSql('ALTER TABLE manuscript_source ADD CONSTRAINT FK_5F8A7F732956195F FOREIGN KEY (archive_id) REFERENCES archive (id)'); + $this->addSql('ALTER TABLE manuscript_source ADD CONSTRAINT FK_5F8A7F732E39CD42 FOREIGN KEY (source_category_id) REFERENCES source_category (id)'); + } +} diff --git a/phpstan-baseline.neon b/phpstan-baseline.neon deleted file mode 100644 index d1be8dd..0000000 --- a/phpstan-baseline.neon +++ /dev/null @@ -1,22 +0,0 @@ -parameters: - ignoreErrors: - - - message: "#^Cannot call method upload\\(\\) on array\\\\|Symfony\\\\Component\\\\DomCrawler\\\\Field\\\\FormField\\>\\|Symfony\\\\Component\\\\DomCrawler\\\\Field\\\\FormField\\.$#" - count: 2 - path: tests/Controller/HoldingTest.php - - - - message: "#^Cannot call method upload\\(\\) on array\\\\|Symfony\\\\Component\\\\DomCrawler\\\\Field\\\\FormField\\>\\|Symfony\\\\Component\\\\DomCrawler\\\\Field\\\\FormField\\.$#" - count: 2 - path: tests/Controller/InventoryTest.php - - - - message: "#^Unreachable statement \\- code above always terminates\\.$#" - count: 1 - path: tests/Controller/InventoryTest.php - - - - message: "#^Unreachable statement \\- code above always terminates\\.$#" - count: 2 - path: tests/Controller/SourceTest.php - diff --git a/phpstan.neon b/phpstan.neon deleted file mode 100644 index 61ce122..0000000 --- a/phpstan.neon +++ /dev/null @@ -1,5 +0,0 @@ -includes: - - phpstan.neon.dist - -parameters: - editorUrl: 'phpstorm://open?file=%%file%%&line=%%line%%' diff --git a/phpstan.neon.dist b/phpstan.neon.dist deleted file mode 100644 index e32e3b9..0000000 --- a/phpstan.neon.dist +++ /dev/null @@ -1,38 +0,0 @@ -includes: - - phpstan-baseline.neon - - vendor/phpstan/phpstan-symfony/extension.neon - - vendor/phpstan/phpstan-doctrine/extension.neon - -parameters: - tmpDir: var/cache/phpstan - level: 6 - paths: - - src - - tests - - migrations - excludePaths: - - src/Kernel.php - - tests/*/data/* - - tests/bootstrap.php - treatPhpDocTypesAsCertain: false - checkUninitializedProperties: true - checkMissingIterableValueType: false - checkGenericClassInNonGenericObjectType: false - checkMissingCallableSignature: true - dynamicConstantNames: - - App\Tests\Controller\ArchdeaconryTest::ANON_RESPONSE_CODE - - App\Tests\Controller\ArchiveTest::ANON_RESPONSE_CODE - - App\Tests\Controller\BookTest::ANON_RESPONSE_CODE - - App\Tests\Controller\CountyTest::ANON_RESPONSE_CODE - - App\Tests\Controller\DioceseTest::ANON_RESPONSE_CODE - - App\Tests\Controller\FormatTest::ANON_RESPONSE_CODE - - App\Tests\Controller\HoldingTest::ANON_RESPONSE_CODE - - App\Tests\Controller\InjunctionTest::ANON_RESPONSE_CODE - - App\Tests\Controller\MonarchTest::ANON_RESPONSE_CODE - - App\Tests\Controller\NationTest::ANON_RESPONSE_CODE - - App\Tests\Controller\ParishTest::ANON_RESPONSE_CODE - - App\Tests\Controller\ProvinceTest::ANON_RESPONSE_CODE - - App\Tests\Controller\SourceCategoryTest::ANON_RESPONSE_CODE - - App\Tests\Controller\TownTest::ANON_RESPONSE_CODE - - App\Tests\Controller\TransactionCategoryTest::ANON_RESPONSE_CODE - - App\Tests\Controller\TransactionTest::ANON_RESPONSE_CODE diff --git a/phpunit.coverage.xml b/phpunit.coverage.xml deleted file mode 100644 index 29cf2b5..0000000 --- a/phpunit.coverage.xml +++ /dev/null @@ -1,56 +0,0 @@ - - - - - - - - - - - - - - - - - src - - - src/DataFixtures - src/Kernel.php - src/.preload.php - - - - - - - - - tests - - - - - - - - - - - - - diff --git a/phpunit.xml.dist b/phpunit.xml.dist index 415f7d7..35f8cf5 100644 --- a/phpunit.xml.dist +++ b/phpunit.xml.dist @@ -1,15 +1,13 @@ - + cacheResultFile=".phpunit.cache/test-results" + convertDeprecationsToExceptions="false" + colors="true" + verbose="true"> - + @@ -21,16 +19,28 @@ - + tests + + + src + + + src/DataFixtures + src/Kernel.php + src/.preload.php + + + - + - + \ No newline at end of file diff --git a/public/.htaccess b/public/.htaccess deleted file mode 100644 index f58882d..0000000 --- a/public/.htaccess +++ /dev/null @@ -1,29 +0,0 @@ -DirectoryIndex index.php - -Options FollowSymlinks - - - Options -MultiViews - - - - RewriteEngine On - RewriteCond %{REQUEST_URI}::$0 ^(/.+)/(.*)::\2$ - RewriteRule .* - [E=BASE:%1] - - # Sets the HTTP_AUTHORIZATION header removed by Apache - RewriteCond %{HTTP:Authorization} .+ - RewriteRule ^ - [E=HTTP_AUTHORIZATION:%0] - - RewriteCond %{ENV:REDIRECT_STATUS} ="" - RewriteRule ^index\.php(?:/(.*)|$) %{ENV:BASE}/$1 [R=301,L] - - RewriteCond %{REQUEST_FILENAME} !-f - RewriteRule ^ %{ENV:BASE}/index.php [L] - - - - - RedirectMatch 307 ^/$ /index.php/ - - diff --git a/public/css/bep.css b/public/css/bep.css new file mode 100644 index 0000000..42c3715 --- /dev/null +++ b/public/css/bep.css @@ -0,0 +1,109 @@ +/* Sticky footer styles +-------------------------------------------------- */ +html { + position: relative; + min-height: 100%; +} +body { + /* Margin bottom by footer height */ + margin-bottom: 90px; + margin-top: 70px; +} +.footer { + position: absolute; + bottom: 0; + width: 100%; + /* Set the fixed height of the footer here */ + height: 60px; + background-color: #f5f5f5; +} + +.navbar-nav .nav-link { + padding: 1em 0; +} + +.navbar-nav .nav-link.show { + background-image:-webkit-linear-gradient(top,#dbdbdb 0,#e2e2e2 100%); + background-image:-o-linear-gradient(top,#dbdbdb 0,#e2e2e2 100%); +} + +/* Custom app styles */ +label.required::after, legend.required::after { + content: ' *'; + color: red; + font-weight: bold; +} + +a[href ^= 'mailto:']::after { + content: "\f32c"; + display: inline-block; + font-family: bootstrap-icons !important; + font-style: normal; + font-weight: normal !important; + font-variant: normal; + text-transform: none; + line-height: 1; + vertical-align: -.125em; + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; + padding-left: 0.5ex; +} + +a[href ^= 'http://']::after, +a[href ^= 'https://']::after { + content: "\F1C5"; + display: inline-block; + font-family: bootstrap-icons !important; + font-style: normal; + font-weight: normal !important; + font-variant: normal; + text-transform: none; + line-height: 1; + vertical-align: -.125em; + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; + padding-left: 0.5ex; +} + +.breadcrumb .breadcrumb-item { + max-width: 250px; + overflow: hidden; + text-overflow: ellipsis; + white-space: nowrap; +} + +.card { + margin-bottom: 20px; +} + +.popover .popover-body { + padding: 0px; +} + +div.collection span[class*="-collection-actions"] { + width: inherit !important; +} + +div.collection-complex > div:not(:last-child) { + padding-top: 15px; + border: 1px solid rgba(128, 128, 128, 0.31); +} + +/* Image gallery styles. */ + +.modal { + top: 50px; + margin-bottom: 15px; +} + +#modalImage { + max-width: 100%; + display: block; + margin: 0 auto 0 auto; +} + +.modal-dialog { + width: auto; + max-width: 75vw; + max-height: 75vh; +} diff --git a/public/health.php b/public/health.php new file mode 100644 index 0000000..a4abe2d --- /dev/null +++ b/public/health.php @@ -0,0 +1,2 @@ +handle($request); -$response->send(); -$kernel->terminate($request, $response); +return fn(array $context) => new Kernel($context['APP_ENV'], (bool) $context['APP_DEBUG']); diff --git a/public/js/editor-config.js b/public/js/editor-config.js index 9188c9e..9e7378e 100644 --- a/public/js/editor-config.js +++ b/public/js/editor-config.js @@ -3,7 +3,7 @@ function getTinyMceConfig(editorUploadPath) { return { branding: false, selector: '.tinymce', - plugins: 'advlist anchor charmap code help hr image imagetools link ' + + plugins: 'advlist anchor charmap code help hr link ' + 'lists paste preview searchreplace table wordcount', relative_urls: false, convert_urls: false, @@ -22,43 +22,13 @@ function getTinyMceConfig(editorUploadPath) { [0xdf, 'latin letter sharp s'], ], - image_caption: true, - images_upload_url: editorUploadPath, - images_upload_credentials: true, - image_advtab: true, - image_title: true, - resize: true, - paste_as_text: true, + paste_as_text: false, paste_block_drop: true, + paste_enable_default_filters: false, + paste_word_valid_elements: 'a,b,strong,i,em,h1,h2', style_formats_merge: true, - style_formats: [{ - title: 'Image Left', - selector: 'img, figure', - styles: { - 'float': 'left', - 'margin': '0 10px 0 10px', - }, - }, - { - title: 'Image Center', - selector: 'img, figure', - styles: { - position: 'relative', - transform: 'translateX(-50%)', - left: '50%', - }, - }, - { - title: 'Image Right', - selector: 'img, figure', - styles: { - 'float': 'right', - 'margin': '0 10px 0 10px', - }, - }, - ], }; } diff --git a/public/js/form.js b/public/js/form.js new file mode 100644 index 0000000..5bde8fc --- /dev/null +++ b/public/js/form.js @@ -0,0 +1,192 @@ +(function ($, window, document) { + + const hostname = window.location.hostname.replace('www.', ''); + + function confirm() { + const $this = $(this); + $this.click(function () { + return window.confirm($this.data('confirm')); + }); + } + + function link() { + if(this.hostname.replace('www.', '') === hostname) { + return; + } + $(this).attr('target', '_blank'); + } + + function windowBeforeUnload(e) { + let clean = true; + $('form').each(function () { + const $form = $(this); + if ($form.data('dirty')) { + clean = false; + } + }); + if (!clean) { + let message = 'You have unsaved changes.'; + e.returnValue = message; + return message; + } + } + + function formDirty() { + const $form = $(this); + $form.data('dirty', false); + $form.on('change', function () { + $form.data('dirty', true); + }); + $form.on('submit', function () { + $(window).unbind('beforeunload'); + }); + } + + function simpleCollection() { + if ( $('.collection-simple').length == 0 ) { + return + } + $('.collection-simple').collection({ + init_with_n_elements: 1, + allow_up: false, + allow_down: false, + preserve_names: true, + max: 400, + add: ' Add', + remove: ' Remove', + }); + } + + function complexCollection() { + if ( $('.collection-complex').length == 0 ) { + return + } + $('.collection-complex').each( (_, collectionEl) => { + const label = $(collectionEl).data('collection-label'); + const prompt = label ? `Add New ${label}` : `Add New Item`; + $(collectionEl).collection({ + init_with_n_elements: 0, + allow_up: false, + allow_down: false, + max: 400, + position_field_selector: '.position-id', + add_at_the_end: true, + add: ` ${prompt}`, + remove: ' Remove', + after_add: function(_, element){ + $(element).find('.select2entity').select2entity(); + $(element).find('.select2-simple').select2({ + width: '100%', + }); + if (tinymce && $(element).find('.tinymce').length > 0 ) { + $(element).find('.tinymce').each(function (_, textarea) { + tinymce.execCommand("mceAddEditor", false, textarea.id); + }); + } + return true; + }, + }) + }); + } + + function imageModals() { + $('#imgModal').on('show.bs.modal', function (event) { + const $button = $(event.relatedTarget); + // Button that triggered the modal + const $modal = $(this); + + $modal.find('#modalTitle').text($button.data('title')); + $modal.find('figcaption').html($button.parent().parent().find('.caption').clone()); + $modal.find("#modalImage").attr('src', $button.data('img')); + }); + } + + function menuTabs() { + const localStorageId = `tab-${location.href}-target` + const lastShownTab = localStorage.getItem(localStorageId) + + const tabToggleList = document.querySelectorAll('[data-bs-toggle="tab"]') + tabToggleList.forEach(function (tabToggle) { + tabToggle.addEventListener('shown.bs.tab', () => { + localStorage.setItem(localStorageId, tabToggle.id) + }) + if (lastShownTab === tabToggle.id) { + new bootstrap.Tab(tabToggle).show() + } + }); + } + + $(document).ready(function () { + $(window).bind('beforeunload', windowBeforeUnload); + $('form').each(formDirty); + $("a").each(link); + $("*[data-confirm]").each(confirm); + let popoverTriggerList = [].slice.call(document.querySelectorAll('[data-bs-toggle="popover"]')) + popoverTriggerList.map(function (popoverTriggerEl) { + return new bootstrap.Popover(popoverTriggerEl, { + html: true, + trigger: 'focus', + }) + }) // add this line to enable bootstrap popover + let alertList = document.querySelectorAll('.alert') + alertList.forEach(function (alert) { + new bootstrap.Alert(alert); + }); // add alert dismissal + if (typeof $().collection === 'function') { + simpleCollection(); + complexCollection(); + } + imageModals(); + menuTabs(); + $('.select2-simple').select2({ + width: '100%', + }); + + const select2entityModal = document.getElementById('select2entity_modal') + if (select2entityModal) { + select2entityModal.addEventListener('show.bs.modal', event => { + const button = event.relatedTarget + const contentRoute = button.getAttribute('data-modal-content-route'); + const resultTarget = button.getAttribute('data-modal-result-target'); + $(select2entityModal).find('.modal-content').load(contentRoute, () => { + // form submission + $(select2entityModal).find('form').submit((formSubmitEvent) => { + formSubmitEvent.preventDefault(); + $.post( + $(select2entityModal).find('form').attr("action"), + $(select2entityModal).find('form').serialize(), + (result) => { + if (result.success) { + if (resultTarget && result.data) { + const { id, text } = result.data; + const newOption = new Option(text, id, true, true); + $(resultTarget).append(newOption).val(id).trigger('change'); + } + $(select2entityModal).modal('hide'); + } else { + alert(`There was a problem saving the form: \n${result.errors.join('\n')}`); + } + }, + ); + }); + // initialize select2entity, select2 simple, and tinymce for modal content + $(select2entityModal).find('.select2entity').select2entity(); + $(select2entityModal).find('.select2-simple').select2({ + width: '100%', + }); + if (tinymce && $(select2entityModal).find('.tinymce').length > 0 ) { + $(select2entityModal).find('.tinymce').each(function (index, textarea) { + tinymce.execCommand('mceRemoveEditor', false, textarea.id); + tinymce.execCommand("mceAddEditor", false, textarea.id); + }); + } + }); + }); + select2entityModal.addEventListener('hidden.bs.modal', () => { + // remove current modal content on hide + $(select2entityModal).find('.modal-content').html(''); + }); + } + }); + +})(jQuery, window, document); diff --git a/package.json b/public/package.json similarity index 69% rename from package.json rename to public/package.json index f691c93..5643387 100644 --- a/package.json +++ b/public/package.json @@ -6,11 +6,12 @@ "license": "GPL-2.0-or-later", "private": true, "dependencies": { - "bootstrap3": "^3.3.5", + "bootstrap": "^5.2.3", + "bootstrap-icons": "^1.10.5", "jquery": "^3.4.1", "select2": "^4.0.12", - "select2-bootstrap-css": "^1.4.6", + "select2-bootstrap-5-theme": "^1.3.0", "symfony-collection": "^2.1.30", - "tinymce": "^5.10.7" + "tinymce": "^5.10.9" } } diff --git a/public/yarn.lock b/public/yarn.lock new file mode 100644 index 0000000..4bb8689 --- /dev/null +++ b/public/yarn.lock @@ -0,0 +1,50 @@ +# THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY. +# yarn lockfile v1 + + +bootstrap-icons@^1.10.5: + version "1.11.3" + resolved "https://registry.yarnpkg.com/bootstrap-icons/-/bootstrap-icons-1.11.3.tgz#03f9cb754ec005c52f9ee616e2e84a82cab3084b" + integrity sha512-+3lpHrCw/it2/7lBL15VR0HEumaBss0+f/Lb6ZvHISn1mlK83jjFpooTLsMWbIjJMDjDjOExMsTxnXSIT4k4ww== + +bootstrap@^5.1.3, bootstrap@^5.2.3: + version "5.3.3" + resolved "https://registry.yarnpkg.com/bootstrap/-/bootstrap-5.3.3.tgz#de35e1a765c897ac940021900fcbb831602bac38" + integrity sha512-8HLCdWgyoMguSO9o+aH+iuZ+aht+mzW0u3HIMzVu7Srrpv7EBBxTnrFlSCskwdY1+EOFQSm7uMJhNQHkdPcmjg== + +jquery-ui@>=1.0: + version "1.13.3" + resolved "https://registry.yarnpkg.com/jquery-ui/-/jquery-ui-1.13.3.tgz#d9f5292b2857fa1f2fdbbe8f2e66081664eb9bc5" + integrity sha512-D2YJfswSJRh/B8M/zCowDpNFfwsDmtfnMPwjJTyvl+CBqzpYwQ+gFYIbUUlzijy/Qvoy30H1YhoSui4MNYpRwA== + dependencies: + jquery ">=1.8.0 <4.0.0" + +jquery@>=1.7, "jquery@>=1.8.0 <4.0.0", jquery@^3.4.1: + version "3.7.1" + resolved "https://registry.yarnpkg.com/jquery/-/jquery-3.7.1.tgz#083ef98927c9a6a74d05a6af02806566d16274de" + integrity sha512-m4avr8yL8kmFN8psrbFFFmB/If14iN5o9nw/NgnnM+kybDJpRsAynV2BsfpTYrTRysYUdADVD7CkUUizgkpLfg== + +select2-bootstrap-5-theme@^1.3.0: + version "1.3.0" + resolved "https://registry.yarnpkg.com/select2-bootstrap-5-theme/-/select2-bootstrap-5-theme-1.3.0.tgz#b7126b01c4e2cfb5ee683b219820d49da31b4810" + integrity sha512-uEJDruP4tmwyKcs3V0oP7CIsyC45PGF5ddo8unwTp8OucJ1PSuTOBr+xbWaHTQPGnvp7N96psVQ5UBMQvFCcHA== + dependencies: + bootstrap "^5.1.3" + +select2@^4.0.12: + version "4.0.13" + resolved "https://registry.yarnpkg.com/select2/-/select2-4.0.13.tgz#0dbe377df3f96167c4c1626033e924372d8ef44d" + integrity sha512-1JeB87s6oN/TDxQQYCvS5EFoQyvV6eYMZZ0AeA4tdFDYWN3BAGZ8npr17UBFddU0lgAt3H0yjX3X6/ekOj1yjw== + +symfony-collection@^2.1.30: + version "2.1.30" + resolved "https://registry.yarnpkg.com/symfony-collection/-/symfony-collection-2.1.30.tgz#c9b50abec1a080a6694973d91975d1acf14efb31" + integrity sha512-IkTiqKbfDkR6kZD1Fg6JkZFErMSx8wyu/PQt87UPGkcjeDrVxMmuGviLZys0FSdCReYc6oa94uuIOZS10OBzDw== + dependencies: + jquery ">=1.7" + jquery-ui ">=1.0" + +tinymce@^5.10.9: + version "5.10.9" + resolved "https://registry.yarnpkg.com/tinymce/-/tinymce-5.10.9.tgz#1dfacb3231c71a688d90ff44a0b3f2e91b3b9edf" + integrity sha512-5bkrors87X9LhYX2xq8GgPHrIgJYHl87YNs+kBcjQ5I3CiUgzo/vFcGvT3MZQ9QHsEeYMhYO6a5CLGGffR8hMg== diff --git a/src/Controller/ArchdeaconryController.php b/src/Controller/ArchdeaconryController.php index 813d232..5537296 100644 --- a/src/Controller/ArchdeaconryController.php +++ b/src/Controller/ArchdeaconryController.php @@ -2,17 +2,12 @@ declare(strict_types=1); -/* - * (c) 2022 Michael Joyce - * This source file is subject to the GPL v2, bundled - * with this source code in the file LICENSE. - */ - namespace App\Controller; use App\Entity\Archdeaconry; use App\Form\ArchdeaconryType; use App\Repository\ArchdeaconryRepository; +use Doctrine\ORM\EntityManagerInterface; use Knp\Bundle\PaginatorBundle\Definition\PaginatorAwareInterface; use Nines\UtilBundle\Controller\PaginatorTrait; use Sensio\Bundle\FrameworkExtraBundle\Configuration\IsGranted; @@ -23,55 +18,24 @@ use Symfony\Component\HttpFoundation\Request; use Symfony\Component\Routing\Annotation\Route; -/** - * @Route("/archdeaconry") - */ +#[Route(path: '/archdeaconry')] class ArchdeaconryController extends AbstractController implements PaginatorAwareInterface { use PaginatorTrait; - /** - * @Route("/", name="archdeaconry_index", methods={"GET"}) - * - * @Template - */ + #[Route(path: '/', name: 'archdeaconry_index', methods: ['GET'])] + #[Template] public function index(Request $request, ArchdeaconryRepository $archdeaconryRepository) : array { - $query = $archdeaconryRepository->indexQuery(); - $pageSize = $this->getParameter('page_size'); - $page = $request->query->getint('page', 1); - - return [ - 'archdeaconries' => $this->paginator->paginate($query, $page, $pageSize), - ]; - } - - /** - * @Route("/search", name="archdeaconry_search", methods={"GET"}) - * - * @Template - * - * @return array - */ - public function search(Request $request, ArchdeaconryRepository $archdeaconryRepository) { $q = $request->query->get('q'); - if ($q) { - $query = $archdeaconryRepository->searchQuery($q); - $archdeaconries = $this->paginator->paginate($query, $request->query->getInt('page', 1), $this->getParameter('page_size'), ['wrap-queries' => true]); - } else { - $archdeaconries = []; - } + $query = $q ? $archdeaconryRepository->searchQuery($q) : $archdeaconryRepository->indexQuery(); return [ - 'archdeaconries' => $archdeaconries, + 'archdeaconries' => $this->paginator->paginate($query, $request->query->getInt('page', 1), $this->getParameter('page_size')), 'q' => $q, ]; } - /** - * @Route("/typeahead", name="archdeaconry_typeahead", methods={"GET"}) - * - * @return JsonResponse - */ - public function typeahead(Request $request, ArchdeaconryRepository $archdeaconryRepository) { + #[Route(path: '/typeahead', name: 'archdeaconry_typeahead', methods: ['GET'])] + public function typeahead(Request $request, ArchdeaconryRepository $archdeaconryRepository) : JsonResponse { $q = $request->query->get('q'); if ( ! $q) { return new JsonResponse([]); @@ -88,20 +52,15 @@ public function typeahead(Request $request, ArchdeaconryRepository $archdeaconry return new JsonResponse($data); } - /** - * @Route("/new", name="archdeaconry_new", methods={"GET", "POST"}) - * @Template - * @IsGranted("ROLE_CONTENT_ADMIN") - * - * @return array|RedirectResponse - */ - public function new(Request $request) { + #[Route(path: '/new', name: 'archdeaconry_new', methods: ['GET', 'POST'])] + #[Template] + #[IsGranted('ROLE_CONTENT_ADMIN')] + public function new(EntityManagerInterface $entityManager, Request $request) : array|RedirectResponse { $archdeaconry = new Archdeaconry(); $form = $this->createForm(ArchdeaconryType::class, $archdeaconry); $form->handleRequest($request); if ($form->isSubmitted() && $form->isValid()) { - $entityManager = $this->getDoctrine()->getManager(); $entityManager->persist($archdeaconry); $entityManager->flush(); @@ -116,43 +75,23 @@ public function new(Request $request) { ]; } - /** - * @Route("/new_popup", name="archdeaconry_new_popup", methods={"GET", "POST"}) - * @Template - * @IsGranted("ROLE_CONTENT_ADMIN") - * - * @return array|RedirectResponse - */ - public function new_popup(Request $request) { - return $this->new($request); - } - - /** - * @Route("/{id}", name="archdeaconry_show", methods={"GET"}) - * @Template - * - * @return array - */ - public function show(Archdeaconry $archdeaconry) { + #[Route(path: '/{id}', name: 'archdeaconry_show', methods: ['GET'])] + #[Template] + public function show(Archdeaconry $archdeaconry) : array { return [ 'archdeaconry' => $archdeaconry, ]; } - /** - * @IsGranted("ROLE_CONTENT_ADMIN") - * @Route("/{id}/edit", name="archdeaconry_edit", methods={"GET", "POST"}) - * - * @Template - * - * @return array|RedirectResponse - */ - public function edit(Request $request, Archdeaconry $archdeaconry) { + #[IsGranted('ROLE_CONTENT_ADMIN')] + #[Route(path: '/{id}/edit', name: 'archdeaconry_edit', methods: ['GET', 'POST'])] + #[Template] + public function edit(EntityManagerInterface $entityManager, Request $request, Archdeaconry $archdeaconry) : array|RedirectResponse { $form = $this->createForm(ArchdeaconryType::class, $archdeaconry); $form->handleRequest($request); if ($form->isSubmitted() && $form->isValid()) { - $this->getDoctrine()->getManager()->flush(); + $entityManager->flush(); $this->addFlash('success', 'The updated archdeaconry has been saved.'); return $this->redirectToRoute('archdeaconry_show', ['id' => $archdeaconry->getId()]); @@ -164,15 +103,10 @@ public function edit(Request $request, Archdeaconry $archdeaconry) { ]; } - /** - * @IsGranted("ROLE_CONTENT_ADMIN") - * @Route("/{id}", name="archdeaconry_delete", methods={"DELETE"}) - * - * @return RedirectResponse - */ - public function delete(Request $request, Archdeaconry $archdeaconry) { + #[IsGranted('ROLE_CONTENT_ADMIN')] + #[Route(path: '/{id}', name: 'archdeaconry_delete', methods: ['DELETE'])] + public function delete(EntityManagerInterface $entityManager, Request $request, Archdeaconry $archdeaconry) : RedirectResponse { if ($this->isCsrfTokenValid('delete' . $archdeaconry->getId(), $request->request->get('_token'))) { - $entityManager = $this->getDoctrine()->getManager(); $entityManager->remove($archdeaconry); $entityManager->flush(); $this->addFlash('success', 'The archdeaconry has been deleted.'); diff --git a/src/Controller/ArchiveController.php b/src/Controller/ArchiveController.php index f5f9f88..f9045c4 100644 --- a/src/Controller/ArchiveController.php +++ b/src/Controller/ArchiveController.php @@ -2,17 +2,12 @@ declare(strict_types=1); -/* - * (c) 2022 Michael Joyce - * This source file is subject to the GPL v2, bundled - * with this source code in the file LICENSE. - */ - namespace App\Controller; use App\Entity\Archive; use App\Form\ArchiveType; use App\Repository\ArchiveRepository; +use Doctrine\ORM\EntityManagerInterface; use Knp\Bundle\PaginatorBundle\Definition\PaginatorAwareInterface; use Nines\UtilBundle\Controller\PaginatorTrait; use Sensio\Bundle\FrameworkExtraBundle\Configuration\IsGranted; @@ -23,55 +18,24 @@ use Symfony\Component\HttpFoundation\Request; use Symfony\Component\Routing\Annotation\Route; -/** - * @Route("/archive") - */ +#[Route(path: '/archive')] class ArchiveController extends AbstractController implements PaginatorAwareInterface { use PaginatorTrait; - /** - * @Route("/", name="archive_index", methods={"GET"}) - * - * @Template - */ + #[Route(path: '/', name: 'archive_index', methods: ['GET'])] + #[Template] public function index(Request $request, ArchiveRepository $archiveRepository) : array { - $query = $archiveRepository->indexQuery(); - $pageSize = (int) $this->getParameter('page_size'); - $page = $request->query->getint('page', 1); - - return [ - 'archives' => $this->paginator->paginate($query, $page, $pageSize), - ]; - } - - /** - * @Route("/search", name="archive_search", methods={"GET"}) - * - * @Template - * - * @return array - */ - public function search(Request $request, ArchiveRepository $archiveRepository) { $q = $request->query->get('q'); - if ($q) { - $query = $archiveRepository->searchQuery($q); - $archives = $this->paginator->paginate($query, $request->query->getInt('page', 1), $this->getParameter('page_size'), ['wrap-queries' => true]); - } else { - $archives = []; - } + $query = $q ? $archiveRepository->searchQuery($q) : $archiveRepository->indexQuery(); return [ - 'archives' => $archives, + 'archives' => $this->paginator->paginate($query, $request->query->getInt('page', 1), $this->getParameter('page_size'), ['wrap-queries' => true]), 'q' => $q, ]; } - /** - * @Route("/typeahead", name="archive_typeahead", methods={"GET"}) - * - * @return JsonResponse - */ - public function typeahead(Request $request, ArchiveRepository $archiveRepository) { + #[Route(path: '/typeahead', name: 'archive_typeahead', methods: ['GET'])] + public function typeahead(Request $request, ArchiveRepository $archiveRepository) : JsonResponse { $q = $request->query->get('q'); if ( ! $q) { return new JsonResponse([]); @@ -88,20 +52,15 @@ public function typeahead(Request $request, ArchiveRepository $archiveRepository return new JsonResponse($data); } - /** - * @Route("/new", name="archive_new", methods={"GET", "POST"}) - * @Template - * @IsGranted("ROLE_CONTENT_ADMIN") - * - * @return array|RedirectResponse - */ - public function new(Request $request) { + #[Route(path: '/new', name: 'archive_new', methods: ['GET', 'POST'])] + #[Template] + #[IsGranted('ROLE_CONTENT_ADMIN')] + public function new(EntityManagerInterface $entityManager, Request $request) : array|RedirectResponse { $archive = new Archive(); $form = $this->createForm(ArchiveType::class, $archive); $form->handleRequest($request); if ($form->isSubmitted() && $form->isValid()) { - $entityManager = $this->getDoctrine()->getManager(); $entityManager->persist($archive); $entityManager->flush(); @@ -116,43 +75,23 @@ public function new(Request $request) { ]; } - /** - * @Route("/new_popup", name="archive_new_popup", methods={"GET", "POST"}) - * @Template - * @IsGranted("ROLE_CONTENT_ADMIN") - * - * @return array|RedirectResponse - */ - public function new_popup(Request $request) { - return $this->new($request); - } - - /** - * @Route("/{id}", name="archive_show", methods={"GET"}) - * @Template - * - * @return array - */ - public function show(Archive $archive) { + #[Route(path: '/{id}', name: 'archive_show', methods: ['GET'])] + #[Template] + public function show(Archive $archive) : array { return [ 'archive' => $archive, ]; } - /** - * @IsGranted("ROLE_CONTENT_ADMIN") - * @Route("/{id}/edit", name="archive_edit", methods={"GET", "POST"}) - * - * @Template - * - * @return array|RedirectResponse - */ - public function edit(Request $request, Archive $archive) { + #[IsGranted('ROLE_CONTENT_ADMIN')] + #[Route(path: '/{id}/edit', name: 'archive_edit', methods: ['GET', 'POST'])] + #[Template] + public function edit(EntityManagerInterface $entityManager, Request $request, Archive $archive) : array|RedirectResponse { $form = $this->createForm(ArchiveType::class, $archive); $form->handleRequest($request); if ($form->isSubmitted() && $form->isValid()) { - $this->getDoctrine()->getManager()->flush(); + $entityManager->flush(); $this->addFlash('success', 'The updated archive has been saved.'); return $this->redirectToRoute('archive_show', ['id' => $archive->getId()]); @@ -164,15 +103,10 @@ public function edit(Request $request, Archive $archive) { ]; } - /** - * @IsGranted("ROLE_CONTENT_ADMIN") - * @Route("/{id}", name="archive_delete", methods={"DELETE"}) - * - * @return RedirectResponse - */ - public function delete(Request $request, Archive $archive) { + #[IsGranted('ROLE_CONTENT_ADMIN')] + #[Route(path: '/{id}', name: 'archive_delete', methods: ['DELETE'])] + public function delete(EntityManagerInterface $entityManager, Request $request, Archive $archive) : RedirectResponse { if ($this->isCsrfTokenValid('delete' . $archive->getId(), $request->request->get('_token'))) { - $entityManager = $this->getDoctrine()->getManager(); $entityManager->remove($archive); $entityManager->flush(); $this->addFlash('success', 'The archive has been deleted.'); diff --git a/src/Controller/BookController.php b/src/Controller/BookController.php index b16f676..be365de 100644 --- a/src/Controller/BookController.php +++ b/src/Controller/BookController.php @@ -2,17 +2,12 @@ declare(strict_types=1); -/* - * (c) 2022 Michael Joyce - * This source file is subject to the GPL v2, bundled - * with this source code in the file LICENSE. - */ - namespace App\Controller; use App\Entity\Book; use App\Form\BookType; use App\Repository\BookRepository; +use Doctrine\ORM\EntityManagerInterface; use Knp\Bundle\PaginatorBundle\Definition\PaginatorAwareInterface; use Nines\UtilBundle\Controller\PaginatorTrait; use Sensio\Bundle\FrameworkExtraBundle\Configuration\IsGranted; @@ -23,55 +18,24 @@ use Symfony\Component\HttpFoundation\Request; use Symfony\Component\Routing\Annotation\Route; -/** - * @Route("/book") - */ +#[Route(path: '/book')] class BookController extends AbstractController implements PaginatorAwareInterface { use PaginatorTrait; - /** - * @Route("/", name="book_index", methods={"GET"}) - * - * @Template - */ + #[Route(path: '/', name: 'book_index', methods: ['GET'])] + #[Template] public function index(Request $request, BookRepository $bookRepository) : array { - $query = $bookRepository->indexQuery(); - $pageSize = (int) $this->getParameter('page_size'); - $page = $request->query->getint('page', 1); - - return [ - 'books' => $this->paginator->paginate($query, $page, $pageSize), - ]; - } - - /** - * @Route("/search", name="book_search", methods={"GET"}) - * - * @Template - * - * @return array - */ - public function search(Request $request, BookRepository $bookRepository) { $q = $request->query->get('q'); - if ($q) { - $query = $bookRepository->searchQuery($q); - $books = $this->paginator->paginate($query, $request->query->getInt('page', 1), $this->getParameter('page_size'), ['wrap-queries' => true]); - } else { - $books = []; - } + $query = $q ? $bookRepository->searchQuery($q) : $bookRepository->indexQuery(); return [ - 'books' => $books, + 'books' => $this->paginator->paginate($query, $request->query->getInt('page', 1), $this->getParameter('page_size'), ['wrap-queries' => true]), 'q' => $q, ]; } - /** - * @Route("/typeahead", name="book_typeahead", methods={"GET"}) - * - * @return JsonResponse - */ - public function typeahead(Request $request, BookRepository $bookRepository) { + #[Route(path: '/typeahead', name: 'book_typeahead', methods: ['GET'])] + public function typeahead(Request $request, BookRepository $bookRepository) : JsonResponse { $q = $request->query->get('q'); if (( ! $q) || (mb_strlen($q) < 4)) { return new JsonResponse([]); @@ -88,20 +52,15 @@ public function typeahead(Request $request, BookRepository $bookRepository) { return new JsonResponse($data); } - /** - * @Route("/new", name="book_new", methods={"GET", "POST"}) - * @Template - * @IsGranted("ROLE_CONTENT_ADMIN") - * - * @return array|RedirectResponse - */ - public function new(Request $request) { + #[Route(path: '/new', name: 'book_new', methods: ['GET', 'POST'])] + #[Template] + #[IsGranted('ROLE_CONTENT_ADMIN')] + public function new(EntityManagerInterface $entityManager, Request $request) : array|RedirectResponse { $book = new Book(); $form = $this->createForm(BookType::class, $book); $form->handleRequest($request); if ($form->isSubmitted() && $form->isValid()) { - $entityManager = $this->getDoctrine()->getManager(); $entityManager->persist($book); $entityManager->flush(); @@ -116,43 +75,23 @@ public function new(Request $request) { ]; } - /** - * @Route("/new_popup", name="book_new_popup", methods={"GET", "POST"}) - * @Template - * @IsGranted("ROLE_CONTENT_ADMIN") - * - * @return array|RedirectResponse - */ - public function new_popup(Request $request) { - return $this->new($request); - } - - /** - * @Route("/{id}", name="book_show", methods={"GET"}) - * @Template - * - * @return array - */ - public function show(Book $book) { + #[Route(path: '/{id}', name: 'book_show', methods: ['GET'])] + #[Template] + public function show(Book $book) : array { return [ 'book' => $book, ]; } - /** - * @IsGranted("ROLE_CONTENT_ADMIN") - * @Route("/{id}/edit", name="book_edit", methods={"GET", "POST"}) - * - * @Template - * - * @return array|RedirectResponse - */ - public function edit(Request $request, Book $book) { + #[IsGranted('ROLE_CONTENT_ADMIN')] + #[Route(path: '/{id}/edit', name: 'book_edit', methods: ['GET', 'POST'])] + #[Template] + public function edit(EntityManagerInterface $entityManager, Request $request, Book $book) : array|RedirectResponse { $form = $this->createForm(BookType::class, $book); $form->handleRequest($request); if ($form->isSubmitted() && $form->isValid()) { - $this->getDoctrine()->getManager()->flush(); + $entityManager->flush(); $this->addFlash('success', 'The updated book has been saved.'); return $this->redirectToRoute('book_show', ['id' => $book->getId()]); @@ -164,15 +103,10 @@ public function edit(Request $request, Book $book) { ]; } - /** - * @IsGranted("ROLE_CONTENT_ADMIN") - * @Route("/{id}", name="book_delete", methods={"DELETE"}) - * - * @return RedirectResponse - */ - public function delete(Request $request, Book $book) { + #[IsGranted('ROLE_CONTENT_ADMIN')] + #[Route(path: '/{id}', name: 'book_delete', methods: ['DELETE'])] + public function delete(EntityManagerInterface $entityManager, Request $request, Book $book) : RedirectResponse { if ($this->isCsrfTokenValid('delete' . $book->getId(), $request->request->get('_token'))) { - $entityManager = $this->getDoctrine()->getManager(); $entityManager->remove($book); $entityManager->flush(); $this->addFlash('success', 'The book has been deleted.'); diff --git a/src/Controller/CountyController.php b/src/Controller/CountyController.php index 79ba155..43f84e1 100644 --- a/src/Controller/CountyController.php +++ b/src/Controller/CountyController.php @@ -2,17 +2,12 @@ declare(strict_types=1); -/* - * (c) 2022 Michael Joyce - * This source file is subject to the GPL v2, bundled - * with this source code in the file LICENSE. - */ - namespace App\Controller; use App\Entity\County; use App\Form\CountyType; use App\Repository\CountyRepository; +use Doctrine\ORM\EntityManagerInterface; use Knp\Bundle\PaginatorBundle\Definition\PaginatorAwareInterface; use Nines\UtilBundle\Controller\PaginatorTrait; use Sensio\Bundle\FrameworkExtraBundle\Configuration\IsGranted; @@ -23,55 +18,24 @@ use Symfony\Component\HttpFoundation\Request; use Symfony\Component\Routing\Annotation\Route; -/** - * @Route("/county") - */ +#[Route(path: '/county')] class CountyController extends AbstractController implements PaginatorAwareInterface { use PaginatorTrait; - /** - * @Route("/", name="county_index", methods={"GET"}) - * - * @Template - */ + #[Route(path: '/', name: 'county_index', methods: ['GET'])] + #[Template] public function index(Request $request, CountyRepository $countyRepository) : array { - $query = $countyRepository->indexQuery(); - $pageSize = $this->getParameter('page_size'); - $page = $request->query->getint('page', 1); - - return [ - 'counties' => $this->paginator->paginate($query, $page, $pageSize), - ]; - } - - /** - * @Route("/search", name="county_search", methods={"GET"}) - * - * @Template - * - * @return array - */ - public function search(Request $request, CountyRepository $countyRepository) { $q = $request->query->get('q'); - if ($q) { - $query = $countyRepository->searchQuery($q); - $counties = $this->paginator->paginate($query, $request->query->getInt('page', 1), $this->getParameter('page_size'), ['wrap-queries' => true]); - } else { - $counties = []; - } + $query = $q ? $countyRepository->searchQuery($q) : $countyRepository->indexQuery(); return [ - 'counties' => $counties, + 'counties' => $this->paginator->paginate($query, $request->query->getInt('page', 1), $this->getParameter('page_size'), ['wrap-queries' => true]), 'q' => $q, ]; } - /** - * @Route("/typeahead", name="county_typeahead", methods={"GET"}) - * - * @return JsonResponse - */ - public function typeahead(Request $request, CountyRepository $countyRepository) { + #[Route(path: '/typeahead', name: 'county_typeahead', methods: ['GET'])] + public function typeahead(Request $request, CountyRepository $countyRepository) : JsonResponse { $q = $request->query->get('q'); if ( ! $q) { return new JsonResponse([]); @@ -88,20 +52,15 @@ public function typeahead(Request $request, CountyRepository $countyRepository) return new JsonResponse($data); } - /** - * @Route("/new", name="county_new", methods={"GET", "POST"}) - * @Template - * @IsGranted("ROLE_CONTENT_ADMIN") - * - * @return array|RedirectResponse - */ - public function new(Request $request) { + #[Route(path: '/new', name: 'county_new', methods: ['GET', 'POST'])] + #[Template] + #[IsGranted('ROLE_CONTENT_ADMIN')] + public function new(EntityManagerInterface $entityManager, Request $request) : array|RedirectResponse { $county = new County(); $form = $this->createForm(CountyType::class, $county); $form->handleRequest($request); if ($form->isSubmitted() && $form->isValid()) { - $entityManager = $this->getDoctrine()->getManager(); $entityManager->persist($county); $entityManager->flush(); @@ -116,43 +75,23 @@ public function new(Request $request) { ]; } - /** - * @Route("/new_popup", name="county_new_popup", methods={"GET", "POST"}) - * @Template - * @IsGranted("ROLE_CONTENT_ADMIN") - * - * @return array|RedirectResponse - */ - public function new_popup(Request $request) { - return $this->new($request); - } - - /** - * @Route("/{id}", name="county_show", methods={"GET"}) - * @Template - * - * @return array - */ - public function show(County $county) { + #[Route(path: '/{id}', name: 'county_show', methods: ['GET'])] + #[Template] + public function show(County $county) : array { return [ 'county' => $county, ]; } - /** - * @IsGranted("ROLE_CONTENT_ADMIN") - * @Route("/{id}/edit", name="county_edit", methods={"GET", "POST"}) - * - * @Template - * - * @return array|RedirectResponse - */ - public function edit(Request $request, County $county) { + #[IsGranted('ROLE_CONTENT_ADMIN')] + #[Route(path: '/{id}/edit', name: 'county_edit', methods: ['GET', 'POST'])] + #[Template] + public function edit(EntityManagerInterface $entityManager, Request $request, County $county) : array|RedirectResponse { $form = $this->createForm(CountyType::class, $county); $form->handleRequest($request); if ($form->isSubmitted() && $form->isValid()) { - $this->getDoctrine()->getManager()->flush(); + $entityManager->flush(); $this->addFlash('success', 'The updated county has been saved.'); return $this->redirectToRoute('county_show', ['id' => $county->getId()]); @@ -164,15 +103,10 @@ public function edit(Request $request, County $county) { ]; } - /** - * @IsGranted("ROLE_CONTENT_ADMIN") - * @Route("/{id}", name="county_delete", methods={"DELETE"}) - * - * @return RedirectResponse - */ - public function delete(Request $request, County $county) { + #[IsGranted('ROLE_CONTENT_ADMIN')] + #[Route(path: '/{id}', name: 'county_delete', methods: ['DELETE'])] + public function delete(EntityManagerInterface $entityManager, Request $request, County $county) : RedirectResponse { if ($this->isCsrfTokenValid('delete' . $county->getId(), $request->request->get('_token'))) { - $entityManager = $this->getDoctrine()->getManager(); $entityManager->remove($county); $entityManager->flush(); $this->addFlash('success', 'The county has been deleted.'); diff --git a/src/Controller/DefaultController.php b/src/Controller/DefaultController.php index 023dca9..33d0ee3 100644 --- a/src/Controller/DefaultController.php +++ b/src/Controller/DefaultController.php @@ -2,38 +2,26 @@ declare(strict_types=1); -/* - * (c) 2022 Michael Joyce - * This source file is subject to the GPL v2, bundled - * with this source code in the file LICENSE. - */ - namespace App\Controller; use Knp\Bundle\PaginatorBundle\Definition\PaginatorAwareInterface; use Nines\UtilBundle\Controller\PaginatorTrait; use Sensio\Bundle\FrameworkExtraBundle\Configuration\Template; use Symfony\Bundle\FrameworkBundle\Controller\AbstractController; -use Symfony\Component\HttpFoundation\Request; use Symfony\Component\Routing\Annotation\Route; class DefaultController extends AbstractController implements PaginatorAwareInterface { use PaginatorTrait; - /** - * @Route("/", name="homepage") - * @Template - * - * @return array - */ - public function indexAction(Request $request) { + #[Route(path: '/', name: 'homepage')] + #[Template] + public function index() : array { return []; } - /** - * @Route("/privacy", name="privacy") - * @Template - */ - public function privacyAction(Request $request) : void { + #[Route(path: '/privacy', name: 'privacy')] + #[Template] + public function privacy() : array { + return []; } } diff --git a/src/Controller/DioceseController.php b/src/Controller/DioceseController.php index e7cce1a..e016947 100644 --- a/src/Controller/DioceseController.php +++ b/src/Controller/DioceseController.php @@ -2,17 +2,12 @@ declare(strict_types=1); -/* - * (c) 2022 Michael Joyce - * This source file is subject to the GPL v2, bundled - * with this source code in the file LICENSE. - */ - namespace App\Controller; use App\Entity\Diocese; use App\Form\DioceseType; use App\Repository\DioceseRepository; +use Doctrine\ORM\EntityManagerInterface; use Knp\Bundle\PaginatorBundle\Definition\PaginatorAwareInterface; use Nines\UtilBundle\Controller\PaginatorTrait; use Sensio\Bundle\FrameworkExtraBundle\Configuration\IsGranted; @@ -23,55 +18,24 @@ use Symfony\Component\HttpFoundation\Request; use Symfony\Component\Routing\Annotation\Route; -/** - * @Route("/diocese") - */ +#[Route(path: '/diocese')] class DioceseController extends AbstractController implements PaginatorAwareInterface { use PaginatorTrait; - /** - * @Route("/", name="diocese_index", methods={"GET"}) - * - * @Template - */ + #[Route(path: '/', name: 'diocese_index', methods: ['GET'])] + #[Template] public function index(Request $request, DioceseRepository $dioceseRepository) : array { - $query = $dioceseRepository->indexQuery(); - $pageSize = $this->getParameter('page_size'); - $page = $request->query->getint('page', 1); - - return [ - 'dioceses' => $this->paginator->paginate($query, $page, $pageSize), - ]; - } - - /** - * @Route("/search", name="diocese_search", methods={"GET"}) - * - * @Template - * - * @return array - */ - public function search(Request $request, DioceseRepository $dioceseRepository) { $q = $request->query->get('q'); - if ($q) { - $query = $dioceseRepository->searchQuery($q); - $dioceses = $this->paginator->paginate($query, $request->query->getInt('page', 1), $this->getParameter('page_size'), ['wrap-queries' => true]); - } else { - $dioceses = []; - } + $query = $q ? $dioceseRepository->searchQuery($q) : $dioceseRepository->indexQuery(); return [ - 'dioceses' => $dioceses, + 'dioceses' => $this->paginator->paginate($query, $request->query->getInt('page', 1), $this->getParameter('page_size'), ['wrap-queries' => true]), 'q' => $q, ]; } - /** - * @Route("/typeahead", name="diocese_typeahead", methods={"GET"}) - * - * @return JsonResponse - */ - public function typeahead(Request $request, DioceseRepository $dioceseRepository) { + #[Route(path: '/typeahead', name: 'diocese_typeahead', methods: ['GET'])] + public function typeahead(Request $request, DioceseRepository $dioceseRepository) : JsonResponse { $q = $request->query->get('q'); if ( ! $q) { return new JsonResponse([]); @@ -88,20 +52,15 @@ public function typeahead(Request $request, DioceseRepository $dioceseRepository return new JsonResponse($data); } - /** - * @Route("/new", name="diocese_new", methods={"GET", "POST"}) - * @Template - * @IsGranted("ROLE_CONTENT_ADMIN") - * - * @return array|RedirectResponse - */ - public function new(Request $request) { + #[Route(path: '/new', name: 'diocese_new', methods: ['GET', 'POST'])] + #[Template] + #[IsGranted('ROLE_CONTENT_ADMIN')] + public function new(EntityManagerInterface $entityManager, Request $request) : array|RedirectResponse { $diocese = new Diocese(); $form = $this->createForm(DioceseType::class, $diocese); $form->handleRequest($request); if ($form->isSubmitted() && $form->isValid()) { - $entityManager = $this->getDoctrine()->getManager(); $entityManager->persist($diocese); $entityManager->flush(); @@ -116,43 +75,23 @@ public function new(Request $request) { ]; } - /** - * @Route("/new_popup", name="diocese_new_popup", methods={"GET", "POST"}) - * @Template - * @IsGranted("ROLE_CONTENT_ADMIN") - * - * @return array|RedirectResponse - */ - public function new_popup(Request $request) { - return $this->new($request); - } - - /** - * @Route("/{id}", name="diocese_show", methods={"GET"}) - * @Template - * - * @return array - */ - public function show(Diocese $diocese) { + #[Route(path: '/{id}', name: 'diocese_show', methods: ['GET'])] + #[Template] + public function show(Diocese $diocese) : array { return [ 'diocese' => $diocese, ]; } - /** - * @IsGranted("ROLE_CONTENT_ADMIN") - * @Route("/{id}/edit", name="diocese_edit", methods={"GET", "POST"}) - * - * @Template - * - * @return array|RedirectResponse - */ - public function edit(Request $request, Diocese $diocese) { + #[IsGranted('ROLE_CONTENT_ADMIN')] + #[Route(path: '/{id}/edit', name: 'diocese_edit', methods: ['GET', 'POST'])] + #[Template] + public function edit(EntityManagerInterface $entityManager, Request $request, Diocese $diocese) : array|RedirectResponse { $form = $this->createForm(DioceseType::class, $diocese); $form->handleRequest($request); if ($form->isSubmitted() && $form->isValid()) { - $this->getDoctrine()->getManager()->flush(); + $entityManager->flush(); $this->addFlash('success', 'The updated diocese has been saved.'); return $this->redirectToRoute('diocese_show', ['id' => $diocese->getId()]); @@ -164,15 +103,10 @@ public function edit(Request $request, Diocese $diocese) { ]; } - /** - * @IsGranted("ROLE_CONTENT_ADMIN") - * @Route("/{id}", name="diocese_delete", methods={"DELETE"}) - * - * @return RedirectResponse - */ - public function delete(Request $request, Diocese $diocese) { + #[IsGranted('ROLE_CONTENT_ADMIN')] + #[Route(path: '/{id}', name: 'diocese_delete', methods: ['DELETE'])] + public function delete(EntityManagerInterface $entityManager, Request $request, Diocese $diocese) : RedirectResponse { if ($this->isCsrfTokenValid('delete' . $diocese->getId(), $request->request->get('_token'))) { - $entityManager = $this->getDoctrine()->getManager(); $entityManager->remove($diocese); $entityManager->flush(); $this->addFlash('success', 'The diocese has been deleted.'); diff --git a/src/Controller/FormatController.php b/src/Controller/FormatController.php index ad2c656..b863402 100644 --- a/src/Controller/FormatController.php +++ b/src/Controller/FormatController.php @@ -2,17 +2,12 @@ declare(strict_types=1); -/* - * (c) 2022 Michael Joyce - * This source file is subject to the GPL v2, bundled - * with this source code in the file LICENSE. - */ - namespace App\Controller; use App\Entity\Format; use App\Form\FormatType; use App\Repository\FormatRepository; +use Doctrine\ORM\EntityManagerInterface; use Knp\Bundle\PaginatorBundle\Definition\PaginatorAwareInterface; use Nines\UtilBundle\Controller\PaginatorTrait; use Sensio\Bundle\FrameworkExtraBundle\Configuration\IsGranted; @@ -23,55 +18,24 @@ use Symfony\Component\HttpFoundation\Request; use Symfony\Component\Routing\Annotation\Route; -/** - * @Route("/format") - */ +#[Route(path: '/format')] class FormatController extends AbstractController implements PaginatorAwareInterface { use PaginatorTrait; - /** - * @Route("/", name="format_index", methods={"GET"}) - * - * @Template - */ + #[Route(path: '/', name: 'format_index', methods: ['GET'])] + #[Template] public function index(Request $request, FormatRepository $formatRepository) : array { - $query = $formatRepository->indexQuery(); - $pageSize = (int) $this->getParameter('page_size'); - $page = $request->query->getint('page', 1); - - return [ - 'formats' => $this->paginator->paginate($query, $page, $pageSize), - ]; - } - - /** - * @Route("/search", name="format_search", methods={"GET"}) - * - * @Template - * - * @return array - */ - public function search(Request $request, FormatRepository $formatRepository) { $q = $request->query->get('q'); - if ($q) { - $query = $formatRepository->searchQuery($q); - $formats = $this->paginator->paginate($query, $request->query->getInt('page', 1), $this->getParameter('page_size'), ['wrap-queries' => true]); - } else { - $formats = []; - } + $query = $q ? $formatRepository->searchQuery($q) : $formatRepository->indexQuery(); return [ - 'formats' => $formats, + 'formats' => $this->paginator->paginate($query, $request->query->getInt('page', 1), $this->getParameter('page_size'), ['wrap-queries' => true]), 'q' => $q, ]; } - /** - * @Route("/typeahead", name="format_typeahead", methods={"GET"}) - * - * @return JsonResponse - */ - public function typeahead(Request $request, FormatRepository $formatRepository) { + #[Route(path: '/typeahead', name: 'format_typeahead', methods: ['GET'])] + public function typeahead(Request $request, FormatRepository $formatRepository) : JsonResponse { $q = $request->query->get('q'); if ( ! $q) { return new JsonResponse([]); @@ -88,20 +52,15 @@ public function typeahead(Request $request, FormatRepository $formatRepository) return new JsonResponse($data); } - /** - * @Route("/new", name="format_new", methods={"GET", "POST"}) - * @Template - * @IsGranted("ROLE_CONTENT_ADMIN") - * - * @return array|RedirectResponse - */ - public function new(Request $request) { + #[Route(path: '/new', name: 'format_new', methods: ['GET', 'POST'])] + #[Template] + #[IsGranted('ROLE_CONTENT_ADMIN')] + public function new(EntityManagerInterface $entityManager, Request $request) : array|RedirectResponse { $format = new Format(); $form = $this->createForm(FormatType::class, $format); $form->handleRequest($request); if ($form->isSubmitted() && $form->isValid()) { - $entityManager = $this->getDoctrine()->getManager(); $entityManager->persist($format); $entityManager->flush(); $this->addFlash('success', 'The new format has been saved.'); @@ -115,43 +74,23 @@ public function new(Request $request) { ]; } - /** - * @Route("/new_popup", name="format_new_popup", methods={"GET", "POST"}) - * @Template - * @IsGranted("ROLE_CONTENT_ADMIN") - * - * @return array|RedirectResponse - */ - public function new_popup(Request $request) { - return $this->new($request); - } - - /** - * @Route("/{id}", name="format_show", methods={"GET"}) - * @Template - * - * @return array - */ - public function show(Format $format) { + #[Route(path: '/{id}', name: 'format_show', methods: ['GET'])] + #[Template] + public function show(Format $format) : array { return [ 'format' => $format, ]; } - /** - * @IsGranted("ROLE_CONTENT_ADMIN") - * @Route("/{id}/edit", name="format_edit", methods={"GET", "POST"}) - * - * @Template - * - * @return array|RedirectResponse - */ - public function edit(Request $request, Format $format) { + #[IsGranted('ROLE_CONTENT_ADMIN')] + #[Route(path: '/{id}/edit', name: 'format_edit', methods: ['GET', 'POST'])] + #[Template] + public function edit(EntityManagerInterface $entityManager, Request $request, Format $format) : array|RedirectResponse { $form = $this->createForm(FormatType::class, $format); $form->handleRequest($request); if ($form->isSubmitted() && $form->isValid()) { - $this->getDoctrine()->getManager()->flush(); + $entityManager->flush(); $this->addFlash('success', 'The updated format has been saved.'); return $this->redirectToRoute('format_show', ['id' => $format->getId()]); @@ -163,15 +102,10 @@ public function edit(Request $request, Format $format) { ]; } - /** - * @IsGranted("ROLE_CONTENT_ADMIN") - * @Route("/{id}", name="format_delete", methods={"DELETE"}) - * - * @return RedirectResponse - */ - public function delete(Request $request, Format $format) { + #[IsGranted('ROLE_CONTENT_ADMIN')] + #[Route(path: '/{id}', name: 'format_delete', methods: ['DELETE'])] + public function delete(EntityManagerInterface $entityManager, Request $request, Format $format) : RedirectResponse { if ($this->isCsrfTokenValid('delete' . $format->getId(), $request->request->get('_token'))) { - $entityManager = $this->getDoctrine()->getManager(); $entityManager->remove($format); $entityManager->flush(); $this->addFlash('success', 'The format has been deleted.'); diff --git a/src/Controller/HoldingController.php b/src/Controller/HoldingController.php index 9e4da35..c25d7b7 100644 --- a/src/Controller/HoldingController.php +++ b/src/Controller/HoldingController.php @@ -2,19 +2,12 @@ declare(strict_types=1); -/* - * (c) 2022 Michael Joyce - * This source file is subject to the GPL v2, bundled - * with this source code in the file LICENSE. - */ - namespace App\Controller; use App\Entity\Holding; use App\Form\HoldingType; use App\Repository\HoldingRepository; use Doctrine\ORM\EntityManagerInterface; -use Exception; use Knp\Bundle\PaginatorBundle\Definition\PaginatorAwareInterface; use Nines\MediaBundle\Controller\ImageControllerTrait; use Nines\MediaBundle\Entity\Image; @@ -27,42 +20,30 @@ use Symfony\Component\HttpFoundation\Request; use Symfony\Component\Routing\Annotation\Route; -/** - * @Route("/holding") - */ +#[Route(path: '/holding')] class HoldingController extends AbstractController implements PaginatorAwareInterface { use PaginatorTrait; use ImageControllerTrait; - /** - * @Route("/", name="holding_index", methods={"GET"}) - * - * @Template(template="holding/index.html.twig") - */ + #[Route(path: '/', name: 'holding_index', methods: ['GET'])] + #[Template('holding/index.html.twig')] public function index(Request $request, HoldingRepository $holdingRepository) : array { $query = $holdingRepository->indexQuery(); - $pageSize = (int) $this->getParameter('page_size'); - $page = $request->query->getint('page', 1); return [ - 'holdings' => $this->paginator->paginate($query, $page, $pageSize), + 'holdings' => $this->paginator->paginate($query, $request->query->getInt('page', 1), $this->getParameter('page_size'), ['wrap-queries' => true]), ]; } - /** - * @Route("/new", name="holding_new", methods={"GET", "POST"}) - * @Template(template="holding/new.html.twig") - * @IsGranted("ROLE_CONTENT_ADMIN") - * - * @return array|RedirectResponse - */ - public function new(Request $request) { + #[Route(path: '/new', name: 'holding_new', methods: ['GET', 'POST'])] + #[Template('holding/new.html.twig')] + #[IsGranted('ROLE_CONTENT_ADMIN')] + public function new(EntityManagerInterface $entityManager, Request $request) : array|RedirectResponse { $holding = new Holding(); $form = $this->createForm(HoldingType::class, $holding); $form->handleRequest($request); if ($form->isSubmitted() && $form->isValid()) { - $entityManager = $this->getDoctrine()->getManager(); $entityManager->persist($holding); $entityManager->flush(); $this->addFlash('success', 'The new surviving text has been saved.'); @@ -76,43 +57,23 @@ public function new(Request $request) { ]; } - /** - * @Route("/new_popup", name="holding_new_popup", methods={"GET", "POST"}) - * @Template(template="holding/new_popup.html.twig") - * @IsGranted("ROLE_CONTENT_ADMIN") - * - * @return array|RedirectResponse - */ - public function new_popup(Request $request) { - return $this->new($request); - } - - /** - * @Route("/{id}", name="holding_show", methods={"GET"}) - * @Template(template="holding/show.html.twig") - * - * @return array - */ - public function show(Holding $holding) { + #[Route(path: '/{id}', name: 'holding_show', methods: ['GET'])] + #[Template('holding/show.html.twig')] + public function show(Holding $holding) : array { return [ 'holding' => $holding, ]; } - /** - * @IsGranted("ROLE_CONTENT_ADMIN") - * @Route("/{id}/edit", name="holding_edit", methods={"GET", "POST"}) - * - * @Template(template="holding/edit.html.twig") - * - * @return array|RedirectResponse - */ - public function edit(Request $request, Holding $holding) { + #[IsGranted('ROLE_CONTENT_ADMIN')] + #[Route(path: '/{id}/edit', name: 'holding_edit', methods: ['GET', 'POST'])] + #[Template('holding/edit.html.twig')] + public function edit(EntityManagerInterface $entityManager, Request $request, Holding $holding) : array|RedirectResponse { $form = $this->createForm(HoldingType::class, $holding); $form->handleRequest($request); if ($form->isSubmitted() && $form->isValid()) { - $this->getDoctrine()->getManager()->flush(); + $entityManager->flush(); $this->addFlash('success', 'The updated surviving text has been saved.'); return $this->redirectToRoute('holding_show', ['id' => $holding->getId()]); @@ -124,15 +85,10 @@ public function edit(Request $request, Holding $holding) { ]; } - /** - * @IsGranted("ROLE_CONTENT_ADMIN") - * @Route("/{id}", name="holding_delete", methods={"DELETE"}) - * - * @return RedirectResponse - */ - public function delete(Request $request, Holding $holding) { + #[IsGranted('ROLE_CONTENT_ADMIN')] + #[Route(path: '/{id}', name: 'holding_delete', methods: ['DELETE'])] + public function delete(EntityManagerInterface $entityManager, Request $request, Holding $holding) : RedirectResponse { if ($this->isCsrfTokenValid('delete' . $holding->getId(), $request->request->get('_token'))) { - $entityManager = $this->getDoctrine()->getManager(); $entityManager->remove($holding); $entityManager->flush(); $this->addFlash('success', 'The surviving text has been deleted.'); @@ -141,43 +97,25 @@ public function delete(Request $request, Holding $holding) { return $this->redirectToRoute('holding_index'); } - /** - * @Route("/{id}/new_image", name="holding_new_image", methods={"GET", "POST"}) - * @IsGranted("ROLE_CONTENT_ADMIN") - * - * @throws Exception - * - * @return array|RedirectResponse - * - * @Template("holding/new_image.html.twig") - */ - public function newImage(Request $request, EntityManagerInterface $em, holding $holding) { - return $this->newImageAction($request, $em, $holding, 'holding_show'); + #[Route(path: '/{id}/image/new', name: 'holding_image_new', methods: ['GET', 'POST'])] + #[IsGranted('ROLE_CONTENT_ADMIN')] + #[Template('holding/image_new.html.twig')] + public function newImage(Request $request, EntityManagerInterface $em, Holding $holding) : array|RedirectResponse { + return $this->newImageAction($request, $em, $holding, 'holding_show', ['id' => $holding->getId()]); } - /** - * @Route("/{id}/edit_image/{image_id}", name="holding_edit_image", methods={"GET", "POST"}) - * @IsGranted("ROLE_CONTENT_ADMIN") - * @ParamConverter("image", options={"id": "image_id"}) - * - * @throws Exception - * - * @return array|RedirectResponse - * - * @Template("holding/edit_image.html.twig") - */ - public function editImage(Request $request, EntityManagerInterface $em, holding $holding, Image $image) { - return $this->editImageAction($request, $em, $holding, $image, 'holding_show'); + #[Route(path: '/{id}/image/{image_id}/edit', name: 'holding_image_edit', methods: ['GET', 'POST'])] + #[IsGranted('ROLE_CONTENT_ADMIN')] + #[Template('holding/image_edit.html.twig')] + #[ParamConverter('image', options: ['id' => 'image_id'])] + public function editImage(Request $request, EntityManagerInterface $em, Holding $holding, Image $image) : array|RedirectResponse { + return $this->editImageAction($request, $em, $holding, $image, 'holding_show', ['id' => $holding->getId()]); } - /** - * @Route("/{id}/delete_image/{image_id}", name="holding_delete_image", methods={"DELETE"}) - * @ParamConverter("image", options={"id": "image_id"}) - * @IsGranted("ROLE_CONTENT_ADMIN") - * - * @return RedirectResponse - */ - public function deleteImage(Request $request, EntityManagerInterface $em, holding $holding, Image $image) { - return $this->deleteImageAction($request, $em, $holding, $image, 'holding_show'); + #[Route(path: '/{id}/image/{image_id}', name: 'holding_image_delete', methods: ['DELETE'])] + #[IsGranted('ROLE_CONTENT_ADMIN')] + #[ParamConverter('image', options: ['id' => 'image_id'])] + public function deleteImage(Request $request, EntityManagerInterface $em, Holding $holding, Image $image) : RedirectResponse { + return $this->deleteImageAction($request, $em, $holding, $image, 'holding_show', ['id' => $holding->getId()]); } } diff --git a/src/Controller/InjunctionController.php b/src/Controller/InjunctionController.php index f0d2dff..df5ceeb 100644 --- a/src/Controller/InjunctionController.php +++ b/src/Controller/InjunctionController.php @@ -2,18 +2,12 @@ declare(strict_types=1); -/* - * (c) 2022 Michael Joyce - * This source file is subject to the GPL v2, bundled - * with this source code in the file LICENSE. - */ - namespace App\Controller; use App\Entity\Injunction; use App\Form\InjunctionType; use App\Repository\InjunctionRepository; - +use Doctrine\ORM\EntityManagerInterface; use Knp\Bundle\PaginatorBundle\Definition\PaginatorAwareInterface; use Nines\UtilBundle\Controller\PaginatorTrait; use Sensio\Bundle\FrameworkExtraBundle\Configuration\IsGranted; @@ -24,55 +18,24 @@ use Symfony\Component\HttpFoundation\Request; use Symfony\Component\Routing\Annotation\Route; -/** - * @Route("/injunction") - */ +#[Route(path: '/injunction')] class InjunctionController extends AbstractController implements PaginatorAwareInterface { use PaginatorTrait; - /** - * @Route("/", name="injunction_index", methods={"GET"}) - * - * @Template - */ + #[Route(path: '/', name: 'injunction_index', methods: ['GET'])] + #[Template] public function index(Request $request, InjunctionRepository $injunctionRepository) : array { - $query = $injunctionRepository->indexQuery(); - $pageSize = (int) $this->getParameter('page_size'); - $page = $request->query->getint('page', 1); - - return [ - 'injunctions' => $this->paginator->paginate($query, $page, $pageSize), - ]; - } - - /** - * @Route("/search", name="injunction_search", methods={"GET"}) - * - * @Template - * - * @return array - */ - public function search(Request $request, InjunctionRepository $injunctionRepository) { $q = $request->query->get('q'); - if ($q) { - $query = $injunctionRepository->searchQuery($q); - $injunctions = $this->paginator->paginate($query, $request->query->getInt('page', 1), $this->getParameter('page_size'), ['wrap-queries' => true]); - } else { - $injunctions = []; - } + $query = $q ? $injunctionRepository->searchQuery($q) : $injunctionRepository->indexQuery(); return [ - 'injunctions' => $injunctions, + 'injunctions' => $this->paginator->paginate($query, $request->query->getInt('page', 1), $this->getParameter('page_size'), ['wrap-queries' => true]), 'q' => $q, ]; } - /** - * @Route("/typeahead", name="injunction_typeahead", methods={"GET"}) - * - * @return JsonResponse - */ - public function typeahead(Request $request, InjunctionRepository $injunctionRepository) { + #[Route(path: '/typeahead', name: 'injunction_typeahead', methods: ['GET'])] + public function typeahead(Request $request, InjunctionRepository $injunctionRepository) : JsonResponse { $q = $request->query->get('q'); if ( ! $q) { return new JsonResponse([]); @@ -88,20 +51,15 @@ public function typeahead(Request $request, InjunctionRepository $injunctionRepo return new JsonResponse($data); } - /** - * @Route("/new", name="injunction_new", methods={"GET", "POST"}) - * @Template - * @IsGranted("ROLE_CONTENT_ADMIN") - * - * @return array|RedirectResponse - */ - public function new(Request $request) { + #[Route(path: '/new', name: 'injunction_new', methods: ['GET', 'POST'])] + #[Template] + #[IsGranted('ROLE_CONTENT_ADMIN')] + public function new(EntityManagerInterface $entityManager, Request $request) : array|RedirectResponse { $injunction = new Injunction(); $form = $this->createForm(InjunctionType::class, $injunction); $form->handleRequest($request); if ($form->isSubmitted() && $form->isValid()) { - $entityManager = $this->getDoctrine()->getManager(); $entityManager->persist($injunction); $entityManager->flush(); $this->addFlash('success', 'The new injunction has been saved.'); @@ -115,43 +73,23 @@ public function new(Request $request) { ]; } - /** - * @Route("/new_popup", name="injunction_new_popup", methods={"GET", "POST"}) - * @Template - * @IsGranted("ROLE_CONTENT_ADMIN") - * - * @return array|RedirectResponse - */ - public function new_popup(Request $request) { - return $this->new($request); - } - - /** - * @Route("/{id}", name="injunction_show", methods={"GET"}) - * @Template - * - * @return array - */ - public function show(Injunction $injunction) { + #[Route(path: '/{id}', name: 'injunction_show', methods: ['GET'])] + #[Template] + public function show(Injunction $injunction) : ?array { return [ 'injunction' => $injunction, ]; } - /** - * @IsGranted("ROLE_CONTENT_ADMIN") - * @Route("/{id}/edit", name="injunction_edit", methods={"GET", "POST"}) - * - * @Template - * - * @return array|RedirectResponse - */ - public function edit(Request $request, Injunction $injunction) { + #[IsGranted('ROLE_CONTENT_ADMIN')] + #[Route(path: '/{id}/edit', name: 'injunction_edit', methods: ['GET', 'POST'])] + #[Template] + public function edit(EntityManagerInterface $entityManager, Request $request, Injunction $injunction) : array|RedirectResponse { $form = $this->createForm(InjunctionType::class, $injunction); $form->handleRequest($request); if ($form->isSubmitted() && $form->isValid()) { - $this->getDoctrine()->getManager()->flush(); + $entityManager->flush(); $this->addFlash('success', 'The updated injunction has been saved.'); return $this->redirectToRoute('injunction_show', ['id' => $injunction->getId()]); @@ -163,15 +101,10 @@ public function edit(Request $request, Injunction $injunction) { ]; } - /** - * @IsGranted("ROLE_CONTENT_ADMIN") - * @Route("/{id}", name="injunction_delete", methods={"DELETE"}) - * - * @return RedirectResponse - */ - public function delete(Request $request, Injunction $injunction) { + #[IsGranted('ROLE_CONTENT_ADMIN')] + #[Route(path: '/{id}', name: 'injunction_delete', methods: ['DELETE'])] + public function delete(EntityManagerInterface $entityManager, Request $request, Injunction $injunction) : RedirectResponse { if ($this->isCsrfTokenValid('delete' . $injunction->getId(), $request->request->get('_token'))) { - $entityManager = $this->getDoctrine()->getManager(); $entityManager->remove($injunction); $entityManager->flush(); $this->addFlash('success', 'The injunction has been deleted.'); diff --git a/src/Controller/InventoryController.php b/src/Controller/InventoryController.php index 875f483..493db28 100644 --- a/src/Controller/InventoryController.php +++ b/src/Controller/InventoryController.php @@ -2,19 +2,12 @@ declare(strict_types=1); -/* - * (c) 2022 Michael Joyce - * This source file is subject to the GPL v2, bundled - * with this source code in the file LICENSE. - */ - namespace App\Controller; use App\Entity\Inventory; use App\Form\InventoryType; use App\Repository\InventoryRepository; use Doctrine\ORM\EntityManagerInterface; -use Exception; use Knp\Bundle\PaginatorBundle\Definition\PaginatorAwareInterface; use Nines\MediaBundle\Controller\ImageControllerTrait; use Nines\MediaBundle\Entity\Image; @@ -27,64 +20,32 @@ use Symfony\Component\HttpFoundation\Request; use Symfony\Component\Routing\Annotation\Route; -/** - * @Route("/inventory") - */ +#[Route(path: '/inventory')] class InventoryController extends AbstractController implements PaginatorAwareInterface { use PaginatorTrait; use ImageControllerTrait; - /** - * @Route("/", name="inventory_index", methods={"GET"}) - * - * @Template(template="inventory/index.html.twig") - */ + #[Route(path: '/', name: 'inventory_index', methods: ['GET'])] + #[Template('inventory/index.html.twig')] public function index(Request $request, InventoryRepository $inventoryRepository) : array { - $query = $inventoryRepository->indexQuery(); - $pageSize = (int) $this->getParameter('page_size'); - $page = $request->query->getint('page', 1); - - return [ - 'inventories' => $this->paginator->paginate($query, $page, $pageSize), - ]; - } - - /** - * @Route("/search", name="inventory_search", methods={"GET"}) - * - * @Template(template="inventory/search.html.twig") - * - * @return array - */ - public function search(Request $request, InventoryRepository $inventoryRepository) { $q = $request->query->get('q'); - if ($q) { - $query = $inventoryRepository->searchQuery($q); - $inventories = $this->paginator->paginate($query, $request->query->getInt('page', 1), $this->getParameter('page_size'), ['wrap-queries' => true]); - } else { - $inventories = []; - } + $query = $q ? $inventoryRepository->searchQuery($q) : $inventoryRepository->indexQuery(); return [ - 'inventories' => $inventories, + 'inventories' => $this->paginator->paginate($query, $request->query->getInt('page', 1), $this->getParameter('page_size'), ['wrap-queries' => true]), 'q' => $q, ]; } - /** - * @Route("/new", name="inventory_new", methods={"GET", "POST"}) - * @Template(template="inventory/new.html.twig") - * @IsGranted("ROLE_CONTENT_ADMIN") - * - * @return array|RedirectResponse - */ - public function new(Request $request) { + #[Route(path: '/new', name: 'inventory_new', methods: ['GET', 'POST'])] + #[Template('inventory/new.html.twig')] + #[IsGranted('ROLE_CONTENT_ADMIN')] + public function new(EntityManagerInterface $entityManager, Request $request) : array|RedirectResponse { $inventory = new Inventory(); $form = $this->createForm(InventoryType::class, $inventory); $form->handleRequest($request); if ($form->isSubmitted() && $form->isValid()) { - $entityManager = $this->getDoctrine()->getManager(); $entityManager->persist($inventory); $entityManager->flush(); $this->addFlash('success', 'The new inventory has been saved.'); @@ -98,43 +59,23 @@ public function new(Request $request) { ]; } - /** - * @Route("/new_popup", name="inventory_new_popup", methods={"GET", "POST"}) - * @Template(template="inventory/new_popup.html.twig") - * @IsGranted("ROLE_CONTENT_ADMIN") - * - * @return array|RedirectResponse - */ - public function new_popup(Request $request) { - return $this->new($request); - } - - /** - * @Route("/{id}", name="inventory_show", methods={"GET"}) - * @Template(template="inventory/show.html.twig") - * - * @return array - */ - public function show(Inventory $inventory) { + #[Route(path: '/{id}', name: 'inventory_show', methods: ['GET'])] + #[Template('inventory/show.html.twig')] + public function show(Inventory $inventory) : ?array { return [ 'inventory' => $inventory, ]; } - /** - * @IsGranted("ROLE_CONTENT_ADMIN") - * @Route("/{id}/edit", name="inventory_edit", methods={"GET", "POST"}) - * - * @Template(template="inventory/edit.html.twig") - * - * @return array|RedirectResponse - */ - public function edit(Request $request, Inventory $inventory) { + #[IsGranted('ROLE_CONTENT_ADMIN')] + #[Route(path: '/{id}/edit', name: 'inventory_edit', methods: ['GET', 'POST'])] + #[Template('inventory/edit.html.twig')] + public function edit(EntityManagerInterface $entityManager, Request $request, Inventory $inventory) : array|RedirectResponse { $form = $this->createForm(InventoryType::class, $inventory); $form->handleRequest($request); if ($form->isSubmitted() && $form->isValid()) { - $this->getDoctrine()->getManager()->flush(); + $entityManager->flush(); $this->addFlash('success', 'The updated inventory has been saved.'); return $this->redirectToRoute('inventory_show', ['id' => $inventory->getId()]); @@ -146,15 +87,10 @@ public function edit(Request $request, Inventory $inventory) { ]; } - /** - * @IsGranted("ROLE_CONTENT_ADMIN") - * @Route("/{id}", name="inventory_delete", methods={"DELETE"}) - * - * @return RedirectResponse - */ - public function delete(Request $request, Inventory $inventory) { + #[IsGranted('ROLE_CONTENT_ADMIN')] + #[Route(path: '/{id}', name: 'inventory_delete', methods: ['DELETE'])] + public function delete(EntityManagerInterface $entityManager, Request $request, Inventory $inventory) : RedirectResponse { if ($this->isCsrfTokenValid('delete' . $inventory->getId(), $request->request->get('_token'))) { - $entityManager = $this->getDoctrine()->getManager(); $entityManager->remove($inventory); $entityManager->flush(); $this->addFlash('success', 'The inventory has been deleted.'); @@ -163,45 +99,25 @@ public function delete(Request $request, Inventory $inventory) { return $this->redirectToRoute('inventory_index'); } - /** - * @Route("/{id}/new_image", name="inventory_new_image", methods={"GET", "POST"}) - * @IsGranted("ROLE_CONTENT_ADMIN") - * - * @throws Exception - * - * @return array|RedirectResponse - * - * @Template(template="@NinesMedia/image/new.html.twig") - */ - public function newImage(Request $request, EntityManagerInterface $em, Inventory $inventory) { - return $this->newImageAction($request, $em, $inventory, 'inventory_show'); + #[Route(path: '/{id}/image/new', name: 'inventory_image_new', methods: ['GET', 'POST'])] + #[IsGranted('ROLE_CONTENT_ADMIN')] + #[Template('inventory/image_new.html.twig')] + public function newImage(Request $request, EntityManagerInterface $em, Inventory $inventory) : array|RedirectResponse { + return $this->newImageAction($request, $em, $inventory, 'inventory_show', ['id' => $inventory->getId()]); } - /** - * @Route("/{id}/edit_image/{image_id}", name="inventory_edit_image", methods={"GET", "POST"}) - * @IsGranted("ROLE_CONTENT_ADMIN") - * @ParamConverter("image", options={"id": "image_id"}) - * - * @throws Exception - * - * @return array|RedirectResponse - * - * @Template(template="@NinesMedia/image/edit.html.twig") - */ - public function editImage(Request $request, EntityManagerInterface $em, Inventory $inventory, Image $image) { - return $this->editImageAction($request, $em, $inventory, $image, 'inventory_show'); + #[Route(path: '/{id}/image/{image_id}/edit', name: 'inventory_image_edit', methods: ['GET', 'POST'])] + #[IsGranted('ROLE_CONTENT_ADMIN')] + #[Template('inventory/image_edit.html.twig')] + #[ParamConverter('image', options: ['id' => 'image_id'])] + public function editImage(Request $request, EntityManagerInterface $em, Inventory $inventory, Image $image) : array|RedirectResponse { + return $this->editImageAction($request, $em, $inventory, $image, 'inventory_show', ['id' => $inventory->getId()]); } - /** - * @Route("/{id}/delete_image/{image_id}", name="inventory_delete_image", methods={"DELETE"}) - * @ParamConverter("image", options={"id": "image_id"}) - * @IsGranted("ROLE_CONTENT_ADMIN") - * - * @throws Exception - * - * @return RedirectResponse - */ - public function deleteImage(Request $request, EntityManagerInterface $em, Inventory $inventory, Image $image) { - return $this->deleteImageAction($request, $em, $inventory, $image, 'inventory_show'); + #[Route(path: '/{id}/image/{image_id}', name: 'inventory_image_delete', methods: ['DELETE'])] + #[IsGranted('ROLE_CONTENT_ADMIN')] + #[ParamConverter('image', options: ['id' => 'image_id'])] + public function deleteImage(Request $request, EntityManagerInterface $em, Inventory $inventory, Image $image) : RedirectResponse { + return $this->deleteImageAction($request, $em, $inventory, $image, 'inventory_show', ['id' => $inventory->getId()]); } } diff --git a/src/Controller/ManuscriptSourceController.php b/src/Controller/ManuscriptSourceController.php index d6d12d1..c3460d4 100644 --- a/src/Controller/ManuscriptSourceController.php +++ b/src/Controller/ManuscriptSourceController.php @@ -2,17 +2,12 @@ declare(strict_types=1); -/* - * (c) 2022 Michael Joyce - * This source file is subject to the GPL v2, bundled - * with this source code in the file LICENSE. - */ - namespace App\Controller; use App\Entity\ManuscriptSource; use App\Form\ManuscriptSourceType; use App\Repository\ManuscriptSourceRepository; +use Doctrine\ORM\EntityManagerInterface; use Knp\Bundle\PaginatorBundle\Definition\PaginatorAwareInterface; use Nines\UtilBundle\Controller\PaginatorTrait; use Sensio\Bundle\FrameworkExtraBundle\Configuration\IsGranted; @@ -23,55 +18,24 @@ use Symfony\Component\HttpFoundation\Request; use Symfony\Component\Routing\Annotation\Route; -/** - * @Route("/manuscript_source") - */ +#[Route(path: '/manuscript_source')] class ManuscriptSourceController extends AbstractController implements PaginatorAwareInterface { use PaginatorTrait; - /** - * @Route("/", name="manuscript_source_index", methods={"GET"}) - * - * @Template - */ + #[Route(path: '/', name: 'manuscript_source_index', methods: ['GET'])] + #[Template] public function index(Request $request, ManuscriptSourceRepository $manuscriptSourceRepository) : array { - $query = $manuscriptSourceRepository->indexQuery(); - $pageSize = (int) $this->getParameter('page_size'); - $page = $request->query->getint('page', 1); - - return [ - 'sources' => $this->paginator->paginate($query, $page, $pageSize), - ]; - } - - /** - * @Route("/search", name="manuscript_source_search", methods={"GET"}) - * - * @Template - * - * @return array - */ - public function search(Request $request, ManuscriptSourceRepository $manuscriptSourceRepository) { $q = $request->query->get('q'); - if ($q) { - $query = $manuscriptSourceRepository->searchQuery($q); - $manuscriptSources = $this->paginator->paginate($query, $request->query->getInt('page', 1), $this->getParameter('page_size'), ['wrap-queries' => true]); - } else { - $manuscriptSources = []; - } + $query = $q ? $manuscriptSourceRepository->searchQuery($q) : $manuscriptSourceRepository->indexQuery(); return [ - 'sources' => $manuscriptSources, + 'sources' => $this->paginator->paginate($query, $request->query->getInt('page', 1), $this->getParameter('page_size'), ['wrap-queries' => true]), 'q' => $q, ]; } - /** - * @Route("/typeahead", name="manuscript_source_typeahead", methods={"GET"}) - * - * @return JsonResponse - */ - public function typeahead(Request $request, ManuscriptSourceRepository $manuscriptSourceRepository) { + #[Route(path: '/typeahead', name: 'manuscript_source_typeahead', methods: ['GET'])] + public function typeahead(Request $request, ManuscriptSourceRepository $manuscriptSourceRepository) : JsonResponse { $q = $request->query->get('q'); if ( ! $q) { return new JsonResponse([]); @@ -88,20 +52,15 @@ public function typeahead(Request $request, ManuscriptSourceRepository $manuscri return new JsonResponse($data); } - /** - * @Route("/new", name="manuscript_source_new", methods={"GET", "POST"}) - * @Template - * @IsGranted("ROLE_CONTENT_ADMIN") - * - * @return array|RedirectResponse - */ - public function new(Request $request) { + #[Route(path: '/new', name: 'manuscript_source_new', methods: ['GET', 'POST'])] + #[Template] + #[IsGranted('ROLE_CONTENT_ADMIN')] + public function new(EntityManagerInterface $entityManager, Request $request) : array|RedirectResponse { $manuscriptSource = new ManuscriptSource(); $form = $this->createForm(ManuscriptSourceType::class, $manuscriptSource); $form->handleRequest($request); if ($form->isSubmitted() && $form->isValid()) { - $entityManager = $this->getDoctrine()->getManager(); $entityManager->persist($manuscriptSource); $entityManager->flush(); @@ -116,43 +75,23 @@ public function new(Request $request) { ]; } - /** - * @Route("/new_popup", name="manuscript_source_new_popup", methods={"GET", "POST"}) - * @Template - * @IsGranted("ROLE_CONTENT_ADMIN") - * - * @return array|RedirectResponse - */ - public function new_popup(Request $request) { - return $this->new($request); - } - - /** - * @Route("/{id}", name="manuscript_source_show", methods={"GET"}) - * @Template - * - * @return array - */ - public function show(ManuscriptSource $manuscriptSource) { + #[Route(path: '/{id}', name: 'manuscript_source_show', methods: ['GET'])] + #[Template] + public function show(ManuscriptSource $manuscriptSource) : array { return [ 'source' => $manuscriptSource, ]; } - /** - * @IsGranted("ROLE_CONTENT_ADMIN") - * @Route("/{id}/edit", name="manuscript_source_edit", methods={"GET", "POST"}) - * - * @Template - * - * @return array|RedirectResponse - */ - public function edit(Request $request, ManuscriptSource $manuscriptSource) { + #[IsGranted('ROLE_CONTENT_ADMIN')] + #[Route(path: '/{id}/edit', name: 'manuscript_source_edit', methods: ['GET', 'POST'])] + #[Template] + public function edit(EntityManagerInterface $entityManager, Request $request, ManuscriptSource $manuscriptSource) : array|RedirectResponse { $form = $this->createForm(ManuscriptSourceType::class, $manuscriptSource); $form->handleRequest($request); if ($form->isSubmitted() && $form->isValid()) { - $this->getDoctrine()->getManager()->flush(); + $entityManager->flush(); $this->addFlash('success', 'The updated source has been saved.'); return $this->redirectToRoute('manuscript_source_show', ['id' => $manuscriptSource->getId()]); @@ -164,15 +103,10 @@ public function edit(Request $request, ManuscriptSource $manuscriptSource) { ]; } - /** - * @IsGranted("ROLE_CONTENT_ADMIN") - * @Route("/{id}", name="manuscript_source_delete", methods={"DELETE"}) - * - * @return RedirectResponse - */ - public function delete(Request $request, ManuscriptSource $manuscriptSource) { + #[IsGranted('ROLE_CONTENT_ADMIN')] + #[Route(path: '/{id}', name: 'manuscript_source_delete', methods: ['DELETE'])] + public function delete(EntityManagerInterface $entityManager, Request $request, ManuscriptSource $manuscriptSource) : RedirectResponse { if ($this->isCsrfTokenValid('delete' . $manuscriptSource->getId(), $request->request->get('_token'))) { - $entityManager = $this->getDoctrine()->getManager(); $entityManager->remove($manuscriptSource); $entityManager->flush(); $this->addFlash('success', 'The source has been deleted.'); diff --git a/src/Controller/MonarchController.php b/src/Controller/MonarchController.php index 57647fb..b6fa1bb 100644 --- a/src/Controller/MonarchController.php +++ b/src/Controller/MonarchController.php @@ -2,18 +2,12 @@ declare(strict_types=1); -/* - * (c) 2022 Michael Joyce - * This source file is subject to the GPL v2, bundled - * with this source code in the file LICENSE. - */ - namespace App\Controller; use App\Entity\Monarch; use App\Form\MonarchType; use App\Repository\MonarchRepository; - +use Doctrine\ORM\EntityManagerInterface; use Knp\Bundle\PaginatorBundle\Definition\PaginatorAwareInterface; use Nines\UtilBundle\Controller\PaginatorTrait; use Sensio\Bundle\FrameworkExtraBundle\Configuration\IsGranted; @@ -24,55 +18,24 @@ use Symfony\Component\HttpFoundation\Request; use Symfony\Component\Routing\Annotation\Route; -/** - * @Route("/monarch") - */ +#[Route(path: '/monarch')] class MonarchController extends AbstractController implements PaginatorAwareInterface { use PaginatorTrait; - /** - * @Route("/", name="monarch_index", methods={"GET"}) - * - * @Template - */ + #[Route(path: '/', name: 'monarch_index', methods: ['GET'])] + #[Template] public function index(Request $request, MonarchRepository $monarchRepository) : array { - $query = $monarchRepository->indexQuery(); - $pageSize = (int) $this->getParameter('page_size'); - $page = $request->query->getint('page', 1); - - return [ - 'monarchs' => $this->paginator->paginate($query, $page, $pageSize), - ]; - } - - /** - * @Route("/search", name="monarch_search", methods={"GET"}) - * - * @Template - * - * @return array - */ - public function search(Request $request, MonarchRepository $monarchRepository) { $q = $request->query->get('q'); - if ($q) { - $query = $monarchRepository->searchQuery($q); - $monarchs = $this->paginator->paginate($query, $request->query->getInt('page', 1), $this->getParameter('page_size'), ['wrap-queries' => true]); - } else { - $monarchs = []; - } + $query = $q ? $monarchRepository->searchQuery($q) : $monarchRepository->indexQuery(); return [ - 'monarchs' => $monarchs, + 'monarchs' => $this->paginator->paginate($query, $request->query->getInt('page', 1), $this->getParameter('page_size'), ['wrap-queries' => true]), 'q' => $q, ]; } - /** - * @Route("/typeahead", name="monarch_typeahead", methods={"GET"}) - * - * @return JsonResponse - */ - public function typeahead(Request $request, MonarchRepository $monarchRepository) { + #[Route(path: '/typeahead', name: 'monarch_typeahead', methods: ['GET'])] + public function typeahead(Request $request, MonarchRepository $monarchRepository) : JsonResponse { $q = $request->query->get('q'); if ( ! $q) { return new JsonResponse([]); @@ -88,20 +51,15 @@ public function typeahead(Request $request, MonarchRepository $monarchRepository return new JsonResponse($data); } - /** - * @Route("/new", name="monarch_new", methods={"GET", "POST"}) - * @Template - * @IsGranted("ROLE_CONTENT_ADMIN") - * - * @return array|RedirectResponse - */ - public function new(Request $request) { + #[Route(path: '/new', name: 'monarch_new', methods: ['GET', 'POST'])] + #[Template] + #[IsGranted('ROLE_CONTENT_ADMIN')] + public function new(EntityManagerInterface $entityManager, Request $request) : array|RedirectResponse { $monarch = new Monarch(); $form = $this->createForm(MonarchType::class, $monarch); $form->handleRequest($request); if ($form->isSubmitted() && $form->isValid()) { - $entityManager = $this->getDoctrine()->getManager(); $entityManager->persist($monarch); $entityManager->flush(); $this->addFlash('success', 'The new monarch has been saved.'); @@ -115,43 +73,23 @@ public function new(Request $request) { ]; } - /** - * @Route("/new_popup", name="monarch_new_popup", methods={"GET", "POST"}) - * @Template - * @IsGranted("ROLE_CONTENT_ADMIN") - * - * @return array|RedirectResponse - */ - public function new_popup(Request $request) { - return $this->new($request); - } - - /** - * @Route("/{id}", name="monarch_show", methods={"GET"}) - * @Template - * - * @return array - */ - public function show(Monarch $monarch) { + #[Route(path: '/{id}', name: 'monarch_show', methods: ['GET'])] + #[Template] + public function show(Monarch $monarch) : array { return [ 'monarch' => $monarch, ]; } - /** - * @IsGranted("ROLE_CONTENT_ADMIN") - * @Route("/{id}/edit", name="monarch_edit", methods={"GET", "POST"}) - * - * @Template - * - * @return array|RedirectResponse - */ - public function edit(Request $request, Monarch $monarch) { + #[IsGranted('ROLE_CONTENT_ADMIN')] + #[Route(path: '/{id}/edit', name: 'monarch_edit', methods: ['GET', 'POST'])] + #[Template] + public function edit(EntityManagerInterface $entityManager, Request $request, Monarch $monarch) : array|RedirectResponse { $form = $this->createForm(MonarchType::class, $monarch); $form->handleRequest($request); if ($form->isSubmitted() && $form->isValid()) { - $this->getDoctrine()->getManager()->flush(); + $entityManager->flush(); $this->addFlash('success', 'The updated monarch has been saved.'); return $this->redirectToRoute('monarch_show', ['id' => $monarch->getId()]); @@ -163,15 +101,10 @@ public function edit(Request $request, Monarch $monarch) { ]; } - /** - * @IsGranted("ROLE_CONTENT_ADMIN") - * @Route("/{id}", name="monarch_delete", methods={"DELETE"}) - * - * @return RedirectResponse - */ - public function delete(Request $request, Monarch $monarch) { + #[IsGranted('ROLE_CONTENT_ADMIN')] + #[Route(path: '/{id}', name: 'monarch_delete', methods: ['DELETE'])] + public function delete(EntityManagerInterface $entityManager, Request $request, Monarch $monarch) : RedirectResponse { if ($this->isCsrfTokenValid('delete' . $monarch->getId(), $request->request->get('_token'))) { - $entityManager = $this->getDoctrine()->getManager(); $entityManager->remove($monarch); $entityManager->flush(); $this->addFlash('success', 'The monarch has been deleted.'); diff --git a/src/Controller/NationController.php b/src/Controller/NationController.php index 386798c..18ae4d5 100644 --- a/src/Controller/NationController.php +++ b/src/Controller/NationController.php @@ -2,17 +2,12 @@ declare(strict_types=1); -/* - * (c) 2022 Michael Joyce - * This source file is subject to the GPL v2, bundled - * with this source code in the file LICENSE. - */ - namespace App\Controller; use App\Entity\Nation; use App\Form\NationType; use App\Repository\NationRepository; +use Doctrine\ORM\EntityManagerInterface; use Knp\Bundle\PaginatorBundle\Definition\PaginatorAwareInterface; use Nines\UtilBundle\Controller\PaginatorTrait; use Sensio\Bundle\FrameworkExtraBundle\Configuration\IsGranted; @@ -23,55 +18,24 @@ use Symfony\Component\HttpFoundation\Request; use Symfony\Component\Routing\Annotation\Route; -/** - * @Route("/nation") - */ +#[Route(path: '/nation')] class NationController extends AbstractController implements PaginatorAwareInterface { use PaginatorTrait; - /** - * @Route("/", name="nation_index", methods={"GET"}) - * - * @Template - */ + #[Route(path: '/', name: 'nation_index', methods: ['GET'])] + #[Template] public function index(Request $request, NationRepository $nationRepository) : array { - $query = $nationRepository->indexQuery(); - $pageSize = (int) $this->getParameter('page_size'); - $page = $request->query->getint('page', 1); - - return [ - 'nations' => $this->paginator->paginate($query, $page, $pageSize), - ]; - } - - /** - * @Route("/search", name="nation_search", methods={"GET"}) - * - * @Template - * - * @return array - */ - public function search(Request $request, NationRepository $nationRepository) { $q = $request->query->get('q'); - if ($q) { - $query = $nationRepository->searchQuery($q); - $nations = $this->paginator->paginate($query, $request->query->getInt('page', 1), $this->getParameter('page_size'), ['wrap-queries' => true]); - } else { - $nations = []; - } + $query = $q ? $nationRepository->searchQuery($q) : $nationRepository->indexQuery(); return [ - 'nations' => $nations, + 'nations' => $this->paginator->paginate($query, $request->query->getInt('page', 1), $this->getParameter('page_size'), ['wrap-queries' => true]), 'q' => $q, ]; } - /** - * @Route("/typeahead", name="nation_typeahead", methods={"GET"}) - * - * @return JsonResponse - */ - public function typeahead(Request $request, NationRepository $nationRepository) { + #[Route(path: '/typeahead', name: 'nation_typeahead', methods: ['GET'])] + public function typeahead(Request $request, NationRepository $nationRepository) : JsonResponse { $q = $request->query->get('q'); if ( ! $q) { return new JsonResponse([]); @@ -88,20 +52,15 @@ public function typeahead(Request $request, NationRepository $nationRepository) return new JsonResponse($data); } - /** - * @Route("/new", name="nation_new", methods={"GET", "POST"}) - * @Template - * @IsGranted("ROLE_CONTENT_ADMIN") - * - * @return array|RedirectResponse - */ - public function new(Request $request) { + #[Route(path: '/new', name: 'nation_new', methods: ['GET', 'POST'])] + #[Template] + #[IsGranted('ROLE_CONTENT_ADMIN')] + public function new(EntityManagerInterface $entityManager, Request $request) : array|RedirectResponse { $nation = new Nation(); $form = $this->createForm(NationType::class, $nation); $form->handleRequest($request); if ($form->isSubmitted() && $form->isValid()) { - $entityManager = $this->getDoctrine()->getManager(); $entityManager->persist($nation); $entityManager->flush(); $this->addFlash('success', 'The new nation has been saved.'); @@ -115,43 +74,23 @@ public function new(Request $request) { ]; } - /** - * @Route("/new_popup", name="nation_new_popup", methods={"GET", "POST"}) - * @Template - * @IsGranted("ROLE_CONTENT_ADMIN") - * - * @return array|RedirectResponse - */ - public function new_popup(Request $request) { - return $this->new($request); - } - - /** - * @Route("/{id}", name="nation_show", methods={"GET"}) - * @Template - * - * @return array - */ - public function show(Nation $nation) { + #[Route(path: '/{id}', name: 'nation_show', methods: ['GET'])] + #[Template] + public function show(Nation $nation) : array { return [ 'nation' => $nation, ]; } - /** - * @IsGranted("ROLE_CONTENT_ADMIN") - * @Route("/{id}/edit", name="nation_edit", methods={"GET", "POST"}) - * - * @Template - * - * @return array|RedirectResponse - */ - public function edit(Request $request, Nation $nation) { + #[IsGranted('ROLE_CONTENT_ADMIN')] + #[Route(path: '/{id}/edit', name: 'nation_edit', methods: ['GET', 'POST'])] + #[Template] + public function edit(EntityManagerInterface $entityManager, Request $request, Nation $nation) : array|RedirectResponse { $form = $this->createForm(NationType::class, $nation); $form->handleRequest($request); if ($form->isSubmitted() && $form->isValid()) { - $this->getDoctrine()->getManager()->flush(); + $entityManager->flush(); $this->addFlash('success', 'The updated nation has been saved.'); return $this->redirectToRoute('nation_show', ['id' => $nation->getId()]); @@ -163,15 +102,10 @@ public function edit(Request $request, Nation $nation) { ]; } - /** - * @IsGranted("ROLE_CONTENT_ADMIN") - * @Route("/{id}", name="nation_delete", methods={"DELETE"}) - * - * @return RedirectResponse - */ - public function delete(Request $request, Nation $nation) { + #[IsGranted('ROLE_CONTENT_ADMIN')] + #[Route(path: '/{id}', name: 'nation_delete', methods: ['DELETE'])] + public function delete(EntityManagerInterface $entityManager, Request $request, Nation $nation) : RedirectResponse { if ($this->isCsrfTokenValid('delete' . $nation->getId(), $request->request->get('_token'))) { - $entityManager = $this->getDoctrine()->getManager(); $entityManager->remove($nation); $entityManager->flush(); $this->addFlash('success', 'The nation has been deleted.'); diff --git a/src/Controller/ParishController.php b/src/Controller/ParishController.php index 851221c..8393716 100644 --- a/src/Controller/ParishController.php +++ b/src/Controller/ParishController.php @@ -2,17 +2,12 @@ declare(strict_types=1); -/* - * (c) 2022 Michael Joyce - * This source file is subject to the GPL v2, bundled - * with this source code in the file LICENSE. - */ - namespace App\Controller; use App\Entity\Parish; use App\Form\ParishType; use App\Repository\ParishRepository; +use Doctrine\ORM\EntityManagerInterface; use Knp\Bundle\PaginatorBundle\Definition\PaginatorAwareInterface; use Nines\UtilBundle\Controller\PaginatorTrait; use Sensio\Bundle\FrameworkExtraBundle\Configuration\IsGranted; @@ -23,55 +18,24 @@ use Symfony\Component\HttpFoundation\Request; use Symfony\Component\Routing\Annotation\Route; -/** - * @Route("/parish") - */ +#[Route(path: '/parish')] class ParishController extends AbstractController implements PaginatorAwareInterface { use PaginatorTrait; - /** - * @Route("/", name="parish_index", methods={"GET"}) - * - * @Template - */ + #[Route(path: '/', name: 'parish_index', methods: ['GET'])] + #[Template] public function index(Request $request, ParishRepository $parishRepository) : array { - $query = $parishRepository->indexQuery(); - $pageSize = $this->getParameter('page_size'); - $page = $request->query->getint('page', 1); - - return [ - 'parishes' => $this->paginator->paginate($query, $page, $pageSize), - ]; - } - - /** - * @Route("/search", name="parish_search", methods={"GET"}) - * - * @Template - * - * @return array - */ - public function search(Request $request, ParishRepository $parishRepository) { $q = $request->query->get('q'); - if ($q) { - $query = $parishRepository->searchQuery($q); - $parishes = $this->paginator->paginate($query, $request->query->getInt('page', 1), $this->getParameter('page_size'), ['wrap-queries' => true]); - } else { - $parishes = []; - } + $query = $q ? $parishRepository->searchQuery($q) : $parishRepository->indexQuery(); return [ - 'parishes' => $parishes, + 'parishes' => $this->paginator->paginate($query, $request->query->getInt('page', 1), $this->getParameter('page_size'), ['wrap-queries' => true]), 'q' => $q, ]; } - /** - * @Route("/typeahead", name="parish_typeahead", methods={"GET"}) - * - * @return JsonResponse - */ - public function typeahead(Request $request, ParishRepository $parishRepository) { + #[Route(path: '/typeahead', name: 'parish_typeahead', methods: ['GET'])] + public function typeahead(Request $request, ParishRepository $parishRepository) : JsonResponse { $q = $request->query->get('q'); if ( ! $q) { return new JsonResponse([]); @@ -88,20 +52,15 @@ public function typeahead(Request $request, ParishRepository $parishRepository) return new JsonResponse($data); } - /** - * @Route("/new", name="parish_new", methods={"GET", "POST"}) - * @Template - * @IsGranted("ROLE_CONTENT_ADMIN") - * - * @return array|RedirectResponse - */ - public function new(Request $request) { + #[Route(path: '/new', name: 'parish_new', methods: ['GET', 'POST'])] + #[Template] + #[IsGranted('ROLE_CONTENT_ADMIN')] + public function new(EntityManagerInterface $entityManager, Request $request) : array|RedirectResponse { $parish = new Parish(); $form = $this->createForm(ParishType::class, $parish); $form->handleRequest($request); if ($form->isSubmitted() && $form->isValid()) { - $entityManager = $this->getDoctrine()->getManager(); $entityManager->persist($parish); $entityManager->flush(); @@ -116,43 +75,23 @@ public function new(Request $request) { ]; } - /** - * @Route("/new_popup", name="parish_new_popup", methods={"GET", "POST"}) - * @Template - * @IsGranted("ROLE_CONTENT_ADMIN") - * - * @return array|RedirectResponse - */ - public function new_popup(Request $request) { - return $this->new($request); - } - - /** - * @Route("/{id}", name="parish_show", methods={"GET"}) - * @Template - * - * @return array - */ - public function show(Parish $parish) { + #[Route(path: '/{id}', name: 'parish_show', methods: ['GET'])] + #[Template] + public function show(Parish $parish) : array { return [ 'parish' => $parish, ]; } - /** - * @IsGranted("ROLE_CONTENT_ADMIN") - * @Route("/{id}/edit", name="parish_edit", methods={"GET", "POST"}) - * - * @Template - * - * @return array|RedirectResponse - */ - public function edit(Request $request, Parish $parish) { + #[IsGranted('ROLE_CONTENT_ADMIN')] + #[Route(path: '/{id}/edit', name: 'parish_edit', methods: ['GET', 'POST'])] + #[Template] + public function edit(EntityManagerInterface $entityManager, Request $request, Parish $parish) : array|RedirectResponse { $form = $this->createForm(ParishType::class, $parish); $form->handleRequest($request); if ($form->isSubmitted() && $form->isValid()) { - $this->getDoctrine()->getManager()->flush(); + $entityManager->flush(); $this->addFlash('success', 'The updated parish has been saved.'); return $this->redirectToRoute('parish_show', ['id' => $parish->getId()]); @@ -164,15 +103,10 @@ public function edit(Request $request, Parish $parish) { ]; } - /** - * @IsGranted("ROLE_CONTENT_ADMIN") - * @Route("/{id}", name="parish_delete", methods={"DELETE"}) - * - * @return RedirectResponse - */ - public function delete(Request $request, Parish $parish) { + #[IsGranted('ROLE_CONTENT_ADMIN')] + #[Route(path: '/{id}', name: 'parish_delete', methods: ['DELETE'])] + public function delete(EntityManagerInterface $entityManager, Request $request, Parish $parish) : RedirectResponse { if ($this->isCsrfTokenValid('delete' . $parish->getId(), $request->request->get('_token'))) { - $entityManager = $this->getDoctrine()->getManager(); $entityManager->remove($parish); $entityManager->flush(); $this->addFlash('success', 'The parish has been deleted.'); diff --git a/src/Controller/PrintSourceController.php b/src/Controller/PrintSourceController.php index a2f9303..e4e9571 100644 --- a/src/Controller/PrintSourceController.php +++ b/src/Controller/PrintSourceController.php @@ -2,12 +2,6 @@ declare(strict_types=1); -/* - * (c) 2022 Michael Joyce - * This source file is subject to the GPL v2, bundled - * with this source code in the file LICENSE. - */ - namespace App\Controller; use App\Entity\PrintSource; @@ -18,55 +12,30 @@ use Knp\Bundle\PaginatorBundle\Definition\PaginatorAwareInterface; use Nines\UtilBundle\Controller\PaginatorTrait; use Sensio\Bundle\FrameworkExtraBundle\Configuration\IsGranted; +use Sensio\Bundle\FrameworkExtraBundle\Configuration\Template; use Symfony\Bundle\FrameworkBundle\Controller\AbstractController; use Symfony\Component\HttpFoundation\JsonResponse; use Symfony\Component\HttpFoundation\RedirectResponse; use Symfony\Component\HttpFoundation\Request; -use Symfony\Component\HttpFoundation\Response; use Symfony\Component\Routing\Annotation\Route; -/** - * @Route("/print_source") - */ +#[Route(path: '/print_source')] class PrintSourceController extends AbstractController implements PaginatorAwareInterface { use PaginatorTrait; - /** - * @Route("/", name="print_source_index", methods={"GET"}) - */ - public function index(Request $request, PrintSourceRepository $printSourceRepository) : Response { - $query = $printSourceRepository->indexQuery(); - $pageSize = (int) $this->getParameter('page_size'); - $page = $request->query->getint('page', 1); - - return $this->render('print_source/index.html.twig', [ - 'print_sources' => $this->paginator->paginate($query, $page, $pageSize), - ]); - } - - /** - * @Route("/search", name="print_source_search", methods={"GET"}) - */ - public function search(Request $request, PrintSourceRepository $printSourceRepository) : Response { + #[Route(path: '/', name: 'print_source_index', methods: ['GET'])] + #[Template('print_source/index.html.twig')] + public function index(Request $request, PrintSourceRepository $printSourceRepository) : array { $q = $request->query->get('q'); - if ($q) { - $query = $printSourceRepository->searchQuery($q); - $printSources = $this->paginator->paginate($query, $request->query->getInt('page', 1), $this->getParameter('page_size'), [ - 'wrap-queries' => true, - ]); - } else { - $printSources = []; - } + $query = $q ? $printSourceRepository->searchQuery($q) : $printSourceRepository->indexQuery(); - return $this->render('print_source/search.html.twig', [ - 'print_sources' => $printSources, + return [ + 'print_sources' => $this->paginator->paginate($query, $request->query->getInt('page', 1), $this->getParameter('page_size'), ['wrap-queries' => true]), 'q' => $q, - ]); + ]; } - /** - * @Route("/typeahead", name="print_source_typeahead", methods={"GET"}) - */ + #[Route(path: '/typeahead', name: 'print_source_typeahead', methods: ['GET'])] public function typeahead(Request $request, PrintSourceRepository $printSourceRepository) : JsonResponse { $q = $request->query->get('q'); if ( ! $q) { @@ -84,71 +53,58 @@ public function typeahead(Request $request, PrintSourceRepository $printSourceRe return new JsonResponse($data); } - /** - * @Route("/new", name="print_source_new", methods={"GET", "POST"}) - * @IsGranted("ROLE_CONTENT_ADMIN") - */ - public function new(Request $request, EntityManagerInterface $em) : Response { + #[Route(path: '/new', name: 'print_source_new', methods: ['GET', 'POST'])] + #[IsGranted('ROLE_CONTENT_ADMIN')] + #[Template('print_source/new.html.twig')] + public function new(EntityManagerInterface $entityManager, Request $request) : array|RedirectResponse { $printSource = new PrintSource(); $form = $this->createForm(PrintSourceType::class, $printSource); $form->handleRequest($request); if ($form->isSubmitted() && $form->isValid()) { - $em->persist($printSource); - $em->flush(); + $entityManager->persist($printSource); + $entityManager->flush(); $this->addFlash('success', 'The new printSource has been saved.'); return $this->redirectToRoute('print_source_show', ['id' => $printSource->getId()]); } - return $this->render('print_source/new.html.twig', [ + return [ 'print_source' => $printSource, 'form' => $form->createView(), - ]); - } - - /** - * @Route("/new_popup", name="print_source_new_popup", methods={"GET", "POST"}) - * @IsGranted("ROLE_CONTENT_ADMIN") - */ - public function new_popup(Request $request, EntityManagerInterface $em) : Response { - return $this->new($request, $em); + ]; } - /** - * @Route("/{id}", name="print_source_show", methods={"GET"}) - */ - public function show(PrintSource $printSource) : Response { - return $this->render('print_source/show.html.twig', [ + #[Route(path: '/{id}', name: 'print_source_show', methods: ['GET'])] + #[Template('print_source/show.html.twig')] + public function show(PrintSource $printSource) : array { + return [ 'print_source' => $printSource, - ]); + ]; } - /** - * @IsGranted("ROLE_CONTENT_ADMIN") - * @Route("/{id}/edit", name="print_source_edit", methods={"GET", "POST"}) - */ - public function edit(Request $request, PrintSource $printSource, EntityManagerInterface $em) : Response { + #[IsGranted('ROLE_CONTENT_ADMIN')] + #[Route(path: '/{id}/edit', name: 'print_source_edit', methods: ['GET', 'POST'])] + #[Template('print_source/edit.html.twig')] + public function edit(EntityManagerInterface $entityManager, Request $request, PrintSource $printSource) : array|RedirectResponse { $form = $this->createForm(PrintSourceType::class, $printSource); $form->handleRequest($request); if ($form->isSubmitted() && $form->isValid()) { - $em->flush(); + $entityManager->flush(); $this->addFlash('success', 'The updated printSource has been saved.'); return $this->redirectToRoute('print_source_show', ['id' => $printSource->getId()]); } - return $this->render('print_source/edit.html.twig', [ + return [ 'print_source' => $printSource, 'form' => $form->createView(), - ]); + ]; } - /** - * @IsGranted("ROLE_CONTENT_ADMIN") - * @Route("/{id}", name="print_source_delete", methods={"DELETE"}) - */ + #[IsGranted('ROLE_CONTENT_ADMIN')] + #[Route(path: '/{id}', name: 'print_source_delete', methods: ['DELETE'])] public function delete(Request $request, PrintSource $printSource, EntityManagerInterface $em) : RedirectResponse { if ($this->isCsrfTokenValid('delete' . $printSource->getId(), $request->request->get('_token'))) { $em->remove($printSource); diff --git a/src/Controller/ProvinceController.php b/src/Controller/ProvinceController.php index 261cf36..73ac752 100644 --- a/src/Controller/ProvinceController.php +++ b/src/Controller/ProvinceController.php @@ -2,17 +2,12 @@ declare(strict_types=1); -/* - * (c) 2022 Michael Joyce - * This source file is subject to the GPL v2, bundled - * with this source code in the file LICENSE. - */ - namespace App\Controller; use App\Entity\Province; use App\Form\ProvinceType; use App\Repository\ProvinceRepository; +use Doctrine\ORM\EntityManagerInterface; use Knp\Bundle\PaginatorBundle\Definition\PaginatorAwareInterface; use Nines\UtilBundle\Controller\PaginatorTrait; use Sensio\Bundle\FrameworkExtraBundle\Configuration\IsGranted; @@ -23,55 +18,24 @@ use Symfony\Component\HttpFoundation\Request; use Symfony\Component\Routing\Annotation\Route; -/** - * @Route("/province") - */ +#[Route(path: '/province')] class ProvinceController extends AbstractController implements PaginatorAwareInterface { use PaginatorTrait; - /** - * @Route("/", name="province_index", methods={"GET"}) - * - * @Template - */ + #[Route(path: '/', name: 'province_index', methods: ['GET'])] + #[Template] public function index(Request $request, ProvinceRepository $provinceRepository) : array { - $query = $provinceRepository->indexQuery(); - $pageSize = $this->getParameter('page_size'); - $page = $request->query->getint('page', 1); - - return [ - 'provinces' => $this->paginator->paginate($query, $page, $pageSize), - ]; - } - - /** - * @Route("/search", name="province_search", methods={"GET"}) - * - * @Template - * - * @return array - */ - public function search(Request $request, ProvinceRepository $provinceRepository) { $q = $request->query->get('q'); - if ($q) { - $query = $provinceRepository->searchQuery($q); - $provinces = $this->paginator->paginate($query, $request->query->getInt('page', 1), $this->getParameter('page_size'), ['wrap-queries' => true]); - } else { - $provinces = []; - } + $query = $q ? $provinceRepository->searchQuery($q) : $provinceRepository->indexQuery(); return [ - 'provinces' => $provinces, + 'provinces' => $this->paginator->paginate($query, $request->query->getInt('page', 1), $this->getParameter('page_size'), ['wrap-queries' => true]), 'q' => $q, ]; } - /** - * @Route("/typeahead", name="province_typeahead", methods={"GET"}) - * - * @return JsonResponse - */ - public function typeahead(Request $request, ProvinceRepository $provinceRepository) { + #[Route(path: '/typeahead', name: 'province_typeahead', methods: ['GET'])] + public function typeahead(Request $request, ProvinceRepository $provinceRepository) : JsonResponse { $q = $request->query->get('q'); if ( ! $q) { return new JsonResponse([]); @@ -88,20 +52,15 @@ public function typeahead(Request $request, ProvinceRepository $provinceReposito return new JsonResponse($data); } - /** - * @Route("/new", name="province_new", methods={"GET", "POST"}) - * @Template - * @IsGranted("ROLE_CONTENT_ADMIN") - * - * @return array|RedirectResponse - */ - public function new(Request $request) { + #[Route(path: '/new', name: 'province_new', methods: ['GET', 'POST'])] + #[Template] + #[IsGranted('ROLE_CONTENT_ADMIN')] + public function new(EntityManagerInterface $entityManager, Request $request) : array|RedirectResponse { $province = new Province(); $form = $this->createForm(ProvinceType::class, $province); $form->handleRequest($request); if ($form->isSubmitted() && $form->isValid()) { - $entityManager = $this->getDoctrine()->getManager(); $entityManager->persist($province); $entityManager->flush(); @@ -116,43 +75,23 @@ public function new(Request $request) { ]; } - /** - * @Route("/new_popup", name="province_new_popup", methods={"GET", "POST"}) - * @Template - * @IsGranted("ROLE_CONTENT_ADMIN") - * - * @return array|RedirectResponse - */ - public function new_popup(Request $request) { - return $this->new($request); - } - - /** - * @Route("/{id}", name="province_show", methods={"GET"}) - * @Template - * - * @return array - */ - public function show(Province $province) { + #[Route(path: '/{id}', name: 'province_show', methods: ['GET'])] + #[Template] + public function show(Province $province) : array { return [ 'province' => $province, ]; } - /** - * @IsGranted("ROLE_CONTENT_ADMIN") - * @Route("/{id}/edit", name="province_edit", methods={"GET", "POST"}) - * - * @Template - * - * @return array|RedirectResponse - */ - public function edit(Request $request, Province $province) { + #[IsGranted('ROLE_CONTENT_ADMIN')] + #[Route(path: '/{id}/edit', name: 'province_edit', methods: ['GET', 'POST'])] + #[Template] + public function edit(EntityManagerInterface $entityManager, Request $request, Province $province) : array|RedirectResponse { $form = $this->createForm(ProvinceType::class, $province); $form->handleRequest($request); if ($form->isSubmitted() && $form->isValid()) { - $this->getDoctrine()->getManager()->flush(); + $entityManager->flush(); $this->addFlash('success', 'The updated province has been saved.'); return $this->redirectToRoute('province_show', ['id' => $province->getId()]); @@ -164,15 +103,10 @@ public function edit(Request $request, Province $province) { ]; } - /** - * @IsGranted("ROLE_CONTENT_ADMIN") - * @Route("/{id}", name="province_delete", methods={"DELETE"}) - * - * @return RedirectResponse - */ - public function delete(Request $request, Province $province) { + #[IsGranted('ROLE_CONTENT_ADMIN')] + #[Route(path: '/{id}', name: 'province_delete', methods: ['DELETE'])] + public function delete(EntityManagerInterface $entityManager, Request $request, Province $province) : RedirectResponse { if ($this->isCsrfTokenValid('delete' . $province->getId(), $request->request->get('_token'))) { - $entityManager = $this->getDoctrine()->getManager(); $entityManager->remove($province); $entityManager->flush(); $this->addFlash('success', 'The province has been deleted.'); diff --git a/src/Controller/SourceCategoryController.php b/src/Controller/SourceCategoryController.php index 2ffd6da..818ba23 100644 --- a/src/Controller/SourceCategoryController.php +++ b/src/Controller/SourceCategoryController.php @@ -2,17 +2,12 @@ declare(strict_types=1); -/* - * (c) 2022 Michael Joyce - * This source file is subject to the GPL v2, bundled - * with this source code in the file LICENSE. - */ - namespace App\Controller; use App\Entity\SourceCategory; use App\Form\SourceCategoryType; use App\Repository\SourceCategoryRepository; +use Doctrine\ORM\EntityManagerInterface; use Knp\Bundle\PaginatorBundle\Definition\PaginatorAwareInterface; use Nines\UtilBundle\Controller\PaginatorTrait; use Sensio\Bundle\FrameworkExtraBundle\Configuration\IsGranted; @@ -23,55 +18,24 @@ use Symfony\Component\HttpFoundation\Request; use Symfony\Component\Routing\Annotation\Route; -/** - * @Route("/source_category") - */ +#[Route(path: '/source_category')] class SourceCategoryController extends AbstractController implements PaginatorAwareInterface { use PaginatorTrait; - /** - * @Route("/", name="source_category_index", methods={"GET"}) - * - * @Template - */ + #[Route(path: '/', name: 'source_category_index', methods: ['GET'])] + #[Template] public function index(Request $request, SourceCategoryRepository $sourceCategoryRepository) : array { - $query = $sourceCategoryRepository->indexQuery(); - $pageSize = (int) $this->getParameter('page_size'); - $page = $request->query->getint('page', 1); - - return [ - 'source_categories' => $this->paginator->paginate($query, $page, $pageSize), - ]; - } - - /** - * @Route("/search", name="source_category_search", methods={"GET"}) - * - * @Template - * - * @return array - */ - public function search(Request $request, SourceCategoryRepository $sourceCategoryRepository) { $q = $request->query->get('q'); - if ($q) { - $query = $sourceCategoryRepository->searchQuery($q); - $sourceCategories = $this->paginator->paginate($query, $request->query->getInt('page', 1), $this->getParameter('page_size'), ['wrap-queries' => true]); - } else { - $sourceCategories = []; - } + $query = $q ? $sourceCategoryRepository->searchQuery($q) : $sourceCategoryRepository->indexQuery(); return [ - 'source_categories' => $sourceCategories, + 'source_categories' => $this->paginator->paginate($query, $request->query->getInt('page', 1), $this->getParameter('page_size'), ['wrap-queries' => true]), 'q' => $q, ]; } - /** - * @Route("/typeahead", name="source_category_typeahead", methods={"GET"}) - * - * @return JsonResponse - */ - public function typeahead(Request $request, SourceCategoryRepository $sourceCategoryRepository) { + #[Route(path: '/typeahead', name: 'source_category_typeahead', methods: ['GET'])] + public function typeahead(Request $request, SourceCategoryRepository $sourceCategoryRepository) : JsonResponse { $q = $request->query->get('q'); if ( ! $q) { return new JsonResponse([]); @@ -88,20 +52,15 @@ public function typeahead(Request $request, SourceCategoryRepository $sourceCate return new JsonResponse($data); } - /** - * @Route("/new", name="source_category_new", methods={"GET", "POST"}) - * @Template - * @IsGranted("ROLE_CONTENT_ADMIN") - * - * @return array|RedirectResponse - */ - public function new(Request $request) { + #[Route(path: '/new', name: 'source_category_new', methods: ['GET', 'POST'])] + #[Template] + #[IsGranted('ROLE_CONTENT_ADMIN')] + public function new(EntityManagerInterface $entityManager, Request $request) : array|RedirectResponse { $sourceCategory = new SourceCategory(); $form = $this->createForm(SourceCategoryType::class, $sourceCategory); $form->handleRequest($request); if ($form->isSubmitted() && $form->isValid()) { - $entityManager = $this->getDoctrine()->getManager(); $entityManager->persist($sourceCategory); $entityManager->flush(); $this->addFlash('success', 'The new sourceCategory has been saved.'); @@ -115,43 +74,23 @@ public function new(Request $request) { ]; } - /** - * @Route("/new_popup", name="source_category_new_popup", methods={"GET", "POST"}) - * @Template - * @IsGranted("ROLE_CONTENT_ADMIN") - * - * @return array|RedirectResponse - */ - public function new_popup(Request $request) { - return $this->new($request); - } - - /** - * @Route("/{id}", name="source_category_show", methods={"GET"}) - * @Template - * - * @return array - */ - public function show(SourceCategory $sourceCategory) { + #[Route(path: '/{id}', name: 'source_category_show', methods: ['GET'])] + #[Template] + public function show(SourceCategory $sourceCategory) : array { return [ 'source_category' => $sourceCategory, ]; } - /** - * @IsGranted("ROLE_CONTENT_ADMIN") - * @Route("/{id}/edit", name="source_category_edit", methods={"GET", "POST"}) - * - * @Template - * - * @return array|RedirectResponse - */ - public function edit(Request $request, SourceCategory $sourceCategory) { + #[IsGranted('ROLE_CONTENT_ADMIN')] + #[Route(path: '/{id}/edit', name: 'source_category_edit', methods: ['GET', 'POST'])] + #[Template] + public function edit(EntityManagerInterface $entityManager, Request $request, SourceCategory $sourceCategory) : array|RedirectResponse { $form = $this->createForm(SourceCategoryType::class, $sourceCategory); $form->handleRequest($request); if ($form->isSubmitted() && $form->isValid()) { - $this->getDoctrine()->getManager()->flush(); + $entityManager->flush(); $this->addFlash('success', 'The updated sourceCategory has been saved.'); return $this->redirectToRoute('source_category_show', ['id' => $sourceCategory->getId()]); @@ -163,15 +102,10 @@ public function edit(Request $request, SourceCategory $sourceCategory) { ]; } - /** - * @IsGranted("ROLE_CONTENT_ADMIN") - * @Route("/{id}", name="source_category_delete", methods={"DELETE"}) - * - * @return RedirectResponse - */ - public function delete(Request $request, SourceCategory $sourceCategory) { + #[IsGranted('ROLE_CONTENT_ADMIN')] + #[Route(path: '/{id}', name: 'source_category_delete', methods: ['DELETE'])] + public function delete(EntityManagerInterface $entityManager, Request $request, SourceCategory $sourceCategory) : RedirectResponse { if ($this->isCsrfTokenValid('delete' . $sourceCategory->getId(), $request->request->get('_token'))) { - $entityManager = $this->getDoctrine()->getManager(); $entityManager->remove($sourceCategory); $entityManager->flush(); $this->addFlash('success', 'The sourceCategory has been deleted.'); diff --git a/src/Controller/TownController.php b/src/Controller/TownController.php index 7d71497..f223bc1 100644 --- a/src/Controller/TownController.php +++ b/src/Controller/TownController.php @@ -2,17 +2,12 @@ declare(strict_types=1); -/* - * (c) 2022 Michael Joyce - * This source file is subject to the GPL v2, bundled - * with this source code in the file LICENSE. - */ - namespace App\Controller; use App\Entity\Town; use App\Form\TownType; use App\Repository\TownRepository; +use Doctrine\ORM\EntityManagerInterface; use Knp\Bundle\PaginatorBundle\Definition\PaginatorAwareInterface; use Nines\UtilBundle\Controller\PaginatorTrait; use Sensio\Bundle\FrameworkExtraBundle\Configuration\IsGranted; @@ -23,55 +18,24 @@ use Symfony\Component\HttpFoundation\Request; use Symfony\Component\Routing\Annotation\Route; -/** - * @Route("/town") - */ +#[Route(path: '/town')] class TownController extends AbstractController implements PaginatorAwareInterface { use PaginatorTrait; - /** - * @Route("/", name="town_index", methods={"GET"}) - * - * @Template - */ + #[Route(path: '/', name: 'town_index', methods: ['GET'])] + #[Template] public function index(Request $request, TownRepository $townRepository) : array { - $query = $townRepository->indexQuery(); - $pageSize = $this->getParameter('page_size'); - $page = $request->query->getint('page', 1); - - return [ - 'towns' => $this->paginator->paginate($query, $page, $pageSize), - ]; - } - - /** - * @Route("/search", name="town_search", methods={"GET"}) - * - * @Template - * - * @return array - */ - public function search(Request $request, TownRepository $townRepository) { $q = $request->query->get('q'); - if ($q) { - $query = $townRepository->searchQuery($q); - $towns = $this->paginator->paginate($query, $request->query->getInt('page', 1), $this->getParameter('page_size'), ['wrap-queries' => true]); - } else { - $towns = []; - } + $query = $q ? $townRepository->searchQuery($q) : $townRepository->indexQuery(); return [ - 'towns' => $towns, + 'towns' => $this->paginator->paginate($query, $request->query->getInt('page', 1), $this->getParameter('page_size'), ['wrap-queries' => true]), 'q' => $q, ]; } - /** - * @Route("/typeahead", name="town_typeahead", methods={"GET"}) - * - * @return JsonResponse - */ - public function typeahead(Request $request, TownRepository $townRepository) { + #[Route(path: '/typeahead', name: 'town_typeahead', methods: ['GET'])] + public function typeahead(Request $request, TownRepository $townRepository) : JsonResponse { $q = $request->query->get('q'); if ( ! $q) { return new JsonResponse([]); @@ -88,20 +52,15 @@ public function typeahead(Request $request, TownRepository $townRepository) { return new JsonResponse($data); } - /** - * @Route("/new", name="town_new", methods={"GET", "POST"}) - * @Template - * @IsGranted("ROLE_CONTENT_ADMIN") - * - * @return array|RedirectResponse - */ - public function new(Request $request) { + #[Route(path: '/new', name: 'town_new', methods: ['GET', 'POST'])] + #[Template] + #[IsGranted('ROLE_CONTENT_ADMIN')] + public function new(EntityManagerInterface $entityManager, Request $request) : array|RedirectResponse { $town = new Town(); $form = $this->createForm(TownType::class, $town); $form->handleRequest($request); if ($form->isSubmitted() && $form->isValid()) { - $entityManager = $this->getDoctrine()->getManager(); $entityManager->persist($town); $entityManager->flush(); @@ -116,43 +75,23 @@ public function new(Request $request) { ]; } - /** - * @Route("/new_popup", name="town_new_popup", methods={"GET", "POST"}) - * @Template - * @IsGranted("ROLE_CONTENT_ADMIN") - * - * @return array|RedirectResponse - */ - public function new_popup(Request $request) { - return $this->new($request); - } - - /** - * @Route("/{id}", name="town_show", methods={"GET"}) - * @Template - * - * @return array - */ - public function show(Town $town) { + #[Route(path: '/{id}', name: 'town_show', methods: ['GET'])] + #[Template] + public function show(Town $town) : array { return [ 'town' => $town, ]; } - /** - * @IsGranted("ROLE_CONTENT_ADMIN") - * @Route("/{id}/edit", name="town_edit", methods={"GET", "POST"}) - * - * @Template - * - * @return array|RedirectResponse - */ - public function edit(Request $request, Town $town) { + #[IsGranted('ROLE_CONTENT_ADMIN')] + #[Route(path: '/{id}/edit', name: 'town_edit', methods: ['GET', 'POST'])] + #[Template] + public function edit(EntityManagerInterface $entityManager, Request $request, Town $town) : array|RedirectResponse { $form = $this->createForm(TownType::class, $town); $form->handleRequest($request); if ($form->isSubmitted() && $form->isValid()) { - $this->getDoctrine()->getManager()->flush(); + $entityManager->flush(); $this->addFlash('success', 'The updated town has been saved.'); return $this->redirectToRoute('town_show', ['id' => $town->getId()]); @@ -164,15 +103,10 @@ public function edit(Request $request, Town $town) { ]; } - /** - * @IsGranted("ROLE_CONTENT_ADMIN") - * @Route("/{id}", name="town_delete", methods={"DELETE"}) - * - * @return RedirectResponse - */ - public function delete(Request $request, Town $town) { + #[IsGranted('ROLE_CONTENT_ADMIN')] + #[Route(path: '/{id}', name: 'town_delete', methods: ['DELETE'])] + public function delete(EntityManagerInterface $entityManager, Request $request, Town $town) : RedirectResponse { if ($this->isCsrfTokenValid('delete' . $town->getId(), $request->request->get('_token'))) { - $entityManager = $this->getDoctrine()->getManager(); $entityManager->remove($town); $entityManager->flush(); $this->addFlash('success', 'The town has been deleted.'); diff --git a/src/Controller/TransactionCategoryController.php b/src/Controller/TransactionCategoryController.php index e27c14c..3dbe418 100644 --- a/src/Controller/TransactionCategoryController.php +++ b/src/Controller/TransactionCategoryController.php @@ -2,17 +2,12 @@ declare(strict_types=1); -/* - * (c) 2022 Michael Joyce - * This source file is subject to the GPL v2, bundled - * with this source code in the file LICENSE. - */ - namespace App\Controller; use App\Entity\TransactionCategory; use App\Form\TransactionCategoryType; use App\Repository\TransactionCategoryRepository; +use Doctrine\ORM\EntityManagerInterface; use Knp\Bundle\PaginatorBundle\Definition\PaginatorAwareInterface; use Nines\UtilBundle\Controller\PaginatorTrait; use Sensio\Bundle\FrameworkExtraBundle\Configuration\IsGranted; @@ -23,55 +18,24 @@ use Symfony\Component\HttpFoundation\Request; use Symfony\Component\Routing\Annotation\Route; -/** - * @Route("/transaction_category") - */ +#[Route(path: '/transaction_category')] class TransactionCategoryController extends AbstractController implements PaginatorAwareInterface { use PaginatorTrait; - /** - * @Route("/", name="transaction_category_index", methods={"GET"}) - * - * @Template - */ + #[Route(path: '/', name: 'transaction_category_index', methods: ['GET'])] + #[Template] public function index(Request $request, TransactionCategoryRepository $transactionCategoryRepository) : array { - $query = $transactionCategoryRepository->indexQuery(); - $pageSize = $this->getParameter('page_size'); - $page = $request->query->getint('page', 1); - - return [ - 'transaction_categories' => $this->paginator->paginate($query, $page, $pageSize), - ]; - } - - /** - * @Route("/search", name="transaction_category_search", methods={"GET"}) - * - * @Template - * - * @return array - */ - public function search(Request $request, TransactionCategoryRepository $transactionCategoryRepository) { $q = $request->query->get('q'); - if ($q) { - $query = $transactionCategoryRepository->searchQuery($q); - $transactionCategories = $this->paginator->paginate($query, $request->query->getInt('page', 1), $this->getParameter('page_size'), ['wrap-queries' => true]); - } else { - $transactionCategories = []; - } + $query = $q ? $transactionCategoryRepository->searchQuery($q) : $transactionCategoryRepository->indexQuery(); return [ - 'transaction_categories' => $transactionCategories, + 'transaction_categories' => $this->paginator->paginate($query, $request->query->getInt('page', 1), $this->getParameter('page_size'), ['wrap-queries' => true]), 'q' => $q, ]; } - /** - * @Route("/typeahead", name="transaction_category_typeahead", methods={"GET"}) - * - * @return JsonResponse - */ - public function typeahead(Request $request, TransactionCategoryRepository $transactionCategoryRepository) { + #[Route(path: '/typeahead', name: 'transaction_category_typeahead', methods: ['GET'])] + public function typeahead(Request $request, TransactionCategoryRepository $transactionCategoryRepository) : JsonResponse { $q = $request->query->get('q'); if ( ! $q) { return new JsonResponse([]); @@ -88,20 +52,15 @@ public function typeahead(Request $request, TransactionCategoryRepository $trans return new JsonResponse($data); } - /** - * @Route("/new", name="transaction_category_new", methods={"GET", "POST"}) - * @Template - * @IsGranted("ROLE_CONTENT_ADMIN") - * - * @return array|RedirectResponse - */ - public function new(Request $request) { + #[Route(path: '/new', name: 'transaction_category_new', methods: ['GET', 'POST'])] + #[Template] + #[IsGranted('ROLE_CONTENT_ADMIN')] + public function new(EntityManagerInterface $entityManager, Request $request) : array|RedirectResponse { $transactionCategory = new TransactionCategory(); $form = $this->createForm(TransactionCategoryType::class, $transactionCategory); $form->handleRequest($request); if ($form->isSubmitted() && $form->isValid()) { - $entityManager = $this->getDoctrine()->getManager(); $entityManager->persist($transactionCategory); $entityManager->flush(); $this->addFlash('success', 'The new transactionCategory has been saved.'); @@ -115,43 +74,23 @@ public function new(Request $request) { ]; } - /** - * @Route("/new_popup", name="transaction_category_new_popup", methods={"GET", "POST"}) - * @Template - * @IsGranted("ROLE_CONTENT_ADMIN") - * - * @return array|RedirectResponse - */ - public function new_popup(Request $request) { - return $this->new($request); - } - - /** - * @Route("/{id}", name="transaction_category_show", methods={"GET"}) - * @Template - * - * @return array - */ - public function show(TransactionCategory $transactionCategory) { + #[Route(path: '/{id}', name: 'transaction_category_show', methods: ['GET'])] + #[Template] + public function show(TransactionCategory $transactionCategory) : array { return [ 'transaction_category' => $transactionCategory, ]; } - /** - * @IsGranted("ROLE_CONTENT_ADMIN") - * @Route("/{id}/edit", name="transaction_category_edit", methods={"GET", "POST"}) - * - * @Template - * - * @return array|RedirectResponse - */ - public function edit(Request $request, TransactionCategory $transactionCategory) { + #[IsGranted('ROLE_CONTENT_ADMIN')] + #[Route(path: '/{id}/edit', name: 'transaction_category_edit', methods: ['GET', 'POST'])] + #[Template] + public function edit(EntityManagerInterface $entityManager, Request $request, TransactionCategory $transactionCategory) : array|RedirectResponse { $form = $this->createForm(TransactionCategoryType::class, $transactionCategory); $form->handleRequest($request); if ($form->isSubmitted() && $form->isValid()) { - $this->getDoctrine()->getManager()->flush(); + $entityManager->flush(); $this->addFlash('success', 'The updated transactionCategory has been saved.'); return $this->redirectToRoute('transaction_category_show', ['id' => $transactionCategory->getId()]); @@ -163,15 +102,10 @@ public function edit(Request $request, TransactionCategory $transactionCategory) ]; } - /** - * @IsGranted("ROLE_CONTENT_ADMIN") - * @Route("/{id}", name="transaction_category_delete", methods={"DELETE"}) - * - * @return RedirectResponse - */ - public function delete(Request $request, TransactionCategory $transactionCategory) { + #[IsGranted('ROLE_CONTENT_ADMIN')] + #[Route(path: '/{id}', name: 'transaction_category_delete', methods: ['DELETE'])] + public function delete(EntityManagerInterface $entityManager, Request $request, TransactionCategory $transactionCategory) : RedirectResponse { if ($this->isCsrfTokenValid('delete' . $transactionCategory->getId(), $request->request->get('_token'))) { - $entityManager = $this->getDoctrine()->getManager(); $entityManager->remove($transactionCategory); $entityManager->flush(); $this->addFlash('success', 'The transactionCategory has been deleted.'); diff --git a/src/Controller/TransactionController.php b/src/Controller/TransactionController.php index 39f1761..d1dc598 100644 --- a/src/Controller/TransactionController.php +++ b/src/Controller/TransactionController.php @@ -2,12 +2,6 @@ declare(strict_types=1); -/* - * (c) 2022 Michael Joyce - * This source file is subject to the GPL v2, bundled - * with this source code in the file LICENSE. - */ - namespace App\Controller; use App\Entity\Transaction; @@ -23,63 +17,31 @@ use Symfony\Component\HttpFoundation\Request; use Symfony\Component\Routing\Annotation\Route; -/** - * @Route("/transaction") - */ +#[Route(path: '/transaction')] class TransactionController extends AbstractController implements PaginatorAwareInterface { use PaginatorTrait; - /** - * @Route("/", name="transaction_index", methods={"GET"}) - * - * @Template - */ + #[Route(path: '/', name: 'transaction_index', methods: ['GET'])] + #[Template] public function index(Request $request, TransactionRepository $transactionRepository) : array { - $query = $transactionRepository->indexQuery(); - $pageSize = $this->getParameter('page_size'); - $page = $request->query->getint('page', 1); - - return [ - 'transactions' => $this->paginator->paginate($query, $page, $pageSize), - ]; - } - - /** - * @Route("/search", name="transaction_search", methods={"GET"}) - * - * @Template - * - * @return array - */ - public function search(Request $request, TransactionRepository $transactionRepository) { $q = $request->query->get('q'); - if ($q) { - $query = $transactionRepository->searchQuery($q); - $transactions = $this->paginator->paginate($query, $request->query->getInt('page', 1), $this->getParameter('page_size'), ['wrap-queries' => true]); - } else { - $transactions = []; - } + $query = $q ? $transactionRepository->searchQuery($q) : $transactionRepository->indexQuery(); return [ - 'transactions' => $transactions, + 'transactions' => $this->paginator->paginate($query, $request->query->getInt('page', 1), $this->getParameter('page_size'), ['wrap-queries' => true]), 'q' => $q, ]; } - /** - * @Route("/new", name="transaction_new", methods={"GET", "POST"}) - * @Template - * @IsGranted("ROLE_CONTENT_ADMIN") - * - * @return array|RedirectResponse - */ - public function new(Request $request) { + #[Route(path: '/new', name: 'transaction_new', methods: ['GET', 'POST'])] + #[Template] + #[IsGranted('ROLE_CONTENT_ADMIN')] + public function new(EntityManagerInterface $entityManager, Request $request) : array|RedirectResponse { $transaction = new Transaction(); $form = $this->createForm(TransactionType::class, $transaction); $form->handleRequest($request); if ($form->isSubmitted() && $form->isValid()) { - $entityManager = $this->getDoctrine()->getManager(); $entityManager->persist($transaction); $entityManager->flush(); $this->addFlash('success', 'The new transaction has been saved.'); @@ -95,12 +57,11 @@ public function new(Request $request) { /** * Displays a form to copy a transaction. - * - * @Route("/{id}/copy", name="transaction_copy", methods={"GET"}) - * @Template - * @isGranted("ROLE_CONTENT_ADMIN") */ - public function copy(Request $request, Transaction $transaction, EntityManagerInterface $em) : array { + #[Route(path: '/{id}/copy', name: 'transaction_copy', methods: ['GET'])] + #[Template] + #[IsGranted('ROLE_CONTENT_ADMIN')] + public function copy(Transaction $transaction, EntityManagerInterface $em) : array { $form = $this->createForm(TransactionType::class, $transaction, [ 'action' => $this->generateUrl('transaction_new'), ]); @@ -111,43 +72,23 @@ public function copy(Request $request, Transaction $transaction, EntityManagerIn ]; } - /** - * @Route("/new_popup", name="transaction_new_popup", methods={"GET", "POST"}) - * @Template - * @IsGranted("ROLE_CONTENT_ADMIN") - * - * @return array|RedirectResponse - */ - public function new_popup(Request $request) { - return $this->new($request); - } - - /** - * @Route("/{id}", name="transaction_show", methods={"GET"}) - * @Template - * - * @return array - */ - public function show(Transaction $transaction) { + #[Route(path: '/{id}', name: 'transaction_show', methods: ['GET'])] + #[Template] + public function show(Transaction $transaction) : ?array { return [ 'transaction' => $transaction, ]; } - /** - * @IsGranted("ROLE_CONTENT_ADMIN") - * @Route("/{id}/edit", name="transaction_edit", methods={"GET", "POST"}) - * - * @Template - * - * @return array|RedirectResponse - */ - public function edit(Request $request, Transaction $transaction) { + #[IsGranted('ROLE_CONTENT_ADMIN')] + #[Route(path: '/{id}/edit', name: 'transaction_edit', methods: ['GET', 'POST'])] + #[Template] + public function edit(EntityManagerInterface $entityManager, Request $request, Transaction $transaction) : array|RedirectResponse { $form = $this->createForm(TransactionType::class, $transaction); $form->handleRequest($request); if ($form->isSubmitted() && $form->isValid()) { - $this->getDoctrine()->getManager()->flush(); + $entityManager->flush(); $this->addFlash('success', 'The updated transaction has been saved.'); return $this->redirectToRoute('transaction_show', ['id' => $transaction->getId()]); @@ -159,15 +100,10 @@ public function edit(Request $request, Transaction $transaction) { ]; } - /** - * @IsGranted("ROLE_CONTENT_ADMIN") - * @Route("/{id}", name="transaction_delete", methods={"DELETE"}) - * - * @return RedirectResponse - */ - public function delete(Request $request, Transaction $transaction) { + #[IsGranted('ROLE_CONTENT_ADMIN')] + #[Route(path: '/{id}', name: 'transaction_delete', methods: ['DELETE'])] + public function delete(EntityManagerInterface $entityManager, Request $request, Transaction $transaction) : RedirectResponse { if ($this->isCsrfTokenValid('delete' . $transaction->getId(), $request->request->get('_token'))) { - $entityManager = $this->getDoctrine()->getManager(); $entityManager->remove($transaction); $entityManager->flush(); $this->addFlash('success', 'The transaction has been deleted.'); diff --git a/src/DataFixtures/ArchdeaconryFixtures.php b/src/DataFixtures/ArchdeaconryFixtures.php index 46e7e82..4d8490c 100644 --- a/src/DataFixtures/ArchdeaconryFixtures.php +++ b/src/DataFixtures/ArchdeaconryFixtures.php @@ -2,12 +2,6 @@ declare(strict_types=1); -/* - * (c) 2022 Michael Joyce - * This source file is subject to the GPL v2, bundled - * with this source code in the file LICENSE. - */ - namespace App\DataFixtures; use App\Entity\Archdeaconry; @@ -22,9 +16,6 @@ public static function getGroups() : array { return ['dev', 'test']; } - /** - * {@inheritDoc} - */ public function load(ObjectManager $manager) : void { for ($i = 1; $i <= 5; $i++) { $fixture = new Archdeaconry(); @@ -46,11 +37,6 @@ public function load(ObjectManager $manager) : void { } } - /** - * {@inheritdoc} - * - * @return array - */ public function getDependencies() : array { return [ DioceseFixtures::class, diff --git a/src/DataFixtures/ArchiveFixtures.php b/src/DataFixtures/ArchiveFixtures.php index ed7d350..f0fa84c 100644 --- a/src/DataFixtures/ArchiveFixtures.php +++ b/src/DataFixtures/ArchiveFixtures.php @@ -2,12 +2,6 @@ declare(strict_types=1); -/* - * (c) 2022 Michael Joyce - * This source file is subject to the GPL v2, bundled - * with this source code in the file LICENSE. - */ - namespace App\DataFixtures; use App\Entity\Archive; @@ -21,9 +15,6 @@ public static function getGroups() : array { return ['dev', 'test']; } - /** - * {@inheritDoc} - */ public function load(ObjectManager $manager) : void { for ($i = 1; $i <= 5; $i++) { $fixture = new Archive(); diff --git a/src/DataFixtures/BookFixtures.php b/src/DataFixtures/BookFixtures.php index fd858c6..1411bb9 100644 --- a/src/DataFixtures/BookFixtures.php +++ b/src/DataFixtures/BookFixtures.php @@ -2,12 +2,6 @@ declare(strict_types=1); -/* - * (c) 2022 Michael Joyce - * This source file is subject to the GPL v2, bundled - * with this source code in the file LICENSE. - */ - namespace App\DataFixtures; use App\Entity\Book; @@ -22,9 +16,6 @@ public static function getGroups() : array { return ['dev', 'test']; } - /** - * {@inheritDoc} - */ public function load(ObjectManager $manager) : void { for ($i = 1; $i <= 5; $i++) { $fixture = new Book(); @@ -55,11 +46,6 @@ public function load(ObjectManager $manager) : void { } } - /** - * {@inheritdoc} - * - * @return array - */ public function getDependencies() : array { return [ FormatFixtures::class, diff --git a/src/DataFixtures/CountyFixtures.php b/src/DataFixtures/CountyFixtures.php index 0f14288..b87ef7f 100644 --- a/src/DataFixtures/CountyFixtures.php +++ b/src/DataFixtures/CountyFixtures.php @@ -2,12 +2,6 @@ declare(strict_types=1); -/* - * (c) 2022 Michael Joyce - * This source file is subject to the GPL v2, bundled - * with this source code in the file LICENSE. - */ - namespace App\DataFixtures; use App\Entity\County; @@ -22,9 +16,6 @@ public static function getGroups() : array { return ['dev', 'test']; } - /** - * {@inheritDoc} - */ public function load(ObjectManager $manager) : void { for ($i = 1; $i <= 5; $i++) { $fixture = new County(); @@ -46,11 +37,6 @@ public function load(ObjectManager $manager) : void { } } - /** - * {@inheritdoc} - * - * @return array - */ public function getDependencies() : array { return [ NationFixtures::class, diff --git a/src/DataFixtures/DioceseFixtures.php b/src/DataFixtures/DioceseFixtures.php index 8d25e35..49853ee 100644 --- a/src/DataFixtures/DioceseFixtures.php +++ b/src/DataFixtures/DioceseFixtures.php @@ -2,12 +2,6 @@ declare(strict_types=1); -/* - * (c) 2022 Michael Joyce - * This source file is subject to the GPL v2, bundled - * with this source code in the file LICENSE. - */ - namespace App\DataFixtures; use App\Entity\Diocese; @@ -21,9 +15,6 @@ public static function getGroups() : array { return ['dev', 'test']; } - /** - * {@inheritDoc} - */ public function load(ObjectManager $manager) : void { for ($i = 1; $i <= 5; $i++) { $fixture = new Diocese(); @@ -37,11 +28,6 @@ public function load(ObjectManager $manager) : void { $manager->flush(); } - /** - * {@inheritdoc} - * - * @return array - */ public function getDependencies() : array { return [ ProvinceFixtures::class, diff --git a/src/DataFixtures/FormatFixtures.php b/src/DataFixtures/FormatFixtures.php index 5adf211..75613af 100644 --- a/src/DataFixtures/FormatFixtures.php +++ b/src/DataFixtures/FormatFixtures.php @@ -2,12 +2,6 @@ declare(strict_types=1); -/* - * (c) 2022 Michael Joyce - * This source file is subject to the GPL v2, bundled - * with this source code in the file LICENSE. - */ - namespace App\DataFixtures; use App\Entity\Format; @@ -20,9 +14,6 @@ public static function getGroups() : array { return ['dev', 'test']; } - /** - * {@inheritDoc} - */ public function load(ObjectManager $manager) : void { for ($i = 1; $i <= 5; $i++) { $fixture = new Format(); diff --git a/src/DataFixtures/HoldingFixtures.php b/src/DataFixtures/HoldingFixtures.php index 7263864..f1fc943 100644 --- a/src/DataFixtures/HoldingFixtures.php +++ b/src/DataFixtures/HoldingFixtures.php @@ -2,12 +2,6 @@ declare(strict_types=1); -/* - * (c) 2022 Michael Joyce - * This source file is subject to the GPL v2, bundled - * with this source code in the file LICENSE. - */ - namespace App\DataFixtures; use App\Entity\Holding; @@ -34,9 +28,6 @@ public static function getGroups() : array { return ['dev', 'test']; } - /** - * {@inheritDoc} - */ public function load(ObjectManager $manager) : void { $this->imageManager->setCopy(true); for ($i = 1; $i <= 5; $i++) { @@ -55,7 +46,6 @@ public function load(ObjectManager $manager) : void { $upload = new UploadedFile(dirname(__FILE__, 3) . '/tests/data/image/' . $imageFile, $imageFile, 'image/jpeg', null, true); $image = new Image(); $image->setFile($upload); - $image->setPublic(0 === $i % 2); $image->setOriginalName($imageFile); $image->setDescription("

This is paragraph {$i}

"); $image->setLicense("

This is paragraph {$i}

"); @@ -68,18 +58,11 @@ public function load(ObjectManager $manager) : void { $this->imageManager->setCopy(false); } - /** - * @required - */ + #[\Symfony\Contracts\Service\Attribute\Required] public function setImageManager(ImageManager $imageManager) : void { $this->imageManager = $imageManager; } - /** - * {@inheritdoc} - * - * @return array - */ public function getDependencies() : array { return [ ParishFixtures::class, diff --git a/src/DataFixtures/InjunctionFixtures.php b/src/DataFixtures/InjunctionFixtures.php index 87a46fc..6d8083f 100644 --- a/src/DataFixtures/InjunctionFixtures.php +++ b/src/DataFixtures/InjunctionFixtures.php @@ -2,12 +2,6 @@ declare(strict_types=1); -/* - * (c) 2022 Michael Joyce - * This source file is subject to the GPL v2, bundled - * with this source code in the file LICENSE. - */ - namespace App\DataFixtures; use App\Entity\Injunction; @@ -21,9 +15,6 @@ public static function getGroups() : array { return ['dev', 'test']; } - /** - * {@inheritDoc} - */ public function load(ObjectManager $manager) : void { for ($i = 1; $i <= 5; $i++) { $fixture = new Injunction(); @@ -47,11 +38,6 @@ public function load(ObjectManager $manager) : void { $manager->flush(); } - /** - * {@inheritdoc} - * - * @return array - */ public function getDependencies() : array { return [ MonarchFixtures::class, diff --git a/src/DataFixtures/InventoryFixtures.php b/src/DataFixtures/InventoryFixtures.php index 6647544..924c302 100644 --- a/src/DataFixtures/InventoryFixtures.php +++ b/src/DataFixtures/InventoryFixtures.php @@ -2,12 +2,6 @@ declare(strict_types=1); -/* - * (c) 2022 Michael Joyce - * This source file is subject to the GPL v2, bundled - * with this source code in the file LICENSE. - */ - namespace App\DataFixtures; use App\Entity\Inventory; @@ -34,9 +28,6 @@ public static function getGroups() : array { return ['dev', 'test']; } - /** - * {@inheritDoc} - */ public function load(ObjectManager $manager) : void { $this->imageManager->setCopy(true); for ($i = 1; $i <= 5; $i++) { @@ -60,7 +51,6 @@ public function load(ObjectManager $manager) : void { $upload = new UploadedFile(dirname(__FILE__, 3) . '/tests/data/image/' . $imageFile, $imageFile, 'image/jpeg', null, true); $image = new Image(); $image->setFile($upload); - $image->setPublic(0 === $i % 2); $image->setOriginalName($imageFile); $image->setDescription("

This is paragraph {$i}

"); $image->setLicense("

This is paragraph {$i}

"); @@ -73,18 +63,11 @@ public function load(ObjectManager $manager) : void { $this->imageManager->setCopy(false); } - /** - * @required - */ + #[\Symfony\Contracts\Service\Attribute\Required] public function setImageManager(ImageManager $imageManager) : void { $this->imageManager = $imageManager; } - /** - * {@inheritdoc} - * - * @return array - */ public function getDependencies() : array { return [ ManuscriptSourceFixtures::class, diff --git a/src/DataFixtures/ManuscriptSourceFixtures.php b/src/DataFixtures/ManuscriptSourceFixtures.php index d5416fe..039d631 100644 --- a/src/DataFixtures/ManuscriptSourceFixtures.php +++ b/src/DataFixtures/ManuscriptSourceFixtures.php @@ -2,12 +2,6 @@ declare(strict_types=1); -/* - * (c) 2022 Michael Joyce - * This source file is subject to the GPL v2, bundled - * with this source code in the file LICENSE. - */ - namespace App\DataFixtures; use App\Entity\ManuscriptSource; @@ -22,9 +16,6 @@ public static function getGroups() : array { return ['dev', 'test']; } - /** - * {@inheritDoc} - */ public function load(ObjectManager $manager) : void { for ($i = 1; $i <= 5; $i++) { $fixture = new ManuscriptSource(); @@ -49,11 +40,6 @@ public function load(ObjectManager $manager) : void { } } - /** - * {@inheritdoc} - * - * @return array - */ public function getDependencies() : array { return [ SourceCategoryFixtures::class, diff --git a/src/DataFixtures/MonarchFixtures.php b/src/DataFixtures/MonarchFixtures.php index 0069607..d466858 100644 --- a/src/DataFixtures/MonarchFixtures.php +++ b/src/DataFixtures/MonarchFixtures.php @@ -2,12 +2,6 @@ declare(strict_types=1); -/* - * (c) 2022 Michael Joyce - * This source file is subject to the GPL v2, bundled - * with this source code in the file LICENSE. - */ - namespace App\DataFixtures; use App\Entity\Monarch; @@ -20,9 +14,6 @@ public static function getGroups() : array { return ['dev', 'test']; } - /** - * {@inheritDoc} - */ public function load(ObjectManager $manager) : void { for ($i = 1; $i <= 5; $i++) { $fixture = new Monarch(); diff --git a/src/DataFixtures/NationFixtures.php b/src/DataFixtures/NationFixtures.php index 7703b91..55976c1 100644 --- a/src/DataFixtures/NationFixtures.php +++ b/src/DataFixtures/NationFixtures.php @@ -2,12 +2,6 @@ declare(strict_types=1); -/* - * (c) 2022 Michael Joyce - * This source file is subject to the GPL v2, bundled - * with this source code in the file LICENSE. - */ - namespace App\DataFixtures; use App\Entity\Nation; @@ -20,9 +14,6 @@ public static function getGroups() : array { return ['dev', 'test']; } - /** - * {@inheritDoc} - */ public function load(ObjectManager $manager) : void { for ($i = 1; $i <= 5; $i++) { $fixture = new Nation(); diff --git a/src/DataFixtures/ParishFixtures.php b/src/DataFixtures/ParishFixtures.php index 792bfb9..c7f9f3c 100644 --- a/src/DataFixtures/ParishFixtures.php +++ b/src/DataFixtures/ParishFixtures.php @@ -2,12 +2,6 @@ declare(strict_types=1); -/* - * (c) 2022 Michael Joyce - * This source file is subject to the GPL v2, bundled - * with this source code in the file LICENSE. - */ - namespace App\DataFixtures; use App\Entity\Parish; @@ -22,9 +16,6 @@ public static function getGroups() : array { return ['dev', 'test']; } - /** - * {@inheritDoc} - */ public function load(ObjectManager $manager) : void { for ($i = 1; $i <= 5; $i++) { $fixture = new Parish(); @@ -50,11 +41,6 @@ public function load(ObjectManager $manager) : void { } } - /** - * {@inheritdoc} - * - * @return array - */ public function getDependencies() : array { return [ ArchdeaconryFixtures::class, diff --git a/src/DataFixtures/PrintSourceFixtures.php b/src/DataFixtures/PrintSourceFixtures.php index f4da267..2bef690 100644 --- a/src/DataFixtures/PrintSourceFixtures.php +++ b/src/DataFixtures/PrintSourceFixtures.php @@ -2,12 +2,6 @@ declare(strict_types=1); -/* - * (c) 2022 Michael Joyce - * This source file is subject to the GPL v2, bundled - * with this source code in the file LICENSE. - */ - namespace App\DataFixtures; use App\Entity\PrintSource; @@ -22,9 +16,6 @@ public static function getGroups() : array { return ['dev', 'test']; } - /** - * {@inheritDoc} - */ public function load(ObjectManager $manager) : void { for ($i = 1; $i <= 5; $i++) { $fixture = new PrintSource(); @@ -49,11 +40,6 @@ public function load(ObjectManager $manager) : void { $manager->flush(); } - /** - * {@inheritdoc} - * - * @return array - */ public function getDependencies() : array { return [ SourceCategoryFixtures::class, diff --git a/src/DataFixtures/ProvinceFixtures.php b/src/DataFixtures/ProvinceFixtures.php index 7bfdc55..6a70dbc 100644 --- a/src/DataFixtures/ProvinceFixtures.php +++ b/src/DataFixtures/ProvinceFixtures.php @@ -2,12 +2,6 @@ declare(strict_types=1); -/* - * (c) 2022 Michael Joyce - * This source file is subject to the GPL v2, bundled - * with this source code in the file LICENSE. - */ - namespace App\DataFixtures; use App\Entity\Province; @@ -22,9 +16,6 @@ public static function getGroups() : array { return ['dev', 'test']; } - /** - * {@inheritDoc} - */ public function load(ObjectManager $manager) : void { for ($i = 1; $i <= 5; $i++) { $fixture = new Province(); @@ -46,11 +37,6 @@ public function load(ObjectManager $manager) : void { } } - /** - * {@inheritdoc} - * - * @return array - */ public function getDependencies() : array { return [ NationFixtures::class, diff --git a/src/DataFixtures/SourceCategoryFixtures.php b/src/DataFixtures/SourceCategoryFixtures.php index d940f75..5d783bd 100644 --- a/src/DataFixtures/SourceCategoryFixtures.php +++ b/src/DataFixtures/SourceCategoryFixtures.php @@ -2,12 +2,6 @@ declare(strict_types=1); -/* - * (c) 2022 Michael Joyce - * This source file is subject to the GPL v2, bundled - * with this source code in the file LICENSE. - */ - namespace App\DataFixtures; use App\Entity\SourceCategory; @@ -20,9 +14,6 @@ public static function getGroups() : array { return ['dev', 'test']; } - /** - * {@inheritDoc} - */ public function load(ObjectManager $manager) : void { for ($i = 1; $i <= 5; $i++) { $fixture = new SourceCategory(); diff --git a/src/DataFixtures/TownFixtures.php b/src/DataFixtures/TownFixtures.php index 30766bf..e068e28 100644 --- a/src/DataFixtures/TownFixtures.php +++ b/src/DataFixtures/TownFixtures.php @@ -2,12 +2,6 @@ declare(strict_types=1); -/* - * (c) 2022 Michael Joyce - * This source file is subject to the GPL v2, bundled - * with this source code in the file LICENSE. - */ - namespace App\DataFixtures; use App\Entity\Town; @@ -22,9 +16,6 @@ public static function getGroups() : array { return ['dev', 'test']; } - /** - * {@inheritDoc} - */ public function load(ObjectManager $manager) : void { for ($i = 1; $i <= 5; $i++) { $fixture = new Town(); @@ -47,11 +38,6 @@ public function load(ObjectManager $manager) : void { } } - /** - * {@inheritdoc} - * - * @return array - */ public function getDependencies() : array { return [ CountyFixtures::class, diff --git a/src/DataFixtures/TransactionCategoryFixtures.php b/src/DataFixtures/TransactionCategoryFixtures.php index 99b6d69..df5467a 100644 --- a/src/DataFixtures/TransactionCategoryFixtures.php +++ b/src/DataFixtures/TransactionCategoryFixtures.php @@ -2,12 +2,6 @@ declare(strict_types=1); -/* - * (c) 2022 Michael Joyce - * This source file is subject to the GPL v2, bundled - * with this source code in the file LICENSE. - */ - namespace App\DataFixtures; use App\Entity\TransactionCategory; @@ -20,9 +14,6 @@ public static function getGroups() : array { return ['dev', 'test']; } - /** - * {@inheritDoc} - */ public function load(ObjectManager $manager) : void { for ($i = 1; $i <= 5; $i++) { $fixture = new TransactionCategory(); diff --git a/src/DataFixtures/TransactionFixtures.php b/src/DataFixtures/TransactionFixtures.php index cd11627..576757c 100644 --- a/src/DataFixtures/TransactionFixtures.php +++ b/src/DataFixtures/TransactionFixtures.php @@ -2,12 +2,6 @@ declare(strict_types=1); -/* - * (c) 2022 Michael Joyce - * This source file is subject to the GPL v2, bundled - * with this source code in the file LICENSE. - */ - namespace App\DataFixtures; use App\Entity\Transaction; @@ -21,9 +15,6 @@ public static function getGroups() : array { return ['dev', 'test']; } - /** - * {@inheritDoc} - */ public function load(ObjectManager $manager) : void { for ($i = 1; $i <= 5; $i++) { $fixture = new Transaction(); @@ -50,11 +41,6 @@ public function load(ObjectManager $manager) : void { $manager->flush(); } - /** - * {@inheritdoc} - * - * @return array - */ public function getDependencies() : array { return [ ParishFixtures::class, diff --git a/src/Entity/Archdeaconry.php b/src/Entity/Archdeaconry.php index 1ff581f..e65fe5b 100644 --- a/src/Entity/Archdeaconry.php +++ b/src/Entity/Archdeaconry.php @@ -2,12 +2,6 @@ declare(strict_types=1); -/* - * (c) 2022 Michael Joyce - * This source file is subject to the GPL v2, bundled - * with this source code in the file LICENSE. - */ - namespace App\Entity; use App\Repository\ArchdeaconryRepository; @@ -18,32 +12,21 @@ use Nines\MediaBundle\Entity\LinkableTrait; use Nines\UtilBundle\Entity\AbstractTerm; -/** - * @ORM\Entity(repositoryClass=ArchdeaconryRepository::class) - */ +#[ORM\Entity(repositoryClass: ArchdeaconryRepository::class)] class Archdeaconry extends AbstractTerm implements LinkableInterface { use LinkableTrait { LinkableTrait::__construct as linkable_construct; } - /** - * @var Diocese - * @ORM\ManyToOne(targetEntity="Diocese", inversedBy="archdeaconries") - * @ORM\JoinColumn(nullable=false) - */ - private $diocese; + #[ORM\ManyToOne(targetEntity: Diocese::class, inversedBy: 'archdeaconries')] + #[ORM\JoinColumn(nullable: false, onDelete: 'CASCADE')] + private ?Diocese $diocese = null; - /** - * @var Collection|Parish[] - * @ORM\OneToMany(targetEntity="Parish", mappedBy="archdeaconry") - */ - private $parishes; + #[ORM\OneToMany(targetEntity: Parish::class, mappedBy: 'archdeaconry')] + private Collection $parishes; - /** - * @var Collection - * @ORM\OneToMany(targetEntity="Injunction", mappedBy="archdeaconry") - */ - private $injunctions; + #[ORM\OneToMany(targetEntity: Injunction::class, mappedBy: 'archdeaconry')] + private Collection $injunctions; public function __construct() { parent::__construct(); @@ -90,7 +73,7 @@ public function removeParish(Parish $parish) : self { } /** - * @return Collection + * @return Collection */ public function getInjunctions() : Collection { return $this->injunctions; diff --git a/src/Entity/Archive.php b/src/Entity/Archive.php index 4d6c32e..065b11e 100644 --- a/src/Entity/Archive.php +++ b/src/Entity/Archive.php @@ -2,12 +2,6 @@ declare(strict_types=1); -/* - * (c) 2022 Michael Joyce - * This source file is subject to the GPL v2, bundled - * with this source code in the file LICENSE. - */ - namespace App\Entity; use App\Repository\ArchiveRepository; @@ -18,25 +12,17 @@ use Nines\MediaBundle\Entity\LinkableTrait; use Nines\UtilBundle\Entity\AbstractTerm; -/** - * @ORM\Entity(repositoryClass=ArchiveRepository::class) - */ +#[ORM\Entity(repositoryClass: ArchiveRepository::class)] class Archive extends AbstractTerm implements LinkableInterface { use LinkableTrait { LinkableTrait::__construct as linkable_constructor; } - /** - * @var Collection|ManuscriptSource[] - * @ORM\OneToMany(targetEntity="ManuscriptSource", mappedBy="archive") - */ - private $manuscriptSources; + #[ORM\OneToMany(targetEntity: ManuscriptSource::class, mappedBy: 'archive')] + private Collection $manuscriptSources; - /** - * @var Collection|Holding[] - * @ORM\OneToMany(targetEntity="Holding", mappedBy="archive") - */ - private $holdings; + #[ORM\OneToMany(targetEntity: Holding::class, mappedBy: 'archive')] + private Collection $holdings; public function __construct() { parent::__construct(); diff --git a/src/Entity/Book.php b/src/Entity/Book.php index 2a13cc9..fd96300 100644 --- a/src/Entity/Book.php +++ b/src/Entity/Book.php @@ -2,12 +2,6 @@ declare(strict_types=1); -/* - * (c) 2022 Michael Joyce - * This source file is subject to the GPL v2, bundled - * with this source code in the file LICENSE. - */ - namespace App\Entity; use App\Repository\BookRepository; @@ -18,121 +12,69 @@ use Nines\MediaBundle\Entity\LinkableTrait; use Nines\UtilBundle\Entity\AbstractEntity; -/** - * @ORM\Entity(repositoryClass=BookRepository::class) - * @ORM\Table(indexes={ - * @ORM\Index(name="book_ft", columns={"title", "uniform_title", "variant_titles", "description", "author", "imprint", "variant_imprint", "notes"}, flags={"fulltext"}) - * }) - */ +#[ORM\Table] +#[ORM\Index(name: 'book_ft', columns: ['title', 'uniform_title', 'variant_titles', 'description', 'author', 'imprint', 'variant_imprint', 'notes'], flags: ['fulltext'])] +#[ORM\Entity(repositoryClass: BookRepository::class)] class Book extends AbstractEntity implements LinkableInterface { use LinkableTrait { LinkableTrait::__construct as linkable_construct; } use NotesTrait; - /** - * @var string - * @ORM\Column(type="text", nullable=true) - */ - private $title; + #[ORM\Column(type: 'text', nullable: true)] + private ?string $title = null; - /** - * @var string - * @ORM\Column(type="text", nullable=true) - */ - private $uniformTitle; + #[ORM\Column(type: 'text', nullable: true)] + private ?string $uniformTitle = null; - /** - * @var string[] - * @ORM\Column(type="array") - */ - private $variantTitles; + #[ORM\Column(type: 'array')] + private ?array $variantTitles = []; - /** - * @var string - * @ORM\Column(type="string", length=160, nullable=true) - */ - private $author; + #[ORM\Column(type: 'string', length: 160, nullable: true)] + private ?string $author = null; - /** - * @var string - * @ORM\Column(type="text", nullable=true) - */ - private $imprint; + #[ORM\Column(type: 'text', nullable: true)] + private ?string $imprint = null; - /** - * @var string - * @ORM\Column(type="text", nullable=true) - */ - private $variantImprint; + #[ORM\Column(type: 'text', nullable: true)] + private ?string $variantImprint = null; - /** - * @var string - * @ORM\Column(type="string", nullable=true) - */ - private $estc; + #[ORM\Column(type: 'string', nullable: true)] + private ?string $estc = null; - /** - * @var string - * @ORM\Column(type="string", length=12, nullable=true) - */ - private $date; + #[ORM\Column(type: 'string', length: 12, nullable: true)] + private ?string $date = null; - /** - * @var string - * @ORM\Column(type="text", nullable=true) - */ - private $description; + #[ORM\Column(type: 'text', nullable: true)] + private ?string $description = null; - /** - * @var string - * @ORM\Column(type="text", nullable=true) - */ - private $physicalDescription; + #[ORM\Column(type: 'text', nullable: true)] + private ?string $physicalDescription = null; - /** - * @var Format - * @ORM\ManyToOne(targetEntity="Format", inversedBy="books") - */ - private $format; + #[ORM\ManyToOne(targetEntity: Format::class, inversedBy: 'books')] + private ?Format $format = null; - /** - * @var Monarch - * @ORM\ManyToOne(targetEntity="Monarch", inversedBy="books") - * @ORM\JoinColumn(nullable=true) - */ - private $monarch; + #[ORM\JoinColumn(nullable: true, onDelete: 'SET NULL')] + #[ORM\ManyToOne(targetEntity: Monarch::class, inversedBy: 'books')] + private ?Monarch $monarch = null; - /** - * @var Collection|Transaction[] - * @ORM\ManyToMany(targetEntity="Transaction", mappedBy="books") - */ - private $transactions; + #[ORM\ManyToMany(targetEntity: Transaction::class, mappedBy: 'books')] + private Collection $transactions; - /** - * @var Collection|Inventory[] - * @ORM\ManyToMany(targetEntity="Inventory", mappedBy="books") - */ - private $inventories; + #[ORM\ManyToMany(targetEntity: Inventory::class, mappedBy: 'books')] + private Collection $inventories; - /** - * @var Collection|Holding[] - * @ORM\ManyToMany(targetEntity="Holding", mappedBy="books") - */ - private $holdings; + #[ORM\ManyToMany(targetEntity: Holding::class, mappedBy: 'books')] + private Collection $holdings; public function __construct() { parent::__construct(); $this->linkable_construct(); $this->transactions = new ArrayCollection(); - $this->variantTitles = []; $this->inventories = new ArrayCollection(); $this->holdings = new ArrayCollection(); } - /** - * {@inheritdoc} - */ public function __toString() : string { if ($this->uniformTitle) { return $this->uniformTitle; diff --git a/src/Entity/County.php b/src/Entity/County.php index 97c5185..e89e11b 100644 --- a/src/Entity/County.php +++ b/src/Entity/County.php @@ -2,12 +2,6 @@ declare(strict_types=1); -/* - * (c) 2022 Michael Joyce - * This source file is subject to the GPL v2, bundled - * with this source code in the file LICENSE. - */ - namespace App\Entity; use App\Repository\CountyRepository; @@ -18,26 +12,18 @@ use Nines\MediaBundle\Entity\LinkableTrait; use Nines\UtilBundle\Entity\AbstractTerm; -/** - * @ORM\Entity(repositoryClass=CountyRepository::class) - */ +#[ORM\Entity(repositoryClass: CountyRepository::class)] class County extends AbstractTerm implements LinkableInterface { use LinkableTrait { LinkableTrait::__construct as linkable_construct; } - /** - * @var Nation - * @ORM\ManyToOne(targetEntity="Nation", inversedBy="counties") - * @ORM\JoinColumn(nullable=false) - */ - private $nation; + #[ORM\JoinColumn(nullable: false, onDelete: 'CASCADE')] + #[ORM\ManyToOne(targetEntity: Nation::class, inversedBy: 'counties')] + private ?Nation $nation = null; - /** - * @var Collection|Town[] - * @ORM\OneToMany(targetEntity="Town", mappedBy="county") - */ - private $towns; + #[ORM\OneToMany(targetEntity: Town::class, mappedBy: 'county')] + private Collection $towns; public function __construct() { parent::__construct(); diff --git a/src/Entity/DatedTrait.php b/src/Entity/DatedTrait.php index e1a1c5b..b62e44c 100644 --- a/src/Entity/DatedTrait.php +++ b/src/Entity/DatedTrait.php @@ -2,76 +2,43 @@ declare(strict_types=1); -/* - * (c) 2022 Michael Joyce - * This source file is subject to the GPL v2, bundled - * with this source code in the file LICENSE. - */ - namespace App\Entity; use Doctrine\ORM\Mapping as ORM; use Symfony\Component\Validator\Constraints as Assert; trait DatedTrait { - /** - * @var string - * @ORM\Column(type="string", length=10, nullable=true) - * @Assert\Date(message="{{ value }} is not a valid value. It must be formatted as yyyy-mm-dd and be a valid date.") - */ - private $startDate; + #[Assert\Date(message: '{{ value }} is not a valid value. It must be formatted as yyyy-mm-dd and be a valid date.')] + #[ORM\Column(type: 'string', length: 10, nullable: true)] + private ?string $startDate = null; - /** - * @var string - * @ORM\Column(type="string", length=10, nullable=true) - * @Assert\Date(message="{{ value }} is not a valid value. It must be formatted as yyyy-mm-dd and be a valid date.") - */ - private $endDate; + #[Assert\Date(message: '{{ value }} is not a valid value. It must be formatted as yyyy-mm-dd and be a valid date.')] + #[ORM\Column(type: 'string', length: 10, nullable: true)] + private ?string $endDate = null; - /** - * @var string - * @ORM\Column(type="string", length=60, nullable=true) - */ - private $writtenDate; + #[ORM\Column(type: 'string', length: 60, nullable: true)] + private ?string $writtenDate = null; - /** - * @return string - */ public function getStartDate() : ?string { return $this->startDate; } - /** - * @param string $startDate - */ public function setStartDate(?string $startDate) : void { $this->startDate = $startDate; } - /** - * @return string - */ public function getEndDate() : ?string { return $this->endDate; } - /** - * @param string $endDate - */ public function setEndDate(?string $endDate) : void { $this->endDate = $endDate; } - /** - * @return string - */ public function getWrittenDate() : ?string { return $this->writtenDate; } - /** - * @param string $writtenDate - */ public function setWrittenDate(?string $writtenDate) : void { $this->writtenDate = $writtenDate; } diff --git a/src/Entity/Diocese.php b/src/Entity/Diocese.php index 5d22905..b25b04e 100644 --- a/src/Entity/Diocese.php +++ b/src/Entity/Diocese.php @@ -2,12 +2,6 @@ declare(strict_types=1); -/* - * (c) 2022 Michael Joyce - * This source file is subject to the GPL v2, bundled - * with this source code in the file LICENSE. - */ - namespace App\Entity; use App\Repository\DioceseRepository; @@ -18,32 +12,21 @@ use Nines\MediaBundle\Entity\LinkableTrait; use Nines\UtilBundle\Entity\AbstractTerm; -/** - * @ORM\Entity(repositoryClass=DioceseRepository::class) - */ +#[ORM\Entity(repositoryClass: DioceseRepository::class)] class Diocese extends AbstractTerm implements LinkableInterface { use LinkableTrait { LinkableTrait::__construct as linkable_construct; } - /** - * @var Province - * @ORM\ManyToOne(targetEntity="Province", inversedBy="dioceses") - * @ORM\JoinColumn(nullable=false) - */ - private $province; + #[ORM\JoinColumn(nullable: false, onDelete: 'CASCADE')] + #[ORM\ManyToOne(targetEntity: Province::class, inversedBy: 'dioceses')] + private ?Province $province = null; - /** - * @var Archdeaconry[]|Collection - * @ORM\OneToMany(targetEntity="Archdeaconry", mappedBy="diocese") - */ - private $archdeaconries; + #[ORM\OneToMany(targetEntity: Archdeaconry::class, mappedBy: 'diocese')] + private Collection $archdeaconries; - /** - * @var Collection - * @ORM\OneToMany(targetEntity="Injunction", mappedBy="diocese") - */ - private $injunctions; + #[ORM\OneToMany(targetEntity: Injunction::class, mappedBy: 'diocese')] + private Collection $injunctions; public function __construct() { parent::__construct(); @@ -90,7 +73,7 @@ public function removeArchdeaconry(Archdeaconry $archdeaconry) : self { } /** - * @return Collection + * @return Collection */ public function getInjunctions() : Collection { return $this->injunctions; diff --git a/src/Entity/Format.php b/src/Entity/Format.php index 60beead..120cc55 100644 --- a/src/Entity/Format.php +++ b/src/Entity/Format.php @@ -2,12 +2,6 @@ declare(strict_types=1); -/* - * (c) 2022 Michael Joyce - * This source file is subject to the GPL v2, bundled - * with this source code in the file LICENSE. - */ - namespace App\Entity; use App\Repository\FormatRepository; @@ -16,15 +10,10 @@ use Doctrine\ORM\Mapping as ORM; use Nines\UtilBundle\Entity\AbstractTerm; -/** - * @ORM\Entity(repositoryClass=FormatRepository::class) - */ +#[ORM\Entity(repositoryClass: FormatRepository::class)] class Format extends AbstractTerm { - /** - * @var ArrayCollection - * @ORM\OneToMany(targetEntity="Book", mappedBy="format") - */ - private $books; + #[ORM\OneToMany(targetEntity: Book::class, mappedBy: 'format')] + private Collection $books; public function __construct() { parent::__construct(); diff --git a/src/Entity/Holding.php b/src/Entity/Holding.php index a5519c3..44536ea 100644 --- a/src/Entity/Holding.php +++ b/src/Entity/Holding.php @@ -2,12 +2,6 @@ declare(strict_types=1); -/* - * (c) 2022 Michael Joyce - * This source file is subject to the GPL v2, bundled - * with this source code in the file LICENSE. - */ - namespace App\Entity; use App\Repository\HoldingRepository; @@ -18,9 +12,7 @@ use Nines\MediaBundle\Entity\ImageContainerTrait; use Nines\UtilBundle\Entity\AbstractEntity; -/** - * @ORM\Entity(repositoryClass=HoldingRepository::class) - */ +#[ORM\Entity(repositoryClass: HoldingRepository::class)] class Holding extends AbstractEntity implements ImageContainerInterface { use ImageContainerTrait { ImageContainerTrait::__construct as protected trait_constructor; @@ -28,30 +20,18 @@ class Holding extends AbstractEntity implements ImageContainerInterface { use DatedTrait; use NotesTrait; - /** - * @var string - * @ORM\Column(type="text", nullable=true) - */ - private $description; + #[ORM\Column(type: 'text', nullable: true)] + private ?string $description = null; - /** - * @var Parish - * @ORM\ManyToOne(targetEntity="Parish", inversedBy="holdings") - * @ORM\JoinColumn(nullable=false) - */ - private $parish; + #[ORM\JoinColumn(nullable: false, onDelete: 'CASCADE')] + #[ORM\ManyToOne(targetEntity: Parish::class, inversedBy: 'holdings')] + private ?Parish $parish = null; - /** - * @var Collection - * @ORM\ManyToMany(targetEntity="Book", inversedBy="holdings") - */ - private $books; + #[ORM\ManyToMany(targetEntity: Book::class, inversedBy: 'holdings')] + private Collection $books; - /** - * @var Archive - * @ORM\ManyToOne(targetEntity="Archive", inversedBy="holdings") - */ - private $archive; + #[ORM\ManyToOne(targetEntity: Archive::class, inversedBy: 'holdings')] + private ?Archive $archive = null; public function __construct() { parent::__construct(); @@ -59,9 +39,6 @@ public function __construct() { $this->books = new ArrayCollection(); } - /** - * {@inheritDoc} - */ public function __toString() : string { return implode(', ', $this->books->toArray()) . ' ' . $this->parish; } diff --git a/src/Entity/Injunction.php b/src/Entity/Injunction.php index 6698ddc..094d386 100644 --- a/src/Entity/Injunction.php +++ b/src/Entity/Injunction.php @@ -2,12 +2,6 @@ declare(strict_types=1); -/* - * (c) 2022 Michael Joyce - * This source file is subject to the GPL v2, bundled - * with this source code in the file LICENSE. - */ - namespace App\Entity; use App\Repository\InjunctionRepository; @@ -18,142 +12,81 @@ use Nines\MediaBundle\Entity\LinkableTrait; use Nines\UtilBundle\Entity\AbstractEntity; -/** - * @ORM\Entity(repositoryClass=InjunctionRepository::class) - * @ORM\Table(indexes={ - * @ORM\Index(name="injunction_ft", columns={"title", "uniform_title", "variant_titles", "transcription", "modern_transcription", "author", "imprint", "variant_imprint"}, flags={"fulltext"}) - * }) - */ +#[ORM\Table] +#[ORM\Index(name: 'injunction_ft', columns: ['title', 'uniform_title', 'variant_titles', 'transcription', 'modern_transcription', 'author', 'imprint', 'variant_imprint'], flags: ['fulltext'])] +#[ORM\Entity(repositoryClass: InjunctionRepository::class)] class Injunction extends AbstractEntity implements LinkableInterface { use LinkableTrait { LinkableTrait::__construct as linkable_constructor; } use NotesTrait; - /** - * @var string - * @ORM\Column(type="text") - */ - private $title; + #[ORM\Column(type: 'text')] + private ?string $title = null; - /** - * @var string - * @ORM\Column(type="text", nullable=true) - */ - private $uniformTitle; + #[ORM\Column(type: 'text', nullable: true)] + private ?string $uniformTitle = null; - /** - * @var array - * @ORM\Column(type="array") - */ - private $variantTitles; + #[ORM\Column(type: 'array')] + private ?array $variantTitles = []; - /** - * @var string - * @ORM\Column(type="string", length=160, nullable=true) - */ - private $author; + #[ORM\Column(type: 'string', length: 160, nullable: true)] + private ?string $author = null; - /** - * @var string - * @ORM\Column(type="text", nullable=true) - */ - private $imprint; + #[ORM\Column(type: 'text', nullable: true)] + private ?string $imprint = null; - /** - * @var string - * @ORM\Column(type="text", nullable=true) - */ - private $variantImprint; + #[ORM\Column(type: 'text', nullable: true)] + private ?string $variantImprint = null; - /** - * @var string - * @ORM\Column(type="string", length=12, nullable=true) - */ - private $date; + #[ORM\Column(type: 'string', length: 12, nullable: true)] + private ?string $date = null; - /** - * @var string - * @ORM\Column(type="text", nullable=true) - */ - private $physicalDescription; + #[ORM\Column(type: 'text', nullable: true)] + private ?string $physicalDescription = null; - /** - * @var string - * @ORM\Column(type="text", nullable=true) - */ - private $transcription; + #[ORM\Column(type: 'text', nullable: true)] + private ?string $transcription = null; - /** - * @var string - * @ORM\Column(type="text", nullable=true) - */ - private $modernTranscription; + #[ORM\Column(type: 'text', nullable: true)] + private ?string $modernTranscription = null; - /** - * @var string - * @ORM\Column(type="string", nullable=true) - */ - private $estc; + #[ORM\Column(type: 'string', nullable: true)] + private ?string $estc = null; - /** - * @var Nation - * @ORM\ManyToOne(targetEntity="Nation", inversedBy="injunctions") - * @ORM\JoinColumn(nullable=true) - */ - private $nation; + #[ORM\JoinColumn(nullable: true, onDelete: 'SET NULL')] + #[ORM\ManyToOne(targetEntity: Nation::class, inversedBy: 'injunctions')] + private ?Nation $nation = null; - /** - * @var Diocese - * @ORM\ManyToOne(targetEntity="Diocese", inversedBy="injunctions") - * @ORM\JoinColumn(nullable=true) - */ - private $diocese; + #[ORM\JoinColumn(nullable: true, onDelete: 'SET NULL')] + #[ORM\ManyToOne(targetEntity: Diocese::class, inversedBy: 'injunctions')] + private ?Diocese $diocese = null; - /** - * @var Province - * @ORM\ManyToOne(targetEntity="Province", inversedBy="injunctions") - * @ORM\JoinColumn(nullable=true) - */ - private $province; + #[ORM\JoinColumn(nullable: true, onDelete: 'SET NULL')] + #[ORM\ManyToOne(targetEntity: Province::class, inversedBy: 'injunctions')] + private ?Province $province = null; - /** - * @var Archdeaconry - * @ORM\ManyToOne(targetEntity="Archdeaconry", inversedBy="injunctions") - * @ORM\JoinColumn(nullable=true) - */ - private $archdeaconry; + #[ORM\JoinColumn(nullable: true, onDelete: 'SET NULL')] + #[ORM\ManyToOne(targetEntity: Archdeaconry::class, inversedBy: 'injunctions')] + private ?Archdeaconry $archdeaconry = null; - /** - * @var Monarch - * @ORM\ManyToOne(targetEntity="Monarch", inversedBy="injunctions") - * @ORM\JoinColumn(nullable=true) - */ - private $monarch; + #[ORM\JoinColumn(nullable: true, onDelete: 'SET NULL')] + #[ORM\ManyToOne(targetEntity: Monarch::class, inversedBy: 'injunctions')] + private ?Monarch $monarch = null; - /** - * @var Collection - * @ORM\OneToMany(targetEntity="Transaction", mappedBy="injunction") - */ - private $transactions; + #[ORM\OneToMany(targetEntity: Transaction::class, mappedBy: 'injunction')] + private Collection $transactions; - /** - * @var Collection - * @ORM\OneToMany(targetEntity="Inventory", mappedBy="injunction") - */ - private $inventories; + #[ORM\OneToMany(targetEntity: Inventory::class, mappedBy: 'injunction')] + private Collection $inventories; public function __construct() { parent::__construct(); $this->linkable_constructor(); $this->transactions = new ArrayCollection(); - $this->variantTitles = []; $this->inventories = new ArrayCollection(); } - /** - * {@inheritDoc} - */ public function __toString() : string { return $this->title; } @@ -306,7 +239,7 @@ public function setPhysicalDescription(?string $physicalDescription) : self { } /** - * @return Collection + * @return Collection */ public function getInventories() : Collection { return $this->inventories; diff --git a/src/Entity/Inventory.php b/src/Entity/Inventory.php index a431d44..581a298 100644 --- a/src/Entity/Inventory.php +++ b/src/Entity/Inventory.php @@ -2,12 +2,6 @@ declare(strict_types=1); -/* - * (c) 2022 Michael Joyce - * This source file is subject to the GPL v2, bundled - * with this source code in the file LICENSE. - */ - namespace App\Entity; use App\Repository\InventoryRepository; @@ -18,12 +12,9 @@ use Nines\MediaBundle\Entity\ImageContainerTrait; use Nines\UtilBundle\Entity\AbstractEntity; -/** - * @ORM\Entity(repositoryClass=InventoryRepository::class) - * @ORM\Table(indexes={ - * @ORM\Index(name="inventory_ft", columns={"transcription", "modifications", "description", "notes"}, flags={"fulltext"}) - * }) - */ +#[ORM\Table] +#[ORM\Index(name: 'inventory_ft', columns: ['transcription', 'modifications', 'description', 'notes'], flags: ['fulltext'])] +#[ORM\Entity(repositoryClass: InventoryRepository::class)] class Inventory extends AbstractEntity implements ImageContainerInterface { use DatedTrait; use NotesTrait; @@ -31,69 +22,39 @@ class Inventory extends AbstractEntity implements ImageContainerInterface { ImageContainerTrait::__construct as protected trait_constructor; } - /** - * @var string - * @ORM\Column(type="text", nullable=true) - */ - private $pageNumber; + #[ORM\Column(type: 'text', nullable: true)] + private ?string $pageNumber = null; - /** - * @var string - * @ORM\Column(type="text") - */ - private $transcription; + #[ORM\Column(type: 'text')] + private ?string $transcription = null; - /** - * @var string - * @ORM\Column(type="text") - */ - private $modifications; + #[ORM\Column(type: 'text')] + private ?string $modifications = null; - /** - * @var string - * @ORM\Column(type="text", nullable=true) - */ - private $description; + #[ORM\Column(type: 'text', nullable: true)] + private ?string $description = null; - /** - * @var ManuscriptSource - * @ORM\ManyToOne(targetEntity="ManuscriptSource", inversedBy="inventories") - * @ORM\JoinColumn(nullable=true) - */ - private $manuscriptSource; + #[ORM\JoinColumn(nullable: true, onDelete: 'SET NULL')] + #[ORM\ManyToOne(targetEntity: ManuscriptSource::class, inversedBy: 'inventories')] + private ?ManuscriptSource $manuscriptSource = null; - /** - * @var PrintSource - * @ORM\ManyToOne(targetEntity="PrintSource", inversedBy="inventories") - * @ORM\JoinColumn(nullable=true) - */ - private $printSource; + #[ORM\JoinColumn(nullable: true, onDelete: 'SET NULL')] + #[ORM\ManyToOne(targetEntity: PrintSource::class, inversedBy: 'inventories')] + private ?PrintSource $printSource = null; - /** - * @var Parish - * @ORM\ManyToOne(targetEntity="Parish", inversedBy="inventories") - * @ORM\JoinColumn(nullable=false) - */ - private $parish; + #[ORM\JoinColumn(nullable: false, onDelete: 'CASCADE')] + #[ORM\ManyToOne(targetEntity: Parish::class, inversedBy: 'inventories')] + private ?Parish $parish = null; - /** - * @var Monarch - * @ORM\ManyToOne(targetEntity="Monarch", inversedBy="inventories") - * @ORM\JoinColumn(nullable=true) - */ - private $monarch; + #[ORM\JoinColumn(nullable: true, onDelete: 'SET NULL')] + #[ORM\ManyToOne(targetEntity: Monarch::class, inversedBy: 'inventories')] + private ?Monarch $monarch = null; - /** - * @var Injunction - * @ORM\ManyToOne(targetEntity="Injunction", inversedBy="inventories") - */ - private $injunction; + #[ORM\ManyToOne(targetEntity: Injunction::class, inversedBy: 'inventories')] + private ?Injunction $injunction = null; - /** - * @var Book[]|Collection - * @ORM\ManyToMany(targetEntity="Book", inversedBy="inventories") - */ - private $books; + #[ORM\ManyToMany(targetEntity: Book::class, inversedBy: 'inventories')] + private Collection $books; public function __construct() { parent::__construct(); @@ -101,9 +62,6 @@ public function __construct() { $this->books = new ArrayCollection(); } - /** - * {@inheritDoc} - */ public function __toString() : string { return mb_substr(strip_tags($this->transcription), 0, 50); } diff --git a/src/Entity/ManuscriptSource.php b/src/Entity/ManuscriptSource.php index ed9679d..f8dc945 100644 --- a/src/Entity/ManuscriptSource.php +++ b/src/Entity/ManuscriptSource.php @@ -2,12 +2,6 @@ declare(strict_types=1); -/* - * (c) 2022 Michael Joyce - * This source file is subject to the GPL v2, bundled - * with this source code in the file LICENSE. - */ - namespace App\Entity; use App\Repository\ManuscriptSourceRepository; @@ -18,45 +12,28 @@ use Nines\MediaBundle\Entity\LinkableTrait; use Nines\UtilBundle\Entity\AbstractTerm; -/** - * @ORM\Entity(repositoryClass=ManuscriptSourceRepository::class) - */ +#[ORM\Entity(repositoryClass: ManuscriptSourceRepository::class)] class ManuscriptSource extends AbstractTerm implements LinkableInterface { use LinkableTrait { LinkableTrait::__construct as linkable_construct; } - /** - * @var string - * @ORM\Column(type="string", length=64, nullable=true) - */ - private $callNumber; + #[ORM\Column(type: 'string', length: 64, nullable: true)] + private ?string $callNumber = null; - /** - * @var SourceCategory - * @ORM\ManyToOne(targetEntity="SourceCategory", inversedBy="manuscriptSources") - * @ORM\JoinColumn(nullable=false) - */ - private $sourceCategory; + #[ORM\JoinColumn(nullable: false, onDelete: 'CASCADE')] + #[ORM\ManyToOne(targetEntity: SourceCategory::class, inversedBy: 'manuscriptSources')] + private ?SourceCategory $sourceCategory = null; - /** - * @var Archive - * @ORM\ManyToOne(targetEntity="Archive", inversedBy="manuscriptSources") - * @ORM\JoinColumn(nullable=false) - */ - private $archive; + #[ORM\JoinColumn(nullable: false, onDelete: 'CASCADE')] + #[ORM\ManyToOne(targetEntity: Archive::class, inversedBy: 'manuscriptSources')] + private ?Archive $archive = null; - /** - * @var Collection|Transaction[] - * @ORM\OneToMany(targetEntity="Transaction", mappedBy="manuscriptSource") - */ - private $transactions; + #[ORM\OneToMany(targetEntity: Transaction::class, mappedBy: 'manuscriptSource')] + private Collection $transactions; - /** - * @var Collection|Inventory[] - * @ORM\OneToMany(targetEntity="Inventory", mappedBy="manuscriptSource") - */ - private $inventories; + #[ORM\OneToMany(targetEntity: Inventory::class, mappedBy: 'manuscriptSource')] + private Collection $inventories; public function __construct() { parent::__construct(); diff --git a/src/Entity/Monarch.php b/src/Entity/Monarch.php index 8671447..db320e2 100644 --- a/src/Entity/Monarch.php +++ b/src/Entity/Monarch.php @@ -2,12 +2,6 @@ declare(strict_types=1); -/* - * (c) 2022 Michael Joyce - * This source file is subject to the GPL v2, bundled - * with this source code in the file LICENSE. - */ - namespace App\Entity; use App\Repository\MonarchRepository; @@ -17,47 +11,27 @@ use Nines\UtilBundle\Entity\AbstractTerm; use Symfony\Component\Validator\Constraints as Assert; -/** - * @ORM\Entity(repositoryClass=MonarchRepository::class) - */ +#[ORM\Entity(repositoryClass: MonarchRepository::class)] class Monarch extends AbstractTerm { - /** - * @var string - * @ORM\Column(type="string", length=10, nullable=true) - * @Assert\Date(message="{{ value }} is not a valid value. It must be formatted as yyyy-mm-dd and be a valid date.") - */ - private $startDate; + #[Assert\Date(message: '{{ value }} is not a valid value. It must be formatted as yyyy-mm-dd and be a valid date.')] + #[ORM\Column(type: 'string', length: 10, nullable: true)] + private ?string $startDate = null; - /** - * @var string - * @ORM\Column(type="string", length=10, nullable=true) - * @Assert\Date(message="{{ value }} is not a valid value. It must be formatted as yyyy-mm-dd and be a valid date.") - */ - private $endDate; + #[Assert\Date(message: '{{ value }} is not a valid value. It must be formatted as yyyy-mm-dd and be a valid date.')] + #[ORM\Column(type: 'string', length: 10, nullable: true)] + private ?string $endDate = null; - /** - * @var Collection - * @ORM\OneToMany(targetEntity="Transaction", mappedBy="monarch") - */ - private $transactions; + #[ORM\OneToMany(targetEntity: Transaction::class, mappedBy: 'monarch')] + private Collection $transactions; - /** - * @var Collection - * @ORM\OneToMany(targetEntity="Injunction", mappedBy="monarch") - */ - private $injunctions; + #[ORM\OneToMany(targetEntity: Injunction::class, mappedBy: 'monarch')] + private Collection $injunctions; - /** - * @var Collection - * @ORM\OneToMany(targetEntity="Inventory", mappedBy="monarch") - */ - private $inventories; + #[ORM\OneToMany(targetEntity: Inventory::class, mappedBy: 'monarch')] + private Collection $inventories; - /** - * @var Collection - * @ORM\OneToMany(targetEntity="Book", mappedBy="monarch") - */ - private $books; + #[ORM\OneToMany(targetEntity: Book::class, mappedBy: 'monarch')] + private Collection $books; public function __construct() { parent::__construct(); diff --git a/src/Entity/Nation.php b/src/Entity/Nation.php index 3534c56..f2720e2 100644 --- a/src/Entity/Nation.php +++ b/src/Entity/Nation.php @@ -2,12 +2,6 @@ declare(strict_types=1); -/* - * (c) 2022 Michael Joyce - * This source file is subject to the GPL v2, bundled - * with this source code in the file LICENSE. - */ - namespace App\Entity; use App\Repository\NationRepository; @@ -16,27 +10,16 @@ use Doctrine\ORM\Mapping as ORM; use Nines\UtilBundle\Entity\AbstractTerm; -/** - * @ORM\Entity(repositoryClass=NationRepository::class) - */ +#[ORM\Entity(repositoryClass: NationRepository::class)] class Nation extends AbstractTerm { - /** - * @var Collection - * @ORM\OneToMany(targetEntity="Province", mappedBy="nation") - */ - private $provinces; + #[ORM\OneToMany(targetEntity: Province::class, mappedBy: 'nation')] + private Collection $provinces; - /** - * @var Collection - * @ORM\OneToMany(targetEntity="County", mappedBy="nation") - */ - private $counties; + #[ORM\OneToMany(targetEntity: County::class, mappedBy: 'nation')] + private Collection $counties; - /** - * @var Collection - * @ORM\OneToMany(targetEntity="Injunction", mappedBy="nation") - */ - private $injunctions; + #[ORM\OneToMany(targetEntity: Injunction::class, mappedBy: 'nation')] + private Collection $injunctions; public function __construct() { parent::__construct(); @@ -100,7 +83,7 @@ public function removeCounty(County $county) : self { } /** - * @return Collection + * @return Collection */ public function getInjunctions() : Collection { return $this->injunctions; diff --git a/src/Entity/NotesTrait.php b/src/Entity/NotesTrait.php index f7cd551..372fc50 100644 --- a/src/Entity/NotesTrait.php +++ b/src/Entity/NotesTrait.php @@ -2,29 +2,18 @@ declare(strict_types=1); -/* - * (c) 2022 Michael Joyce - * This source file is subject to the GPL v2, bundled - * with this source code in the file LICENSE. - */ - namespace App\Entity; +use Doctrine\ORM\Mapping as ORM; + trait NotesTrait { - /** - * @ORM\Column(type="text", nullable=true) - */ + #[ORM\Column(type: 'text', nullable: true)] private ?string $notes = null; public function getNotes() : ?string { return $this->notes; } - /** - * @param ?string $notes - * - * @return $this - */ public function setNotes(?string $notes) : self { $this->notes = $notes; diff --git a/src/Entity/Parish.php b/src/Entity/Parish.php index 79313cf..43d1b5e 100644 --- a/src/Entity/Parish.php +++ b/src/Entity/Parish.php @@ -2,12 +2,6 @@ declare(strict_types=1); -/* - * (c) 2022 Michael Joyce - * This source file is subject to the GPL v2, bundled - * with this source code in the file LICENSE. - */ - namespace App\Entity; use App\Repository\ParishRepository; @@ -18,68 +12,40 @@ use Nines\MediaBundle\Entity\LinkableTrait; use Nines\UtilBundle\Entity\AbstractTerm; -/** - * @ORM\Entity(repositoryClass=ParishRepository::class) - */ +#[ORM\Entity(repositoryClass: ParishRepository::class)] class Parish extends AbstractTerm implements LinkableInterface { use LinkableTrait { LinkableTrait::__construct as linkable_construct; } - /** - * @var string - * - * @ORM\Column(type="decimal", precision=10, scale=7, nullable=true) - */ - private $latitude; + #[ORM\Column(type: 'decimal', precision: 10, scale: 7, nullable: true)] + private ?string $latitude = null; - /** - * @var string - * - * @ORM\Column(type="decimal", precision=10, scale=7, nullable=true) - */ - private $longitude; + #[ORM\Column(type: 'decimal', precision: 10, scale: 7, nullable: true)] + private ?string $longitude = null; - /** - * @var string - * - * @ORM\Column(type="text", nullable=true) - */ - private $address; + #[ORM\Column(type: 'text', nullable: true)] + private ?string $address = null; - /** - * @var Archdeaconry - * @ORM\ManyToOne(targetEntity="Archdeaconry", inversedBy="parishes") - * @ORM\JoinColumn(nullable=false) - */ - private $archdeaconry; + #[ORM\JoinColumn(nullable: false, onDelete: 'CASCADE')] + #[ORM\ManyToOne(targetEntity: Archdeaconry::class, inversedBy: 'parishes')] + private ?Archdeaconry $archdeaconry = null; /** * A county outside City of London, or a ward inside London. - * - * @var Town - * @ORM\ManyToOne(targetEntity="Town", inversedBy="parishes") - * @ORM\JoinColumn(nullable=true) */ - private $town; + #[ORM\JoinColumn(nullable: true, onDelete: 'SET NULL')] + #[ORM\ManyToOne(targetEntity: Town::class, inversedBy: 'parishes')] + private ?Town $town = null; - /** - * @var Collection|Transaction[] - * @ORM\OneToMany(targetEntity="Transaction", mappedBy="parish") - */ - private $transactions; + #[ORM\OneToMany(targetEntity: Transaction::class, mappedBy: 'parish')] + private Collection $transactions; - /** - * @var Collection|Inventory[] - * @ORM\OneToMany(targetEntity="Inventory", mappedBy="parish") - */ - private $inventories; + #[ORM\OneToMany(targetEntity: Inventory::class, mappedBy: 'parish')] + private Collection $inventories; - /** - * @var Collection|Holding[] - * @ORM\OneToMany(targetEntity="Holding", mappedBy="parish") - */ - private $holdings; + #[ORM\OneToMany(targetEntity: Holding::class, mappedBy: 'parish')] + private Collection $holdings; public function __construct() { parent::__construct(); diff --git a/src/Entity/PrintSource.php b/src/Entity/PrintSource.php index 2363988..2f24e38 100644 --- a/src/Entity/PrintSource.php +++ b/src/Entity/PrintSource.php @@ -2,12 +2,6 @@ declare(strict_types=1); -/* - * (c) 2022 Michael Joyce - * This source file is subject to the GPL v2, bundled - * with this source code in the file LICENSE. - */ - namespace App\Entity; use App\Repository\PrintSourceRepository; @@ -18,58 +12,34 @@ use Nines\MediaBundle\Entity\LinkableTrait; use Nines\UtilBundle\Entity\AbstractEntity; -/** - * @ORM\Entity(repositoryClass=PrintSourceRepository::class) - * @ORM\Table(indexes={ - * @ORM\Index(name="print_source_ft", columns={"title", "author", "publisher"}, flags={"fulltext"}) - * }) - */ +#[ORM\Table] +#[ORM\Index(name: 'print_source_ft', columns: ['title', 'author', 'publisher'], flags: ['fulltext'])] +#[ORM\Entity(repositoryClass: PrintSourceRepository::class)] class PrintSource extends AbstractEntity implements LinkableInterface { use NotesTrait; use LinkableTrait {__construct as linkable_constructor; } - /** - * @var string - * @ORM\Column(type="string", length=200, nullable=false) - */ - private $title; + #[ORM\Column(type: 'string', length: 200, nullable: false)] + private string $title = ''; - /** - * @var string - * @ORM\Column(type="string", length=200, nullable=true) - */ - private $author; + #[ORM\Column(type: 'string', length: 200, nullable: true)] + private ?string $author = null; - /** - * @var string - * @ORM\Column(type="string", length=16, nullable=true) - */ - private $date; + #[ORM\Column(type: 'string', length: 16, nullable: true)] + private ?string $date = null; - /** - * @var string - * @ORM\Column(type="string", length=200, nullable=true) - */ - private $publisher; + #[ORM\Column(type: 'string', length: 200, nullable: true)] + private ?string $publisher = null; - /** - * @var SourceCategory - * @ORM\ManyToOne(targetEntity="SourceCategory", inversedBy="printSources") - * @ORM\JoinColumn(nullable=false) - */ - private $sourceCategory; + #[ORM\JoinColumn(nullable: false, onDelete: 'CASCADE')] + #[ORM\ManyToOne(targetEntity: SourceCategory::class, inversedBy: 'printSources')] + private ?SourceCategory $sourceCategory = null; - /** - * @var Collection|Transaction[] - * @ORM\OneToMany(targetEntity="Transaction", mappedBy="printSource") - */ - private $transactions; + #[ORM\OneToMany(targetEntity: Transaction::class, mappedBy: 'printSource')] + private Collection $transactions; - /** - * @var Collection|Inventory[] - * @ORM\OneToMany(targetEntity="Inventory", mappedBy="printSource") - */ - private $inventories; + #[ORM\OneToMany(targetEntity: Inventory::class, mappedBy: 'printSource')] + private Collection $inventories; public function __construct() { parent::__construct(); @@ -78,9 +48,6 @@ public function __construct() { $this->linkable_constructor(); } - /** - * {@inheritDoc} - */ public function __toString() : string { return $this->title; } @@ -136,7 +103,7 @@ public function setSourceCategory(?SourceCategory $sourceCategory) : self { } /** - * @return Collection + * @return Collection */ public function getTransactions() : Collection { return $this->transactions; @@ -163,7 +130,7 @@ public function removeTransaction(Transaction $transaction) : self { } /** - * @return Collection + * @return Collection */ public function getInventories() : Collection { return $this->inventories; diff --git a/src/Entity/Province.php b/src/Entity/Province.php index c87a821..4435691 100644 --- a/src/Entity/Province.php +++ b/src/Entity/Province.php @@ -2,12 +2,6 @@ declare(strict_types=1); -/* - * (c) 2022 Michael Joyce - * This source file is subject to the GPL v2, bundled - * with this source code in the file LICENSE. - */ - namespace App\Entity; use App\Repository\ProvinceRepository; @@ -18,32 +12,21 @@ use Nines\MediaBundle\Entity\LinkableTrait; use Nines\UtilBundle\Entity\AbstractTerm; -/** - * @ORM\Entity(repositoryClass=ProvinceRepository::class) - */ +#[ORM\Entity(repositoryClass: ProvinceRepository::class)] class Province extends AbstractTerm implements LinkableInterface { use LinkableTrait { LinkableTrait::__construct as linkable_construct; } - /** - * @var Nation - * @ORM\ManyToOne(targetEntity="Nation", inversedBy="provinces") - * @ORM\JoinColumn(nullable=false) - */ - private $nation; + #[ORM\JoinColumn(nullable: false, onDelete: 'CASCADE')] + #[ORM\ManyToOne(targetEntity: Nation::class, inversedBy: 'provinces')] + private ?Nation $nation = null; - /** - * @var Collection|Diocese[] - * @ORM\OneToMany(targetEntity="Diocese", mappedBy="province") - */ - private $dioceses; + #[ORM\OneToMany(targetEntity: Diocese::class, mappedBy: 'province')] + private Collection $dioceses; - /** - * @var Collection - * @ORM\OneToMany(targetEntity="Injunction", mappedBy="province") - */ - private $injunctions; + #[ORM\OneToMany(targetEntity: Injunction::class, mappedBy: 'province')] + private Collection $injunctions; public function __construct() { parent::__construct(); @@ -90,7 +73,7 @@ public function setNation(?Nation $nation) : self { } /** - * @return Collection + * @return Collection */ public function getInjunctions() : Collection { return $this->injunctions; diff --git a/src/Entity/SourceCategory.php b/src/Entity/SourceCategory.php index 1ed00fd..ed221c4 100644 --- a/src/Entity/SourceCategory.php +++ b/src/Entity/SourceCategory.php @@ -2,12 +2,6 @@ declare(strict_types=1); -/* - * (c) 2022 Michael Joyce - * This source file is subject to the GPL v2, bundled - * with this source code in the file LICENSE. - */ - namespace App\Entity; use App\Repository\SourceCategoryRepository; @@ -16,21 +10,13 @@ use Doctrine\ORM\Mapping as ORM; use Nines\UtilBundle\Entity\AbstractTerm; -/** - * @ORM\Entity(repositoryClass=SourceCategoryRepository::class) - */ +#[ORM\Entity(repositoryClass: SourceCategoryRepository::class)] class SourceCategory extends AbstractTerm { - /** - * @var Collection|ManuscriptSource[] - * @ORM\OneToMany(targetEntity="ManuscriptSource", mappedBy="sourceCategory") - */ - private $manuscriptSources; + #[ORM\OneToMany(targetEntity: ManuscriptSource::class, mappedBy: 'sourceCategory')] + private Collection $manuscriptSources; - /** - * @var Collection|PrintSource[] - * @ORM\OneToMany(targetEntity="PrintSource", mappedBy="sourceCategory") - */ - private $printSources; + #[ORM\OneToMany(targetEntity: PrintSource::class, mappedBy: 'sourceCategory')] + private Collection $printSources; public function __construct() { parent::__construct(); @@ -77,7 +63,7 @@ public function removeManuscriptSource(ManuscriptSource $manuscriptSource) : sel } /** - * @return Collection + * @return Collection */ public function getPrintSources() : Collection { return $this->printSources; diff --git a/src/Entity/Town.php b/src/Entity/Town.php index 652076a..3871c00 100644 --- a/src/Entity/Town.php +++ b/src/Entity/Town.php @@ -2,12 +2,6 @@ declare(strict_types=1); -/* - * (c) 2022 Michael Joyce - * This source file is subject to the GPL v2, bundled - * with this source code in the file LICENSE. - */ - namespace App\Entity; use App\Repository\TownRepository; @@ -18,37 +12,28 @@ use Nines\MediaBundle\Entity\LinkableTrait; use Nines\UtilBundle\Entity\AbstractTerm; -/** - * @ORM\Entity(repositoryClass=TownRepository::class) - */ +#[ORM\Entity(repositoryClass: TownRepository::class)] class Town extends AbstractTerm implements LinkableInterface { use LinkableTrait { LinkableTrait::__construct as linkable_construct; } - /** - * @var boolean; - * @ORM\Column(type="boolean", nullable=false) - */ - private $inLondon; + #[ORM\Column(type: 'boolean', nullable: false)] + private bool $inLondon = false; - /** - * @var County - * @ORM\ManyToOne(targetEntity="County", inversedBy="towns") - * @ORM\JoinColumn(nullable=false) - */ - private $county; + #[ORM\JoinColumn(nullable: false, onDelete: 'CASCADE')] + #[ORM\ManyToOne(targetEntity: County::class, inversedBy: 'towns')] + private ?County $county = null; /** - * @var Collection|Parish[] - * @ORM\OneToMany(targetEntity="Parish", mappedBy="town") + * @var Collection */ - private $parishes; + #[ORM\OneToMany(targetEntity: Parish::class, mappedBy: 'town')] + private Collection $parishes; public function __construct() { parent::__construct(); $this->linkable_construct(); - $this->inLondon = false; $this->parishes = new ArrayCollection(); } diff --git a/src/Entity/Transaction.php b/src/Entity/Transaction.php index bf3d37a..0f465ab 100644 --- a/src/Entity/Transaction.php +++ b/src/Entity/Transaction.php @@ -2,12 +2,6 @@ declare(strict_types=1); -/* - * (c) 2022 Michael Joyce - * This source file is subject to the GPL v2, bundled - * with this source code in the file LICENSE. - */ - namespace App\Entity; use App\Repository\TransactionRepository; @@ -16,12 +10,9 @@ use Doctrine\ORM\Mapping as ORM; use Nines\UtilBundle\Entity\AbstractEntity; -/** - * @ORM\Entity(repositoryClass=TransactionRepository::class) - * @ORM\Table(name="transact", indexes={ - * @ORM\Index(name="transaction_ft", columns={"transcription", "modern_transcription", "notes"}, flags={"fulltext"}) - * }) - */ +#[ORM\Table(name: 'transact')] +#[ORM\Index(name: 'transaction_ft', columns: ['transcription', 'modern_transcription', 'notes'], flags: ['fulltext'])] +#[ORM\Entity(repositoryClass: TransactionRepository::class)] class Transaction extends AbstractEntity { use DatedTrait; use NotesTrait; @@ -32,100 +23,62 @@ class Transaction extends AbstractEntity { * £2. 3s. 6d. (two pounds, three shillings and six pence) is recorded as * * 2 * 240 + 3 * 12 + 6 = 522 - * - * @var int - * @ORM\Column(type="integer", nullable=true) */ - private $value; + #[ORM\Column(type: 'integer', nullable: true)] + private ?int $value = null; - /** - * @var int - * @ORM\Column(type="integer", nullable=true) - */ - private $shipping; + #[ORM\Column(type: 'integer', nullable: true)] + private ?int $shipping = null; - /** - * @var int - * @ORM\Column(type="integer", nullable=true) - */ - private $copies; + #[ORM\Column(type: 'integer', nullable: true)] + private ?int $copies = null; - /** - * @var string - * @ORM\Column(type="string", length=160, nullable=true) - */ - private $location; + #[ORM\Column(type: 'string', length: 160, nullable: true)] + private ?string $location = null; - /** - * @var string - * @ORM\Column(type="string", length=24, nullable=true) - */ - private $page; + #[ORM\Column(type: 'string', length: 24, nullable: true)] + private ?string $page = null; - /** - * @var string - * @ORM\Column(type="text", nullable=true) - */ - private $transcription; + #[ORM\Column(type: 'text', nullable: true)] + private ?string $transcription = null; - /** - * @var string - * @ORM\Column(type="text", nullable=true) - */ - private $modernTranscription; + #[ORM\Column(type: 'text', nullable: true)] + private ?string $modernTranscription = null; - /** - * @var string - * @ORM\Column(type="text", nullable=true) - */ - private $publicNotes; + #[ORM\Column(type: 'text', nullable: true)] + private ?string $publicNotes = null; /** - * @var Book[]|Collection - * @ORM\ManyToMany(targetEntity="Book", inversedBy="transactions") + * @var Collection */ - private $books; + #[ORM\ManyToMany(targetEntity: Book::class, inversedBy: 'transactions')] + private Collection $books; - /** - * @var Parish - * @ORM\ManyToOne(targetEntity="Parish", inversedBy="transactions") - * @ORM\JoinColumn(nullable=false) - */ - private $parish; + #[ORM\JoinColumn(nullable: false, onDelete: 'CASCADE')] + #[ORM\ManyToOne(targetEntity: Parish::class, inversedBy: 'transactions')] + private ?Parish $parish = null; - /** - * @var ManuscriptSource - * @ORM\ManyToOne(targetEntity="ManuscriptSource", inversedBy="transactions") - * @ORM\JoinColumn(nullable=true) - */ - private $manuscriptSource; + #[ORM\JoinColumn(nullable: true, onDelete: 'SET NULL')] + #[ORM\ManyToOne(targetEntity: ManuscriptSource::class, inversedBy: 'transactions')] + private ?ManuscriptSource $manuscriptSource = null; - /** - * @var PrintSource - * @ORM\ManyToOne(targetEntity="PrintSource", inversedBy="transactions") - * @ORM\JoinColumn(nullable=true) - */ - private $printSource; + #[ORM\JoinColumn(nullable: true, onDelete: 'SET NULL')] + #[ORM\ManyToOne(targetEntity: PrintSource::class, inversedBy: 'transactions')] + private ?PrintSource $printSource = null; /** - * @var Collection|TransactionCategory[] - * @ORM\ManyToMany(targetEntity="TransactionCategory", inversedBy="transactions") - * @ORM\JoinColumn(nullable=false) + * @var Collection */ - private $transactionCategories; + #[ORM\JoinColumn(nullable: false, onDelete: 'CASCADE')] + #[ORM\ManyToMany(targetEntity: TransactionCategory::class, inversedBy: 'transactions')] + private Collection $transactionCategories; - /** - * @var Injunction - * @ORM\ManyToOne(targetEntity="Injunction", inversedBy="transactions") - */ - private $injunction; + #[ORM\ManyToOne(targetEntity: Injunction::class, inversedBy: 'transactions')] + private ?Injunction $injunction = null; - /** - * @var Monarch - * @ORM\ManyToOne(targetEntity="Monarch", inversedBy="transactions") - * @ORM\JoinColumn(nullable=true) - */ - private $monarch; + #[ORM\JoinColumn(nullable: true, onDelete: 'SET NULL')] + #[ORM\ManyToOne(targetEntity: Monarch::class, inversedBy: 'transactions')] + private ?Monarch $monarch = null; public function __construct() { parent::__construct(); @@ -134,9 +87,6 @@ public function __construct() { $this->transactionCategories = new ArrayCollection(); } - /** - * {@inheritdoc} - */ public function __toString() : string { return sprintf('%05d', $this->id); } @@ -343,9 +293,6 @@ public function setMonarch(?Monarch $monarch) : self { return $this; } - /** - * @return string - */ public function getPublicNotes() : ?string { return $this->publicNotes; } diff --git a/src/Entity/TransactionCategory.php b/src/Entity/TransactionCategory.php index ee33e0c..c27a6d4 100644 --- a/src/Entity/TransactionCategory.php +++ b/src/Entity/TransactionCategory.php @@ -2,12 +2,6 @@ declare(strict_types=1); -/* - * (c) 2022 Michael Joyce - * This source file is subject to the GPL v2, bundled - * with this source code in the file LICENSE. - */ - namespace App\Entity; use App\Repository\TransactionCategoryRepository; @@ -16,15 +10,10 @@ use Doctrine\ORM\Mapping as ORM; use Nines\UtilBundle\Entity\AbstractTerm; -/** - * @ORM\Entity(repositoryClass=TransactionCategoryRepository::class) - */ +#[ORM\Entity(repositoryClass: TransactionCategoryRepository::class)] class TransactionCategory extends AbstractTerm { - /** - * @var Collection|Transaction[] - * @ORM\ManyToMany(targetEntity="Transaction", mappedBy="transactionCategories") - */ - private $transactions; + #[ORM\ManyToMany(targetEntity: Transaction::class, mappedBy: 'transactionCategories')] + private Collection $transactions; public function __construct() { parent::__construct(); diff --git a/src/Form/ArchdeaconryType.php b/src/Form/ArchdeaconryType.php index 3c93f98..2e722aa 100644 --- a/src/Form/ArchdeaconryType.php +++ b/src/Form/ArchdeaconryType.php @@ -2,12 +2,6 @@ declare(strict_types=1); -/* - * (c) 2022 Michael Joyce - * This source file is subject to the GPL v2, bundled - * with this source code in the file LICENSE. - */ - namespace App\Form; use App\Entity\Archdeaconry; @@ -23,7 +17,9 @@ * Archdeaconry form. */ class ArchdeaconryType extends TermType { - private ?LinkableMapper $mapper = null; + public function __construct( + private LinkableMapper $mapper, + ) {} /** * Add form fields to $builder. @@ -36,8 +32,7 @@ public function buildForm(FormBuilderInterface $builder, array $options) : void 'remote_route' => 'diocese_typeahead', 'allow_clear' => true, 'attr' => [ - 'help_block' => '', - 'add_path' => 'diocese_new_popup', + 'add_path' => 'diocese_new', 'add_label' => 'Add Diocese', ], ]); @@ -45,13 +40,6 @@ public function buildForm(FormBuilderInterface $builder, array $options) : void $builder->setDataMapper($this->mapper); } - /** - * @required - */ - public function setMapper(LinkableMapper $mapper) : void { - $this->mapper = $mapper; - } - /** * Define options for the form. * diff --git a/src/Form/ArchiveType.php b/src/Form/ArchiveType.php index 0b962c4..652c6bb 100644 --- a/src/Form/ArchiveType.php +++ b/src/Form/ArchiveType.php @@ -2,12 +2,6 @@ declare(strict_types=1); -/* - * (c) 2022 Michael Joyce - * This source file is subject to the GPL v2, bundled - * with this source code in the file LICENSE. - */ - namespace App\Form; use App\Entity\Archive; @@ -21,7 +15,9 @@ * Archive form. */ class ArchiveType extends TermType { - private ?LinkableMapper $mapper = null; + public function __construct( + private LinkableMapper $mapper, + ) {} /** * Add form fields to $builder. @@ -33,13 +29,6 @@ public function buildForm(FormBuilderInterface $builder, array $options) : void $builder->setDataMapper($this->mapper); } - /** - * @required - */ - public function setMapper(LinkableMapper $mapper) : void { - $this->mapper = $mapper; - } - /** * Define options for the form. * diff --git a/src/Form/BookType.php b/src/Form/BookType.php index 03e1d91..8af3884 100644 --- a/src/Form/BookType.php +++ b/src/Form/BookType.php @@ -2,12 +2,6 @@ declare(strict_types=1); -/* - * (c) 2022 Michael Joyce - * This source file is subject to the GPL v2, bundled - * with this source code in the file LICENSE. - */ - namespace App\Form; use App\Entity\Book; @@ -28,7 +22,9 @@ * Book form. */ class BookType extends AbstractType { - private ?LinkableMapper $mapper = null; + public function __construct( + private LinkableMapper $mapper, + ) {} /** * Add form fields to $builder. @@ -37,8 +33,8 @@ public function buildForm(FormBuilderInterface $builder, array $options) : void $builder->add('title', TextareaType::class, [ 'label' => 'Title', 'required' => false, + 'help' => 'As it appears in the ESTC', 'attr' => [ - 'help_block' => 'As it appears in the ESTC', 'class' => '', ], ]); @@ -46,7 +42,6 @@ public function buildForm(FormBuilderInterface $builder, array $options) : void 'label' => 'Uniform Title', 'required' => false, 'attr' => [ - 'help_block' => '', 'class' => '', ], ]); @@ -60,47 +55,33 @@ public function buildForm(FormBuilderInterface $builder, array $options) : void 'entry_options' => [ 'label' => false, ], - + 'help' => "Year, followed by the title in modern English. Eg. '1631, A thanksgiving, and prayer for the safe child bearing of the queen's majesty'. Also add any other variant titles listed in the ESTC.", 'attr' => [ 'class' => 'collection collection-simple', - 'help_block' => "Year, followed by the title in modern English. Eg. '1631, A thanksgiving, and prayer for the safe child bearing of the queen's majesty'. Also add any other variant titles listed in the ESTC.", ], ]); $builder->add('author', TextType::class, [ 'label' => 'Author', 'required' => false, - 'attr' => [ - 'help_block' => '', - ], ]); $builder->add('imprint', TextareaType::class, [ 'label' => 'Imprint', 'required' => false, - 'attr' => [ - 'help_block' => 'Imprint as noted on the ESTC', - ], + 'help' => 'Imprint as noted on the ESTC', ]); $builder->add('variantImprint', TextareaType::class, [ 'label' => 'Imprint, Modern English”', 'required' => false, - 'attr' => [ - 'help_block' => 'Original spelling imprint and any variations of it', - ], + 'help' => 'Original spelling imprint and any variations of it', ]); $builder->add('date', TextType::class, [ 'label' => 'Date', 'required' => false, - 'attr' => [ - 'help_block' => '', - ], ]); $builder->add('estc', TextType::class, [ 'label' => 'Estc', 'required' => false, - 'attr' => [ - 'help_block' => '', - ], ]); $builder->add('monarch', Select2EntityType::class, [ @@ -109,8 +90,7 @@ public function buildForm(FormBuilderInterface $builder, array $options) : void 'class' => Monarch::class, 'remote_route' => 'monarch_typeahead', 'attr' => [ - 'help_block' => '', - 'add_path' => 'monarch_new_popup', + 'add_path' => 'monarch_new', 'add_label' => 'Add Monarch', ], ]); @@ -118,8 +98,8 @@ public function buildForm(FormBuilderInterface $builder, array $options) : void $builder->add('physicalDescription', TextareaType::class, [ 'label' => 'Physical Description', 'required' => false, + 'help' => 'Public description of the physicality of the item.', 'attr' => [ - 'help_block' => 'Public description of the physicality of the item.', 'class' => 'tinymce', ], ]); @@ -127,8 +107,8 @@ public function buildForm(FormBuilderInterface $builder, array $options) : void $builder->add('description', TextareaType::class, [ 'label' => 'Description', 'required' => false, + 'help' => 'Public description of the item.', 'attr' => [ - 'help_block' => 'Public description of the item.', 'class' => 'tinymce', ], ]); @@ -140,8 +120,7 @@ public function buildForm(FormBuilderInterface $builder, array $options) : void 'remote_route' => 'format_typeahead', 'allow_clear' => true, 'attr' => [ - 'help_block' => '', - 'add_path' => 'format_new_popup', + 'add_path' => 'format_new', 'add_label' => 'Add Format', ], ]); @@ -149,13 +128,6 @@ public function buildForm(FormBuilderInterface $builder, array $options) : void $builder->setDataMapper($this->mapper); } - /** - * @required - */ - public function setMapper(LinkableMapper $mapper) : void { - $this->mapper = $mapper; - } - /** * Define options for the form. * diff --git a/src/Form/CountyType.php b/src/Form/CountyType.php index fa790e2..fefa0d4 100644 --- a/src/Form/CountyType.php +++ b/src/Form/CountyType.php @@ -2,12 +2,6 @@ declare(strict_types=1); -/* - * (c) 2022 Michael Joyce - * This source file is subject to the GPL v2, bundled - * with this source code in the file LICENSE. - */ - namespace App\Form; use App\Entity\County; @@ -23,7 +17,9 @@ * County form. */ class CountyType extends TermType { - private ?LinkableMapper $mapper = null; + public function __construct( + private LinkableMapper $mapper, + ) {} /** * Add form fields to $builder. @@ -36,8 +32,7 @@ public function buildForm(FormBuilderInterface $builder, array $options) : void 'remote_route' => 'nation_typeahead', 'allow_clear' => true, 'attr' => [ - 'help_block' => '', - 'add_path' => 'nation_new_popup', + 'add_path' => 'nation_new', 'add_label' => 'Add Nation', ], ]); @@ -45,13 +40,6 @@ public function buildForm(FormBuilderInterface $builder, array $options) : void $builder->setDataMapper($this->mapper); } - /** - * @required - */ - public function setMapper(LinkableMapper $mapper) : void { - $this->mapper = $mapper; - } - /** * Define options for the form. * diff --git a/src/Form/DioceseType.php b/src/Form/DioceseType.php index 45f3dfd..d937978 100644 --- a/src/Form/DioceseType.php +++ b/src/Form/DioceseType.php @@ -2,16 +2,10 @@ declare(strict_types=1); -/* - * (c) 2022 Michael Joyce - * This source file is subject to the GPL v2, bundled - * with this source code in the file LICENSE. - */ - namespace App\Form; use App\Entity\Diocese; - use App\Entity\Province; +use App\Entity\Province; use Nines\MediaBundle\Form\LinkableType; use Nines\MediaBundle\Form\Mapper\LinkableMapper; use Nines\UtilBundle\Form\TermType; @@ -23,7 +17,9 @@ * Diocese form. */ class DioceseType extends TermType { - private ?LinkableMapper $mapper = null; + public function __construct( + private LinkableMapper $mapper, + ) {} /** * Add form fields to $builder. @@ -37,8 +33,7 @@ public function buildForm(FormBuilderInterface $builder, array $options) : void 'remote_route' => 'province_typeahead', 'allow_clear' => true, 'attr' => [ - 'help_block' => '', - 'add_path' => 'province_new_popup', + 'add_path' => 'province_new', 'add_label' => 'Add Province', ], ]); @@ -46,13 +41,6 @@ public function buildForm(FormBuilderInterface $builder, array $options) : void $builder->setDataMapper($this->mapper); } - /** - * @required - */ - public function setMapper(LinkableMapper $mapper) : void { - $this->mapper = $mapper; - } - /** * Define options for the form. * diff --git a/src/Form/FormatType.php b/src/Form/FormatType.php index a31e286..98a43f1 100644 --- a/src/Form/FormatType.php +++ b/src/Form/FormatType.php @@ -2,12 +2,6 @@ declare(strict_types=1); -/* - * (c) 2022 Michael Joyce - * This source file is subject to the GPL v2, bundled - * with this source code in the file LICENSE. - */ - namespace App\Form; use App\Entity\Format; diff --git a/src/Form/HoldingType.php b/src/Form/HoldingType.php index 91bfb9e..bf4d412 100644 --- a/src/Form/HoldingType.php +++ b/src/Form/HoldingType.php @@ -2,18 +2,12 @@ declare(strict_types=1); -/* - * (c) 2022 Michael Joyce - * This source file is subject to the GPL v2, bundled - * with this source code in the file LICENSE. - */ - namespace App\Form; use App\Entity\Archive; use App\Entity\Book; - use App\Entity\Holding; - use App\Entity\Parish; +use App\Entity\Holding; +use App\Entity\Parish; use App\Form\Partial\DatedType; use App\Form\Partial\NotesType; use Symfony\Component\Form\AbstractType; @@ -36,8 +30,7 @@ public function buildForm(FormBuilderInterface $builder, array $options) : void 'class' => Parish::class, 'remote_route' => 'parish_typeahead', 'attr' => [ - 'help_block' => '', - 'add_path' => 'parish_new_popup', + 'add_path' => 'parish_new', 'add_label' => 'Add Parish', ], ]); @@ -47,8 +40,7 @@ public function buildForm(FormBuilderInterface $builder, array $options) : void 'class' => Archive::class, 'remote_route' => 'archive_typeahead', 'attr' => [ - 'help_block' => '', - 'add_path' => 'archive_new_popup', + 'add_path' => 'archive_new', 'add_label' => 'Add Archive', ], ]); @@ -61,8 +53,7 @@ public function buildForm(FormBuilderInterface $builder, array $options) : void 'allow_clear' => true, 'multiple' => true, 'attr' => [ - 'help_block' => '', - 'add_path' => 'book_new_popup', + 'add_path' => 'book_new', 'add_label' => 'Add Book', ], ]); @@ -70,7 +61,6 @@ public function buildForm(FormBuilderInterface $builder, array $options) : void 'label' => 'Description', 'required' => true, 'attr' => [ - 'help_block' => '', 'class' => 'tinymce', ], ]); diff --git a/src/Form/InjunctionType.php b/src/Form/InjunctionType.php index 6d6aca4..aadc725 100644 --- a/src/Form/InjunctionType.php +++ b/src/Form/InjunctionType.php @@ -2,12 +2,6 @@ declare(strict_types=1); -/* - * (c) 2022 Michael Joyce - * This source file is subject to the GPL v2, bundled - * with this source code in the file LICENSE. - */ - namespace App\Form; use App\Entity\Archdeaconry; @@ -32,7 +26,9 @@ * Injunction form. */ class InjunctionType extends AbstractType { - private ?LinkableMapper $mapper = null; + public function __construct( + private LinkableMapper $mapper, + ) {} /** * Add form fields to $builder. @@ -41,15 +37,12 @@ public function buildForm(FormBuilderInterface $builder, array $options) : void $builder->add('title', TextType::class, [ 'label' => 'Title', 'required' => true, - 'attr' => [ - 'help_block' => 'As it appears in the ESTC', - ], + 'help' => 'As it appears in the ESTC', ]); $builder->add('uniformTitle', TextareaType::class, [ 'label' => 'Uniform Title', 'required' => false, 'attr' => [ - 'help_block' => '', 'class' => 'tinymce', ], ]); @@ -64,46 +57,40 @@ public function buildForm(FormBuilderInterface $builder, array $options) : void 'label' => false, ], 'by_reference' => false, + 'help' => "Year, followed by the title in modern English. Eg. '1631, A thanksgiving, and prayer for the safe child bearing of the queen's majesty'. Also add any other variant titles listed in the ESTC.", 'attr' => [ 'class' => 'collection collection-simple', - 'help_block' => "Year, followed by the title in modern English. Eg. '1631, A thanksgiving, and prayer for the safe child bearing of the queen's majesty'. Also add any other variant titles listed in the ESTC.", ], ]); $builder->add('author', TextType::class, [ 'label' => 'Author', 'required' => false, - 'attr' => [ - 'help_block' => '', - ], ]); $builder->add('imprint', TextareaType::class, [ 'label' => 'Imprint', 'required' => false, + 'help' => 'Imprint as noted on the ESTC', 'attr' => [ 'class' => 'tinymce', - 'help_block' => 'Imprint as noted on the ESTC', ], ]); $builder->add('variantImprint', TextareaType::class, [ 'label' => 'Imprint, Modern English', 'required' => false, + 'help' => 'Original spelling imprint and any variations of it', 'attr' => [ - 'help_block' => 'Original spelling imprint and any variations of it', 'class' => 'tinymce', ], ]); $builder->add('date', TextType::class, [ 'label' => 'Date', 'required' => false, - 'attr' => [ - 'help_block' => '', - ], ]); $builder->add('physicalDescription', TextareaType::class, [ 'label' => 'Physical Description', 'required' => false, + 'help' => 'Public description of the physicality of the item.', 'attr' => [ - 'help_block' => 'Public description of the physicality of the item.', 'class' => 'tinymce', ], ]); @@ -111,8 +98,8 @@ public function buildForm(FormBuilderInterface $builder, array $options) : void $builder->add('transcription', TextareaType::class, [ 'label' => 'Transcribed Excerpt', 'required' => true, + 'help' => 'Public transcription of the item.', 'attr' => [ - 'help_block' => 'Public transcription of the item.', 'class' => 'tinymce', ], ]); @@ -120,8 +107,8 @@ public function buildForm(FormBuilderInterface $builder, array $options) : void $builder->add('modernTranscription', TextareaType::class, [ 'label' => 'Modern English', 'required' => false, + 'help' => 'Provide a modern English equivalent of the manuscript entry', 'attr' => [ - 'help_block' => 'Provide a modern English equivalent of the manuscript entry', 'class' => 'tinymce', ], ]); @@ -131,8 +118,7 @@ public function buildForm(FormBuilderInterface $builder, array $options) : void 'class' => Nation::class, 'remote_route' => 'nation_typeahead', 'attr' => [ - 'help_block' => '', - 'add_path' => 'nation_new_popup', + 'add_path' => 'nation_new', 'add_label' => 'Add Nation', ], ]); @@ -142,8 +128,7 @@ public function buildForm(FormBuilderInterface $builder, array $options) : void 'class' => Province::class, 'remote_route' => 'province_typeahead', 'attr' => [ - 'help_block' => '', - 'add_path' => 'province_new_popup', + 'add_path' => 'province_new', 'add_label' => 'Add Province', ], ]); @@ -153,8 +138,7 @@ public function buildForm(FormBuilderInterface $builder, array $options) : void 'class' => Diocese::class, 'remote_route' => 'diocese_typeahead', 'attr' => [ - 'help_block' => '', - 'add_path' => 'diocese_new_popup', + 'add_path' => 'diocese_new', 'add_label' => 'Add Diocese', ], ]); @@ -164,8 +148,7 @@ public function buildForm(FormBuilderInterface $builder, array $options) : void 'class' => Archdeaconry::class, 'remote_route' => 'archdeaconry_typeahead', 'attr' => [ - 'help_block' => '', - 'add_path' => 'archdeaconry_new_popup', + 'add_path' => 'archdeaconry_new', 'add_label' => 'Add Archdeaconry', ], ]); @@ -176,30 +159,19 @@ public function buildForm(FormBuilderInterface $builder, array $options) : void 'class' => Monarch::class, 'remote_route' => 'monarch_typeahead', 'attr' => [ - 'help_block' => '', - 'add_path' => 'monarch_new_popup', + 'add_path' => 'monarch_new', 'add_label' => 'Add Monarch', ], ]); $builder->add('estc', TextType::class, [ 'label' => 'ESTC', 'required' => false, - 'attr' => [ - 'help_block' => '', - ], ]); NotesType::add($builder, $options); LinkableType::add($builder, $options); $builder->setDataMapper($this->mapper); } - /** - * @required - */ - public function setMapper(LinkableMapper $mapper) : void { - $this->mapper = $mapper; - } - /** * Define options for the form. * diff --git a/src/Form/InventoryType.php b/src/Form/InventoryType.php index 5dde958..699b263 100644 --- a/src/Form/InventoryType.php +++ b/src/Form/InventoryType.php @@ -2,12 +2,6 @@ declare(strict_types=1); -/* - * (c) 2022 Michael Joyce - * This source file is subject to the GPL v2, bundled - * with this source code in the file LICENSE. - */ - namespace App\Form; use App\Entity\Book; @@ -40,40 +34,35 @@ public function buildForm(FormBuilderInterface $builder, array $options) : void 'class' => Parish::class, 'remote_route' => 'parish_typeahead', 'attr' => [ - 'help_block' => '', - 'add_path' => 'parish_new_popup', + 'add_path' => 'parish_new', 'add_label' => 'Add Parish', ], ]); $builder->add('manuscriptSource', Select2EntityType::class, [ - 'label' => 'Source', + 'label' => 'Manuscript Source', 'required' => false, 'class' => ManuscriptSource::class, 'remote_route' => 'manuscript_source_typeahead', 'attr' => [ - 'help_block' => '', - 'add_path' => 'manuscript_source_new_popup', - 'add_label' => 'Add Source', + 'add_path' => 'manuscript_source_new', + 'add_label' => 'Add Manuscript Source', ], ]); $builder->add('printSource', Select2EntityType::class, [ - 'label' => 'Source', + 'label' => 'Print Source', 'required' => false, 'class' => PrintSource::class, 'remote_route' => 'print_source_typeahead', 'attr' => [ - 'help_block' => '', - 'add_path' => 'print_source_new_popup', - 'add_label' => 'Add Source', + 'add_path' => 'print_source_new', + 'add_label' => 'Add Print Source', ], ]); $builder->add('pageNumber', TextType::class, [ 'label' => 'Page', 'required' => false, - 'attr' => [ - 'help_block' => 'Enter a page number (p. 5) or folio location (fo. 2 verso).', - ], + 'help' => 'Enter a page number (p. 5) or folio location (fo. 2 verso).', ]); $builder->add('injunction', Select2EntityType::class, [ @@ -82,8 +71,7 @@ public function buildForm(FormBuilderInterface $builder, array $options) : void 'remote_route' => 'injunction_typeahead', 'allow_clear' => true, 'attr' => [ - 'help_block' => '', - 'add_path' => 'injunction_new_popup', + 'add_path' => 'injunction_new', 'add_label' => 'Add Injunction', ], ]); @@ -94,8 +82,7 @@ public function buildForm(FormBuilderInterface $builder, array $options) : void 'class' => Monarch::class, 'remote_route' => 'monarch_typeahead', 'attr' => [ - 'help_block' => '', - 'add_path' => 'monarch_new_popup', + 'add_path' => 'monarch_new', 'add_label' => 'Add Monarch', ], ]); @@ -108,8 +95,7 @@ public function buildForm(FormBuilderInterface $builder, array $options) : void 'page_limit' => 10, 'allow_clear' => true, 'attr' => [ - 'help_block' => '', - 'add_path' => 'book_new_popup', + 'add_path' => 'book_new', 'add_label' => 'Add Book', ], ]); @@ -119,22 +105,20 @@ public function buildForm(FormBuilderInterface $builder, array $options) : void 'label' => 'Transcription', 'required' => true, 'attr' => [ - 'help_block' => '', 'class' => 'tinymce', ], ]); $builder->add('modifications', TextareaType::class, [ 'label' => 'Modern English', 'attr' => [ - 'help_block' => '', 'class' => 'tinymce', ], ]); $builder->add('description', TextareaType::class, [ - 'label' => 'Notes', + 'label' => 'Description', 'required' => false, + 'help' => 'Public notes about the item.', 'attr' => [ - 'help_block' => 'Public notes about the item.', 'class' => 'tinymce', ], ]); diff --git a/src/Form/ManuscriptSourceType.php b/src/Form/ManuscriptSourceType.php index fd484ac..08e2e5c 100644 --- a/src/Form/ManuscriptSourceType.php +++ b/src/Form/ManuscriptSourceType.php @@ -2,12 +2,6 @@ declare(strict_types=1); -/* - * (c) 2022 Michael Joyce - * This source file is subject to the GPL v2, bundled - * with this source code in the file LICENSE. - */ - namespace App\Form; use App\Entity\Archive; @@ -25,7 +19,9 @@ * Source form. */ class ManuscriptSourceType extends TermType { - private ?LinkableMapper $mapper = null; + public function __construct( + private LinkableMapper $mapper, + ) {} /** * Add form fields to $builder. @@ -35,9 +31,6 @@ public function buildForm(FormBuilderInterface $builder, array $options) : void $builder->add('callNumber', TextType::class, [ 'label' => 'Call Number', 'required' => false, - 'attr' => [ - 'help_block' => '', - ], ]); $builder->add('sourceCategory', Select2EntityType::class, [ @@ -46,8 +39,7 @@ public function buildForm(FormBuilderInterface $builder, array $options) : void 'remote_route' => 'source_category_typeahead', 'allow_clear' => true, 'attr' => [ - 'help_block' => '', - 'add_path' => 'source_category_new_popup', + 'add_path' => 'source_category_new', 'add_label' => 'Add SourceCategory', ], ]); @@ -58,8 +50,7 @@ public function buildForm(FormBuilderInterface $builder, array $options) : void 'remote_route' => 'archive_typeahead', 'allow_clear' => true, 'attr' => [ - 'help_block' => '', - 'add_path' => 'archive_new_popup', + 'add_path' => 'archive_new', 'add_label' => 'Add Archive', ], ]); @@ -67,13 +58,6 @@ public function buildForm(FormBuilderInterface $builder, array $options) : void $builder->setDataMapper($this->mapper); } - /** - * @required - */ - public function setMapper(LinkableMapper $mapper) : void { - $this->mapper = $mapper; - } - /** * Define options for the form. * diff --git a/src/Form/Mapper/LsdMapper.php b/src/Form/Mapper/LsdMapper.php index ac470ae..d523e06 100644 --- a/src/Form/Mapper/LsdMapper.php +++ b/src/Form/Mapper/LsdMapper.php @@ -2,23 +2,17 @@ declare(strict_types=1); -/* - * (c) 2022 Michael Joyce - * This source file is subject to the GPL v2, bundled - * with this source code in the file LICENSE. - */ - namespace App\Form\Mapper; use App\Entity\Transaction; use Symfony\Component\Form\DataMapperInterface; use Symfony\Component\Form\Exception\UnexpectedTypeException; -use Symfony\Component\Form\Extension\Core\DataMapper\PropertyPathMapper; +use Symfony\Component\Form\Extension\Core\DataMapper\DataMapper; use Symfony\Component\Form\FormInterface; use Traversable; -class LsdMapper extends PropertyPathMapper implements DataMapperInterface { - public function mapDataToForms($viewData, $forms) : void { +class LsdMapper extends DataMapper implements DataMapperInterface { + public function mapDataToForms(mixed $viewData, Traversable $forms) : void { if (null === $viewData) { return; } @@ -42,11 +36,7 @@ public function mapDataToForms($viewData, $forms) : void { $formData['sd']->setData($sd); } - /** - * @param FormInterface[]|Traversable $forms - * @param Transaction $viewData - */ - public function mapFormsToData($forms, &$viewData) : void { + public function mapFormsToData(Traversable $forms, mixed &$viewData) : void { parent::mapFormsToData($forms, $viewData); /** @var FormInterface[] $formData */ diff --git a/src/Form/MonarchType.php b/src/Form/MonarchType.php index d250614..456bc84 100644 --- a/src/Form/MonarchType.php +++ b/src/Form/MonarchType.php @@ -2,12 +2,6 @@ declare(strict_types=1); -/* - * (c) 2022 Michael Joyce - * This source file is subject to the GPL v2, bundled - * with this source code in the file LICENSE. - */ - namespace App\Form; use App\Entity\Monarch; @@ -29,17 +23,17 @@ public function buildForm(FormBuilderInterface $builder, array $options) : void $builder->add('startDate', TextType::class, [ 'label' => 'Start Date', 'required' => true, + 'help' => 'Enter the date or earliest possible date.', 'attr' => [ 'placeholder' => 'yyyy-mm-dd', - 'help_block' => 'Enter the date or earliest possible date.', ], ]); $builder->add('endDate', TextType::class, [ 'label' => 'End Date', 'required' => true, + 'help' => 'Enter the latest possible date if the date is uncertain.', 'attr' => [ 'placeholder' => 'yyyy-mm-dd', - 'help_block' => 'Enter the latest possible date if the date is uncertain.', ], ]); } diff --git a/src/Form/NationType.php b/src/Form/NationType.php index a2c0c04..0d68a79 100644 --- a/src/Form/NationType.php +++ b/src/Form/NationType.php @@ -2,12 +2,6 @@ declare(strict_types=1); -/* - * (c) 2022 Michael Joyce - * This source file is subject to the GPL v2, bundled - * with this source code in the file LICENSE. - */ - namespace App\Form; use App\Entity\Nation; diff --git a/src/Form/ParishType.php b/src/Form/ParishType.php index 389d113..e1615a3 100644 --- a/src/Form/ParishType.php +++ b/src/Form/ParishType.php @@ -2,12 +2,6 @@ declare(strict_types=1); -/* - * (c) 2022 Michael Joyce - * This source file is subject to the GPL v2, bundled - * with this source code in the file LICENSE. - */ - namespace App\Form; use App\Entity\Archdeaconry; @@ -26,7 +20,9 @@ * Parish form. */ class ParishType extends TermType { - private ?LinkableMapper $mapper = null; + public function __construct( + private LinkableMapper $mapper, + ) {} /** * Add form fields to $builder. @@ -41,7 +37,6 @@ public function buildForm(FormBuilderInterface $builder, array $options) : void 'scale' => 8, 'required' => false, 'attr' => [ - 'help_block' => '', 'step' => 'any', ], ]); @@ -52,7 +47,6 @@ public function buildForm(FormBuilderInterface $builder, array $options) : void 'scale' => 8, 'required' => false, 'attr' => [ - 'help_block' => '', 'step' => 'any', ], ]); @@ -60,9 +54,7 @@ public function buildForm(FormBuilderInterface $builder, array $options) : void $builder->add('address', TextareaType::class, [ 'label' => 'Address', 'required' => false, - 'attr' => [ - 'help_block' => 'Enter a street address of the parish church, if known', - ], + 'help' => 'Enter a street address of the parish church, if known', ]); $builder->add('archdeaconry', Select2EntityType::class, [ @@ -71,8 +63,7 @@ public function buildForm(FormBuilderInterface $builder, array $options) : void 'remote_route' => 'archdeaconry_typeahead', 'allow_clear' => true, 'attr' => [ - 'help_block' => '', - 'add_path' => 'archdeaconry_new_popup', + 'add_path' => 'archdeaconry_new', 'add_label' => 'Add Archdeaconry', ], ]); @@ -83,9 +74,9 @@ public function buildForm(FormBuilderInterface $builder, array $options) : void 'remote_route' => 'town_typeahead', 'allow_clear' => true, 'required' => false, + 'help' => 'Town or Ward if in London or blank for a rural parish', 'attr' => [ - 'help_block' => 'Town or Ward if in London or blank for a rural parish', - 'add_path' => 'town_new_popup', + 'add_path' => 'town_new', 'add_label' => 'Add Town', ], ]); @@ -93,13 +84,6 @@ public function buildForm(FormBuilderInterface $builder, array $options) : void $builder->setDataMapper($this->mapper); } - /** - * @required - */ - public function setMapper(LinkableMapper $mapper) : void { - $this->mapper = $mapper; - } - /** * Define options for the form. * diff --git a/src/Form/Partial/DatedType.php b/src/Form/Partial/DatedType.php index 1ae8ac9..508b5cd 100644 --- a/src/Form/Partial/DatedType.php +++ b/src/Form/Partial/DatedType.php @@ -2,12 +2,6 @@ declare(strict_types=1); -/* - * (c) 2022 Michael Joyce - * This source file is subject to the GPL v2, bundled - * with this source code in the file LICENSE. - */ - namespace App\Form\Partial; use Symfony\Component\Form\Extension\Core\Type\TextType; @@ -18,25 +12,25 @@ public static function buildForm(FormBuilderInterface $builder, array $options) $builder->add('startDate', TextType::class, [ 'label' => 'Start Date', 'required' => true, + 'help' => 'Enter the date or earliest possible date.', 'attr' => [ 'placeholder' => 'yyyy-mm-dd', - 'help_block' => 'Enter the date or earliest possible date.', ], ]); $builder->add('endDate', TextType::class, [ 'label' => 'End Date', 'required' => false, + 'help' => 'Enter the latest possible date if the date is uncertain.', 'attr' => [ 'placeholder' => 'yyyy-mm-dd', - 'help_block' => 'Enter the latest possible date if the date is uncertain.', ], ]); $builder->add('writtenDate', TextType::class, [ 'label' => 'Written Date', 'required' => false, + 'help' => 'Transcribe the date as written.', 'attr' => [ 'placeholder' => '', - 'help_block' => 'Transcribe the date as written.', ], ]); } diff --git a/src/Form/Partial/NotesType.php b/src/Form/Partial/NotesType.php index 2d67313..9712c85 100644 --- a/src/Form/Partial/NotesType.php +++ b/src/Form/Partial/NotesType.php @@ -2,12 +2,6 @@ declare(strict_types=1); -/* - * (c) 2022 Michael Joyce - * This source file is subject to the GPL v2, bundled - * with this source code in the file LICENSE. - */ - namespace App\Form\Partial; use App\Entity\Archdeaconry; @@ -24,10 +18,10 @@ class NotesType extends TermType { */ public static function add(FormBuilderInterface $builder, array $options) : void { $builder->add('notes', TextareaType::class, [ - 'label' => 'Notes', + 'label' => 'Private Notes', 'required' => false, + 'help' => 'Private notes about the item. Never shown to the public.', 'attr' => [ - 'help_block' => 'Private notes about the item. Never shown to the public.', 'class' => 'tinymce', ], ]); diff --git a/src/Form/PrintSourceType.php b/src/Form/PrintSourceType.php index 67fb901..b701b79 100644 --- a/src/Form/PrintSourceType.php +++ b/src/Form/PrintSourceType.php @@ -2,12 +2,6 @@ declare(strict_types=1); -/* - * (c) 2022 Michael Joyce - * This source file is subject to the GPL v2, bundled - * with this source code in the file LICENSE. - */ - namespace App\Form; use App\Entity\PrintSource; @@ -26,7 +20,9 @@ * PrintSource form. */ class PrintSourceType extends AbstractType { - private ?LinkableMapper $mapper = null; + public function __construct( + private LinkableMapper $mapper, + ) {} /** * Add form fields to $builder. @@ -37,9 +33,6 @@ public function buildForm(FormBuilderInterface $builder, array $options) : void $builder->add('title', TextType::class, [ 'label' => 'Title', 'required' => true, - 'attr' => [ - 'help_block' => '', - ], ]); $builder->add('sourceCategory', Select2EntityType::class, [ 'label' => 'SourceCategory', @@ -47,31 +40,21 @@ public function buildForm(FormBuilderInterface $builder, array $options) : void 'remote_route' => 'source_category_typeahead', 'allow_clear' => true, 'attr' => [ - 'help_block' => '', - 'add_path' => 'source_category_new_popup', + 'add_path' => 'source_category_new', 'add_label' => 'Add SourceCategory', ], ]); $builder->add('author', TextType::class, [ 'label' => 'Author', 'required' => false, - 'attr' => [ - 'help_block' => '', - ], ]); $builder->add('date', TextType::class, [ 'label' => 'Date', 'required' => false, - 'attr' => [ - 'help_block' => '', - ], ]); $builder->add('publisher', TextType::class, [ 'label' => 'Publisher', 'required' => false, - 'attr' => [ - 'help_block' => '', - ], ]); NotesType::add($builder, $options); LinkableType::add($builder, $options); @@ -89,11 +72,4 @@ public function configureOptions(OptionsResolver $resolver) : void { 'data_class' => PrintSource::class, ]); } - - /** - * @required - */ - public function setMapper(LinkableMapper $mapper) : void { - $this->mapper = $mapper; - } } diff --git a/src/Form/ProvinceType.php b/src/Form/ProvinceType.php index d8aabc8..d8d7a3c 100644 --- a/src/Form/ProvinceType.php +++ b/src/Form/ProvinceType.php @@ -2,16 +2,10 @@ declare(strict_types=1); -/* - * (c) 2022 Michael Joyce - * This source file is subject to the GPL v2, bundled - * with this source code in the file LICENSE. - */ - namespace App\Form; use App\Entity\Nation; - use App\Entity\Province; +use App\Entity\Province; use Nines\MediaBundle\Form\LinkableType; use Nines\MediaBundle\Form\Mapper\LinkableMapper; use Nines\UtilBundle\Form\TermType; @@ -23,7 +17,9 @@ * Province form. */ class ProvinceType extends TermType { - private ?LinkableMapper $mapper = null; + public function __construct( + private LinkableMapper $mapper, + ) {} /** * Add form fields to $builder. @@ -36,8 +32,7 @@ public function buildForm(FormBuilderInterface $builder, array $options) : void 'remote_route' => 'nation_typeahead', 'allow_clear' => true, 'attr' => [ - 'help_block' => '', - 'add_path' => 'nation_new_popup', + 'add_path' => 'nation_new', 'add_label' => 'Add Nation', ], ]); @@ -45,13 +40,6 @@ public function buildForm(FormBuilderInterface $builder, array $options) : void $builder->setDataMapper($this->mapper); } - /** - * @required - */ - public function setMapper(LinkableMapper $mapper) : void { - $this->mapper = $mapper; - } - /** * Define options for the form. * diff --git a/src/Form/SourceCategoryType.php b/src/Form/SourceCategoryType.php index 7fcc167..8abfedf 100644 --- a/src/Form/SourceCategoryType.php +++ b/src/Form/SourceCategoryType.php @@ -2,12 +2,6 @@ declare(strict_types=1); -/* - * (c) 2022 Michael Joyce - * This source file is subject to the GPL v2, bundled - * with this source code in the file LICENSE. - */ - namespace App\Form; use App\Entity\SourceCategory; diff --git a/src/Form/TownType.php b/src/Form/TownType.php index 5052433..ac88f1b 100644 --- a/src/Form/TownType.php +++ b/src/Form/TownType.php @@ -2,12 +2,6 @@ declare(strict_types=1); -/* - * (c) 2022 Michael Joyce - * This source file is subject to the GPL v2, bundled - * with this source code in the file LICENSE. - */ - namespace App\Form; use App\Entity\County; @@ -24,7 +18,9 @@ * Town form. */ class TownType extends TermType { - private ?LinkableMapper $mapper = null; + public function __construct( + private LinkableMapper $mapper, + ) {} /** * Add form fields to $builder. @@ -41,9 +37,7 @@ public function buildForm(FormBuilderInterface $builder, array $options) : void 'No' => false, ], 'required' => true, - 'attr' => [ - 'help_block' => 'Yes if this is a Ward in the City of London', - ], + 'help' => 'Yes if this is a Ward in the City of London', ]); $builder->add('county', Select2EntityType::class, [ @@ -52,8 +46,7 @@ public function buildForm(FormBuilderInterface $builder, array $options) : void 'remote_route' => 'county_typeahead', 'allow_clear' => true, 'attr' => [ - 'help_block' => '', - 'add_path' => 'county_new_popup', + 'add_path' => 'county_new', 'add_label' => 'Add County', ], ]); @@ -61,13 +54,6 @@ public function buildForm(FormBuilderInterface $builder, array $options) : void $builder->setDataMapper($this->mapper); } - /** - * @required - */ - public function setMapper(LinkableMapper $mapper) : void { - $this->mapper = $mapper; - } - /** * Define options for the form. * diff --git a/src/Form/TransactionCategoryType.php b/src/Form/TransactionCategoryType.php index 80b2846..0270458 100644 --- a/src/Form/TransactionCategoryType.php +++ b/src/Form/TransactionCategoryType.php @@ -2,12 +2,6 @@ declare(strict_types=1); -/* - * (c) 2022 Michael Joyce - * This source file is subject to the GPL v2, bundled - * with this source code in the file LICENSE. - */ - namespace App\Form; use App\Entity\TransactionCategory; diff --git a/src/Form/TransactionType.php b/src/Form/TransactionType.php index beeeb2f..c81e7c1 100644 --- a/src/Form/TransactionType.php +++ b/src/Form/TransactionType.php @@ -2,12 +2,6 @@ declare(strict_types=1); -/* - * (c) 2022 Michael Joyce - * This source file is subject to the GPL v2, bundled - * with this source code in the file LICENSE. - */ - namespace App\Form; use App\Entity\Book; @@ -82,40 +76,35 @@ public function buildForm(FormBuilderInterface $builder, array $options) : void $builder->add('copies', NumberType::class, [ 'label' => 'Copies', 'required' => false, - 'attr' => [ - 'help_block' => '', - ], ]); $builder->add('location', TextType::class, [ 'label' => 'Location', 'required' => false, - 'attr' => [ - 'help_block' => 'Enter the location or parish if it is different from the parish you are working on. For example, if a book was purchased in Oxford for a London parish, enter “Oxford” or “Oxford, All Saints.”', - ], + 'help' => 'Enter the location or parish if it is different from the parish you are working on. For example, if a book was purchased in Oxford for a London parish, enter “Oxford” or “Oxford, All Saints.”', ]); $builder->add('transcription', TextareaType::class, [ 'label' => 'Transcription', 'required' => false, + 'help' => 'Provide a semi-diplomatic transcript of the manuscript entry', 'attr' => [ - 'help_block' => 'Provide a semi-diplomatic transcript of the manuscript entry', 'class' => 'tinymce', ], ]); $builder->add('modernTranscription', TextareaType::class, [ 'label' => 'Modern English', 'required' => false, + 'help' => 'Provide a modern English equivalent of the manuscript entry', 'attr' => [ - 'help_block' => 'Provide a modern English equivalent of the manuscript entry', 'class' => 'tinymce', ], ]); $builder->add('publicNotes', TextareaType::class, [ 'label' => 'Public Notes', 'required' => false, + 'help' => 'Provide any contextual or descriptive notes about the physical appearance of the entry', 'attr' => [ - 'help_block' => 'Provide any contextual or descriptive notes about the physical appearance of the entry', 'class' => 'tinymce', ], ]); @@ -129,8 +118,7 @@ public function buildForm(FormBuilderInterface $builder, array $options) : void 'page_limit' => 10, 'allow_clear' => true, 'attr' => [ - 'help_block' => '', - 'add_path' => 'book_new_popup', + 'add_path' => 'book_new', 'add_label' => 'Add Book', ], ]); @@ -142,8 +130,7 @@ public function buildForm(FormBuilderInterface $builder, array $options) : void 'allow_clear' => false, 'required' => true, 'attr' => [ - 'help_block' => '', - 'add_path' => 'parish_new_popup', + 'add_path' => 'parish_new', 'add_label' => 'Add Parish', ], ]); @@ -155,8 +142,7 @@ public function buildForm(FormBuilderInterface $builder, array $options) : void 'allow_clear' => true, 'required' => false, 'attr' => [ - 'help_block' => '', - 'add_path' => 'manuscript_source_new_popup', + 'add_path' => 'manuscript_source_new', 'add_label' => 'Add MS Source', ], ]); @@ -167,17 +153,14 @@ public function buildForm(FormBuilderInterface $builder, array $options) : void 'class' => PrintSource::class, 'remote_route' => 'print_source_typeahead', 'attr' => [ - 'help_block' => '', - 'add_path' => 'print_source_new_popup', + 'add_path' => 'print_source_new', 'add_label' => 'Add Print Source', ], ]); $builder->add('page', TextType::class, [ 'label' => 'Page', 'required' => false, - 'attr' => [ - 'help_block' => 'Enter a page number (p. 5) or folio location (fo. 2 verso).', - ], + 'help' => 'Enter a page number (p. 5) or folio location (fo. 2 verso).', ]); $builder->add('transactionCategories', EntityType::class, [ @@ -187,9 +170,9 @@ public function buildForm(FormBuilderInterface $builder, array $options) : void 'class' => TransactionCategory::class, 'choice_label' => 'label', 'query_builder' => fn (EntityRepository $r) => $r->createQueryBuilder('c')->orderBy('c.label'), - 'attr' => [ - 'help_block' => 'Select categories by holding the Ctrl, Command, or Shift keys depending on your operating system.', + 'class' => 'select2-simple', + 'data-theme' => 'bootstrap-5', ], ]); @@ -199,8 +182,7 @@ public function buildForm(FormBuilderInterface $builder, array $options) : void 'remote_route' => 'injunction_typeahead', 'allow_clear' => true, 'attr' => [ - 'help_block' => '', - 'add_path' => 'injunction_new_popup', + 'add_path' => 'injunction_new', 'add_label' => 'Add Injunction', ], ]); @@ -211,8 +193,7 @@ public function buildForm(FormBuilderInterface $builder, array $options) : void 'class' => Monarch::class, 'remote_route' => 'monarch_typeahead', 'attr' => [ - 'help_block' => '', - 'add_path' => 'monarch_new_popup', + 'add_path' => 'monarch_new', 'add_label' => 'Add Monarch', ], ]); diff --git a/src/Kernel.php b/src/Kernel.php index 1cd0572..965d5dc 100644 --- a/src/Kernel.php +++ b/src/Kernel.php @@ -1,16 +1,14 @@ addResource(new FileResource($this->getProjectDir().'/config/bundles.php')); - $container->setParameter('container.dumper.inline_class_loader', \PHP_VERSION_ID < 70400 || $this->debug); - $container->setParameter('container.dumper.inline_factories', true); - $confDir = $this->getProjectDir().'/config'; + $parametersConfigurator = $containerConfigurator->parameters(); + $parametersConfigurator->set('container.dumper.inline_class_loader', $this->debug); + $parametersConfigurator->set('container.dumper.inline_factories', true); - $loader->load($confDir.'/{packages}/*'.self::CONFIG_EXTS, 'glob'); - $loader->load($confDir.'/{packages}/'.$this->environment.'/*'.self::CONFIG_EXTS, 'glob'); - $loader->load($confDir.'/{services}'.self::CONFIG_EXTS, 'glob'); - $loader->load($confDir.'/{services}_'.$this->environment.self::CONFIG_EXTS, 'glob'); + $confDir = $this->getProjectDir().'/config'; + $containerConfigurator->import($confDir.'/{packages}/*'.self::CONFIG_EXTS, 'glob'); + $containerConfigurator->import($confDir.'/{packages}/'.$this->environment.'/*'.self::CONFIG_EXTS, 'glob'); + $containerConfigurator->import($confDir.'/{services}'.self::CONFIG_EXTS, 'glob'); + $containerConfigurator->import($confDir.'/{services}_'.$this->environment.self::CONFIG_EXTS, 'glob'); } - protected function configureRoutes(RouteCollectionBuilder $routes): void + private function getBundlesPath(): string { - $confDir = $this->getProjectDir().'/config'; - - $routes->import($confDir.'/{routes}/'.$this->environment.'/*'.self::CONFIG_EXTS, '/', 'glob'); - $routes->import($confDir.'/{routes}/*'.self::CONFIG_EXTS, '/', 'glob'); - $routes->import($confDir.'/{routes}'.self::CONFIG_EXTS, '/', 'glob'); + return $this->getProjectDir().'/config/bundles.php'; } } diff --git a/src/Menu/Builder.php b/src/Menu/Builder.php index 5c2b4ca..c48a3e6 100644 --- a/src/Menu/Builder.php +++ b/src/Menu/Builder.php @@ -2,12 +2,6 @@ declare(strict_types=1); -/* - * (c) 2022 Michael Joyce - * This source file is subject to the GPL v2, bundled - * with this source code in the file LICENSE. - */ - namespace App\Menu; use Knp\Menu\ItemInterface; @@ -17,60 +11,153 @@ * Class to build some menus for navigation. */ class Builder extends AbstractBuilder { - /** - * Build a menu for navigation. - * - * @return ItemInterface - */ - public function mainMenu(array $options) { - $menu = $this->dropdown('Browse'); - $menu->addChild('Archdeaconries & Courts', ['route' => 'archdeaconry_index']); - $menu->addChild('Archives', ['route' => 'archive_index']); - $menu->addChild('Books', ['route' => 'book_index']); - $menu->addChild('Counties', ['route' => 'county_index']); - $menu->addChild('Dioceses', ['route' => 'diocese_index']); - $menu->addChild('Injunctions', ['route' => 'injunction_index']); - $menu->addChild('Inventories', ['route' => 'inventory_index']); - $menu->addChild('Manuscript Sources', ['route' => 'manuscript_source_index']); - $menu->addChild('Monarchs', ['route' => 'monarch_index']); - $menu->addChild('Nations', ['route' => 'nation_index']); - $menu->addChild('Parishes', ['route' => 'parish_index']); - $menu->addChild('Print Sources', ['route' => 'print_source_index']); - $menu->addChild('Provinces', ['route' => 'province_index']); - $menu->addChild('Towns', ['route' => 'town_index']); - $menu->addChild('Transactions', ['route' => 'transaction_index']); - $menu->addChild('Surviving Texts', ['route' => 'holding_index']); - - if ($this->hasRole('ROLE_CONTENT_ADMIN')) { - $this->addDivider($menu); - $menu->addChild('Formats', ['route' => 'format_index']); - $menu->addChild('Source Categories', ['route' => 'source_category_index']); - $menu->addChild('Transaction Categories', ['route' => 'transaction_category_index']); - } - - return $menu->getParent(); - } - - /** - * Build a menu for navigation. - * - * @return ItemInterface - */ - public function footerMenu(array $options) { + public function mainMenu(array $options) : ItemInterface { $menu = $this->factory->createItem('root'); $menu->setChildrenAttributes([ 'class' => 'nav navbar-nav', ]); - $menu->addChild('Home', [ - 'route' => 'homepage', + $browse = $menu->addChild('Browse', [ + 'uri' => '#', + 'label' => 'Browse', + 'attributes' => [ + 'class' => 'nav-item dropdown', + ], + 'linkAttributes' => [ + 'class' => 'nav-link dropdown-toggle', + 'role' => 'button', + 'data-bs-toggle' => 'dropdown', + 'id' => 'browse-dropdown', + ], + 'childrenAttributes' => [ + 'class' => 'dropdown-menu text-small shadow dropdown-menu-end', + 'aria-labelledby' => 'browse-dropdown', + ], + ]); + $browse->addChild('Archdeaconries & Courts', [ + 'route' => 'archdeaconry_index', + 'linkAttributes' => [ + 'class' => 'dropdown-item link-dark', + ], + ]); + $browse->addChild('Archives', [ + 'route' => 'archive_index', + 'linkAttributes' => [ + 'class' => 'dropdown-item link-dark', + ], + ]); + $browse->addChild('Books', [ + 'route' => 'book_index', + 'linkAttributes' => [ + 'class' => 'dropdown-item link-dark', + ], + ]); + $browse->addChild('Counties', [ + 'route' => 'county_index', + 'linkAttributes' => [ + 'class' => 'dropdown-item link-dark', + ], + ]); + $browse->addChild('Dioceses', [ + 'route' => 'diocese_index', + 'linkAttributes' => [ + 'class' => 'dropdown-item link-dark', + ], ]); - $menu->addChild('Privacy', [ - 'route' => 'privacy', + $browse->addChild('Injunctions', [ + 'route' => 'injunction_index', + 'linkAttributes' => [ + 'class' => 'dropdown-item link-dark', + ], ]); - $menu->addChild('GitHub', [ - 'uri' => 'https://github.com/sfu-dhil/bep', + $browse->addChild('Inventories', [ + 'route' => 'inventory_index', + 'linkAttributes' => [ + 'class' => 'dropdown-item link-dark', + ], ]); + $browse->addChild('Manuscript Sources', [ + 'route' => 'manuscript_source_index', + 'linkAttributes' => [ + 'class' => 'dropdown-item link-dark', + ], + ]); + $browse->addChild('Monarchs', [ + 'route' => 'monarch_index', + 'linkAttributes' => [ + 'class' => 'dropdown-item link-dark', + ], + ]); + $browse->addChild('Nations', [ + 'route' => 'nation_index', + 'linkAttributes' => [ + 'class' => 'dropdown-item link-dark', + ], + ]); + $browse->addChild('Parishes', [ + 'route' => 'parish_index', + 'linkAttributes' => [ + 'class' => 'dropdown-item link-dark', + ], + ]); + $browse->addChild('Print Sources', [ + 'route' => 'print_source_index', + 'linkAttributes' => [ + 'class' => 'dropdown-item link-dark', + ], + ]); + $browse->addChild('Provinces', [ + 'route' => 'province_index', + 'linkAttributes' => [ + 'class' => 'dropdown-item link-dark', + ], + ]); + $browse->addChild('Towns', [ + 'route' => 'town_index', + 'linkAttributes' => [ + 'class' => 'dropdown-item link-dark', + ], + ]); + $browse->addChild('Transactions', [ + 'route' => 'transaction_index', + 'linkAttributes' => [ + 'class' => 'dropdown-item link-dark', + ], + ]); + $browse->addChild('Surviving Texts', [ + 'route' => 'holding_index', + 'linkAttributes' => [ + 'class' => 'dropdown-item link-dark', + ], + ]); + + if ($this->hasRole('ROLE_CONTENT_ADMIN')) { + $browse->addChild('divider1', [ + 'label' => '', + 'attributes' => [ + 'role' => 'separator', + 'class' => 'divider', + ], + ]); + $browse->addChild('Formats', [ + 'route' => 'format_index', + 'linkAttributes' => [ + 'class' => 'dropdown-item link-dark', + ], + ]); + $browse->addChild('Source Categories', [ + 'route' => 'source_category_index', + 'linkAttributes' => [ + 'class' => 'dropdown-item link-dark', + ], + ]); + $browse->addChild('Transaction Categories', [ + 'route' => 'transaction_category_index', + 'linkAttributes' => [ + 'class' => 'dropdown-item link-dark', + ], + ]); + } return $menu; } diff --git a/src/Repository/ArchdeaconryRepository.php b/src/Repository/ArchdeaconryRepository.php index 8675824..63045b6 100644 --- a/src/Repository/ArchdeaconryRepository.php +++ b/src/Repository/ArchdeaconryRepository.php @@ -2,12 +2,6 @@ declare(strict_types=1); -/* - * (c) 2022 Michael Joyce - * This source file is subject to the GPL v2, bundled - * with this source code in the file LICENSE. - */ - namespace App\Repository; use App\Entity\Archdeaconry; diff --git a/src/Repository/ArchiveRepository.php b/src/Repository/ArchiveRepository.php index 7831904..1d63cfe 100644 --- a/src/Repository/ArchiveRepository.php +++ b/src/Repository/ArchiveRepository.php @@ -2,12 +2,6 @@ declare(strict_types=1); -/* - * (c) 2022 Michael Joyce - * This source file is subject to the GPL v2, bundled - * with this source code in the file LICENSE. - */ - namespace App\Repository; use App\Entity\Archive; diff --git a/src/Repository/BookRepository.php b/src/Repository/BookRepository.php index d0aa9d4..b376bfe 100644 --- a/src/Repository/BookRepository.php +++ b/src/Repository/BookRepository.php @@ -2,12 +2,6 @@ declare(strict_types=1); -/* - * (c) 2022 Michael Joyce - * This source file is subject to the GPL v2, bundled - * with this source code in the file LICENSE. - */ - namespace App\Repository; use App\Entity\Book; @@ -20,6 +14,7 @@ * @method Book[] findAll() * @method Book[] findBy(array $criteria, array $orderBy = null, $limit = null, $offset = null) * @method null|Book findOneBy(array $criteria, array $orderBy = null) + * * @phpstan-extends ServiceEntityRepository */ class BookRepository extends ServiceEntityRepository { diff --git a/src/Repository/CountyRepository.php b/src/Repository/CountyRepository.php index b095450..ab9e494 100644 --- a/src/Repository/CountyRepository.php +++ b/src/Repository/CountyRepository.php @@ -2,12 +2,6 @@ declare(strict_types=1); -/* - * (c) 2022 Michael Joyce - * This source file is subject to the GPL v2, bundled - * with this source code in the file LICENSE. - */ - namespace App\Repository; use App\Entity\County; diff --git a/src/Repository/DioceseRepository.php b/src/Repository/DioceseRepository.php index cc61e52..31ad294 100644 --- a/src/Repository/DioceseRepository.php +++ b/src/Repository/DioceseRepository.php @@ -2,12 +2,6 @@ declare(strict_types=1); -/* - * (c) 2022 Michael Joyce - * This source file is subject to the GPL v2, bundled - * with this source code in the file LICENSE. - */ - namespace App\Repository; use App\Entity\Diocese; diff --git a/src/Repository/FormatRepository.php b/src/Repository/FormatRepository.php index 8175a9d..aa8fc4d 100644 --- a/src/Repository/FormatRepository.php +++ b/src/Repository/FormatRepository.php @@ -2,12 +2,6 @@ declare(strict_types=1); -/* - * (c) 2022 Michael Joyce - * This source file is subject to the GPL v2, bundled - * with this source code in the file LICENSE. - */ - namespace App\Repository; use App\Entity\Format; diff --git a/src/Repository/HoldingRepository.php b/src/Repository/HoldingRepository.php index 42ab682..890166d 100644 --- a/src/Repository/HoldingRepository.php +++ b/src/Repository/HoldingRepository.php @@ -2,12 +2,6 @@ declare(strict_types=1); -/* - * (c) 2022 Michael Joyce - * This source file is subject to the GPL v2, bundled - * with this source code in the file LICENSE. - */ - namespace App\Repository; use App\Entity\Holding; @@ -20,6 +14,7 @@ * @method Holding[] findAll() * @method Holding[] findBy(array $criteria, array $orderBy = null, $limit = null, $offset = null) * @method null|Holding findOneBy(array $criteria, array $orderBy = null) + * * @phpstan-extends ServiceEntityRepository */ class HoldingRepository extends ServiceEntityRepository { diff --git a/src/Repository/InjunctionRepository.php b/src/Repository/InjunctionRepository.php index f8947fe..f2938a4 100644 --- a/src/Repository/InjunctionRepository.php +++ b/src/Repository/InjunctionRepository.php @@ -2,12 +2,6 @@ declare(strict_types=1); -/* - * (c) 2022 Michael Joyce - * This source file is subject to the GPL v2, bundled - * with this source code in the file LICENSE. - */ - namespace App\Repository; use App\Entity\Injunction; @@ -20,6 +14,7 @@ * @method Injunction[] findAll() * @method Injunction[] findBy(array $criteria, array $orderBy = null, $limit = null, $offset = null) * @method null|Injunction findOneBy(array $criteria, array $orderBy = null) + * * @phpstan-extends ServiceEntityRepository */ class InjunctionRepository extends ServiceEntityRepository { diff --git a/src/Repository/InventoryRepository.php b/src/Repository/InventoryRepository.php index 3430171..3f3f92d 100644 --- a/src/Repository/InventoryRepository.php +++ b/src/Repository/InventoryRepository.php @@ -2,12 +2,6 @@ declare(strict_types=1); -/* - * (c) 2022 Michael Joyce - * This source file is subject to the GPL v2, bundled - * with this source code in the file LICENSE. - */ - namespace App\Repository; use App\Entity\Inventory; @@ -20,6 +14,7 @@ * @method Inventory[] findAll() * @method Inventory[] findBy(array $criteria, array $orderBy = null, $limit = null, $offset = null) * @method null|Inventory findOneBy(array $criteria, array $orderBy = null) + * * @phpstan-extends ServiceEntityRepository */ class InventoryRepository extends ServiceEntityRepository { diff --git a/src/Repository/ManuscriptSourceRepository.php b/src/Repository/ManuscriptSourceRepository.php index 0b7d1f0..a187074 100644 --- a/src/Repository/ManuscriptSourceRepository.php +++ b/src/Repository/ManuscriptSourceRepository.php @@ -2,12 +2,6 @@ declare(strict_types=1); -/* - * (c) 2022 Michael Joyce - * This source file is subject to the GPL v2, bundled - * with this source code in the file LICENSE. - */ - namespace App\Repository; use App\Entity\ManuscriptSource; diff --git a/src/Repository/MonarchRepository.php b/src/Repository/MonarchRepository.php index 71e23dd..3fefd22 100644 --- a/src/Repository/MonarchRepository.php +++ b/src/Repository/MonarchRepository.php @@ -2,12 +2,6 @@ declare(strict_types=1); -/* - * (c) 2022 Michael Joyce - * This source file is subject to the GPL v2, bundled - * with this source code in the file LICENSE. - */ - namespace App\Repository; use App\Entity\Monarch; diff --git a/src/Repository/NationRepository.php b/src/Repository/NationRepository.php index 144a189..297d413 100644 --- a/src/Repository/NationRepository.php +++ b/src/Repository/NationRepository.php @@ -2,12 +2,6 @@ declare(strict_types=1); -/* - * (c) 2022 Michael Joyce - * This source file is subject to the GPL v2, bundled - * with this source code in the file LICENSE. - */ - namespace App\Repository; use App\Entity\Nation; diff --git a/src/Repository/ParishRepository.php b/src/Repository/ParishRepository.php index 082a4a1..ce631db 100644 --- a/src/Repository/ParishRepository.php +++ b/src/Repository/ParishRepository.php @@ -2,12 +2,6 @@ declare(strict_types=1); -/* - * (c) 2022 Michael Joyce - * This source file is subject to the GPL v2, bundled - * with this source code in the file LICENSE. - */ - namespace App\Repository; use App\Entity\Parish; diff --git a/src/Repository/PrintSourceRepository.php b/src/Repository/PrintSourceRepository.php index 63fbe25..c2df710 100644 --- a/src/Repository/PrintSourceRepository.php +++ b/src/Repository/PrintSourceRepository.php @@ -2,12 +2,6 @@ declare(strict_types=1); -/* - * (c) 2022 Michael Joyce - * This source file is subject to the GPL v2, bundled - * with this source code in the file LICENSE. - */ - namespace App\Repository; use App\Entity\PrintSource; @@ -20,6 +14,7 @@ * @method PrintSource[] findAll() * @method PrintSource[] findBy(array $criteria, array $orderBy = null, $limit = null, $offset = null) * @method null|PrintSource findOneBy(array $criteria, array $orderBy = null) + * * @phpstan-extends ServiceEntityRepository */ class PrintSourceRepository extends ServiceEntityRepository { diff --git a/src/Repository/ProvinceRepository.php b/src/Repository/ProvinceRepository.php index 05f4fe0..4bbab12 100644 --- a/src/Repository/ProvinceRepository.php +++ b/src/Repository/ProvinceRepository.php @@ -2,12 +2,6 @@ declare(strict_types=1); -/* - * (c) 2022 Michael Joyce - * This source file is subject to the GPL v2, bundled - * with this source code in the file LICENSE. - */ - namespace App\Repository; use App\Entity\Province; diff --git a/src/Repository/SourceCategoryRepository.php b/src/Repository/SourceCategoryRepository.php index c98cc2e..b9cdc74 100644 --- a/src/Repository/SourceCategoryRepository.php +++ b/src/Repository/SourceCategoryRepository.php @@ -2,12 +2,6 @@ declare(strict_types=1); -/* - * (c) 2022 Michael Joyce - * This source file is subject to the GPL v2, bundled - * with this source code in the file LICENSE. - */ - namespace App\Repository; use App\Entity\SourceCategory; diff --git a/src/Repository/TownRepository.php b/src/Repository/TownRepository.php index e8fbd5b..ded1dfb 100644 --- a/src/Repository/TownRepository.php +++ b/src/Repository/TownRepository.php @@ -2,12 +2,6 @@ declare(strict_types=1); -/* - * (c) 2022 Michael Joyce - * This source file is subject to the GPL v2, bundled - * with this source code in the file LICENSE. - */ - namespace App\Repository; use App\Entity\Town; diff --git a/src/Repository/TransactionCategoryRepository.php b/src/Repository/TransactionCategoryRepository.php index d610ecf..e607f26 100644 --- a/src/Repository/TransactionCategoryRepository.php +++ b/src/Repository/TransactionCategoryRepository.php @@ -2,12 +2,6 @@ declare(strict_types=1); -/* - * (c) 2022 Michael Joyce - * This source file is subject to the GPL v2, bundled - * with this source code in the file LICENSE. - */ - namespace App\Repository; use App\Entity\TransactionCategory; diff --git a/src/Repository/TransactionRepository.php b/src/Repository/TransactionRepository.php index 780b379..cd32e00 100644 --- a/src/Repository/TransactionRepository.php +++ b/src/Repository/TransactionRepository.php @@ -2,12 +2,6 @@ declare(strict_types=1); -/* - * (c) 2022 Michael Joyce - * This source file is subject to the GPL v2, bundled - * with this source code in the file LICENSE. - */ - namespace App\Repository; use App\Entity\Transaction; @@ -20,6 +14,7 @@ * @method Transaction[] findAll() * @method Transaction[] findBy(array $criteria, array $orderBy = null, $limit = null, $offset = null) * @method null|Transaction findOneBy(array $criteria, array $orderBy = null) + * * @phpstan-extends ServiceEntityRepository */ class TransactionRepository extends ServiceEntityRepository { diff --git a/symfony.lock b/symfony.lock index 5d57bcb..f4d52da 100644 --- a/symfony.lock +++ b/symfony.lock @@ -132,6 +132,15 @@ "egulias/email-validator": { "version": "2.1.22" }, + "excelwebzone/recaptcha-bundle": { + "version": "1.5", + "recipe": { + "repo": "github.com/symfony/recipes-contrib", + "branch": "main", + "version": "1.5", + "ref": "fd4da7bc71749db65bc83abf5d164bfa9c839cf4" + } + }, "friendsofphp/php-cs-fixer": { "version": "3.4", "recipe": { @@ -150,6 +159,15 @@ "friendsoftwig/twigcs": { "version": "v5.1.0" }, + "google/recaptcha": { + "version": "1.3", + "recipe": { + "repo": "github.com/symfony/recipes-contrib", + "branch": "main", + "version": "1.1", + "ref": "e5a4aa21f2e98d7440ae9aab6b56e307f99dd084" + } + }, "guzzlehttp/guzzle": { "version": "6.5.5" }, @@ -353,6 +371,9 @@ "config/packages/sensio_framework_extra.yaml" ] }, + "sfu-dhil/nines": { + "version": "v6.3.16" + }, "solarium/solarium": { "version": "6.1.3" }, diff --git a/templates/archdeaconry/edit.html.twig b/templates/archdeaconry/edit.html.twig index d2175d2..1d823ff 100644 --- a/templates/archdeaconry/edit.html.twig +++ b/templates/archdeaconry/edit.html.twig @@ -1,15 +1,14 @@ {% extends 'base.html.twig' %} - {% block title %}Edit Archdeaconry or Peculiar Court {% endblock %} +{% block title %}Edit Archdeaconry or Peculiar Court {% endblock %} - {% block body %} -

Edit Archdeaconry or Peculiar Court

+{% block body %} +

Edit Archdeaconry or Peculiar Court

- {% embed 'archdeaconry/partial/form.html.twig' %} - {% endembed %} + {% embed 'archdeaconry/partial/form.html.twig' %} + {% endembed %} +{% endblock %} - {% endblock %} - - {% block javascripts %} - {% include '@NinesEditor/editor/widget.html.twig' %} - {% endblock %} +{% block javascripts %} + {% include '@NinesEditor/editor/widget.html.twig' %} +{% endblock %} diff --git a/templates/archdeaconry/index.html.twig b/templates/archdeaconry/index.html.twig index ba302f5..e3dc4cb 100644 --- a/templates/archdeaconry/index.html.twig +++ b/templates/archdeaconry/index.html.twig @@ -1,6 +1,6 @@ {% extends 'base.html.twig' %} -{% block title %}Archdeaconry and Peculiar Court List{% endblock %} +{% block title %}Archdeaconry and Peculiar Court List{% endblock %} {% block pageheader %}

Archdeaconry and Peculiar Court List

@@ -9,25 +9,16 @@

{% endblock %} -{% block body %} - -
-
- {% if is_granted('ROLE_CONTENT_ADMIN') %} - - New - {% endif %} - - - Search -
-
+{% block action_buttons %} + {% if is_granted('ROLE_CONTENT_ADMIN') %} + + New + + {% endif %} +{% endblock %} - {% embed 'archdeaconry/partial/table.html.twig' %} +{% block body %} + {% embed '@NinesUtil/term/partial/index.html.twig' + with {'terms': archdeaconries, 'path': 'archdeaconry_show'} %} {% endembed %} - - - {% endblock %} diff --git a/templates/archdeaconry/new.html.twig b/templates/archdeaconry/new.html.twig index f2cfa0a..c1bb940 100644 --- a/templates/archdeaconry/new.html.twig +++ b/templates/archdeaconry/new.html.twig @@ -1,15 +1,15 @@ {% extends 'base.html.twig' %} - {% block title %}New Archdeaconry or Peculiar Court {% endblock %} +{% block title %}New Archdeaconry or Peculiar Court {% endblock %} - {% block body %} -

New Archdeaconry or Peculiar Court

+{% block body %} +

New Archdeaconry or Peculiar Court

- {% embed 'archdeaconry/partial/form.html.twig' %} - {% endembed %} + {% embed 'archdeaconry/partial/form.html.twig' %} + {% endembed %} - {% endblock %} +{% endblock %} - {% block javascripts %} - {% include '@NinesEditor/editor/widget.html.twig' %} - {% endblock %} +{% block javascripts %} + {% include '@NinesEditor/editor/widget.html.twig' %} +{% endblock %} diff --git a/templates/archdeaconry/new_popup.html.twig b/templates/archdeaconry/new_popup.html.twig deleted file mode 100644 index f2f7172..0000000 --- a/templates/archdeaconry/new_popup.html.twig +++ /dev/null @@ -1,15 +0,0 @@ -{% extends 'popup.html.twig' %} - - {% block title %}New Archdeaconry or Peculiar Court {% endblock %} - - {% block body %} -

New Archdeaconry or Peculiar Court

- - {% embed 'archdeaconry/partial/form.html.twig' %} - {% endembed %} - - {% endblock %} - - {% block javascripts %} - {% include '@NinesEditor/editor/widget.html.twig' %} - {% endblock %} diff --git a/templates/archdeaconry/partial/detail.html.twig b/templates/archdeaconry/partial/detail.html.twig deleted file mode 100644 index ad07ea8..0000000 --- a/templates/archdeaconry/partial/detail.html.twig +++ /dev/null @@ -1,52 +0,0 @@ -{% embed '@NinesUtil/term/partial/show.html.twig' with {'term': archdeaconry} %} - {% block callback %} - - Diocese - - {% if archdeaconry.diocese %} - {{ archdeaconry.diocese }} - {% endif %} - - - - Parishes - - {% if archdeaconry.parishes|length > 0 %} - - {% endif %} - - - - Injunctions - - {% if archdeaconry.injunctions|length > 0 %} - - {% endif %} - - - - Links - - {% embed '@NinesMedia/link/partial/list.html.twig' with { - 'entity': archdeaconry } %} - {% endembed %} - - - {% endblock %} -{% endembed %} diff --git a/templates/archdeaconry/partial/form.html.twig b/templates/archdeaconry/partial/form.html.twig index fa255c3..99e8f67 100644 --- a/templates/archdeaconry/partial/form.html.twig +++ b/templates/archdeaconry/partial/form.html.twig @@ -1,15 +1,12 @@ {{ form_start(form) }} {{ form_widget(form) }} -
-
-
- - {% if archdeaconry.id is null %} - Cancel - {% else %} - Cancel - {% endif %} -
+
+ + {% if archdeaconry.id is null %} + Cancel + {% else %} + Cancel + {% endif %}
{{ form_end(form) }} diff --git a/templates/archdeaconry/partial/table.html.twig b/templates/archdeaconry/partial/table.html.twig deleted file mode 100644 index d1450e5..0000000 --- a/templates/archdeaconry/partial/table.html.twig +++ /dev/null @@ -1,3 +0,0 @@ -{% embed '@NinesUtil/term/partial/index.html.twig' - with {'terms': archdeaconries, 'path': 'archdeaconry_show'} %} -{% endembed %} diff --git a/templates/archdeaconry/search.html.twig b/templates/archdeaconry/search.html.twig deleted file mode 100644 index e84dbc2..0000000 --- a/templates/archdeaconry/search.html.twig +++ /dev/null @@ -1,56 +0,0 @@ -{% extends 'base.html.twig' %} - -{% block title %}Archdeaconry & Peculiar Court Search{% endblock %} - - {% block pageheader %} -

Archdeaconry & Peculiar Court Search

- {% if archdeaconries|length %} -

- Displaying {{ archdeaconries|length }} archdeaconries of {{ archdeaconries.getTotalItemCount }} total. -

- {% endif %} - {% endblock %} - -{% block body %} - -
-
- Search -
- -
-
- - - - -
-
-
-

Full text searching options, if available:

-
    -
  • shakespeare - shakespeare should be present, but might not be
  • -
  • shakes* - words starting with shakes should be present
  • -
  • +agnes - agnes must be present
  • -
  • -fisher - fisher must not be present
  • -
  • Combinations are OK: +agnes -fisher finds Anges who isn't a Fisher
  • -
  • Phrases are OK: "nee agnes" finds rows that contain the literal phrase. -
-
-
- - {% if archdeaconries|length %} - - {% embed 'archdeaconry/partial/table.html.twig' %} - {% endembed %} - - - {% endif %} - -{% endblock %} - diff --git a/templates/archdeaconry/show.html.twig b/templates/archdeaconry/show.html.twig index 72a9b99..11e2d7e 100644 --- a/templates/archdeaconry/show.html.twig +++ b/templates/archdeaconry/show.html.twig @@ -6,25 +6,70 @@

Archdeaconry & Peculiar Court Details

{% endblock %} -{% block body %} - + {% block action_buttons %} {% if is_granted('ROLE_CONTENT_ADMIN') %} -
- -
-
- - - -
-
-
+ + Edit + +
+ + + +
{% endif %} +{% endblock %} - {% embed 'archdeaconry/partial/detail.html.twig' %} +{% block body %} + {% embed '@NinesUtil/term/partial/show.html.twig' with {'term': archdeaconry} %} + {% block callback %} + + Diocese + + {% if archdeaconry.diocese %} + {{ archdeaconry.diocese }} + {% endif %} + + + + Parishes + + {% if archdeaconry.parishes|length > 0 %} + + {% endif %} + + + + Injunctions + + {% if archdeaconry.injunctions|length > 0 %} + + {% endif %} + + + + Links + + {% embed '@NinesMedia/link/partial/list.html.twig' with { + 'entity': archdeaconry } %} + {% endembed %} + + + {% endblock %} {% endembed %} - {% endblock %} diff --git a/templates/archive/edit.html.twig b/templates/archive/edit.html.twig index 1ac927c..77d9ca9 100644 --- a/templates/archive/edit.html.twig +++ b/templates/archive/edit.html.twig @@ -1,15 +1,15 @@ {% extends 'base.html.twig' %} - {% block title %}Edit Archive {% endblock %} +{% block title %}Edit Archive {% endblock %} - {% block body %} -

Edit Archive

+{% block body %} +

Edit Archive

- {% embed 'archive/partial/form.html.twig' %} - {% endembed %} + {% embed 'archive/partial/form.html.twig' %} + {% endembed %} - {% endblock %} +{% endblock %} - {% block javascripts %} - {% include '@NinesEditor/editor/widget.html.twig' %} - {% endblock %} +{% block javascripts %} + {% include '@NinesEditor/editor/widget.html.twig' %} +{% endblock %} diff --git a/templates/archive/index.html.twig b/templates/archive/index.html.twig index 748276a..dfae84c 100644 --- a/templates/archive/index.html.twig +++ b/templates/archive/index.html.twig @@ -9,25 +9,16 @@

{% endblock %} -{% block body %} - -
-
- {% if is_granted('ROLE_CONTENT_ADMIN') %} - - New - {% endif %} - - - Search -
-
+{% block action_buttons %} + {% if is_granted('ROLE_CONTENT_ADMIN') %} + + New + + {% endif %} +{% endblock %} - {% embed 'archive/partial/table.html.twig' %} +{% block body %} + {% embed '@NinesUtil/term/partial/index.html.twig' + with {'terms': archives, 'path': 'archive_show'} %} {% endembed %} - - - {% endblock %} diff --git a/templates/archive/new.html.twig b/templates/archive/new.html.twig index 2a3fa19..c9d6ed7 100644 --- a/templates/archive/new.html.twig +++ b/templates/archive/new.html.twig @@ -1,15 +1,15 @@ {% extends 'base.html.twig' %} - {% block title %}New Archive {% endblock %} +{% block title %}New Archive {% endblock %} - {% block body %} -

New Archive

+{% block body %} +

New Archive

- {% embed 'archive/partial/form.html.twig' %} - {% endembed %} + {% embed 'archive/partial/form.html.twig' %} + {% endembed %} - {% endblock %} +{% endblock %} - {% block javascripts %} - {% include '@NinesEditor/editor/widget.html.twig' %} - {% endblock %} +{% block javascripts %} + {% include '@NinesEditor/editor/widget.html.twig' %} +{% endblock %} diff --git a/templates/archive/new_popup.html.twig b/templates/archive/new_popup.html.twig deleted file mode 100644 index 9c25efa..0000000 --- a/templates/archive/new_popup.html.twig +++ /dev/null @@ -1,15 +0,0 @@ -{% extends 'popup.html.twig' %} - - {% block title %}New Archive {% endblock %} - - {% block body %} -

New Archive

- - {% embed 'archive/partial/form.html.twig' %} - {% endembed %} - - {% endblock %} - - {% block javascripts %} - {% include '@NinesEditor/editor/widget.html.twig' %} - {% endblock %} diff --git a/templates/archive/partial/detail.html.twig b/templates/archive/partial/detail.html.twig deleted file mode 100644 index 1cbabc8..0000000 --- a/templates/archive/partial/detail.html.twig +++ /dev/null @@ -1,42 +0,0 @@ -{% embed '@NinesUtil/term/partial/show.html.twig' with {'term': archive} %} - {% block callback %} - - Manuscript Sources - - {% if archive.manuscriptSources|length > 0 %} - - {% endif %} - - - - Surviving Texts - - {% if archive.holdings|length > 0 %} -
    - {% for holding in archive.holdings %} -
  • - {{ holding }} -
  • - {% endfor %} -
- {% endif %} - - - - Links - - {% embed '@NinesMedia/link/partial/list.html.twig' with { - 'entity': archive } %} - {% endembed %} - - - {% endblock %} -{% endembed %} diff --git a/templates/archive/partial/form.html.twig b/templates/archive/partial/form.html.twig index 51c2733..4d16afe 100644 --- a/templates/archive/partial/form.html.twig +++ b/templates/archive/partial/form.html.twig @@ -1,15 +1,12 @@ {{ form_start(form) }} {{ form_widget(form) }} -
-
-
- - {% if archive.id is null %} - Cancel - {% else %} - Cancel - {% endif %} -
+
+ + {% if archive.id is null %} + Cancel + {% else %} + Cancel + {% endif %}
{{ form_end(form) }} diff --git a/templates/archive/partial/table.html.twig b/templates/archive/partial/table.html.twig deleted file mode 100644 index f4484da..0000000 --- a/templates/archive/partial/table.html.twig +++ /dev/null @@ -1,3 +0,0 @@ -{% embed '@NinesUtil/term/partial/index.html.twig' - with {'terms': archives, 'path': 'archive_show'} %} -{% endembed %} diff --git a/templates/archive/search.html.twig b/templates/archive/search.html.twig deleted file mode 100644 index bd7d019..0000000 --- a/templates/archive/search.html.twig +++ /dev/null @@ -1,56 +0,0 @@ -{% extends 'base.html.twig' %} - -{% block title %}Archive Search{% endblock %} - - {% block pageheader %} -

Archive Search

- {% if archives|length %} -

- Displaying {{ archives|length }} archives of {{ archives.getTotalItemCount }} total. -

- {% endif %} - {% endblock %} - -{% block body %} - -
-
- Search -
- -
-
- - - - -
-
-
-

Full text searching options, if available:

-
    -
  • shakespeare - shakespeare should be present, but might not be
  • -
  • shakes* - words starting with shakes should be present
  • -
  • +agnes - agnes must be present
  • -
  • -fisher - fisher must not be present
  • -
  • Combinations are OK: +agnes -fisher finds Anges who isn't a Fisher
  • -
  • Phrases are OK: "nee agnes" finds rows that contain the literal phrase. -
-
-
- - {% if archives|length %} - - {% embed 'archive/partial/table.html.twig' %} - {% endembed %} - - - {% endif %} - -{% endblock %} - diff --git a/templates/archive/show.html.twig b/templates/archive/show.html.twig index 874591f..623a314 100644 --- a/templates/archive/show.html.twig +++ b/templates/archive/show.html.twig @@ -6,25 +6,60 @@

Archive Details

{% endblock %} -{% block body %} - + {% block action_buttons %} {% if is_granted('ROLE_CONTENT_ADMIN') %} -
- -
-
- - - -
-
-
+ + Edit + +
+ + + +
{% endif %} +{% endblock %} - {% embed 'archive/partial/detail.html.twig' %} +{% block body %} + {% embed '@NinesUtil/term/partial/show.html.twig' with {'term': archive} %} + {% block callback %} + + Manuscript Sources + + {% if archive.manuscriptSources|length > 0 %} + + {% endif %} + + + + Surviving Texts + + {% if archive.holdings|length > 0 %} +
    + {% for holding in archive.holdings %} +
  • + {{ holding }} +
  • + {% endfor %} +
+ {% endif %} + + + + Links + + {% embed '@NinesMedia/link/partial/list.html.twig' with { + 'entity': archive } %} + {% endembed %} + + + {% endblock %} {% endembed %} - {% endblock %} diff --git a/templates/base.html.twig b/templates/base.html.twig index 592f9c4..8ffa00d 100644 --- a/templates/base.html.twig +++ b/templates/base.html.twig @@ -2,40 +2,41 @@ - - + + {% block title %}Welcome{% endblock %} | Books in English Parishes - - + + + + - + - - - - + + + + + + {% block styles %} {% endblock %} -